o
    ۩ZhS                     @   s   d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZ dedee fddZee ZG dd dZG d	d
 d
eZG dd deZdedeeef defddZdee ddfddZdS )    N)
AnyCallableDictIteratorListMutableSequenceOptionalSequenceUnioncastdatareturnc                 c   s    | E d H  d S N )r   r   r   E/var/www/html/lang_env/lib/python3.10/site-packages/pdfminer/ccitt.py	get_bytes   s   r   c                	   @   s   e Zd ZU eed< eeegef  ed< dddZe	dede
eef d	eddfd
dZdeddfddZdeddfddZdS )	BitParser_state_acceptr   Nc                 C   s
   d| _ d S )Nr   )_posselfr   r   r   __init__.   s   
zBitParser.__init__rootvbitsc                 C   s|   |}d }t t|D ]'}d|k r&|d usJ || d u r"d d g||< || }|| dkr/d}q
d}q
|d us8J |||< d S )Nr   1   )rangelen)clsr   r   r   pbir   r   r   add1   s   zBitParser.addr   c                 C   s*   t |D ]}dD ]	}| ||@  qqd S N   @                   r   )r   
_parse_bitr   r   bytemr   r   r   	feedbytesB   s
   zBitParser.feedbytesxc                 C   sZ   |r| j d }n| j d }|  jd7  _t|tr|| _ d S | jd us%J | || _ d S Nr   r   )r   r   
isinstancelistr   )r   r3   r   r   r   r   r.   G   s   


zBitParser._parse_bitr   N)__name__
__module____qualname__BitParserState__annotations__r   r   r   r   classmethodr
   intstrr$   bytesr2   objectr.   r   r   r   r   r   '   s   
 
$r   c                   @   s  e Zd ZU ddgZeedd eedd eedd eedd	 eed
d eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eed d! eed"d# eed$d% ddgZeedd& eedd' eedd( eedd) eed*d+ eed,d- eed.d/ eed0d1 eed2d3 eed4d5 eed6d7 eed8d9 eed:d; eed<d eed=d> eed?d@ eedAdB eedCdD eedEdF eedGdH eedIdJ eedKdL eedMd eedNdO eedPdQ eedRdS eedTdU eedVdW eedXdY eedZd[ eed\d] eed^d_ eed`da eedbdc eeddde eedfdg eedhdi eedjdk eedldm eedndo eedpdq eedrds eedtdu eedvdw eedxdy eedzd{ eed|d} eed~d eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eeddá eeddš eeddǡ eeddɡ eeddˡ eedd͡ eeddϡ eeddѡ eeddӡ eeddա eeddס eedd١ eeddۡ eeddݡ eeddߡ eedd eedd eedd eedd eedd eedd eedd eedd ddgZeedd eedd eedd eedd eed*d eed,d eed.d eed0d eed2d eed4d eed6dO eed8d eed:d eed<d{ eed=d eed?d eedAd eedCd eedEd eedGd eedId eedKd  eedMd eedNd eedPd eedRd eedTd eedVd eedXd eedZd eed\d	 eed^d
 eed`d eedbd eeddd eedfd eedhd eedjd eedld eednd eedpd eedrd eedtd eedvd eedxd eedzd eed|d eed~d eedd eedd eedd eedd eedd eedd  eedd! eedd" eedd# eedd$ eedd% eedd& eedd' eedd( eedd) eedd* eedd eedd+ eedd, eedd- eedd. eedd/ eedd0 eedd1 eedd2 eedd3 eedd4 eedd5 eedd6 eedd7 eedd8 eedd9 eedd: eedd; eedĐd< eedƐd= eedȐd> eedʐd? eed̐d@ eedΐdA eedАdB eedҐdC eedԐdD eeddס eedd١ eeddۡ eeddݡ eeddߡ eedd eedd eedd eedd eedd eedd eedd eedd ddgZeedd eedEdE eed	d	 eedd eedFdF eedGdH eedId] eedJd[ eedKdL eedMdN eedOdP eedQdR eedSdT eedUdV G dWdX dXe	Z
G dYdZ dZe	ZG d[d\ d\e	Zeed]< dd_ed`edadfdbdcZddedadfdedfZdgedaefdhdiZdjedaefdkdlZdjedaefdmdnZdoee daefdpdqZdaefdrdsZdtedaefdudvZddwdxZdyedoee dadfdzd{Z dd|d}Z!dd~dZ"dedadfddZ#dddZ$dededadfddZ%doedadfddZ&dS (  CCITTG4ParserNr   r   r   Z011Z010hZ001r!   Z0001r-   Z000011Z000010   Z0000011Z0000010uZ
0000001111x1Z
0000001000Zx2Z
0000001001Zx3Z
0000001010Zx4Z
0000001011Zx5Z
0000001100Zx6Z
0000001101Zx7Z
0000001110eZ000000000001000000000001Z00110101Z000111Z0111Z1000r,   Z1011   Z1100   Z1110   Z1111r+   Z10011	   Z10100
   Z00111   Z01000   Z001000      Z110100   Z110101r*   Z101010   Z101011   Z0100111   Z0001100   Z0001000   Z0010111      Z0000100   Z0101000   Z0101011   Z0010011   Z0100100   Z0011000   Z00000010   Z00000011   Z00011010r)   Z00011011!   Z00010010"   Z00010011#   Z00010100$   Z00010101%   Z00010110&   Z00010111'   Z00101000(   Z00101001)   Z00101010*   Z00101011+   Z00101100,   Z00101101-   Z00000100.   Z00000101/   Z000010100   Z000010111   Z010100102   Z010100113   Z010101004   Z010101015   Z001001006   Z001001017   Z010110008   Z010110019   Z01011010:   Z01011011;   Z01001010<   Z01001011=   Z00110010>   Z00110011?   Z00110100r(   Z11011r'   Z10010   Z010111   Z0110111i@  Z00110110i  Z00110111i  Z01100100i   Z01100101i@  Z01101000i  Z01100111i  Z	011001100i   Z	011001101i@  Z	011010010i  Z	011010011i  Z	011010100i   Z	011010101i@  Z	011010110i  Z	011010111i  Z	011011000i   Z	011011001i@  Z	011011010i  Z	011011011i  Z	010011000i   Z	010011001i@  Z	010011010i  Z011000i  Z	010011011i   Z00000001000i@  Z00000001100i  Z00000001101i  Z000000010010i   Z000000010011i@  Z000000010100i  Z000000010101i  Z000000010110i 	  Z000000010111i@	  Z000000011100i	  Z000000011101i	  Z000000011110i 
  Z000000011111Z
