o ?Og]!@s ddlZddlZddlZddlZddlmZmZddlmZgdZ e e dj ddZ dd ZGd d d eZeZd eed <ddZddZddZddZddZeedZddZeedZeedZdddZdS) N) ascii_lettersdigits)errors)decode_qencode_qdecode_bencode_blen_qlen_bdecodeencodes=([a-fA-F0-9]{2})cCst|dS)N)bytesfromhexgroupr )mr;/opt/alt/python310/lib64/python3.10/email/_encoded_words.pyAsrcCs|dd}t|gfS)N_ )replace_q_byte_subber)encodedrrrrCs  rc@s,eZdZdededZddZdS) _QByteMaps-!*+/asciicCs4||jvrt|||<||Sd|||<||S)Nz={:02X})safechrformat)selfkeyrrr __missing__Ms  z_QByteMap.__missing__N)__name__ __module__ __qualname__rr rrr!rrrrrIs r_ cCsddd|DS)Ncss|]}t|VqdSN) _q_byte_map.0xrrr Zszencode_q..)joinbstringrrrrYsrcCstdd|DS)Ncss|] }tt|VqdSr()lenr)r*rrrr-]szlen_q..)sumr/rrrr \sr cCst|d}|rddd|nd}ztj||dd|r$tgfWSgfWStjysztj|ddtgfWYStjyrztj|dddttgfWYYStjyq|tgfYYYSwww)Ns===T)ZvalidateFs==) r1base64Z b64decoderZInvalidBase64PaddingDefectbinasciiErrorZInvalidBase64CharactersDefectZInvalidBase64LengthDefect)rZpad_errZmissing_paddingrrrrds2    rcCst|dS)Nr)r5Z b64encoder r/rrrrsrcCs(tt|d\}}|d|rdSdS)Nr3r)divmodr1)r0Z groups_of_3Zleftoverrrrr sr )qbc Cs |d\}}}}}|d\}}}|}|dd}t||\}}z||}Wn=tyG|t d|d||d}Yn#t t fyi|dd}|dkrg|t d|d Ynw||||fS) N?*rsurrogateescapez0Encoded word contains bytes not decodable using z charset unknown-8bitzUnknown charset z* in encoded word; decoded as unknown bytes) split partitionlowerr _cte_decodersr UnicodeDecodeErrorappendrZUndecodableBytesDefect LookupErrorUnicodeEncodeErrorZ CharsetError) Zewr%charsetZcteZ cte_stringlangr0Zdefectsstringrrrr s(       r utf-8r'cCs~ |dkr |dd}n||}|dur+td|}td|}||dkr)dnd}t||}|r7d|}d||||S) Nr?rr>r:r;r=z=?{}{}?{}?{}?=)r _cte_encode_length _cte_encodersr)rJrHencodingrIr0ZqlenZblenrrrrr s    r )rKNr')rer5r6 functoolsrJrrZemailr__all__partialcompilesubrrdictrr)ordrr rrr rCr rNrMr rrrrs>)  &+