
    i%                         S r SSKrSSKJr  S rSrS rS rS r	S	 r
S
 rS rS rS rS rS rSS jrS rSS jrSR)                  S S 5       5      rS rS rS rS r " S S5      rg)z
Miscellaneous Routines.
    N)maxsizec                    US:w  a  [        SU-  5      eX-  U-  S-  nSnSnSU-  n[        S[        U5      US-   5       H  nXFUS-    n	US-  nXFXe-    n
SnU	S:X  a  X-  nOU	S:X  a"  SnU
 H  nX-   S-  nU[        U/5      -  nM     OxU	S	:X  a+  [	        X5       H  u  pX-   S-  nU[        U/5      -  nM     OGU	S
:X  a3  Sn[	        X5       H!  u  pX-   U-   S-  S-  nU[        U/5      -  nM#     O[        SU	-  5      eX{-  nUnM     U$ )N   z"Unsupported `bitspercomponent': %dr                             zUnsupported predictor value: %d)
ValueErrorrangelenbyteszip)predcolorscolumnsbitspercomponentdatanbytesibufline0ftline1line2cbas                  A/home/kodi/my-venv/lib/python3.13/site-packages/pdfminer/utils.pyapply_png_predictorr#      sa   1=>NNOO^,,a/F	A
CgE1c$i*AaC[	Qqx =NE7]ASCKs#  7]e+SCKs# , 7]Ae+c!eaZ3&s# ,
 >rABB; +< Jr   )r   r   r   r   r   r   c                     U u  p#pEpgUu  ppp X-  X-  -   X-  X-  -   X-  X-  -   X-  X-  -   X-  X-  -   U-   X-  X-  -   U-   4$ N )m1m0a1b1c1d1e1f1a0b0c0d0e0f0s                 r"   mult_matrixr5   9   sn    !RRR!RRR5E"%KBE"%KE"%KBE"%KE"%KNBE"%KN, ,r   c                 J    U u  p#pEpgUu  pX#XEX-  X-  -   U-   X-  X-  -   U-   4$ )zTranslates a matrix by (x, y).r&   
mvr!   r    r   defxys
             r"   translate_matrixr?   B   s<    Q1FQ!AC	13qs719--r   c                 H    U u  p#pEpgUu  p X(-  XI-  -   U-   X8-  XY-  -   U-   4$ r%   r&   r7   s
             r"   apply_matrix_ptrA   I   s;    Q1FQ&CGAIqs13wqy!!r   c                 :    U u  p#pEpgUu  pX(-  XI-  -   X8-  XY-  -   4$ )zCEquivalent to apply_matrix_pt(M, (p,q)) - apply_matrix_pt(M, (0,0))r&   )
r8   r9   r!   r    r   r:   r;   r<   pqs
             r"   apply_matrix_normrE   P   s0    Q1FQCGQSWr   c                 .    [        U [        [        45      $ r%   )
isinstanceintfloat)r=   s    r"   isnumberrJ   [   s    a#u&&r   c              #   j   #    [        5       nU  H  nX!;   a  M
  UR                  U5        Uv   M!     g7f)zEliminates duplicated elements.N)setadd)objsdoneobjs      r"   uniqrQ   _   s3     5D;		 
 s   13c                 p   ^^ [        U 5       VVs0 s H  u  p#X2_M	     snnm[        U UU4S jS9$ s  snnf )z"Order-preserving sorting function.c                    > T" U 5      TU    4$ r%   r&   )rP   idxskeys    r"   <lambda>csort.<locals>.<lambda>n   s    S49(=r   )rU   )	enumeratesorted)rN   rU   r   rP   rT   s    `  @r"   csortrZ   k   s2    #,T?4?xSU?4D$=>> 5s   2c                     / n/ nU H4  nU " U5      (       a  UR                  U5        M#  UR                  U5        M6     X#4$ )z9Split a list into two classes according to the predicate.)append)r   rN   tr<   rP   s        r"   fsplitr^   r   s>    
A
A99HHSMHHSM	 
 6Mr   c                 \    X:  d   e[        [        U 5      U-  [        X-   5      U-  5      $ )zReturns a discrete range.)r   rH   )v0v1r:   s      r"   drangerb      s*    7N7R!SY\**r   c                     [         [         [         * [         * 4u  pp4U  H1  u  pV[        X5      n[        X&5      n[        X55      n[        XF5      nM3     XX44$ )z7Compute a minimal rectangle that covers all the points.)INFminmax)ptsx0y0x1y1r=   r>   s          r"   	get_boundrl      sV    S3$-RRZZZZ	 
 Br   c                 D    SnU  H  nU" U5      nUb  X5:  d  M  XTp#M     U$ )z;Picks the object obj where func(obj) has the highest value.Nr&   )seqfuncmaxobjmaxscorerP   scores         r"   pickrs      s1    HS	x/"'v  Mr   c              #      #    / nU H4  nUR                  U5        [        U5      U :X  d  M%  [        U5      v   / nM6     g7f)z$Groups every n elements of the list.N)r\   r   tuple)nrn   rr=   s       r"   choplistrx      s=     
A	q6Q;(NA	 
 s
   &A A c                 "   [        U 5      nU(       d  U$ US:X  a  U S   $ US:X  a  [        R                  " SU 5      S   $ US:X  a  [        R                  " SSU -   5      S   $ US:X  a  [        R                  " SU 5      S   $ [        S	U-  5      e)
z*Unpacks 1 to 4 byte integers (big endian).r   r   r   z>H   z>Lr      zinvalid length: %d)r   structunpack	TypeError)sdefaultls      r"   nunpackr      s    AA	
at	
a}}T1%a((	
a}}T719-a00	
a}}T1%a((,q011r    c              #   8   #    U  H  n[        U5      v   M     g 7fr%   )chr).0r=   s     r"   	<genexpr>r      s      ! !*AQ !*s   (   r   r   r   rz   r{            r   	   
                                       r   i  i  i  i  i  i  i  i      !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~   r   i"   i    i!   i&   i   i   i  iD   i9   i:   i"  i0   i   i   i   i   i   i   i"!  i  i  iA  iR  i`  ix  i}  i1  iB  iS  ia  i~  r   i                                       r                                                                                                                                                                                                                                                      r
   c                     U R                  S5      (       a  U SS R                  SS5      $ SR                  S U  5       5      $ )z*Decodes a PDFDocEncoding bytes to Unicode.s   r   Nzutf-16beignorer   c              3   4   #    U  H  n[         U   v   M     g 7fr%   )PDFDocEncoding)r   r   s     r"   r   decode_text.<locals>.<genexpr>   s     4!Q~a(!s   )
startswithdecodejoinr   s    r"   decode_textr^     s=    ||K  u||J11ww4!444r   c                     U R                  SS5      R                  SS5      R                  SS5      R                  SS5      $ )	zQuotes html string.&z&amp;<z&lt;>z&gt;"z&quot;)replacer]  s    r"   rD   rD      s9    IIc'"WS WS WS"$r   c                     U u  pp4SXX44-  $ )Nz%.3f,%.3f,%.3f,%.3fr&   )bboxrh   ri   rj   rk   s        r"   bbox2strrg     s    RR BB#333r   c                     U u  pp4pVSXX4XV4-  $ )Nz"[%.2f,%.2f,%.2f,%.2f, (%.2f,%.2f)]r&   )r8   r!   r    r   r:   r;   r<   s          r"   
matrix2strri     s     Q1/1q2DDDr   c                   T    \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
 rS rSrg)PlanerT  c                     / U l         [        5       U l        0 U l        X l        Uu  U l        U l        U l        U l        g r%   )	_seqrL   _objs_gridgridsizerh   ri   rj   rk   )selfrf  rp  s      r"   __init__Plane.__init__   s7    	U

 /3,$'47DGr   c                     S[        U 5      -  $ )Nz<Plane objs=%r>)listrq  s    r"   __repr__Plane.__repr__  s    !DJ./r   c                 0   ^  U 4S jT R                    5       $ )Nc              3   J   >#    U  H  oTR                   ;   d  M  Uv   M     g 7fr%   rn  )r   rP   rq  s     r"   r   !Plane.__iter__.<locals>.<genexpr>  s     @	DJJ->	s   #	#)rm  rv  s   `r"   __iter__Plane.__iter__  s    @		@@r   c                 ,    [        U R                  5      $ r%   )r   rn  rv  s    r"   __len__Plane.__len__  s    4::r   c                     XR                   ;   $ r%   r{  )rq  rP   s     r"   __contains__Plane.__contains__  s    jj  r   c              #     #    Uu  p#pEX@R                   ::  d/  U R                  U::  d  XPR                  ::  d  U R                  U::  a  g [	        U R                   U5      n[	        U R                  U5      n[        U R                  U5      n[        U R                  U5      n[        X5U R                  5       H%  n[        X$U R                  5       H  nXv4v   M
     M'     g 7fr%   )rh   rj   ri   rk   rf   re   rb   rp  )rq  rf  rh   ri   rj   rk   r>   r=   s           r"   	_getrangePlane._getrange  s     ''MTWW]''MTWW]V"""".ABDMM2f 3 / 	s   CCc                 8    U H  nU R                  U5        M     g r%   )rM   )rq  rN   rP   s      r"   extendPlane.extend"  s    CHHSM r   c                 x   U R                  UR                  UR                  UR                  UR                  45       HC  nX R
                  ;  a  / nX0R
                  U'   OU R
                  U   nUR                  U5        ME     U R                  R                  U5        U R                  R                  U5        g r%   )
