U
    <g                     @   s  d dl Z d dlmZmZmZmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZmZ ddlmZmZ eeeeef d	d
dZd-e	edeee eeef f ed dddZededededededededededededededededed ed!ed"d#Zd$Zd.e	edeee eeef f ed dd%d&Zd/eeef edeee eeef f eeef d'd(d)Zeed*d+d,ZdS )0    N)DictListTupleUnion   )_pdfdoc_encoding)
StreamTypelogger_warningread_non_whitespace)STREAM_TRUNCATED_PREMATURELYPdfStreamError   )ByteStringObjectTextStringObject)valuereturnc                    s   t  fdddD S )Nc                 3   s.   | ]&}t  d ||d  dd V  qdS )#r      g     o@N)intlstrip).0ir    8/tmp/pip-unpacked-wheel-wu2fni14/pypdf/generic/_utils.py	<genexpr>   s     zhex_to_rgb.<locals>.<genexpr>)r   r      )tupler   r   r   r   
hex_to_rgb
   s    r   )r   r   )streamforced_encodingr   c                 C   s   |  d g }d}t| }|s&tt|dkr0q\||7 }t|dkr|t|dd d}qt|dkrp|d7 }|dkr|t|dd tt||S )Nr          >r   r   base   0)	readr
   r   r   lenappendr   create_string_objectbytes)r   r    Zarrxtokr   r   r   read_hex_string_from_stream   s"    
r-      
      	         (   )   /   \       %   <r"      [   ]   #   _   &   $)   n   r   t   b   fr3   r4   r5   r6   r7   r8   r9   r"   r:   r;   r<   r=   r>   r?   \   c           
      C   s  |  d}d}g }|  d}|s(tt|dkr<|d7 }nd|dkr\|d8 }|dkrXqnD|dkr|  d}z|t|  W qW n tk
r   d|  krdkrFn n|  d }tdD ]B}|  d}d|  krdkrn n
||7 }q| d	d  qqt	|d
d}|dkr8|t
 | | n
|| Y q|dkrt|  d}|dkrp| d	d Y qd|dd }	t|	t |t
 Y nX |t| qtt||S )Nr   r3   r4   r   r6   r%      7r      r#      s   
zUnexpected escaped string: zutf-8ignore)r&   r   r   r(   __ESCAPE_DICT__KeyErrortellrangeseekr   __BACKSLASH_CODE__decoder	   __name__ordr)   r*   )
r   r    r,   parenstxtZsav_Zntokr   msgr   r   r   read_string_from_stream>   sT    













rX   )stringr    r   c              	   C   s  t | trt| S t | trt |ttfrd}| D ]>}z||| 7 }W q4 tk
rp   |t|fd7 }Y q4X q4t|}| |_|S t |tr|dkrt	| S t| |}| |_|S z| 
tjtjf rt| d}| |_d|_| dd |_|W S | 
dr0t| d	}| |_d|_tj|_|W S | d
d dkrjt| d}| |_d|_tj|_|W S tt| }| |_d|_|W S  tk
r   t	|  Y S X ntddS )a?  
    Create a ByteStringObject or a TextStringObject from a string to represent the string.

    Args:
        string: The data being used
        forced_encoding: Typically None, or an encoding string

    Returns:
        A ByteStringObject

    Raises:
        TypeError: If string is not of type str or bytes.

     charmapr*   zutf-16TNr       zutf-16ber   zutf-16lez3create_string_object should have str or unicode arg)
isinstancestrr   r*   listdict	ExceptionrQ   Z_original_bytesr   
startswithcodecsBOM_UTF16_BEBOM_UTF16_LEZautodetect_utf16Z	utf16_bomdecode_pdfdocencodingZautodetect_pdfdocencodingUnicodeDecodeError	TypeError)rY   r    outr+   objretvalr   r   r   r)   {   sZ    

r)   )
byte_arrayr   c                 C   s>   d}| D ]0}t | }|dkr0tdt|ddd||7 }q|S )NrZ    ZpdfdocencodingrG   z#does not exist in translation table)r   rg   	bytearray)rl   rk   bcr   r   r   rf      s    
rf   )N)N)N)rc   typingr   r   r   r   _codecsr   _utilsr   r	   r
   errorsr   r   _baser   r   r^   floatr   r   r-   rS   rK   rP   rX   r*   r)   rf   r   r   r   r   <module>   s\     ? 

I