o
    j1                     @   s  U d dl Z d dl mZ d dl 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 dd	lmZ dd
lmZmZmZmZmZ i ddddddddddddddddddddddddddddddddd dd!diZeeef ed"< d#ed$eeeeeef f eeef f fd%d&Zd#ed$eeeeef f fd'd(Zd#ed$eeeef e e f fd)d*Z!d#ed$e"fd+d,Z#d-e"d.e$d/e$d0edeeef f d1eeef d2e e d$ee$e$edeeef f f fd3d4Z%d5Z&d6ed$dfd7d8Z'd-e"d1eeef d2e e d0edeeef f d$edeeef f f
d9d:Z(d-e"d1eeef d2e e d$dfd;d<Z)d#ed1eeef d2e e d$eeeef e e f fd=d>Z*dS )?    N)Error)	unhexlify)ceil)AnyUnioncast   )adobe_glyphscharset_encoding)logger_errorlogger_warning)LimitReachedError)DecodedStreamObjectDictionaryObject
NullObjectStreamObjectis_null_or_nonez/Identity-H	utf-16-bez/Identity-Vz	/GB-EUC-Hgbkz	/GB-EUC-Vz/GBpc-EUC-Hgb2312z/GBpc-EUC-Vz
/GBK-EUC-Hz
/GBK-EUC-Vz/GBK2K-Hgb18030z/GBK2K-Vz
/ETen-B5-Hcp950z
/ETen-B5-Vz/ETenms-B5-Hz/ETenms-B5-Vz/UniCNS-UTF16-Hz/UniCNS-UTF16-Vz/UniGB-UTF16-Hz/UniGB-UTF16-V_predefined_cmapftreturnc                 C   sD   t | }t| \}}t|tr|D ]}|dkrt|||< q||fS )N   )_parse_encoding_parse_to_unicode
isinstancedictchr)r   encodingmap_dict	int_entryx r%   Q/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/pypdf/_cmap.pyget_encoding)   s   
r'   c              	   C   s  g }d| vr)d| v r%t t| d tv r%tttdtt t| d  }|S d}|S t ttttf | d 	 }t
|trpz!|tv rHt|  }n|tv rQt| }nd|v rXd}ntdW nE tyo   tdt|d	 |}Y n4w t
|trd
|v rztt t|d
   }W n ty   tdt|d	 td  }Y nw td  }t
|trd|v rd}t t|d D ]*}t
|tr|}qz|t|k rt| ||< W n ty   |||< Y nw |d7 }qt
|trtttd|}|S )Nz	/Encodingz	/BaseFont   charmapz-UCS2-r   z	not foundz2Advanced encoding %(encoding)s not implemented yet)sourcer!   z/BaseEncodingz/StandardEncodingz/Differencesr   r   )r   strr
   r   zipranger   r   r   
get_objectr   copyr   	Exceptionr   __name__intlenr	   list)r   r!   encr$   or%   r%   r&   r   ;   sj   




r   c                 C   s~   i }g }d| vr|  dddkrt| ||S i g fS d}d}d }t| }|dD ]}t|d|||||\}}}q)||fS )N
/ToUnicodez/Subtype z/Type1F   
s    	)get_type1_alternative
prepare_cmsplitprocess_cm_linestrip)r   r"   r#   
process_rgprocess_charmultiline_rgcmliner%   r%   r&   r   v   s*   	r   c                 C   s  | d }t |trtt| d  }nd}t |tr| }| ddddddd	d
dddd}|	d}t
t|D ]0}|| d}|dkru|dkrYd}n|| d | dd}|d || |d d   ||< qEd|dddddd}|S )Nr7   s,   beginbfrange
<0000> <0001> <0000>
endbfrange   beginbfchars   
beginbfchar
	   endbfchars   
endbfchar
   beginbfranges   
beginbfrange

   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
   <   >r      .        r      [s    [    ]s    ]
    r9   )r   r   r   r   get_datar+   encoder?   replacer=   r-   r3   findjoin)r   turC   llijcontentr%   r%   r&   r<      s:   


	 r<   rD   r@   rA   rB   r"   r#   c              
   C   s   | dks