r  rh   ri   rj   rk   ro  r\   rm  rn  rM   )rq  rP   krw   s       r"   rM   	Plane.add(  s     @AA

" !

1JJqMHHSM B 			

sr   c                 .   U R                  UR                  UR                  UR                  UR                  45       H"  n U R
                  U   R                  U5        M$     U R                  R                  U5        g ! [        [        4 a     MU  f = fr%   )
r  rh   ri   rj   rk   ro  removeKeyErrorr   rn  )rq  rP   r  s      r"   r  Plane.remove5  sz     @AA

1$$S) B
 	

# j) s   B  BBc              #   `  #    Uu  p#pE[        5       nU R                  U5       H  nXpR                  ;  a  M  U R                  U    H_  nX;   a  M
  UR                  U5        UR                  U::  d.  XHR
                  ::  d  UR                  U::  d  XXR                  ::  a  M[  Uv   Ma     M     g 7fr%   )rL   r  ro  rM   rj   rh   rk   ri   )	rq  rf  rh   ri   rj   rk   rO   r  rP   s	            r"   find
Plane.find?  s     u%A

"zz!};FFbLB&&LFFbLB&&L	 % & 	s   B,B.)ro  rn  rm  rp  rh   rj   ri   rk   N)r   )__name__
__module____qualname____firstlineno__rr  rw  r}  r  r  r  r  rM   r  r  __static_attributes__r&   r   r"   rk  rk     s5    0A!
r   rk  r%   )r   )__doc__r|   sysr   rd   r#   MATRIX_IDENTITYr5   r?   rA   rE   rJ   rQ   rZ   r^   rb   rl   rs   rx   r   r\  rX  r^  rD   rg  ri  rk  r&   r   r"   <module>r     s     
&V %,."'?	+2$  ! !* ! !H5$4
EO Or   