B
    Áì2aV  ã               @   s´   d Z ddddgZdZdZdZdZyd	d
lmZmZ W n e	k
rP   dZdZY nX dd„ Z
dd„ Zddd„Zddd„Zddd„Zddd„Zdd„ Zdd„ Zdd„ Zedkr°eƒ  dS ) zHConversions to/from quoted-printable transport encoding as per RFC 1521.ÚencodeÚdecodeÚencodestringÚdecodestringó   =éL   s   0123456789ABCDEFó    é    )Úa2b_qpÚb2a_qpNc             C   sH   t | tƒst‚| dkr|S | dkr&|S | tkpFd|   ko@dkn   S )zìDecide 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    	ó   _ó    ó   ~)Ú
isinstanceÚbytesÚAssertionErrorÚESCAPE)ÚcÚ	quotetabsÚheader© r   ú2/var/www/html/prediksi/Python-3.7.12/Lib/quopri.pyÚneedsquoting   s    r   c             C   sB   t | tƒrt| ƒdkst‚t| ƒ} ttt| d  t| d  fƒ S )zQuote a single character.é   é   )r   r   Úlenr   Úordr   ÚHEX)r   r   r   r   Úquote$   s    r   Fc             C   s<  t dk	r,|  ¡ }t |||d�}| |¡ dS |dfdd„}d}xâ|  ¡ }|sNP g }	d}
|dd… dkrv|dd… }d}
xL|D ]D}t|fƒ}t|||ƒržt|ƒ}|r¶|dkr¶|	 d	¡ q||	 |¡ q|W |dk	rÔ||ƒ t 	|	¡}x:t
|ƒtk�r||dtd
 … dd� |td
 d… }qàW |}q@W |dk	�r8|||
d� dS )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<| dd … dkr<|  | d d… t| dd … ƒ | ¡ n*| dkrX|  t| ƒ| ¡ n|  | | ¡ d S )Néÿÿÿÿs    	ó   .)Úwriter   )ÚsÚoutputÚlineEndr   r   r   r!   ;   s
    (zencode.<locals>.writer   r   r   r   r   s   =
)r$   )r
   Úreadr!   Úreadliner   r   r   ÚappendÚEMPTYSTRINGÚjoinr   ÚMAXLINESIZE)Úinputr#   r   r   ÚdataÚodatar!   ZprevlineÚlineZoutlineÚstrippedr   Zthisliner   r   r   r   ,   s@    	





c             C   sF   t d k	rt | ||d�S ddlm} || ƒ}|ƒ }t||||ƒ | ¡ S )N)r   r   r   )ÚBytesIO)r
   Úior0   r   Úgetvalue)r"   r   r   r0   ÚinfpÚoutfpr   r   r   r   j   s    c             C   s  t dk	r*|  ¡ }t ||d�}| |¡ dS d}�x¼|  ¡ }|s@P dt|ƒ }}|dkr¢||d |… dkr¢d}	|d }x.|dkrž||d |… dkrž|d }qxW nd}	�x*||k �rÒ|||d … }
|
dkrâ|râ|d	 }|d }qª|
tkrü||
 }|d }qª|d |k�r|	�sd}	P qª|d |k �rR||d |d
 … tk�rR|t }|d
 }qª|d
 |k �rÀt||d |d
 … ƒ�rÀt||d
 |d … ƒ�rÀ|tt||d |d … ƒfƒ }|d }qª||
 }|d }qªW |	s2| |d ¡ d}q2W |�rþ| |¡ dS )z»Read '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%   r!   r&   r   r   Úishexr   Úunhex)r+   r#   r   r,   r-   Únewr.   ÚiÚnÚpartialr   r   r   r   r   u   sR    
   
 
 ( 
B" 
 c             C   sD   t d k	rt | |d�S ddlm} || ƒ}|ƒ }t|||d� | ¡ S )N)r   r   )r0   )r	   r1   r0   r   r2   )r"   r   r0   r3   r4   r   r   r   r       s    c             C   sV   t | tƒst‚d|   ko dkn  pTd|   ko8dkn  pTd|   koPdkS   S )zDReturn true if the byte ordinal 'c' is a hexadecimal digit in ASCII.ó   0ó   9ó   aó   fó   Aó   F)r   r   r   )r   r   r   r   r7   ¬   s    r7   c             C   s¶   d}x¬| D ]¤}t |fƒ}d|  kr,dkr:n n
tdƒ}n`d|  krNdkr`n ntdƒd }n:d	|  krtd
kr†n ntd	ƒd }ndsštdt|ƒ ƒ‚|d t|ƒ|  }q
W |S )z.Get the integer value of a hexadecimal number.r   r=   r>   Ú0r?   r@   Úaé
   rA   rB   Fznon-hex digit r   )r   r   r   Úrepr)r"   Úbitsr   r:   r   r   r   r8   ±   s    


r8   c              C   s¬  dd l } dd l}y| | jdd … d¡\}}W nV |jk
r„ } z6| j| _t|ƒ tdƒ tdƒ tdƒ |  d¡ W d d }~X Y nX d}d}x(|D ] \}}|dkr¨d}|d	kr”d}q”W |rÚ|rÚ| j| _td
ƒ |  d¡ |sädg}d}	x®|D ]¦}
|
dk�r| jj	}nNyt
|
dƒ}W n> tk
�rR } z| j d|
|f ¡ d}	wîW d d }~X Y nX z*|�rlt|| jj	ƒ nt|| jj	|ƒ W d |
dk�r’| ¡  X qîW |	�r¨|  |	¡ d S )Nr   r   Ztdz"usage: quopri [-t | -d] [file] ...z-t: quote tabsz-d: decode; default encoder5   z-tz-dz -t and -d are mutually exclusiveú-Úrbz%s: can't open (%s)
)ÚsysÚgetoptÚargvÚerrorÚstderrÚstdoutÚprintÚexitÚstdinÚbufferÚopenÚOSErrorr!   r   r   Úclose)rJ   rK   ÚoptsÚargsÚmsgZdecoZtabsÚorD   ÚstsÚfileÚfpr   r   r   ÚmainÃ   sT      
 



r^   Ú__main__)F)FF)F)F)Ú__doc__Ú__all__r   r*   r   r(   Úbinasciir	   r
   ÚImportErrorr   r   r   r   r   r   r7   r8   r^   Ú__name__r   r   r   r   Ú<module>   s*   

>

+
.