
    +Si                         d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
  e j                  e      Z G d de
      Z G d d	      Zd
edefdZy)    N)Iterator)BytesIO)BinaryIOcast)PDFEOFErrorPDFExceptionc                       e Zd Zy)CorruptDataErrorN)__name__
__module____qualname__     U/var/www/html/leadgen/airagagent/rag_env/lib/python3.12/site-packages/pdfminer/lzw.pyr
   r
      s    r   r
   c                   N    e Zd ZdeddfdZdedefdZdedefdZde	e   fd	Z
y)

LZWDecoderfpreturnNc                 X    || _         d| _        d| _        d| _        g | _        d | _        y )Nr      	   )r   buffbposnbitstableprevbuf)selfr   s     r   __init__zLZWDecoder.__init__   s,    		
)+
%)r   bitsc                 X   d}	 d| j                   z
  }||k  r9||z  | j                  ||z
  z	  d|z  dz
  z  z  }| xj                   |z  c_         	 |S ||z  | j                  d|z  dz
  z  z  }||z  }| j                  j                  d      }|st        t        |      | _        d| _         )Nr      r   )r   r   r   readr   ord)r   r   vrxs        r   readbitszLZWDecoder.readbits   s    DIIAqy $YDII!d($;da#PQ		T!	  !V		a1f\ :;	GGLLO%%F		) r   codec                    d}|dk(  rnt        d      D cg c]  }t        |f       c}| _        | j                  j                  d        | j                  j                  d        d| _        d| _        |S |dk(  r	 |S | j                  s&t        t        | j                  |         x}| _        |S |t        | j                        k  rIt        t        | j                  |         }| j                  j                  | j                  |d d z          nq|t        | j                        k(  rS| j                  j                  | j                  | j                  d d z          t        t        | j                  |         }nt        t        | j                        }|dk(  rd| _        n|dk(  rd	| _        n|d
k(  rd| _        || _        |S c c}w )Nr      r   i  r!   i  
   i     i     )	rangebytesr   appendr   r   r   lenr
   )r   r(   r&   ctable_lengths        r   feedzLZWDecoder.feed2   s   3;/4Sz:!%+:DJJJd#JJd#DLDJ, + S[( ' #E4::d+;<<A$ ! c$**o%

4 01

!!$,,2A"67TZZ(

!!$,,bq1A"AB

4 01&&tzz?Ls"
%
%
DL5 ;s   Gc           	   #     K   	 	 | j                  | j                        }	 | j                  |      }| t
        j                  d| j                  ||| j                  dd         c# t        $ r Y y w xY w# t        $ r Y y w xY ww)Nz&nbits=%d, code=%d, output=%r, table=%ri  )r'   r   EOFErrorr4   r
   loggerdebugr   )r   r(   r&   s      r   runzLZWDecoder.runQ   s     }}TZZ0IIdO GLL8



34     $ sD   BA' A6 5B'	A30B2A33B6	B?BBB)r   r   r   r   r   intr'   r/   r4   r   r9   r   r   r   r   r      sK    *8 * *S S 2  >Xe_ r   r   datar   c                 l    t        |       }t        |      j                         }dj                  |      S )Nr   )r   r   r9   join)r;   r   ss      r   	lzwdecoder?   g   s+    	B2A88A;r   )loggingcollections.abcr   ior   typingr   r   pdfminer.pdfexceptionsr   r   	getLoggerr   r7   r
   r   r/   r?   r   r   r   <module>rF      sR     $  ! <			8	$	| 	U UpE e r   