MINI MINI MANI MO
3
\T @ s d Z ddddgZdZdZdZdZyd d
lmZmZ W n e k
rP dZdZY nX dd
Z
dd ZdddZdddZ
dddZdddZdd Zdd Zdd Zedkre dS ) zHConversions to/from quoted-printable transport encoding as per RFC 1521.encodedecodeencodestringdecodestring =L s 0123456789ABCDEF )a2b_qpb2a_qpNc C s: | dkr|S | dkr|S | t kp8d| ko2dkn S )zDecide whether a particular byte ordinal needs to be quoted.
The 'quotetabs' flag indicates whether embedded tabs and spaces should be
quoted. Note that line-ending tabs and spaces are always encoded, as per
RFC 1521.
s _ ~)ESCAPE)c quotetabsheader r /usr/lib64/python3.6/quopri.pyneedsquoting s
r c C s( t | } ttt| d t| d f S )zQuote a single character. )ordr bytesHEX)r r r r quote$ s r Fc
C s< t dk r,| j }t |||d}|j| dS |dfdd}d}x| j }|sNP g } d}
|dd dkrv|dd
}d}
xL|D ]D}t|f}t|||rt|}|r|dkr| jd q|| j| q|W |dk r|| tj | }x:t
|tkr||dtd d
d |td d }qW |}q@W |dk r8|||
d dS )av Read 'input', apply quoted-printable encoding, and write to 'output'.
'input' and 'output' are binary file objects. The 'quotetabs' flag
indicates whether embedded tabs and spaces should be quoted. Note that
line-ending tabs and spaces are always encoded, as per RFC 1521.
The 'header' flag indicates whether we are encoding spaces as _ as per RFC
1522.N)r r
c S sj | r<| dd dkr<|j | d d t| dd | n*| dkrX|j t| | n|j | | d S )N s .r r )writer )soutputlineEndr r r r ; s
(zencode.<locals>.writer r r r s =
)r! r r )r
readr readliner r r appendEMPTYSTRINGjoinlenMAXLINESIZE)
inputr r r dataodatar ZprevlinelineZoutlinestrippedr Zthisliner r r r , s@
c C sF t d k rt | ||dS ddlm} || }| }t|||| |j S )N)r r r )BytesIO)r
ior. r getvalue)r r r r. infpoutfpr r r r j s c C s t dk r*| j }t ||d}|j| dS d}x| j }|s@P dt| }}|dkr||d | dkrd} |d }x.|dkr||d | dkr|d }qxW nd} x.||k r|||d }
|
dkr|r|d }|d }q|
tk r||
}|d }q|d |kr| rd} P q|d |k rV||d |d
tkrV|t }|d
}q|d
|k rt||d |d
rt||d
|d r|tt||d |d f }|d }q||
}|d }qW | s2|j|d d}q2W |r|j| dS )zRead 'input', apply quoted-printable decoding, and write to 'output'.
'input' and 'output' are binary file objects.
If 'header' is true, decode underscore as space (per RFC 1522).N)r r r r r s
r r ) r r"