
    JՁj;                     2   U 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 d ddd!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%Zd#ed$eeeeef   f   fd&Zd#ed$eeeef   e e   f   fd'Z!d#ed$e"fd(Z#d)e"d*e$d+e$d,eeeef   d-f   d.eeef   d/e e   d$ee$e$eeeef   d-f   f   fd0Z%d1Z&d2Z'd3Z(e'd4z  Z)e(d4z  Z*d5ed$d-fd6Z+d7e"d8ed$d-fd9Z,d.eeef   d:ed$efd;Z-d)e"d.eeef   d/e e   d,eeeef   d-f   d$eeeef   d-f   f
d<Z.d)e"d.eeef   d/e e   d$d-fd=Z/d#ed.eeef   d/e e   d$eeeef   e e   f   fd>Z0y-)?    )Error)	unhexlify)partial)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-Hcp932)z/UniGB-UTF16-Vz/90ms-RKSJ-Hz/90ms-RKSJ-Vz/UniJIS-UTF16-Hz/UniJIS-UTF16-V_predefined_cmapftreturnc                     t        |       }t        |       \  }}t        |t              r|D ]  }|dk  s	t	        |      ||<    ||fS )N   )_parse_encoding_parse_to_unicode
isinstancedictchr)r   encodingmap_dict	int_entryxs        2/tmp/pip-target-jj2dfcxx/lib/python/pypdf/_cmap.pyget_encodingr)   -   sY     r"H+B/Hi (D! 	%ACx!!f	% X    c                    g }d| vrxd| v rOt        t        | d         t        v r6t        t	        t        d      t        t        t        | d                        S t        t	        t        d      t        d               S t        t        t        t        t        f   | d   j                               }t        |t              rF	 |t        v rt        |   j                         }n$|t        v r
t        |   }nd|v rd}nt        d      nUt        |t              r.d
|v r*	 t        t        t        |d
            j                         }nt        d   j                         }t        |t              rQd|v rMd}t        t        |d         D ]5  }t        |t               r|}	 |t#        |      k  rt$        |   ||<   |dz  }7 t        |t&              rt        t	        t        d      |            }|S # t        $ r t        dt        |	       |}Y w xY w# t        $ r, t        dt        |	       t        d   j                         }Y w xY w# t        $ r |||<   Y w xY w)Nz	/Encodingz	/BaseFont   z/StandardEncodingz-UCS2-r   z	not foundz2Advanced encoding %(encoding)s not implemented yet)sourcer$   z/BaseEncodingz/Differencesr   r	   )r   strr   r"   zipranger   r   r   
get_objectr!   copyr   	Exceptionr   __name__intlenr
   list)r   r$   encr'   os        r(   r   r   ?   sY    79H ""c2k?!;?O!OE#J 0c2k?1K LM  c
,-@AB
 	
 59c#Z/0"[/2L2L2N5C #s	 &&+C0557((+C0S&,, 
C)	*#/E	D'S#o2F(GHMMOH $$78==?#'(^s-B&N(;< 		A!S!$3x=(&21o Q		 (D!E#J12O;  	MV^ilmH	  	DD( ((;<AACH	D$ ! $"#HQK$s7   AG. (H I	.HH2II	IIc           	         i }g }d| vr&| j                  dd      dk(  rt        | ||      S i g fS d}d}d }t        |       }|j                  d      D ]%  }t	        |j                  d      |||||      \  }}}' |j                  dd        ||fS )	N
/ToUnicodez/Subtype z/Type1F   
s    	)get_type1_alternative
prepare_cmsplitprocess_cm_linestrippop)r   r%   r&   
process_rgprocess_charmultiline_rgcmlines           r(   r    r       s    
  "H I266*b!X-%b(I>>2vJL 	  
BB 
1@JJv2
.
L,
 LLTYr*   c                 
   | d   }t        |t              r"t        t        | d         j	                         }nd}t        |t
              r|j                         }|j                         j                  dd      j                  dd      j                  dd      j                  d	d
      j                  dd      j                  dd      }|j                  d      }t        t        |            D ]P  }||   j                  d      }|dk\  s|dk(  rd}n||   d | j                  dd      }|dz   ||   |dz   d  z   ||<   R dj                  |      j                  dd      j                  dd      j                  dd      }|S )Nr;   s,   beginbfrange
