a  ze&@sBgdZddlZddlmZmZmZdZdZdZdde d DZ e ddZ e ddZ d e d e d D]Zeee e<qrd e ed <dD]Zeee e<qddZddZddZddZd*ddZddZddZd+ddZe ddZd D]Zeeee<qd!efd"d#Zefd$d%ZeZeZd&d'Zd(d)ZdS),) body_decode body_encode body_lengthdecode decodestring header_decode header_encode header_lengthquoteunquoteN) ascii_lettersdigits hexdigits  cCsg|] }d|qS)z=%02X).0crrD/opt/bitninja-python-dojo/embedded/lib/python3.9/email/quoprimime.py 7rs-!*+/ascii_ s_ !"#$%&'()*+,-./0123456789:;<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ cCst|t|kSN)chr_QUOPRI_HEADER_MAPoctetrrr header_checkJsr!cCst|t|kSr)r_QUOPRI_BODY_MAPrrrr body_checkOsr#cCstdd|DS)Ncss|]}tt|VqdSr)lenrrr rrr ^rz header_length..sum bytearrayrrrrTs rcCstdd|DS)Ncss|]}tt|VqdSr)r$r"r%rrrr&hrzbody_length..r'r)rrrrasrcCsft|tst|}|s&||n_QUOPRI_BODY_ENCODE_MAPr. splitlinesr$r CRLFjoin) bodyZ maxlineleneolZ soft_breakZ maxlinelen1Z encoded_bodyr.linestartZ laststartstopZroomqrrrrsD     rcCs|s|Sd}|D]}|}|s.||7}qd}t|}||kr||}|dkrd||7}|d7}nv|d|kr||d7}q:n^|d|kr||dtvr||dtvr|t|||d7}|d7}n||7}|d7}||kr:||7}q:q|ddvr||r|dd}|S) Nrr rCr5rDr6r+r)rGrstripr$rr endswith)r@rKZdecodedrLinrrrrrs8   ,   rcCs|d}t|S)Nr )groupr )matchr1rrr_unquote_matchs rVcCs |dd}tjdt|tjdS)Nrrz=[a-fA-F0-9]{2})flags)replaceresubrVASCIIr9rrrr#s r)r)r<) __all__rYstringr r rrHNLZ EMPTYSTRINGranger:rr"encoderrr;r!r#rrr4r r rrFrrrrrVrrrrrs<        O 0