o
     JAfd                     @   s   	 g d Z dZdZdZdZz
ddlmZmZ W n ey$   dZdZY nw 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rVe  dS dS ))encodedecodeencodestringdecodestring   =L   s   0123456789ABCDEF        )a2b_qpb2a_qpNc                 C   s<   	 | dv r|S | dkr|S | t kpd|   kodkn   S )N    	   _       ~)ESCAPE)c	quotetabsheader r   /usr/lib/python3.10/quopri.pyneedsquoting   s   "r   c                 C   s*   	 t | } ttt| d  t| d  f S )N   )ordr   bytesHEXr   r   r   r   quote$   s    r   Fc                 C   s>  	 t d ur|  }t |||d}|| d S |dfdd}d }	 |  }|s(nig }	d}
|dd  dkr<|d d }d}
|D ]"}t|f}t|||rOt|}|r[|dkr[|	d	 q>|	| q>|d uri|| t	|	}t
|tkr||d td  d
d |td d  }t
|tkst|}q!|d ur|||
d d S d S )Nr   r      
c                 S   sn   | r| dd  dv r| | d d t| dd   |  d S | dkr.| t| |  d S | | |  d S )Nr      .)writer   )soutputlineEndr   r   r   r    ;   s
   *zencode.<locals>.write   r   r   r   r   s   =
)r#   )r
   readr    readliner   r   r   appendEMPTYSTRINGjoinlenMAXLINESIZE)inputr"   r   r   dataodatar    ZprevlinelineZoutlinestrippedr   Zthisliner   r   r   r   ,   sH   



!r   c                 C   sF   t d urt | ||dS ddlm} || }| }t|||| | S )Nr   r   BytesIO)r
   ior2   r   getvalue)r!   r   r   r2   infpoutfpr   r   r   r   j   s   r   c                 C   s  	 t d ur|  }t ||d}|| d S d}	 |  }|s ndt|}}|dkr\||d | dkr\d}	|d }|dkr[||d | dv r[|d }|dkr[||d | dv sInd}	||k r|||d  }
|
dkry|ry|d }|d }no|
tkr||
 }|d }nb|d |kr|	sd}	n[|d |k r||d |d	  tkr|t }|d	 }n<|d	 |k rt||d |d	  rt||d	 |d
  r|tt||d |d
  f }|d
 }n||
 }|d }||k sb|	s||d  d}q|r|| d S d S )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   sN   
$<,r   c                 C   sD   t d ur
t | |dS ddlm} || }| }t|||d | S )Nr7   r   r1   )r	   r3   r2   r   r4   )r!   r   r2   r5   r6   r   r   r   r      s   r   c                 C   sJ   	 d|   ko
dkn  p$d|   kodkn  p$d|   ko"dkS   S )N   0   9   a   f   A   Fr   r   r   r   r   r:      s   Hr:   c                 C   s   	 d}| D ]G}t |f}d|  krdkrn ntd}n%d|  kr'dkr0n ntdd }nd	|  kr:d
krBn ntd	d }|d t||  }q|S )Nr   r@   rA   0rB   rC   a
   rD   rE   r   )r   r   )r!   bitsr   r=   r   r   r   r;      s   

r;   c                  C   s  dd l } dd l}z|| jdd  d\}}W n, |jyC } z| j| _t| td td td | d W Y d }~nd }~ww d}d}|D ]\}}|d	krTd
}|dkrZd
}qJ|rl|rl| j| _td | d |sqdg}d}	|D ]W}
|
dkr| jj	}n&zt
|
d}W n ty } z| jd|
|f  d}	W Y d }~qud }~ww z|rt|| jj	 nt|| jj	| W |
dkr|  qu|
dkr|  w w |	r| |	 d S d S )Nr   r$   Ztdz"usage: quopri [-t | -d] [file] ...z-t: quote tabsz-d: decode; default encoder8   Fz-tTz-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)rL   rM   ZoptsargsmsgZdecoZtabsorG   stsfilefpr   r   r   main   sd   



r_   __main__)F)FF)__all__r   r+   r   r(   Zbinasciir	   r
   ImportErrorr   r   r   r   r   r   r:   r;   r_   __name__r   r   r   r   <module>   s0   

>

+.