<0000> <0001> <0000>
endbfrange   beginbfchars   
beginbfchar
	   endbfchars   
endbfchar
   beginbfranges   
beginbfrange

   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
   <   >r      .    r*   r	      [s    [    ]s    ]
    r=   )r!   r   r   r   get_datar.   encoderD   replacerB   r0   r6   findjoin)r   turI   llijcontents          r(   rA   rA      so   	L	B"l#%r,'78AAC ?"cYY[ 	
	!3	4	/	0	"5	6	 1	2		!		!  
$B3r7^ 	4qEJJt6Av Q%)++D#6dNRU1q57^3BqE	4 
2	v		x	 			  Ir*   rJ   rF   rG   rH   Nr%   r&   c                    | dk(  s| d   dk(  r|||fS | j                  dd      } d| v rd}n7d| v rd	}n0d
| v rd}n)d| v rd	}n"|r	 t        | |||      }n|r	 t        | ||       |||fS # t        t        f$ r}t	        dt
        | |       Y d }~,d }~ww xY w# t        t        f$ r}t	        dt
        | |       Y d }~[d }~ww xY w)Nr*   r   %      	rS   rN   TrO   FrL   rM   z(Skipping broken line %(line)r: %(error)s)r-   rJ   error)rY   parse_bfrange
ValueError
IndexErrorr   r4   parse_bfchar)rJ   rF   rG   rH   r%   r&   rd   s          r(   rC   rC      s     s{d1gm<55<<t$D$
	$	
	4					p(xLQL 
	px3 |\11 J' 	pEh]ainoo	p
 J' 	pEh]ainoo	ps0   A( B (B7BBC&B>>Ci    i      sizec                 B    | t         kD  rt        d|  dt          d      y )Nz'Maximum /ToUnicode size limit reached:  > .)MAPPING_DICTIONARY_SIZE_LIMITr   )rk   s    r(   _check_mapping_sizerp      s.    ++"I$sSpRqqr stt ,r*   tokenlimitc           	          t        |       }||kD  r3t        dt        dij                  |d      }t	        d| d| d| d      y )Ncodestringrq   zMaximum /ToUnicode z length exceeded: rm   rn   )r6   MAX_CMAP_CODE_BYTES_LIMITMAX_CMAP_STRING_BYTES_LIMITr?   r   )rq   rr   token_lengthdescriptions       r(   _check_token_lengthrz      se    u:Le%v'
 #eW
 	
  !+.@cRWQXXYZ
 	
 r*   rt   c                 j    |j                  | d   d      j                  | d   dk(  rdd      S dd      S )Nr>   bigr	   charmapr   surrogatepass)to_bytesdecoder%   rt   s     r(   __parse_bfrange__decoder     sG    
 =="u-44b\Q&	 ,7 r*   c                    | j                         }d}t        |      }t        |       t        t        j
                  dd      }|s|d   }|d   }	|D ]b  }
|
dk(  rd} nt        |
t        	       |dz  }t        |        |t        |
            |t        ||
      <   |j                  |       |dz  }d nt        |d   t        	       t        |d   t        	       t        |d   d      }t        |d   d      }	t        t        |d         t        |d               }|dz   dz  |d<   |d   dk(  rk|dd  D ]b  }
|
dk(  rd} nt        |
t        	       |dz  }t        |        |t        |
            |t        ||
      <   |j                  |       |dz  }d nt        |d   t        	       t        |d   d      }dt        dt        |d               z  }d}t        d|	|z
  dz         }t        ||z          ||	k  rVt        ||z        }t        |t        	        ||      |t        ||
      <   |j                  |       |dz  }|dz  }||	k  rV|rd S ||	fS )NFr   r~   )r$   errorsr   r	   rU   T)rr   r      rj   r>   rT      s   %%0%dX   )rB   r6   rp   r   bytesr   rz   rw   r   r   appendrv   r5   max)rJ   r%   r&   rH   lstclosure_foundentry_countdecode_utf16absqnbicfmt2
