o
    
zi                     @   s~   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 eZG dd de
ZG dd	 d	Zd
edefddZdS )    N)Iterator)BytesIO)BinaryIOcast)PDFEOFErrorPDFExceptionc                   @   s   e Zd ZdS )CorruptDataErrorN)__name__
__module____qualname__ r   r   K/home/air/biblejyuku/back/venv/lib/python3.10/site-packages/pdfminer/lzw.pyr      s    r   c                   @   sT   e Zd ZdeddfddZdedefddZd	edefd
dZde	e fddZ
dS )
LZWDecoderfpreturnNc                 C   s(   || _ d| _d| _d| _g | _d | _d S )Nr      	   )r   buffbposnbitstableprevbuf)selfr   r   r   r   __init__   s   
zLZWDecoder.__init__bitsc                 C   s   d}	 d| j  }||kr'||> | j|| ? d|> d @ B }|  j |7  _ 	 |S ||> | jd|> d @ B }||8 }| jd}|sBtt|| _d| _ q)Nr      r   )r   r   r   readr   ord)r   r   vrxr   r   r   readbits   s    
"
zLZWDecoder.readbitscodec                 C   s2  d}|dkr$dd t dD | _| jd  | jd  d| _d| _|S |dkr+	 |S | js;tt| j|  }| _|S |t| jk rXtt| j| }| j| j|d d   n |t| jkrv| j| j| jd d   tt| j| }ntt| j}|dkrd	| _n|d
krd| _n|dkrd| _|| _|S )N       c                 S   s   g | ]}t |fqS r   )bytes).0cr   r   r   
<listcomp>5   s    z#LZWDecoder.feed.<locals>.<listcomp>r   i  r   i  
   i     i     )	ranger   appendr   r   r   r%   lenr   )r   r"   r    table_lengthr   r   r   feed2   s<   
zLZWDecoder.feedc              	   c   st    	 z|  | j}W n
 ty   Y d S w z| |}W n
 ty&   Y d S w |V  td| j||| jdd   q)Nr   z&nbits=%d, code=%d, output=%r, table=%ri  )r!   r   EOFErrorr0   r   loggerdebugr   )r   r"   r    r   r   r   runQ   s*   zLZWDecoder.run)r	   r
   r   r   r   intr!   r%   r0   r   r4   r   r   r   r   r      s
    	r   datar   c                 C   s   t | }t| }d|S )Nr#   )r   r   r4   join)r6   r   sr   r   r   	lzwdecodeg   s   
r9   )loggingcollections.abcr   ior   typingr   r   pdfminer.pdfexceptionsr   r   	getLoggerr	   r2   r   r   r%   r9   r   r   r   r   <module>   s    
X