a
    "h9                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZejdedd g dZG dd de	Z
d ZdZd	Zd
ZdZG dd dZdd ZG dd dZejdd ZG dd dZG dd dZG dd dZdd ZG dd dZG dd dZG d d! d!Zd"d# ZdS )$    Nzthe binhex module is deprecated   )
stacklevel)binhexhexbinErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r
   r
   ./opt/python-3.9.21/usr/lib/python3.9/binhex.pyr   %   s   r      i   @      c                   @   s   e Zd Zdd ZdS )FInfoc                 C   s   d| _ d| _d| _d S )Nz????r   )TypeCreatorFlagsselfr
   r
   r   __init__6   s    zFInfo.__init__N)r   r   r	   r   r
   r
   r
   r   r   5   s   r   c                 C   s   t  }t| d<}|d}d|vr,d|_|dd | }W d    n1 sT0    Y  tj	| \}}|
ddd}|||dfS )	Nrbi   r   ZTEXTr   :-r   )r   ioopenreadr   seektellospathsplitreplace)namefinfofpdataZdsizedirfiler
   r
   r   getfileinfo;   s    
&r(   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
openrsrcc                 G   s   d S Nr
   r   argsr
   r
   r   r   I   s    zopenrsrc.__init__c                 G   s   dS N    r
   r+   r
   r
   r   r   L   s    zopenrsrc.readc                 G   s   d S r*   r
   r+   r
   r
   r   writeO   s    zopenrsrc.writec                 C   s   d S r*   r
   r   r
   r
   r   closeR   s    zopenrsrc.closeN)r   r   r	   r   r   r/   r0   r
   r
   r
   r   r)   H   s   r)   c                   c   s@   t  $ t ddt d V  W d    n1 s20    Y  d S )Nignore )warningscatch_warningsfilterwarningsDeprecationWarningr
   r
   r
   r   _ignore_deprecation_warningX   s    
r7   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_Hqxcoderenginec                 C   s    || _ d| _d| _td | _d S )Nr.   r   )ofpr%   hqxdataLINELENlinelenr   r9   r
   r
   r   r   b   s    z_Hqxcoderengine.__init__c                 C   s   | j | | _ t| j }|d d }| j d | }| j |d  | _ |sHd S t " | jt| | _W d    n1 sv0    Y  | d d S )N   r   )r%   lenr7   r:   binasciib2a_hqx_flush)r   r%   ZdatalenZtodor
   r
   r   r/   h   s    
0z_Hqxcoderengine.writec                 C   sr   d}|t | j| j krH|| j }| j| j|| d  t| _|}q| j|d  | _|rn| j| jd  d S )Nr      s   :)r?   r:   r<   r9   r/   r;   )r   forcefirstlastr
   r
   r   rB   t   s    
z_Hqxcoderengine._flushc                 C   s\   | j r@t $ | jt| j  | _W d    n1 s60    Y  | d | j  | `d S )Nr   )r%   r7   r:   r@   rA   rB   r9   r0   r   r
   r
   r   r0      s    2

z_Hqxcoderengine.closeN)r   r   r	   r   r/   rB   r0   r
   r
   r
   r   r8   _   s   r8   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_Rlecoderenginec                 C   s   || _ d| _d S r-   )r9   r%   r=   r
   r
   r   r      s    z_Rlecoderengine.__init__c                 C   sf   | j | | _ t| j tk rd S t  t| j }W d    n1 sF0    Y  | j| d| _ d S r-   )r%   r?   REASONABLY_LARGEr7   r@   rlecode_hqxr9   r/   )r   r%   rledatar
   r
   r   r/      s    *z_Rlecoderengine.writec                 C   sV   | j rDt  t| j }W d    n1 s.0    Y  | j| | j  | `d S r*   )r%   r7   r@   rI   r9   r/   r0   )r   rJ   r
   r
   r   r0      s    *
