]D@srddddgZddlZddlZdZdZdZd d d d d dddddddddddd dddddddgZd d!d"d#d$d%d&gZd'dd(dd)dd*dd+d, d-d. d/d0 d1d, d2d3 d4d0 d5d6 d7d3 d8d9 d:d6 iZd;dZ d<d=Z d>dZ d?dZ d@dZ GdAdBdBZGdCdDdDeZdS)E mktime_tz parsedate parsedate_tzquoteN z, ZjanZfebZmarZaprZmayZjunZjulZaugsepoctZnovZdecZjanuaryZfebruaryZmarchZaprilZjuneZjulyZaugustZ septemberZoctoberZnovemberZdecemberZmonZtueZwedZthuZfriZsatZsunZUTZUTCZGMTZZASTiZADTi,ZESTiZEDTZCSTiXZCDTZMSTiZMDTZPSTi ZPDTcCs:t|}|sdS|ddkr0d|d@,:;."[]rz z rr) specialsposLWSZCRFWSatomendsr> phraseendsfield commentlist)selfrGrrr__init__s     zAddrlistClass.__init__cCsg}x|jt|jkr|j|j|jdkr}|j|jdkrk|j|j|j|jd7_q |j|jdkr|jj|jq Pq Wtj|S)Nz r() rBr'rGrCr)rH getcomment EMPTYSTRINGjoin)rIZwslistrrrgotonextszAddrlistClass.gotonextcCsUg}xH|jt|jkrP|j}|r@||7}q |jdq W|S)Nr)rr)rBr'rG getaddressr))rIresultZadrrr getaddrlists  zAddrlistClass.getaddrlistcCsg|_|j|j}|j}|j}|jg}|jt|jkr|rGtj|j|dfg}n|j|jdkr||_||_|j}tj|j|fg}nt|j|jdkr~g}t|j}|jd7_x7|jt|jkrz|j|j|krg|j|jdkrg|jd7_P||j }qWn|j|jdkr|j }|jrtj|ddj|jd |fg}qGtj||fg}nP|rtj|j|dfg}n(|j|j|j krG|jd7_|j|jt|jkr|j|jd kr|jd7_|S) Nrz.@rr;@Tr)rGrBrOr' getdomainrX)rIZ expectrouteZadlistrrrrY?s.     zAddrlistClass.getrouteaddrcCsg}|jx*|jt|jkr<d}|j|jdkr|rh|dj rh|j|jd|jd7_d}n|j|jdkr|jdt|jnQ|j|j|j kr|r|d j r|jPn|j|j |j}|r|r|j|qW|jt|jksk|j|jdkrxt j |S|jd|jd7_|j|j }|st St j ||S) NTrrFr=z"%s"r\r!r!)rOrBr'rGstrippopr)rgetquoterEgetatomrMrNr])rIZaslistZ preserve_wsZwsdomainrrrrX_s:        .    zAddrlistClass.getaddrspeccCs7g}x!|jt|jkr)|j|j|jkrL|jd7_q |j|jdkr{|jj|jq |j|jdkr|j|jq |j|jdkr|jd7_|jdq |j|jdkrtS|j|j|j krPq |j|j q Wtj |S)NrrK[rr\) rBr'rGrCrHr)rLgetdomainliteralrMrErarN)rIZsdlistrrrr]s"zAddrlistClass.getdomainTcCs-|j|j|krdSdg}d}|jd7_x|jt|jkr|ry|j|j|jd}n|j|j|kr|jd7_Pnk|r|j|jdkr|j|jq;n6|j|jdkrd}n|j|j|j|jd7_q;Wtj|S)NrFrrKr<T)rGrBr'r)rLrMrN)rIZ begincharZendcharsZ allowcommentsZslistrrrr getdelimiteds(    zAddrlistClass.getdelimitedcCs|jdddS)Nr=z" F)re)rIrrrr`szAddrlistClass.getquotecCs|jdddS)NrKz) T)re)rIrrrrLszAddrlistClass.getcommentcCsd|jdddS)Nz[%s]rcz] F)re)rIrrrrdszAddrlistClass.getdomainliteralNcCsdg}|dkr|j}x\|jt|jkr||j|j|krSPn|j|j|j|jd7_q!Wtj|S)Nrr)rErBr'rGr)rMrN)rIrEZatomlistrrrras   zAddrlistClass.getatomcCsg}x|jt|jkr|j|j|jkrL|jd7_q |j|jdkrx|j|jq |j|jdkr|jj|jq |j|j|jkrPq |j|j |jq W|S)Nrr=rK) rBr'rGrDr)r`rHrLrFra)rIrZrrrrVszAddrlistClass.getphraselist)__name__ __module__ __qualname__rJrOrRrPrYrXr]rer`rLrdrarVrrrrr@s    ; & %   r@c@sdeZdZddZddZddZddZd d Zd d Zd dZ dS) AddressListcCs5tj|||r(|j|_n g|_dS)N)r@rJrR addresslist)rIrGrrrrJszAddressList.__init__cCs t|jS)N)r'rj)rIrrr__len__szAddressList.__len__cCsYtd}|jdd|_x0|jD]%}||jkr,|jj|q,W|S)N)rirjr))rIothernewaddrxrrr__add__s  zAddressList.__add__cCs7x0|jD]%}||jkr |jj|q W|S)N)rjr))rIrlrnrrr__iadd__ szAddressList.__iadd__cCsCtd}x0|jD]%}||jkr|jj|qW|S)N)rirjr))rIrlrmrnrrr__sub__s  zAddressList.__sub__cCs7x0|jD]%}||jkr |jj|q W|S)N)rjremove)rIrlrnrrr__isub__szAddressList.__isub__cCs |j|S)N)rj)rIr+rrr __getitem__#szAddressList.__getitem__N) rfrgrhrJrkrorprqrsrtrrrrris      ri)__all__r9r;rWrMZ COMMASPACEr*r%r0rr rrrr@rirrrr s4  u .