| d dkr|||fS |  dd} d| v rd}nGd| v r#d	}n@d
| v r*d}n9d| v r1d	}n2|r[z	t| |||}W n& tjyZ } ztd| d| t W Y d }~nd }~ww |rct| || |||fS )NrM   r   %      	rL   rG   TrH   FrE   rF   zSkipping broken line z: )rS   parse_bfrangebinasciir   r   r1   parse_bfchar)rD   r@   rA   rB   r"   r#   errorr%   r%   r&   r>      s*   
"
r>   i sizec                 C   s"   | t krtd|  dt  dd S )Nz'Maximum /ToUnicode size limit reached: z > .)MAPPING_DICTIONARY_SIZE_LIMITr   )ra   r%   r%   r&   _check_mapping_size   s   rd   c                 C   s\  dd |  dD }d}t|}t| |d urad|d d  }|d }|d	 }	|D ]5}
|
d
kr4d} n,|d	7 }t| t|
dd|t|| |d d	krRdndd< || |d	7 }q*nt|d d}t|d	 d}	tt|d t|d	 }t|d |d< d|d d  }|d dkr|dd  D ]5}
|
d
krd} n,|d	7 }t| t|
dd|t|| |d d	krdndd< || |d	7 }qnVt|d d}dtdt|d  }d}td|	| d	 }t||  ||	kr%t|| dd|t|| |d d	krdndd< || |d	7 }|d	7 }||	ks|r*d S ||	fS )Nc                 S      g | ]}|r|qS r%   r%   .0r$   r%   r%   r&   
<listcomp>       z!parse_bfrange.<locals>.<listcomp>rL   Fs   %%0%dX   r   r   rO   Tr   surrogatepassr)      rN         )	r=   r3   rd   r   decodeappendr2   maxr   )rD   r"   r#   rB   lstclosure_foundentry_countfmtabsqnbicfmt2
range_sizer%   r%   r&   r]      s   






r]   c              
   C   s*  dd |  dD }t|d }tt||  t|d d |d< t|dkrd}|d d	krgzt|d t|d d
k rAdndd}W n  tyf } ztd|d|d dt W Y d }~nd }~ww ||t|d |d dkrwdndd< |t	|d d |dd  }t|dks(d S d S )Nc                 S   re   r%   r%   rf   r%   r%   r&   rh   +  ri   z parse_bfchar.<locals>.<listcomp>rL   rk   r   rj   r   r8   rK   ro   r)   r   rl   zGot invalid hex string: z ()rm   )
r=   r3   rd   r   rp   BinasciiErrorr   r1   rq   r2   )rD   r"   r#   rs   	new_countmap_to	exceptionr%   r%   r&   r_   *  s0   (r_   c           
      C   sp  d| vr||fS t t| d d}t|r||fS |d us"J d|  }|dd }|dd }|dd	d	}|D ]r}|d
rdd |dD }t	|dkr_|d dkr_qAzt
|d }W n	 typ   Y qAw z
t|d   }	W n, ty   |d drztt
|d dd  d}	W n ty   Y Y qAw Y qAY nw |	|t|< || qA||fS )Nz/FontDescriptorz	/FontFilemypys   eexec
r   s	   /Encodingr   rP   r9   s   dupc                 S   s   g | ]}|d kr|qS )rM   r%   )rg   _wr%   r%   r&   rh   S  s    z&_type1_alternative.<locals>.<listcomp>rL   rn   s   putrk   s   /uniro   rm   )r   r   r:   r   r.   rQ   r=   rS   
startswithr3   r2   
ValueErrorr	   rp   KeyErrorr    rq   )
r   r"   r#   ft_desctxtlinesliwordsrX   vr%   r%   r&   r;   B  sH   

r;   )+r^   r   r   r   mathr   typingr   r   r   _codecsr	   r
   _utilsr   r   errorsr   genericr   r   r   r   r   r   r   r+   __annotations__tupler2   r'   r   r4   r   bytesr<   boolr>   rc   rd   r]   r_   r;   r%   r%   r%   r&   <module>   s   
 	
"

;
!)



&D
