a 8dg3@sLgdZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZmZmZddlmZdZd Zd Zd Zd Zed Zed ZddZddZd4ddZddZddZd5ddZ d6ddZ!d7ddZ"d d!Z#d"d#Z$d$d%Z%d&d'Z&d8d(d)Z'ed*ej(Z)d+d,Z*d9d/d0Z+d:d2d3Z,dS);)collapse_rfc2231_value decode_paramsdecode_rfc2231encode_rfc2231 formataddr formatdateformat_datetime getaddresses make_msgid mktime_tz parseaddr parsedate parsedate_tzparsedate_to_datetimeunquoteN)quote) AddressList)r )r r _parsedate_tz)Charsetz, z 'z[][\\()<>@,:;".]z[\\"]cCs(z|WdSty"YdS0dS)NFT)encodeUnicodeEncodeError)sr'/usr/local/lib/python3.9/email/utils.py_has_surrogates3s  rcCs|dd}|ddS)Nutf-8surrogateescapereplace)rdecode)stringZoriginal_bytesrrr _sanitize@s r"rcCs|\}}|d|rz|dWn:ty^t|trDt|}||}d||fYS0d}t|rrd}t d|}d||||fS|S)Nasciiz%s <%s>r"z\\\g<0>z %s%s%s <%s>) rr isinstancestrrZ header_encode specialsresearch escapesresub)ZpaircharsetnameaddressZ encoded_nameZquotesrrrrLs       rcCst|}t|}|jS)N) COMMASPACEjoin _AddressList addresslist)Z fieldvaluesallarrrrns rc CsHdgd|d|dgd|dd|d|d|d |d |fS) Nz"%s, %02d %s %04d %02d:%02d:%02d %s)ZMonZTueZWedZThuZFriZSatZSun) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDecrr) timetuplezonerrr_format_timetuple_and_zoneus r<FcCsR|durt}|s|r,tj|tjj}n tj|}|rH|}d}t||S)NF)timedatetimeZ fromtimestamptimezoneutcZutcfromtimestamp astimezoner)timeval localtimeusegmtdtrrrr~s rcCsV|}|r2|jdus$|jtjjkr,tdd}n|jdurBd}n |d}t||S)Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)r:tzinfor>r?r@ ValueErrorstrftimer<)rErDnowr;rrrrs  rcCs^ttd}t}td}|dur0d}nd|}|durHt}d|||||f}|S)Nd@r.z<%d.%d.%d%s@%s>)intr=osgetpidrandom getrandbitssocketgetfqdn)ZidstringdomainrBpidrandintZmsgidrrrr s  r cCsNt|^}}|dur(tj|ddStj|dddttj|diS)Nr4rFseconds)rr>r? timedelta)dataZdtupletzrrrrs rcCst|j}|sdS|dS)N)rrr)r0r1)addrZaddrsrrrr s r cCs`t|dkr\|dr<|dr<|ddddddS|dr\|dr\|ddS|S) Nr6r$z\\\z\"<>)len startswithendswithr)r&rrrrs   rcCs&|td}t|dkr"dd|fS|S)Nr5)splitTICKra)rpartsrrrrs   rcCsDtjj|d|pdd}|dur*|dur*|S|dur6d}d|||fS)Nrr#)safeencodingz%s'%s'%s)urllibparser)rr+languagerrrrs rz&^(?P\w+)\*((?P[0-9]+)\*?)?$c Cs@|dg}i}|ddD]x\}}|d}t|}t|}|r||dd\}}|durbt|}||g|||fq||dt|fq|r<| D]\}}g}d} | |D],\}} }|rt j j| dd } d } || qtt |}| r(t|\} } }||| | d|ffq||d|fq|S) Nrr6*r,numz"%s"Fzlatin-1)rhT)rcrrfc2231_continuationmatchgrouprM setdefaultappendritemssortrirj EMPTYSTRINGr/r) params new_paramsZrfc2231_paramsr,valueencodedmormZ continuationsZextendedrr+rkrrrrs8    rrus-asciicCslt|trt|dkrt|S|\}}}|dur4|}t|d}zt|||WStyft|YS0dS)Nr7zraw-unicode-escape)r%tuplerarbytesr& LookupError)rxerrorsZfallback_charsetr+rktextZrawbytesrrrr1s   rr]c Cs|durtjtjjS|jdur.|S|dd|f}t|}t |}z tj |j d}t||j }Wn~t y|tjt|dd}tjo|jdk}|rtjntj }|tj |dkrt|tj|}n t|}Yn0|j|dS)Nr]rWr4r)rF)r>rIr?r@rArFr:r=mktimerCrY tm_gmtofftm_zoneAttributeErrorgmtimedaylighttm_isdstaltzonetznamer) rEZisdstZtmrXZlocaltmZdeltar[dstZgmtoffrrrrCKs$    rC)r)NFF)F)NN)NN)rr{)Nr])-__all__rNrer=rPrRr> urllib.parseriZemail._parseaddrrrr0r r r rZ email.charsetrr.ruZ UEMPTYSTRINGZCRLFrecompiler'r)rr"rrr<rrr rr rrrASCIIrnrrrCrrrrsP        "     0