z_Rlecoderengine.closeN)r   r   r	   r   r/   r0   r
   r
   r
   r   rG      s   	rG   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )BinHexc           
      C   s   |\}}}}d}t |tr.|}t|d}d}zR|d t|}	t|	| _d| _|d u r`t	 }|| _
|| _| || t| _W n   |r|   Y n0 d S )NFwbTs0   (This file must be converted with BinHex 4.0):r   )
isinstancestrr   r   r/   r8   rG   r9   crcr   dlenrlen
_writeinfo_DID_HEADERstater0   )
r   Zname_finfo_dlen_rlenr9   r"   r#   rP   rQ   Zclose_on_errorZofnameZhqxerr
   r
   r   r      s*    



zBinHex.__init__c                 C   s   t |}|dkrtdt|g|d d }|j|j }}t|trR|d}t|trf|d}|| }t	d|j
}t	d| j| j}	|| | |	 }
| |
 |   d S )N?   zFilename too longzlatin-1    >hz>ii)r?   r   bytesencoder   r   rM   rN   structpackr   rP   rQ   _write	_writecrc)r   r"   r#   nldtpZcrZd2Zd3Zd4infor
   r
   r   rR      s    




zBinHex._writeinfoc                 C   s    t || j| _| j| d S r*   )r@   crc_hqxrO   r9   r/   r   r%   r
   r
   r   r\      s    zBinHex._writec                 C   s4   | j dk rd}nd}| jt|| j  d| _ d S )Nr   rW   z>H)rO   r9   r/   rZ   r[   )r   fmtr
   r
   r   r]      s
    
zBinHex._writecrcc                 C   s0   | j tkrtd| jt| | _| | d S )NzWriting data at the wrong time)rT   rS   r   rP   r?   r\   rc   r
   r
   r   r/      s    
zBinHex.writec                 C   s,   | j dkrtd| jf |   t| _d S )Nr   zIncorrect data size, diff=%r)rP   r   rQ   r]   	_DID_DATArT   r   r
   r
   r   
close_data   s    
zBinHex.close_datac                 C   sB   | j tk r|   | j tkr$td| jt| | _| | d S )Nz'Writing resource data at the wrong time)rT   re   rf   r   rQ   r?   r\   rc   r
   r
   r   
write_rsrc   s    

zBinHex.write_rsrcc                 C   s   | j d u rd S zb| j tk r"|   | j tkr4td| jdkrNtd| jf |   W d | _ | j}| `|  nd | _ | j}| `|  0 d S )NzClose at the wrong timer   z$Incorrect resource-datasize, diff=%r)rT   re   rf   r   rQ   r]   r9   r0   r=   r
   r
   r   r0      s$    





zBinHex.closeN)r   r   r	   r   rR   r\   r]   r/   rf   rg   r0   r
   r
   r
   r   rK      s   
rK   c                 C   s   t | }t||}t| d4}|d}|s0q<|| q |  W d    n1 sX0    Y  t| d}|d}|s|q|| ql|	  |	  d S )Nr     )
r(   rK   r   r   r   r/   rf   r)   rg   r0   )inpoutr#   r9   ifpr_   r
   r
   r   r      s    

&

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_Hqxdecoderenginec                 C   s   || _ d| _d S )Nr   )rk   eofr   rk   r
   r
   r   r     s    z_Hqxdecoderengine.__init__c                 C   s   d}|}|dkr| j r|S |d d d }| j|}z>t   t|\}| _ W d    n1 sd0    Y  W qW n tjy   Y n0 | jd}|std|| }q6|| }|t| }|s| j stdq|S )Nr.   r   r   r>      r   zPremature EOF on binhex file)	rm   rk   r   r7   r@   Za2b_hqxZ
Incompleter   r?   )r   ZtotalwtdZdecdatawtdr%   Z
decdatacurnewdatar
   r
   r   r     s*    
.


z_Hqxdecoderengine.readc                 C   s   | j   d S r*   rk   r0   r   r
   r
   r   r0   :  s    z_Hqxdecoderengine.closeN)r   r   r	   r   r   r0   r
   r
   r
   r   rl     s   !rl   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_Rledecoderenginec                 C   s   || _ d| _d| _d| _d S )Nr.   r   )rk   
pre_bufferpost_bufferrm   rn   r
   r
   r   r   @  s    z_Rledecoderengine.__init__c                 C   sD   |t | jkr"| |t | j  | jd | }| j|d  | _|S r*   )r?   ru   _fill)r   rp   rvr
   r
   r   r   F  s
    z_Rledecoderengine.readc                 C   sB  | j | j|d  | _ | jjrdt $ | jt| j  | _W d    n1 sP0    Y  d| _ d S t| j }| j dd  t	d t	 kr|d }nX| j dd  t	kr|d }n<| j dd  t	d kr|d }n| j dd t	krn|d	 }t , | jt| j d |  | _W d    n1 s$0    Y  | j |d  | _ d S )
Nro   r.   rV   r>   r   r   )
rt   rk   r   rm   r7   ru   r@   Zrledecode_hqxr?   RUNCHAR)r   rp   Zmarkr
   r
   r   rv   M  s.    
$



&z_Rledecoderengine._fillc                 C   s   | j   d S r*   rr   r   r
   r
   r   r0   r  s    z_Rledecoderengine.closeN)r   r   r	   r   r   rv   r0   r
   r
   r
   r   rs   =  s   %rs   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )HexBinc                 C   sf   t |trt|d}|d}|s,td|dkr6q|dkrqBqt|}t|| _d| _	| 
  d S )Nr   r   zNo binhex data foundrC      :r   )rM   rN   r   r   r   r   rl   rs   rk   rO   _readheader)r   rk   ZchZhqxifpr
   r
   r   r   v  s    


zHexBin.__init__c                 C   s    | j |}t|| j| _|S r*   )rk   r   r@   rb   rO   )r   r?   r%   r
   r
   r   _read  s    zHexBin._readc                 C   sN   t d| jdd d@ }| jd@ | _|| jkrDtd| j|f d| _d S )NrW   r   r   i  zCRC error, computed %x, read %x)rZ   unpackrk   r   rO   r   )r   Zfilecrcr
   r
   r   	_checkcrc  s    
zHexBin._checkcrcc                 C   s   |  d}|  t|}|  d}|   |dd }|dd }td|dd d }td|dd	 d | _td|d	d d | _|| _t | _|| j_	|| j_
|| j_t| _d S )
Nr         	   rW      r   z>l   )r   ordr   rZ   r   rP   rQ   FNamer   r   r   r   rS   rT   )r   r?   ZfnameresttypeZcreatorflagsr
   r
   r   r~     s    

zHexBin._readheaderc                 G   sj   | j tkrtd|r,|d }t|| j}n| j}d}t||k rZ|| |t|  }q6| j| | _|S )NzRead data at wrong timer   r.   )rT   rS   r   minrP   r?   r   )r   nrw   r
   r
   r   r     s    
zHexBin.readc                 C   s6   | j tkrtd| jr$| | j}|   t| _ d S )Nzclose_data at wrong time)rT   rS   r   rP   r   r   re   r   dummyr
   r
   r   rf     s    
zHexBin.close_datac                 G   sZ   | j tkr|   | j tkr$td|r>|d }t|| j}n| j}| j| | _| |S )Nz Read resource data at wrong timer   )rT   rS   rf   re   r   r   rQ   r   )r   r   r
   r
   r   	read_rsrc  s    

zHexBin.read_rsrcc                 C   sT   | j d u rd S z.| jr"| | j}|   W d | _ | j  nd | _ | j  0 d S r*   )rT   rQ   r   r   rk   r0   r   r
   r
   r   r0     s    

zHexBin.closeN)r   r   r	   r   r   r   r~   r   rf   r   r0   r
   r
   r
   r   r|   u  s   
r|   c                 C   s   t | }|j}|s|j}t|d,}|d}|s6qB|| q&W d    n1 sV0    Y  |  |d}|rt	|d}|| |d}|sq|| q|
  |
  d S )NrL   rh   )r|   r   r   r   r   r   r/   rf   r   r)   r0   )ri   rj   rk   r#   r9   r_   r
   r
   r   r     s$    
*



r   )r@   
contextlibr   r   rZ   r3   warnr6   __all__	Exceptionr   rS   re   rH   r;   r{   r   r(   r)   contextmanagerr7   r8   rG   rK   r   rl   rs   r|   r   r
   r
   r
   r   <module>   s8   
(^+8h