0000110111Z1110Z0011Z0010Z00011Z000101Z000100Z0000101Z0000111Z00000111Z	000011000Z
0000010111Z
0000011000Z00001100111Z00001101000Z00001101100Z00000110111Z00000101000Z00000010111Z00000011000Z000011001010Z000011001011Z000011001100Z000011001101Z000001101000Z000001101001Z000001101010Z000001101011Z000011010010Z000011010011Z000011010100Z000011010101Z000011010110Z000011010111Z000001101100Z000001101101Z000011011010Z000011011011Z000001010100Z000001010101Z000001010110Z000001010111Z000001100100Z000001100101Z000001010010Z000001010011Z000000100100Z000000110111Z000000111000Z000000100111Z000000101000Z000001011000Z000001011001Z000000101011Z000000101100Z000001011010Z000001100110Z000001100111Z000011001000Z000011001001Z000001011011Z000000110011Z000000110100Z000000110101Z0000001101100Z0000001101101Z0000001001010Z0000001001011Z0000001001100Z0000001001101Z0000001110010Z0000001110011Z0000001110100Z0000001110101Z0000001110110Z0000001110111Z0000001010010Z0000001010011Z0000001010100Z0000001010101Z0000001011010Z0000001011011Z0000001100100Z0000001100101Z01Z00001Z00000Z000001ZT00ZT10ZT000Z	000000011ZT100Z	000000010ZT0000Z
0000000011ZT1000Z
0000000010ZT00000Z00000000011ZT10000Z00000000010c                   @      e Zd ZdS )zCCITTG4Parser.EOFBNr8   r9   r:   r   r   r   r   EOFBN      r   c                   @   r   )zCCITTG4Parser.InvalidDataNr   r   r   r   r   InvalidDataQ  r   r   c                   @   r   )zCCITTG4Parser.ByteSkipNr   r   r   r   r   ByteSkipT  r   r   _colorFwidth	bytealignr   c                 C   s"   t |  || _|| _|   d S r   )r   r   r   r   reset)r   r   r   r   r   r   r   Y  s
   