range_sizedestinations                   r(   re   re     s    **,CMi.K$5<<+oVLOO 	BTz $*EF1K, Yr]+ 'B QFA	 	CF*CDCF*CDAOAO#c!f+s3q6{+aA~q6T>!"g :$(M#B.IJq #K0 !2/ +XAF   #Q  A.IJCFBAs1c#a&k22D MQA	*Jj 89q&'q1#K7PQ !- +XAF   #QQ q& !4,q!f,r*   c                 j   | j                  d      D cg c]  }|s|	 }}t        |      dz  }t        t        |      |z          t        |d         dz  |d<   t        |      dkD  rd}|d   dk7  r2	 t        |d         j	                  t        |d         dk  rd	nd
d      }||t        |d         j	                  |d   dk(  rd	nd
d      <   |j                  t        |d   d             |dd  }t        |      dkD  ry y c c}w # t
        $ r }t        dt        ||d          Y d }~d }~ww xY w)NrS   rj   r   r>   r	   r<   rR   r   r}   r   r~   z5Got invalid hex string: %(exception)s (%(lst_value)r))r-   	exception	lst_valuer   )
rB   r6   rp   r   r   BinasciiErrorr   r4   r   r5   )rJ   r%   r&   r'   r   	new_countmap_tor   s           r(   rh   rh   W  s@   jj&
,!1
,C
,CAII23s1v;!#HRL
c(Q,q6T>
"3q6*11!$SVqIk? 	 	c!f$$%b\Q.	K	

 	SVR)!"g+ c(Q,	 - ! K#'!!f	 s"   DD41D	 		D2D--D2c           	         d| vr||fS t        t        | d         j                  d      }t        |      r||fS |J d       |j	                         j                         }|j                  d      d   }|j                  d      }t        |      dk  r||fS |d   }|j                  d	d
      j                  d
      }|D ]  }|j                  d      s|j                  d      D cg c]
  }|dk7  s	| }	}t        |	      dk  st        |	      dkD  r	|	d   dk7  r^	 t        |	d         }
	 t        |	d   j                            }||t        |
      <   |j!                  |
        ||fS c c}w # t        $ r Y w xY w# t        $ rH |	d   j                  d      r.	 t        t        |	d   dd  d            }n# t        $ r Y Y w xY wY Y w xY w)Nz/FontDescriptorz	/FontFilemypys   eexec
r   s	   /Encodingrj   r	   rV   r=   s   duprS   r*   r   s   puts   /unir   r   )r   r   r?   r   r1   rW   rB   r6   rY   
startswithr5   rf   r
   r   KeyErrorr#   r   )r   r%   r&   ft_desctxtencoding_partlinesli_wwordsr^   vs               r(   r@   r@   t  s   
 """#R(9%:;??LGw""&&




'
'
)C
))J

"CIIl+M
=A""

CKKu%++E2E  == "$((4.>BB#IR>E>5zA~#e*q.U1X5GaM	 q!23  !HSVQ) * Y' ?
    8&&w/!E!HQRL" 56% ! ! 	 sT   (
E-3E-E2.F2	E>=E>GF;:G;	G	GG		GG)1binasciir   r   r   	functoolsr   typingr   r   r   _codecsr
   r   _utilsr   r   r   r   genericr   r   r   r   r   r   r"   r.   __annotations__tupler5   r)   r   r7   r    r   rA   boolrC   ro   MAX_CMAP_CODE_BYTESMAX_CMAP_STRING_BYTESrv   rw   rp   rz   r   re   rh   r@    r*   r(   <module>r      s   +   # # 3 0 % $;$;$ $ 	$
 8$ 8$ %$ %$ 	$ 	$ '$ '$ G$ G$ {$  {!$" i#$$  ""/$ $sCx. 8
5d38n$%tCH~56$??
3S#X?D  
4S>49$% F&# & &R2
22 2 c3h-.	2
 38n2 Cy2 4uU38_d23342B !( 
   /!3 3a7 uc ud u


u 

S 

T 

d38n C C >-
>-38n>- Cy>- c3h-.	>-
 5c?D !>-Bu S#X 49 QU :''38n' Cy' 4S>49$%	'r*   