o ?Og&^ã@sê gd¢ZddlZddlZddlZddlZddlmZddlmZ e j Z dZ dZ dZ dZd Zd Zd Ze d ƒZe d ƒZe dejejB¡Ze d¡Ze d¡ZejjZdd„Z  ddd„ZGdd„dƒZGdd„dƒZGdd„de ƒZ!dS))ÚHeaderÚ decode_headerÚ make_headeréN)ÚHeaderParseError)ÚcharsetÚ ú ó z ÚéNz úus-asciizutf-8ai =\? # literal =? (?P[^?]*?) # non-greedy up to the next ? is the charset \? # literal ? (?P[qQbB]) # either a "q" or a "b", case insensitive \? # literal ? (?P.*?) # non-greedy up to the next ?= is the encoded string \?= # literal ?= z[\041-\176]+:$z \n[^ \t]+:c Cs„ t|dƒrdd„|jDƒSt |¡s|dfgSg}| ¡D]A}t |¡}d}|r_| d¡}|r6| ¡}d}|r@| |ddf¡|r]| d¡  ¡}| d¡  ¡}| d¡}| |||f¡|s)qg} t |ƒD]%\} } | dkr‹| dr‹|| ddr‹|| dd  ¡r‹|  | d¡qft | ƒD]} || =qg} |D][\}}}|dur«|  ||f¡qš|d kr½t j |¡}|  ||f¡qš|d krðt|ƒd }|rÓ|d dd |…7}zt j |¡}Wn tjyçtd ƒ‚w|  ||f¡qštd|ƒ‚g}d}}| D]:\}}t|tƒr t|dƒ}|dur|}|}qþ||kr(| ||f¡|}|}qþ|dur4|t|7}qþ||7}qþ| ||f¡|S)NÚ_chunkscSs(g|]\}}t |t|ƒ¡t|ƒf‘qS©)Ú_charsetZ_encodeÚstr)Ú.0Ústringrrrú3/opt/alt/python310/lib64/python3.10/email/header.pyÚ Msÿz!decode_header..TrFééÚqÚbéz===zBase64 decoding errorzUnexpected encoding: zraw-unicode-escape)Úhasattrr ÚecreÚsearchÚ splitlinesÚsplitÚpopÚlstripÚappendÚlowerÚ enumerateÚisspaceÚreversedÚemailÚ quoprimimeZ header_decodeÚlenZ base64mimeÚdecodeÚbinasciiÚErrorrÚAssertionErrorÚ isinstancerÚbytesÚBSPACE)ÚheaderZwordsÚlineÚpartsÚfirstZ unencodedrÚencodingZencodedZdroplistÚnÚwÚdZ decoded_wordsZencoded_stringZwordZpaderrZ collapsedZ last_wordÚ last_charsetrrrr=s† ÿ      õ€4€   ÿ        rcCsH t|||d}|D]\}}|durt|tƒst|ƒ}| ||¡q |S)N)Ú maxlinelenÚ header_nameÚcontinuation_ws)rr-ÚCharsetr!)Z decoded_seqr9r:r;ÚhÚsrrrrrœs ÿ rc@sPeZdZ   ddd„Zdd„Zdd „Zdd d „Zd d „Zddd„Zdd„Z dS)rNrÚstrictcCs€ |durt}n t|tƒst|ƒ}||_||_g|_|dur%| |||¡|dur+t}||_|dur7d|_ dSt |ƒd|_ dS)Nrr) ÚUSASCIIr-r<rÚ_continuation_wsr r!Ú MAXLINELENÚ _maxlinelenÚ _headerlenr()Úselfr>rr9r:r;ÚerrorsrrrÚ__init__´s   zHeader.__init__c CsÆ | ¡g}d}d}|jD]O\}}|}|tjkr%| dd¡}| dd¡}|rM|o/| |d¡}|dvrB|dvrA|sA| t¡d}n |dvrM|sM| t¡|oU| |d¡}|}| |¡qt   |¡S)NÚasciiÚsurrogateescapeÚreplacer©Nr éÿÿÿÿ) Ú _normalizer rÚ UNKNOWN8BITÚencoder)Ú _nonctextr!ÚSPACEÚ EMPTYSTRINGÚjoin) rEZuchunksÚlastcsÚ lastspacerrZnextcsZoriginal_bytesÚhasspacerrrÚ__str__ãs.     €    zHeader.__str__cCs |t|ƒkS©N)r)rEÚotherrrrÚ__eq__s z Header.__eq__cCs¶ |dur |j}n t|tƒst|ƒ}t|tƒs.|jpd}|tjkr(| dd¡}n| ||¡}|jp2d}|tjkrQz| ||¡Wnt yP|dkrL‚t }Ynw|j   ||f¡dS)Nr rI) rr-r<rZ input_codecrNr)Z output_codecrOÚUnicodeEncodeErrorÚUTF8r r!)rEr>rrFZ input_charsetZoutput_charsetrrrr! s(        ýz Header.appendcCs | ¡p|dvS)N)ú(ú)ú\)r$)rEr>rrrrP4szHeader._nonctextú;, rcCsš | ¡|dur |j}|dkrd}t|j||j|ƒ}d}d}}|jD]Ž\}} |durN|o4| |d¡}|dvrD|r?| dvrC| ¡n | dvrN|sN| ¡|oV| |d¡}| }d}| ¡} | rk|  d| d| ¡n|  dd| ¡| dd…D]/} |  ¡| j dur|  |jd|   ¡| ¡qx|   ¡} | dt | ƒt | ƒ…} |  | | | ¡qxt | ƒdkr²|  ¡q$|jrº| ¡| |¡}t |¡rËtd  |¡ƒ‚|S) Nri@BrKrLFr rrz8header value appears to contain an embedded header: {!r})rMrCÚ_ValueFormatterrDrAr rPÚadd_transitionrÚfeedÚnewlineÚheader_encodingr r(Ú_strÚ_embedded_headerrrÚformat)rEÚ splitcharsr9ÚlinesepZ formatterrTrVrUrrÚlinesr1ZslineÚfwsÚvaluerrrrO9s^ ÿ €  ÿ €  ÿz Header.encodecCsxg}d}g}|jD]!\}}||kr| |¡q |dur%| t |¡|f¡|g}|}q |r7| t |¡|f¡||_dSrX)r r!rQrS)rEZchunksr8Z last_chunkrrrrrrM‰s  zHeader._normalize)NNNNrr?)Nr?)r`Nr) Ú__name__Ú __module__Ú __qualname__rGrWrZr!rPrOrMrrrrr³s þ/ +  Prc@sTeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)racCs0||_||_t|ƒ|_||_g|_t|ƒ|_dSrX)Ú_maxlenrAr(Ú_continuation_ws_lenÚ _splitcharsÚ_linesÚ _AccumulatorÚ _current_line)rEZ headerlenÚmaxlenr;rirrrrGžs  z_ValueFormatter.__init__cCs| ¡| |j¡SrX)rdrSrt)rErjrrrrf¦s z_ValueFormatter._strcCs | t¡SrX)rfÚNL©rErrrrWªó z_ValueFormatter.__str__cCsv|j ¡}|dkr|jj|Žt|jƒdkr4|j ¡r+|jr+|jdt|jƒ7<n |j t|jƒ¡|j ¡dS)N)rr rrL) rvrÚpushr(Ú is_onlywsrtrr!Úreset)rEZ end_of_linerrrrd­s  z_ValueFormatter.newlinecCs|j dd¡dS)Nrr )rvr{ryrrrrb¸óz_ValueFormatter.add_transitioncCsÀ|jdur| |||j¡dS| || ¡¡}z| d¡}Wn ty(YdSw|dur3| ||¡z| ¡}Wn tyCYdSw| ¡|j   |j |¡|D] }|j   |j |¡qRdS©Nr)reÚ _ascii_splitrsZheader_encode_linesÚ _maxlengthsrÚ IndexErrorÚ _append_chunkrdrvr{rArtr!)rErlrrZ encoded_linesZ first_lineÚ last_liner1rrrrc»s*  þ   þÿz_ValueFormatter.feedccs&|jt|jƒV |j|jVq rX)rqr(rvrrryrrrràs €ÿz_ValueFormatter._maxlengthscCsft dtd||¡}|drdg|dd…<n| d¡tt|ƒgdŽD] \}}| ||¡q&dS)Nz([z]+)rr r)ÚrerÚFWSrÚzipÚiterrƒ)rErlrrir2Úpartrrrr€æs ÿz_ValueFormatter._ascii_splitcCs|j ||¡t|jƒ|jkr‚|jD]:}t|j ¡dddƒD]*}| ¡r6|j|d}|r6|d|kr6n|j|dd}|rI|d|krInqqn|j ¡\}}|jj dkrb|  ¡|sbd}|j ||¡dS|j  |¡}|j   t|jƒ¡|j |¡dSdS)NrrrLr)rvr{r(rqrsÚrangeÚ part_countr$rÚ _initial_sizerdÚpop_fromrtr!rr})rErlrZchÚiZprevpartr‰Z remainderrrrrƒüs2 €  äz_ValueFormatter._append_chunkN) rnrorprGrfrWrdrbrcrr€rƒrrrrras % racsjeZdZd‡fdd„ Zdd„Zddd„Z‡fdd „Zd d „Zd d „Zddd„Z dd„Z ‡fdd„Z ‡Z S)rurcs||_tƒ ¡dSrX)rŒÚsuperrG)rEZ initial_size©Ú __class__rrrGsz_Accumulator.__init__cCs| ||f¡dSrX)r!)rErlrrrrr{#r~z_Accumulator.pushcCs||d…}g||d…<|SrXr)rErŽZpoppedrrrr&s  z_Accumulator.pop_fromcs| ¡dkrdStƒ ¡S)Nr)r r )r‹rrryrrrr+s  z_Accumulator.popcCstdd„|Dƒ|jƒS)Ncss$|] \}}t|ƒt|ƒVqdSrX)r(©rrlr‰rrrÚ 1s€"z'_Accumulator.__len__..)ÚsumrŒryrrrÚ__len__0sÿz_Accumulator.__len__cCst dd„|Dƒ¡S)Ncss"|] \}}t ||f¡VqdSrX©rRrSr’rrrr“5s€ÿz'_Accumulator.__str__..r–ryrrrrW4s ÿz_Accumulator.__str__NcCs"|durg}||dd…<d|_dSr)rŒ)rEZstartvalrrrr}8s  z_Accumulator.resetcCs|jdko | p t|ƒ ¡Sr)rŒrr$ryrrrr|>sz_Accumulator.is_onlywscs tƒ ¡SrX)rr•ryrrrr‹Arzz_Accumulator.part_count)rrX) rnrorprGr{rrr•rWr}r|r‹Ú __classcell__rrrrrus   ru)NNr)"Ú__all__r…r*Zemail.quoprimimer&Zemail.base64mimeZ email.errorsrrrr<rxrQr/ZSPACE8rRrBr†r@r\ÚcompileÚVERBOSEÚ MULTILINErZfcrergr'Z _max_appendrrrraÚlistrurrrrÚsB   ø _ ÿk