zCCITTG4Parser.__init__r   c              	   C   sh   t |D ]-}zdD ]	}| ||@  q	W q | jy&   | j| _| j| _Y q | jy1   Y  d S w d S r%   )r   r.   r   _parse_moder   MODEr   r   r/   r   r   r   r2   `  s   zCCITTG4Parser.feedbytesmodec                 C   s   |dkr|    |   | jS |dkr#d| _| j| _| jr | jS | jS |dkr.| j	| _| j
S |dkr5| jt|trF| | |   | jS | |)Nr!   rD   r   rH   rJ   )_do_pass_flush_liner   _n1_parse_horiz1r   r   WHITEBLACK_parse_uncompressedUNCOMPRESSEDr   r5   r>   _do_verticalr   )r   r   r   r   r   r   l  s(   


zCCITTG4Parser._parse_modenc                 C   sP   |d u r| j |  j|7  _|dk rd| _d| j | _| j| _| jr%| jS | jS )Nr(   r   r   )r   r   _n2r   _parse_horiz2r   r   r   r   r   r   r   r   r     s   zCCITTG4Parser._parse_horiz1c                 C   sh   |d u r| j |  j|7  _|dk r+d| j | _| j| _| | j| j |   | jS | jr1| j	S | j
S )Nr(   r   )r   r   r   r   r   _do_horizontalr   r   r   r   r   r   r   r   r   r     s   zCCITTG4Parser._parse_horiz2r   c                 C   sR   |s| j |dr!| j| _t|d | _| |dd   | jS | | | jS )NTr   r-   )	r   
startswithr   r   r>   r   _do_uncompressedr   r   )r   r   r   r   r   r     s   

z!CCITTG4Parser._parse_uncompressedc                 C   s    d dd | jd | j D S )N c                 s       | ]}t |V  qd S r   r?   .0r"   r   r   r   	<genexpr>      z*CCITTG4Parser._get_bits.<locals>.<genexpr>)join_curline_curposr   r   r   r   	_get_bits  s    zCCITTG4Parser._get_bitsr#   c                 C   s   |dk rdd dd | jD  S t| j|kr%d dd | jD d S d dd | jd | D d t| j|  d	 d d
d | j|d d  D  S )Nr   z[]r   c                 s   r   r   r   r   r   r   r   r     r   z-CCITTG4Parser._get_refline.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r     r   c                 s   r   r   r   r   r   r   r   r     r   []c                 s   r   r   r   r   r   r   r   r     r   r   )r   _refliner   r?   )r   r#   r   r   r   _get_refline  s    zCCITTG4Parser._get_reflinec                 C   s8   d| _ tddg| j | _|   | j| _| j| _d S )Nr   r"   r   )	_yarrayr   r   _reset_liner   r   r   r   r   r   r   r   r     s   zCCITTG4Parser.resetyc                 C   s   t |ddd |D  d S )Nr   c                 s   r   r   r   r   r   r   r   r     r   z,CCITTG4Parser.output_line.<locals>.<genexpr>)printr   )r   r   r   r   r   r   output_line  s   zCCITTG4Parser.output_linec                 C   s.   | j | _tddg| j | _ d| _d| _d S )Nr"   r   rC   )r   r   r   r   r   r   r   r   r   r   r     s
   zCCITTG4Parser._reset_linec                 C   sB   | j | jkr| | j| j |  jd7  _|   | jr| jd S Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r     s   zCCITTG4Parser._flush_linedxc                 C   s   | j d }	 |dkr| jdkr| j| | jkrn!n|t| jkr!n| j|d  | jkr4| j| | jkr4n|d7 }q||7 }td| j }tdt| j|}||k r_t||D ]}| j| j|< qUn||k rqt||D ]}| j| j|< qh|| _ d| j | _d S r4   )	r   r   r   r   maxminr   r   r   )r   r   rI   Zx0r3   r   r   r   r     s4   
zCCITTG4Parser._do_verticalc                 C   s  | j d }	 |dkr| jdkr| j| | jkrn!n|t| jkr!n| j|d  | jkr4| j| | jkr4n|d7 }q	 |dkrM| jdkrL| j| | jkrLn!n|t| jkrUn| j|d  | jkrh| j| | jkrhn|d7 }q:t| j |D ]}| j| j|< qs|| _ d S r4   )r   r   r   r   r   r   )r   rI   r3   r   r   r   r     s:   
zCCITTG4Parser._do_passn1n2c                 C   s   | j dk rd| _ | j }t|D ]}t| j|kr n| j| j|< |d7 }qt|D ]}t| j|kr4 nd| j | j|< |d7 }q)|| _ d S )Nr   r   )r   r   r   r   r   )r   r   r   r3   _r   r   r   r     s   


zCCITTG4Parser._do_horizontalc                 C   s4   |D ]}t || j| j< |  jd7  _|   qd S r   )r>   r   r   r   )r   r   cr   r   r   r   $  s
   
zCCITTG4Parser._do_uncompressedFr7   )'r8   r9   r:   r   r   r$   r   r   r   	Exceptionr   r   r   r>   r<   boolr   r@   r2   rA   r;   r   r   r   r   r   r?   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   rB   T   s  
 
$$	 rB   c                	   @   sR   e Zd Z	ddedededdfddZdefd	d
Zdedee ddfddZ	dS )CCITTFaxDecoderFr   r   reversedr   Nc                 C   s    t j| ||d || _d| _d S )Nr       )rB   r   r   _buf)r   r   r   r   r   r   r   r   -  s   zCCITTFaxDecoder.__init__c                 C   s   | j S r   )r   r   r   r   r   close5  s   zCCITTFaxDecoder.closer   r   c                 C   sz   t  ddgt|d d  }| jrdd |D }t|D ]\}}|r1||d   d|d  7  < q|  j| 7  _d S )NBr   rM   r+   c                 S   s   g | ]}d | qS )r   r   r   r   r   r   
<listcomp>;  s    z/CCITTFaxDecoder.output_line.<locals>.<listcomp>r&   )r   r   r   	enumerater   tobytes)r   r   r   Zarrr#   r"   r   r   r   r   8  s   zCCITTFaxDecoder.output_line)FF)
r8   r9   r:   r>   r   r   r@   r   r	   r   r   r   r   r   r   ,  s    
r   paramsc                 C   sl   | d}|dkr)tt| d}tt| d}tt| d}t|||d}nt|||  | S )NKrC   ColumnsZEncodedByteAlignZBlackIs1)r   r   )getr   r>   r   r   
ValueErrorr2   r   )r   r   r   colsr   r   parserr   r   r   ccittfaxdecodeC  s   

r   argvc           
      C   s   | dd  sdd l }|  d S G dd dt}| dd  D ]'}t|d}|d\}}}}}}|t|}	|	|  |	  |  qd S )Nr   r   c                   @   sH   e Zd ZddededdfddZded	ee ddfd
dZdddZdS )zmain.<locals>.ParserFr   r   r   Nc                 S   s.   dd l }tj| ||d || jdf| _d S )Nr   r   i  )pygamerB   r   ZSurfacer   img)r   r   r   r   r   r   r   r   Y  s   zmain.<locals>.Parser.__init__r   r   c                 S   s@   t |D ]\}}|r| j||fd q| j||fd qd S )N)   r   r   )r   r   r   )r   r   Zset_at)r   r   r   r3   r"   r   r   r   r   `  s
   z main.<locals>.Parser.output_linec                 S   s   dd l }|j| jd d S )Nr   zout.bmp)r   imagesaver   )r   r   r   r   r   r   h  s   zmain.<locals>.Parser.closer   r7   )	r8   r9   r:   r>   r   r   r	   r   r   r   r   r   r   ParserX  s    r   rb.)	unittestmainrB   opensplitr>   r2   readr   )
r   r   r   pathfpr   kwrD   r   r   r   r   r   Q  s   

r   )r   typingr   r   r   r   r   r   r   r	   r
   r   r@   r>   r   r;   r   rB   r   r?   rA   r   r   r   r   r   r   <module>   s   0-   [