Ë
    ¨ŒjOø ã                   óx'  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZ dddddddddddœ
d„Z eej,                  j/                  d«      ej0                  ¬«      a eej,                  j/                  d	«      ej0                  ¬«      a e«       Zd
ad„ Zd„ Zd„ Z ddddddddddœ	d„Z!ddddddddddœ	d„Z"�d[d„Z#�d\d„Z$d„ Z% e&ejN                  dz    e(d«      z   «      Z)d„ Z*d„ Z+ e+dd«      Z, e*dd«      Z- G d„ d«      Z. e.«       Z/ej,                  j/                  d«      Z0e0�� e#e1› de0›d�«        e#e1› d ej,                  d!   › �«       e0dk(  rddl0Z0n.ddl2Z2e2jf                  ji                  d"e0«      jk                  «       Z0e0jl                  jn                  jp                  Z8n2	 dd#lm8Z8  e:e8d$«      r e8jv                  «         e8jx                  «        d%„ Z=dd&l>m?Z? dd'l>m@Z@ dd(l>mAZA dd)l>mBZB dd*l>mCZC dd+l>mDZD dd,l>mEZE dd-l>mFZF e8jŽ                  ZHdZI eJeHj—                  d.«      D � cg c]
  }  e=| «      ‘Œ c} «      ZLeLe8jš                  e8jœ                  e8jž                  fk(  s.J d/eL›d0e8jš                  e8jœ                  e8jž                  f›�«       ‚eCeHdfZPeHZQeCZRdZSd1d2œd3„ZTeTZU	 ej¬                  ZVej¶                  eV   Z\ej¶                  e]   Z^ej¶                  e_   Z`ejÂ                  ebdf   Zcej¶                  ejÈ                     Zeej¶                  ef   Zgd4Zhd5Zid6Zjd7Zkd8Zld9Zmd:„ Zn�d]d;„Zod<„ Zp�d]d=„Zqd>„ ZrdZs G d?„ d@«      Zt G dA„ dB«      Zu G dC„ dD«      Zv G dE„ dF«      Zw G dG„ dH«      Zx G dI„ dJ«      Zye-rejô                  Z{ G dK„ dL«      Z|e|Z} G dM„ dN«      Z~ G dO„ dP«      Z G dQ„ dR«      Z€ G dS„ dT«      Z� G dU„ dV«      Z‚ G dW„ dXe‚«      Zƒ eƒ«       Z„ G dY„ dZ«      Z… G d[„ d\«      Z†dd]lm‡Z‡  G d^„ d_«      Zˆ	 	 	 	 	 	 �d^d`„Z‰ G da„ db«      Zh G dc„ dd«      ZŠ[i G de„ df«      Zi G dg„ dh«      Z‹ G di„ dj«      ZŒ G dk„ dl«      Z� G dm„ dn«      ZŽ G do„ dp«      Z� G dq„ dr«      Z� G ds„ dt«      Z‘	 e�j$                  e“   Z”	 e8�j*                  �j-                  «       D ]5  \  Z—Z˜e—�j3                  du«      sŒe—�j3                  dv«      rŒ, eše”e—e˜«       Œ7 	 de8�j8                  z  e8�j:                  z  e8�j<                  z  e8�j>                  z  e8�j@                  z  e8�jB                  z  Z¢e8�jF                  dk(  sJ ‚e¤e8�jH                  k(  sJ ‚e¥e8�jJ                  k(  sJ ‚[”[—[˜e�jL                  Z§dwZ¨i Z©e¨D ]  Zªeªe©eª�jW                  «       <   Œ dxe©dy<   dze©d{<   d|e©d}<   d~e©d<   d€e©d�<   d‚e©dƒ<   d„e©d…<   d†e©d‡<   dˆe©d‰<   dŠe©d‹<   dŒe©d�<   dŽe©d�<   d�e©d‘<   d’e©d“<   d”Z¬d”Z­d•Z®d–Z¯d—a°g a±da²da³e8�jh                  Z´e8�jj                  Zµe8�jl                  Z¶e8�jn                  Z·e8�jp                  Z¸e8�jr                  Z¹e8�jt                  Zºe8�jv                  Z»dZ¼dZ½d˜Z¾dZ¿dZÀd˜ZÁd™ZÂdšZÃd›ZÄdZÅd˜ZÆdšZÇdœZÈd�ZÉdžZÊdŸZËdZÌd˜ZÍdZÎdZÏd˜ZÐd™ZÑdšZÒd›ZÓd ZÔd¡ZÕdœZÖd¢Z×d£ZØd¤ZÙd¥ZÚd¦ZÛdZÜdZÝd˜ZÞd™ZßdZàd˜ZádšZâdœZãd�ZädZådZæd˜Zçd™ZèdšZée8�jÔ                  Zëe8�jØ                  Zíe8�jÜ                  Zïe8�jà                  Zñe8�jä                  Zóe8�jè                  Zõe8�jì                  Z÷e8�jð                  Zùe8�jô                  Zûe8�jø                  Zýe8�jü                  Zÿe8�j                   �Ze8�j                  �ZeLd§k\  rbe8�j                  �Ze8�j                  �Ze8�j                  �Z	e8�j                  �Ze8�j                  �Ze8�j                  �Ze8�j                   �Z�e�Zeù�Zdeëz  eíz  e÷z  eùz  �Zdeëz  eíz  e÷z  eùz  �Zdeëz  eíz  e÷z  eïz  eùz  �Z�e�Zdeíz  e÷z  eóz  eùz  �Zdeëz  eíz  e÷z  eïz  eùz  �Zdeëz  eíz  e÷z  eïz  eùz  �Zdeëz  eíz  e÷z  eùz  �Zdeëz  eíz  e÷z  eùz  �Zd�Zd�Zd˜�Zd�a d�Z!d˜�Z"d™�Z#d¨�Z$d©�Z%dª�Z&d«�Z'd¬�Z(d­�Z)d®�Z*d¯�Z+d°�Z,d±�Z-d²�Z.d³�Z/d´�Z0dµ�Z1d¶�Z2d·�Z3d¸„ d¹„ dº„ d»„ d¼„ d½„ d¾„ d¿œ�Z4 G dÀ„ dÁ�e5«      �Z6 G dÂ„ dÃ�e5«      �Z7 G dÄ„ dÅ�e6«      �Z8 ew�e!«      �Z9 ew�e"«      �Z: ew�e#«      �Z;dÆ�Z<dÇ�Z=dÈ�Z>dÉ�Z?dÊ�Z@dË�ZAdÌ�ZBdÍ�ZCdÎ�ZDdÏ�ZEdÐ�ZFdÑ�ZGdÒ�ZHdÓ�ZIdÔ�ZJdÕ�ZKdÖ�ZLd×�ZMdØ�ZNdÙ�ZOdÚ�ZPdÛ�ZQdÜ�ZRdÝ�ZSdÞ�ZTdß�ZUdà�ZVdá�ZWdâ�ZXdã�ZYdä�ZZdå�Z[dæ�Z\dç�Z]dè�Z^dé�Z_dê�Z`dë�Zadì�Zbdí�Zcdî�Zddï�Zedð�Zfdñ�Zgdò�Zhdó�Zidô�Zjdõ�Zkdö�Zld÷�Zmdø�Zndù�Zodú�Zp	 ddû�lq�mr�Zr�ms�Zs  �er�jè                  «       �Zu�eu�jí                  «       D ]  �Zw�es�ew   �eu�ew   dü<   Œ �[r�[sdý�Zydþ�Zzdÿ„ �Z{�d „ �Z|�d„ �Z}�d„ �Z~�d„ �Z�d„ �Z€�d„ �Z��d„ �Z‚�d„ �Zƒ�d„ �Z„�d	„ �Z…�d
„ �Z†�d„ �Z‡�d„ �Zˆ�d„ �Z‰�d„ �ZŠ�d„ �Z‹�d„ �ZŒ�dejÈ                  �deJf�d„�Z��dejÈ                  �deJf�d„�ZŽ�d„ �Z��d„ �Z��d„ �Z‘�d„ �Z’�d„ �Z“�d„ �Z”�d„ �Z•�d„ �Z–�d„ �Z—�d„ �Z˜�d„ �Z™�d „ �Zš�d!„ �Z›�d"„ �Zœ�d#„ �Z��d$„ �Zž�d%„ �ZŸ�d&„ �Z �d'„ �Z¡�d(„ �Z¢�d)„ �Z£�d*„ �Z¤�d+„ �Z¥�d,„ �Z¦�d-„ �Z§�d.„ �Z¨�d/„ �Z©�d0„ �Zª�d1„ �Z«�d2„ �Z¬�d3„ �Z­�d4„ �Z®�d5„ �Z¯�d6„ �Z°�d7„ �Z±�d8„ �Z²�d9„ �Z³�d:„ �Z´�d;„ �Zµ�d<e8�jl                  �d=ebf�d>„�Z·�d?e8�jp                  �d<e8�jl                  �d=ebf�d@„�Z¹�dA„ �Zº�dB„ �Z»�dC„ �Z¼�dD„ �Z½�dE„ �Z¾�dF„ �Z¿�dG„ �ZÀ�dH„ �ZÁ�dI„ �ZÂ�dJ„ �ZÃ�dK„ �ZÄ�dL„ �ZÅ�dM„ �ZÆ�dN„ �ZÇ�dO„ �ZÈ�dP„ �ZÉ�dQ„ �ZÊ�dR„ �ZËd�aÌ�dS„ �ZÍ�dT„ �ZÎ�dU„ �ZÏ�dV„ �ZÐ�dW„ �ZÑ�dX„ �ZÒ�dY„ �ZÓ�dZ„ �ZÔ�d[„ �ZÕ�d\„ �ZÖ�d]„ �Z×�d^„ �ZØ�d_„ �ZÙ�d`„ �ZÚ�da„ �ZÛ�db„ �ZÜ�dc„ �ZÝ�dd„ �ZÞ�de„ �Zß�df„ �Zà�dg„ �Zá�dh„ �Zâ�di„ �Zã�dj„ �Zä�dk„ �Zå�dl„ �Zæ�dm„ �Zç�dn„ �Zè�do„ �Zé�dp„ �Zê�dq„ �Zë�dr„ �Zì�ds„ �Zí�dt„ �Zî�du„ �Zï�dv„ �Zð�dw„ �Zñ�dx„ �Zò�dy„ �Zó�dz„ �Zô�d{„ �Zõ�d|„ �Zö�d}„ �Z÷�d~„ �Zø�d„ �Zù�d€„ �Zú�d�„ �Zû�d‚„ �Zü�dƒ„ �Zý�d„„ �Zþ�d…„ �Zÿ�d†„ �Z �d‡„ �Z�dˆ„ �Z�d‰„ �Z�dŠ„ �Z�d‹„ �Z�dŒ„ �Z�d�„ �Z�dŽ„ �Z�d��Z	�d��Z
�d‘�Z�d’�Z�d“�Z�d”�Z�d•�Z�d–�Z�d—�Z�d˜�Z�d™�Z�dš�Z�d›�Z�dœ�Z�d��Z�dž�Z�dŸ�Z�d �Z�d¡�Z�d¢�Z�d£�Z�d¤�Z�d¥�Z�d¦�Z �d§�Z!�d¨�Z"�d©�Z#dÁ�Z$�dª�Z%�d«„ �Z&�d_�d¬„�Z'dÌeef�d­„�Z(�d®eh�d¯ef�deJf�d°„�Z)�d?e|døeb�def�d±„�Z*�d²e�jL                  �deJf�d³„�Z+�de�jL                  �d�e,f�d´„�Z-�de�jL                  f�dµ„�Z.�d¶e�jL                  �d�e,f�d·„�Z/�d¸e�jL                  �d�e,f�d¹„�Z0dÌejÂ                  eeJe_df   �dºef�deff�d»„�Z1�d¼„ �Z2�d½„ �Z3�d?e|�d¾ejÈ                  f�d¿„�Z4�dÀ„ �Z5�dÁ„ �Z6�dÂ„ �Z7�dÃ„ �Z8dòef�dÄejÂ                  eeJdf   �dÅ�e,�dÆeb�deff
�dÇ„�Z9�dÈef�deff�dÉ„�Z:�d`�dÊ„�Z;ddd�dËœ�dÌef�dÍeg�dÎe§dèeg�deff
�dÏ„�Z<�dadòef�d¯ef�dÐe_�dÑeb�de_f
�dÒ„�Z=�dÓeV�de]f�dÔ„�Z>�dÕ„ �Z?�dÖ„ �Z@�d×„ �ZA�dØ„ �ZB�dÙ„ �ZC�dÚ„ �ZD�dÛ„ �ZE�dÜ„ �ZF�dÝ„ �ZG�dÞ„ �ZH�dß„ �ZI�dà„ �ZJ�dá„ �ZK�dâ„ �ZL�dã„ �ZM�dä„ �ZN�då„ �ZO�dæ„ �ZP�dç„ �ZQ G �dè„ �dée8�j¤                  «      �ZS�dê„ �ZT�dë„ �ZU�dì„ �ZV�dí„ �ZW�dî„ �ZX�dï„ �ZY�dð„ �ZZ�dñ„ �Z[�dò„ �Z\�dó„ �Z]�dô„ �Z^�dõ„ �Z_�dö„ �Z`�d÷„ �Za�dø„ �Zb�dùek�dúek�de‚f�dû„�Zc G �dü„ �dýe8�jÈ                  «      �Ze G �dþ„ �dÿe8�jÌ                  «      �Zg G �d „ �de8�jÐ                  «      �Zi�d„ �Zj G �d„ �de8�jÌ                  «      �Zk G �d„ �de8�jÌ                  «      �Zl�db�defdÚegf�d„�Zm�deff�d	„�Zn�d®db�debf�d
„�Zo�dc�d„�Zp�d„ �Zq�d„ �Zr�d„ �Zs�d„ �Zt�d„ �Zu�deff�d„�Zv G �d„ �d�ew«      �Zx�d„ �Zy�dd�dek�dek�dem�def�d„�Zzdèef�debf�d„�Z{�d„ �Z|�dedëem�deb�deb�def�d„�Z}�d„ �Z~dddddd�dœ�d „�Zdddddd�dœ�d!„�Z€�d"„ �Z��d#„ �Z‚�d$„ �Zƒ�d%„ �Z„�d&„ �Z…�d'„ �Z†�d(„ �Z‡�d)„ �Zˆ�d*„ �Z‰�d+„ �ZŠ�d,„ �Z‹�d-„ �ZŒ�d.„ �Z��d/„ �ZŽ�d0„ �Z��d1„ �Z��dÈef�deŒf�d2„�Z‘�dÈef�deJf�d3„�Z’�d4„ �Z“�d5„ �Z”�d\�d6„�Z•�df�d7„�Z–�d8eb�deJf�d9„�Z—�d8eb�deJf�d:„�Z˜�d;„ �Z™�d<„ �Zš�d=„ �Z›d�Zœd˜�Z�d™�Zždš�ZŸ�d>eb�deff�d?„�Z �d@„ �Z¡�dA e]«       d�dA e]«       d�dBdd
�dCœ	�dD„�Z¢d�dBddòdddd
dd
�dEœ
�dF„�Z£ G �dG„ �dH«      �Z¤e0s( e8�jJ                  �eß«        e8�jL                  �eà«       �dI„ �Z§ e�jP                  �e§«       d�dJl�m©�Z© �e©�jR                  �Z© e]«       �Zª�e©D ]3  \  �Z«�Z¬�Z­�Z®�e¬�dKz  �e­�dKz  �e®�dKz  f�eª�e«�jW                  «       <   Œ5 �dL„ �Z¯�dM„ �Z°�d]�dN„�Z±d�dOl�m²�Z² �e²�jf                  �Z³�e²�jh                  �Z´�e²�jj                  �Zµ�e²�jl                  �Z¶�e²�jn                  �Z·d�dP�l¸�m¹�Z¹ �e¹eh�_¹         G �dQ„ �dR�eº«      �Z»�dS„ �Z¼	 eR�Z½�dTeR› �dUeQ› �dVe�j|                  d   › d.e�j|                  d   › �dWe�j~                  › �dXe�j€                  �dYkD  rdŸndž› �dZ�Z y# e9$ r ddl8Z8Y �Œ®w xY wc c} w # eW$ r eXeYz  eZz  ZVY �Œ¼w xY w# �ex$ r i �ZuY �	Œµw xY w(g  zk
PyMuPDF implemented on top of MuPDF Python bindings.

License:

    SPDX-License-Identifier: GPL-3.0-only
é    Né   )Úextra©
ÚtextÚfdÚstreamÚpathÚpath_appendÚ	pyloggingÚpylogging_loggerÚpylogging_levelÚpylogging_nameÚdefaultc        
         óv  ‡‡— | �ú| j                  d«      rt        | dd «      }nÚ| j                  d«      r| dd }nÃ| j                  d«      r| dd }n¬| j                  d«      r�d}t        «       }
| d	d j                  d
«      }|D ]:  }|sŒ|j                  dd«      }t	        |«      dk(  sJ d|›d�«       ‚|\  }}||
|<   Œ< |
j                  d«      Š‰�t        ‰«      Š|
j                  dd«      }nJ d| ›d�«       ‚|�t        |dd¬«      }|S |� t        |d«      sJ ‚t        |d«      sJ ‚|}|S |�t        |d«      }|S |�t        |d«      }|S 	 |€‰€‰€|�[ddl}‰€|€d}|j                  |«      Št        ‰|j                  «      sJ ‚‰€‰j                  «       Š G ˆˆfd„d«      } |«       }|S |	}|S )a‚  
    Returns a stream that writes to a specified destination, which can be a
    file descriptor, a file, an existing stream or Python's `logging' system.
    
    Args:
        text: text specification of destination.
            fd:<int> - write to file descriptor.
            path:<str> - write to file.
            path+:<str> - append to file.
            logging:<items> - write to Python `logging` module.
                items: comma-separated <name=value> pairs.
                    level=<int>
                    name=<str>.
                Other names are ignored.
        
        fd: an int file descriptor.
        stream: something with methods .write(text) and .flush().
            If specified we simply return <stream>.
        path: a file path.
            If specified we return a stream that writes to this file.
        path_append: a file path.
            If specified we return a stream that appends to this file.
        pylogging*:
            if any of these args is not None, we return a stream that writes to
            Python's `logging` module.
            
            pylogging:
                Unused other than to activate use of logging module.
            pylogging_logger:
                A logging.Logger; If None, set from <pylogging_name>.
            pylogging_level:
                An int log level, if None we use
                pylogging_logger.getEffectiveLevel().
            pylogging_name:
                Only used if <pylogging_logger> is None:
                    If <pylogging_name> is None, we set it to 'pymupdf'.
                    Then we do: pylogging_logger = logging.getLogger(pylogging_name)
    Nzfd:é   zpath:é   zpath+zlogging:Té   Ú,Ú=r   é   zNeed `=` in item=Ú.ÚlevelÚnameÚpymupdfr   z?Expected prefix `fd:`, `path:`. `path+:` or `logging:` in text=ÚwF)ÚmodeÚclosefdÚwriteÚflushÚac                   ó    •— e Zd Zˆ ˆfd„Zd„ Zy)ú_make_output.<locals>.Outc                 óR   •— |j                  d«      }|r‰j                  ‰|«       y y )NÚ
)ÚrstripÚlog)Úselfr   r   r   s     €€úZ/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/pymupdf/__init__.pyr   z_make_output.<locals>.Out.write“   s+   ø€ ð —{‘{ 4Ó(�ÙØ$×(Ñ(¨¸$Õ?ð ó    c                  ó   — y ©N© ©r'   s    r(   r   z_make_output.<locals>.Out.flushš   s   € Ør)   N)Ú__name__Ú
__module__Ú__qualname__r   r   )r   r   s   €€r(   ÚOutr"   ’   s   ø„ õ@ór)   r1   )Ú
startswithÚintÚdictÚsplitÚlenÚgetÚopenÚhasattrÚloggingÚ	getLoggerÚ
isinstanceÚLoggerÚgetEffectiveLevel)r   r   r   r	   r
   r   r   r   r   r   Úitems_dÚitemsÚitemÚnvÚnÚvÚretr:   r1   s         ``           r(   Ú_make_outputrF   ,   s0  ù€ ðf Ðà�?‰?˜5Ô!Ü�T˜!˜"�X“‰BØ�_‰_˜WÔ%Ø˜˜�8‰DØ�_‰_˜WÔ%Ø˜q˜r˜(‰KØ�_‰_˜ZÔ(ØˆIÜ“fˆGØ˜˜�H—N‘N 3Ó'ˆEã�ÙØØ—Z‘Z  QÓ'�Ü˜2“w !’|Ð<Ð'9°D°7¸!Ð%<Ó<�|Ø‘��1Ø�˜’
ð ð &Ÿk™k¨'Ó2ˆOØÐ*Ü"% oÓ"6�Ø$Ÿ[™[¨°Ó;‰Nà[ÐXÐSWÐRYÐYZÐ[Ó[�1à	€~Ü�2˜C¨Ô/ˆðH €JðG 
Ð	Ü�v˜wÔ'Ð'Ð'Ü�v˜wÔ'Ð'Ð'Øˆð@ €Jð? 
Ð	Ü�4˜‹oˆð< €Jð; 
Ð	 Ü�; Ó$ˆð8 €Jð7 ØÐ$ØÐ+ØÐ*ØÐ)ãØÐ#ØÐ%Ø!*�Ø&×0Ñ0°Ó@ÐÜÐ*¨G¯N©NÔ;Ð;Ð;ØÐ"Ø.×@Ñ@ÓBˆO÷		ô 		ñ ‹eˆð €Jð ˆØ€Jr)   ÚPYMUPDF_MESSAGE)r   r   ÚPYMUPDF_LOGFc                  ó   — t         S r+   ©Ú_g_log_itemsr,   r)   r(   Ú
_log_itemsrL   «   s   € ÜÐr)   c                 ó   — | a y r+   )Ú_g_log_items_active)Úactives    r(   Ú_log_items_activerP   ®   s   € à Ñr)   c                  ó   — t         d d …= y r+   rJ   r,   r)   r(   Ú_log_items_clearrR   ²   s	   € Ü’Q‰r)   ©	r   r   r   r	   r
   r   r   r   r   c        	         ó6   — t        | ||||||||t        ¬«
      ay)zO
    Sets destination of PyMuPDF messages. See _make_output() for details.
    r   N)rF   Ú_g_out_messagerS   s	            r(   Úset_messagesrV   ¶   s,   € ô  "ØØØØØ#ØØ-Ø+Ø)Ü"ô�Nr)   c        	         ó6   — t        | ||||||||t        ¬«
      ay)zh
    Sets destination of PyMuPDF development/debugging logging. See
    _make_output() for details.
    r   N)rF   Ú
_g_out_logrS   s	            r(   Úset_logrY   Ó   s,   € ô" ØØØØØ#ØØ-Ø+Ø)Üô�Jr)   Ú c                 ó–  — 	 t        j                  d¬«      }||   }	 t        j                  j	                  |j
                  «      }|j                  }|j                  }|› d|› d|› d| › �} t        rt        j                  | «       t        rt        | t        d¬«       yy# t        $ r |j
                  }Y Œqw xY w# t        $ r Y Œ[w xY w)z0
    For development/debugging diagnostics.
    r   )ÚcontextÚ:z(): r   ©Úfiler   N)ÚinspectÚstackÚosr	   ÚrelpathÚfilenameÚ	ExceptionÚlinenoÚfunctionÚStopIterationrN   rK   ÚappendrX   Úprint)r   Úcallerra   Úframe_recordrd   Úlinerg   s          r(   r&   r&   ñ   sÅ   € ð9Ü—‘ aÔ(ˆð ˜V‘}ˆð	-Ü—w‘w—‘ |×'<Ñ'<Ó=ˆHð ×"Ñ"ˆØ×(Ñ(ˆØ�˜1˜T˜F ! H :¨T°$°Ð8ˆÝÜ×Ñ˜DÔ!ÝÜˆdœ¨1Ö-ð øô ò 	-Ø#×,Ñ,ŠHð	-ûô ò Ùðús"   ‚B< ž)B! Â!B9Â8B9Â<	CÃCc                 ó6   — t         rt        | t         d¬«       yy)z
    For user messages.
    r   r^   N)rU   rj   ©r   s    r(   Úmessagerp     s   € õ Üˆdœ¨qÖ1ð r)   c                  óT   — dd l } t        d«       t        | j                  «       «       y )Nr   zexception_info:)Ú	tracebackr&   Ú
format_exc)rr   s    r(   Úexception_infort     s   € ÛÜˆ/ÔÜˆ	×ÑÓÕr)   z
()<>[]{}/%c                 ó´   — t         j                  j                  | «      }|€|}n|dk(  rd}n|dk(  rd}nJ d| › d|›�«       ‚||k7  rt        d| › d|›�«       |S )ú}
    Returns `True`, `False` or `default` depending on whether $<name> is '1',
    '0' or unset. Otherwise assert-fails.
    Ú1TÚ0FzUnrecognised value for ú: úUsing non-default setting from )rb   Úenvironr7   r&   ©r   r   rD   rE   s       r(   Úget_env_boolr}     sr   € ô
 	�
‰
�‰˜Ó€AØ€yØ‰Ø	
ˆcŠØ‰Ø	
ˆcŠØ‰à9Ð+¨D¨6°°A°5Ð9Ó9ˆqØ
ˆg‚~ÜÐ-¨d¨V°2°a°UÐ;Ô<Ø€Jr)   c                 ó�   — t         j                  j                  | «      }|€|}nt        |«      }||k7  rt	        d| › d|› �«       |S )rv   rz   ry   )rb   r{   r7   r3   r&   r|   s       r(   Úget_env_intr   -  sK   € ô
 	�
‰
�‰˜Ó€AØ€yØ‰ä�!‹fˆØ
ˆg‚~ÜÐ-¨d¨V°2°a°SÐ9Ô:Ø€Jr)   ÚPYMUPDF_EXCEPTIONS_VERBOSEÚPYMUPDF_USE_EXTRATc                   ó   — e Zd Zd„ Zy)Ú_Globalsc                 ó<   — d| _         d| _        d| _        d| _        y ©Nr   )Úno_device_cachingÚsmall_glyph_heightsÚsubset_fontnamesÚskip_quad_correctionsr-   s    r(   Ú__init__z_Globals.__init__H  s"   € Ø!"ˆÔØ#$ˆÔ Ø !ˆÔØ%&ˆÕ"r)   N©r.   r/   r0   rŠ   r,   r)   r(   rƒ   rƒ   G  s   „ ó'r)   rƒ   ÚMUPDF_CPPYYz: $MUPDF_CPPYY=z% so attempting to import mupdf_cppyy.z: $PYTHONPATH=Ú
PYTHONPATHÚmupdf_cppyy)ÚmupdfÚinternal_check_ndebugc                 óN   — | j                  d«      }|dk\  r| d| } t        | «      S )z<
    Converts string to int, ignoring trailing 'rc...'.
    Úrcr   N)Úfindr3   )r   r’   s     r(   Ú_int_rcr”   o  s-   € ð 
�‰�4‹€BØ	ˆQ‚wØ�C�RˆyˆÜˆt‹9Ðr)   )Úmupdf_location)Úpymupdf_git_branch)Úpymupdf_git_diff)Úpymupdf_git_sha)Úpymupdf_version)Úpymupdf_version_tuple)Úswig_version)Úswig_version_tupler   z8Inconsistent MuPDF version numbers: mupdf_version_tuple=zM != (mupdf.FZ_VERSION_MAJOR, mupdf.FZ_VERSION_MINOR, mupdf.FZ_VERSION_PATCH)=z%g©Úfmtc                óž   — t        | t        t        f«      r"d}| D ]  }|r|dz  }|t        ||¬«      z  }Œ |S t	        j
                  || «      S )zÐ
    Returns `value` formatted with mupdf.fz_format_double() if available,
    otherwise with Python's `%`.

    If `value` is a list or tuple, we return a space-separated string of
    formatted values.
    rZ   Ú r�   )r<   ÚlistÚtupleÚ	_format_gr�   Úfz_format_double)Úvaluerž   rE   rD   s       r(   r£   r£   œ  sX   € ô �%œ$¤˜Ô'ØˆÛˆAÙØ�s‘
�Ø”9˜Q CÔ(Ñ(‰Cð ð ˆ
ä×%Ñ% c¨5Ó1Ð1r)   ÚPage_forward_declÚPoint_forward_declÚmatrix_likeÚ
point_likeÚ	quad_likeÚ	rect_likec                 ó,  — t        | t        «      r#| j                  rt        d«      ‚| j                  } t        | t
        j                  «      r| S t        | t
        j                  «      r| j                  «       S | €J d«       ‚J dt        | «      ›�«       ‚)zz
    Returns document as a mupdf.FzDocument, upcasting as required. Raises
    'document closed' exception if closed.
    údocument closedúdocument is NoneúUnrecognised type(document)=)
r<   ÚDocumentÚ	is_closedÚ
ValueErrorÚthisr�   Ú
FzDocumentÚPdfDocumentÚsuperÚtype)Údocuments    r(   Ú_as_fz_documentr¹   È  s†   € ô
 �(œHÔ%Ø×ÒÜÐ.Ó/Ð/Ø—=‘=ˆÜ�(œE×,Ñ,Ô-ØˆÜ	�Hœe×/Ñ/Ô	0Ø�~‰~ÓÐØ	Ð	Ø%Ð$Ó%ˆqà3Ð1¤$ x£.Ð!2Ð3Ó3ˆqr)   c                 óZ  — t        | t        «      r#| j                  rt        d«      ‚| j                  } t        | t
        j                  «      r| S t        | t
        j                  «      r't        j                  | «      }|r|j                  sJ ‚|S | €J d«       ‚J dt        | «      ›�«       ‚)a  
    Returns `document` downcast to a mupdf.PdfDocument. If downcast fails (i.e.
    `document` is not actually a `PdfDocument`) then we assert-fail if `required`
    is true (the default) else return a `mupdf.PdfDocument` with `.m_internal`
    false.
    r­   r®   r¯   )
r<   r°   r±   r²   r³   r�   rµ   r´   Ú
m_internalr·   )r¸   ÚrequiredrE   s      r(   Ú_as_pdf_documentr½   Ú  s�   € ô �(œHÔ%Ø×ÒÜÐ.Ó/Ð/Ø—=‘=ˆÜ�(œE×-Ñ-Ô.ØˆÜ	�Hœe×.Ñ.Ô	/Ü×Ñ Ó)ˆÙØ—>’>Ð!�>Øˆ
Ø	Ð	Ø%Ð$Ó%ˆqà3Ð1¤$ x£.Ð!2Ð3Ó3ˆqr)   c                 óþ   — t        | t        «      r| j                  } t        | t        j                  «      r| j                  «       S t        | t        j                  «      r| S | €J d«       ‚J dt        | «      ›�«       ‚)z@
    Returns page as a mupdf.FzPage, upcasting as required.
    úpage is NoneúUnrecognised type(page)=)r<   ÚPager³   r�   ÚPdfPager¶   ÚFzPager·   ©Úpages    r(   Ú_as_fz_pagerÆ   ñ  si   € ô �$œÔØ�y‰yˆÜ�$œŸ™Ô&Ø�z‰z‹|ÐÜ	�Dœ%Ÿ,™,Ô	'ØˆØ	ˆØ!�LÓ!ˆqà/Ð-¤$ t£* Ð/Ó/ˆqr)   c                 ó,  — t        | t        «      r| j                  } t        | t        j                  «      r| S t        | t        j
                  «      r't        j                  | «      }|r|j                  sJ ‚|S | €J d«       ‚J dt        | «      ›�«       ‚)zé
    Returns `page` downcast to a mupdf.PdfPage. If downcast fails (i.e. `page`
    is not actually a `PdfPage`) then we assert-fail if `required` is true (the
    default) else return a `mupdf.PdfPage` with `.m_internal` false.
    r¿   rÀ   )	r<   rÁ   r³   r�   rÂ   rÃ   Úpdf_page_from_fz_pager»   r·   )rÅ   r¼   rE   s      r(   Ú_as_pdf_pagerÉ      s�   € ô �$œÔØ�y‰yˆÜ�$œŸ™Ô&ØˆÜ	�Dœ%Ÿ,™,Ô	'Ü×)Ñ)¨$Ó/ˆÙØ—>’>Ð!�>Øˆ
Ø	ˆØ!�LÓ!ˆqà/Ð-¤$ t£* Ð/Ó/ˆqr)   c                 ó^   — t        j                  | «      }|j                  st        d«      ‚|S )a8  
    Wrapper for mupdf.pdf_annot_page() which raises an exception if <annot>
    is not bound to a page instead of returning a mupdf.PdfPage with
    `.m_internal=None`.

    [Some other MuPDF functions such as pdf_update_annot()` already raise a
    similar exception if a pdf_annot's .page field is null.]
    úAnnot is not bound to a page)r�   Úpdf_annot_pager»   ÚRuntimeError)ÚannotrÅ   s     r(   Ú_pdf_annot_pagerÏ     s,   € ô ×Ñ Ó&€DØ�?Š?ÜÐ9Ó:Ð:Ø€Kr)   c                   ó¼  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdHd„Z	dId	„Z
ed
„ «       Zed„ «       Zed„ «       Zed„ «       ZdJd„Zed„ «       Zd„ Zed„ «       Zed„ «       Zd„ Zd„ Zd„ ZdKd„Zd„ Zd„ Zd„ ZdLd„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z ed„ «       Z!ed „ «       Z"ed!„ «       Z#ed"„ «       Z$ed#„ «       Z%ed$„ «       Z&ed%„ «       Z'ed&„ «       Z(ed'„ «       Z)d(„ Z*d)„ Z+d*„ Z,dMd+„Z-dNd,„Z.d-„ Z/dOd.„Z0d/„ Z1dPd0„Z2d1„ Z3d2„ Z4dHd3„Z5d4„ Z6d5„ Z7d6„ Z8d7„ Z9dHd8„Z:ed9„ «       Z;	 	 	 	 	 	 	 	 	 dQd:e<d;e=d<e>d=e<d>e?d?e?d@e?dAe@dBeAfdC„ZBdRdD„ZCeDdE„ «       ZEedF„ «       ZFedG„ «       ZGy)SÚAnnotc                 óJ   — t        |t        j                  «      sJ ‚|| _        y r+   )r<   r�   ÚPdfAnnotr³   ©r'   rÎ   s     r(   rŠ   zAnnot.__init__,  s   € Ü˜5¤%§.¡.Ô1Ð1Ð1Øˆ�	r)   c                 óX   — t        | dd«      }d| j                  d   ›dt        |«      ›�S )NÚparentz<>Ú'r   z' annotation on )Úgetattrr·   Ústr)r'   rÖ   s     r(   Ú__repr__zAnnot.__repr__0  s'   € Ü˜˜x¨Ó.‰Ø*.¯)©)°A«,¼¸F¼ÐDÐDr)   c                 ó"   — | j                  «       S r+   )rÚ   r-   s    r(   Ú__str__zAnnot.__str__4  s   € Ø�}‰}‹Ðr)   c                 ó.   — t        | dd«      rd| _        y y )NÚthisownF)rØ   rÞ   r-   s    r(   Ú_erasezAnnot._erase7  s   € Ü�4˜ EÔ*Ø ˆD�Lð +r)   c                 ó¦  — | j                   }t        j                  |«      t        j                  k7  ry t	        «       }	 t        j
                  t        j                  |«      d«      }|j                  r)t        d«       t        j                  |«      }||t        <   t        j
                  t        j                  |«      d«      }|j                  r(t        j                  |«      }t        |«      |t        <   n	d|t        <   t        j                  t        j                  |«      t        d«      «      }d}|j                  rt        j                   |«      }||t"        <   |}|s|S | j*                  |d<   t,        j/                  | «      \  }}	}
||d<   |	|d	<   |
|d
<   | j0                  d   }||d<   |S # t$        $ r t&        r
t)        «        Y y w xY w)NÚROzIgnoring redaction key '/RO'.ÚOverlayTextrZ   ÚQr   ÚrectÚ
text_colorÚfontnameÚfontsizeÚfill)r³   r�   Úpdf_annot_typeÚPDF_ANNOT_REDACTr4   Úpdf_dict_getsÚpdf_annot_objr»   Úmessage_warningÚ
pdf_to_numÚdictkey_xrefÚpdf_to_text_stringÚJM_UnicodeFromStrÚdictkey_textÚpdf_dict_getÚPDF_NAMEÚ
pdf_to_intÚdictkey_alignre   Úg_exceptions_verbosert   rä   ÚTOOLSÚ	_parse_daÚcolors)r'   rÎ   ÚvaluesÚobjÚxrefr   ÚalignÚvalrå   ræ   rç   rè   s               r(   Ú_get_redact_valueszAnnot._get_redact_values;  s“  € Ø—	‘	ˆÜ×Ñ Ó&¬%×*@Ñ*@Ò@Øä“ˆð	Ü×%Ñ%¤e×&9Ñ&9¸%Ó&@À$ÓGˆCØ�~Š~ÜÐ ?Ô@Ü×'Ñ'¨Ó,�Ø'+�”|Ñ$Ü×%Ñ%¤e×&9Ñ&9¸%Ó&@À-ÓPˆCØ�~Š~Ü×/Ñ/°Ó4�Ü'8¸Ó'>�”|Ò$à')�”|Ñ$Ü×$Ñ$¤U×%8Ñ%8¸Ó%?ÄÈ#ÃÓOˆCØˆEØ�~Š~Ü×(Ñ(¨Ó-�Ø$)ˆF”=Ñ!ð ˆáØˆJØ—i‘iˆˆF‰Ü).¯©¸Ó)>Ñ&ˆ
�H˜hØ&ˆˆLÑØ"ˆˆJ‰Ø"ˆˆJ‰Ø�{‰{˜6Ñ"ˆØˆˆF‰Øˆ
øô ò 	Ý#¬Ô(8Ùð	ús   ¿D"F4 Æ4GÇGc                 ó  — t         rYt        | j                  t        j                  «      sJ ‚t        j                  | j                  «      }t        |t        «      sJ ‚|S d }d }| j                  }t        |t        j                  «      sJ ‚t        j                  |«      }t        j                  |t        d«      t        d«      «      }t        j                  |«      rt        j                  |«      }|r|j                  rt        |«      }|S )NÚAPÚN)Úg_use_extrar<   r³   r�   rÓ   r   ÚAnnot_getAPÚbytesrì   Úpdf_dict_getlrô   Úpdf_is_streamÚpdf_load_streamr»   ÚJM_BinFromBuffer)r'   rE   ÚrÚresrÎ   Ú	annot_objÚaps          r(   Ú_getAPzAnnot._getAPb  sÏ   € ÝÜ˜tŸy™y¬%¯.©.Ô9Ð9Ð9Ü×#Ñ# D§I¡IÓ.ˆCÜ˜s¤EÔ*Ð*Ð*ØˆJàˆAØˆCØ—I‘IˆEÜ˜u¤e§n¡nÔ5Ð5Ð5Ü×+Ñ+¨UÓ3ˆIÜ×$Ñ$ i´¸$³ÄÈ#ÃÓOˆBÜ×"Ñ" BÔ'Ü×+Ñ+¨RÓ0�Ù�s—~’~Ü$ SÓ)�ØˆHr)   c                 óx  — 	 | j                   }t        j                  |«      }t        |«      }t        j                  |t        d«      t        d«      «      }|j                  st        t        «      ‚t        j                  |«      st        t        «      ‚t        |«      }|j                  st        t        «      ‚t        |j                  «       ||d«       |r@t        j                  |t        d«      «      }t        j                   |t        d«      |«       y y # t"        $ r t$        rt'        «        Y y Y y w xY w)Nr  r  r   ÚRectÚBBox)r³   r�   rì   rÏ   r  rô   r»   rÍ   ÚMSG_BAD_APNr  ÚJM_BufferFromBytesr²   ÚMSG_BAD_BUFFERÚJM_update_streamÚdocÚpdf_dict_get_rectÚpdf_dict_put_rectre   r÷   rt   )	r'   Úbuffer_rä   rÎ   r  rÅ   Úapobjr  Úbboxs	            r(   Ú_setAPzAnnot._setAPu  sõ   € ð	9Ø—I‘IˆEÜ×+Ñ+¨UÓ3ˆIÜ" 5Ó)ˆDÜ×'Ñ'¨´H¸T³NÄHÈSÃMÓRˆEØ×#Ò#Ü"¤KÓ0Ð0Ü×&Ñ&¨Ô.Ü"¤KÓ0Ð0Ü$ gÓ.ˆCØ—>’>Ü ¤.Ó1Ð1Ü˜dŸh™h›j¨%°°aÔ8ÙÜ×.Ñ.°	¼8ÀFÓ;KÓL�Ü×'Ñ'¨´¸Ó0@À$ÕGð øô ò 	9Ý#¬Ö(8Ñ#ð	9ús   ‚DD ÄD9Ä8D9Nc                 óð	  — | j                   }|j                  sJ ‚t        j                  |«      }t	        |«      }|j                  «       }t        j                  |«      }	t        |«      \  }
}	 |
dk(  sO|	t        j                  t        j                  t        j                  t        j                  t        j                  fvr t        j                  |t        d«      «       n|
dkD  rt        j                  ||d |
 «       |dk\  rdnd}|	t        j                   t        j                  t        j"                  t        j$                  t        j&                  t        j                  t        j                  t        j                  t        j                  t        j(                  t        j*                  fvrd}|r t        j,                  |t        d«      |«       |	t        j"                  k(  r|
dkD  rŒt        j.                  ||d |
 «       nr|
dkD  rmt        j0                  |j                  «       |
«      }t3        |
«      D ]  }t        j4                  |||   «       Œ t        j6                  |t        d«      |«       t        j8                  |«       t        j:                  |«       d|_        |dk  s|dk\  r|sy	 t        jF                  t        j                  |«      t        d«      t        d«      «      }|j                  stI        tJ        «      ‚t        jL                  |t        d	«      «      }|j                  s t        jN                  |t        d	«      d
«      }t        jP                  |j                  «       d«      }|dk\  re|dk  r`t        jR                  |t        d«      |«       t        jR                  |t        d«      |«       t        jR                  |t        d«      |«       |r@t        jT                  |t        d«      |«       t        jT                  |t        d«      |«       t        jL                  |t        d«      «      }|j                  s t        jN                  |t        d«      d
«      }t        j6                  |t        d«      |«       y# t>        $ r$}t@        r
tC        «        tE        d|› �«       ‚ d }~ww xY w# t>        $ r$}t@        r
tC        «        tE        d|› �«       ‚ d }~ww xY w)Nr   ÚICr   ÚRotatezcannot update annot: Tr  r  Ú	Resourcesr   r   ÚCAÚcaÚBMÚ	ExtGStateÚHz#cannot set opacity or blend mode
: )+r³   r»   r�   rì   rÏ   r  ré   ÚJM_color_FromSequenceÚPDF_ANNOT_SQUAREÚPDF_ANNOT_CIRCLEÚPDF_ANNOT_LINEÚPDF_ANNOT_POLY_LINEÚPDF_ANNOT_POLYGONÚpdf_dict_delrô   Úpdf_set_annot_interior_colorÚPDF_ANNOT_CARETÚPDF_ANNOT_FREE_TEXTÚPDF_ANNOT_FILE_ATTACHMENTÚPDF_ANNOT_INKÚPDF_ANNOT_STAMPÚPDF_ANNOT_TEXTÚpdf_dict_put_intÚpdf_set_annot_colorÚpdf_new_arrayÚrangeÚpdf_array_push_realÚpdf_dict_putÚpdf_dirty_annotÚpdf_update_annotÚresynth_requiredre   r÷   rt   rp   r  rÍ   r  ró   Úpdf_dict_put_dictÚpdf_new_dictÚpdf_dict_put_realÚpdf_dict_put_name)r'   ÚopacityÚ
blend_modeÚ
fill_colorÚrotaterÎ   r  rÅ   ÚpdfÚtype_ÚnfcolÚfcolÚ
insert_rotÚcolÚiÚer  Ú	resourcesÚalp0Úextgs                       r(   Ú_update_appearancezAnnot._update_appearance‰  sõ  € Ø—	‘	ˆØ×ÒÐÐÜ×'Ñ'¨Ó/ˆ	Ü˜uÓ%ˆØ�h‰h‹jˆÜ×$Ñ$ eÓ,ˆÜ+¨JÓ7‰ˆˆtð1	ð ˜Šz˜UÜ×*Ñ*Ü×*Ñ*Ü×(Ñ(Ü×-Ñ-Ü×+Ñ+ð+ñ ô ×"Ñ" I¬x¸«~Õ>Ø˜’Ü×2Ñ2°E¸4ÀÀ¸<ÔHà$¨šk™¨qˆJØÜ×)Ñ)Ü×*Ñ*Ü×-Ñ-Ü×3Ñ3Ü×'Ñ'Ü×(Ñ(Ü×-Ñ-Ü×+Ñ+Ü×*Ñ*Ü×)Ñ)Ü×(Ñ(ðñ ð �
áÜ×&Ñ& y´(¸8Ó2DÀfÔMð œ×1Ñ1Ò1Ø˜1’9Ü×-Ñ-¨e°T¸&¸5°\ÕBØ˜’Ü×)Ñ)¨$¯(©(«*°eÓ<�Ü ž�AÜ×-Ñ-¨c°4¸±7Õ;ð 'ä×"Ñ" 9¬h°t«n¸cÔBÜ×!Ñ! %Ô(Ü×"Ñ" 5Ô)Ø#$ˆCÔ ð �aŠK˜7 aš<±Øð 	Ü×$Ñ$Ü×'Ñ'¨Ó.Ü˜T“NÜ˜S“MóˆBð
 —=’=Ü"¤KÓ0Ð0ä×*Ñ*¨B´¸Ó0EÓFˆIØ×'Ò'Ü!×3Ñ3°R¼À+Ó9NÐPQÓR�	ä×%Ñ% t§x¡x£z°1Ó5ˆDØ˜!Š| ¨!¢Ü×'Ñ'¨¬x¸«~¸wÔGÜ×'Ñ'¨¬x¸«~¸wÔGÜ×'Ñ'¨´H¸T³NÀGÔLáÜ×'Ñ'¨¬x¸«~¸zÔJÜ×'Ñ'¨´H¸T³NÀJÔOä×%Ñ% y´(¸;Ó2GÓHˆDØ—?’?Ü×.Ñ.°	¼8ÀKÓ;PÐRSÓT�ä×Ñ ¤h¨s£m°TÔ:ð øôW ò 	Ý#ÜÔ ÜÐ,¨Q¨CÐ0Ô1Øûð		ûôL ò 	Ý#¬Ô(8ÜÐ;¸A¸3Ð?Ô@Øûð	ús2   Á/H=R Ê:GS Ò	SÒ!S Ó SÓ	S5ÓS0Ó0S5c                 ó  — t        | «       | j                  }t        j                  |«      }t        j                  |t        d«      t        d«      «      }|j                  s7t        t        j                  t        j                  j                  «      «      }n*t        j                  |t        d«      «      }t        |«      }t        |«      | j                  «       j                  z  }|| j                  «       j                  z  }|S )zannotation appearance bboxr  r  r  )ÚCheckParentr³   r�   rì   r  rô   r»   ÚJM_py_from_rectÚFzRectÚFixed_INFINITEr  r  Ú
get_parentÚtransformation_matrixÚderotation_matrix)r'   rÎ   r  r  rÿ   rä   s         r(   Úapn_bboxzAnnot.apn_bboxì  s½   € ô 	�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü× Ñ  ¬H°T«N¼HÀS»MÓJˆØ�}Š}Ü!¤%§,¡,¬u¯|©|×/JÑ/JÓ"KÓL‰Cä×*Ñ*¨2¬x¸Ó/?Ó@ˆDÜ! $Ó'ˆCä�3‹i˜$Ÿ/™/Ó+×AÑAÑAˆØˆt�‰Ó ×2Ñ2Ñ2ˆØˆ
r)   c                 óü  — 	 t        | «       | j                  }t        |t        j                  «      sJ ‚t        j
                  t        j                  |«      t        j                  t        j                  «      }|j                  st        t        j                  «       «      S t        j                  |t        j                  «      }t        |«      }t        |«      }|S # t        $ r t         r
t#        «        ‚ w xY w)zannotation appearance matrix)rS  r³   r<   r�   rÓ   r  rì   ÚPDF_ENUM_NAME_APÚPDF_ENUM_NAME_Nr»   ÚJM_py_from_matrixÚFzMatrixÚpdf_dict_get_matrixÚPDF_ENUM_NAME_MatrixÚMatrixre   r÷   rt   )r'   rÎ   r  Úmatrÿ   s        r(   Ú
apn_matrixzAnnot.apn_matrixý  sÁ   € ð	Ü˜ÔØ—I‘IˆEÜ˜e¤U§^¡^Ô4Ð4Ð4Ü×$Ñ$Ü×'Ñ'¨Ó.Ü×*Ñ*Ü×)Ñ)óˆBð
 —=’=Ü(¬¯©Ó)9Ó:Ð:Ü×+Ñ+¨B´×0JÑ0JÓKˆCÜ# CÓ(ˆCä˜“+ˆCàˆJøÜò 	Ý#¬Ô(8Øð	ús   ‚B!C  Â$;C  Ã C;c           
      óh  — t        | «       | j                  }t        j                  |«      }t        j                  |t        d«      «      }d}|j                  r t        t        j                  |«      «      }|S t        j                  |t        d«      t        d«      t        d«      t        d«      «      }t        j                  |«      ræt        j                  |«      }t        |«      D ]Ã  }t        j                  ||«      }t        j                  |«      sŒ/t        j                  |«      }t        |«      D ]r  }	t        j                  ||	«      }
t        j                  |
t        d«      «      dk(  sŒ<t        t        j                  t        j                  ||	«      «      «      }|c c S  ŒÅ |S )zannotation BlendModer$  Nr  r  r!  r%  r   )rS  r³   r�   rì   ró   rô   r»   rñ   Úpdf_to_namer  Úpdf_is_dictÚpdf_dict_lenr8  Úpdf_dict_get_valÚpdf_dict_get_keyÚ
pdf_objcmp)r'   rÎ   r  rü   rC  rC   rL  Úobj1ÚmÚjÚobj2s              r(   Ú	blendmodezAnnot.blendmode  s\  € ô 	�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü× Ñ  ¬H°T«NÓ;ˆØˆ
Ø�>Š>Ü*¬5×+<Ñ+<¸SÓ+AÓBˆJØÐä×!Ñ!ØÜ˜“Ü˜“Ü˜Ó%Ü˜Ó%óˆô ×Ñ˜SÔ!Ü×"Ñ" 3Ó'ˆAÜ˜1–X�Ü×-Ñ-¨c°1Ó5�Ü×$Ñ$ TÕ*Ü×*Ñ*¨4Ó0�AÜ" 1žX˜Ü$×5Ñ5°d¸AÓ>˜Ü ×+Ñ+¨D´(¸4³.ÓAÀQÓFÜ):¼5×;LÑ;LÌU×McÑMcÐdhÐjkÓMlÓ;mÓ)n˜JØ#-Ô-ñ	 &ð	 ð Ðr)   c                 ó|  — t        | «       | j                  d   }|t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  fvr
t        «       S t        j                  | j                  «      }t        |«      }|S )zBorder information.r   )rS  r·   r�   r)  r0  r2  r*  r+  r,  r(  r4   rì   r³   ÚJM_annot_border)r'   ÚatypeÚaorE   s       r(   ÚborderzAnnot.border5  s‘   € ô 	�DÔØ—	‘	˜!‘ˆØÜ×&Ñ&Ü×)Ñ)Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&ðñ ô “6ˆMÜ× Ñ  §¡Ó+ˆÜ˜bÓ!ˆØˆ
r)   c                 óÎ   — t        | «       | j                  }t        j                  t        j                  |«      «      }t        ddd|¬«      }t        j                  |||«       y)z!Clean appearance contents stream.r   r   )ÚrecurseÚinstance_formsÚasciiÚsanitizeN)rS  r³   r�   Úpdf_get_bound_documentrì   Ú_make_PdfFilterOptionsÚpdf_filter_annot_contents)r'   rz  rÎ   rF  Úfilter_s        r(   Úclean_contentszAnnot.clean_contentsH  sQ   € ä�DÔØ—	‘	ˆÜ×*Ñ*¬5×+>Ñ+>¸uÓ+EÓFˆÜ(°À1ÈAÐX`ÔaˆÜ×'Ñ'¨¨U°GÕ<r)   c                 óâ   — 	 t        | «       | j                  }t        |t        j                  «      sJ ‚t        t        j                  |«      «      S # t        $ r t        r
t        «        ‚ w xY w)zColor definitions.)
rS  r³   r<   r�   rÓ   ÚJM_annot_colorsrì   re   r÷   rt   rÔ   s     r(   rú   zAnnot.colorsP  s\   € ð	Ü˜ÔØ—I‘IˆEÜ˜e¤U§^¡^Ô4Ð4Ð4Ü"¤5×#6Ñ#6°uÓ#=Ó>Ð>øÜò 	Ý#¬Ô(8Øð	ús   ‚AA ÁA.c                 óò  — t        | «       | j                  }t        j                  |«      }t	        |«      }	 t        |«      }|snt        j                  ||«       Œ%t        j                  |t        d«      «       t        j                  |j                  «       t        d«      «      }t        j                  |«      }d}t        |dz
  dd«      D ]s  }t        j                  ||«      }	t        j                  |	t        d«      «      }
|	j                  sŒEt        j                  |
|«      rŒ\t        j                   ||«       d}Œu |r/t        j"                  |j                  «       t        d«      |«       yy)z*Delete 'Popup' and responding annotations.r   ÚPopupÚAnnotsr   éÿÿÿÿÚParentN)rS  r³   r�   rì   rÏ   ÚJM_find_annot_irtÚpdf_delete_annotr-  rô   ró   rü   Úpdf_array_lenr8  Úpdf_array_getr»   rk  Úpdf_array_deleter:  )r'   rÎ   r  rÅ   Ú	irt_annotÚannotsrC   ÚfoundrL  ÚoÚps              r(   Údelete_responseszAnnot.delete_responses\  s4  € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü˜uÓ%ˆØÜ)¨%Ó0ˆIÙØÜ×"Ñ" 4¨Ô3ð	 ô
 	×Ñ˜9¤h¨wÓ&7Ô8ä×#Ñ# D§H¡H£J´¸Ó0BÓCˆÜ×Ñ Ó'ˆØˆÜ�q˜‘s˜B Ö#ˆAÜ×#Ñ# F¨AÓ.ˆAÜ×"Ñ" 1¤h¨xÓ&8Ó9ˆAØ—<’<ØÜ×#Ñ# A yÕ1Ü×&Ñ& v¨qÔ1Ø‘ð $ñ Ü×Ñ˜tŸx™x›z¬8°HÓ+=¸vÕFð r)   c                 óÊ  — t        | «       t        «       }d}d}d}| j                  }t        j                  |«      }t        j
                  |«      }|t        j                  k7  rt        t        «      ‚t        j                  |t        d«      t        d«      t        d«      «      }|j                  st        dt        «       t        j                  |t        d«      «      }	t        j                  |	t        d«      «      }
|
j                  rt        j                  |
«      }n@t        j                  |	t        d«      «      }
|
j                  rt        j                  |
«      }t        j                  |	t        d«      «      }
|
j                  rt        j                  |
«      }t        j                  |t        d	«      «      }
|
j                  rt        j                   |
«      }t        j                  |t        d
«      t        d«      «      }
|
j                  rt        j                   |
«      }t#        «      |t$        <   t'        |«      |t(        <   ||t*        <   ||t,        <   |S )zAttached file information.r…  NÚFSÚEFÚFúbad PDF: file entry not foundÚUFÚDescÚLengthÚParamsÚSize)rS  r4   r³   r�   rì   ré   r1  Ú	TypeErrorÚMSG_BAD_ANNOT_TYPEr  rô   r»   ÚRAISEPYÚJM_Exc_FileDataErrorró   rð   rõ   ÚJM_EscapeStrFromStrÚdictkey_filenamerñ   Údictkey_descrÚdictkey_lengthÚdictkey_size)r'   r  ÚlengthÚsizeÚdescrÎ   r  rG  r   Úfsr�  rd   s               r(   Ú	file_infozAnnot.file_infow  sÝ  € ô 	�DÔÜ‹fˆØˆØˆØˆØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü×$Ñ$ UÓ+ˆØ”E×3Ñ3Ò3ÜÔ/Ó0Ð0Ü×$Ñ$ØÜ˜“Ü˜“Ü˜“ó	ˆð × Ò ÜÐ4Ô6JÔKä×Ñ 	¬8°D«>Ó:ˆä×Ñ˜r¤8¨D£>Ó2ˆØ�<Š<Ü×/Ñ/°Ó2‰Hä×"Ñ" 2¤x°£}Ó5ˆAØ�|Š|Ü ×3Ñ3°AÓ6�ä×Ñ˜r¤8¨FÓ#3Ó4ˆØ�<Š<Ü×+Ñ+¨AÓ.ˆDä×Ñ˜v¤x°Ó'9Ó:ˆØ�<Š<Ü×%Ñ% aÓ(ˆFä×Ñ ¬°Ó(:¼HÀVÓ<LÓMˆØ�<Š<Ü×#Ñ# AÓ&ˆDä!4°XÓ!>ˆÔÑÜ/°Ó5ˆŒ]ÑØ%ˆŒ^ÑØ!ˆŒ\ÑØˆ
r)   c                 óZ   — t        | «       | j                  }t        j                  |«      S )zFlags field.)rS  r³   r�   Úpdf_annot_flagsrÔ   s     r(   ÚflagszAnnot.flags©  s&   € ô 	�DÔØ—	‘	ˆÜ×$Ñ$ UÓ+Ð+r)   c                 óª  — t        | «       | j                  }t        j                  |«      }t        j                  |«      }|t        j
                  k7  rt        t        «      ‚t        j                  |t        d«      t        d«      t        d«      «      }|j                  st        dt        «       t        j                  |«      }t        |«      }|S )zRetrieve attached file content.r“  r”  r•  r–  )rS  r³   r�   rì   ré   r1  rœ  r�  r  rô   r»   rž  rŸ  r	  r
  )r'   rÎ   r  r·   r   Úbufr  s          r(   Úget_filezAnnot.get_file°  s¦   € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü×#Ñ# EÓ*ˆØ”5×2Ñ2Ò2ÜÔ/Ó0Ð0Ü×$Ñ$ Y´¸³ÄÈÃÔPXÐY\ÓP]Ó^ˆØ× Ò ÜÐ4Ô6JÔKÜ×#Ñ# FÓ+ˆÜ˜sÓ#ˆØˆ
r)   c                 óâ   — t        | «       d}| j                  }t        j                  |«      }t        j                  |t        d«      «      }|j                  rt        j                  |«      }|S )z*Get annotation optional content reference.r   ÚOC©rS  r³   r�   rì   ró   rô   r»   rî   )r'   ÚocrÎ   r  rü   s        r(   Úget_oczAnnot.get_oc¿  sZ   € ä�DÔØˆØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü× Ñ  ¬H°T«NÓ;ˆØ�>Š>Ü×!Ñ! #Ó&ˆBØˆ	r)   c                 ó  — 	 t        | d«      }|S # t        $ ro t        | j                  «      }t	        |t
        j                  «      sJ ‚|j                  rt        |j                  «       «      nd }t        ||«      }|| _        Y |S w xY w)NrÖ   )rØ   ÚAttributeErrorrÏ   r³   r<   r�   rÂ   r»   r°   r  rÁ   rÖ   )r'   rE   rÅ   r¸   s       r(   rW  zAnnot.get_parentÍ  s   € ð	Ü˜4 Ó*ˆCð ˆ
øô ò 	Ü" 4§9¡9Ó-ˆDÜ˜t¤U§]¡]Ô3Ð3Ð3Ø04·²”x §¡£Ô,ÀTˆHÜ�t˜XÓ&ˆCàˆD�Kð ˆ
ð	ús   ‚ �A4BÂBc                 óº  — t        | «       t        t        t        dœ}t	        |«      t
        u r |j                  |j                  «       d«      }|rt        |dz  |dz  «      }t        |«      }|}|st        j                  «       }t        j                  | j                  ||t        j                  d«      |«      }t        |«      }	|r|	j!                  ||«       |	S )zannotation Pixmap)ÚgrayÚrgbÚcmykNéH   r   )rS  ÚcsGRAYÚcsRGBÚcsCMYKr·   rÙ   r7   Úlowerrb  ÚJM_matrix_from_pyr�   Úfz_device_rgbÚpdf_new_pixmap_from_annotr³   ÚFzSeparationsÚPixmapÚset_dpi)
r'   ÚmatrixÚdpiÚ
colorspaceÚalphaÚcspacesÚctmÚcsÚpixrE   s
             r(   Ú
get_pixmapzAnnot.get_pixmapÛ  s½   € ô 	�DÔÜ!¬%¼Ñ@ˆÜ�
ÓœsÑ"Ø Ÿ™ Z×%5Ñ%5Ó%7¸Ó>ˆJÙÜ˜C "™H c¨B¡hÓ/ˆFÜ Ó'ˆØˆÙÜ×$Ñ$Ó&ˆBä×-Ñ-¨d¯i©i¸¸bÄ%×BUÑBUÐVWÓBXÐZ_Ó`ˆÜ�S‹kˆÙØ�K‰K˜˜SÔ!Øˆ
r)   c                 ó~  — t        | «       | j                  }t        j                  |«      }t        j                  |«      }t        j
                  |t        d«      «      }|t        j                  k7  s|j                  st        t        «      ‚t        j
                  |t        d«      «      j                  rt        dt        «       t        «       }t        j
                  |t        d«      «      }|j                  rt        j                  |«      |d<   t        j
                  |t        d«      «      }|j                  rt        j                  |«      |d<   t        j
                  |t        d«      «      }|j                  rt        j                  |«      |d	<   t        j
                  |t        d
«      «      }|j                  rt        j                   |«      |d<   t        j"                  |d«      }|j                  rt        j                   |«      |d<   t        j$                  |«      }t'        |«      }||d<   |S )zRetrieve sound stream.ÚSoundr•  zunsupported sound streamÚRÚrateÚCÚchannelsÚBÚbpsÚEÚencodingÚCOÚcompressionr   )rS  r³   r�   rì   ré   ró   rô   ÚPDF_ANNOT_SOUNDr»   rœ  r�  rž  rŸ  r4   Úpdf_to_realrõ   rf  rë   r	  r
  )	r'   rÎ   r  r·   Úsoundr  rü   r®  r   s	            r(   Ú	get_soundzAnnot.get_soundï  s³  € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü×#Ñ# EÓ*ˆÜ×"Ñ" 9¬h°wÓ.?Ó@ˆØ”5×(Ñ(Ò(°×0@Ò0@ÜÔ/Ó0Ð0Ü×Ñ˜e¤X¨c£]Ó3×>Ò>ÜÐ/Ô1EÔFÜ‹fˆÜ× Ñ  ¬°«Ó6ˆØ�>Š>Ü×+Ñ+¨CÓ0ˆC�‰KÜ× Ñ  ¬°«Ó6ˆØ�>Š>Ü#×.Ñ.¨sÓ3ˆC�
‰OÜ× Ñ  ¬°«Ó6ˆØ�>Š>Ü×)Ñ)¨#Ó.ˆC�‰JÜ× Ñ  ¬°«Ó6ˆØ�>Š>Ü#×/Ñ/°Ó4ˆC�
‰OÜ×!Ñ! %¨Ó.ˆØ�>Š>Ü!&×!2Ñ!2°3Ó!7ˆC�ÑÜ×#Ñ# EÓ*ˆÜ! #Ó&ˆØˆˆH‰Øˆ
r)   c                 ó4   — t        j                  | g|¢­i |¤ŽS r+   ©ÚutilsÚget_text©r'   ÚargsÚkwargss      r(   râ  zAnnot.get_text  ó   € Ü�~‰~˜dÐ4 TÒ4¨VÑ4Ð4r)   c                 ó4   — t        j                  | g|¢­i |¤ŽS r+   )rá  Úget_textboxrã  s      r(   rè  zAnnot.get_textbox  s   € Ü× Ñ  Ð7¨Ò7°Ñ7Ð7r)   c                 ó  — t        | «       t        j                  |«      }|rbt        t        d«      sJ dt        › d�«       ‚t        |«      }|j                  «       |_        |xj                  t        j                  z  c_        | j                  }t        j                  ||«      }t        |«      }| j                  «       }t        |t        j                   «      r	||_        |S t        j$                  |«      |_        |S )zMake annotation TextPage.ÚFZ_STEXT_CLIP_RECTzMuPDF-z% does not support FZ_STEXT_CLIP_RECT.)rS  r�   ÚFzStextOptionsr9   Úmupdf_versionÚJM_rect_from_pyÚinternalÚclipr¬  rê  r³   ÚFzStextPageÚTextPagerW  r<   ÚweakrefÚ	ProxyTyperÖ   Úproxy)	r'   rï  r¬  ÚoptionsÚclip2rÎ   Ú	stextpagerE   r�  s	            r(   Úget_textpagezAnnot.get_textpage  sÏ   € ä�DÔÜ×&Ñ& uÓ-ˆÙÜœ5Ð"6Ô7Ðv¸6Ä-ÀÐPuÐ9vÓvÐ7Ü# DÓ)ˆEØ Ÿ>™>Ó+ˆGŒLØ�MŠMœU×5Ñ5Ñ5�MØ—	‘	ˆÜ×%Ñ% e¨WÓ5ˆ	Ü�yÓ!ˆØ�O‰OÓˆÜ�aœ×*Ñ*Ô+ØˆCŒJð ˆ
ô !Ÿ™ qÓ)ˆCŒJØˆ
r)   c                 ó´   — t        | «       | j                  }t        j                  t        j                  |«      t        d«      «      }|j                  rdS dS )z Check if annotation has a Popup.rƒ  TF)rS  r³   r�   ró   rì   rô   r»   )r'   rÎ   rü   s      r(   Ú	has_popupzAnnot.has_popup(  sH   € ô 	�DÔØ—	‘	ˆÜ× Ñ ¤×!4Ñ!4°UÓ!;¼XÀgÓ=NÓOˆØ—~’~ˆtÐ0¨5Ð0r)   c                 ó^  — t        | «       | j                  }t        «       }t        t	        j
                  |«      «      |t        <   t	        j                  t	        j                  |«      t        d«      «      }t        t	        j                  |«      «      |t        <   t	        j                  t	        j                  |«      t        d«      «      }t        t	        j                  |«      «      |t        <   t	        j                  t	        j                  |«      d«      }t        t	        j                  |«      «      |t        <   t	        j                  t	        j                  |«      t        d«      «      }t        t	        j                  |«      «      |t         <   t	        j                  t	        j                  |«      d«      }t	        j                  |«      |t"        <   t	        j                  t	        j                  |«      d«      }t        t	        j                  |«      «      |t$        <   |S )zVarious information details.ÚNameÚTÚCreationDateÚMÚSubjÚNM)rS  r³   r4   rñ   r�   Úpdf_annot_contentsÚdictkey_contentró   rì   rô   rf  Údictkey_namerð   Údictkey_titlerë   Údictkey_creationDateÚdictkey_modDateÚdictkey_subjectÚ
dictkey_id)r'   rÎ   r  r�  s       r(   Úinfoz
Annot.info0  s—  € ô 	�DÔØ—	‘	ˆÜ‹fˆä0´×1IÑ1IÈ%Ó1PÓQˆŒOÑä×Ñœu×2Ñ2°5Ó9¼8ÀFÓ;KÓLˆÜ-¬e×.?Ñ.?ÀÓ.BÓCˆŒLÑô ×Ñœu×2Ñ2°5Ó9¼8ÀC»=ÓIˆÜ.¬u×/GÑ/GÈÓ/JÓKˆŒMÑô ×Ñ¤× 3Ñ 3°EÓ :¸NÓKˆÜ$5´e×6NÑ6NÈqÓ6QÓ$RˆÔ Ñ!ô ×Ñœu×2Ñ2°5Ó9¼8ÀC»=ÓIˆÜ0´×1IÑ1IÈ!Ó1LÓMˆŒOÑô ×Ñ¤× 3Ñ 3°EÓ :¸FÓCˆÜ$×7Ñ7¸Ó:ˆŒOÑô ×Ñ¤× 3Ñ 3°EÓ :¸DÓAˆÜ+¬E×,DÑ,DÀQÓ,GÓHˆŒJ‰àˆ
r)   c                 óÆ   — | j                   }t        j                  |«      }t        j                  |t	        d«      «      }|j
                  syt        j                  |«      S )z%
        annotation IRT xref
        ÚIRTr   )r³   r�   rì   ró   rô   r»   rî   )r'   rÎ   r  Úirts       r(   Úirt_xrefzAnnot.irt_xrefR  sN   € ð
 —	‘	ˆÜ×'Ñ'¨Ó/ˆ	Ü× Ñ  )¬X°e«_Ó=ˆØ�~Š~ØÜ×Ñ Ó%Ð%r)   c                 óV   — t        | «       t        j                  | j                  «      S )z-Get 'open' status of annotation or its Popup.)rS  r�   Úpdf_annot_is_openr³   r-   s    r(   Úis_openzAnnot.is_open^  s!   € ô 	�DÔÜ×&Ñ& t§y¡yÓ1Ð1r)   c                 óº   — | j                   }t        j                  |«      }|t        j                  k(  ryt	        t        d«      sJ ‚t        j
                  |«      S )zannotation languageNÚfz_string_from_text_language2)r³   r�   Úpdf_annot_languageÚFZ_LANG_UNSETr9   r  )r'   Ú
this_annotÚlangs      r(   ÚlanguagezAnnot.languaged  sP   € ð —Y‘Yˆ
Ü×'Ñ'¨
Ó3ˆØ”5×&Ñ&Ò&ØÜ”uÐ=Ô>Ð>Ð>Ü×2Ñ2°4Ó8Ð8r)   c                 ó¸   — t        | «       | j                  }t        j                  |«      syt        j                  |«      }t        j
                  |«      }||fS )zLine end codes.N)rS  r³   r�   Ú pdf_annot_has_line_ending_stylesÚpdf_annot_line_start_styleÚpdf_annot_line_end_style)r'   rÎ   ÚlstartÚlends       r(   Ú	line_endszAnnot.line_endsn  sP   € ô 	�DÔØ—	‘	ˆä×5Ñ5°eÔ<ØÜ×1Ñ1°%Ó8ˆÜ×-Ñ-¨eÓ4ˆØ�tˆ|Ðr)   c                 óâ  — t        | «       | j                  }t        |t        j                  «      sJ ‚|j
                  sJ ‚t        j                  |«      }|t        j                  k7  rt        j                  |«      }nt        j                  |«      }|j
                  rt        |«      nd}|syd|_        |j                  «       j                  j                  «       | j                  «       j                  j                  «       k(  sJ ‚||j                  j                  t!        |«      <   |j"                  d   t        j                  k(  r"t%        «       }t&        j)                  ||«       |}|S )zNext annotation.NTr   )rS  r³   r<   r�   rÓ   r»   ré   ÚPDF_ANNOT_WIDGETÚpdf_next_annotÚpdf_next_widgetrÑ   rÞ   rW  Úm_internal_valuerÖ   Ú_annot_refsÚidr·   ÚWidgetrø   Ú_fill_widget)r'   r  rG  rÎ   rÿ   Úwidgets         r(   Únextz
Annot.nextz  s  € ô 	�DÔØ—Y‘Yˆ
Ü˜*¤e§n¡nÔ5Ð5Ð5Ø×$Ò$Ð$Ð$Ü×$Ñ$ ZÓ0ˆØ”E×*Ñ*Ò*Ü×(Ñ(¨Ó4‰Eä×)Ñ)¨*Ó5ˆEà#×.Ò.Œe�EŒl°DˆÙØØˆŒØ�~‰~Ó×$Ñ$×5Ñ5Ó7¸4¿?¹?Ó;L×;QÑ;Q×;bÑ;bÓ;dÒdÐdÐdØ*-ˆ�
‰
×Ñœr #›wÑ'à�8‰8�A‰;œ%×0Ñ0Ò0Ü“XˆFÜ×Ñ˜s FÔ+ØˆCØˆ
r)   c                 óú   — t        | «       | j                  }d}t        j                  t        j                  |«      t        j
                  «      }t        j                  |«      rt        j                  |«      }|S )zOpacity.r…  )rS  r³   r�   ró   rì   ÚPDF_ENUM_NAME_CAÚpdf_is_numberrÜ  )r'   rÎ   Úopyr#  s       r(   rB  zAnnot.opacity”  s`   € ô 	�DÔØ—	‘	ˆØˆÜ×Ñ¤×!4Ñ!4°UÓ!;¼U×=SÑ=SÓTˆÜ×Ñ˜rÔ"Ü×#Ñ# BÓ'ˆCØˆ
r)   c                 óè  — t        | «       t        j                  t        j                  j                  «      }| j                  }t        j
                  |«      }t        j                  |t        d«      «      }|j                  rt        j                  |t        d«      «      }t        |«      }t        |«      | j                  «       j                  z  }|| j                  «       j                  z  }|S )zannotation 'Popup' rectanglerƒ  r  )rS  r�   rU  rV  r³   rì   ró   rô   r»   r  rT  r  rW  rX  rY  )r'   rä   rÎ   r  rü   rÿ   s         r(   Ú
popup_rectzAnnot.popup_rectŸ  sµ   € ô 	�DÔÜ�|‰|œEŸL™L×7Ñ7Ó8ˆØ—	‘	ˆÜ×'Ñ'¨Ó/ˆ	Ü× Ñ  )¬X°gÓ->Ó?ˆØ�>Š>Ü×*Ñ*¨3´¸Ó0@ÓAˆDä˜dÓ#ˆô �3‹i˜$Ÿ/™/Ó+×AÑAÑAˆØˆt�‰Ó ×2Ñ2Ñ2ˆàˆ
r)   c                 óâ   — t        | «       d}| j                  }t        j                  |«      }t        j                  |t        d«      «      }|j                  rt        j                  |«      }|S )zannotation 'Popup' xrefr   rƒ  r²  )r'   rý   rÎ   r  rü   s        r(   Ú
popup_xrefzAnnot.popup_xref²  s]   € ô 	�DÔØˆØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü× Ñ  ¬H°WÓ,=Ó>ˆØ�>Š>Ü×#Ñ# CÓ(ˆDØˆr)   c                 óä   — t         r t        j                  | j                  «      }nt	        j
                  | j                  «      }t        |«      }| j                  «       }||j                  z  }|S )zannotation rectangle)	r  r   ÚAnnot_rect3r³   r�   Úpdf_bound_annotr  rW  rY  )r'   rÿ   r�  s      r(   rä   z
Annot.rect¾  s]   € õ Ü×#Ñ# T§Y¡YÓ/‰Cä×'Ñ'¨¯	©	Ó2ˆCÜ�3‹iˆð �O‰OÓˆð 	ˆq×"Ñ"Ñ"ˆØˆ
r)   c           	      óø  — t        j                  | j                  «      }t        j                  |t	        d«      «      }t        j
                  |«      dk(  r¤t        j                  t        j                  |d«      «      t        j                  t        j                  |d«      «      t        j                  t        j                  |d«      «       t        j                  t        j                  |d«      «       fS y)z6
        annotation delta values to rectangle
        ÚRDé   r   r   r   r   N)r�   rì   r³   ró   rô   r‰  rÜ  rŠ  )r'   r  Úarrs      r(   Ú
rect_deltazAnnot.rect_deltaÒ  sÂ   € ô
 ×'Ñ'¨¯	©	Ó2ˆ	Ü× Ñ  )¬X°d«^Ó<ˆÜ×Ñ Ó$¨Ò)ä×%Ñ%¤u×':Ñ':¸CÀÓ'CÓDÜ×%Ñ%¤u×':Ñ':¸CÀÓ'CÓDÜ×&Ñ&¬×(;Ñ(;¸SÀ!Ó(DÓEÐEÜ×&Ñ&¬×(;Ñ(;¸SÀ!Ó(DÓEÐEð	ð ð *r)   c                 óâ   — t        | «       | j                  }t        j                  t        j                  |«      t        j
                  «      }|j                  syt        j                  |«      S )zannotation rotationr…  )rS  r³   r�   ró   rì   ÚPDF_ENUM_NAME_Rotater»   rõ   )r'   rÎ   Úrotations      r(   r=  zAnnot.rotationá  sU   € ô 	�DÔØ—	‘	ˆÜ×%Ñ%¤u×':Ñ':¸5Ó'AÄ5×C]ÑC]Ó^ˆØ×"Ò"ØÜ×Ñ Ó*Ð*r)   c                 óœ  — t        | «       | j                  «       }|j                  }|j                  }||| z  z  }| j                  }t        j                  |«      }t        j                  |t        d«      t        d«      «      }|j                  st        t        «      ‚t        |«      }t        j                  |t        d«      |«       y)z1
        Set annotation appearance bbox.
        r  r  r  N)rS  rW  Úrotation_matrixrX  r³   r�   rì   r  rô   r»   rÍ   r  rí  r  )	r'   r  rÅ   Úrotrc  rÎ   r  r  rä   s	            r(   Úset_apn_bboxzAnnot.set_apn_bboxë  s¦   € ô 	�DÔØ�‰Ó ˆØ×"Ñ"ˆØ×(Ñ(ˆØ��s�d‘
ÑˆØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü× Ñ  ¬H°T«N¼HÀS»MÓJˆØ�}Š}Ü¤Ó,Ð,Ü˜tÓ$ˆÜ×Ñ ¤H¨VÓ$4°dÕ;r)   c                 ó:  — t        | «       | j                  }t        j                  |«      }t        j                  |t        d«      t        d«      «      }|j                  st        t        «      ‚t        |«      }t        j                  |t        d«      |«       y)z!Set annotation appearance matrix.r  r  rb  N)rS  r³   r�   rì   r  rô   r»   rÍ   r  rÀ  Úpdf_dict_put_matrix)r'   rÆ  rÎ   r  r  rc  s         r(   Úset_apn_matrixzAnnot.set_apn_matrixü  sr   € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü× Ñ  ¬H°T«N¼HÀS»MÓJˆØ�}Š}Ü¤Ó,Ð,Ü Ó'ˆÜ×!Ñ! "¤h¨xÓ&8¸#Õ>r)   c                 óœ   — t        | «       | j                  }t        j                  |«      }t        j                  |t        d«      |«       y)zSet annotation BlendMode.r$  N©rS  r³   r�   rì   rA  rô   )r'   rC  rÎ   r  s       r(   Úset_blendmodezAnnot.set_blendmode  s9   € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü×Ñ 	¬8°D«>¸:ÕFr)   c                 óÒ  — t        | «       | j                  dd \  }}|t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  fvrt        d|› d�«       y|t        j                  t        j                  t        j                  t        j                  fvr|dkD  rt        d|› d�«       d}t        |«      t        ur||||dœ}|j                  d	d«       |j                  d
d«       |j                  dd«       |j                  dd«       |d	   €d|d	<   |d   €d|d<   t        |d   d«      r2t        |d   «      |d<   |d   D ]  }t        |t         «      rŒd|d<    n | j"                  }	t        j$                  |	«      }
t        j&                  |
«      }t)        |||
«      S )zbSet border properties.

        Either a dict, or direct arguments width, style, dashes or clouds.Nr   zCannot set border for 'ú'.r   zCannot set cloudy border for 'r…  )ÚwidthÚstyleÚdashesÚcloudsrJ  rK  rL  rM  Ú__getitem__)rS  r·   r�   r)  r0  r2  r*  r+  r,  r(  rp   r4   Ú
setdefaultr9   r¢   r<   r3   r³   rì   r{  ÚJM_annot_set_border)r'   ru  rJ  rK  rL  rM  rs  ÚatnamerA   rÎ   r  rF  s               r(   Ú
set_borderzAnnot.set_border  sÙ  € ô 	�DÔØŸ	™	 " 1˜‰ˆˆvØÜ×&Ñ&Ü×)Ñ)Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&ðñ ô Ð-¨f¨X°RÐ8Ô9ØØÜ×&Ñ&Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&ð	ñ ð ˜ŠzÜÐ8¸¸ÀÐCÔDØ�Ü�‹<œtÑ#Ø$¨uÀÐRXÑYˆFØ×Ñ˜' 2Ô&Ø×Ñ˜' 4Ô(Ø×Ñ˜( DÔ)Ø×Ñ˜( BÔ'Ø�'‰?Ð"Ø ˆF�7‰OØ�(ÑÐ#Ø!ˆF�8ÑÜ�6˜(Ñ# ]Ô3Ü$ V¨HÑ%5Ó6ˆF�8ÑØ˜xÔ(�Ü! $¬Õ,Ø'+�F˜8Ñ$Ùð )ð —	‘	ˆÜ×'Ñ'¨Ó/ˆ	Ü×*Ñ*¨IÓ6ˆÜ" F¨C°Ó;Ð;r)   c                 ó<  — | j                   d   t        j                  k(  rt        d«      ‚t	        | «       | j                  «       j                  }t        |«      t        ur||dœ}|j                  d«      }|j                  d«      }t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f}|g dfv r|j                  | j                   dd«       n`|�^t#        |d
«      rt%        |«      g}t'        |«       t)        |«      dv sJ ‚dt+        |«      › d�}|j                  | j                   d|«       |r-| j                   d   |vrt-        d| j                   d   z  «       y	|g dfv r|j                  | j                   dd«       y	|�_t#        |d
«      rt%        |«      g}t'        |«       t)        |«      dv sJ ‚dt+        |«      › d�}|j                  | j                   d|«       y	y	)z\Set 'stroke' and 'fill' colors.

        Use either a dict or the direct arguments.
        r   z'cannot be used for FreeText annotations©rè   Ústrokerè   rU  r,   rÓ  ú[]NÚ	__float__©r   r   r8  Ú[Ú]z0Warning: fill color ignored for annot type '%s'.r   r  )r·   r�   r0  r²   rS  rW  rÖ   r4   r7   r)  r(  r*  r+  r,  rê   Úxref_set_keyrý   r9   ÚfloatÚ
CheckColorr6   r£   rp   )r'   rú   rU  rè   r  Úfill_annotsÚss          r(   Ú
set_colorszAnnot.set_colors=  sé  € ð
 �9‰9�Q‰<œ5×4Ñ4Ò4ÜÐFÓGÐGä�DÔØ�o‰oÓ×&Ñ&ˆÜ�‹<œtÑ#Ø"¨fÑ5ˆFØ�z‰z˜&Ó!ˆØ—‘˜HÓ%ˆä×-Ñ-¬u×/EÑ/EÄu×G[ÑG[Ô]b×]vÑ]vÔx}÷  yPñ  yPÜ×-Ñ-ð0ˆð �b˜"�XÑØ×Ñ˜TŸY™Y¨¨TÕ2ØÐÜ�v˜{Ô+Ü ›-˜�Ü�vÔÜ�v“; )Ñ+Ð+Ð+Ø”I˜fÓ%Ð& aÐ(ˆAØ×Ñ˜TŸY™Y¨¨QÔ/á�D—I‘I˜a‘L¨Ñ3ÜÐFÈÏÉÐSTÉÑUÔVØØ�B˜�8ÑØ×Ñ˜TŸY™Y¨¨dÕ3ØÐÜ�t˜[Ô)Ü˜d›�}�Ü�tÔÜ�t“9 	Ñ)Ð)Ð)Ø”I˜d“OÐ$ AÐ&ˆAØ×Ñ˜TŸY™Y¨¨aÕ0ð r)   c                 ó^   — t        | «       | j                  }t        j                  ||«       y)zSet annotation flags.N)rS  r³   r�   Úpdf_set_annot_flags)r'   r¬  rÎ   s      r(   Ú	set_flagszAnnot.set_flagsf  s#   € ä�DÔØ—	‘	ˆÜ×!Ñ! %¨Õ/r)   c                 óð  — t        | «       t        |«      t        u r\|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }d}| j                  }t        j                  |«      }|rt        j                  ||«       |rÃ|rt        j                  ||«       |r3t        j                  t        j                  |«      t        d«      |«       |r3t        j                  t        j                  |«      t        d«      |«       |r>t        j                  t        j                  |«      d	t        j                  |«      «       yyy)
zSet various properties.ÚcontentNÚtitleÚcreationDateÚmodDateÚsubjectrþ  rÿ  r   )rS  r·   r4   r7   r³   r�   Úpdf_annot_has_authorÚpdf_set_annot_contentsÚpdf_set_annot_authorÚpdf_dict_put_text_stringrì   rô   Úpdf_dict_putsÚpdf_new_text_string)	r'   r
  re  rf  rg  rh  ri  rÎ   Ú	is_markups	            r(   Úset_infozAnnot.set_infol  s0  € ä�DÔÜ�‹:œÑØ—h‘h˜y¨$Ó/ˆGØ—H‘H˜W dÓ+ˆEØŸ8™8 N°DÓ9ˆLØ—h‘h˜y¨$Ó/ˆGØ—h‘h˜y¨$Ó/ˆGØˆDØ—	‘	ˆä×.Ñ.¨uÓ5ˆ	áÜ×(Ñ(¨°Ô8ÙáÜ×*Ñ*¨5°%Ô8áÜ×.Ñ.¬u×/BÑ/BÀ5Ó/IÌ8ÐTbÓKcÐeqÔráÜ×.Ñ.¬u×/BÑ/BÀ5Ó/IÌ8ÐTWË=ÐZaÔbáÜ×#Ñ#¤E×$7Ñ$7¸Ó$>ÀÌ×HaÑHaÐbiÓHjÕkð ð r)   c                 ó  — | j                   }t        j                  |«      }t        |«      }|dk  s&|t        j                  |j                  «       «      k\  rt        t        «      ‚t        j                  |j                  «       |d«      }t        j                  |t        d«      «      }t        j                  t        j                  |«      «      }|dk  rt        t        «      ‚t        j                  |t        d«      |«       y)z)
        Set annotation IRT xref
        r   r   ÚSubtyper  N)r³   r�   rì   rÏ   Úpdf_xref_lenr  r²   ÚMSG_BAD_XREFÚpdf_new_indirectró   rô   Úpdf_annot_type_from_stringrf  ÚMSG_IS_NO_ANNOTr:  )r'   rý   rÎ   r  rÅ   r  ÚsubtÚirt_subts           r(   Úset_irt_xrefzAnnot.set_irt_xrefŠ  sÅ   € ð —	‘	ˆÜ×'Ñ'¨Ó/ˆ	Ü˜uÓ%ˆØ�!Š8�tœu×1Ñ1°4·8±8³:Ó>Ò>ÜœlÓ+Ð+Ü×$Ñ$ d§h¡h£j°$¸Ó:ˆÜ×!Ñ! 3¬°Ó(;Ó<ˆÜ×3Ñ3´U×5FÑ5FÈÓ5MÓNˆØ�aŠ<ÜœoÓ.Ð.Ü×Ñ˜I¤x°£¸Õ<r)   c                 ó®   — t        | «       | j                  }|st        j                  }nt        j                  |«      }t        j
                  ||«       y)zSet annotation language.N)rS  r³   r�   r  Úfz_text_language_from_stringÚpdf_set_annot_language)r'   r  r  r  s       r(   Úset_languagezAnnot.set_languageš  sA   € ä�DÔØ—Y‘Yˆ
ÙÜ×&Ñ&‰Dä×5Ñ5°hÓ?ˆDÜ×$Ñ$ Z°Õ6r)   c                 ó¢   — t        | «       | j                  }t        j                  |«      rt        j                  |||«       yt        d«       y)zSet line end codes.zbad annot type for line endsN)rS  r³   r�   r  Ú pdf_set_annot_line_ending_stylesrí   )r'   ÚstartÚendrÎ   s       r(   Úset_line_endszAnnot.set_line_ends¤  s<   € ä�DÔØ—	‘	ˆÜ×1Ñ1°%Ô8Ü×2Ñ2°5¸%ÀÕEäÐ:Õ;r)   c                 óœ   — t        | «       | j                  }t        j                  |«      }t        j                  |t        d«      |«       y)zSet /Name (icon) of annotation.rü  NrF  )r'   r   rÎ   r  s       r(   Úset_namezAnnot.set_name­  s:   € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü×Ñ 	¬8°FÓ+;¸TÕBr)   c                 óà   — t        | «       | j                  }t        j                  |«      }|s t        j                  |t        d«      «       yt        t        j                  |«      ||«       y)z Set / remove annotation OC xref.r±  N)rS  r³   r�   rì   r-  rô   ÚJM_add_oc_objectr{  )r'   r³  rÎ   r  s       r(   Úset_oczAnnot.set_oc´  sR   € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	ÙÜ×Ñ˜y¬(°4«.Õ9äœU×9Ñ9¸)ÓDÀiÐQSÕTr)   c                 óÖ   — t        | «       | j                  }t        |dd«      st        j                  |d«       yt        j                  ||«       |dk  rt        |«      }d|_        yy)zSet opacity.ç        ç      ð?r   N)rS  r³   Ú_INRANGEr�   Úpdf_set_annot_opacityrÏ   Útransparency)r'   rB  rÎ   rÅ   s       r(   Úset_opacityzAnnot.set_opacity¾  s`   € ä�DÔØ—	‘	ˆÜ˜  cÔ*Ü×'Ñ'¨¨qÔ1ØÜ×#Ñ# E¨7Ô3Ø�SŠ=Ü" 5Ó)ˆDØ !ˆDÕð r)   c                 ó^   — t        | «       | j                  }t        j                  ||«       y)z-Set 'open' status of annotation or its Popup.N)rS  r³   r�   Úpdf_set_annot_is_open)r'   r  rÎ   s      r(   Úset_openzAnnot.set_openÊ  s#   € ä�DÔØ—	‘	ˆÜ×#Ñ# E¨7Õ3r)   c                 óÈ   — t        | «       | j                  }t        |«      }t        |«      }t	        j
                  t        |«      |«      }t	        j                  ||«       y)z@
        Create annotation 'Popup' or update rectangle.
        N)rS  r³   rÏ   ÚJM_rotate_page_matrixr�   Úfz_transform_rectrí  Úpdf_set_annot_popup)r'   rä   rÎ   Úpdfpager@  r  s         r(   Ú	set_popupzAnnot.set_popupÐ  sP   € ô 	�DÔØ—	‘	ˆÜ! %Ó(ˆÜ# GÓ,ˆÜ×#Ñ#¤O°DÓ$9¸3Ó?ˆÜ×!Ñ! %¨Õ+r)   c                 ó„  — t        | «       | j                  }t        |«      }t        |«      }t	        j
                  t        |«      |«      }t	        j                  |«      st	        j                  |«      rt        t        «      ‚	 t	        j                  ||«       y# t        $ r}t        d|› �«       Y d}~yd}~ww xY w)zSet annotation rectangle.zcannot set rect: NF)rS  r³   rÏ   r•  r�   r–  rí  Úfz_is_empty_rectÚfz_is_infinite_rectr²   ÚMSG_BAD_RECTÚpdf_set_annot_rectre   rp   )r'   rä   rÎ   r˜  r@  r  rM  s          r(   Úset_rectzAnnot.set_rectÛ  sœ   € ä�DÔØ—	‘	ˆä! %Ó(ˆÜ# GÓ,ˆÜ×#Ñ#¤O°DÓ$9¸3Ó?ˆÜ×!Ñ! !Ô$¬×(AÑ(AÀ!Ô(DÜœlÓ+Ð+ð	Ü×$Ñ$ U¨AÕ.øÜò 	ÜÐ'¨ sÐ+Ô,Üûð	ús   ÂB Â	B?Â'B:Â:B?c                 ó˜  — t        | «       | j                  }t        j                  |«      }|t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  fvry|}|dk  r|dz  }|dk  rŒ|dk\  r|dz  }|dk\  rŒ|t        j                  k(  r
|dz  dk7  rd}t        j                  |«      }t        j                   |t#        d«      |«       y)zSet annotation rotation.Nr   éh  éZ   r   )rS  r³   r�   ré   r/  r)  r0  r1  r2  r*  r+  r,  r(  r3  r4  rì   r5  rô   )r'   rE  rÎ   r·   r@  r  s         r(   Úset_rotationzAnnot.set_rotationë  s  € ä�DÔà—	‘	ˆÜ×#Ñ# EÓ*ˆØÜ×%Ñ%Ü×&Ñ&Ü×)Ñ)Ü×/Ñ/Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&Ü×%Ñ%Ü×$Ñ$ðñ ð ØˆØ�AŠgØ�3‰JˆCð �A‹gà�SŠjØ�3‰JˆCð �S‹jà”5×,Ñ,Ò,°°r±¸Q²ØˆCÜ×'Ñ'¨Ó.ˆ	Ü×Ñ˜y¬(°8Ó*<¸cÕBr)   c                 ó’  — t        | «       | j                  j                  syt        j                  | j                  «      }t        j
                  |«      }t        j                  t        j                  | j                  «      d«      }|j                  rt        j                  |«      r||fS t        j                  |«      }|||fS )zannotation typeÚnullÚIT)
rS  r³   r»   r�   ré   Úpdf_string_from_annot_typerë   rì   Úpdf_is_namerf  )r'   rG  Úcr�  Úits        r(   r·   z
Annot.type	  s›   € ô 	�DÔØ�y‰y×#Ò#ØÜ×$Ñ$ T§Y¡YÓ/ˆÜ×,Ñ,¨UÓ3ˆÜ×Ñ¤×!4Ñ!4°T·Y±YÓ!?ÀÓFˆØ�|Š|œu×0Ñ0°Ô3Ø˜1�:ÐÜ×Ñ˜qÓ!ˆØ�q˜"ˆ~Ðr)   rC  rB  rç   ræ   rå   Úborder_colorrD  Ú	cross_outrE  c
                 óâ  — t        j                  | j                  «      }
|r,t        j                  |
t	        d«      «      }|st        d«      ‚t        j                  «        t        | «       d„ }| j                  d   }| j                  j                  dd«      }| j                  j                  dd«      }| j                  d	   }|�|}n| j                  d
   }d}| j                  }|	dk7  r=|	dk  r|	dz  }	|	dk  rŒ|	dk\  r|	dz  }	|	dk\  rŒ|t         j                  k(  r
|	dz  dk7  rd}	|€| j                  }t!        |d«      s| j"                  }d|cxk  rdk  sn |rd}nd}|t         j                  k(  r_t%        |«       t%        |«       t&        j)                  | «      \  }}}|dk  rd}|r|}|r|}|dkD  r|}t+        | t-        |«      |||«       d}| j/                  ||||	¬«      }|du rt1        d«      ‚|t         j                  k(  rD| j3                  «       }d|cxk  rdk  r(n y|j5                  d«      s| j7                  d|z   «       y ||d«      } ||d«      }| j9                  «       j:                  }| }|r7ddj=                  t?        t@        |«      «      z   dz   }|jC                  d«      }nd}| jD                  r| jD                  \  }} nd\  }} | j3                  «       }|jG                  «       }!d}"|t         jH                  k(  rÿ|rud}"|!dd }!|!\  }#}$}%}&}'|!jK                  |%«       |!jK                  |$«       |!jK                  |&«       |!jK                  |$«       |!jK                  |'«       |!jK                  d«       |dkD  s|d k7  rmd}"|dkD  rtM        |«      jC                  «       d!z   gng }(|!D ]@  })|)jO                  d"«      rŒ|)jO                  d#«      r
|d k7  r|dd })|(jK                  |)«       ŒB |(}!d$j=                  |!«      }|t         jP                  t         jR                  fv r„d$j=                  |!dd «      d$z   }d}"|d k7  r5|t         jP                  k(  r	||z   d%z   }nJ|t         jR                  k(  r7|dz   }n1|t         jP                  k(  r|d&z   }n|t         jR                  k(  r|dz   }|�||z   }|jU                  d'd(d«      }d}"|r|jC                  d«      |z   }d}"d)|z   d*z   }|| z   dkD  �r‘|t         jP                  t         jR                  fv �rndt&        jV                  t&        jX                  t&        jZ                  t&        j\                  t&        j^                  t&        j`                  t&        jb                  t&        jd                  t&        jf                  f
}*ti        dt-        |*«      «      }+d+tk        d| j                  d   «      z  },| jl                  |, |, |,|,fz   }d}"| jn                  }-||+v rDtq        |-d   «      |z  }.tq        |-d   «      |z  }/ |*|   | |.|/d|«      }0||0jC                  «       z  }| |+v rDtq        |-d,   «      |z  }.tq        |-d   «      |z  }/ |*|    | |.|/d|«      }0||0jC                  «       z  }|"r:|r%| js                  |«       | j7                  |d¬-«       n| j7                  |d¬-«       |t         jt                  t         jv                  t         jx                  t         jz                  t         j|                  t         jR                  t         jP                  t         j~                  t         j€                  t         j‚                  f
vry| j„                  }1|1dk(  ry| jl                  j†                  | jl                  jˆ                  z   d+z  }2|1dk(  rpt‹        |t�        dd«      z
  «      d.k  ry| jl                  j�                  |2| «      }3| j‘                  |3jl                  «       | j“                  t�        dd«      «       yt�        |1«      }4| jl                  j�                  |2|4«      }3| js                  |3jl                  «       | j“                  ||4z  «       y)/a"  Update annot appearance.

        Notes:
            Depending on the annot type, some parameters make no sense,
            while others are only available in this method to achieve the
            desired result. This is especially true for 'FreeText' annots.
        Args:
            blend_mode: set the blend mode, all annotations.
            opacity: set the opacity, all annotations.
            fontsize: set fontsize, 'FreeText' only.
            fontname: set the font, 'FreeText' only.
            border_color: set border color, 'FreeText' only.
            text_color: set text color, 'FreeText' only.
            fill_color: set fill color, all annotations.
            cross_out: draw diagonal lines, 'Redact' only.
            rotate: set rotation, 'FreeText' and some others.
        ÚRCú-cannot set border_color if rich_text is Falsec                 óF   — t        | |«      }|sy|dz   j                  «       S )zHReturn valid PDF color operator for a given color sequence.
            r)   r$   )Ú	ColorCodeÚencode)rÌ  ÚcodeÚccs      r(   Úcolor_stringz"Annot.update.<locals>.color_string;  s)   € ô ˜2˜tÓ$ˆBÙØØ˜‘I×%Ñ%Ó'Ð'r)   r   rL  NrJ  r…  rU  rè   r¡  r¢  rW  r   ú/H gs
rZ   é   )rB  rC  rD  rE  FzError updating annotation.s   /H gss   /H gs
Úfr©  rY  r    z] 0 d
úutf-8©r   r   Tó   Sr)   s    wó   ws   RGó   
ó   bó   ss   
S
s
   
S
[] 0 d
ó   q
s   
Q
r   éþÿÿÿ©rä   çñhãˆµøä>)Jr�   rì   r³   ró   rô   r²   rÑ   Úupdate_timing_testrS  r·   ru  r7   rú   rd  r0  rp  r9   rB  r]  rø   rù   ÚJM_make_annot_DAr6   rQ  rÍ   r  r2   r  rW  rX  ÚjoinÚmaprÙ   r²  r  Ú
splitlinesrê   ri   r£   Úendswithr,  r+  ÚreplaceÚ
_le_squareÚ
_le_circleÚ_le_diamondÚ_le_openarrowÚ_le_closedarrowÚ_le_buttÚ_le_ropenarrowÚ_le_rclosedarrowÚ	_le_slashr8  Úmaxrä   ÚverticesÚPointrŸ  r/  r)  r1  r2  r*  r(  r3  r4  r=  ÚtlÚbrÚabsrb  ÚmorphÚsetRectrD  )5r'   rC  rB  rç   ræ   rå   r«  rD  r¬  rE  r  Úis_rich_textrµ  Ú
annot_typeÚdtÚbwidthrU  rè   rä   ÚapnmatÚopa_codeÚtcolÚfnameÚfsizerÿ   r  ÚbfillÚbstrokeÚp_ctmÚimatrL  Úline_end_leÚline_end_riÚap_tabÚ
ap_updatedÚ_ÚLLÚLRÚURÚULÚntabrm   Úle_funcsÚle_funcs_rangeÚdÚpointsÚp1Úp2Úleftr@  rÿ  Úquadrc  s5                                                        r(   ÚupdatezAnnot.update  sÒ  € ô8 ×'Ñ'¨¯	©	Ó2ˆ	áÜ ×-Ñ-¨i¼À$»ÓHˆLÙÜ Ð!PÓQÐQÜ× Ñ Ô"Ü�DÔò	(ð —Y‘Y˜q‘\ˆ
à�[‰[�_‰_˜X tÓ,ˆØ—‘—‘ ¨"Ó-ˆØ—‘˜XÑ&ˆØÐ!Ø‰Dà—;‘;˜vÑ&ˆDØˆØ—‘ˆØ�RŠ<Ø˜1’*Ø˜#‘�ð ˜1“*à˜C’-Ø˜#‘�ð ˜C“-àœU×6Ñ6Ò6¸6ÀB¹;È!Ò;KØ�ð
 ÐØŸ™ˆJÜ�w Ô,Ø—l‘lˆGà�Ô˜!Ô™zØ ‰HàˆHàœ×2Ñ2Ò2Ü�zÔ"Ü�zÔ"Ü!&§¡°Ó!6ÑˆD�%˜ð ˜ŠzØ�ÙØ!�ÙØ �Ø˜!Š|Ø �Ü˜T¤3 t£9¨d°E¸5ÔAØˆJð
 ×%Ñ%ØØ!ØØð	 &ó 
ˆð �%‰<ÜÐ;Ó<Ð<àœ×2Ñ2Ò2à—‘“ˆBØ�GÔ˜aÔàð )+¯©°hÔ(?Ø—‘˜J¨™OÔ,Øá˜T 3Ó'ˆÙ˜v sÓ+ˆà—‘Ó!×7Ñ7ˆØˆvˆáØ˜3Ÿ8™8¤C¬¨R£LÓ1Ñ1°IÑ=ˆFØ—]‘] 7Ó+‰FàˆFà�>Š>Ø'+§~¡~Ñ$ˆK™à'+Ñ$ˆK˜ð �[‰[‹]ˆØ—‘“ˆØˆ
àœ×/Ñ/Ò/ÙØ!�
Ø  ˜�Ø$*Ñ!��2�r˜2˜rØ—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜bÔ!Ø—‘˜dÔ#à˜Šz˜W¨š^Ø!�
Ø?EÈºzœ	 &Ó)×0Ñ0Ó2°UÑ:Ñ;Èr�Û"�DØ—}‘} TÔ*Ø Ø—}‘} UÔ+°¸3²Ø& s¨˜|˜Ø—K‘K Õ%ð #ð �à—‘˜FÓ#ˆBàœ%×1Ñ1´5×3LÑ3LÐMÑMØ—‘˜F 3 B˜KÓ(¨5Ñ0ˆBØˆJØ˜Š|Ø¤×!8Ñ!8Ò8Ø˜e™ dÑ*‘BØ¤5×#<Ñ#<Ò<Ø˜d™‘Bà¤×!8Ñ!8Ò8Ø˜d™‘BØ¤5×#<Ñ#<Ò<Ø˜d™�BàÐØ˜"‘ˆBà—‘˜HÐ&6¸Ó:ˆBØˆJáØ—‘ Ó)¨BÑ.ˆBØˆJà�b‰[˜8Ñ#ˆð ˜Ñ$ qÓ(¨Z¼E×<SÑ<SÔUZ×UnÑUnÐ;oÒ-oàœe×.Ñ.´×0@Ñ0@Ü×)Ñ)¬5×+>Ñ+>Ü×-Ñ-¬u¯~©~Ü×,Ñ,¬e×.DÑ.DÜŸ™ð	)ˆHô
 # 1¤c¨(£mÓ4ˆNØ”C˜˜4Ÿ;™; wÑ/Ó0Ñ0ˆAØ—9‘9   Q B¨¨1˜~Ñ-ˆDØˆJØ—]‘]ˆFØ˜nÑ,Ü˜6 !™9Ó%¨Ñ,�Ü˜6 !™9Ó%¨Ñ,�Ø,�x Ñ,¨T°2°r¸5À*ÓM�Ø�d—k‘k“mÑ#�Ø˜nÑ,Ü˜6 "™:Ó&¨Ñ-�Ü˜6 "™:Ó&¨Ñ-�Ø,�x Ñ,¨T°2°r¸4ÀÓL�Ø�d—k‘k“mÑ#�áÙØ—‘˜dÔ#Ø—‘˜B Q�Õ'à—‘˜B Q�Ô'ð
 Ü×%Ñ%Ü×&Ñ&Ü×/Ñ/Ü×#Ñ#Ü×$Ñ$Ü×)Ñ)Ü×'Ñ'Ü×&Ñ&Ü×%Ñ%Ü×$Ñ$ðñ ð à�m‰mˆØ�"Š9Øà�Y‰Y�\‰\˜DŸI™IŸL™LÑ(¨AÑ-ˆà�!Š8Ü�6œF 1 a›LÑ(Ó)¨DÒ0ØØ—9‘9—?‘? 1 v gÓ.ˆDØ�L‰L˜Ÿ™Ô#Ø×Ñ¤ q¨!£Ô-Øä�S‹kˆØ�y‰y�‰˜q #Ó&ˆØ�‰�d—i‘iÔ Ø×Ñ˜F S™LÕ)r)   c                 ó|  — t        | «       | j                  }t        j                  |«      }t        j                  |«      }t        j
                  |«      }|t        j                  k7  rt        t        «      ‚t        j                  |t        d«      t        d«      t        d«      «      }	|	j                  st        dt        «       t        j                  |t        d«      «      }
t        |«      }|r|j                  st!        t"        «      ‚|r…t%        ||	|d«       t        j&                  |«      \  }}t        j(                  |«      }t        j*                  |	t        d«      |«       t        j,                  |	|t        d«      t        d«      «       |r t        j.                  |	t        d«      |«       t        j.                  |
t        d«      |«       t        j.                  |	t        d	«      |«       t        j.                  |
t        d	«      |«       t        j.                  |t        d
«      |«       |r@t        j.                  |	t        d	«      |«       t        j.                  |
t        d	«      |«       |rAt        j.                  |	t        d«      |«       t        j.                  |
t        d«      |«       yy)zUpdate attached file.r“  r”  r•  úbad PDF: no /EF objectr   ÚDLrš  r›  r—  ÚContentsr˜  N)rS  r³   r�   rì   r{  ré   r1  rœ  r�  r  rô   r»   rž  rŸ  ró   r  r²   r  r  Úfz_buffer_storageÚpdf_new_intr:  Úpdf_dict_putlrm  )r'   r  rd   Ú	ufilenamer§  rÎ   r  rF  r·   r   r¨  r  r6   rí  Úls                  r(   Úupdate_filezAnnot.update_file  s  € ä�DÔØ—	‘	ˆÜ×'Ñ'¨Ó.ˆ	Ü×*Ñ*¨9Ó5ˆÜ×#Ñ# EÓ*ˆØ”5×2Ñ2Ò2ÜÔ/Ó0Ð0Ü×$Ñ$ Y´¸³ÄÈÃÔPXÐY\ÓP]Ó^ˆà× Ò ÜÐ-Ô/CÔDä×Ñ 	¬8°D«>Ó:ˆô ! Ó)ˆÙ˜3Ÿ>š>ÜœnÓ-Ð-ÙÜ˜S &¨#¨qÔ1ä×,Ñ,¨SÓ1‰FˆC�Ü×!Ñ! #Ó&ˆAÜ×Ñ˜v¤x°£~°qÔ9Ü×Ñ ¨¬8°HÓ+=¼xÈÓ?OÔPáÜ×*Ñ*¨6´8¸C³=À(ÔKÜ×*Ñ*¨2¬x¸«}¸hÔGÜ×*Ñ*¨6´8¸D³>À8ÔLÜ×*Ñ*¨2¬x¸«~¸xÔHÜ×*Ñ*¨9´h¸zÓ6JÈHÔUáÜ×*Ñ*¨6´8¸D³>À9ÔMÜ×*Ñ*¨2¬x¸«~¸yÔIáÜ×*Ñ*¨6´8¸FÓ3CÀTÔJÜ×*Ñ*¨2¬x¸Ó/?ÀÕFð r)   c                  ó4   — d} t        d«      D ]  }| |z  } Œ	 | S )Nr   i0u  )r8  )ÚtotalrL  s     r(   rÄ  zAnnot.update_timing_test?  s#   € àˆÜ˜–ˆAØ�Q‰J‰Eð !àˆr)   c           	      óÒ  — t        | «       | j                  }t        |t        j                  «      sJ ‚t        j
                  |«      }t        |«      }t        j                  «       }t        j                  «       }t        j                  |||«       t        |«      }t        j                  ||«      }t        j                  |t        d«      «      }|j                  st        j                  |t        d«      «      }|j                  st        j                  |t        d«      «      }|j                  st        j                  |d«      }|j                  rÑg }t!        dt        j"                  |«      d«      D ]ª  }	t        j$                  t        j&                  ||	«      «      }
t        j$                  t        j&                  ||	dz   «      «      }t        j(                  |
|«      }t        j*                  ||«      }|j-                  |j.                  |j0                  f«       Œ¬ |S t        j                  |d«      }|j                  �rg }t!        t        j"                  |«      «      D ]ø  }	g }t        j&                  ||	«      }t!        dt        j"                  |«      d«      D ]ª  }t        j$                  t        j&                  ||«      «      }
t        j$                  t        j&                  ||dz   «      «      }t        j(                  |
|«      }t        j*                  ||«      }|j-                  |j.                  |j0                  f«       Œ¬ |j-                  |«       Œú |S y	)
zannotation vertex pointsÚVerticesÚLÚ
QuadPointsÚCLr   r   r   ÚInkListN)rS  r³   r<   r�   rÓ   rì   rÏ   r_  rU  Úpdf_page_transformÚJM_derotate_page_matrixÚ	fz_concatró   rô   r»   rë   r8  r‰  rÜ  rŠ  ÚFzPointÚfz_transform_pointri   ÚxÚy)r'   rÎ   r  rÅ   Úpage_ctmÚdummyÚderotr�  r  rL  r  r  ÚpointÚres1Úo1rn  s                   r(   rÕ  zAnnot.verticesF  sž  € ô 	�DÔØ—	‘	ˆÜ˜%¤§¡Ô0Ð0Ð0Ü×'Ñ'¨Ó.ˆ	Ü˜uÓ%ˆÜ—>‘>Ó#ˆÜ—‘“ˆÜ× Ñ   u¨hÔ7Ü'¨Ó-ˆÜ—?‘? 8¨UÓ3ˆô ×Ñ˜y¬(°:Ó*>Ó?ˆØ�|Š|¤E×$6Ñ$6°yÄ(È3Ã-Ó$P Ø�|Š|¤E×$6Ñ$6°yÄ(È<ÓBXÓ$Y Ø�|Š|¤E×$7Ñ$7¸	À4Ó$H à�<Š<ð ˆCÜ˜1œe×1Ñ1°!Ó4°aÖ8�Ü×%Ñ%¤e×&9Ñ&9¸!¸QÓ&?Ó@�Ü×%Ñ%¤e×&9Ñ&9¸!¸Q¸q¹SÓ&AÓB�ÜŸ™ a¨Ó+�Ü×0Ñ0°¸ÓA�Ø—
‘
˜UŸW™W e§g¡gÐ.Õ/ð 9ð ˆJä×Ñ 	¨9Ó5ˆØ�<‹<ð ˆCÜœ5×.Ñ.¨qÓ1Ö2�Ø�Ü×(Ñ(¨¨AÓ.�Ü˜q¤%×"5Ñ"5°bÓ"9¸1Ö=�AÜ×)Ñ)¬%×*=Ñ*=¸bÀ!Ó*DÓE�AÜ×)Ñ)¬%×*=Ñ*=¸bÀ!ÀAÁ#Ó*FÓG�AÜ!ŸM™M¨!¨QÓ/�EÜ!×4Ñ4°U¸HÓE�EØ—K‘K %§'¡'¨5¯7©7Ð!3Õ4ð >ð —
‘
˜4Õ ð 3ð ˆJð r)   c                 ó€   — t        | «       | j                  }t        j                  t        j                  |«      «      S )zannotation xref number)rS  r³   r�   rî   rì   rÔ   s     r(   rý   z
Annot.xref|  s1   € ô 	�DÔØ—	‘	ˆÜ×Ñ¤× 3Ñ 3°EÓ :Ó;Ð;r)   ©r   )r…  NNr…  ©r   )NNNr   r…   )Nr…  NNr…  ©NNN©NNNNNNr+   )	NNr   NNNNTr…  ©NNNN)Hr.   r/   r0   rŠ   rÚ   rÜ   rß   r   r  r  rQ  ÚpropertyrZ  rd  rp  ru  r  rú   r‘  r©  r¬  r¯  r´  rW  rÎ  rÞ  râ  rè  rø  rú  r
  r  r  r  r  r*  rB  r0  r2  rä   r:  r=  rA  rD  rG  rR  r`  rc  rq  r{  r  r„  r†  r‰  r�  r“  r™  rŸ  r£  r·   ÚOptStrÚOptFloatr\  ÚOptSeqÚboolr3   rû  r  ÚstaticmethodrÄ  rÕ  rý   r,   r)   r(   rÑ   rÑ   *  s+  „ òòEòò!ò%òNó&9ó(aðF ñó ðð  ñó ðð. ñó ðð> ñó ðó$=ð ñ	ó ð	òGð6 ñ/ó ð/ðb ñ,ó ð,òò	òóò(ò@5ò8óð& ñ1ó ð1ð ñó ððB ñ	&ó ð	&ð ñ2ó ð2ð
 ñ9ó ð9ð ñ	ó ð	ð ñó ðð2 ñó ðð ñó ðð$ ñ	ó ð	ð ñó ðð& ñó ðð ñ+ó ð+ò<ò"	?òGó-<ó^'1òR0ólò<=ó 7ò<òCóUò
"ò4ò	,òó Cð< ñó ðð !%Ø#ØØ"Ø $Ø"&Ø $Ø!Øñ{*Øð{*àð{*ð ð{*ð ð	{*ð
 ð{*ð !ð{*ð ð{*ð ð{*ð ó{*óz)GðV ñó ðð ñ3ó ð3ðj ñ<ó ñ<r)   rÑ   c                   ód   — e Zd Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd	„Z
ed
„ «       Zd„ Zd„ Zy)ÚArchivec                 óx   — t        «       | _        t        j                  «       | _        |r | j
                  |Ž  yy)zõ
        Archive(dirname [, path]) - from folder
        Archive(file [, path]) - from file name or object
        Archive(data, name) - from memory item
        Archive() - empty archive
        Archive(archive [, path]) - from archive
        N)r¡   Ú_subarchivesr�   Úfz_new_multi_archiver³   Úadd©r'   rä  s     r(   rŠ   zArchive.__init__…  s4   € ô !›FˆÔÜ×.Ñ.Ó0ˆŒ	ÙØˆD�H‰H�tÒð r)   c                 ó2   — dt        | j                  «      › �S )NzArchive, sub-archives: )r6   r*  r-   s    r(   rÚ   zArchive.__repr__’  s   € Ø(¬¨T×->Ñ->Ó)?Ð(@ÐAÐAr)   Nc                 óF   — t        j                  | j                  ||«       y r+   )r�   Úfz_mount_multi_archiver³   )r'   Úsubarchr	   s      r(   Ú	_add_archzArchive._add_arch•  s   € Ü×$Ñ$ d§i¡i°¸$Õ?r)   c                 óp   — t        j                  |«      }t        j                  | j                  ||«       y r+   )r�   Úfz_open_directoryr0  r³   )r'   Úfolderr	   Úsubs       r(   Ú_add_dirzArchive._add_dir˜  s(   € Ü×%Ñ% vÓ.ˆÜ×$Ñ$ d§i¡i°°dÕ;r)   c                 óØ   — t        |«      }t        j                  t        j                  «       «      }t        j                  |||«       t        j
                  | j                  ||«       y r+   )r  r�   Úfz_new_tree_archiveÚFzTreeÚfz_tree_archive_add_bufferr0  r³   )r'   Úmemoryr   r	   Úbuffr6  s         r(   Ú_add_treeitemzArchive._add_treeitemœ  sJ   € Ü! 6Ó*ˆÜ×'Ñ'¬¯©«Ó8ˆÜ×(Ñ(¨#¨t°TÔ:Ü×$Ñ$ d§i¡i°°dÕ;r)   c                 ó¦   — |dk(  rt        j                  |«      }nt        j                  |«      }t        j                  | j                  ||«       y ©Nr   )r�   Úfz_open_zip_archiveÚfz_open_tar_archiver0  r³   )r'   ÚfilepathrG  r	   r6  s        r(   Ú_add_ziptarfilezArchive._add_ziptarfile¢  s?   € Ø�AŠ:Ü×+Ñ+¨XÓ6‰Cä×+Ñ+¨XÓ6ˆCÜ×$Ñ$ d§i¡i°°dÕ;r)   c                 óæ   — t        |«      }t        j                  |«      }|dk(  rt        j                  |«      }nt        j                  |«      }t        j
                  | j                  ||«       y r@  )r  r�   Úfz_open_bufferÚfz_open_zip_archive_with_streamÚfz_open_tar_archive_with_streamr0  r³   )r'   r<  rG  r	   r=  r   r6  s          r(   Ú_add_ziptarmemoryzArchive._add_ziptarmemory©  sY   € Ü! 6Ó*ˆÜ×%Ñ% tÓ,ˆØ�!Š8Ü×7Ñ7¸Ó@‰Cä×7Ñ7¸Ó@ˆCÜ×$Ñ$ d§i¡i°°dÕ;r)   c                 óú  ‡ — d„ }ˆ fd„}t        |t        j                  «      rt        |«      }t        |t        «      rÜt        j
                  j                  |«      r/‰ j                  ||«        |t	        j                  |«      |d«      S t        j
                  j                  |«      rat        |t        «      r|dk7  sJ d|›d�«       ‚t        |«      5 }|j                  «       }ddd«       ‰ j                  |«        ||gdd«      S t        d	|›�«      ‚ ||«      r8t        |t        «      r	|d|›d�k7  sJ ‚‰ j                  ||«        ||gdd«      S t        |t        j                  «      rht!        |d
d«      }|€.|j"                  j%                  «       }‰ j'                  |d|«       n‰ j)                  |d|«        ||j+                  «       |d«      S t        |t,        j.                  «      r˜t!        |j0                  dd«      }|€T|j0                  }t        |t2        j4                  «      s|j0                  }‰ j'                  |j%                  «       d|«       n‰ j)                  |d|«        ||j7                  «       |d«      S t        |t8        «      r‰ j;                  ||«        |g |d«      S t        |t<        «      rÛt?        |«      dk(  rÍ|\  }	}
t        |
t        «      sJ dtA        |
«      ›�«       ‚ ||	«      r‰ j                  |	|
|¬«       n}t        |	t        «      rYt        j
                  j                  |	«      rNt        |	d«      5 }|j                  «       }ddd«       ‰ j                  |
|¬«       nJ dtA        |	«      ›d�«       ‚ ||
g|d«      S tC        |d«      r|D ]  }‰ jE                  ||«       Œ ytG        dtA        |«      › d�«      ‚# 1 sw Y   �ŒþxY w# 1 sw Y   ŒˆxY w)a±  
        Add a sub-archive.

        Args:
            content:
                The content to be added. May be one of:
                    `str` - must be path of directory or file.
                    `bytes`, `bytearray`, `io.BytesIO` - raw data.
                    `zipfile.Zipfile`.
                    `tarfile.TarFile`.
                    `pymupdf.Archive`.
                    A two-item tuple `(data, name)`.
                    List or tuple (but not tuple with length 2) of the above.
            path: (str) a "virtual" path name, under which the elements
                of content can be retrieved. Use it to e.g. cope with
                duplicate element names.
        c                 óL   — t        | t        t        t        j                  f«      S r+   )r<   r  Ú	bytearrayÚioÚBytesIO©r  s    r(   Úis_binary_dataz#Archive.add.<locals>.is_binary_dataÄ  s   € Ü˜a¤%¬´B·J±JÐ!?Ó@Ð@r)   c                 óJ  •— t        || |¬«      }|dk7  s‰j                  g k(  r‰j                  j                  |«       y ‰j                  d   }|d   dk7  s|d   |d   k7  r‰j                  j                  |«       y |d   j                  |d   «       |‰j                  d<   y )N)rž   Úentriesr	   Útreer…  rž   r	   rR  )r4   r*  ri   Úextend)rR  Úmountrž   r1  Últreer'   s        €r(   Úmake_subarchz!Archive.add.<locals>.make_subarchÇ  s    ø€ Ü˜s¨G¸%Ô@ˆGØ�fŠ} × 1Ñ 1°RÒ 7Ø×!Ñ!×(Ñ(¨Õ1à×)Ñ)¨"Ñ-�Ø˜‘< 6Ò)¨U°6©]¸gÀf¹oÒ-MØ×%Ñ%×,Ñ,¨WÕ5à˜)Ñ$×+Ñ+¨G°IÑ,>Ô?Ø,1�D×%Ñ% bÒ)r)   ÚdirrZ   z'Need name for binary content, but path=r   NrS  zNot a file or directory: rd   r   Úzipr   r   ÚtarÚmultir   zUnexpected type(name)=)r	   ÚrbzUnexpected type(data)=rN  zUnrecognised type )$r<   ÚpathlibÚPathrÙ   rb   r	   Úisdirr7  ÚlistdirÚisfiler8   Úreadr>  r²   ÚzipfileÚZipFilerØ   ÚfpÚgetvaluerI  rD  ÚnamelistÚtarfileÚTarFileÚfileobjrM  rN  Úgetnamesr(  r2  r¢   r6   r·   r9   r,  rœ  )r'   re  r	   rP  rW  r¸  Úffrd   re  Údatar   rA   s   `           r(   r,  zArchive.add²  sŠ  ø€ ò$	Aô
	2ô �gœwŸ|™|Ô,Ü˜'“lˆGä�gœsÔ#Ü�w‰w�}‰}˜WÔ%Ø—‘˜g tÔ,Ù#¤B§J¡J¨wÓ$7¸¸uÓEÐEÜ—‘—‘ Ô(Ü! $¬Ô,°¸²ð FØB¸T¸GÀ1ÐEóFÐ;ä˜'”] aØŸ™›�B÷ #à×"Ñ" 2 tÔ,Ù# T F¨D°&Ó9Ð9ä Ð#<¸W¸KÐ!HÓIÐIá˜GÔ$Ü˜d¤CÔ(¨Tð 6?Ø9=¸¸qð6Bò .Bð Bð Bà×Ñ˜w¨Ô-Ù  ¨¨fÓ5Ð5ä˜¤§¡Ô1Ü˜w¨
°DÓ9ˆHØÐØ—Z‘Z×(Ñ(Ó*�Ø×&Ñ& r¨1¨dÕ3à×$Ñ$ X¨q°$Ô7Ù × 0Ñ 0Ó 2°D¸%Ó@Ð@ä˜¤§¡Ô1Ü˜wŸ™°¸Ó=ˆHØÐØ—_‘_�Ü! "¤b§j¡jÔ1ØŸ™�BØ×&Ñ& r§{¡{£}°a¸Õ>à×$Ñ$ X¨q°$Ô7Ù × 0Ñ 0Ó 2°D¸%Ó@Ð@ä˜¤Ô)Ø�N‰N˜7 DÔ)Ù  D¨'Ó2Ð2ä�gœuÔ%¬#¨g«,¸!Ò*;à ‰JˆD�$Ü˜d¤CÔ(ÐEÐ,C¼¸T»
°}Ð*EÓEÐ(Ù˜dÔ#Ø×"Ñ" 4¨°DÐ"Õ9Ü˜D¤#Ô&Ü—7‘7—>‘> $Ô'Ü˜d DÔ)¨QØŸV™V›X˜÷ *à×&Ñ& r¨4°dÐ&Õ;à6Ð3¬¨T«
 }°AÐ6Ó6�qÙ  ¨¨fÓ5Ð5ä�W˜mÔ,ã�Ø—‘˜˜tÕ$ð  àô Ð0´°g³°¸qÐAÓBÐB÷w #‘]ú÷Z *Ð)ús   ÃO$ÍO1Ï$O.Ï1O:c                 ó   — | j                   S )z'
        List of sub archives.
        )r*  r-   s    r(   Ú
entry_listzArchive.entry_list  s   € ð
 × Ñ Ð r)   c                 óB   — t        j                  | j                  |«      S r+   )r�   Úfz_has_archive_entryr³   ©r'   r   s     r(   Ú	has_entryzArchive.has_entry"  s   € Ü×)Ñ)¨4¯9©9°dÓ;Ð;r)   c                 óX   — t        j                  | j                  |«      }t        |«      S r+   )r�   Úfz_read_archive_entryr³   r
  )r'   r   r=  s      r(   Ú
read_entryzArchive.read_entry%  s#   € Ü×*Ñ*¨D¯I©I°tÓ<ˆÜ Ó&Ð&r)   r+   )r.   r/   r0   rŠ   rÚ   r2  r7  r>  rD  rI  r,  r!  ro  rs  rv  r,   r)   r(   r(  r(  „  sL   „ òòBó@ó<ó<ó<ó<ógðR ñ!ó ð!ò<ó'r)   r(  c                   óZ  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdHd„Z	d	„ Z
d
„ Zd„ ZdId„Zd„ ZdJd„ZdHd„Zd„ ZdKd„Zd„ Zd„ Zd„ ZdHd„ZdHd„Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#e$d"„ «       Z%d#„ Z&d$„ Z'd%„ Z(d&„ Z)d'„ Z*e$d(„ «       Z+e$d)„ «       Z,e$d*„ «       Z-e$d+„ «       Z.e$d,„ «       Z/d-„ Z0d.„ Z1e$d/„ «       Z2d0„ Z3d1„ Z4d2„ Z5dLd3„Z6d4„ Z7d5„ Z8d6„ Z9d7„ Z:d8„ Z;dLd9„Z<d:„ Z=d;„ Z>d<„ Z?d=„ Z@d>„ ZAd?„ ZBd@„ ZC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dMdA„ZDdB„ ZEdNdC„ZFdD„ ZGdE„ ZHe$dF„ «       ZIe$dG„ «       ZJe	ZKe	ZLe	ZMy)OÚXmlc                 ó   — | S r+   r,   r-   s    r(   Ú	__enter__zXml.__enter__,  ó   € Øˆr)   c                  ó   — y r+   r,   r-  s     r(   Ú__exit__zXml.__exit__/  ó   € Ør)   c                 óì   — t        |t        j                  «      r|| _        y t        |t        «      r0t        j
                  |«      }t        j                  |«      | _        y J dt        |«      › �«       ‚)NzUnsupported type for rhs: )r<   r�   ÚFzXmlr³   rÙ   Úfz_new_buffer_from_copied_dataÚfz_parse_xml_from_html5r·   )r'   Úrhsr=  s      r(   rŠ   zXml.__init__2  sY   € Ü�cœ5Ÿ;™;Ô'ØˆD�IÜ˜œSÔ!Ü×7Ñ7¸Ó<ˆDÜ×5Ñ5°dÓ;ˆD�Ià>Ð2´4¸³9°+Ð>Ó>�1r)   c                 ó.   ‡— ˆfd„Šd}g } ‰| ||«      }|S )Nc           	      óÔ  •— | �ä| j                   r.|j                  |d| j                  › d�f«       | j                  } Œ<|j                  |d| j                  › �f«       | j                  «       j                  «       D ]  \  }}|j                  |d|› d|› d�f«       Œ! | j                  }|r ‰|||dz   «      }|j                  |d| j                  › �f«       | j                  } | �Œä|S )NÚ"Ú(r   z 'r×   r   Ú))Úis_textri   r   r*  ÚtagnameÚget_attributesr@   Úfirst_child)Únoder@   ÚshiftÚkrD   ÚchildÚ	show_nodes         €r(   r‘  z%Xml._get_node_tree.<locals>.show_node<  sé   ø€ ØÐ"Ø—<’<Ø—L‘L %¨1¨T¯Y©Y¨K°qÐ)9Ð!:Ô;ØŸ9™9�DØØ—‘˜e q¨¯©¨Ð%7Ð8Ô9Ø ×/Ñ/Ó1×7Ñ7Ö9‘D�A�qØ—L‘L %¨1¨Q¨C¨r°!°°A¨Ð!7Õ8ð :à×(Ñ(�ÙÙ% e¨U°E¸A±IÓ>�EØ—‘˜e q¨¯©¨Ð%7Ð8Ô9Ø—y‘y�ð Ñ"ð ˆLr)   r   r,   )r'   rŽ  r@   r‘  s      @r(   Ú_get_node_treezXml._get_node_tree;  s'   ø€ ô	ð  ˆØˆÙ˜$  uÓ-ˆØˆr)   c                 óJ   — | j                  d«      }| j                  |«       |S )zAdd bulleted list ("ul" tag)Úul©Úcreate_elementÚappend_child©r'   r�  s     r(   Úadd_bullet_listzXml.add_bullet_listQ  ó%   € à×#Ñ# DÓ)ˆØ×Ñ˜%Ô Øˆr)   c                 ó˜   — | j                  d«      }|�||v r| S | j                  d«       |€|}n|d|z   z  }| j                  d|«       | S )z5Set some class via CSS. Replaces complete class spec.Úclassr    ©Úget_attribute_valueÚremove_attributeÚset_attribute)r'   r   Úclss      r(   Ú	add_classzXml.add_classW  s]   € à×&Ñ& wÓ/ˆØˆ?˜t s™{ØˆKØ×Ñ˜gÔ&Øˆ;Ø‰Cà�3˜‘:ÑˆCØ×Ñ˜7 CÔ(Øˆr)   Nc                 óÔ   — | j                  d«      }t        |«      t        u r |j                  | j	                  |«      «       | j                  «       }|€| }|j                  |«       | S )zAdd a "code" tagr³  ©r–  r·   rÙ   r—  Úcreate_text_nodeÚspan_bottom©r'   r   r�  Úprevs       r(   Úadd_codezXml.add_coded  sb   € à×#Ñ# FÓ+ˆÜ�‹:œÑØ×Ñ˜t×4Ñ4°TÓ:Ô;Ø×ÑÓ!ˆØˆ<ØˆDØ×Ñ˜%Ô Øˆr)   c                 óJ   — | j                  d«      }| j                  |«       |S )z!Add monospaced lines ("pre" node)Úprer•  r˜  s     r(   Úadd_codeblockzXml.add_codeblocko  ó%   € à×#Ñ# EÓ*ˆØ×Ñ˜%Ô Øˆr)   c                 óJ   — | j                  d«      }| j                  |«       |S )zAdd description list ("dl" tag)Údlr•  r˜  s     r(   Úadd_description_listzXml.add_description_listu  rš  r)   c                 óJ   — | j                  d«      }| j                  |«       |S )zAdd "div" tagÚdivr•  r˜  s     r(   Úadd_divisionzXml.add_division{  r­  r)   c                 óà   — |t        dd«      vrt        d«      ‚| j                  }d|› �}| j                  |«      }|dvr| j	                  |«       |S | j
                  j	                  |«       |S )zAdd header tagr   é   zHeader level must be in [1, 6]Úh)Úh1Úh2Úh3Úh4Úh5Úh6r�  )r8  r²   rŠ  r–  r—  rÖ   )r'   r   Úthis_tagÚnew_tagr�  s        r(   Ú
add_headerzXml.add_header�  ss   € àœ˜a ›Ñ#ÜÐ=Ó>Ð>Ø—<‘<ˆØ�e�W�+ˆØ×#Ñ# GÓ,ˆØÐDÑDØ×Ñ˜eÔ$ØˆLØ�‰× Ñ  Ô'Øˆr)   c                 óJ   — | j                  d«      }| j                  |«       |S )zAdd horizontal line ("hr" tag)Úhrr•  r˜  s     r(   Úadd_horizontal_linezXml.add_horizontal_lineŽ  rš  r)   c                 ó  — | j                  d«      }|�|j                  d|› «       |�|j                  d|› «       |�|j                  dd|› �«       |�|j                  d|› «       |j                  d|› «       | j                  |«       |S )zAdd image node (tag "img").ÚimgrJ  ÚheightrK  zfloat: rþ   Úsrc)r–  r   r—  )r'   r   rJ  rÅ  Úimgfloatrþ   r�  s          r(   Ú	add_imagezXml.add_image”  sœ   € à×#Ñ# EÓ*ˆØÐØ×Ñ ¨E¨7Ô4ØÐØ×Ñ ¨V¨HÔ6ØÐØ×Ñ ¨7°8°*Ð)=Ô>ØÐØ×Ñ ¨E¨7Ô4Ø×Ñ˜E d VÔ-Ø×Ñ˜%Ô Øˆr)   c                 óú   — | j                  d«      }t        |t        «      s|}|j                  d|«       |j	                  | j                  |«      «       | j                  «       }|€| }|j	                  |«       | S )zAdd a hyperlink ("a" tag)r    Úhref)r–  r<   rÙ   r   r—  r¥  r¦  )r'   rÊ  r   r�  r¨  s        r(   Úadd_linkzXml.add_link£  su   € à×#Ñ# CÓ(ˆÜ˜$¤Ô$ØˆDØ×Ñ˜F DÔ)Ø×Ñ˜4×0Ñ0°Ó6Ô7Ø×ÑÓ!ˆØˆ<ØˆDØ×Ñ˜%Ô Øˆr)   c                 ó’   — | j                   dvrt        d| j                   «      ‚| j                  d«      }| j                  |«       |S )z8Add item ("li" tag) under a (numbered or bulleted) list.)Úolr”  zcannot add list item toÚli)rŠ  r²   r–  r—  r˜  s     r(   Úadd_list_itemzXml.add_list_item°  sC   € à�<‰<˜|Ñ+ÜÐ6¸¿¹ÓEÐEØ×#Ñ# DÓ)ˆØ×Ñ˜%Ô Øˆr)   c                 ó²   — | j                  d«      }|dkD  r|j                  dt        |«      «       |�|j                  d|«       | j                  |«       |S )zAdd numbered list ("ol" tag)rÍ  r   r‚  r·   )r–  r   rÙ   r—  )r'   r‚  Únumtyper�  s       r(   Úadd_number_listzXml.add_number_list¸  sV   € à×#Ñ# DÓ)ˆØ�1Š9Ø×Ñ ¬¨U«Ô4ØÐØ×Ñ ¨Ô0Ø×Ñ˜%Ô Øˆr)   c                 ó¢   — | j                  d«      }| j                  dk7  r| j                  |«       |S | j                  j                  |«       |S )zAdd "p" tagr�  )r–  rŠ  r—  rÖ   r˜  s     r(   Úadd_paragraphzXml.add_paragraphÂ  sL   € à×#Ñ# CÓ(ˆØ�<‰<˜3ÒØ×Ñ˜eÔ$ð ˆð �K‰K×$Ñ$ UÔ+Øˆr)   c                 óJ   — | j                  d«      }| j                  |«       |S ©NÚspanr•  r˜  s     r(   Úadd_spanzXml.add_spanË  s%   € Ø×#Ñ# FÓ+ˆØ×Ñ˜%Ô Øˆr)   c                 ó˜   — | j                  d«      }|�||v r| S | j                  d«       |€|}n|d|z   z  }| j                  d|«       | S )z;Set some style via CSS style. Replaces complete style spec.rK  Ú;r�  )r'   r   rK  s      r(   Ú	add_stylezXml.add_styleÐ  s^   € à×(Ñ(¨Ó1ˆØÐ ¨¡ØˆKØ×Ñ˜gÔ&Øˆ=Ø‰Eà�S˜4‘ZÑˆEØ×Ñ˜7 EÔ*Øˆr)   c                 óÔ   — | j                  d«      }t        |«      t        u r |j                  | j	                  |«      «       | j                  «       }|€| }|j                  |«       | S )zAdd a subscript ("sub" tag)r6  r¤  r§  s       r(   Úadd_subscriptzXml.add_subscriptÝ  ób   € à×#Ñ# EÓ*ˆÜ�‹:œÑØ×Ñ˜t×4Ñ4°TÓ:Ô;Ø×ÑÓ!ˆØˆ<ØˆDØ×Ñ˜%Ô Øˆr)   c                 óÔ   — | j                  d«      }t        |«      t        u r |j                  | j	                  |«      «       | j                  «       }|€| }|j                  |«       | S )zAdd a superscript ("sup" tag)Úsupr¤  r§  s       r(   Úadd_superscriptzXml.add_superscriptè  rÞ  r)   c                 ó  — |j                  «       }t        |«      }| j                  «       }|€| }t        |«      D ]N  \  }}|j	                  | j                  |«      «       ||dz
  k  sŒ/|j	                  | j                  d«      «       ŒP | S )z"Add text. Line breaks are honored.r   rØ  )rÈ  r6   r¦  Ú	enumerater—  r¥  r–  )r'   r   ÚlinesÚ
line_countr¨  rL  rm   s          r(   Úadd_textzXml.add_textó  s‡   € à—‘Ó!ˆÜ˜“Zˆ
Ø×ÑÓ!ˆØˆ<ØˆDä  Ö'‰GˆAˆtØ×Ñ˜d×3Ñ3°DÓ9Ô:Ø�: ‘>Ó!Ø×!Ñ! $×"5Ñ"5°dÓ";Õ<ð (ð ˆr)   c                 óX   — t        j                  | j                  |j                  «       y r+   )r�   Úfz_dom_append_childr³   r˜  s     r(   r—  zXml.append_child	  s   € Ü×!Ñ! 4§9¡9¨e¯j©jÕ9r)   c                 ó”   — | j                  d«      }|j                  |«       | j                  «       }|€| }|j                  |«       |S rÖ  )r–  rÛ  r¦  r—  )r'   rK  r×  r¨  s       r(   Úappend_styled_spanzXml.append_styled_span	  sI   € Ø×"Ñ" 6Ó*ˆØ�‰�uÔØ×ÑÓ!ˆØˆ<ØˆDØ×Ñ˜$ÔØˆr)   c                 óR   — t        t        j                  | j                  «      «      S r+   )rx  r�   Úfz_dom_bodyr³   r-   s    r(   ÚbodytagzXml.bodytag	  s   € Ü”E×%Ñ% t§y¡yÓ1Ó2Ð2r)   c                 óV   — t        j                  | j                  «      }t        |«      S r+   )r�   Úfz_dom_cloner³   rx  ©r'   rE   s     r(   Úclonez	Xml.clone	  s    € Ü× Ñ  $§)¡)Ó,ˆÜ�C‹yÐr)   c                 ó¶   — t        | «      t        u r| S t        | «      t        u rdt        | «      › d�S t        | «      t        t
        fv rdt	        | «      › �S | S )Nzrgb(rˆ  r¹  )r·   rÙ   r3   ÚsRGB_to_rgbr¢   r¡   )Úcolors    r(   Ú
color_textzXml.color_text	  sZ   € ä�‹;œ#ÑØˆLÜ�‹;œ#ÑØœ+ eÓ,Ð-¨QÐ/Ð/Ü�‹;œ5¤$˜-Ñ'Øœ˜u›˜Ð'Ð'Øˆr)   c                 óT   — t        t        j                  | j                  |«      «      S r+   )rx  r�   Úfz_dom_create_elementr³   )r'   Útags     r(   r–  zXml.create_element	  s   € Ü”E×/Ñ/°·±¸CÓ@ÓAÐAr)   c                 óT   — t        t        j                  | j                  |«      «      S r+   )rx  r�   Úfz_dom_create_text_noder³   ©r'   r   s     r(   r¥  zXml.create_text_node!	  s   € Ü”E×1Ñ1°4·9±9¸dÓCÓDÐDr)   c                 ó€   — | j                  «       }|D ])  }t        d|d   z  |d   j                  dd«      z   «       Œ+ y)z)Print a list of the node tree below self.z  r   r   r$   ú\nN)r’  rp   rÊ  )r'   r@   rA   s      r(   Údebugz	Xml.debug$	  s>   € à×#Ñ#Ó%ˆÛˆDÜ�D˜4 ™7‘N T¨!¡W§_¡_°T¸5Ó%AÑAÕBñ r)   c                 óv   — t        j                  | j                  |||«      }|j                  rt	        |«      S y r+   )r�   Úfz_dom_findr³   r»   rx  ©r'   rø  ÚattÚmatchrE   s        r(   r“   zXml.find*	  s2   € Ü×Ñ §¡¨C°°eÓ<ˆØ�>Š>Ü˜“9Ðð r)   c                 óv   — t        j                  | j                  |||«      }|j                  rt	        |«      S y r+   )r�   Úfz_dom_find_nextr³   r»   rx  r  s        r(   Ú	find_nextzXml.find_next/	  s2   € Ü×$Ñ$ d§i¡i°°c¸5ÓAˆØ�>Š>Ü˜“9Ðð r)   c                 óœ   — t        j                  | j                  «      ry t        j                  | «      }|j                  rt        |«      S y r+   )r�   Úfz_xml_textr³   Úfz_dom_first_childr»   rx  rð  s     r(   rŒ  zXml.first_child4	  s=   € ä×Ñ˜dŸi™iÔ(àÜ×&Ñ&¨Ó-ˆØ�>Š>Ü˜“9Ðð r)   c                 óJ   — |sJ ‚t        j                  | j                  |«      S r+   )r�   Úfz_dom_attributer³   ©r'   Úkeys     r(   rž  zXml.get_attribute_value=	  s    € Ùˆ
ˆsÜ×%Ñ% t§y¡y°#Ó6Ð6r)   c                 óÆ   — t        j                  | j                  «      ry t        «       }d}	 t        j                  | j                  |«      \  }}|r|s	 |S |||<   |dz  }Œ5©Nr   r   )r�   r  r³   r4   Úfz_dom_get_attribute)r'   ÚresultrL  rÿ   r  s        r(   r‹  zXml.get_attributesA	  sh   € Ü×Ñ˜dŸi™iÔ(àÜ“ˆØˆØÜ×1Ñ1°4·9±9¸aÓ@‰HˆC�Ù™cØð ˆð ˆF�C‰LØ�‰FˆAð r)   c                 óX   — t        j                  | j                  |j                  «       y r+   )r�   Úfz_dom_insert_afterr³   ©r'   r�  s     r(   Úinsert_afterzXml.insert_afterO	  s   € Ü×!Ñ! 4§9¡9¨d¯i©iÕ8r)   c                 óX   — t        j                  | j                  |j                  «       y r+   )r�   Úfz_dom_insert_beforer³   r  s     r(   Úinsert_beforezXml.insert_beforeR	  s   € Ü×"Ñ" D§I¡I¨t¯y©yÕ9r)   c                 óô   — |j                  «       }t        |«      }t        |«      D ]N  \  }}| j                  | j	                  |«      «       ||dz
  k  sŒ/| j                  | j                  d«      «       ŒP | S )Nr   rØ  )rÈ  r6   rã  r—  r¥  r–  )r'   r   rä  rå  rL  rm   s         r(   Úinsert_textzXml.insert_textU	  so   € Ø—‘Ó!ˆÜ˜“Zˆ
Ü  Ö'‰GˆAˆtØ×Ñ˜d×3Ñ3°DÓ9Ô:Ø�: ‘>Ó!Ø×!Ñ! $×"5Ñ"5°dÓ";Õ<ð (ð ˆr)   c                 ó   — | j                   duS )zCheck if this is a text node.Nro   r-   s    r(   r‰  zXml.is_text^	  s   € ð �y‰y Ð$Ð$r)   c                 óH   — | j                   }|€y	 |j                  }|s|S |}Œ)zReturn last child node.N)rŒ  r*  )r'   r�  r*  s      r(   Ú
last_childzXml.last_childc	  s5   € ð × Ñ ˆØˆ=ØØØ—:‘:ˆDÙØ�ØˆEð	 r)   c                 óp   — t        j                  | j                  «      }|j                  rt	        |«      S y r+   )r�   Úfz_dom_nextr³   r»   rx  rð  s     r(   r*  zXml.nexto	  s,   € ä×Ñ §¡Ó+ˆØ�>Š>Ü˜“9Ðð r)   c                 óp   — t        j                  | j                  «      }|j                  rt	        |«      S y r+   )r�   Úfz_dom_parentr³   r»   rx  rð  s     r(   rÖ   z
Xml.parentu	  s,   € ä×!Ñ! 4§9¡9Ó-ˆØ�>Š>Ü˜“9Ðð r)   c                 óp   — t        j                  | j                  «      }|j                  rt	        |«      S y r+   )r�   Úfz_dom_previousr³   r»   rx  rð  s     r(   ÚpreviouszXml.previous{	  s,   € ä×#Ñ# T§Y¡YÓ/ˆØ�>Š>Ü˜“9Ðð r)   c                 óB   — t        j                  | j                  «       y r+   )r�   Úfz_dom_remover³   r-   s    r(   Úremovez
Xml.remove�	  s   € Ü×Ñ˜TŸY™YÕ'r)   c                 óL   — |sJ ‚t        j                  | j                  |«       y r+   )r�   Úfz_dom_remove_attributer³   r  s     r(   rŸ  zXml.remove_attribute„	  s   € Ùˆ
ˆsÜ×%Ñ% t§y¡y°#Õ6r)   c                 óR   — t        t        j                  | j                  «      «      S r+   )rx  r�   Úfz_xml_rootr³   r-   s    r(   ÚrootzXml.rootˆ	  s   € ä”E×%Ñ% t§y¡yÓ1Ó2Ð2r)   c                 óØ   — d}t        |t        «      r|}n>|t        k(  rd}n2|t        k(  rd}n&|t        k(  rd}n|t
        k(  rd}nt        d|›�«      ‚||z  }| j                  |«       | S )z Set text alignment via CSS styleztext-align: %srù  ÚcenterÚrightÚjustifyzUnrecognised align=)r<   rÙ   ÚTEXT_ALIGN_LEFTÚTEXT_ALIGN_CENTERÚTEXT_ALIGN_RIGHTÚTEXT_ALIGN_JUSTIFYr²   rÛ  )r'   rþ   r   Úts       r(   Ú	set_alignzXml.set_alignŒ	  sz   € àˆÜ�uœcÔ"Ø‰AØ”oÒ%Ø‰AØÔ'Ò'Ø‰AØÔ&Ò&Ø‰AØÔ(Ò(Ø‰AäÐ3¨U¨HÐ5Ó6Ð6Ø�a‰xˆØ�‰�tÔØˆr)   c                 óN   — |sJ ‚t        j                  | j                  ||«       y r+   )r�   Úfz_dom_add_attributer³   )r'   r  r¥   s      r(   r   zXml.set_attributeŸ	  s   € Ùˆ
ˆsÜ×"Ñ" D§I¡I¨s°EÕ:r)   c                 óP   — d| j                  |«      z  }| j                  |«       | S )z"Set background color via CSS stylezbackground-color: %s)rõ  rÛ  ©r'   rô  r   s      r(   Úset_bgcolorzXml.set_bgcolor£	  s&   € à%¨¯©¸Ó)?Ñ?ˆØ�‰�tÔØˆr)   c                 ó@   — |rd}nd}d|z  }| j                  |«       | S )zSet bold on / off via CSS styleÚboldÚnormalzfont-weight: %s©rê  ©r'   rÿ   r   s      r(   Úset_boldzXml.set_bold©	  s,   € áØ‰CàˆCØ  3Ñ&ˆØ×Ñ Ô%Øˆr)   c                 óP   — d| j                  |«      z  }| j                  |«       | S )zSet text color via CSS stylez	color: %s)rõ  rê  r:  s      r(   Ú	set_colorzXml.set_color³	  s(   € à˜dŸo™o¨eÓ4Ñ4ˆØ×Ñ Ô%Øˆr)   c                 ó2   — d|› �}| j                  |«       | S )z(Set number of text columns via CSS stylez	columns: r?  )r'   Úcolsr   s      r(   Úset_columnszXml.set_columns¹	  s!   € à˜4˜&Ð!ˆØ×Ñ Ô%Øˆr)   c                 ó2   — d|z  }| j                  |«       | S )z"Set font-family name via CSS stylezfont-family: %sr?  )r'   Úfontr   s      r(   Úset_fontzXml.set_font¿	  s   € à  4Ñ'ˆØ×Ñ Ô%Øˆr)   c                 ób   — t        |«      t        u rd}nd}d|› |› �}| j                  |«       | S )z Set font size name via CSS stylerZ   Úpxzfont-size: )r·   rÙ   rê  )r'   rç   rK  r   s       r(   Úset_fontsizezXml.set_fontsizeÅ	  s;   € ä�‹>œSÑ Ø‰BàˆBØ˜X˜J r dÐ+ˆØ×Ñ Ô%Øˆr)   c                 ó†   — | j                   }|j                  dd|«      rt        d|› d�«      ‚| j                  d|«       | S )zSet a unique id.Nr&  zid 'z' already exists)r,  r“   r²   r   )r'   Úuniquer,  s      r(   Úset_idz
Xml.set_idÏ	  sG   € ð �y‰yˆØ�9‰9�T˜4 Ô(Ü˜t F 8Ð+;Ð<Ó=Ð=Ø×Ñ˜4 Ô(Øˆr)   c                 ó@   — |rd}nd}d|z  }| j                  |«       | S )z!Set italic on / off via CSS styleÚitalicr>  zfont-style: %sr?  r@  s      r(   Ú
set_italiczXml.set_italicØ	  s,   € áØ‰CàˆCØ #Ñ%ˆØ×Ñ Ô%Øˆr)   c                 ó2   — d|› �}| j                  |«       | S )z>Set inter-line spacing value via CSS style - block-level only.z-mupdf-leading: ©rÛ  )r'   Úleadingr   s      r(   Úset_leadingzXml.set_leadingâ	  s   € à! ' Ð+ˆØ�‰�tÔØˆr)   c                 ó2   — d|› �}| j                  |«       | S )z,Set inter-letter spacing value via CSS stylezletter-spacing: r?  ©r'   Úspacingr   s      r(   Úset_letter_spacingzXml.set_letter_spacingè	  s!   € à! ' Ð+ˆØ×Ñ Ô%Øˆr)   c                 ó2   — d|› �}| j                  |«       | S )z6Set line height name via CSS style - block-level only.zline-height: rT  )r'   Ú
lineheightr   s      r(   Úset_lineheightzXml.set_lineheightî	  s   € à˜z˜lÐ+ˆØ�‰�tÔØˆr)   c                 ó2   — d|z  }| j                  |«       | S )zSet margin values via CSS stylezmargins: %sr?  r@  s      r(   Úset_marginszXml.set_marginsô	  s   € à˜sÑ"ˆØ×Ñ Ô%Øˆr)   c                 ó2   — d|› �}| j                  |«       | S )zSet opacity via CSS stylez	opacity: r?  )r'   rB  r   s      r(   r�  zXml.set_opacityú	  s!   € à˜7˜)Ð$ˆØ×Ñ Ô%Øˆr)   c                 ó,   — d}| j                  |«       | S )z$Insert a page break after this node.zpage-break-after: alwaysrT  rû  s     r(   Úset_pagebreak_afterzXml.set_pagebreak_after 
  s   € à)ˆØ�‰�tÔØˆr)   c                 ó,   — d}| j                  |«       | S )z%Insert a page break before this node.zpage-break-before: alwaysrT  rû  s     r(   Úset_pagebreak_beforezXml.set_pagebreak_before
  s   € à*ˆØ�‰�tÔØˆr)   c                 ó  — | j                   }|j                  «       }|�|j                  |«       |�|j                  |«       |�|j	                  |«       |�|j                  |«       |�|j                  |«       |�|j                  |«       |�|j                  |«       |�|j                  |«       |	�|j                  |	«       |
�|j                  |
«       |�|j                  |«       |�|j                  |«       |�|j                  |«       |�|j                  «        |�|j!                  «        |�|j#                  |«       |�| j%                  |«       |�| j'                  |«       g }|j)                  d«      }|�|j+                  |«       |j,                  }|r/|j+                  |j)                  d«      «       |j,                  }|rŒ/| j/                  ddj1                  |«      «       |j3                  «        | S )z`Set any or all properties of a node.

        To be used for existing nodes preferably.
        rK  rÚ  )r,  r³  r6  r;  rA  rC  rF  rI  rL  Úset_text_indentrR  rV  rZ  r]  r_  rb  rd  Úset_word_spacingrO  r¢  rž  ri   rŒ  r   rÆ  r'  )r'   rþ   Úbgcolorr=  rô  ÚcolumnsrH  rç   ÚindentrQ  rU  Úletter_spacingr\  ÚmarginsÚpagebreak_afterÚpagebreak_beforeÚword_spacingÚunqidr¡  r,  ÚtempÚstylesÚ	top_styler�  s                           r(   Úset_propertieszXml.set_properties
  sõ  € ð2 �y‰yˆØ× Ñ Ó"ˆØÐØ�N‰N˜5Ô!ØÐØ×Ñ˜WÔ%ØÐØ�M‰M˜$ÔØÐØ�N‰N˜5Ô!ØÐØ×Ñ˜WÔ%ØÐØ�M‰M˜$ÔØÐØ×Ñ˜hÔ'ØÐØ× Ñ  Ô(ØÐØ�O‰O˜FÔ#ØÐØ×Ñ˜WÔ%ØÐ%Ø×#Ñ# NÔ3ØÐ!Ø×Ñ 
Ô+ØÐØ×Ñ˜WÔ%ØÐ&Ø×$Ñ$Ô&ØÐ'Ø×%Ñ%Ô'ØÐ#Ø×!Ñ! ,Ô/ØÐØ�K‰K˜ÔØˆ?Ø�N‰N˜3ÔàˆØ×,Ñ,¨WÓ5ˆ	ØÐ Ø�M‰M˜)Ô$Ø× Ñ ˆÙØ�M‰M˜%×3Ñ3°GÓ<Ô=Ø×%Ñ%ˆEò ð 	×Ñ˜7 C§H¡H¨VÓ$4Ô5Ø�‰ŒØˆr)   c                 ó2   — d|› �}| j                  |«       | S )z;Set text indentation name via CSS style - block-level only.ztext-indent: rT  )r'   rj  r   s      r(   rf  zXml.set_text_indentX
  s   € à˜v˜hÐ'ˆØ�‰�tÔØˆr)   c                 ó2   — d|z  }| j                  |«       | S )Nztext-decoration: %sr?  r@  s      r(   Úset_underlinezXml.set_underline^
  s   € Ø$ sÑ*ˆØ×Ñ Ô%Øˆr)   c                 ó2   — d|› �}| j                  |«       | S )z*Set inter-word spacing value via CSS stylezword-spacing: r?  rX  s      r(   rg  zXml.set_word_spacingc
  s!   € à ˜yÐ)ˆØ×Ñ Ô%Øˆr)   c                 ó2  — | }| j                   }|€y|j                  r|j                  }|€n|j                  rŒ|�|j                  dk7  ry	 |€|S |j                  dv s|j                  r|j                  }Œ,|j                  dk(  r|}|j
                  }n|S ŒL)z$Find deepest level in stacked spans.Nr×  )r    r6  rà  Úbody)r  r‰  r$  rŠ  r*  rŒ  )r'   rÖ   r�  s      r(   r¦  zXml.span_bottomi
  s    € àˆØ—‘ˆØˆ=ØØ�mŠmØ—N‘NˆEØˆ}Øð �m‹mð ˆ=˜EŸM™M¨VÒ3ØàØˆ}Ø�Ø�}‰}Ð 9Ñ9¸U¿]º]ØŸ
™
�ØØ�}‰} Ò&Ø�Ø×)Ñ)‘à�ð r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   Ú
fz_xml_tagr³   r-   s    r(   rŠ  zXml.tagname‚
  s   € ä×Ñ §¡Ó+Ð+r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   r  r³   r-   s    r(   r   zXml.text†
  s   € ä× Ñ  $§)¡)Ó,Ð,r)   r+   r  r   ©r   N©T)NNNNNNNNNNNNNNNNNN)Ú	underline)Nr.   r/   r0   rz  r}  rŠ   r’  r™  r¢  r©  r¬  r°  r³  r¿  rÂ  rÈ  rË  rÏ  rÒ  rÔ  rØ  rÛ  rÝ  rá  ræ  r—  rê  rí  rñ  r&  rõ  r–  r¥  rþ  r“   r  r!  rŒ  rž  r‹  r  r  r  r‰  r  r*  rÖ   r$  r'  rŸ  r,  r6  r   r;  rA  rC  rF  rI  rL  rO  rR  rV  rZ  r]  r_  r�  rb  rd  rt  rf  rw  rg  r¦  rŠ  r   Úadd_varÚadd_sampÚadd_kbdr,   r)   r(   rx  rx  *  sD  „ òòò?òò,òó	òòòóòóóòóòòò
ó	ó	òò:òò3òð ñó ðòBòEòCòò
ð
 ñó ðò7òò9ò:òð ñ%ó ð%ð ñ	ó ð	ð ñó ðð
 ñó ðð
 ñó ðò
(ò7ð ñ3ó ð3òò&;òóòòòòòóòòòòòòòð ØØØØØØØØØØØØØ Ø!ØØØó'JòXóò
òð2 ñ,ó ð,ð ñ-ó ð-ð €GØ€HØ�Gr)   rx  c                   ó>   — e Zd Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zy)Ú
Colorspacec                 ó  — t        |t        j                  «      r|| _        y|t        k(  r3t        j                  t        j                  j
                  «      | _        y|t        k(  r3t        j                  t        j                  j                  «      | _        y|t        k(  r3t        j                  t        j                  j                  «      | _        yt        j                  t        j                  j                  «      | _        y)z!Supported are GRAY, RGB and CMYK.N)
r<   r�   ÚFzColorspacer³   ÚCS_GRAYÚ
Fixed_GRAYÚCS_CMYKÚ
Fixed_CMYKÚCS_RGBÚ	Fixed_RGB)r'   rG  s     r(   rŠ   zColorspace.__init__‘
  s¨   € ä�uœe×0Ñ0Ô1ØˆD�IØ”gÒÜ×*Ñ*¬5×+=Ñ+=×+HÑ+HÓIˆD�IØ”gÒÜ×*Ñ*¬5×+=Ñ+=×+HÑ+HÓIˆD�IØ”fŠ_Ü×*Ñ*¬5×+=Ñ+=×+GÑ+GÓHˆD�Iä×*Ñ*¬5×+=Ñ+=×+GÑ+GÓHˆD�Ir)   c                 óD   — d| j                      }d|›d| j                  ›�S )N)rZ   ÚGRAYrZ   ÚRGBÚCMYKzColorspace(CS_z) - )rC   r   ©r'   r  s     r(   rÚ   zColorspace.__repr__ž
  s   € Ø+¨D¯F©FÑ3‰Ú+,¨d¯iªiÐ8Ð8r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   Úfz_colorspace_namer³   r-   s    r(   Ú_namezColorspace._name¢
  s   € Ü×'Ñ'¨¯	©	Ó2Ð2r)   c                 ó@   — t        j                  | j                  «      S )zSize of one pixel.)r�   Úfz_colorspace_nr³   r-   s    r(   rC   zColorspace.n¥
  ó   € ô ×$Ñ$ T§Y¡YÓ/Ð/r)   c                 ó"   — | j                  «       S )zName of the Colorspace.©r•  r-   s    r(   r   zColorspace.nameª
  s   € ð �z‰z‹|Ðr)   N)	r.   r/   r0   rŠ   rÚ   r•  r!  rC   r   r,   r)   r(   r…  r…  �
  s:   „ òIò9ò3ð ñ0ó ð0ð ñó ñr)   r…  c                   ó   — e Zd Zd„ Zy)ÚDeviceWrapperc                 ó¤  — t        |t        j                  «      r|\  }|| _        y t        |t        d «      r‚|\  }}t        |«      }t        j                  |«      r.t        j                  t        j                  «       |«      | _        y t        j                  t        j                  «       ||«      | _        y t        |t        j                  «      r|\  }t        j                  |«      | _        y t        |t        j                  d «      r6|\  }}t        j                  |«      }	t        j                  ||	«      | _        y t        d|›�«      ‚)Nz%Unrecognised args for DeviceWrapper: )Ú
args_matchr�   ÚFzDevicer³   rÄ  ÚJM_irect_from_pyÚfz_is_infinite_irectÚfz_new_draw_devicer_  Úfz_new_draw_device_with_bboxÚFzDisplayListÚfz_new_list_devicerð  rë  Úfz_new_stext_devicere   )
r'   rä  ÚdeviceÚpmrï  r  r¯  Útpr¬  Úoptss
             r(   rŠ   zDeviceWrapper.__init__±
  s   € Ü�tœUŸ^™^Ô,Ø‰GˆFØˆD�IÜ˜œv tÔ,Ø‰HˆB�Ü# TÓ*ˆDÜ×)Ñ)¨4Ô0Ü!×4Ñ4´e·n±nÓ6FÈÓK�•	ä!×>Ñ>ÄÇÁÓ@PÐRTÐVZÓ[�•	Ü˜œu×2Ñ2Ô3Ø‰CˆBÜ×0Ñ0°"Ó5ˆD�IÜ˜œu×0Ñ0°$Ô7Ø‰IˆB�Ü×'Ñ'¨Ó/ˆDÜ×1Ñ1°2°tÓ<ˆD�IäÐDÀTÀHÐMÓNÐNr)   Nr‹   r,   r)   r(   rœ  rœ  °
  s   „ óOr)   rœ  c                   ó>   — e Zd Zd„ Zd„ Zdd„Zd	d„Zed„ «       Zd„ Z	y)
ÚDisplayListc                 ó6   — t        | «      t        ury d| _        y ©NF)r·   r¬  rÞ   r-   s    r(   Ú__del__zDisplayList.__del__È
  s   € Ü�D‹zœ[Ñ(¨&Øˆ�r)   c                 ó  — t        |«      dk(  r;t        |d   t        j                  «      rt        j                  |d   «      | _        y t        |«      dk(  r(t        |d   t        j                  «      r|d   | _        y J d|›�«       ‚)Nr   r   zUnrecognised args=)r6   r<   r�   rU  r¤  r³   r-  s     r(   rŠ   zDisplayList.__init__Ì
  so   € Üˆt‹9˜Š>œj¨¨a©´%·,±,Ô?Ü×+Ñ+¨D°©GÓ4ˆD�IÜ�‹Y˜!Š^¤
¨4°©7´E×4GÑ4GÔ HØ˜Q™ˆD�Ià-Ð+ d WÐ-Ó-�1r)   Nc                 óÜ   — t        |t        «      r|j                  }n-t        j                  t        j                  j
                  «      }t        | j                  ||||d «      }d|_        |S ©NT)r<   r…  r³   r�   r‡  r�  ÚJM_pixmap_from_display_listrÞ   )r'   rÆ  rÈ  rÉ  rï  rÿ   s         r(   rÎ  zDisplayList.get_pixmapÔ
  sW   € Ü�j¤*Ô-Ø#Ÿ™‰Jä×+Ñ+¬E×,>Ñ,>×,HÑ,HÓIˆJÜ)¨$¯)©)°V¸ZÈÐPTÐVZÓ[ˆØˆŒØˆ
r)   c                 óŠ   — t        j                  «       }||_        t        j                  | j                  |«      }d|_        |S )z#Make a TextPage from a DisplayList.T)r�   rë  r¬  rð  r³   rÞ   )r'   r¬  Ústext_optionsrÿ   s       r(   rø  zDisplayList.get_textpageÝ
  s:   € ä×,Ñ,Ó.ˆØ#ˆÔÜ×Ñ §	¡	¨=Ó9ˆØˆŒØˆ
r)   c                 ól   — t        t        j                  | j                  «      «      }t	        |«      }|S r+   )rT  r�   Úfz_bound_display_listr³   r  ©r'   rÿ   s     r(   rä   zDisplayList.rectå
  s)   € äœe×9Ñ9¸$¿)¹)ÓDÓEˆÜ�3‹iˆØˆ
r)   c                 ó¦   — t        j                  | j                  |j                  t	        |«      t        |«      t        j                  «       «       y r+   )r�   Úfz_run_display_listr³   r§  rÀ  rí  ÚFzCookie)r'   Údwrm  Úareas       r(   ÚrunzDisplayList.runë
  s8   € Ü×!Ñ!Ø—	‘	Ø—	‘	Ü! !Ó$Ü Ó%Ü—‘Ó õ	r)   )NNr   N)r   )
r.   r/   r0   r¯  rŠ   rÎ  rø  r!  rä   r¾  r,   r)   r(   r¬  r¬  Ç
  s/   „ òò.óóð ñó ðó
r)   r¬  c                   ó  — e Zd Zdefd„Z�dd„Zd„ Zd„ Zej                  dŽde
defd	„«       Zej                  d
k\  r6ej                  dedee   fd„«       Zej                  dee
e
f   defd„«       ZdŽd„Z�dd„Zde
fd„Zdefd„Zd„ Zde
ddfd„Zd„ Zd„ Zd„ Z	 	 	 �ddd dd de
de
de
ddfd„Z	 	 	 	 �ddd dd de
de
de
ddfd „Zd!„ Zd"ej<                  e
ef   de
fd#„Z�dd$„Z d%„ Z!d&„ Z"d'„ Z#�dd(„Z$d)„ Z%d*efd+„Z&dŽd,e
d-ed.ed/e
d0e
de
fd1„Z'd2„ Z(d3„ Z)d4„ Z*d5„ Z+d6„ Z,�dd7„Z-d8„ Z.d9„ Z/d:„ Z0�dd;„Z1d<„ Z2d=„ Z3d>„ Z4d?„ Z5�d d@„Z6e7dA„ «       Z8�ddB„Z9�d!dD„Z:dE„ Z;dF„ Z<dGdGdHœdIedJeddfdK„Z=e7dL„ «       Z>dM„ Z?dN„ Z@�d"dO„ZA�d#dPe
dQe
fdR„ZBdS„ ZC�d#dPe
fdT„ZDdU„ ZE	 	 	 �ddVedWeFdXeGdYeGdZeGddfd[„ZHde
fd\„ZId"ej<                  e
ef   fd]„ZJd"ej<                  e
ef   deKfd^„ZLd"ej<                  e
ef   deMfd_„ZNdefd`„ZO	 	 	 	 �dd"ej<                  e
ef   dWePdXeGdYeGdZeGddfda„ZQ�d$db„ZRdc„ ZS	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d%de„ZTdf„ ZU�d#dg„ZV	 	 	 �d&dhd d,e
d0e
de
dieWdefdj„ZX�d#dk„ZYdl„ ZZdm„ Z[dhd d,e
de
fdn„Z\do„ Z]dhd d,e
deMfdp„Z^dq„ Z_�d'dPe
dredefds„Z`�d'dPe
dredefdt„Zadu„ Zb�d'dv„ZcdddddddGdwœdhd dPe
dxeddyeedzefd{edIedd|fd}„Zg	 	 	 	 	 �d(dhd dPe
dedzefd€ehd�d‚dƒedejÒ                  fd„„ZjdPe
defd…„Zkd†„ Zl	 �d)dhd d‡edefdˆ„Zmd‰„ Zndhd defdŠ„Zodhd defd‹„ZpdŒ„ Zq	 	 	 	 	 	 	 	 �d*d�„Zr	 	 	 	 	 	 	 �d+dhd dPe
d~ej<                  eedf   d�esd�esd‘esd’ed“eGd”etde
fd•„ZudddddCdCdCdddCdd–œd—„Zve7d˜„ «       Zwe7d™„ «       Zxe7dš„ «       Zye7d›„ «       Zze7dœ„ «       Z{e7d�„ «       Z|dž„ Z}dŸ„ Z~d „ Zd¡„ Z€d¢„ Z�d£„ Z‚d¤„ Zƒd¥„ Z„�d,d¦„Z…d§„ Z†d¨„ Z‡e7d©„ «       Zˆe7dª„ «       Z‰d«„ ZŠ�d-d¬„Z‹d­„ ZŒd®„ Z�d¯„ ZŽe7deMfd°„«       Z��d#dPe
dQe
fd±„Z�e7d²„ «       Z‘�d,d³„Z’e7d´„ «       Z“	 	 	 �ddhd dPe
d�esd‘esdef
dµ„Z”d¶„ Z•d·„ Z–e7d¸„ «       Z—d¹„ Z˜dº„ Z™d»„ Zše7defd¼„«       Z›e7defd½„«       Zœe�j:                  �j<                  d
k  reŸ�j@                  �jB                  Z¢neŸ�j@                  �jB                  e   Z¢�dd¾ehd¿ehdÀehde¢fdÁ„Z£dÂ„ Z¤�d.dÃ„Z¥e7dÄ„ «       Z¦dÅ„ Z§d*edefdÆ„Z¨�d/dÇ„Z©	 	 	 	 	 	 	 	 	 	 �d0dÈ„Zª�d1dÉ„Z«dÊ„ Z¬	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d2dË„Z­dÌ„ Z®dÍ„ Z¯	 	 	 	 	 	 	 	 	 	 	 	 	 �d3dhd 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fdÛ„Z°	 	 	 	 �d4dhd dPe
d~edÜedzefd€e
d�d‚defdÝ„Z±dÞ„ Z²�d,dß„Z³�d5dà„Z´dŽdá„ZµdâeMdefdã„Z¶�d,dhd däeMddfdå„Z·dhd d,e
dæe
ddfdç„Z¸	 	 	 	 �d6dhd d,e
dèej<                  edf   déeGdêej<                  edf   de
fdë„Z¹dìefdí„Zºdîefdï„Z»dð„ Z¼	 �d1dhd dñedòe
de
fdó„Z½	 	 	 	 	 	 	 	 �d7dhd de
dôeWdõehdPehdöeGd÷eGdQe¾dXeGdøesddfdù„Z¿dú„ ZÀ�d8dhd dûedüedehfdý„ZÁdŽdþ„ZÂ�d,dÿ„ZÃ�d9�d „ZÄe7�d„ «       ZÅ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d:�d„ZÆ�d„ ZÇe7�d„ «       ZÈd�dœdhd �de
�de
�deddf
�d	„ZÉ�d
„ ZÊ�d„ ZË�d„ ZÌ�d„ ZÍdŽ�d„ZÎ�d„ ZÏ�d„ ZÐ�d.�d„ZÑ�d„ ZÒ�d„ ZÓ�d„ ZÔ�d„ ZÕ�dZÖ e7�d„ «      Z×eÎZØy(;  r°   Úreturnc                 ó@  — t        |«      t        u r|| j                  k  ryyt        |«      t        t        fvst        |«      dk7  ry|\  }}	 t        |t        «      r|dk  s|| j                  k\  ry	 t        |t        «      r|dk  s|| j                  |«      k\  ryy)NTFr   r   )	r·   r3   Ú
page_countr¢   r¡   r6   r<   Úchapter_countÚchapter_page_count)r'   ÚlocÚchapterÚpnos       r(   Ú__contains__zDocument.__contains__ú
  s˜   € Ü�‹9œÑØ�T—_‘_Ò$ØØÜ�‹9œU¤D˜MÑ)¬S°«X¸ª]ØØ‰ˆ�ØÜ! '¬3Ô/Ø˜Q’;Ø˜d×0Ñ0Ò0àØÜ! #¤sÔ+Ø˜’7Ø˜$×1Ñ1°'Ó:Ò:àØr)   Nc                 ór  — | j                   st        d«      ‚t        |«      t        u r| j	                  |«      S t        |«      t
        t        t        fv r| j                  |«      S t        |«      t        urt        d«      ‚| j                  }|j                  r|j                  nd}|j                  r|j                  n|}|j                  r|j                  nd}|dk  r||z  }|dk  rŒ||k\  rt        d«      ‚|dk  r||z  }|dk  rŒ||kD  rt        d«      ‚| j                  t        |||«      «      S )Nú	is no PDFzbad argument typer   r   úbad page number(s))Úis_pdfr²   r·   r3   Údelete_pager¡   r¢   r8  Údelete_pagesÚslicerÂ  r‚  ÚstopÚstep)r'   rL  Úpcr‚  rÐ  rÑ  s         r(   Ú__delitem__zDocument.__delitem__  s  € Ø�{Š{Ü˜[Ó)Ð)Ü�‹7”c‰>Ø×#Ñ# AÓ&Ð&Ü�‹7”tœU¤EÐ*Ñ*Ø×$Ñ$ QÓ'Ð'Ü�‹7œ%ÑÜÐ0Ó1Ð1Ø�_‰_ˆØŸ7š7�—’¨ˆØŸšˆq�vŠv RˆØŸšˆq�vŠv QˆØ�aŠiØ�R‰KˆEð �a‹ià�BŠ;ÜÐ1Ó2Ð2Ø�QŠhØ�B‰JˆDð �Q‹hà�"Š9ÜÐ1Ó2Ð2Ø× Ñ ¤ u¨d°DÓ!9Ó:Ð:r)   c                 ó   — | S r+   r,   r-   s    r(   rz  zDocument.__enter__'  r{  r)   c                 ó$   — | j                  «        y r+   ©Úcloser-  s     r(   r}  zDocument.__exit__*  ó   € Ø�
‰
�r)   r   rL  c                  ó   — y r+   r,   ©r'   rL  s     r(   rN  zDocument.__getitem__-  s   € àr)   )r   é	   c                  ó   — y r+   r,   rÚ  s     r(   rN  zDocument.__getitem__2  ó   € àr)   c                  ó   — y r+   r,   rÚ  s     r(   rN  zDocument.__getitem__6  rÝ  r)   c                 ól  — t        |t        «      r1t        |j                  t	        | «      «      Ž D �cg c]  }| |   ‘Œ	 c}S t        |t
        «      s;t        |t        «      r t	        |«      dk(  rt        d„ |D «       «      sJ d|›d�«       ‚|| vrt        d|› d�«      ‚| j                  |«      S c c}w )Nr   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr+   )r<   r3   )Ú.0r  s     r(   Ú	<genexpr>z'Document.__getitem__.<locals>.<genexpr>=  s   è ø€ ÐRqÑopÐjkÔS]Ð^_Ôad×SeÑopùs   ‚zInvalid item number: i=r   úpage z not in document)
r<   rÏ  r8  Úindicesr6   r3   r¢   ÚallÚ
IndexErrorÚ	load_page)r'   rL  rn  s      r(   rN  zDocument.__getitem__:  s®   € Ü�aœÔÜ%*¨A¯I©I´c¸$³iÓ,@Ñ%AÓBÑ%A �D˜“GÐ%AÑBÐBÜ˜!œSÔ!¤j°´EÔ&:¼sÀ1»vÈº{ÌsÑRqÑopÓRqÔOqð 	.Ø*¨ t¨1Ð-ó	.Ðrà�D‰=Ü˜u Q CÐ'7Ð8Ó9Ð9Ø�~‰~˜aÓ Ð ùò Cs   ³B1c                 ó  — t         }da 	 d| _        d| _        d| _        d| _        g | _        i | _        i | _        i | _        t        j                  «       | _
        t        |t        j                  «      r|}	|	| _        d| _        	 |a y|}
|}t!        |«      }t        j"                  |«      s2|j$                  |j&                  z
  }
|j(                  |j*                  z
  }|| _        || _        |��|�|€|}t        |t0        t2        f«      rn_t        |t4        «      rt1        |«      }nCt        |t6        j8                  «      r|j;                  «       }nt=        dt?        |«      ›d�«      ‚|| _        t        |t0        t2        f«      sJ ‚tA        |«      dk(  rtC        d«      ‚t        jD                  t        jF                  |«      tA        |«      «      }	 t        jH                  |r|nd|«      }�ng|�r;|rJ ‚t        |tR        «      rnLtU        |d«      rtS        |«      }n4tU        |d«      r|jV                  }nt=        dt?        |«      ›d|›d�«      ‚|| _        tX        jZ                  j]                  |«      st_        d|› d�«      ‚tX        jZ                  ja                  |«      stQ        d|› d�«      ‚tX        jZ                  jc                  |«      dk(  rtC        d|›d�«      ‚|r-	 t        jd                  |«      }t        jH                  ||«      }n@	 t        jf                  |«      }n)t        j                  «       }t        jh                  |«      }|
dkD  r|dkD  rt        jj                  ||
||«       n-t        jl                  |«      rt        jj                  |ddd«       || _        d| _7        | jn                  rƒtp        js                  «       | _:        | jv                  rd| _        n| jy                  «        |r|j{                  «       j}                  d«      s|r#d|j{                  «       v r	 | j                  «       }t€        rbt        | j                  t        j                  «      | _        | j                  rt‚        j„                  | _C        |a yt‚        jˆ                  | _C        |a y# tJ        $ r$}tL        d	kD  r
tO        «        tQ        d
«      |‚d}~ww xY w# tJ        $ r+}tL        d	kD  r
tO        «        tQ        d|›d|›d�«      |‚d}~ww xY w# tJ        $ r(}tL        d	kD  r
tO        «        tQ        d|›d�«      |‚d}~ww xY w# tJ        $ r$}tL        d	kD  r
tO        «        tQ        d«      |‚d}~ww xY w# |a w xY w)aV  Creates a document. Use 'open' as a synonym.

        Notes:
            Basic usages:
            open() - new PDF document
            open(filename) - string or pathlib.Path, must have supported
                    file extension.
            open(type, buffer) - type: valid extension, buffer: bytes object.
            open(stream=buffer, filetype=type) - keyword version of previous.
            open(filename, fileype=type) - filename with unrecognized extension.
            rect, width, height, fontsize: layout reflowable document
            on open (e.g. EPUB). Ignored if n/a.
        r   FNTzbad stream: type(stream)=r   zCannot open empty stream.rZ   r   zFailed to open streamÚabsoluter   zbad filename: type(filename)=z
 filename=zno such file: 'r×   z' is no filez!Cannot open empty file: filename=zFailed to open file z	 as type i�  iX  é   Úsvgúcannot open broken document)EÚJM_mupdf_show_errorsr±   Úis_encryptedÚmetadataÚ	FontInfosÚ	GraftmapsÚ
ShownPagesÚInsertedImagesrò  ÚWeakValueDictionaryÚ
_page_refsr<   r�   rµ   r³   Úthis_is_pdfrí  rœ  Úx1Úx0Úy1Úy0r•  r   r  Ú
memoryviewrL  rM  rN  rf  rœ  r·   r6   ÚEmptyFileErrorÚfz_open_memoryÚpython_buffer_dataÚfz_open_document_with_streamre   r÷   rt   ÚFileDataErrorrÙ   r9   r   rb   r	   ÚexistsÚFileNotFoundErrorra  ÚgetsizeÚfz_open_fileÚfz_open_documentr´   Úfz_layout_documentÚfz_is_document_reflowablerÞ   rø   Úgen_idÚ	_graft_idÚ
needs_passÚinit_docr¿  rÉ  Úconvert_to_pdfr  r   Úpage_count_pdfÚpage_count2Úpage_count_fz)r'   rd   r   Úfiletyperä   rJ  rÅ  rç   ÚJM_mupdf_show_errors_oldÚpdf_documentr   r¶  r  Ústream2r  rM  Ú	fz_streamrF  rí  s                      r(   rŠ   zDocument.__init__C  sÿ  € ô$ $8Ð Ø ÐðB	<Ø %ˆDŒNØ %ˆDÔØ %ˆDÔØ#ˆDŒMØ!ˆDŒNØ!ˆDŒNØ!ˆDŒOØ#%ˆDÔÜ&×:Ñ:Ó<ˆDŒOÜ˜(¤E×$5Ñ$5Ô6Ø'�Ø(�”	Ø#'�Ô Øðh $<Ñ ðe ˆAØˆAÜ Ó%ˆAÜ×,Ñ,¨QÔ/Ø—D‘D˜1Ÿ4™4‘K�Ø—D‘D˜1Ÿ4™4‘K�à!ˆDŒJØ ˆDŒKàÑ!ØÐ'¨HÐ,<ð  (�HÜ˜f¤u¬jÐ&9Ô:ØÜ ¬	Ô2Ü" 6›]‘FÜ ¬¯
©
Ô3Ø#Ÿ_™_Ó.‘Fä#Ð&@´4¸³<°/ÀÐ$CÓDÐDØ$�”ä! &¬5´*Ð*=Ô>Ð>Ð>Ü�v“; !Ò#ô )Ð)DÓEÐEä×.Ñ.¬u×/GÑ/GÈÓ/OÔQTÐU[ÓQ\Ó]�ðHÜ×<Ñ<É¹XÐWYÐ[bÓc’Cò
 Ù!Ð!�zÜ˜h¬Ô,ØÜ˜X zÔ2Ü" 8›}‘HÜ˜X vÔ.Ø'Ÿ}™}‘Hä#Ð&D´T¸(³^Ð4EÀ[ÀxÀkÐQRÐ$SÓTÐTØ%�”
ô —w‘w—~‘~ hÔ/Ü+¨o¸h¸ZÀqÐ,IÓJÐJÜŸ™Ÿ™¨Ô1Ü'¨!¨H¨:°\Ð(BÓCÐCÜ—W‘W—_‘_ XÓ.°!Ò3Ü(Ð+MÀHÀ;ÈaÐ)PÓQÐQáðnÜ$)×$6Ñ$6°xÓ$@˜	Ü#×@Ñ@ÀÈ9ÓU™ð
YÜ#×4Ñ4°XÓ>™ô ×'Ñ'Ó)�Ü×&Ñ& sÓ+�à�1Šu˜˜QšÜ×(Ñ(¨¨a°°HÕ=Ü×0Ñ0°Ô5Ü×(Ñ(¨¨c°3¸Ô;àˆDŒIð  ˆDŒLà�|Š|Ü!&§¡£�”Ø—?’?Ø(,�DÕ%à—M‘M”Oñ  §¡Ó 0× 9Ñ 9¸%Ô @ÁHÐQVÐZb×ZhÑZhÓZjÑQjðRØ ×/Ñ/Ó1˜õ
 Ü#-¨t¯y©y¼%×:KÑ:KÓ#L�Ô Ø×#Ò#Ü',×';Ñ';�DÔ$ð $<Ñ ô (-×':Ñ':�DÔ$à#;Ñ øô] !ò HÜ+¨aÒ/´NÔ4DÜ'Ð(?Ó@ÀaÐGûðHûô> %ò nÜ/°!Ò3¼Ô8HÜ+Ð.BÀ8À,ÈiÐX`ÐWcÐcdÐ,eÓfÐlmÐmûðnûô %ò YÜ/°!Ò3¼Ô8HÜ+Ð.BÀ8À,ÈaÐ,PÓQÐWXÐXûðYûô< %ò RÜ/°!Ò3¼Ô8HÜ+Ð,IÓJÐPQÐQûðRûð $<Ñ ús¬   ŠA;U= Â	EU= ÇR2 Ç1C<U= Ë.+S" ÌU= ÌT Ì0DU= Ð7U ÑAU= ÒU= Ò2	SÒ;SÓSÓU= Ó"	TÓ+&TÔTÔU= Ô	U
Ô"#UÕU
Õ
U= Õ	U:ÕU5Õ5U:Õ:U= Õ=Vc                 ó   — | j                   S r+   )rÂ  r-   s    r(   Ú__len__zDocument.__len__Ü  s   € Ø�‰Ðr)   c                 óÞ   — | j                   rdnd}| j                  €4| j                  dk(  r|d| j                  z  z   S |d| j                  ›d�z   S |d| j                  | j                  fz  z   S )Nzclosed rZ   zDocument(<new PDF, doc# %i>)z
Document('z')z!Document('%s', <memory, doc# %i>))r±   r   r   r	  ©r'   rm  s     r(   rÚ   zDocument.__repr__ß  si   € ØŸš‰I¨RˆØ�;‰;ÐØ�y‰y˜BŠØÐ9¸D¿N¹NÑJÑJÐJÙ¨4¯9«9Ð6Ñ6Ð6ØÐ6¸$¿)¹)ÀTÇ^Á^Ð9TÑTÑTÐTr)   c           	      óæ  — | j                   s| j                  rt        d«      ‚t        | d¬«      }|j                  syt        j                  t        j                  |«      t        d«      t        d«      t        d«      t        d«      «      }|j                  rt        j                  |«      st        d	«      ‚t        j                  |«      }t        ||«      }t        j                  |||«       y)
zAdd new form font.údocument closed or encryptedr   ©r¼   NÚRootÚAcroFormÚDRÚFontzPDF has no form fonts yet)r±   rî  r²   r½   r»   r�   r  Úpdf_trailerrô   rg  rÍ   Úpdf_new_nameÚJM_pdf_obj_from_strr:  )r'   r   rH  rF  Úfontsr�  rD   s          r(   Ú_addFormFontzDocument._addFormFontç  sÂ   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜t¨aÔ0ˆØ�~Š~ØÜ×#Ñ#Ü×!Ñ! 3Ó'Ü˜Ó Ü˜Ó$Ü˜“Ü˜Ó óˆð ×Ò¤u×'8Ñ'8¸%Ô'@ÜÐ ;Ó<Ð<Ü×Ñ Ó%ˆÜ  dÓ+ˆÜ×Ñ˜E 1 aÕ(r)   Úidxc                 óL   — | j                  «       |   }| j                  |«       y)z$Delete TOC / bookmark item by index.N)Úget_outline_xrefsÚ_remove_toc_item)r'   r%  rý   s      r(   Údel_toc_itemzDocument.del_toc_itemû  s%   € ð
 ×%Ñ%Ó'¨Ñ,ˆØ×Ñ˜dÕ#r)   c                 óô  — | j                   s| j                  rt        d«      ‚g }t        | d¬«      }|j                  s|S t        j                  t        j                  |«      t        d«      «      }t        j                  |t        d«      «      }|j                  s|S t        j                  |t        d«      «      }t        ||«      }t        |«      }t        j                  |«      }t        j                  ||«       t        j                  |t        d«      «       t        |«      D ]'  }t        ||«      \  }	}
t        j                  ||
«       Œ) |j!                  |«       |}| j#                  «        |S )zDelete the TOC.r  r   r  r  ÚOutlinesÚFirst)r±   rî  r²   r½   r»   r�   ró   r   rô   ÚJM_outline_xrefsr6   rî   Úpdf_delete_objectr-  r8  ÚJM_INT_ITEMri   r  )r'   ÚxrefsrF  r,  ÚolrootÚfirstÚ
xref_countÚolroot_xrefrL  rí  rý   rÿ   s               r(   Ú_delToCzDocument._delToC  s2  € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<ØˆÜ˜t¨aÔ0ˆØ�~Š~ØˆLä×!Ñ!¤%×"3Ñ"3°CÓ"8¼(À6Ó:JÓKˆä×#Ñ# D¬(°:Ó*>Ó?ˆØ× Ò ØˆLä×"Ñ" 6¬8°GÓ+<Ó=ˆä  ¨Ó.ˆÜ˜“Zˆ
ä×&Ñ& vÓ.ˆÜ×Ñ  [Ô1Ü×Ñ˜4¤¨*Ó!5Ô6ä�zÖ"ˆAÜ! %¨Ó+‰GˆAˆtÜ×#Ñ# C¨Õ.ð #ð 	�‰�[Ô!ØˆØ�‰ŒØˆ
r)   c                 ó²   — t        | «      }t        j                  ||«       |j                  j                  r t        j
                  |j                  «       y y r+   )r½   r�   Úpdf_delete_pager»   Úrev_page_mapÚll_pdf_drop_page_tree)r'   rÇ  rF  s      r(   Ú_delete_pagezDocument._delete_page#  s@   € Ü˜tÓ$ˆÜ×Ñ˜s CÔ(Ø�>‰>×&Ò&Ü×'Ñ'¨¯©Õ8ð 'r)   c                 óª   — t        | «      }t        |dt        j                  |«      dz
  «      st	        t
        «      ‚t        j                  ||«       y)zDelete object.r   N)r½   r�  r�   rt  r²   ru  r.  ©r'   rý   rF  s      r(   Ú_deleteObjectzDocument._deleteObject)  sC   € ä˜tÓ$ˆÜ˜˜a¤×!3Ñ!3°CÓ!8¸Ñ!:Ô;ÜœlÓ+Ð+Ü×Ñ  TÕ*r)   r…  Údoc1Údoc2Ú	from_pageÚto_pageÚstart_atc                 óž  — d„ }|dk  rd}n!||j                   k\  r|j                   dz
  }n|}|dk  s||j                   k\  r|j                   dz
  }n|}|dk  rt        d«      ‚|}||k  rdnd}	t        t        |||	z   |	«      «      }
t        t	        |
«      «      D �cg c]  }||z   ‘Œ	 }}g }g }t        t	        |
«      «      D ]P  }|
|   }||   }|j                  |«      }| j                  |«      }|j                  |«       |j                  |«       ŒR t        t	        |«      «      D ]œ  }||
|      }|j                  «       }t	        |«      dk(  rd}Œ,|j                   }| ||      }g }|D ]5  }|d   t        k(  r|d   |
vrŒ ||||
|«      }|sŒ%|j                  |«       Œ7 |g k7  sŒƒ|j                  t        |«      «       Œž yc c}w )	zÃInsert links contained in copied page range into destination PDF.

        Parameter values **must** equal those of method insert_pdf(), which must
        have been previously executed.
        c           	      óî  — | d   |z  }t        t        |«      «      }| d   t        k(  rMt        d   }|j	                  | d   «      }| d   |z  } |||   |j
                  |j                  | d   |«      }	|	S | d   t        k(  r§| d   dk\  rrt        d   }| j                  dt        dd«      «      }
t        |
«      t        urt        dd«      }
 || d   |
j
                  |
j                  | d   | d	   | d	   |«      }	|	S t        d
   }t        | d   «      }|dd }| d	   } ||||«      }	|	S | d   t        k(  rt        d   } || d	   | d	   |«      }	|	S | d   t        k(  rt        d   } || d   |«      }	|	S d}	|	S )z5Create annotation object string for a passed-in link.ÚfromÚkindÚgoto1rÅ   ÚtoÚzoomr   Úgotor1r_   Úgotor2r   r…  ÚlaunchÚurirZ   )r£   r¢   Ú	LINK_GOTOÚ
annot_skelÚindexr  r  Ú
LINK_GOTORr7   rÖ  r·   Úget_pdf_strÚLINK_LAUNCHÚLINK_URI)ÚlnkÚxref_dstÚpno_srcrË  r  rä   Útxtr%  r�  rÎ   ÚpntrH  r¸  s                r(   Ú	cre_annotz%Document._do_links.<locals>.cre_annot@  sÂ  € ð �F‘˜cÑ!ˆAÜœU 1›XÓ&ˆDØ�6‰{œiÒ'Ü  Ñ)�Ø—m‘m C¨¡KÓ0�Ø˜‘I ‘O�Ù˜H S™M¨1¯3©3°·±°S¸±[À$ÓG�ðF ˆLðC �V‘¤
Ò*Ø�v‘; !Ò#Ü$ XÑ.�CØŸ'™' $¬¨a°«Ó4�CÜ˜C“y¬Ñ-Ü# A q›k˜ÙØ˜F™ØŸ™ØŸ™Ø˜F™Ø˜F™Ø˜F™Øó�Eð6 ˆLô# % XÑ.�CÜ$ S¨¡YÓ/�BØ˜A˜b˜�BØ˜F™�AÙ  A tÓ,�Eð ˆLð �V‘¤Ò+Ü  Ñ*�Ù˜C ™K¨¨V©°dÓ;�ð ˆLð �V‘¤Ò(Ü  Ñ'�Ù˜C ™J¨Ó-�ð
 ˆLð �àˆLr)   r   r   z'start_at' must be >= 0r…  NrF  rÅ   )rÂ  r²   r¡   r8  r6   Ú	page_xrefri   Ú	get_linksrX  rN  Ú_addAnnot_FromStringr¢   )r>  r?  r@  rA  rB  rZ  re  r©  ÚsaÚincrrW  rL  Úpno_dstÚxref_srcrV  Úp_srcÚp_dstÚold_xrefÚnew_xrefÚpage_srcÚlinksrË  Úpage_dstÚlink_tabr  Ú
annot_texts                             r(   Ú	_do_linkszDocument._do_links0  sê  € ò ,	ðb �qŠ=Ø‰BØ˜$Ÿ/™/Ò)Ø—‘ 1Ñ$‰BàˆBà�QŠ;˜' T§_¡_Ò4Ø—‘ 1Ñ$‰BàˆBà�aŠ<ÜÐ6Ó7Ð7Øˆà˜"’H‰q "ˆô ”u˜R  d¡¨DÓ1Ó2ˆÜ#(¬¨W«Ô#6Ó7Ñ#6˜a�2˜“6Ð#6ˆÐ7ð ˆØˆÜ”s˜7“|Ö$ˆAØ˜A‘JˆEØ˜A‘JˆEØ—~‘~ eÓ,ˆHØ—~‘~ eÓ,ˆHØ�O‰O˜HÔ%Ø�O‰O˜HÕ%ð %ô ”s˜8“}Ö%ˆAØ˜G A™JÑ'ˆHØ×&Ñ&Ó(ˆEô
 �5‹z˜QŠØ�ØØ×1Ñ1Ð1ˆCØ˜G A™JÑ'ˆHØˆHÛ�Ø�V‘9¤	Ò)¨q°©yÀÑ/GØÙ& q¨(°G¸SÓA�
ÚØ—O‘O JÕ/ð ð ˜2‹~Ø×-Ñ-¬u°X«Õ?ñ) &ùò 8s   ÂG
rZ  rÆ  c           	      ó(  ‡.‡/‡0— |j                   syd„ Š.d„ Š0ˆ/fd„Š/ˆ/fd„}dˆ.ˆ0fd„	}d„ }	t        j                  | «      }
t        j                  |«      }| j                   rj |	| «      }|j                  t	        d«      «      }|j                  t	        d	«      «      }|j                  «       �sv|j                  t	        d	«      d
«      }�nYt        j                   |	|«      «      }|j                  t	        d«      «       |j                  t	        d«      d
«       |j                  t	        d	«      «       |j                  t	        d	«      d
«       t        j                  ||«      }t        j                  |
|«      }|j                  t	        d«      «      }|j                  t	        d	«      «      }|j                  «       }t        j                  |
|d«      }t        j                  t        j                  |
«      t	        d«      «      }|j                  t	        d«      |«       ||k  rt        ||dz   «      }nt        ||dz
  d«      }i }|D ]Œ  }||   }|j!                  «       D ���cg c]  \  }}}|t        j"                  k(  r|‘Œ c}}}D ]I  }t        j$                  ||«      }|j                  t	        d«      «        ||«      \  }}|sŒAd|g dœ||<   ŒK ŒŽ |j'                  «       D ]•  }t        j$                  ||«      }t        j                  ||«      }t        j                  |
|«      }  ‰/| g «      }!| j                  «       }"t        j                  |
|"d«      }#|j)                  |#«       |"||   d<   |!||   d<   Œ— t        t+        |«      «      D �]6  }| ||z      }$|||      }|j!                  «       D ���cg c]  \  }}}|t        j"                  k(  r|‘Œ }%}}}|%sŒOt        j,                  |$«      }&t        j                  |&j/                  «       t	        d«      «      }'t        j
                  |'«      s.t        j                  |&j/                  «       t	        d«      d
«      }'|%D �]]  }t        j$                  ||«      }t        j0                  t        j2                  |d«      «      }(t        j                  |j                  t	        d«      «      «      }|dk(  r�	 t        j                  ||«      })t        j                  |
|)«      }+|+j                  «       }t        j                  |
|d«      },t        j(                  |'|,«       t        j(                  ||,«       nN||   }|d   j9                  |«      }-|d   |-   }t        j                  |
|d«      },t        j(                  |'|,«       |(s�ŒHt        j(                  ||,«       �Œ` �Œ9  ||
||¬«       yc c}}}w c c}}}w # t4        $ r}*t7        d|›d|*› �«       Y d}*~*�Œžd}*~*ww xY w)zµInsert widgets of copied page range into target PDF.

        Parameter values **must** equal those of method insert_pdf() which
        must have been previously executed.
        Nc                 ó*  — t        | j                  «       «      D ]w  }| j                  |«      }|j                  t	        d«      «      }t        |j                  «       «      D ].  }|j                  |«      }|j                  t	        d«      |«       Œ0 Œy y)z3 Make sure all kids have correct "Parent" pointers.ÚKidsr†  N)r8  r‰  rŠ  ró   rô   r:  )Úacro_fieldsrL  rÖ   Úkidsrn  Úkids         r(   Úclean_kid_parentsz/Document._do_widgets.<locals>.clean_kid_parents»  s|   € ä˜;×4Ñ4Ó6Ö7�Ø$×2Ñ2°1Ó5�Ø×*Ñ*¬8°FÓ+;Ó<�Ü˜t×1Ñ1Ó3Ö4�AØ×,Ñ,¨QÓ/�CØ×$Ñ$¤X¨hÓ%7¸Õ@ñ 5ñ 8r)   c           	      ód  — d„ }d„ }t        j                  | |«      }t        j                  | |«      }|j                  t        d«      «      }	|j                  t        d«      «      }
|	j	                  «       r || |||	||
«       y|
j	                  «       r || |||
||	«       y || ||||||«       y)a~  Called for each pair of widgets having the same name.

            Args:
                pdf: target MuPDF document
                acro_fields: object Root/AcroForm/Fields
                xref1, xref2: widget xrefs having same names
                name: (str) the name

            Result:
                Defined or updated widget parent that points to both widgets.
            c                 ó~  — t        j                  | |d«      }t        j                  | |d«      }|j                  |«      }|j                  |«       |j	                  «       s]t        j
                  | |«      }	|	j                  t        d«      «       |	j                  t        d«      |«       |j                  |«       yt        |j                  «       «      D ]d  }
|j                  |
«      }|j                  t        d«      |«       t        j                  | |j                  «       d«      }|j                  |«       Œf y)zûMerge widget in xref2 into "Kids" list of widget xref1.

                Args:
                    xref1, kids1: target widget and its "Kids" array.
                    xref2, kids2: source wwidget and its "Kids" array (may be empty).
                r   rý  r†  N)r�   rv  Úpdf_array_findr‹  Úpdf_is_arrayÚpdf_load_objectr-  rô   r:  Úpdf_array_pushr8  r‰  rŠ  rî   )rF  ro  Úxref1Úkids1Úxref2Úkids2Úw1_indÚw2_indr%  r)  rL  rq  Úkid_inds                r(   Ú	re_targetz=Document._do_widgets.<locals>.join_widgets.<locals>.re_targetÑ  s  € ô ×/Ñ/°°U¸AÓ>�Ü×/Ñ/°°U¸AÓ>�à!×0Ñ0°Ó8�Ø×,Ñ,¨SÔ1à×)Ñ)Ô+Ü"×2Ñ2°3¸Ó>�Fð ×'Ñ'¬°«Ô6Ø×'Ñ'¬°Ó(:¸FÔCð ×(Ñ(¨Õ0ä" 5×#6Ñ#6Ó#8Ö9˜Ø#×1Ñ1°!Ó4˜Ø×(Ñ(¬°(Ó);¸VÔDÜ"'×"8Ñ"8¸¸c¿n¹nÓ>NÐPQÓ"R˜Ø×,Ñ,¨WÕ5ñ	 :r)   c                 óp  — t        j                  | d«      }|j                  t        d«      |«       |j	                  t        d«      d«      }t        j
                  | |«      }	|	j                  «       }
t        j                  | |
d«      }|j                  t        d«      «      }|j                  t        d«      «       |	j                  t        d«      |«       |j                  t        d«      «      }|j                  t        d«      «       |	j                  t        d«      |«       |j                  t        d«      «       |j                  t        d«      |«       |j                  t        d«      «       |j                  t        d«      |«       t        j                  | |d«      }t        j                  | |d«      }|j                  |«       |j                  |«       |j                  |«      }|j                  |«       |j                  |«      }|j                  |«       |j                  |«       y	)
aÐ  Make new "Parent" for two widgets with same name.

                Args:
                    xref1, w1: first widget
                    xref2, w2: second widget
                    name: field name

                Result:
                    Both widgets have no "Kids". We create a new object with the
                    name and a "Kids" array containing the widgets.
                    Original widgets must be removed from AcroForm/Fields.
                r   rý  rn  r   r   ÚFTÚAAr†  N)r�   r?  rm  rô   Úpdf_dict_put_arrayÚpdf_add_objectrî   rv  ró   r-  r:  rx  ru  r‹  )rF  ro  ry  Úw1r{  Úw2r   Únewrp  Únew_objÚnew_obj_xrefÚnew_indÚftÚaaÚind1Úind2r%  s                    r(   Ú
new_targetz>Document._do_widgets.<locals>.join_widgets.<locals>.new_targetï  s½  € ô ×(Ñ(¨¨aÓ0�Ø×,Ñ,¬X°c«]¸DÔAØ×-Ñ-¬h°vÓ.>ÀÓB�Ü×.Ñ.¨s°CÓ8�Ø&×1Ñ1Ó3�Ü×0Ñ0°°lÀAÓF�ð —_‘_¤X¨d£^Ó4�Ø—‘¤¨£Ô/Ø×$Ñ$¤X¨d£^°RÔ8à—_‘_¤X¨d£^Ó4�Ø—‘¤¨£Ô/Ø×$Ñ$¤X¨d£^°RÔ8ð —‘¤¨£Ô.Ø—‘¤¨Ó 2°GÔ<Ø—‘¤¨£Ô.Ø—‘¤¨Ó 2°GÔ<ô ×-Ñ-¨c°5¸!Ó<�Ü×-Ñ-¨c°5¸!Ó<�Ø×#Ñ# DÔ)Ø×#Ñ# DÔ)ð "×0Ñ0°Ó6�Ø×,Ñ,¨SÔ1Ø!×0Ñ0°Ó6�Ø×,Ñ,¨SÔ1à×*Ñ*¨7Õ3r)   rn  N)r�   rw  ró   rô   rv  )rF  ro  ry  r{  r   r€  r�  r†  r‡  rz  r|  s              r(   Újoin_widgetsz*Document._do_widgets.<locals>.join_widgetsÄ  s«   € ò6ò<04ôd ×&Ñ& s¨EÓ2ˆBÜ×&Ñ& s¨EÓ2ˆBØ—O‘O¤H¨VÓ$4Ó5ˆEØ—O‘O¤H¨VÓ$4Ó5ˆEð ×!Ñ!Ô#Ù˜#˜{¨E°5¸%ÀÕGØ×#Ñ#Ô%Ù˜#˜{¨E°5¸%ÀÕGá˜3 ¨U°B¸¸rÀ4ÕHr)   c           	      ó~  •— t        j                  | t        d«      «      }|j                  «       s|S t	        |j                  «       «      D ]n  }|j                  |«      }t        j                  t        j                  |t        d«      «      «      r
 ‰||«      }ŒP|j                  |j                  «       «       Œp |S )z^Return xref list of leaf kids for a parent.

            Call with an empty list.
            rn  )
r�   ró   rô   rv  r8  r‰  rŠ  rg  ri   rî   )rÖ   Ú	kids_listrp  rL  rq  Úget_kidss        €r(   r”  z&Document._do_widgets.<locals>.get_kids.  sŸ   ø€ ô
 ×%Ñ% f¬h°vÓ.>Ó?ˆDØ×$Ñ$Ô&Ø Ð Ü˜4×-Ñ-Ó/Ö0�Ø×(Ñ(¨Ó+�Ü×$Ñ$¤U×%7Ñ%7¸¼XÀfÓ=MÓ%NÔOÙ (¨¨iÓ 8‘Ià×$Ñ$ S§^¡^Ó%5Õ6ð 1ð Ðr)   c                 ó’   •— g }t        j                  | t        d«      «      }|j                  «       }|dk(  r||fS  ‰||«      }||fS )z:Get the xref of top "Parent" and the list of leaf widgets.r†  r   )r�   ró   rô   rî   )r)  r“  rÖ   Úparent_xrefr”  s       €r(   Ú
kids_xrefsz(Document._do_widgets.<locals>.kids_xrefs>  sW   ø€ àˆIÜ×'Ñ'¨´¸Ó0BÓCˆFØ ×+Ñ+Ó-ˆKØ˜aÒØ" IÐ-Ð-Ù  ¨Ó3ˆIØ 	Ð)Ð)r)   c                 ó*  •— i }t        t        j                  |«      «      D ]o  }t        j                  ||«      }|j	                  «       }t        j
                  |t        d«      «      }|j                  |g «      }|j                  |«       |||<   Œq |j                  «       D ]e  \  }	}t        |«      dk  rŒ|dd \  }
}|r ‰| ||
||	«       Œ,|	d|› d�z   }t        j                  | |«      }|j                  t        d«      |«       Œg  ‰|«       y)z6Handle any widget name duplicates caused by the merge.rý  r   Nz [rZ  )r8  r�   r‰  rŠ  rî   Úpdf_dict_get_text_stringrô   r7   ri   r@   r6   rw  rm  )rF  ro  Újoin_duplicatesÚnamesrL  Úwobjectrý   rý  r0  r   Úxref0ry  Únewnamerr  r‘  s                €€r(   Údeduplicate_namesz/Document._do_widgets.<locals>.deduplicate_namesH  s	  ø€ àˆEô œ5×.Ñ.¨{Ó;Ö<�Ü×-Ñ-¨k¸1Ó=�Ø×)Ñ)Ó+�ô ×2Ñ2°7¼HÀS»MÓJ�ØŸ	™	 ! RÓ(�Ø—‘˜TÔ"Ø ��a’ð =ð  %Ÿ{™{ž}‘��eÜ�u“: ’>ØØ$ R a˜y‘��uÙ"Ù   k°5¸%ÀÕFà" r¨%¨° ]Ñ2�GÜ#×3Ñ3°C¸Ó?�GØ×4Ñ4´X¸c³]ÀGÕLð  -ñ ˜kÕ*r)   c                 ó~   — t        j                  | «      }t        j                  t        j                  |«      d«      S )z,Retrieve the AcroForm dictionary form a PDF.úRoot/AcroForm)r�   Úpdf_document_from_fz_documentÚpdf_dict_getpr   )r  rF  s     r(   Úget_acroformz*Document._do_widgets.<locals>.get_acroformd  s0   € ä×5Ñ5°cÓ:ˆCä×&Ñ&¤u×'8Ñ'8¸Ó'=¸ÓOÐOr)   ÚFieldsrÙ  r   r   r  r  r   r…  ÚP)re  Úold_kidsÚnew_kidsre  r¨  r„  zAA/Cr†  zcannot copy widget at xref=ry   r§  )rš  ©F)Úis_form_pdfr�   r¢  ró   rô   rv  r„  Úpdf_deep_copy_objr-  Úpdf_graft_mapped_objectr…  rî   rv  r   r:  r8  Úannot_xrefsr!  rw  Úkeysrx  r6   rÈ   rü   rg  r£  re   rí   rP  )1rZ  rÆ  Úgraftmapr@  rA  rB  rš  r—  rŸ  r¤  ÚtarpdfÚsrcpdfÚacroro  Útar_coÚ
acro_graftÚacro_tarÚtar_xrefÚacro_tar_indr,  Ú	src_rangeÚparentsrL  Úsrc_pagerý   Úwtyperí  Úw_objr–  r§  rÖ   Úparent_graftÚ
parent_tarÚkids_xrefs_newÚparent_xref_newÚ
parent_indÚtar_pageÚw_xrefsÚtar_page_pdfÚ
tar_annotsÚis_aacÚw_obj_graftrM  Ú	w_obj_tarÚw_obj_tar_indr%  rr  r”  r‘  s1                                                 @@@r(   Ú_do_widgetszDocument._do_widgetsª  sž  ú€ ð �ŠØò	Aòh	IôT	ô 	*ö	+ò8	Pô ×4Ñ4°SÓ9ˆÜ×4Ñ4°SÓ9ˆà�?Š?á Ó$ˆDà×+Ñ+¬H°XÓ,>Ó?ˆKØ×&Ñ&¤x°£~Ó6ˆFØ×&Ñ&Õ(Ø×0Ñ0´¸$³ÀÓC’ô ×*Ñ*©<¸Ó+<Ó=ˆDð ×Ñœh xÓ0Ô1Ø×#Ñ#¤H¨XÓ$6¸Ô:Ø×Ñœh t›nÔ-Ø×#Ñ#¤H¨T£N°AÔ6ô ×6Ñ6°xÀÓFˆJô ×+Ñ+¨F°JÓ?ˆHØ"×/Ñ/´¸Ó0BÓCˆKØ×*Ñ*¬8°D«>Ó:ˆFð  ×*Ñ*Ó,ˆHÜ ×1Ñ1°&¸(ÀAÓFˆLÜ×%Ñ%¤e×&7Ñ&7¸Ó&?ÄÈ&ÓAQÓRˆDØ×Ñœh zÓ2°LÔAà˜ÒÜ˜i¨°1©Ó5‰Iä˜i¨°1©°bÓ9ˆIàˆó ˆAØ˜1‘vˆHð '/×&:Ñ&:Ô&<õá&<‘N�D˜% ØœE×2Ñ2Ò2ò Ø&<ö�ô
 ×-Ñ-¨f°dÓ;�Ø×"Ñ"¤8¨C£=Ô1ñ )3°5Ó(9Ñ%�˜XÚà$%Ø$,Ø$&ñ,�G˜KÒ(ñð ð& —L‘L–NˆDÜ×*Ñ*¨6°4Ó8ˆFÜ ×8Ñ8¸À6ÓJˆLÜ×-Ñ-¨f°lÓCˆJÙ% j°"Ó5ˆNØ(×3Ñ3Ó5ˆOÜ×/Ñ/°¸ÈÓKˆJØ×&Ñ& zÔ2Ø(7ˆG�D‰M˜*Ñ%Ø(6ˆG�D‰M˜*Ò%ð #ô ”s˜9“~×&ˆAà˜8 a™<Ñ(ˆHð ˜9 Q™<Ñ(ˆHð
 '/×&:Ñ&:Ô&<õá&<‘N�D˜% ØœE×2Ñ2Ò2ò Ø&<ð ò ñ
 Øô !×6Ñ6°xÓ@ˆLô ×+Ñ+¨L×,<Ñ,<Ó,>ÄÈÓ@RÓSˆJÜ×%Ñ% jÔ1Ü"×5Ñ5Ø ×$Ñ$Ó&¬°Ó(:¸Aó�
ô  �Ü×-Ñ-¨f°dÓ;�ô ×*Ñ*¬5×+>Ñ+>¸uÀfÓ+MÓN�ô $×.Ñ.Ø×&Ñ&¤x°Ó'9Ó:ó�ð  !Ò#ð!Ü&+×&CÑ&CÀHÈeÓ&T˜ô !&× 4Ñ 4°V¸[Ó I�IØ(×3Ñ3Ó5�HÜ$)×$:Ñ$:¸6À8ÈQÓ$O�MÜ×(Ñ(¨°]ÔCÜ×(Ñ(¨°mÕDà$ [Ñ1�FØ  Ñ,×2Ñ2°4Ó8�CØ% jÑ1°#Ñ6�HÜ$)×$:Ñ$:¸6À8ÈQÓ$O�MÜ×(Ñ(¨°]ÔCó Ü×(Ñ(¨°Ö?ò=  ð5 'ñt 	˜& +¸ÖOùômùôHøô> %ò !Ü'Ð*FÀÀÀrÈ!ÈÐ(MÔNÝ ûð!ús$   É) W
Ï  W%
Ó$W,×,	X×5XØXc           	      ó†  — t        | «      }t        j                  t        j                  |«      t	        d«      t	        d«      t	        d«      t	        d«      «      }t        j
                  |d|z  dz   «      }t        j                  |t	        d«      t	        d«      «      }t        j                  |«      }t        |«      }|S )Nr  ÚNamesÚEmbeddedFilesr   r   r”  r•  )r½   r�   r  r   rô   rŠ  r	  r
  )r'   r%  rF  r›  ÚentryÚfilespecr®  Úconts           r(   Ú_embeddedFileGetzDocument._embeddedFileGetð  s¡   € Ü˜tÓ$ˆÜ×#Ñ#Ü×!Ñ! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×#Ñ# E¨1¨S©5°©7Ó3ˆÜ×&Ñ& u¬h°t«n¼hÀs»mÓLˆÜ×#Ñ# HÓ-ˆÜ Ó$ˆØˆr)   rA   c                 ó¶   — | j                  «       }dt        |«      z  }||v r|j                  |«      }|S |t        t	        |«      «      v r|}|S t        |«      ‚)Nz '%s' not in EmbeddedFiles array.)Úembfile_namesrÙ   rP  r8  r6   r²   )r'   rA   Ú	filenamesÚmsgr%  s        r(   Ú_embeddedFileIndexzDocument._embeddedFileIndexÿ  sf   € Ø×&Ñ&Ó(ˆ	Ø0´3°t³9Ñ<ˆØ�9ÑØ—/‘/ $Ó'ˆCð
 ˆ
ð	 ”Uœ3˜y›>Ó*Ñ*ØˆCð ˆ
ô ˜S“/Ð!r)   c           	      ó@  — t        | «      }t        |«      }|j                  st        t        «      ‚t        j                  t        j                  |«      t        d«      t        d«      t        d«      t        d«      «      }t        j                  |«      s|t        j                  t        j                  |«      t        d«      «      }	t        j                  |d«      }t        j                  |	|t        d«      t        d«      t        d«      «       t        |||||d«      }
t        j                  t        j                  |
t        d«      t        d«      «      «      }t        j                  |t        j                   |«      «       t        j                  ||
«       |S )Nr  rÌ  rÍ  é   r   r”  r•  )r½   r  r»   rœ  r  r�   r  r   rô   rv  ró   r7  r  ÚJM_embed_filerî   rx  ro  )r'   r   r  rd   r  r§  rF  rm  r›  r,  Ú	fileentryrý   s               r(   Ú_embfile_addzDocument._embfile_add
  sH  € Ü˜tÓ$ˆÜ! 'Ó*ˆØ�ŠÜœ^Ó,Ð,ä×#Ñ#Ü×!Ñ! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×!Ñ! %Ô(Ü×%Ñ%¤e×&7Ñ&7¸Ó&<¼hÀvÓ>NÓOˆDÜ×'Ñ'¨¨QÓ/ˆEÜ×ÑØØÜ˜WÓ%Ü˜_Ó-Ü˜WÓ%ôô " # t¨X°yÀ$ÈÓJˆ	Ü×ÑÜ×#Ñ# I¬x¸«~¼xÈ»}ÓMóˆô 	×Ñ˜U¤E×$=Ñ$=¸dÓ$CÔDÜ×Ñ˜U IÔ.Øˆr)   c           	      ó  — t        | «      }t        j                  t        j                  |«      t	        d«      t	        d«      t	        d«      t	        d«      «      }t        j
                  ||dz   «       t        j
                  ||«       y )Nr  rÌ  rÍ  r   )r½   r�   r  r   rô   r‹  )r'   r%  rF  r›  s       r(   Ú_embfile_delzDocument._embfile_del)  sp   € Ü˜tÓ$ˆÜ×#Ñ#Ü×!Ñ! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô 	×Ñ˜u c¨A¡gÔ.Ü×Ñ˜u cÕ*r)   c           	      ó`  — t        | «      }d}d}t        j                  |«      }t        j                  |t	        d«      t	        d«      t	        d«      t	        d«      «      }t        j
                  |d|z  dz   «      }t        j                  |t	        d«      «      }	|	j                  rt        j                  |	«      }||d<   t        j                  t        j                  |t	        d	«      «      «      }
t        |
«      |t        <   t        j                  t        j                  |t	        d
«      «      «      }
t        |
«      |t        <   t        j                  t        j                  |t	        d«      «      «      }
t        |
«      |t        <   d}d}t        j                  |t	        d«      t	        d	«      «      }t        j                  |«      }t        j                  |t	        d«      «      }|j                  rt        j                  |«      }t        j                  |t	        d«      «      }|j                  rt        j                  |«      }nJt        j                  |t	        d«      t	        d«      «      }|j                  rt        j                  |«      }||t         <   ||t"        <   |S )Nr   r  rÌ  rÍ  r   r   ÚCIÚ
collectionr•  r—  r˜  r…  r”  r™  rþ  rš  r›  )r½   r�   r   r  rô   rŠ  ró   r»   rî   rð   r   r¡  Údictkey_ufilenamerñ   r¢  rõ   r¤  r£  )r'   r%  ÚinfodictrF  rý   Úci_xrefÚtrailerr›  r�  Úcir   Úlen_rþ  rÚ  s                 r(   Ú_embfile_infozDocument._embfile_info5  s  € Ü˜tÓ$ˆØˆØˆä×#Ñ# CÓ(ˆä×#Ñ#ØÜ˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×Ñ  q¨¡u¨Q¡wÓ/ˆÜ×Ñ ¤8¨D£>Ó2ˆØ�=Š=Ü×&Ñ& rÓ*ˆGØ!(ˆ�ÑÜ×'Ñ'¬×(:Ñ(:¸1¼hÀs»mÓ(LÓMˆÜ%8¸Ó%>ˆÔ!Ñ"ä×'Ñ'¬×(:Ñ(:¸1¼hÀt»nÓ(MÓNˆÜ&9¸$Ó&?ˆÔ"Ñ#ä×'Ñ'¬×(:Ñ(:¸1¼hÀvÓ>NÓ(OÓPˆÜ"3°DÓ"9ˆ”ÑàˆØˆÜ×'Ñ'¨¬8°D«>¼8ÀC»=ÓIˆ	Ü×Ñ 	Ó*ˆÜ×Ñ˜y¬(°8Ó*<Ó=ˆØ�<Š<Ü×#Ñ# AÓ&ˆDä×Ñ˜y¬(°4«.Ó9ˆØ�<Š<Ü×!Ñ! !Ó$‰Bä×#Ñ# I¬x¸Ó/AÄ8ÈFÓCSÓTˆAØ�|Š|Ü×%Ñ% aÓ(�Ø!#ˆ”ÑØ#'ˆ”Ñ Øˆr)   c           	      óº  — t        | «      }t        j                  t        j                  |«      t	        d«      t	        d«      t	        d«      t	        d«      «      }t        j
                  |«      rkt        j                  |«      }t        d|d«      D ]E  }t        t        j                  t        j                  ||«      «      «      }|j                  |«       ŒG yy)z Get list of embedded file names.r  rÌ  rÍ  r   r   N)r½   r�   r  r   rô   rv  r‰  r8  r   rð   rŠ  ri   )r'   rg  rF  r›  rC   rL  rÿ   s          r(   Ú_embfile_nameszDocument._embfile_namesd  s·   € ä˜tÓ$ˆÜ×#Ñ#Ü×!Ñ! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×Ñ˜eÔ$Ü×#Ñ# EÓ*ˆAÜ˜1˜a –^�Ü)Ü×0Ñ0Ü!×/Ñ/°°qÓ9óó�ð
 —‘ Õ$ñ $ð %r)   c           	      ó  — t        | «      }d}t        j                  t        j                  |«      t	        d«      t	        d«      t	        d«      t	        d«      «      }t        j
                  |d|z  dz   «      }	t        j                  |	t	        d«      t	        d«      «      }
|
j                  st        d	t        «       t        |«      }|r'|j                  r|j                  st        t        «      ‚|j                  r“|r‘|j                  r…t        ||
|d«       t        j                  |«      \  }}t        j                  |«      }t        j                  |
t	        d
«      |«       t        j                   |
|t	        d«      t	        d«      «       t        j"                  |
«      }|r t        j$                  |	t	        d«      |«       |r t        j$                  |	t	        d«      |«       |r t        j$                  |	t	        d«      |«       |S )Nr   r  rÌ  rÍ  r   r   r”  r•  rý  rþ  rš  r›  r—  r˜  )r½   r�   r  r   rô   rŠ  r»   rž  rŸ  r  rœ  r  r  r   r  r:  r  rî   rm  )r'   r%  r  rd   r  r§  rF  rý   r›  rÎ  rÏ  r  r6   rí  r  s                  r(   Ú_embfile_updzDocument._embfile_updx  sš  € Ü˜tÓ$ˆØˆÜ×#Ñ#Ü×!Ñ! #Ó&Ü˜Ó Ü˜Ó!Ü˜Ó)Ü˜Ó!óˆô ×#Ñ# E¨1¨S©5°©7Ó3ˆä×&Ñ& u¬h°t«n¼hÀs»mÓLˆØ×"Ò"ÜÐ-Ô/CÔDÜ  Ó)ˆÙ�w×)Ò)°#·.².Üœ^Ó,Ð,Ø�>Š>™g¨'×*<Ò*<Ü˜S (¨C°Ô3ä×,Ñ,¨SÓ1‰FˆC�Ü×!Ñ! #Ó&ˆAÜ×Ñ˜x¬°$«¸Ô;Ü×Ñ ¨!¬X°hÓ-?ÄÈ&ÓAQÔRÜ×Ñ Ó)ˆÙÜ×*Ñ*¨5´(¸3³-ÀÔJáÜ×*Ñ*¨5´(¸4³.À)ÔLáÜ×*Ñ*¨5´(¸6Ó2BÀDÔIØˆr)   c           	      óš  — | j                   rt        d«      ‚t        r t        j                  | j
                  |«      S t        | «      }d}d}d}d}t        j                  t        j                  |«      t        d«      «      }|j                  syt        j                  |t        d«      «      }|j                  syt        j                  |t        d	«      «      }	|	j                  syg }
t        |	|
«      }
t        |
«      }t        |«      }|sy||k7  rt        d
«      ‚t        |«      D �]ž  }t!        |
|   «      }||   }|d   }t#        |t$        «      st        d«      ‚|
|   |t&        <   t        j(                  ||«      }t        j*                  t        j                  |t        d«      «      «      }|dk(  rd||<   n|dk(  rd||<   n|dk(  r
d||<   d||<   t        j*                  t        j                  |t        d«      «      «      }|dk  rd||<   n
|dkD  rd||<   t        j                  |t        d«      «      }t        j,                  |«      r›t        j.                  |«      dk(  rƒt        j0                  t        j2                  |d«      «      t        j0                  t        j2                  |d«      «      t        j0                  t        j2                  |d«      «      f}||t4        <   d}t        j                  |t        d«      «      }|j                  rt        j,                  |«      s)t        j6                  |t        d«      t        d«      «      }t        j,                  |«      rAt        j.                  |«      dk(  r)t        j0                  t        j2                  |d«      «      }t9        |«      ||<   ||d<   |||<   �Œ¡ y)z4Add color info to all items of an extended TOC list.r­   rI  r=  rQ  Úcollapser  Nr+  r,  z$internal error finding outline xrefsr   zneed non-simple TOC formatr•  r   Tr   ÚCountr   FrÓ  ÚDestÚAÚDr   r8  )r±   r²   r  r   ÚDocument_extend_toc_itemsr³   r½   r�   ró   r   rô   r»   r-  r6   ræ  r8  r3   r<   r4   rï   rw  rõ   rv  r‰  rÜ  rŠ  Údictkey_colorr  r\  )r'   r@   rF  rI  r=  rQ  rí  r,  r1  r2  r0  rC   rm  rL  rý   rA   ÚitemdictÚbmr¬  ÚcountrK  rô  Úzrü   s                           r(   Ú_extend_toc_itemszDocument._extend_toc_itemsœ  sC  € à�>Š>ÜÐ.Ó/Ð/ÝÜ×2Ñ2°D·I±I¸uÓEÐEÜ˜tÓ$ˆØˆØˆØˆØˆä×!Ñ!¤%×"3Ñ"3°CÓ"8¼(À6Ó:JÓKˆØ�ŠØÜ×#Ñ# D¬(°:Ó*>Ó?ˆØ× Ò ØÜ×"Ñ" 6¬8°GÓ+<Ó=ˆØ×ÒØØˆÜ  ¨Ó.ˆÜ�‹JˆÜ�‹JˆÙØØ�Š6ÜÐDÓEÐEô �q—ˆAÜ�u˜Q‘x“=ˆDØ˜‘8ˆDØ˜A‘wˆHÜ˜h¬Ô-Ü Ð">Ó?Ð?Ø%*¨1¡XˆH”\Ñ"Ü×&Ñ& s¨DÓ1ˆBÜ×$Ñ$¤e×&8Ñ&8¸¼XÀc»]Ó&KÓLˆEØ˜ŠzØ#'�˜Ò Ø˜!’Ø!%�˜’Ø˜!’Ø#'�˜Ñ Ø!%�˜‘Ü×$Ñ$¤e×&8Ñ&8¸¼XÀgÓ=NÓ&OÓPˆEØ�qŠyØ%)�˜Ò"Ø˜’Ø%*�˜Ñ"Ü×$Ñ$ R¬°#«Ó7ˆCÜ×!Ñ! #Ô&¬5×+>Ñ+>¸sÓ+CÀqÒ+Hä×)Ñ)¬%×*=Ñ*=¸cÀ1Ó*EÓFÜ×)Ñ)¬%×*=Ñ*=¸cÀ1Ó*EÓFÜ×)Ñ)¬%×*=Ñ*=¸cÀ1Ó*EÓFð�ð
 +0�œÑ'ØˆAÜ×$Ñ$ R¬°&Ó)9Ó:ˆCØ—>’>¬×);Ñ);¸CÔ)@Ü×)Ñ)¨"¬h°s«m¼XÀc»]ÓK�Ü×!Ñ! #Ô&¬5×+>Ñ+>¸sÓ+CÀqÒ+HÜ×%Ñ%¤e×&9Ñ&9¸#¸qÓ&AÓB�Ü" 1›XˆH�T‰NØˆD�‰GØˆE�!‹HñK r)   rÅ   c                 óR   — t        |«      }|| j                  v r| j                  |= yy)z&Remove a page from document page dict.N)r&  rõ  )r'   rÅ   Úpids      r(   Ú_forget_pagezDocument._forget_pageâ  s(   € ä�‹hˆØ�$—/‘/Ñ!à—‘ Ñ$ð "r)   rý   ÚbfnameÚextÚorderingÚlimitc                 óf  — t        | «      }|}|dk  rd}|dk\  r3t        j                  |«      \  }	}
}t        j                  d |	|
|d«      }nrt        j                  |«      \  }	}
|	rt        j                  ||	|
dd«      }n>t        ||«      }|j                  st        d|z  «      ‚t        j                  d ||d«      }g }t        |«      D ]b  }t        j                  ||«      }t        j                  ||d«      }|dk\  r|}|dkD  r|j                  ||f«       ŒP|j                  |df«       Œd |S )Né   r   z font at xref %d is not supportedr‹  )r½   r�   Úfz_lookup_cjk_fontÚfz_new_font_from_memoryÚfz_lookup_base14_fontÚJM_get_fontbufferr»   re   Úfz_new_font_from_bufferr8  Úfz_encode_characterÚfz_advance_glyphri   )r'   rý   rü  rý  rþ  rÿ  r%  rF  Úmylimitrm  r¦  rP  rH  r®  ÚwlistrL  ÚglyphÚadvs                     r(   Ú_get_char_widthszDocument._get_char_widthsé  s/  € Ü˜tÓ$ˆØˆØ�SŠ=ØˆGØ�qŠ=Ü %× 8Ñ 8¸Ó BÑˆD�$˜Ü×0Ñ0°°t¸TÀ5È!ÓL‰Dä×4Ñ4°VÓ<‰JˆD�$ÙÜ×4Ñ4°V¸TÀ4ÈÈAÓN‘ä'¨¨TÓ2�Ø—~’~Ü#Ð$FÈÑ$MÓNÐNä×4Ñ4°T¸3ÀÀQÓG�ØˆÜ�w–ˆAÜ×-Ñ-¨d°AÓ6ˆEÜ×(Ñ(¨¨u°aÓ8ˆCØ˜1Š}Ø�Ø�qŠyØ—‘˜u c˜lÕ+à—‘˜u c˜lÕ+ð  ð ˆr)   c           	      ó¨  — t        | «      }g }t        j                  d«      }t        j                  t        j                  |«      t        d«      |«      }|j                  s|S t        j                  t        j                  |t        d«      «      «      }|j                  rt        ||«       |S t        j                  t        j                  |t        d«      t        d«      «      «      }|j                  rt        ||«       |S t        j                  t        j                  |t        d«      «      «      }|j                  rt        j                  |«      s|S t        j                  |«      }t        |«      D ]T  }t        j                  t        j                  t        j                  ||«      t        d«      «      «      }t        ||«       ŒV |S )NÚ
PageLabelsr  ÚNumsrn  )r½   r�   r!  r  r   rô   r»   Úpdf_resolve_indirectró   ÚJM_get_page_labelsrv  r‰  r8  rŠ  )	r'   rF  r’   Ú
pagelabelsrü   Únumsrp  rC   rL  s	            r(   Ú_get_page_labelszDocument._get_page_labels  sl  € Ü˜tÓ$ˆØˆÜ×'Ñ'¨Ó5ˆ
Ü×!Ñ!¤5×#4Ñ#4°SÓ#9¼8ÀFÓ;KÈZÓXˆØ�~Š~ØˆIä×)Ñ)¬5×+=Ñ+=¸sÄHÈVÓDTÓ+UÓVˆØ�?Š?Ü˜r 4Ô(ØˆIä×)Ñ)¬5×+>Ñ+>¸sÄHÈVÓDTÔV^Ð_eÓVfÓ+gÓhˆØ�?Š?Ü˜r 4Ô(ØˆIä×)Ñ)¬5×+=Ñ+=¸sÄHÈVÓDTÓ+UÓVˆØ�Š¤e×&8Ñ&8¸Ô&>ØˆIÜ×Ñ Ó%ˆÜ�q–ˆAÜ×-Ñ-Ü×&Ñ&Ü×+Ñ+¨D°!Ó4Ü  Ó(óóˆDô ˜r 4Õ(ð ð ˆ	r)   c                 óˆ   — 	 t        j                  | j                  |«      S # t        $ r t        dkD  r
t        «        Y yw xY w)zGet metadata.r   rZ   )r�   Úfz_lookup_metadata2r³   re   r÷   rt   r  s     r(   Ú_getMetadatazDocument._getMetadata'  s=   € ð	Ü×,Ñ,¨d¯i©i¸Ó=Ð=øÜò 	Ü# aÒ'¬NÔ,<Ùð	ús   ‚" ¢AÁ Ac                 ój  — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  t	        j                  |«      t        d«      «      }t	        j
                  |t        d«      «      }|j                  s”t	        j                  |d«      }t	        j                  |t        d«      t        d«      «       t	        j                  ||«      }t	        j                  |t        d«      |«       t	        j
                  |t        d«      «      }t	        j                  |«      S )z/Get xref of Outline Root, create it if missing.r  r  r+  r8  ÚType)r±   rî  r²   r½   r�   ró   r   rô   r»   r?  r:  r…  rî   )r'   rF  r,  r1  Úind_objs        r(   Ú_getOLRootNumberzDocument._getOLRootNumber/  sè   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆä×!Ñ!¤5×#4Ñ#4°cÓ#:¼HÀVÓ<LÓMˆä×#Ñ# T¬8°JÓ+?Ó@ˆØ× Ò Ü×'Ñ'¨¨aÓ0ˆFÜ×Ñ ¬°Ó(8¼(À:Ó:NÔOÜ×*Ñ*¨C°Ó8ˆGÜ×Ñ ¤h¨zÓ&:¸GÔDÜ×'Ñ'¨¬x¸
Ó/CÓDˆFÜ×Ñ Ó(Ð(r)   c                 ó¦  — t        | d¬«      }|j                  syg }t        j                  t        j                  |«      t        d«      «      }|j                  rvt        j                  |«      }t        |«      D ]S  }t        j                  ||«      }t        j                  |«      }t        j                  |«      }|j                  |«       ŒU |S )zGet PDF file id.r   r  NÚID)r½   r»   r�   ró   r   rô   r‰  r8  rŠ  rð   ÚbinasciiÚhexlifyri   )	r'   rF  ÚidlistÚidentityrC   rL  r�  r   Úhex_s	            r(   Ú_getPDFfileidzDocument._getPDFfileid@  sª   € ä˜t¨aÔ0ˆØ�~Š~ØØˆÜ×%Ñ%¤e×&7Ñ&7¸Ó&<¼hÀt»nÓMˆØ×ÒÜ×#Ñ# HÓ-ˆAÜ˜1–X�Ü×'Ñ'¨°!Ó4�Ü×/Ñ/°Ó2�Ü×'Ñ'¨Ó-�Ø—‘˜dÕ#ð	 ð
 ˆr)   c                 ó  — | j                   s| j                  rt        d«      ‚| j                  }t	        |t
        j                  «      rt        j                  |«      nt        j                  |«      }|}|dk  r||z  }|dk  rŒ||k\  rt        t        «      ‚t        | «      }t        j                  ||«      }t        j                  |t
        j                  «      }g }	g }
|j                  rt        |||	|d|
«       |	S )z,List fonts, images, XObjects used on a page.r  r   )r±   rî  r²   r³   r<   r�   rµ   Úpdf_count_pagesÚfz_count_pagesÚMSG_BAD_PAGENOr½   Úpdf_lookup_page_objÚpdf_dict_get_inheritableÚPDF_ENUM_NAME_Resourcesr»   ÚJM_scan_resources)r'   rÇ  Úwhatr  Ú	pageCountrC   rF  ÚpagerefÚrsrcÚlisteÚtracers              r(   Ú_getPageInfozDocument._getPageInfoP  sà   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø�i‰iˆÜ2<¸SÄ%×BSÑBSÔ2T”E×)Ñ)¨#Ô.ÔZ_×ZnÑZnÐorÓZsˆ	ØˆØ�!ŠeØ�‰NˆAð �!‹eà�	Š>ÜœnÓ-Ð-Ü˜tÓ$ˆÜ×+Ñ+¨C°Ó3ˆÜ×-Ñ-¨g´u×7TÑ7TÓUˆØˆØˆØ�?Š?Ü˜c 4¨°°a¸Ô@Øˆr)   c                 ój   — t        | «      }|s|st        t        «      ‚t        |d||dddddd«
      }|S )z;
        Utility: insert font from file or binary.
        Nr   r…  )r½   r²   ÚMSG_FILE_OR_BUFFERÚJM_insert_font)r'   ÚfontfileÚ
fontbufferrF  r¥   s        r(   Ú_insert_fontzDocument._insert_fontd  s@   € ô ˜tÓ$ˆÙ¡
ÜÔ0Ó1Ð1Ü˜s D¨(°JÀÀ1ÀaÈÈAÈrÓRˆØˆr)   c                 óØ   — | j                   }t        |t        j                  «      sJ ‚	 t        j                  |«      }t        |«      S # t
        $ r t        dkD  r
t        «        Y yw xY w)zLoad first outline.r   N)	r³   r<   r�   r´   Úfz_load_outlinere   r÷   rt   ÚOutline)r'   r  rÍ  s      r(   Ú_loadOutlinezDocument._loadOutlinen  sc   € à�i‰iˆÜ˜3¤× 0Ñ 0Ô1Ð1Ð1ð	Ü×&Ñ&¨Ó,ˆBô ˜‹|Ðøô ò 	Ü# aÒ'¬NÔ,<Ùð	ús   ªA
 Á
A)Á(A)c                 ó>   — | j                   rt        d«      ‚J d«       ‚)z)Make an array page number -> page object.r­   z_make_page_map() is no-op)r±   r²   r-   s    r(   Ú_make_page_mapzDocument._make_page_mapy  s    € à�>Š>ÜÐ.Ó/Ð/Ø.Ð-Ó.ˆqr)   c                 óº  — t        | «      }d}t        ||«      \  }}}	t        j                  |t	        d«      «      }
t        ||«      \  }}}t        j                  |t	        d«      «      }|r|}n|dz   }t        j
                  |
|«      }|s%|dk7  r t        j                  |t	        d«      |«       t        j                  |||«       |dk7  �r|}|j                  rnt        j                  |t	        d«      «      }t        j                  |t	        d«      |dz   «       t        j                  |t	        d«      «      }|j                  rŒn|�sHt        j                  |
|	«       |}|j                  �r#t        j                  |t	        d«      «      }t        j                  |t	        d«      |dz
  «       t        j                  |t	        d«      «      }|j                  rŒnn´|r}|}|j                  r¤t        j                  |t	        d«      «      }t        j                  |t	        d«      |dz   «       t        j                  |t	        d«      «      }|j                  rŒnn5|	|k  rt        j                  |
|	«       nt        j                  |
|	dz   «       |j                  j                  rt        j                  |j                  «       | j                  «        y)z"Move or copy a PDF page reference.r   rn  r   r†  rî  N)r½   Úpdf_lookup_page_locr�   ró   rô   rk  r:  Úpdf_array_insertr»   Úpdf_dict_get_intr5  r‹  r8  r9  Ú_reset_page_refs)r'   rÇ  ÚnbÚbeforeÚcopyrF  ÚsameÚpage1Úparent1Úi1rz  Úpage2Úparent2Úi2r|  ÚposrÖ   rö  s                     r(   Ú_move_copy_pagezDocument._move_copy_page  s_  € ä˜tÓ$ˆØˆô 1°#°sÓ;Ñˆˆw˜ä×"Ñ" G¬X°fÓ-=Ó>ˆä0°#°rÓ:Ñˆˆw˜Ü×"Ñ" G¬X°fÓ-=Ó>ˆÙØ‰Cà�q‘&ˆCô ×Ñ ¨Ó.ˆñ ˜ š	Ü×Ñ ¤x°Ó'9¸7ÔCÜ×Ñ  u¨cÔ2à�1‹9ØˆFØ×#Ò#Ü×.Ñ.°¼ÀÓ8IÓJ�Ü×&Ñ&¨´¸Ó0AÀ5È1Á9ÔMÜ×+Ñ+¨V´X¸hÓ5GÓH�ð ×#Ó#ò Ü×&Ñ&¨¨rÔ2Ø �Ø×'Ó'Ü!×2Ñ2°F¼HÀWÓ<MÓN�EÜ×*Ñ*¨F´H¸WÓ4EÀuÈqÁyÔQÜ"×/Ñ/°¼À(Ó9KÓL�Fð ×'Ô'ñ
 Ø �Ø×'Ò'Ü!×2Ñ2°F¼HÀWÓ<MÓN�EÜ×*Ñ*¨F´H¸WÓ4EÀuÈqÁyÔQÜ"×/Ñ/°¼À(Ó9KÓL�Fð ×'Ô'ð
 ˜’8Ü×*Ñ*¨E°2Õ6ä×*Ñ*¨E°2¸±6Ô:Ø�>‰>×&Ò&Ü×'Ñ'¨¯©Ô8à×ÑÕr)   c                 ó,  — | j                   s| j                  rt        d«      ‚t        r#t	        j
                  | j                  |||«       n´t        | «      }t        j                  t        j                  j                  «      }||_        ||_        t        j                  «       }|dk  rt        t        «      ‚t        j                  |d«      }t        j                   ||d||«      }t        j"                  |||«       | j%                  «        | |   S )zMake a new PDF page.r  r…  r   r   )r±   rî  r²   r  r   Ú_newPager³   r½   r�   rU  Ú
Fixed_UNITr÷  rù  ÚFzBufferr(  Úpdf_add_new_dictÚpdf_add_pageÚpdf_insert_pagerD  )	r'   rÇ  rJ  rÅ  rF  ÚmediaboxÚcontentsrN  Úpage_objs	            r(   rR  zDocument._newPage·  sÚ   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<ÝÜ�N‰N˜DŸI™I s¨E°6Õ:ä" 4Ó(ˆCÜ—|‘|¤E§L¡L×$;Ñ$;Ó<ˆHØˆHŒKØ ˆHŒKÜ—~‘~Ó'ˆHØ�RŠxÜ ¤.Ó1Ð1ô ×.Ñ.¨s°AÓ6ˆIÜ×)Ñ)¨3°¸!¸YÈÓQˆHÜ×!Ñ! 3¨¨XÔ6ð 	×ÑÔØ�C‰yÐr)   c                 ó2   — t        | «      }t        ||«       y r+   )r½   Ú_remove_dest_range)r'   ÚnumbersrF  s      r(   Ú_remove_links_tozDocument._remove_links_toÏ  s   € Ü˜tÓ$ˆÜ˜3 Õ(r)   c                 ó|  — t        | «      }t        j                  ||d«      }t        j                  |t	        d«      «       t        j                  |t	        d«      «       t        j
                  |d«      }t        d«      D ]  }t        j                  |d«       Œ t        j                  |t	        d«      |«       y )Nr   rï  rð  r   çš™™™™™é?rÓ  )	r½   r�   rv  r-  rô   r7  r8  r9  r:  )r'   rý   rF  rA   rô  rL  s         r(   r(  zDocument._remove_toc_itemÓ  s�   € ä˜tÓ$ˆÜ×%Ñ% c¨4°Ó3ˆÜ×Ñ˜D¤(¨6Ó"2Ô3Ü×Ñ˜D¤(¨3£-Ô0Ü×#Ñ# S¨!Ó,ˆÜ�q–ˆAÜ×%Ñ% u¨cÕ2ð ä×Ñ˜D¤(¨3£-°Õ7r)   c                 óä   — t        | dd«      ry| j                  j                  «       D �cg c]  }|‘Œ }}|D ]  }|sŒ|j                  «        d}Œ | j                  j	                  «        yc c}w )z,Invalidate all pages in document dictionary.r±   TN)rØ   rõ  rû   rß   Úclear)r'   r�  ÚpagesrÅ   s       r(   rD  zDocument._reset_page_refsÞ  sf   € ä�4˜ dÔ+ØØ ŸO™O×2Ñ2Ô4Ó5Ñ4�q’Ð4ˆÐ5ÛˆDÚØ—‘”Ø‘ð ð 	�‰×ÑÕùò 6s   «	A-c                 óÒ  — t        | «      }t        j                  d«      }t        j                  t        j                  |«      t        d«      «      }t        j                  ||«       t        j                  |t        j                  |d«      |t        d«      «       | j                  «       }| j                  |d¬«      }|j                  dd|z  «      }| j                  ||«       y )	Nr  r  r   r  T©Ú
compressedz/Nums[]z	/Nums[%s])r½   r�   r!  ró   r   rô   r-  r  r7  Úpdf_catalogÚxref_objectrÊ  Úupdate_object)r'   ÚlabelsrF  r  r,  rý   r   s          r(   Ú_set_page_labelszDocument._set_page_labelsé  s½   € Ü˜tÓ$ˆÜ×'Ñ'¨Ó5ˆ
Ü×!Ñ!¤%×"3Ñ"3°CÓ"8¼(À6Ó:JÓKˆÜ×Ñ˜4 Ô,Ü×Ñ˜D¤%×"5Ñ"5°c¸1Ó"=¸zÌ8ÐTZÓK[Ô\à×ÑÓ!ˆØ×Ñ °ÐÓ6ˆØ�|‰|˜I {°VÑ';Ó<ˆØ×Ñ˜4 Õ&r)   c                 óz  — t        | «      }t        j                  ||d«      }|r t        j                  |t	        d«      |«       |rKt        j
                  |t	        d«      «       t        ||«      }	t        j                  |t	        d«      |	«       t        j                  |t	        d«      |«       |rbt        j                  |d«      }
t        d«      D ]  }||   }t        j                  |
|«       Œ t        j                  |t	        d«      |
«       n!|�t        j
                  |t	        d«      «       |�ƒt        j                  |t	        d	«      «      j                  rYt        j                  |t	        d	«      «      }|dk  r|d
u s	|dkD  r+|du r&|dz  }t        j                  |t	        d	«      |«       yyyyy)zB
        "update" bookmark by letting it point to nowhere
        r   ÚTitlerï  rð  r•  r   rÓ  Nrî  FTr…  )r½   r�   rv  rm  rô   r-  r"  r:  r5  r7  r8  r9  ró   r»   rC  )r'   rý   Úactionrf  r¬  rí  rô  rF  rA   rü   r©  rL  r¸  s                r(   Ú_update_toc_itemzDocument._update_toc_itemõ  s�  € ô ˜tÓ$ˆÜ×%Ñ% s¨D°!Ó4ˆÙÜ×*Ñ*¨D´(¸7Ó2CÀUÔKÙÜ×Ñ ¤h¨vÓ&6Ô7Ü% s¨FÓ3ˆCÜ×Ñ ¤h¨s£m°SÔ9Ü×Ñ ¤h¨s£m°UÔ;ÙÜ×#Ñ# S¨!Ó,ˆAÜ˜1–X�Ø˜!‘H�Ü×)Ñ)¨1¨aÕ0ð ô ×Ñ ¤h¨s£m°QÕ7ØÐÜ×Ñ ¤h¨s£mÔ4ØÐÜ×!Ñ! 4¬°'Ó):Ó;×FÒFÜ×*Ñ*¨D´(¸7Ó2CÓD�Ø˜’E˜h¨%Ñ/°Q¸²U¸xÈ4Ñ?OØ˜R™�AÜ×*Ñ*¨D´(¸7Ó2CÀQÕGð @P°Uð Gð  r)   c           	      ó   — t        | d¬«      }|j                  syt        j                  t        j                  |«      t        d«      t        d«      t        d«      t        d«      «      }t        «       }|j                  r}t        j                  |«      rht        j                  |«      }t        |«      D ]E  }t        j                  ||«      }|j                  t        t        j                  |«      «      «       ŒG |S )z&Get list of field font resource names.r   r  Nr  r  r  r  )r½   r»   r�   r  r   rô   r¡   rg  rh  r8  rj  ri   rñ   rf  )r'   rF  r#  r1  rC   rL  r¸  s          r(   Ú	FormFontszDocument.FormFonts  sÊ   € ô ˜t¨aÔ0ˆØ�~Š~ØÜ×#Ñ#Ü×!Ñ! #Ó&Ü˜Ó Ü˜Ó$Ü˜“Ü˜Ó óˆô “ˆØ×Ò¤× 1Ñ 1°%Ô 8Ü×"Ñ" 5Ó)ˆAÜ˜1–X�Ü×*Ñ*¨5°!Ó4�Ø—‘Ô.¬u×/@Ñ/@ÀÓ/CÓDÕEð ð ˆr)   c                 ót   — t        | «      }t        ||||«       t        j                  |j                  «       y)zAdd a new OC layer.N)r½   ÚJM_add_layer_configr�   Úll_pdf_read_ocgr»   )r'   r   ÚcreatorÚonrF  s        r(   Ú	add_layerzDocument.add_layer&  s,   € ä˜tÓ$ˆÜ˜S $¨°Ô4Ü×Ñ˜sŸ~™~Õ.r)   r   c                 óÊ  — d}t        | «      }t        j                  |d«      }t        j                  |t	        d«      t	        d«      «       t        j
                  |t	        d«      |«       t        j                  |t	        d«      d«      }	|s t        j                  |	t	        d«      «       nSt        |t        «      sJ d	t        |«      ›d
t        ›�«       ‚t        j                  |	t        j                  |«      «       t        j                  |t	        d«      d«      }
t        j                  d«      }t        j                  |
|d«      }t        j
                  |t	        d«      d«       |r!t        j                  |t	        d«      |«       n t        j                  |t	        d«      d«       t        j                  ||«      }t        |«      }t        j                   |t	        d«      «      }t        j                  ||«       |dkD  rtt        j                   |t	        d«      «      }t        j"                  |«      st%        t&        «      ‚t        j(                  ||«      }|j*                  s.t%        t&        «      ‚t        j                   |t	        d«      «      }t        j                   |t	        d«      «      }|j*                  s t        j                  |t	        d«      d«      }t        j                  ||«       |rLt        j                   |t	        d«      «      }|j*                  slt        j                  |t	        d«      d«      }nKt        j                   |t	        d«      «      }|j*                  s t        j                  |t	        d«      d«      }t        j                  ||«       t        j,                  |j*                  «       t        j.                  |«      }|S )zAdd new optional content group.r   r   r  ÚOCGrü  ÚIntentr   ÚViewz)fixme: intent is not a str. type(intent)=ú type=ÚUsageÚCreatorInfoÚCreatorÚPyMuPDFrs  ÚArtworkÚOCGsr…  ÚConfigsrñ  ÚOrderr   ÚONÚOFF)r½   r�   rU  r:  rô   rm  r„  rx  r<   rÙ   r·   r!  r>  rA  r…  ÚJM_ensure_ocpropertiesró   rv  r²   ÚMSG_BAD_OC_CONFIGrŠ  r»   rt  rî   )r'   r   Úconfigrv  ÚintentÚusagerý   rF  ÚocgÚintentsÚuse_forÚci_nameÚcre_infoÚindocgÚocprü   Úcfgs                    r(   Úadd_ocgzDocument.add_ocg,  sõ  € àˆÜ˜tÓ$ˆô ×$Ñ$ S¨!Ó,ˆÜ×Ñ˜3¤¨Ó 0´(¸5³/ÔBÜ×&Ñ& s¬H°VÓ,<¸dÔCÜ×*Ñ*¨3´¸Ó0BÀAÓFˆÙÜ× Ñ  ¬(°6Ó*:Õ;Ü˜F¤CÔ(ØLÐB´T¸&³\°OÀ7ÄTÀGÐLÓL�1ô × Ñ  ¬%×*<Ñ*<¸VÓ*DÔEÜ×)Ñ)¨#¬x¸Ó/@À!ÓDˆÜ×$Ñ$ ]Ó3ˆÜ×*Ñ*¨7°G¸QÓ?ˆÜ×&Ñ& x´¸)Ó1DÀiÔPÙÜ×#Ñ# H¬h°yÓ.AÀ5ÕIä×#Ñ# H¬h°yÓ.AÀ9ÔMÜ×%Ñ% c¨3Ó/ˆô % SÓ)ˆÜ× Ñ  ¤h¨vÓ&6Ó7ˆÜ×Ñ˜S &Ô)à�BŠ;Ü×$Ñ$ S¬(°9Ó*=Ó>ˆCÜ×%Ñ% cÔ*Ü Ô"3Ó4Ð4Ü×%Ñ% c¨6Ó2ˆCØ—>’>Ü Ô"3Ó4Ð4ä×$Ñ$ S¬(°3«-Ó8ˆCä× Ñ  ¤h¨wÓ&7Ó8ˆØ�~Š~Ü×*Ñ*¨3´¸Ó0AÀ1ÓEˆCÜ×Ñ˜S &Ô)ÙÜ×$Ñ$ S¬(°4«.Ó9ˆCØ—>’>Ü×.Ñ.¨s´H¸T³NÀAÓF‘ä×#Ñ# C¬°%«Ó9ˆCØ—>’>Ü×-Ñ-¨c´8¸E³?ÀAÓF�Ü×Ñ˜S &Ô)ô 	×Ñ˜cŸn™nÔ-ä×Ñ Ó'ˆØˆr)   c                 óÂ   — | j                   rt        d«      ‚t        j                  | j                  |«      }|r%d| _        d| _        | j                  «        d| _        |S )zDecrypt document.r­   FT)r±   r²   r�   Úfz_authenticate_passwordr³   rî  r  rÞ   )r'   Úpasswordrÿ   s      r(   ÚauthenticatezDocument.authenticater  sS   € à�>Š>ÜÐ.Ó/Ð/Ü×,Ñ,¨T¯Y©Y¸ÓAˆÙØ %ˆDÔØ %ˆDÔØ�M‰MŒOØˆDŒLØˆ
r)   c                 ó`   — t        | d¬«      }|j                  syt        j                  |«      S )z-Check whether incremental saves are possible.r   r  F)r½   r»   r�   Úpdf_can_be_saved_incrementally©r'   rF  s     r(   Úcan_save_incrementallyzDocument.can_save_incrementally~  s)   € ä˜t¨aÔ0ˆØ�~Š~ØÜ×3Ñ3°CÓ8Ð8r)   T)r�  Úwidgetsr�  r�  c                ól   — t        | «      }t        j                  |t        |«      t        |«      «       y)aú  Convert annotations or fields to permanent content.

        Notes:
            Converts annotations or widgets to permanent page content, like
            text and vector graphics, as appropriate.
            After execution, pages will still look the same, but no longer
            have annotations, respectively no fields.
            If widgets are selected the PDF will no longer be a Form PDF.

        Args:
            annots: convert annotations
            widgets: convert form fields

        N)r½   r�   Úpdf_bake_documentr3   )r'   r�  r�  rF  s       r(   ÚbakezDocument.bake…  s(   € ô ˜tÓ$ˆÜ×Ñ ¤S¨£[´#°g³,Õ?r)   c                 ón   — | j                   rt        d«      ‚t        j                  | j                  «      S )zNumber of chapters.r­   )r±   r²   r�   Úfz_count_chaptersr³   r-   s    r(   rÃ  zDocument.chapter_count—  s,   € ð �>Š>ÜÐ.Ó/Ð/Ü×&Ñ&¨¯	©	Ó2Ð2r)   c                 óÜ   — | j                   rt        d«      ‚t        j                  | j                  «      }|dk  s||k\  rt        d«      ‚t        j
                  | j                  |«      }|S )zPage count of chapter.r­   r   zbad chapter number)r±   r²   r�   r¢  r³   Úfz_count_chapter_pages)r'   rÆ  Úchaptersrc  s       r(   rÄ  zDocument.chapter_page_countž  s^   € à�>Š>ÜÐ.Ó/Ð/Ü×*Ñ*¨D¯I©IÓ6ˆØ�QŠ;˜' XÒ-ÜÐ2Ó3Ð3Ü×,Ñ,¨d¯i©i¸ÓAˆØˆr)   c                 ó¼   — t        | dd«      rt        d«      ‚t        | d«      r| j                  rd| _        | j	                  «        d| _        i | _        d| _        y)zClose document.r±   Tr­   Ú_outlineN)rØ   r²   r9   r§  rD  r±   rñ  r³   r-   s    r(   r×  zDocument.close¨  sV   € ä�4˜ dÔ+ÜÐ.Ó/Ð/ä�4˜Ô$¨¯ªØ ˆDŒMØ×ÑÔð !ˆŒàˆŒð ˆ�	r)   c                 óŒ  — | j                   s| j                  rt        d«      ‚| j                  }|}|}t	        j
                  |«      }|dk  rd}||dz
  kD  r|dz
  }|dk  r|dz
  }||dz
  kD  r|dz
  }t        t        «      }t        ||||«      }	t        t        «      }
t        ||
«      D ]  }t        t        |   › «       Œ |	S )z[Convert document to a PDF, selecting page range and optional rotation. Output bytes object.r  r   r   )r±   rî  r²   r³   r�   r'  r6   ÚJM_mupdf_warnings_storeÚJM_convert_to_pdfr8  rp   )r'   r@  rA  rE  Úfz_docre  r©  ÚsrcCountÚlen0r  Úlen1rL  s               r(   r  zDocument.convert_to_pdfº  sÓ   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø—‘ˆØˆØˆÜ×'Ñ'¨Ó/ˆØ�Š6ØˆBØ�˜1‘ÒØ˜A‘ˆBØ�Š6Ø˜A‘ˆBØ�˜1‘ÒØ˜A‘ˆBÜÔ*Ó+ˆÜ ¨¨B°Ó7ˆÜÔ*Ó+ˆÜ�t˜TÖ"ˆAÜÔ.¨qÑ1Ð2Õ4ð #àˆ
r)   rÇ  rH  c                 óÚ   — | j                   rt        d«      ‚t        | «      }|t        |«      vs|t        d|«      vrt        d«      ‚d}d}|dk(  r|dz
  }d}| j	                  ||||«      S )zéCopy a page within a PDF document.

        This will only create another reference of the same page object.
        Args:
            pno: source page number
            to: put before this page, '-1' means after last page.
        r­   r…  rË  r   r   ©r±   r²   r6   r8  rP  ©r'   rÇ  rH  rÂ  rF  rG  s         r(   Ú	copy_pagezDocument.copy_pageÑ  s~   € ð �>Š>ÜÐ.Ó/Ð/ä˜“Yˆ
àœ5 Ó,Ñ,ØœU 2 zÓ2Ñ2äÐ1Ó2Ð2ØˆØˆØ�Š8Ø˜a‘ˆBØˆFà×#Ñ# C¨¨V°TÓ:Ð:r)   c                 ó  — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  t	        j                  |«      t        d«      «      }|j                  r t	        j                  |t        d«      «       yy)zDelete XML metadata.r  r  ÚMetadataN)
r±   rî  r²   r½   r�   ró   r   rô   r»   r-  )r'   rF  r,  s      r(   Údel_xml_metadatazDocument.del_xml_metadataê  sj   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×!Ñ!¤5×#4Ñ#4°cÓ#:¼HÀVÓ<LÓMˆØ�?Š?Ü×Ñ ¤h¨zÓ&:Õ;ð r)   c                 ó$   — | j                  |«      S )z% Delete one page from a PDF.
        )rÎ  )r'   rÇ  s     r(   rÍ  zDocument.delete_pageó  s   € ð × Ñ  Ó%Ð%r)   c                 óJ  — | j                   st        d«      ‚| j                  rt        d«      ‚| j                  }dx}}|rŒ|rt        d«      ‚|j	                  dd«      }|j	                  dd«      }|dk  r||z  }|dk  rŒ|dk  r||z  }|dk  rŒ||cxk  r|k  st        d«      ‚ t        d«      ‚t        t        ||d	z   «      «      }nÜt        |«      d
kD  s|g k(  rt        d«      ‚t        |«      d
k(  rv|\  }}t        |«      t        u rt        |«      t        u st        d«      ‚||kD  r||}}||cxk  r|k  st        d«      ‚ t        d«      ‚t        t        ||d	z   «      «      }n:t        |d   t        «      r|d   }|dk  r||z  }|dk  rŒ|f}nt        |d   «      }t        t        t        t        |«      «      «      }|g k(  rt        d«       y|j                  «        |d   dk  s|d   |k\  rt        d«      ‚t!        |«      }| j#                  «       }	t%        | j'                  «       «      D ]$  \  }
}|	|
   d
   d	z
  |v sŒ| j)                  |«       Œ& | j+                  |«       t-        |«      D ]  }
| j/                  |
«       Œ | j1                  «        y)a6  Delete pages from a PDF.

        Args:
            Either keywords 'from_page'/'to_page', or two integers to
            specify the first/last page to delete.
            Or a list/tuple/range object, which can contain arbitrary
            page numbers.
            Or a single integer page number.
        rÊ  r­   r…  z*cannot mix keyword and positional argumentr@  rA  r   rË  r   r   z need 1 or 2 positional argumentszboth arguments must be intznothing to deleteN)rÌ  r²   r±   rÂ  r7   r¢   r8  r6   r·   r3   r<   r¡   rÇ  Úsetrp   ÚsortÚ	frozensetÚget_tocrã  r'  r(  r^  Úreversedr:  rD  )r'   rä  ÚkwrÂ  r¸  r5  r]  rÇ  Úfrozen_numbersÚtocrL  rý   s               r(   rÎ  zDocument.delete_pagesø  s£  € ð �{Š{Ü˜[Ó)Ð)Ø�>Š>ÜÐ.Ó/Ð/à—_‘_ˆ
Øˆ
ˆˆAÙÙÜ Ð!MÓNÐNØ—‘�{ BÓ'ˆAØ—‘�y "Ó%ˆAØ�a’%Ø�Z‘�ð �a“%à�a’%Ø�Z‘�ð �a“%à˜Ô&˜JÒ&Ü Ð!5Ó6Ð6ð 'Ü Ð!5Ó6Ð6ÜœE ! Q¨¡U›OÓ,‰Gä�4‹y˜1Š} ¨¢
Ü Ð!CÓDÐDÜ�4‹y˜AŠ~Ø‘��1Ü˜Q›¤3™¬4°«7´c©>Ü$Ð%AÓBÐBØ�q’5Ø˜a�q�AØ˜AÔ* 
Ò*Ü$Ð%9Ó:Ð:ð +Ü$Ð%9Ó:Ð:Ü¤ a¨¨Q©£Ó0‘Ü˜D ™G¤SÔ)Ø˜1‘g�Ø˜A’gØ˜:Ñ%�Cð ˜A“gà˜&‘ä  Q¡›.�ä”sœ3¤ G£Ó-Ó.ˆØ�bŠ=ÜÐ'Ô(ØØ�‰ŒØ�1‰:˜Š>˜W R™[¨JÒ6ÜÐ1Ó2Ð2Ü" 7Ó+ˆØ�l‰l‹nˆÜ  ×!7Ñ!7Ó!9Ö:‰GˆAˆtØ�1‰v�a‰y˜1‰} Ò.Ø×%Ñ% dÕ+ð ;ð 	×Ñ˜nÔ-ä˜'Ö"ˆAØ×Ñ˜aÕ ð #ð 	×ÑÕr)   r   r  rd   r  r§  c                 óN  — | j                  «       }dt        |«      z  }||v rt        |«      ‚|€|}|€|}|€|}| j                  |||||¬«      }t	        «       }	| j                  |dd«       | j                  |dt        |	«      «       | j                  |dt        |	«      «       |S )a\  Add an item to the EmbeddedFiles array.

        Args:
            name: name of the new item, must not already exist.
            buffer_: (binary data) the file content.
            filename: (str) the file name, default: the name
            ufilename: (unicode) the file name, default: filename
            desc: (str) the description.
        zName '%s' already exists.©r  rd   r  r§  r  z/EmbeddedFileúParams/CreationDateúParams/ModDate)rÓ  rÙ   r²   rÛ  Úget_pdf_nowr[  rR  )
r'   r   r  rd   r  r§  rÔ  rÕ  rý   Údates
             r(   Úembfile_addzDocument.embfile_add=  sÆ   € ð  ×&Ñ&Ó(ˆ	Ø)¬C°«IÑ5ˆØ�9ÑÜ˜S“/Ð!àÐØˆHØÐØ ˆIØˆ<ØˆDØ× Ñ ØØØ!Ø#Øð !ó ˆô ‹}ˆØ×Ñ˜$ ¨Ô8Ø×Ñ˜$Ð 5´{À4Ó7HÔIØ×Ñ˜$Ð 0´+¸dÓ2CÔDØˆr)   c                 ó4   — t        | j                  «       «      S )zGet number of EmbeddedFiles.)r6   rÓ  r-   s    r(   Úembfile_countzDocument.embfile_counte  s   € ä�4×%Ñ%Ó'Ó(Ð(r)   c                 óF   — | j                  |«      }| j                  |«      S )aT  Delete an entry from EmbeddedFiles.

        Notes:
            The argument must be name or index of an EmbeddedFiles item.
            Physical deletion of data will happen on save to a new
            file with appropriate garbage option.
        Args:
            item: name or number of item.
        Returns:
            None
        )rÖ  rÝ  ©r'   rA   r%  s      r(   Úembfile_delzDocument.embfile_deli  s%   € ð ×%Ñ% dÓ+ˆØ× Ñ  Ó%Ð%r)   c                 óF   — | j                  |«      }| j                  |«      S )z¯Get the content of an item in the EmbeddedFiles array.

        Args:
            item: number or name of item.
        Returns:
            (bytes) The file content.
        )rÖ  rÑ  rÊ  s      r(   Úembfile_getzDocument.embfile_getx  s%   € ð ×%Ñ% dÓ+ˆØ×$Ñ$ SÓ)Ð)r)   c                 óŽ  — | j                  |«      }d| j                  «       |   i}| j                  ||«      }| j                  |d«      \  }}|dk7  r||d<   | j                  |d«      \  }}|dk7  r||d<   | j                  |d«      \  }}|dk7  r4t	        j
                  |j                  «       «      j                  «       |d<   |S )	z­Get information of an item in the EmbeddedFiles array.

        Args:
            item: number or name of item.
        Returns:
            Information dictionary.
        r   rÂ  r¥  rg  rÃ  rh  zParams/CheckSumÚchecksum)rÖ  rÓ  rç  Úxref_get_keyr  r   r²  Údecode)r'   rA   r%  râ  rý   r5  rÅ  Úmd5s           r(   Úembfile_infozDocument.embfile_infoƒ  sÕ   € ð ×%Ñ% dÓ+ˆØ˜D×.Ñ.Ó0°Ñ5Ð6ˆØ×!Ñ! # xÓ0ˆØ×#Ñ# DÐ*?Ó@‰ˆˆ4Ø�Š;Ø'+ˆH�^Ñ$Ø×#Ñ# DÐ*:Ó;‰ˆˆ4Ø�Š;Ø"&ˆH�YÑØ×"Ñ" 4Ð):Ó;‰ˆˆ3Ø�Š;Ü#+×#3Ñ#3°C·J±J³LÓ#A×#HÑ#HÓ#JˆH�ZÑ Øˆr)   c                 ó,   — g }| j                  |«       |S )z#Get list of names of EmbeddedFiles.)ré  )r'   rÔ  s     r(   rÓ  zDocument.embfile_names™  s   € àˆ	Ø×Ñ˜IÔ&ØÐr)   c                 ó    — | j                  |«      }| j                  |||||¬«      }t        «       }| j                  |dt	        |«      «       |S )a­  Change an item of the EmbeddedFiles array.

        Notes:
            Only provided parameters are changed. If all are omitted,
            the method is a no-op.
        Args:
            item: number or name of item.
            buffer_: (binary data) the new file content.
            filename: (str) the new file name.
            ufilename: (unicode) the new filen ame.
            desc: (str) the new description.
        rÁ  rÃ  )rÖ  rë  rÄ  r[  rR  )	r'   rA   r  rd   r  r§  r%  rý   rÅ  s	            r(   Úembfile_updzDocument.embfile_updŸ  s^   € ð& ×%Ñ% dÓ+ˆØ× Ñ ØØØ!Ø#Øð !ó ˆô ‹}ˆØ×Ñ˜$Ð 0´+¸dÓ2CÔDØˆr)   c           
      óü  — t        | «      }t        j                  ||«      }t        j                  |t	        d«      «      }t        j                  |t	        d«      «      }t        j
                  |t	        d«      «      �r\t        j                  |«      j                  d«      �s7t        j                  |t	        d«      «      }|j                  rt        j                  |«      r t        j                  |t	        d«      «      }	n|}	t        ||«      }
|
dk7  r|st        ||«      }t        |«      }nd}|sIt        t        j                  |	«      «      t        |
«      t        t        j                  |«      «      |f}|S t        t        t        j                  |	«      «      t         t        |
«      t"        t        t        j                  |«      «      t$        |i}|S |sd	}|S t        d
t         d
t"        d
t$        di}|S )zD
        Get a font by xref. Returns a tuple or dictionary.
        r  rs  r  ÚCIDFontTypeÚBaseFontrü  ún/ar)   )rZ   rZ   rZ   r)   rZ   )r½   r�   rw  ró   rô   Úpdf_name_eqrf  r2   r»   Úpdf_is_nullÚJM_get_fontextensionr  r
  r   rñ   r  Údictkey_extÚdictkey_typer  )r'   rý   Ú	info_onlyÚnamedrF  rü   rG  ÚsubtypeÚbasefontÚbnamerý  r  Úbytes_r’   s                 r(   Úextract_fontzDocument.extract_font¾  s¸  € ô
 ˜tÓ$ˆÜ×#Ñ# C¨Ó.ˆÜ×"Ñ" 3¬°Ó(8Ó9ˆÜ×$Ñ$ S¬(°9Ó*=Ó>ˆÜ×Ñ˜e¤X¨fÓ%5Õ6Ü×)Ñ)¨7Ó3×>Ñ>¸}ÕMä×)Ñ)¨#¬x¸
Ó/CÓDˆHØ×&Ò&¬%×*;Ñ*;¸HÔ*EÜ×*Ñ*¨3´¸Ó0@ÓA‘à �Ü& s¨DÓ1ˆCØ�eŠ|¡IÜ+¨C°Ó6�Ü)¨'Ó2‘à�Ùä+¬E×,=Ñ,=¸eÓ,DÓEÜ)¨#Ó.Ü)¬%×*;Ñ*;¸GÓ*DÓEØð	�ð. ˆ	ô %Ô&9¼%×:KÑ:KÈEÓ:RÓ&SÜ#Ô%6°sÓ%;Ü$Ô&7¼×8IÑ8IÈ'Ó8RÓ&SÜ'¨ð	�ð  ˆ	ñ Ø$�ð ˆ	ô % bÜ# RÜ$ bÜ'¨ð	�ð ˆ	r)   c                 óÞ  — | j                   s| j                  rt        d«      ‚t        | «      }t	        |dt        j                  |«      dz
  «      st        t        «      ‚t        j                  ||d«      }t        j                  |t        d«      «      }t        j                  |t        d«      «      st        d«      ‚t        j                  |t        d«      t        d«      «      }|j                  rt        j                  |«      }nd}t        j                  ||«      }t!        «       }t#        ||«       ||t$        <   t        j&                  |j)                  «       «      |t*        <   |S )	z(Get image by xref. Returns a dictionary.r  r   r   rs  ÚImageznot an imageÚSMaskÚMask)r±   rî  r²   r½   r�  r�   rt  ru  rv  ró   rô   rÛ  Úpdf_dict_getar»   rî   Úpdf_load_imager4   Ú_make_image_dictÚdictkey_smaskr”  rÈ  Údictkey_cs_name)	r'   rý   rF  rü   râ  r�  ÚsmaskrÄ  r’   s	            r(   Úextract_imagezDocument.extract_imageï  s#  € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<ä˜tÓ$ˆä˜˜a¤×!3Ñ!3°CÓ!8¸Ñ!:Ô;ÜœlÓ+Ð+ä×$Ñ$ S¨$°Ó2ˆÜ×$Ñ$ S¬(°9Ó*=Ó>ˆä× Ñ  ¬(°7Ó*;Ô<Ü˜nÓ-Ð-ä×Ñ ¤X¨gÓ%6¼ÀÓ8HÓIˆØ�<Š<Ü×$Ñ$ QÓ'‰EàˆEô ×"Ñ" 3¨Ó,ˆÜ‹VˆÜ˜˜bÔ!Ø!ˆŒ=ÑÜ#×6Ñ6°s·~±~Ó7GÓHˆŒ?ÑØˆ	r)   Fc                 óJ   — | j                  |||||||||	|
|||||||||¬«      S )z8
        Save PDF using some different defaults
        )ÚgarbageÚcleanÚdeflateÚdeflate_imagesÚdeflate_fontsÚincrementalry  ÚexpandÚlinearÚprettyÚ
encryptionÚpermissionsÚowner_pwÚuser_pwÚ	no_new_idÚpreserve_metadataÚuse_objstmsÚcompression_effort)Úsave)r'   rd   ró  rô  rõ  rö  r÷  rø  ry  rù  rú  rû  rü  rý  rþ  rÿ  r   r  r  r  s                       r(   Úez_savezDocument.ez_save  sS   € ð2 �y‰yØØØØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ#Ø"3Ø'Ø#5ð' ó ð 	r)   c                 ó¸   — | j                   s| j                  rt        d«      ‚t        j                  | j
                  |«      }|j                  |j                  fS )z-Find new location after layouting a document.r  )r±   rî  r²   r�   Úfz_lookup_bookmark2r³   rÆ  rÅ   )r'   rõ  Úlocations      r(   Úfind_bookmarkzDocument.find_bookmark<  sH   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü×,Ñ,¨d¯i©i¸Ó<ˆØ×Ñ §¡Ð.Ð.r)   c                 óþ  — t        | «      }t        j                  |«      }	 t        |d|dz
  «      rt        |d|dz
  «      st	        t
        «      ‚t        j                  t        j                  ||«      «      }t        j                  |«      }t        j                  |t        d«      «      }|j                  �r’t        j                  |«      }t        j                  ||«      }	t        |«      D �]8  }
t        j                  ||
«      }t        j                  |t        d«      «      }t        j                   |t        d«      «      rŒYt        j"                  |d«      j                  rŒzt        j                  t        j                  |«      «      }t        j$                  |«      }t        j&                  |||«       t        j(                  ||d«      }t        j*                  |t        d«      «       t        j*                  |t        d«      «       t        j,                  |	|«       �Œ; t        j.                  |t        d«      |	«       t1        |«      }|rw|j                  rkt        j2                  |t        j4                  d	«      t        j6                  «       d«      }t9        |||d«       t        j.                  |t        d
«      |«       t        j$                  |«      }t        j&                  |||«       t        j(                  ||d«      }t        j:                  |||«       t        j<                  |j                  «       | j?                  «        y# t        j<                  |j                  «       w xY w)zMake a full page duplicate.r   r   r…  r„  rs  rƒ  r  r¦  ó    rÿ  N) r½   r�   r&  r�  r²   r(  r  r)  r«  ró   rô   r»   r‰  r7  r8  rŠ  rÛ  rë   Úpdf_create_objectÚpdf_update_objectrv  r-  rx  r:  ÚJM_read_contentsÚpdf_add_streamr�  ÚPdfObjr  rW  r9  rD  )r'   rÇ  rH  rF  rÂ  rI  rL  Ú
old_annotsrC   Ú
new_annotsrL  r�  râ  Úcopy_orý   r  rY  s                    r(   Úfullcopy_pagezDocument.fullcopy_pageC  s±  € ä˜tÓ$ˆÜ×*Ñ*¨CÓ0ˆ
ð0	9Ü˜S ! Z°!¡^Ô4Ü# B¨¨J¸©NÔ;ä ¤.Ó1Ð1ä×.Ñ.´×0IÑ0IÈ3ÐPSÓ0TÓUˆEä×+Ñ+¨UÓ3ˆEÜ×+Ñ+¨U´H¸XÓ4FÓGˆJð ×$Ó$Ü×'Ñ'¨Ó4�Ü"×0Ñ0°#°qÓ9�
Ü˜qŸ�AÜ×+Ñ+¨Z¸Ó;�AÜ#×0Ñ0°!´X¸iÓ5HÓI�GÜ×(Ñ(¨'´8¸GÓ3DÔEØ Ü×*Ñ*¨A¨uÓ5×@Ò@Ø Ü"×4Ñ4´e×6PÑ6PÐRSÓ6TÓU�FÜ ×2Ñ2°CÓ8�DÜ×+Ñ+¨S°$¸Ô?Ü"×3Ñ3°S¸$ÀÓB�FÜ×&Ñ&¨´¸Ó0AÔBÜ×&Ñ&¨´¸³Ô>Ü×(Ñ(¨*°fÖ=ð "ô ×"Ñ" E¬8°HÓ+=¸zÔJô # EÓ*ˆCñ �s—~’~ä ×/Ñ/°´e×6ZÑ6ZÐ\`Ó6aÔch×coÑcoÓcqÐstÓu�Ü  # x°°aÔ8Ü×"Ñ" E¬8°JÓ+?ÀÔJô ×*Ñ*¨CÓ0ˆDÜ×#Ñ# S¨$°Ô6ä×*Ñ*¨C°°qÓ9ˆEÜ×!Ñ! 3¨¨EÔ2ä×'Ñ'¨¯©Ô8à×ÑÕøô ×'Ñ'¨¯©Õ8ús   ¢L	M Í!M<r  Úfontdictc                 óŠ  — t        | |«      }|€À|€%t        j                  | |«      \  }}}}	}
||||	|
dœ}n|d   }|d   }|d   }|d   }|d   }|dk(  rt        d	«      ‚|d
v rd}nd}|dv rd}n|dv rd}n|dv rd}n	|dv rd}nd}||d<   |dk(  rt        }n|dk(  rt
        }nd}||d<   ||d<   ||g}| j                  j                  |«       n|d   }|d   }|d   }|d   }|€d}nt        |«      }t        d|«      }||k  r|S |dk  r | j                  ||d   |d   |d   ||«      }nd}||d<   ||d<   t        | |«       |S )a¹  Get list of glyph information of a font.

        Notes:
            Must be provided by its XREF number. If we already dealt with the
            font, it will be recorded in doc.FontInfos. Otherwise we insert an
            entry there.
            Finally we return the glyphs for the font. This is a list of
            (glyph, width) where glyph is an integer controlling the char
            appearance, and width is a float controlling the char's spacing:
            width * fontsize is the actual space.
            For 'simple' fonts, glyph == ord(char) will usually be true.
            Exceptions are 'Symbol' and 'ZapfDingbats'. We are providing data for these directly here.
        N)r   r·   rý  ÚascenderÚ	descenderr   rý  r·   rþ  ÚsimplerZ   zxref is not a font)ÚType1ÚMMType1ÚTrueTypeTF)ÚFangtiÚMingr   )ÚHeitiÚSongr   )ÚGothicÚMinchor   )ÚDotumÚBatangr   r…  ÚZapfDingbatsÚSymbolÚglyphsr  )ÚCheckFontInforá  Ú_get_font_propertiesr²   Úzapf_glyphsÚsymbol_glyphsrð  ri   r6   rÔ  r  ÚUpdateFontInfo)r  rý   rÿ  r%  r  Úfontinfor   rý  ÚstypeÚascÚdscrþ  r  r'  Úoldlimitr	  s                   r(   Úget_char_widthszDocument.get_char_widths{  sð  € ô( !  dÓ+ˆØÐØÐÜ-2×-GÑ-GÈÈTÓ-RÑ*��c˜5 # sà Ø!ØØ #Ø!$ñ‘ð   Ñ'�Ø˜u‘o�Ø  Ñ(�Ø# JÑ/�Ø! (Ñ+�à�bŠyÜ Ð!5Ó6Ð6ð Ð8Ñ8Ø‘à�ð Ð)Ñ)Ø‘ØÐ*Ñ*Ø‘ØÐ-Ñ-Ø‘ØÐ,Ñ,Ø‘à�à!'ˆH�XÑà�~Ò%Ü$‘Ø˜Ò!Ü&‘à�à!'ˆH�XÑØ#+ˆH�ZÑ Ø˜hÐ'ˆHØ�M‰M× Ñ  Õ*à ‘{ˆHØ˜hÑ'ˆFØ˜hÑ'ˆFØ 
Ñ+ˆHàˆ>Ø‰Hä˜6“{ˆHä�c˜5“/ˆà�hÒØˆMà�aŠ<Ø×)Ñ)Ø�h˜vÑ&¨°©¸À*Ñ9MÈwÐX[ó‰Fð ˆFà#ˆ�ÑØˆ�‰Ü�s˜HÔ%àˆr)   c                 óª  — t        | «      }t        j                  t        j                  |«      t	        d«      t	        d«      «      }|j
                  sy|dk(  r t        j                  |t	        d«      «      }n3t        j                  t        j                  |t	        d«      «      |«      }|j
                  st        t        «      ‚t        |«      }|S )z,Content of ON, OFF, RBGroups of an OC layer.r  ÚOCPropertiesNr…  rñ  rƒ  )r½   r�   r  r   rô   r»   ró   rŠ  r²   rˆ  ÚJM_get_ocg_arrays)r'   r‰  rF  r’  rü   r’   s         r(   Ú	get_layerzDocument.get_layerà  s¯   € ä˜tÓ$ˆÜ×!Ñ!Ü×!Ñ! 3Ó'Ü˜Ó Ü˜Ó(óˆð
 �~Š~ØØ�RŠ<Ü×$Ñ$ c¬8°C«=Ó9‰Cä×%Ñ%Ü×&Ñ&¨¬X°iÓ-@ÓAØóˆCð �~Š~ÜÔ/Ó0Ð0Ü Ó$ˆØˆ	r)   c                 óÚ  — t        | «      }t        j                  |«      }|dk(  r]t        j                  t        j                  |«      t        d«      t        d«      t        d«      «      }t        j                  |«      sd}g }t        j                  «       }t        |«      D ]D  }t        j                  |||«       ||j                  |j                  dœ}|j                  |«       ŒF |S )zShow optional OC layers.r   r  r4  rƒ  r   )Únumberr   ru  )r½   r�   Úpdf_count_layer_configsr  r   rô   rv  ÚPdfLayerConfigr8  Úpdf_layer_config_infor   ru  ri   )r'   rF  rC   rü   r’   r
  rL  rA   s           r(   Ú
get_layerszDocument.get_layersö  sÎ   € ä˜tÓ$ˆÜ×)Ñ)¨3Ó/ˆØ�Š6Ü×%Ñ%Ü×%Ñ% sÓ+Ü˜VÓ$Ü˜^Ó,Ü˜YÓ'ó	ˆCô ×%Ñ% sÔ+Ø�ØˆÜ×#Ñ#Ó%ˆÜ�q–ˆAÜ×'Ñ'¨¨a°Ô6àØ ŸI™IØ#Ÿ|™|ñˆDð
 �I‰I�tÕð ð ˆ	r)   c                 ó¦   — | j                   s| j                  rt        d«      ‚t        | «      }d}t	        |«       t        j                  |«      }|S )zMake new xref.r  r   )r±   rî  r²   r½   ÚENSURE_OPERATIONr�   r  )r'   rF  rý   s      r(   Úget_new_xrefzDocument.get_new_xref  sI   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆØˆÜ˜ÔÜ×&Ñ& sÓ+ˆØˆr)   c                 ó  — | j                   s| j                  rt        d«      ‚| j                  |d«      \  }}|dk7  s|dvrt        d|z  «      ‚| j                  |d«      \  }}|dk7  ryt	        |j                  d	d
«      «      }|S )zšReturn optional content object xref for an image or form xobject.

        Args:
            xref: (int) xref number of an image or form xobject.
        údocument close or encryptedrs  r   ©ú/Imageú/Formúbad object type at xref %ir±  rý   r   ú0 RrZ   )r±   rî  r²   rÐ  r3   rÊ  )r  rý   r5  r   r³  r’   s         r(   r´  zDocument.get_oc  s�   € ð �=Š=˜C×,Ò,ÜÐ:Ó;Ð;Ø×"Ñ" 4¨Ó3‰ˆˆ4Ø�Š;˜$Ð&9Ñ9ÜÐ9¸DÑ@ÓAÐAØ× Ñ   tÓ,‰ˆˆ2Ø�Š;ØÜ�—‘˜E 2Ó&Ó'ˆØˆ	r)   c           	      ó¬  — t        j                  d«      }t        | «      }t        j                  t        j                  t        j
                  |«      t        d«      «      t        d«      t        d«      «      }t        «       }t        j                  |«      s|S t        j                  |«      }t        |«      D �]  }t        j                  ||«      }t        j                  |«      }t        j                  t        j                  |t        d«      «      «      }	t        j                  |t        d«      |t        d«      «      }
d}|
j                  rt        j                  |
«      }t!        «       }t        j                  |t        d	«      «      }|j                  rÄt        j"                  |«      r%|j%                  t        j                  |«      «       nŠt        j                  |«      rut        j                  |«      }t        |«      D ]R  }t        j                  ||«      }t        j"                  |«      sŒ/|j%                  t        j                  |«      «       ŒT t&        d
k\  r-t        j(                  «       }t        j*                  ||||«      }n*t        j*                  |t        j,                  «       ||«      }|	|| |dœ}|}|||<   �Œ |S )z&Show existing optional content groups.r~  r  r4  r‚  rü  r}  rs  Nrz  )r   é   )r   rŠ  rv  r‹  )r�   r!  r½   r  ró   r   rô   r4   rv  r‰  r8  rŠ  rî   rð   r»   rf  r¡   r¨  ri   Úmupdf_version_tupleÚPdfResourceStackÚpdf_is_ocg_hiddenr  )r'   rå  rF  Úocgsr’   rC   rL  rŒ  rý   r   rü   r‹  r�  rŠ  rm  rn  r�  Úresource_stackÚhiddenrA   rq  s                        r(   Úget_ocgszDocument.get_ocgs*  s<  € ä×Ñ Ó/ˆÜ˜tÓ$ˆÜ×"Ñ"Ü×"Ñ"¤E×$5Ñ$5°sÓ$;¼XÀfÓ=MÓNÜ˜Ó(Ü˜Ó óˆô
 ‹VˆÜ×!Ñ! 4Ô(ØˆIÜ×Ñ Ó&ˆÜ�q—ˆAÜ×%Ñ% t¨QÓ/ˆCÜ×#Ñ# SÓ)ˆDÜ×+Ñ+¬U×-?Ñ-?ÀÄhÈvÓFVÓ-WÓXˆDÜ×%Ñ% s¬H°WÓ,=¸rÄ8ÈIÓCVÓWˆCØˆEØ�~Š~Ü×)Ñ)¨3Ó/�Ü“fˆGÜ×'Ñ'¨¬h°xÓ.@ÓAˆFØ× Ò Ü×$Ñ$ fÔ-Ø—N‘N¤E×$5Ñ$5°vÓ$>Õ?Ü×'Ñ'¨Ô0Ü×+Ñ+¨VÓ4�AÜ" 1žX˜Ü!×/Ñ/°¸Ó;˜Ü ×,Ñ,¨aÕ0Ø#ŸN™N¬E×,=Ñ,=¸qÓ,AÕBð &ô # gÒ-Ü!&×!7Ñ!7Ó!9�Ü×0Ñ0°#°~ÀuÈcÓR‘ä×0Ñ0°#´u·|±|³~ÀuÈcÓR�à Ø%Ø$˜*Ø"ñ	ˆDð ˆDØˆB�‹Ið? ð@ ˆ	r)   c                 ól  — |t        | j                  «       «      vrt        d«      ‚| j                  |d¬«      }d|vrt        d«      ‚t	        |«      }|j                  d«      }|j                  d|«      }|dk  s|dk  rd	}n?||d
z   | j                  dd«      j                  «       }t        t        t        |«      «      }|j                  d«      }|dk  rd	}nD|j                  d|«      }|dk  r|j                  d|«      }|dk  rt        d«      ‚||dz   |dz    }|j                  d«      }|dk  rd	}nÐdx}	}
|}|	dk  s|	|
k7  r;|dz  }||k  st        d«      ‚||   dk(  r|	dz  }	||   dk(  r|
dz  }
|	dk  rŒ5|	|
k7  rŒ;||dz   |dz    }|j                  dd«      j                  dd«      j                  dd«      }|j                  dd«      j                  dd«      j                  dd «      }dd	l}	 |j                  |«      }||||d"œS # t        $ r t        «        t        d!|›�«       ‚ w xY w)#aˆ  Return the definition of an OCMD (optional content membership dictionary).

        Recognizes PDF dict keys /OCGs (PDF array of OCGs), /P (policy string) and
        /VE (visibility expression, PDF array). Via string manipulation, this
        info is converted to a Python dictionary with keys "xref", "ocgs", "policy"
        and "ve" - ready to recycle as input for 'set_ocmd()'.
        úbad xrefTre  ú
/Type/OCMDzbad object typeú/OCGs[rZ  r   NrØ  rF  r    z/P/rl  rv  zbad object at xrefr   r   z/VE[r   rY  z/Andz"and",z/Notz"not",z/Orz"or",z 0 R]ú 0 Rr   z][z],[zbad /VE key: )rý   rL  ÚpolicyÚve)r8  Úxref_lengthr²   rh  r6   r“   rÊ  r5   r¡   rÇ  r3   ÚjsonÚloadsre   rt   rp   )r  rý   r   ÚtextlenÚp0r÷  rL  rU  rV  ÚlpÚrprX  s               r(   Úget_ocmdzDocument.get_ocmdY  sd  € ð ”u˜SŸ_™_Ó.Ó/Ñ/Ü˜ZÓ(Ð(Ø�‰˜t°ˆÓ5ˆØ˜tÑ#ÜÐ.Ó/Ð/Ü�d“)ˆà�Y‰Y�xÓ ˆØ�Y‰Y�s˜BÓˆØ�Š6�R˜!’VØ‰Dà˜˜Q™ Ð$×,Ñ,¨U°CÓ8×>Ñ>Ó@ˆDÜœœC ›Ó'ˆDà�Y‰Y�uÓˆØ�Š6Ø‰Fà—‘˜4 Ó$ˆBØ�AŠvØ—Y‘Y˜t RÓ(�Ø�AŠvÜ Ð!5Ó6Ð6à˜b 1™f r¨A¡vÐ.�à�Y‰Y�vÓˆØ�Š6Ø‰BàˆKˆB�ØˆBØ�q’&˜B "šHØ�a‘�Ø˜G’|Ü$Ð%9Ó:Ð:Ø˜‘8˜s’?Ø˜!‘G�BØ˜‘8˜s’?Ø˜!‘G�Bð �q“&˜B "›Hð �b˜1‘f˜r A™vÐ&ˆBà—
‘
˜6 8Ó,ß‘˜ Ó*ß‘˜ Ó(ð ð
 —‘˜G SÓ)×1Ñ1°&¸#Ó>×FÑFÀtÈUÓSˆBÛðØ—Z‘Z “^�ð
  d°fÀBÑGÐGøô	 ò ÜÔ Ü˜-¨ vÐ.Ô/Øðús   Ç8H È#H3c                 óŒ  — g }t        | d¬«      }|j                  s|S t        j                  t        j                  |«      t        d«      «      }|j                  s|S t        j                  |t        d«      «      }|j                  s|S t        j                  |t        d«      «      }|j                  s|S t        ||«      }|S )z!Get list of outline xref numbers.r   r  r  r+  r,  )r½   r»   r�   ró   r   rô   r-  )r'   r0  rF  r,  r1  r2  s         r(   r'  zDocument.get_outline_xrefsœ  s¨   € àˆÜ˜t¨aÔ0ˆØ�~Š~ØˆLÜ×!Ñ!¤%×"3Ñ"3°CÓ"8¼(À6Ó:JÓKˆØ�ŠØˆLÜ×#Ñ# D¬(°:Ó*>Ó?ˆØ× Ò ØˆLÜ×"Ñ" 6¬8°GÓ+<Ó=ˆØ×ÒØˆLÜ  ¨Ó.ˆØˆr)   Úfullc                 ó>  — | j                   s| j                  rt        d«      ‚| j                  syt	        |«      t
        ur	 |j                  }| j                  |d«      }|s|D �cg c]  }|dd ‘Œ	 c}S |S # t        $ r t        «        t        d«      ‚w xY wc c}w )z1Retrieve a list of fonts used on a page.
        r  r,   zneed a Page or page numberr   Nr…  )
r±   rî  r²   rÌ  r·   r3   r8  re   rt   r3  ©r'   rÇ  r`  rÿ   rD   s        r(   Úget_page_fontszDocument.get_page_fonts®  s¡   € ð �>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø�{Š{ØÜ�‹9œCÑð?Ø—j‘j�ð ×Ñ  QÓ'ˆÙÙ$'Ó(¡C˜q�A�c�r’F CÑ(Ð(Øˆ
øô ò ?ÜÔ Ü Ð!=Ó>Ð>ð?üò
 )s   ÁA8 Á'BÁ8Bc                 ó¾   — | j                   s| j                  rt        d«      ‚| j                  sy| j	                  |d«      }|s|D �cg c]  }|dd ‘Œ	 c}S |S c c}w )z2Retrieve a list of images used on a page.
        r  r,   r   Nr…  ©r±   rî  r²   rÌ  r3  rb  s        r(   Úget_page_imageszDocument.get_page_imagesÀ  sc   € ð �>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø�{Š{ØØ×Ñ  QÓ'ˆÙÙ$'Ó(¡C˜q�A�c�r’F CÑ(Ð(Øˆ
ùò )s   Á	Ac                 ón   — | j                  «       D �cg c]  }t        j                  |«      ‘Œ c}S c c}w )zÙReturn page label definitions in PDF document.

        Returns:
            A list of dictionaries with the following format:
            {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int}.
        )r  rá  Ú	rule_dict)r'   rA   s     r(   Úget_page_labelszDocument.get_page_labelsÌ  s0   € ð 37×2GÑ2GÔ2IÓJÑ2I¨$”—‘ Õ%Ð2IÑJÐJùÒJs   “2c                 óØ   — g }|s|S | j                  «       }|g k(  r|S t        | j                  «      D ]4  }t        j                  ||«      }||k(  sŒ|j                  |«       |sŒ3 |S  |S )a"  Return a list of page numbers with the given label.

        Args:
            doc: PDF document object (resp. 'self').
            label: (str) label.
            only_one: (bool) stop searching after first hit.
        Returns:
            List of page numbers having this label.
        )r  r8  rÂ  rá  Úget_label_pnori   )r  ÚlabelÚonly_oner]  rj  rL  Úplabels          r(   Úget_page_numberszDocument.get_page_numbersÖ  su   € ð ˆÙØˆNØ×%Ñ%Ó'ˆØ�RŠ<ØˆNÜ�s—~‘~Ö&ˆAÜ×(Ñ(¨¨FÓ3ˆFØ˜‹Ø—‘˜qÔ!ÚØØˆð 'ð ˆr)   ©rÆ  rÇ  rÈ  rï  rÉ  r�  rÆ  rÈ  rï  rÉ  rÄ  c                óV   — |€t         }|€t        }| |   j                  ||||||¬«      S )a  Create pixmap of document page by page number.

        Notes:
            Convenience function calling page.get_pixmap.
        Args:
            pno: (int) page number
            matrix: pymupdf.Matrix for transformation (default: pymupdf.Identity).
            colorspace: (str,pymupdf.Colorspace) rgb, rgb, gray - case ignored, default csRGB.
            clip: (irect-like) restrict rendering to this area.
            alpha: (bool) include alpha channel
            annots: (bool) also render annotations
        rp  )ÚIdentityr½  rÎ  )r  rÇ  rÆ  rÇ  rÈ  rï  rÉ  r�  s           r(   Úget_page_pixmapzDocument.get_page_pixmapð  sF   € ð. ˆ>ÜˆFØÐÜˆJØ�3‰x×"Ñ"ØØ JØØØð #ó ð 	r)   r   Úoptionr¬  Útextpagerñ  r¹  c                 ó2   — | |   j                  ||||¬«      S )a>  Extract a document page's text by page number.

        Notes:
            Convenience function calling page.get_text().
        Args:
            pno: page number
            option: (str) text, words, blocks, html, dict, json, rawdict, xhtml or xml.
        Returns:
            output from page.TextPage().
        )rï  r¬  r¹  )râ  )r  rÇ  rt  rï  r¬  ru  r¹  s          r(   Úget_page_textzDocument.get_page_text  s"   € ð& �3‰x× Ñ  ¨d¸%ÀdÐ ÓKÐKr)   c                 óŠ   — | j                   s| j                  rt        d«      ‚| j                  sy| j	                  |d«      }|S )z4Retrieve a list of XObjects used on a page.
        r  r,   r   re  )r'   rÇ  rÿ   s      r(   Úget_page_xobjectszDocument.get_page_xobjects(  s@   € ð �>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø�{Š{ØØ×Ñ  QÓ'ˆØˆ
r)   c                 ó  — t        | d¬«      }|j                  syt        j                  t        j                  |«      t        d«      t        d«      t        d«      «      }d}|j                  rt        j                  |«      }|S )zGet the /SigFlags value.r   r  r…  r  r  ÚSigFlags)r½   r»   r�   r  r   rô   rõ   )r'   rF  ÚsigflagsÚsigflags       r(   Úget_sigflagszDocument.get_sigflags2  ss   € ä˜t¨aÔ0ˆØ�~Š~ØÜ×&Ñ&Ü×!Ñ! #Ó&Ü˜Ó Ü˜Ó$Ü˜Ó$ó	ˆð ˆØ×ÒÜ×&Ñ& xÓ0ˆGØˆr)   r  c                 óâ   ‡ ‡‡— ˆ ˆˆfd„Š‰ j                   rt        d«      ‚‰ j                  «        ‰ j                  }|sg S d}g } ‰|||«      }‰ j                  r‰s‰ j                  |«       |S )a  Create a table of contents.

        Args:
            simple: a bool to control output. Returns a list, where each entry consists of outline level, title, page number and link destination (if simple = False). For details see PyMuPDF's documentation.
        c                 óH  •— | �r| j                   j                  �r| j                  r| j                  }nd}| j                  sR| j                  rC| j
                  dk(  r$‰j                  | j                  «      }|d   dz   }n| j
                  dz   }nd}nd}‰	s,t        j                  | ‰«      }|j                  ||||g«       n|j                  |||g«       | j                  r ‰| j                  ||dz   «      }| j                  } | r| j                   j                  r�Œ|S )zPRecursively follow the outline item chain and record item information in a list.r    r…  r   r   )r³   r»   rf  Úis_externalrM  rÅ   Úresolve_linkrá  ÚgetLinkDictri   Údownr*  )
ÚolItemr1  Úlvlrf  ÚresolverÅ   Úlinkr  rw  r  s
          €€€r(   rw  z!Document.get_toc.<locals>.recurseK  sö   ø€ â˜VŸ[™[×3Ó3Ø—<’<Ø"ŸL™L‘Eà�Eà×)Ò)Ø—z’zØ!Ÿ;™;¨"Ò,Ø&)×&6Ñ&6°v·z±zÓ&B˜GØ#*¨1¡:°¡>™Dà#)§;¡;°¡?™Dà!™à�DáÜ ×,Ñ,¨V°SÓ9�DØ—L‘L # u¨d°DÐ!9Õ:à—L‘L # u¨dÐ!3Ô4à—;’;Ù# F§K¡K°¸¸a¹Ó@�EØŸ™�ñ5 ˜VŸ[™[×3Ô3ð6 ˆLr)   r­   r   )r±   r²   r  ÚoutlinerÌ  rø  )r  r  r…  r†  r1  r¿  rw  s   ``    @r(   r»  zDocument.get_tocB  sl   ú€ ö	ð@ �=Š=ÜÐ.Ó/Ð/Ø�‰ŒØ—‘ˆÙØˆIØˆØˆÙ�f˜e SÓ)ˆØ�:Š:™fØ×!Ñ! #Ô&Øˆ
r)   c                 ó  — d}t        | d¬«      }|j                  r<t        j                  t        j                  |«      t        d«      t        d«      «      }|�.|j                  r"t        j                  |«      }t        |«      }|S d}|S )zGet document XML metadata.Nr   r  r  r´  rZ   )r½   r»   r�   r  r   rô   r	  ÚJM_UnicodeFromBuffer)r'   ÚxmlrF  r=  r’   s        r(   Úget_xml_metadatazDocument.get_xml_metadatax  s‚   € àˆÜ˜t¨aÔ0ˆØ�>Š>Ü×%Ñ%Ü×%Ñ% cÓ*Ü˜VÓ$Ü˜ZÓ(óˆCð
 ˆ?˜sŸ~š~Ü×(Ñ(¨Ó-ˆDÜ% dÓ+ˆBð ˆ	ð ˆBØˆ	r)   c                 ó   — | j                   rt        d«      ‚| j                  st        d«      ‚t        | j                  «      D ]H  }| j                  |«      D ]2  }|d   t        j                  k(  rŒ|d   t        j                  k(  rŒ1  y ŒJ y)z0Check whether there are annotations on any page.r­   rÊ  r   TF)	r±   r²   rÌ  r8  rÂ  Úpage_annot_xrefsr�   ÚPDF_ANNOT_LINKr!  ©r  rL  rA   s      r(   Ú
has_annotszDocument.has_annots‰  sz   € à�=Š=ÜÐ.Ó/Ð/Ø�zŠzÜ˜[Ó)Ð)Ü�s—~‘~Ö&ˆAØ×,Ñ,¨QÖ/�à˜Q™¤5×#7Ñ#7Ó7¸4À¹7Äe×F\ÑF\Ó;\Úñ 0ð 'ð
 r)   c                 óò   — | j                   rt        d«      ‚| j                  st        d«      ‚t        | j                  «      D ]1  }| j                  |«      D ]  }|d   t        j                  k(  sŒ  y Œ3 y)z*Check whether there are links on any page.r­   rÊ  r   TF)r±   r²   rÌ  r8  rÂ  r�  r�   r�  r‘  s      r(   Ú	has_linkszDocument.has_links–  si   € à�=Š=ÜÐ.Ó/Ð/Ø�zŠzÜ˜[Ó)Ð)Ü�s—~‘~Ö&ˆAØ×,Ñ,¨QÖ/�Ø˜‘7œe×2Ñ2Ó2Úñ 0ð 'ð r)   c                 ój  — | j                   rt        d«      ‚| j                  «       | _        t	        dddddddd	d
ddœ
j                  «       D ��cg c]  \  }}|| j                  |«      f‘Œ c}}«      | _        | j                  d«      dk(  rd n| j                  d«      | j                  d<   y c c}}w )Nz,cannot initialize - document still encryptedÚformatz
info:Titlezinfo:Authorzinfo:Subjectzinfo:Keywordszinfo:Creatorzinfo:Producerzinfo:CreationDatezinfo:ModDatezinfo:Trapped)
r–  rf  Úauthorri  Úkeywordsru  Úproducerrg  rh  Útrappedrü  ÚNone)rî  r²   r=  r§  r4   r@   r  rï  )r'   r�  rD   s      r(   r  zDocument.init_doc¢  sÉ   € Ø×ÒÜÐKÓLÐLØ×)Ñ)Ó+ˆŒÜð &.Ø$0Ø%2Ø&4Ø'6Ø&4Ø'6Ø+>Ø&4Ø&4ñ=÷ $™e›gð=&ôñ=&±S°Q°q˜˜4×,Ñ,¨QÓ/Ò0ð =&òóˆŒð  /3×.?Ñ.?ÀÓ.MÈvÒ.U¡dÐ[_×[lÑ[lÐmyÓ[zˆ�‰�lÒ#ùós   ÁB/
c
                 óˆ  — d}
t        |t        «      rD|j                  j                  dkD  rt        t        |«      }t        d|j                  «       «      }
nt        |t
        «      r|}
nt        |«      }
|
st        d«      ‚|
j                  s|
j                  «       }t        d|«      }
| j                  |
||||||||	¬«	      S )zß
        Insert an arbitrary supported document to an existing PDF.

        The infile may be given as a filename, a Document or a Pixmap. Other
        parameters - where applicable - equal those of insert_pdf().
        Nr   Úpngzbad infile parameterrF  )r@  rA  rB  rE  rg  r�  Úshow_progressÚfinal)r<   rÄ  rÈ  rC   r½  r°   Útobytesr²   rÌ  r  Ú
insert_pdf)r'   Úinfiler@  rA  rB  rE  rg  r�  rž  rŸ  rÆ  Úpdfbytess               r(   Úinsert_filezDocument.insert_file¸  sÀ   € ð" ˆÜ�fœfÔ%Ø× Ñ ×"Ñ" QÒ&Ü¤ vÓ.�Ü˜5 &§.¡.Ó"2Ó3‰CÜ˜¤Ô)Ø‰Cä˜6Ó"ˆCÙÜÐ3Ó4Ð4Ø�zŠzØ×)Ñ)Ó+ˆHÜ˜5 (Ó+ˆCØ�‰ØØ#ØØ!ØØØØ+Øð ó 
ð 
	r)   r  rç   rJ  rÅ  ræ   r7  rô  c	                 ót   — | j                  |||¬«      }	t        |«      sy|	j                  d|||||¬«      }
|
S )zÔCreate a new PDF page and insert some text.

        Notes:
            Function combining pymupdf.Document.new_page() and pymupdf.Page.insert_text().
            For parameter details see these methods.
        )rÇ  rJ  rÅ  r   )é2   r»  )rç   ræ   r7  rô  )Únew_pager%  r  )r  rÇ  r   rç   rJ  rÅ  ræ   r7  rô  rÅ   r’   s              r(   Úinsert_pagezDocument.insert_pageã  sP   € ð" �|‰| ¨5¸ˆ|Ó@ˆÜ�DŒzØØ×ÑØØØØØØð ó 
ˆð ˆ	r)   )r@  rA  rB  rE  rg  r�  r�  rš  rž  rŸ  Ú_gmapc                óÊ  — | j                   s| j                  rt        d«      ‚| j                  |j                  k(  rt        d«      ‚|}|dk  r| j                  }| j                  }|j                  }|}|}|}t        |d«      }t        ||dz
  «      }|dk  r|dz
  }t        ||dz
  «      }|dk  r|}t        ||«      }t        |«      |
cxkD  rdkD  ron nlt        j                  j                  |j                  «      }|sd}t        j                  j                  | j                  «      }|sd}t        d|›d|›d�«       |j                  }| j                  j                  |d	«      }|€t        | «      }|| j                  |<   t         r*t#        | j$                  |j$                  |||||||
||«       nXt'        | «      }t'        |«      }|j(                  r|j(                  st+        d
«      ‚t-        |«       t/        |||||||||
|«
       | j1                  «        |r| j3                  ||||¬«       |r| j5                  ||||||	¬«       |dk(  rd	| j                  |<   y	y	)a½  Insert a page range from another PDF.

        Args:
            docsrc: PDF to copy from. Must be different object, but may be same file.
            from_page: (int) first source page to copy, 0-based, default 0.
            to_page: (int) last source page to copy, 0-based, default last page.
            start_at: (int) from_page will become this page number in target.
            rotate: (int) rotate copied pages, default -1 is no change.
            links: (int/bool) whether to also copy links.
            annots: (int/bool) whether to also copy annotations.
            widgets: (int/bool) whether to also copy form fields.
            join_duplicates: (int/bool) join or rename duplicate widget names.
            show_progress: (int) progress message interval, 0 is no messages.
            final: (bool) indicates last insertion from this source PDF.
            _gmap: internal use only

        Copy sequence reversed if from_page > to_page.r  z'source and target cannot be same objectr   r   z
memory PDFzInserting 'z' at 'r×   Nzsource or target not a PDF)r@  rA  rB  )r@  rA  rB  rš  )r±   rî  r²   r	  rÂ  rÔ  Úminr6   rb   r	   Úbasenamer   rp   rñ  r7   ÚGraftmapr  Úextra_FzDocument_insert_pdfr³   r½   r»   rœ  r>  ÚJM_merge_rangerD  rk  rÊ  )r'   Údocsrcr@  rA  rB  rE  rg  r�  r�  rš  rž  rŸ  r©  r^  ÚoutCountr¬  re  r©  ÚinnameÚoutnameÚisrtÚpdfoutÚpdfsrcs                          r(   r¡  zDocument.insert_pdf  sR  € ðL �>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø�>‰>˜V×-Ñ-Ò-ÜÐFÓGÐGØˆØ�Š6Ø—‘ˆBØ—?‘?ˆØ×$Ñ$ˆð ˆØˆØˆô ��Q‹ZˆÜ��X ‘\Ó"ˆà�Š6Ø˜A‘ˆBÜ��X ‘\Ó"ˆà�Š6ØˆBÜ��XÓˆäˆv‹;˜Ô*¨Õ*Ü—W‘W×%Ñ% f§k¡kÓ2ˆFÙØ%�Ü—g‘g×&Ñ& t§y¡yÓ1ˆGÙØ&�Ý²ºÐ@ÔAð ×ÑˆØ—‘×"Ñ" 4¨Ó.ˆØˆ=ä˜T“NˆEØ#(ˆD�N‰N˜4Ñ åä'Ø—I‘IØ—K‘KØØØØØØØ!ØØõô & dÓ+ˆFÜ% fÓ-ˆFà×$Ò$¨F×,=Ò,=ÜÐ!=Ó>Ð>Ü˜VÔ$Ü˜6 6¨2¨r°2°v¸uÀfÈmÐ]bÔcð 	×ÑÔÙà�N‰N˜6¨R¸ÀbˆNÔIÙØ×Ñ˜V U°bÀ"ÈrÐcrÐÔsØ�AŠ:Ø#'ˆD�N‰N˜4Ò ð r)   c                 ól   — t        | d¬«      }|j                  syt        j                  |«      }|rdS dS )Nr   r  FT)r½   r»   r�   Úpdf_has_unsaved_changes©r'   rF  r  s      r(   Úis_dirtyzDocument.is_dirtyx  s5   € ä˜t¨aÔ0ˆØ�~Š~ØÜ×)Ñ)¨#Ó.ˆÙˆtÐ#˜eÐ#r)   c                 ó`   — t        | d¬«      }|j                  rt        j                  |«      S y)z9
        Check whether we have a linearized PDF.
        r   r  F)r½   r»   r�   Úpdf_doc_was_linearizedr›  s     r(   Úis_fast_webaccesszDocument.is_fast_webaccess€  s+   € ô
 ˜t¨aÔ0ˆØ�>Š>Ü×/Ñ/°Ó4Ð4Ør)   c                 óˆ  — t        | d¬«      }|j                  syd}	 t        j                  t        j                  |«      t        j
                  t        j                  t        j                  «      }t        j                  |«      rt        j                  |«      }|dk\  r|S y# t        $ r t        r
t        «        Y yw xY w)z Either False or PDF field count.r   r  Fr…  )r½   r»   r�   r  r   ÚPDF_ENUM_NAME_RootÚPDF_ENUM_NAME_AcroFormÚPDF_ENUM_NAME_Fieldsrv  r‰  re   r÷   rt   )r'   rF  rö  Úfieldss       r(   rª  zDocument.is_form_pdfŠ  sª   € ô ˜t¨aÔ0ˆØ�~Š~ØØˆð	Ü×(Ñ(Ü×%Ñ% cÓ*Ü×,Ñ,Ü×0Ñ0Ü×.Ñ.ó	ˆFô ×!Ñ! &Ô)Ü×+Ñ+¨FÓ3�ð �AŠ:ØˆLØøô ò 	Ý#¬Ô(8Ùð	ús   žA?B% Â%CÃ Cc                 ó®   — t        | j                  t        j                  «      ryt        j                  | j                  j
                  «      rd}|S d}|S )zCheck for PDF.TF)r<   r³   r�   rµ   Úll_pdf_specificsr»   rð  s     r(   rÌ  zDocument.is_pdf¡  sM   € ô �d—i‘i¤×!2Ñ!2Ô3Øô
 ×!Ñ! $§)¡)×"6Ñ"6Ô7ØˆCð ˆ
ð ˆCØˆ
r)   c                 ól   — | j                   rt        d«      ‚t        t        j                  | «      «      S )z Check if document is layoutable.r­   )r±   r²   r%  r�   r  r-   s    r(   Úis_reflowablezDocument.is_reflowable°  s-   € ð �>Š>ÜÐ.Ó/Ð/Ü”E×3Ñ3°DÓ9Ó:Ð:r)   c                 óh   — t        | d¬«      }|j                  syt        j                  |«      }|ryy)zCheck whether PDF was repaired.r   r  FT)r½   r»   r�   Úpdf_was_repairedr¹  s      r(   Úis_repairedzDocument.is_repaired·  s3   € ô ˜t¨aÔ0ˆØ�~Š~ØÜ×"Ñ" 3Ó'ˆÙØØr)   c                 óè   — | j                   s| j                  rt        d«      ‚d}d}t        | «      }t	        j
                  |«      }t	        j                  |«      }t        |«      t        |«      dœS )z(Show if undo and / or redo are possible.r  r   )ÚundoÚredo)r±   rî  r²   r½   r�   Úpdf_can_undoÚpdf_can_redor%  )r'   rË  rÌ  rF  s       r(   Újournal_can_dozDocument.journal_can_doÂ  sd   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<ØˆØˆÜ˜tÓ$ˆÜ×!Ñ! #Ó&ˆÜ×!Ñ! #Ó&ˆÜ˜T›
¬D°«JÑ7Ð7r)   c                 óŠ   — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«       y)zActivate document journalling.r  N)r±   rî  r²   r½   r�   Úpdf_enable_journalr›  s     r(   Újournal_enablezDocument.journal_enableÍ  s5   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ× Ñ  Õ%r)   c                 óª   — | j                   s| j                  rt        d«      ‚t        | «      }|j                  xr |j                  j
                  }|S )z Check if journalling is enabled.r  )r±   rî  r²   r½   r»   Újournal)r'   rF  Úenableds      r(   Újournal_is_enabledzDocument.journal_is_enabledÔ  sD   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆØ—.‘.Ò; S§^¡^×%;Ñ%;ˆØˆr)   c                 óh  — | j                   s| j                  rt        d«      ‚t        | «      }t	        |t
        «      rt        j                  ||«       n6t        |«      }t        j                  |«      }t        j                  ||«       |j                  j                  st        dt        «       yy)zLoad a journal from a file.r  z!Journal and document do not matchN)r±   rî  r²   r½   r<   rÙ   r�   Úpdf_load_journalr  rF  Úpdf_deserialise_journalr»   rÔ  rž  rŸ  )r'   rd   rF  r  Ústms        r(   Újournal_loadzDocument.journal_loadÜ  s‰   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ�h¤Ô$Ü×"Ñ" 3¨Õ1ä$ XÓ.ˆCÜ×&Ñ& sÓ+ˆCÜ×)Ñ)¨#¨sÔ3Ø�~‰~×%Ò%ÜÐ8Ô:NÕOð &r)   c                 óŽ   — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  ||«      }|S )z#Show operation name for given step.r  )r±   rî  r²   r½   r�   Úpdf_undoredo_step)r'   rÑ  rF  r   s       r(   Újournal_op_namezDocument.journal_op_nameê  s>   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×&Ñ& s¨DÓ1ˆØˆr)   c                 óš   — | j                   s| j                  rt        d«      ‚d}t        | «      }t	        j
                  |«      \  }}||fS )zShow journalling state.r  r   )r±   rî  r²   r½   r�   Úpdf_undoredo_state)r'   ÚstepsrF  r’   s       r(   Újournal_positionzDocument.journal_positionò  sJ   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<ØˆÜ˜tÓ$ˆÜ×,Ñ,¨SÓ1‰	ˆˆEØ�5ˆyÐr)   c                 óŠ   — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«       y)zMove forward in the journal.r  T)r±   rî  r²   r½   r�   Úpdf_redor›  s     r(   Újournal_redozDocument.journal_redoû  ó6   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ�‰�sÔØr)   c                 ó  — | j                   s| j                  rt        d«      ‚t        | «      }t	        |t
        «      rt        j                  ||«       yt        |«      }t        j                  ||«       |j                  «        y)zSave journal to a file.r  N)r±   rî  r²   r½   r<   rÙ   r�   Úpdf_save_journalÚJM_new_output_fileptrÚpdf_write_journalÚfz_close_output)r'   rd   rF  Úouts       r(   Újournal_savezDocument.journal_save  sg   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ�h¤Ô$Ü×"Ñ" 3¨Õ1ä'¨Ó1ˆCÜ×#Ñ# C¨Ô-Ø×ÑÕ!r)   c                 óþ   — | j                   s| j                  rt        d«      ‚t        | «      }|j                  j
                  st        d«      ‚|rt        j                  ||«       yt        j                  |«       y)zBegin a journalling operation.r  zJournalling not enabledN)
r±   rî  r²   r½   r»   rÔ  rÍ   r�   Úpdf_begin_operationÚpdf_begin_implicit_operation)r'   r   rF  s      r(   Újournal_start_opzDocument.journal_start_op  sa   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆØ�~‰~×%Ò%ÜÐ 9Ó:Ð:ÙÜ×%Ñ% c¨4Õ0ä×.Ñ.¨sÕ3r)   c                 óŠ   — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«       y)zEnd a journalling operation.r  N)r±   rî  r²   r½   r�   Úpdf_end_operationr›  s     r(   Újournal_stop_opzDocument.journal_stop_op  s5   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×Ñ Õ$r)   c                 óŠ   — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«       y)zMove backwards in the journal.r  T)r±   rî  r²   r½   r�   Úpdf_undor›  s     r(   Újournal_undozDocument.journal_undo"  ræ  r)   c                 ó²   — t        | d¬«      }|j                  syt        j                  |«      }|t        j                  k(  ryt        j
                  |«      S )zDocument language.r   r  N)r½   r»   r�   Úpdf_document_languager  r  )r'   rF  r  s      r(   r  zDocument.language*  sL   € ô ˜t¨aÔ0ˆØ�~Š~ØÜ×*Ñ*¨3Ó/ˆØ”5×&Ñ&Ò&ØÜ×2Ñ2°4Ó8Ð8r)   c                 óž   — | j                   rt        d«      ‚t        j                  | j                  «      }|j
                  |j                  fS )z Id (chapter, page) of last page.r­   )r±   r²   r�   Úfz_last_pager³   rÆ  rÅ   )r'   Úlast_locs     r(   Úlast_locationzDocument.last_location5  s@   € ð �>Š>ÜÐ.Ó/Ð/Ü×%Ñ% d§i¡iÓ0ˆØ×Ñ §¡Ð.Ð.r)   c                 ó�  — t        | «      }t        j                  «       }t        j                  |«      }g }t	        |«      D ]�  }t        j
                  |||«       |j                  dk(  rd}n|j                  dk(  rd}nd}||j                  |j                  ||j                  |j                  dœ}|j                  |«       Œƒ |S )z-Show OC visibility status modifiable by user.r   Úcheckboxr   Úradioboxrl  )r8  r   Údepthr·   rv  Úlocked)r½   r�   ÚPdfLayerConfigUiÚpdf_count_layer_config_uir8  Úpdf_layer_config_ui_infor·   r   r  Úselectedr  ri   )r'   rF  r
  rC   r’   rL  rG  rA   s           r(   Úlayer_ui_configszDocument.layer_ui_configs=  s±   € ä˜tÓ$ˆÜ×%Ñ%Ó'ˆÜ×+Ñ+¨SÓ1ˆØˆÜ�q–ˆAÜ×*Ñ*¨C°°DÔ9Ø�y‰y˜AŠ~Ø"‘Ø—‘˜a’Ø"‘à�àØ ŸI™IØ!ŸZ™ZØ!ØŸ-™-Ø"Ÿk™kñˆDð �I‰I�d�Oð! ð" ˆ	r)   c                 óÔ  — | j                   s| j                  rt        d«      ‚| j                  }t	        j
                  |«      sy|}|}t        |«      }t	        j                  |«      s2|j                  |j                  z
  }|j                  |j                  z
  }|dk  s|dk  rt        d«      ‚t	        j                  ||||«       | j                  «        | j                  «        y)z Re-layout a reflowable document.r  Nr‹  zbad page size)r±   rî  r²   r³   r�   r  rí  rœ  r÷  rø  rù  rú  r  rD  r  )	r'   rä   rJ  rÅ  rç   r  r   r¶  r  s	            r(   ÚlayoutzDocument.layoutV  s¼   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø�i‰iˆÜ×.Ñ.°Ô4ØØˆØˆÜ˜DÓ!ˆÜ×(Ñ(¨Ô+Ø—‘�q—t‘t‘ˆAØ—‘�q—t‘t‘ˆAØ�Š8�q˜C’xÜ˜oÓ.Ð.Ü× Ñ  # q¨!¨XÔ6à×ÑÔØ�‰�r)   c                 ó(  — | j                   s| j                  rt        d«      ‚|€d}|| vrt        d«      ‚t        |«      t        u r!|dk  r| j
                  }|dk  r||z  }|dk  rŒt        |t        «      r!t        j                  | j                  |«      }n&|\  }}t        j                  | j                  ||«      }t        || «      }d|_        | |_        || j                  t        |«      <   t!        j"                  «       |_        ||_        |S )z¤Load a page.

        'page_id' is either a 0-based page number or a tuple (chapter, pno),
        with chapter number and page number within that chapter.
        r  r   zpage not in documentT)r±   rî  r²   r·   r3   rÂ  r<   r�   Úfz_load_pager³   Úfz_load_chapter_pagerÁ   rÞ   rÖ   rõ  r&  rò  rô  r%  r8  )r'   Úpage_idÚnprÅ   rÆ  Úpagenumrÿ   s          r(   rç  zDocument.load_pagej  sû   € ð �>Š>˜T×.Ò.ÜÐ;Ó<Ð<Øˆ?ØˆGØ˜$ÑÜÐ3Ó4Ð4Ü�‹=œCÑ G¨a¢KØ—‘ˆBØ˜A’+Ø˜2‘�ð ˜A“+ä�gœsÔ#Ü×%Ñ% d§i¡i°Ó9‰Dà&ÑˆG�WÜ×-Ñ-¨d¯i©i¸À'ÓJˆDÜ�4˜ÓˆàˆŒØˆŒ
Ø#&ˆ�‰œ˜3›Ñ Ü!×5Ñ5Ó7ˆŒØˆŒ
Øˆ
r)   c                 óB  — | j                   rt        d«      ‚| j                  }t        j                  dd«      }t        j
                  |«      }|dk  r||z  }|dk  rŒ||k\  rt        t        «      ‚t        j                  ||«      }|j                  |j                  fS )zConvert pno to (chapter, page).r­   r…  r   )
r±   r²   r³   r�   Úfz_make_locationr'  r(  Úfz_location_from_page_numberrÆ  rÅ   )r'   rÇ  Úthis_docrÅ  rÂ  s        r(   Úlocation_from_page_numberz"Document.location_from_page_numberˆ  s’   € à�>Š>ÜÐ.Ó/Ð/Ø—9‘9ˆÜ×$Ñ$ R¨Ó,ˆÜ×)Ñ)¨(Ó3ˆ
Ø�AŠgØ�:ÑˆCð �A‹gà�*ÒÜœnÓ-Ð-Ü×0Ñ0°¸3Ó?ˆØ�{‰{˜CŸH™HÐ$Ð$r)   c                 óà   — | j                   s| j                  rt        d«      ‚t        j                  |Ž }t        j
                  | j                  j                  |j                  «       «      }|S )z.Make a page pointer before layouting document.r  )	r±   rî  r²   r�   Ú
FzLocationÚll_fz_make_bookmark2r³   r»   rî  )r'   rÅ  Úmarks      r(   Úmake_bookmarkzDocument.make_bookmark–  sT   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü×Ñ Ð$ˆÜ×)Ñ)¨4¯9©9×+?Ñ+?ÀÇÁÃÓPˆØˆr)   c                 óú  — | j                  «       }|dk(  ry| j                  |d«      }|d   dk(  ri S |d   dk(  r3t        |d   j                  «       d   «      }| j	                  |d¬«      }n|d   d	k(  r|d   }nd}|�|dd
 dk(  r|dd dk(  si S ddddœ}|d
d j                  d«      }|dd D ]!  }	 |j                  «       \  }}|dk(  sŒd||<   Œ# |S # t
        $ r t        dkD  r
t        «        |cY c S w xY w)zReturn the PDF MarkInfo value.r   NÚMarkInfor¥  rý   r   Tre  r4   r   ú<<rÁ  ú>>F©ÚMarkedÚUserPropertiesÚSuspectsÚ/Útrue)rg  rÐ  r3   r5   rh  re   r÷   rt   )r'   rý   r’   rÿ   ÚvalidrD   r  r¥   s           r(   ÚmarkinfozDocument.markinfož  s3  € ð ×ÑÓ!ˆØ�1Š9ØØ×Ñ˜t ZÓ0ˆØˆa‰5�FŠ?ØˆIØˆa‰5�FŠ?Ü�r˜!‘u—{‘{“} QÑ'Ó(ˆDØ×"Ñ" 4°DÐ"Ó9‰CØ�‰U�fŠ_Ø�Q‘%‰CàˆCØˆ;˜s 2 A˜w¨$š°3°r°s°8¸tÒ3CØˆIØ °EÀuÑMˆØ�!�Bˆi�o‰o˜cÓ"ˆØ�Q�R“ˆAðØŸW™W›Y‘
��Uð ˜‹Ø!��c’
ð ð ˆøô ò Ü'¨!Ò+´Ô0@Ø”ðús   Â5CÃC:Ã9C:c                 óÚ   — | j                   rt        d«      ‚t        | «      }|t        |«      vs|t        d|«      vrt        d«      ‚d}d}|dk(  r|dz
  }d}| j	                  ||||«      S )z¡Move a page within a PDF document.

        Args:
            pno: source page number.
            to: put before this page, '-1' means after last page.
        r­   r…  rË  r   r   r°  r±  s         r(   Ú	move_pagezDocument.move_page¼  s}   € ð �>Š>ÜÐ.Ó/Ð/Ü˜“Yˆ
Ø”u˜ZÓ(Ñ(¨B´e¸BÀ
Ó6KÑ,KÜÐ1Ó2Ð2ØˆØˆØ�Š8Ø˜a‘ˆBØˆFà×#Ñ# C¨¨V°TÓ:Ð:r)   c                 ó   — | j                   S r+   rš  r-   s    r(   r   zDocument.nameÐ  s   € à�z‰zÐr)   c                 ó¸  — | j                   syt        | «      }d}d}t        j                  t        j                  |«      d«      }t        j
                  ||«      }t        j                  |«      rt        j                  |«      }|r&t        j                  ||t        j                  «       n%t        j                  ||t        j                  «       |€|dk\  S |S )z"Get/set the NeedAppearances value.Nr…  ÚNeedAppearancesr¡  r   )rª  r½   r�   r£  r   rë   Úpdf_is_boolÚpdf_to_boolrn  ÚPDF_TRUEÚ	PDF_FALSE)r'   r¥   rF  ÚoldvalÚappkeyÚformÚapps          r(   Úneed_appearanceszDocument.need_appearancesÔ  s¸   € à×ÒØä˜tÓ$ˆØˆØ"ˆä×"Ñ"Ü×!Ñ! #Ó&Øóˆô ×!Ñ! $¨Ó/ˆÜ×Ñ˜SÔ!Ü×&Ñ& sÓ+ˆFÙÜ×Ñ  f¬e¯n©nÕ=ä×Ñ  f¬e¯o©oÔ>Øˆ=Ø˜Q‘;ÐØˆr)   c                 óò   — | j                   rt        d«      ‚t        | j                  t        j
                  «      r| j                  n| j                  j                  «       }t	        j                  |«      }|S )zIndicate password required.r­   )r±   r²   r<   r³   r�   r´   r¶   Úfz_needs_password)r'   r¸   rE   s      r(   r
  zDocument.needs_passì  sU   € ð �>Š>ÜÐ.Ó/Ð/Ü *¨4¯9©9´e×6FÑ6FÔ G�4—9’9ÈTÏYÉYÏ_É_ÓM^ˆÜ×%Ñ% xÓ0ˆØˆ
r)   c                 ó4   — | j                  |||¬«       | |   S )aX  Create and return a new page object.

        Args:
            pno: (int) insert before this page. Default: after last page.
            width: (float) page width in points. Default: 595 (ISO A4 width).
            height: (float) page height in points. Default 842 (ISO A4 height).
        Returns:
            A pymupdf.Page object.
        ©rJ  rÅ  )rR  )r  rÇ  rJ  rÅ  s       r(   r§  zDocument.new_pageõ  s   € ð 	�‰�S ¨fˆÔ5Ø�3‰xˆr)   c                 óÄ  — | j                   s| j                  rt        d«      ‚t        |«      t        u rd|f}|| vrt        d«      ‚t        |«      | j                  k(  ryt        | «      }|d   }t        |t        «      st        t        t        «       |}|d   }|}t        j                  ||«      }t        j                  ||«      }|j                  |j                   fS )z!Get (chapter, page) of next page.r  r   úpage id not in documentr,   r   )r±   rî  r²   r·   r3   r¢   rý  r¹   r<   rž  ÚMSG_BAD_PAGEIDÚPyExc_ValueErrorr�   r  Úfz_next_pagerÆ  rÅ   )r'   r  r  rÿ   rÆ  rÇ  rÅ  Únext_locs           r(   Únext_locationzDocument.next_location  sÏ   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü�‹=œCÑØ˜'�lˆGØ˜$ÑÜÐ6Ó7Ð7Ü�‹>˜T×/Ñ/Ò/ØÜ" 4Ó(ˆØ�q‰kˆÜ˜#œsÔ#Ü”NÔ$4Ô5ØˆØ�q‰kˆØˆÜ×$Ñ$ W¨cÓ2ˆÜ×%Ñ% x°Ó5ˆØ×Ñ §¡Ð.Ð.r)   c                 óÐ  — t         r t        j                  | j                  |«      S t	        | j                  t
        j                  «      r,t        j                  | j                  «      }| j                  }n*t        j                  | j                  «      }t        | «      }|dk  r||z  }|dk  rŒ||kD  rt        t        «      ‚t        j                  ||«      }t        |«      }|S r…   )r  r   r�  r³   r<   r�   rµ   r&  r'  r½   r²   r(  r)  ÚJM_get_annot_xref_list)r'   rC   rÂ  r  rZ  r�  s         r(   r�  zDocument.page_annot_xrefs  s·   € ÝÜ×)Ñ)¨4¯9©9°aÓ8Ð8ä�d—i‘i¤×!2Ñ!2Ô3Ü×.Ñ.¨t¯y©yÓ9ˆJØŸ9™9‰Lä×-Ñ-¨d¯i©iÓ8ˆJÜ+¨DÓ1ˆLØ�!ŠeØ�‰OˆAð �!‹eàˆzŠ>ÜœnÓ-Ð-Ü×,Ñ,¨\¸1Ó=ˆÜ'¨Ó1ˆØˆr)   c                 ó"  — | j                   rt        d«      ‚t        r| j                  | «      S t	        | j
                  t        j                  «      rt        j                  | j
                  «      S t        j                  | j
                  «      S )zNumber of pages.r­   )
r±   r²   r  r  r<   r³   r�   r´   r'  r&  r-   s    r(   rÂ  zDocument.page_count.  si   € ð �>Š>ÜÐ.Ó/Ð/ÝØ×#Ñ# DÓ)Ð)Ü�t—y‘y¤%×"2Ñ"2Ô3Ü×'Ñ'¨¯©Ó3Ð3ä×(Ñ(¨$¯)©)Ó4Ð4r)   c                 óF  — | j                   rt        d«      ‚| j                  }t        j                  |«      }|}|dk  r||z  }|dk  rŒt        | «      }||k\  rt        t        «      ‚t        j                  ||«      }t        |«      }t        |«      }t        |«      }|S )z2Get CropBox of page number (without loading page).r­   r   )r±   r²   r³   r�   r'  r½   r(  r)  Ú
JM_cropboxrT  r  )	r'   rÇ  r  rÂ  rC   rF  r/  Úcropboxrÿ   s	            r(   Úpage_cropboxzDocument.page_cropbox:  sœ   € à�>Š>ÜÐ.Ó/Ð/Ø—9‘9ˆÜ×)Ñ)¨8Ó4ˆ
ØˆØ�!ŠeØ�‰OˆAð �!‹eä˜tÓ$ˆØ�
Š?ÜœnÓ-Ð-Ü×+Ñ+¨S°!Ó4ˆÜ˜WÓ%ˆÜ˜gÓ&ˆä�3‹iˆàˆ
r)   c                 óü   — t        |«      t        u r | j                  }|dk  r||z  }|dk  rŒd|f}|| vrt        d«      ‚|\  }}t	        j
                  ||«      }t	        j                  | j                  |«      }|S )z&Convert (chapter, pno) to page number.r   r9  )r·   r3   rÂ  r²   r�   r  Úfz_page_number_from_locationr³   )r'   r  r  rÆ  rÇ  rÅ  Úpage_ns          r(   Úpage_number_from_locationz"Document.page_number_from_locationN  sƒ   € ä�‹=œCÑØ—‘ˆBØ˜A’+Ø˜2‘�ð ˜A“+à˜'�lˆGØ˜$ÑÜÐ6Ó7Ð7Ø‰ˆ�Ü×$Ñ$ g¨sÓ3ˆÜ×3Ñ3°T·Y±YÀÓDˆØˆr)   c                 óv  — t         r t        j                  | j                  |«      S | j                  rt        d«      ‚t        j                  | j                  «      }|}|dk  r||z  }|dk  rŒt        | «      }d}||k\  rt        t        «      ‚t        j                  t        j                  ||«      «      }|S )zGet xref of page number.r­   r   )r  r   r[  r³   r±   r²   r�   r'  r½   r(  rî   r)  )r'   rÇ  rÂ  rC   rF  rý   s         r(   r[  zDocument.page_xref\  s¢   € åÜ—?‘? D§I¡I¨sÓ3Ð3Ø�>Š>ÜÐ.Ó/Ð/Ü×)Ñ)¨$¯)©)Ó4ˆ
ØˆØ�!ŠeØ�‰OˆAð �!‹eä˜tÓ$ˆØˆØ�
Š?ÜœnÓ-Ð-Ü×Ñ¤× 9Ñ 9¸#¸qÓ AÓBˆØˆr)   c                 ó†   — | j                  «       }|dk(  ry| j                  |d«      }|d   dk(  ry|d   dk(  r|d   dd S y)z)Return the PDF PageLayout value.
        r   NÚ
PageLayoutr¥  Ú
SinglePager   r   ©rg  rÐ  ©r'   rý   r’   s      r(   Ú
pagelayoutzDocument.pagelayoutm  sZ   € ð ×ÑÓ!ˆØ�1Š9ØØ×Ñ˜t \Ó2ˆØˆa‰5�FŠ?ØØˆa‰5�FŠ?Ø�a‘5˜˜�9ÐØr)   c                 ó†   — | j                  «       }|dk(  ry| j                  |d«      }|d   dk(  ry|d   dk(  r|d   dd S y)z'Return the PDF PageMode value.
        r   NÚPageModer¥  ÚUseNoner   r   rN  rO  s      r(   ÚpagemodezDocument.pagemode{  sZ   € ð ×ÑÓ!ˆØ�1Š9ØØ×Ñ˜t ZÓ0ˆØˆa‰5�FŠ?ØØˆa‰5�FŠ?Ø�a‘5˜˜�9ÐØr)   r‚  rÐ  rÑ  c              #   ój  K  — | j                   sy|xs d}|dk  r|| j                   z  }|dk  rŒ|t        | j                   «      vrt        d«      ‚|�|| j                   k  r|n| j                   }|dk(  rt        d«      ‚|€
||kD  rd}nd}t        |||«      D ]  }| j                  |«      –— Œ y­w)z}Return a generator iterator over a page range.

        Arguments have the same meaning as for the range() built-in.
        Nr   zbad start page numberzarg 3 must not be zeror…  r   )rÂ  r8  r²   rç  )r'   r‚  rÐ  rÑ  rÇ  s        r(   rc  zDocument.pages�  sÀ   è ø€ ð
 �ŠØà’
˜ˆØ�aŠiØ�T—_‘_Ñ$ˆEð �a‹iàœ˜dŸo™oÓ.Ñ.ÜÐ4Ó5Ð5ð Ð'¨D°D·O±OÒ,C‰tÈÏÉˆð �1Š9ÜÐ5Ó6Ð6Øˆ<Ø�tŠ|Ø‘à�ä˜  dÖ+ˆCØ—>‘> #Ó&Ó'ñ ,ùs   ‚-B3°BB3c                 óÎ   — t        | d¬«      }d}|j                  s|S t        j                  t        j                  |«      t        d«      «      }t        j                  |«      }|S )zGet xref of PDF catalog.r   r  r  )r½   r»   r�   ró   r   rô   rî   )r'   rF  rý   r,  s       r(   rg  zDocument.pdf_catalog¬  sV   € ä˜t¨aÔ0ˆØˆØ�~Š~ØˆKÜ×!Ñ!¤%×"3Ñ"3°CÓ"8¼(À6Ó:JÓKˆÜ×Ñ Ó%ˆØˆr)   c                 ó*   — | j                  d||¬«      S )zGet PDF trailer as a string.r…  )rf  ry  )rh  )r'   rf  ry  s      r(   r   zDocument.pdf_trailer¶  s   € à×Ñ ¨zÀÐÓGÐGr)   c                 ó`  — | j                   ry| j                  }t        j                  |«      }|j                  rt        j
                  |«      S d}t        j                  |t        j                  «      s|t        j                  z  }t        j                  |t        j                  «      s|t        j                  z  }t        j                  |t        j                  «      s|t        j                  z  }t        j                  |t        j                  «      s|t        j                  z  }|S )zDocument permissions.r   l   üÿ )rî  r³   r�   r¢  r»   Úpdf_document_permissionsÚfz_has_permissionÚFZ_PERMISSION_PRINTÚPDF_PERM_PRINTÚFZ_PERMISSION_EDITÚPDF_PERM_MODIFYÚFZ_PERMISSION_COPYÚPDF_PERM_COPYÚFZ_PERMISSION_ANNOTATEÚPDF_PERM_ANNOTATE)r'   r  rF  Úperms       r(   rý  zDocument.permissionsº  sç   € ð ×ÒØØ�Y‰YˆÜ×1Ñ1°#Ó6ˆð �>Š>Ü×1Ñ1°#Ó6Ð6ð ˆä×&Ñ& s¬E×,EÑ,EÔFØœ%×.Ñ.Ñ.ˆDÜ×&Ñ& s¬E×,DÑ,DÔEØœ%×/Ñ/Ñ/ˆDÜ×&Ñ& s¬E×,DÑ,DÔEØœ%×-Ñ-Ñ-ˆDÜ×&Ñ& s¬E×,HÑ,HÔIØœ%×1Ñ1Ñ1ˆDØˆr)   c                 óB  — | j                   s| j                  rt        d«      ‚t        |«      t        u rd|f}|| vrt        d«      ‚|dk(  ry|\  }}t        j                  ||«      }t        j                  | j                  |«      }|j                  |j                  fS )z%Get (chapter, page) of previous page.r  r   r9  rº  r,   )r±   rî  r²   r·   r3   r�   r  Úfz_previous_pager³   rÆ  rÅ   )r'   r  rÆ  rÇ  rÅ  Úprev_locs         r(   Úprev_locationzDocument.prev_locationÓ  s™   € ð �>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü�‹=œCÑØ˜'�lˆGØ˜$ÑÜÐ6Ó7Ð7Ø�vÒØØ‰ˆ�Ü×$Ñ$ W¨cÓ2ˆÜ×)Ñ)¨$¯)©)°SÓ9ˆØ×Ñ §¡Ð.Ð.r)   c                 ó,  — i }|j                   }|j                  j                  «       D ]
  \  }}|||<   Œ |j                  j                  j
                  }|j                  j                  «       }d|_        |j                  «        d}t        j                  d«       | j                  |«      }|j                  «       D ]  \  }}||   }||j                  |<   Œ |dk(  r	 |S |j                  j                  «       }	|	|k7  sJ d|›d|d›d|	d›�«       ‚|S )zMake a fresh copy of a page.Néd   r   z	refs_old=z m_internal_old=z#xz m_internal_new=)r8  r%  r@   r³   r»   Úrefsr$  rß   rø   Ústore_shrinkrç  )
r'   rÅ   r  rÇ  r�  rD   Úrefs_oldÚm_internal_oldrÎ   Úm_internal_news
             r(   Úreload_pagezDocument.reload_pageã  s%  € àˆ
Ø�k‰kˆØ×$Ñ$×*Ñ*Ö,‰DˆAˆqØˆJ�qŠMð -ð6 —9‘9×'Ñ'×,Ñ,ˆØŸ™×3Ñ3Ó5ˆàˆŒ	Ø�‰ŒØˆÜ×Ñ˜3ÔØ�~‰~˜cÓ"ˆð ×$Ñ$Ö&‰DˆAˆqØ˜q‘MˆEà"'ˆD×Ñ˜QÒð 'ð �qŠ=ð
 ð ˆð "ŸY™Y×7Ñ7Ó9ˆNØ! ^Ò3ð MØ �x�kÐ!2 >°2Ð"6Ð6G¸ÈÐ7KÐLóMÐ3àˆr)   c                 ó"  — |s|ryy	 t        j                  | j                  |«      \  }}}|r|j                  |j                  f||fS t        j                  | j                  |«      }|||fS # t        $ r t        r
t        «        |rY yY yw xY w)aM  Calculate internal link destination.

        Args:
            uri: (str) some Link.uri
            chapters: (bool) whether to use (chapter, page) format
        Returns:
            (page_id, x, y) where x, y are point coordinates on the page.
            page_id is either page number (if chapters=0), or (chapter, pno).
        )©r…  r…  r   r   )r…  r   r   )	r�   Úfz_resolve_linkr³   re   r÷   rt   rÆ  rÅ   rG  )r'   rM  r¥  rÅ  ÚxpÚyprÇ  s          r(   r‚  zDocument.resolve_link  s”   € ñ ÙØ%Øð	Ü×/Ñ/°·	±	¸3Ó?‰KˆC��Rñ Ø—K‘K §¡Ð*¨B°Ð2Ð2Ü×0Ñ0°·±¸CÓ@ˆØ�B˜ˆ{Ðøô ò 	Ý#¬Ô(8ÙÙ%Ùð		ús   ˆ$A. Á.BÂBc                 ó   — t        |«      }|sdx}}|dkD  r||k\  rt        d«      ‚t        j                  «       }t	        t        |«      «      }|
�s^t        j                  «       }|r?t        j                  |_        t        j                  |_	        ||_
        ||_        ||_        |r‚|r?t        j                  |_        t        j                  |_        ||_        ||_        ||_        |r?t        j                  |_        t        j                  |_        ||_        ||_        ||_        |r…|r?t        j                  |_        t        j                  |_        ||_        ||_        ||_        |rBt        j                  |_        t        j                  |_        ||_        ||_         ||_!        n|
}t	        t        |«      «      }||z
  }|rt        d|› �«      ‚|	r| jE                  d«       tG        | «      }t        jH                  ||«       y)a=  Rewrite images in a PDF document.

        The typical use case is to reduce the size of the PDF by recompressing
        images. Default parameters will convert all images to JPEG where
        possible, using the specified resolutions and quality. Exclude
        undesired images by setting parameters to False.
        Args:
            dpi_threshold: look at images with a larger DPI only.
            dpi_target: change eligible images to this DPI.
            quality: Quality of the recompressed images (0-100).
            lossy: process lossy image types (e.g. JPEG).
            lossless: process lossless image types (e.g. PNG).
            bitonal: process black-and-white images (e.g. FAX)
            color: process colored images.
            gray: process gray images.
            set_to_gray: whether to change the PDF to gray at process start.
            options: (PdfImageRewriterOptions) Custom options for image
                    rewriting (optional). Expert use only. If provided, other
                    parameters are ignored, except set_to_gray.
        r   z0{dpi_target=} must be less than {dpi_threshold=}zInvalid options: r   N)%rÙ   r²   r�   ÚPdfImageRewriterOptionsr¸  rX  ÚFZ_RECOMPRESS_FAXÚbitonal_image_recompress_methodÚFZ_SUBSAMPLE_AVERAGEÚbitonal_image_subsample_methodÚbitonal_image_subsample_toÚ bitonal_image_recompress_qualityÚ!bitonal_image_subsample_thresholdÚFZ_RECOMPRESS_JPEGÚ&color_lossless_image_recompress_methodÚ%color_lossless_image_subsample_methodÚ!color_lossless_image_subsample_toÚ(color_lossless_image_subsample_thresholdÚ'color_lossless_image_recompress_qualityÚ#color_lossy_image_recompress_methodÚ"color_lossy_image_subsample_methodÚ%color_lossy_image_subsample_thresholdÚcolor_lossy_image_subsample_toÚ$color_lossy_image_recompress_qualityÚ%gray_lossless_image_recompress_methodÚ$gray_lossless_image_subsample_methodÚ gray_lossless_image_subsample_toÚ'gray_lossless_image_subsample_thresholdÚ&gray_lossless_image_recompress_qualityÚ"gray_lossy_image_recompress_methodÚ!gray_lossy_image_subsample_methodÚ$gray_lossy_image_subsample_thresholdÚgray_lossy_image_subsample_toÚ#gray_lossy_image_recompress_qualityÚrecolorr½   Úpdf_rewrite_images)r'   Údpi_thresholdÚ
dpi_targetÚqualityÚlossyÚlosslessÚbitonalrô  r¸  Úset_to_grayrõ  Úquality_strÚtemplate_optsÚdir1rª  Údir2Úinvalid_optionsrF  s                     r(   Úrewrite_imageszDocument.rewrite_images8  sÖ  € ôB ˜'“lˆÙØ)*Ð*ˆM˜JØ˜Š>˜j¨MÒ9ÜÐOÓPÐPÜ×5Ñ5Ó7ˆÜ”3�}Ó%Ó&ˆÚÜ×0Ñ0Ó2ˆDÙÜ7<×7NÑ7N�Ô4Ü6;×6PÑ6P�Ô3Ø2<�Ô/Ø8C�Ô5Ø9F�Ô6ÙÙÜBG×BZÑBZ�DÔ?ÜAF×A[ÑA[�DÔ>Ø=G�DÔ:ØDQ�DÔAØCN�DÔ@ÙÜ?D×?WÑ?W�DÔ<Ü>C×>XÑ>X�DÔ;ØAN�DÔ>Ø:D�DÔ7Ø@K�DÔ=ÙÙÜAF×AYÑAY�DÔ>Ü@E×@ZÑ@Z�DÔ=Ø<F�DÔ9ØCP�DÔ@ØBM�DÔ?ÙÜ>C×>VÑ>V�DÔ;Ü=B×=WÑ=W�DÔ:Ø@M�DÔ=Ø9C�DÔ6Ø?J�DÕ<àˆDä”3�t“9‹~ˆØ ™+ˆÙÜÐ0°Ð0AÐBÓCÐCáØ�L‰L˜ŒOÜ˜tÓ$ˆÜ× Ñ   dÕ+r)   c                 ó¦   — | j                   st        d«      ‚t        | j                  «      D ]"  }| j	                  |«      j                  |«       Œ$ y)zÉChange the color component count on all pages.

        Args:
            components: (int) desired color component count, one of 1, 3, 4.

        Invokes the same-named method for all pages.
        rÊ  N)rÌ  r²   r8  rÂ  rç  r“  )r'   Ú
componentsrL  s      r(   r“  zDocument.recolor�  s@   € ð �{Š{Ü˜[Ó)Ð)Ü�t—‘Ö'ˆAØ�N‰N˜1Ó×%Ñ% jÕ1ñ (r)   c                 ó<  ‡	‡
‡— t        | d«      r| j                  S t        | j                  «      D �ci c]  }| j	                  |«      |“Œ c}Šd„ Š
ˆ
ˆfd„Š	ˆ	fd„}t        j                  | «      }t        j                  t        j                  |«      d«      }i }t        j                  d«      }t        j                  ||«      }|j                  «       r	 |||«       t        j                  ||«      }|j                  «       r	 |||«       || _        |S c c}w )af  Convert the PDF's destination names into a Python dict.

        The only parameter is the pymupdf.Document.
        All names found in the catalog under keys "/Dests" and "/Names/Dests" are
        being included.

        Returns:
            A dcitionary with the following layout:
            - key: (str) the name
            - value: (dict) with the following layout:
                * "page":  target page number (0-based). If no page number found -1.
                * "to": (x, y) target point on page - currently in PDF coordinates,
                        i.e. point (0,0) is the bottom-left of the page.
                * "zoom": (float) the zoom factor
                * "dest": (str) only occurs if the target location on the page has
                        not been provided as "/XYZ" or if no page number was found.
            Examples:
            {'__bookmark_1': {'page': 0, 'to': (0.0, 541.0), 'zoom': 0.0},
            '__bookmark_2': {'page': 0, 'to': (0.0, 481.45), 'zoom': 0.0}}

            or

            '21154a7c20684ceb91f9c9adc3b677c40': {'page': -1, 'dest': '/XYZ 15.75 1486 0'}, ...
        Ú_resolved_namesc                 ó¼   — t        j                  d«      }t        j                  |«      }t        j                  || dd«       |j	                  «        t        |«      S )z1Return string version of a PDF object definition.é   r   r   )r�   Úfz_new_bufferÚFzOutputÚpdf_print_objrë  r‹  )rü   ÚbufferÚoutputs      r(   Ú
obj_stringz*Document.resolve_names.<locals>.obj_stringº  sK   € ä×(Ñ(¨Ó-ˆFÜ—^‘^ FÓ+ˆFÜ×Ñ ¨¨Q°Ô2Ø×"Ñ"Ô$Ü'¨Ó/Ð/r)   c                 ó0  •— dddœ}| j                  «       rt        j                  | «      } | j                  «       r	 ‰| «      }n/| j	                  «       r ‰t        j
                  | d«      «      }n|S |j                  dd«      dd }|j                  d«      }|dk  r||d	<   |S |d
| j                  «       }||d
 }||d	<   |j                  d«      rr|d	= |j                  «       dd }t        |«      dk  r |j                  d«       t        |«      dk  rŒ t        t        t        |«      «      }|d   |d   f|d<   |d   |d<   |j!                  d«      r1‰j#                  t%        |j                  «       d   «      d«      |d<   |S t%        |«      |d<   |S )z3Generate value of one item of the names dictionary.r…  rZ   )rÅ   Údestrñ  r¥  rx   r   r"  r¯  Nz/XYZr8  r   r   rH  r   rI  rF  rÅ   )Úpdf_is_indirectr�   r  rv  rg  rë   rÊ  r“   Ústripr2   r5   r6   ri   r¡   rÇ  r\  rÉ  r7   r3   )	rÿ   Ú
templ_dictÚarrayr%  ÚsubvalÚ
array_listr5  r­  Ú
page_xrefss	          €€r(   Ú	get_arrayz)Document.resolve_names.<locals>.get_arrayÂ  s«  ø€ à"$¨bÑ1ˆJØ×"Ñ"Ô$Ü×0Ñ0°Ó5�Ø×ÑÔ!Ù" 3›‘Ø—‘Ô"Ù"¤5×#6Ñ#6°s¸CÓ#@ÓA‘à!Ð!ð —M‘M &¨#Ó.¨q°Ð4ˆEð —*‘*˜S“/ˆCØ�QŠwØ%*�
˜6Ñ"Ø!Ð!à˜4˜C�[×&Ñ&Ó(ˆFØ˜#˜$�KˆEØ!&ˆJ�vÑð ×Ñ Ô'Ø˜vÐ&ð #Ÿ[™[›]¨1¨QÐ/�
ô ˜*“o¨Ò)Ø×%Ñ% cÔ*ô ˜*“o¨Ó)ô œœU JÓ/Ó0�Ø$% a¡D¨!¨A©$ <�
˜4Ñ Ø%& q¡T�
˜6Ñ"ð �‰˜uÔ%Ø%/§^¡^´C¸¿¹»ÀqÑ8IÓ4JÈ2Ó%N�
˜6Ñ"ð Ðô &)¨£[�
˜6Ñ"ØÐr)   c                 ó(  •— t        j                  |«      }t        |«      D ]n  }t        j                  ||«      }t        j                  ||«      }|j                  «       r|j                  «       }nt        d|› d�«       d}|sŒd ‰|«      | |<   Œp y)zyGenerate name resolution items for pdf_dict.

            This may be either "/Names/Dests" or just "/Dests"
            zkey z is no /NameN)r�   rh  r8  rj  ri  r¨  rf  rp   )Ú	dest_dictÚpdf_dictÚ
name_countrL  r  rÿ   Údict_keyr·  s          €r(   Ú	fill_dictz)Document.resolve_names.<locals>.fill_dictò  s‡   ø€ ô ×+Ñ+¨HÓ5ˆJô ˜:Ö&�Ü×,Ñ,¨X°qÓ9�Ü×,Ñ,¨X°qÓ9�Ø—?‘?Ô$Ø"Ÿ™Ó0‘Hä˜d 1 # \Ð2Ô3Ø#�HâÙ*3°C«.�I˜hÒ'ñ 'r)   r  ÚDests)r9   r¥  r8  rÂ  r[  r�   r¢  rë   r   r!  ró   rg  Úpdf_load_name_tree)r'   rL  r½  rF  Úcatalogr¹  ÚdestsÚ	old_destsrS  r·  r­  r¶  s            @@@r(   Úresolve_nameszDocument.resolve_namesœ  s
  ú€ ô2 �4Ð*Ô+Ø×'Ñ'Ð'ä49¸$¿/¹/Ô4JÓKÑ4J¨q�d—n‘n QÓ'¨Ñ*Ð4JÑKˆ
ò	0õ.	ô`	9ô, ×1Ñ1°$Ó7ˆô ×%Ñ%¤e×&7Ñ&7¸Ó&<¸fÓEˆàˆ	ô ×"Ñ" 7Ó+ˆô ×&Ñ& w°Ó6ˆ	Ø× Ñ Ô"Ù�i Ô+ô ×'Ñ'¨¨UÓ3ˆØ×ÑÔÙ�i Ô&à(ˆÔØÐùòK Ls   ³Dc                 óì  — | j                   s| j                  rt        d«      ‚t        |«      t        u rnHt        |d«      rt	        |«      }n0t        |d«      r|j                  }nt        |d«      st        d«      ‚|| j                  k(  r|st        d«      ‚|
r|rt        d«      ‚| j                  dk  rt        d	«      ‚|r&| j                  |k7  s| j                  rt        d
«      ‚|rt        |«      dkD  s|rt        |«      dkD  rt        d«      ‚t        | «      }t        j                  «       }||_        ||_        ||_        ||_        ||_        |	|_        ||_        ||_        |
|_        ||_        ||_        ||_        ||_        ||_        ||_        |�|j9                  |«       n|�|j9                  |«       |�|j;                  |«       ||_        ||_        ||_         d}d|jB                  _"        tG        |«       |dk(  rtI        |«       tK        |t        «      rt        jL                  |||«       ytO        |«      }t        jP                  |||«       |jS                  «        y)z/Save PDF to file, pathlib.Path or file pointer.r  r8   r   Úseekú)filename must be str, Path or file objectz$save to original must be incrementalz3'linear' and 'use_objstms' cannot both be requestedr   zcannot save with zero pageszincremental needs original fileé(   z"password length must not exceed 40Nr   )*r±   rî  r²   r·   rÙ   r9   r   rÂ  r   r6   r½   r�   ÚPdfWriteOptionsÚdo_incrementalÚdo_asciiÚdo_compressÚdo_compress_imagesÚdo_compress_fontsÚdo_decompressÚ
do_garbageÚ	do_prettyÚ	do_linearÚdo_cleanÚdo_sanitizeÚdont_regenerate_idÚdo_appearanceÚ
do_encryptrý  Úopwd_utf8_set_valueÚupwd_utf8_set_valueÚdo_preserve_metadataÚdo_use_objstmsr  r»   r=  ÚJM_embedded_cleanÚJM_ensure_identityr<   Úpdf_save_documentré  Úpdf_write_documentrë  )r'   rd   ró  rô  rõ  rö  r÷  rø  ry  rù  rú  r   Ú
appearancerû  rü  rý  rþ  rÿ  r  r  r  rF  rª  rì  s                           r(   r  zDocument.save  s?  € ð4 �>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü�‹>œSÑ ØÜ�X˜vÔ&Ü˜8“}‰HÜ�X˜vÔ&Ø—}‘}‰HÜ˜ 6Ô*ÜÐHÓIÐIØ�t—y‘yÒ ©ÜÐCÓDÐDÙ‘kÜÐRÓSÐSØ�?‰?˜QÒÜÐ:Ó;Ð;ÙØ�y‰y˜HÒ$¨¯ªÜ Ð!BÓCÐCÙ”s˜7“| bÒ(©H¼¸X»ÈÒ9KÜÐAÓBÐBä˜tÓ$ˆÜ×$Ñ$Ó&ˆØ)ˆÔØˆŒØ"ˆÔØ"0ˆÔØ!.ˆÔØ#ˆÔØ!ˆŒØˆŒØˆŒØˆŒØ ˆÔØ"+ˆÔØ'ˆÔØ$ˆŒØ&ˆÔØÐØ×$Ñ$ XÕ.ØÐ Ø×$Ñ$ WÔ-ØÐØ×$Ñ$ WÔ-Ø$5ˆÔ!Ø)ˆÔØ"4ˆÔàˆØ*+ˆ�‰Ô'Ü˜#ÔØ˜Š>Ü˜sÔ#Ü�h¤Ô$ä×#Ñ# C¨°4Õ8ä'¨Ó1ˆCä×$Ñ$ S¨#¨tÔ4Ø×ÑÕ!r)   c                 óD  — | j                   rt        d«      ‚t        |«      t        u rn<t	        |d«      rt        |«      }n$t	        |d«      r|j
                  }nt        d«      ‚|| j
                  k(  rt        d«      ‚t        | «      }t        j                  ||«       y)z.Save a file snapshot suitable for journalling.zdoc is closedr8   r   rÆ  zcannot snapshot to originalN)	r±   r²   r·   rÙ   r9   r   r½   r�   Úpdf_save_snapshot)r'   rd   rF  s      r(   Úsave_snapshotzDocument.save_snapshotx  s‡   € à�>Š>Ü˜_Ó-Ð-Ü�‹>œSÑ ØÜ�X˜vÔ&Ü˜8“}‰HÜ�X˜vÔ&Ø—}‘}‰HäÐHÓIÐIØ�t—y‘yÒ ÜÐ:Ó;Ð;Ü˜tÓ$ˆÜ×Ñ  XÕ.r)   c                 óZ   — | j                  | j                  dt        j                  ¬«      S )z Save PDF incrementallyT)rø  rü  )r  r   r�   ÚPDF_ENCRYPT_KEEPr-   s    r(   ÚsaveIncrzDocument.saveIncr‰  s!   € à�y‰y˜Ÿ™°Ä×AWÑAWˆyÓXÐXr)   Úattached_filesÚclean_pagesÚembedded_filesÚhidden_textÚ
javascriptrï  Ú
redactionsÚredact_imagesÚremove_linksÚreset_fieldsÚreset_responsesÚ
thumbnailsÚxml_metadatac                 óŽ  — d„ }| j                   st        d«      ‚| j                  s| j                  rt        d«      ‚|sd}d}|r| j	                  i «       | D �]É  }|
r%|j                  «       D ]  }|j                  «        Œ |	r(|j                  «       }|D ]  }|j                  |«       Œ d}|j                  «       D ]k  }|j                  d   t        j                  k(  r|r|j                  d¬«       |r|j                  «        |j                  d   t        j                  k(  sŒjd}Œm |r|r|j!                  |¬	«       |s|sŒð|j#                  «        |j%                  «       s�Œ|rq|j%                  «       }t'        |«      d
k(  sJ ‚|d   }| j)                  |«      } ||j+                  «       «      }|r#dj-                  |«      }| j/                  ||«       |s�Œ‰| j1                  |j2                  d«      d   dk7  s�Œ­| j5                  |j2                  dd«       �ŒÌ |r&| j7                  «       D ]  }| j9                  |«       Œ |r| j;                  «        |s|sd}n| j=                  «       }t?        d
|«      D ]À  }| jA                  |«      sd|z  }t        |«      ‚|r-| j1                  |d«      d
   dk(  rd}| jC                  ||«       ŒS|sŒV| j1                  |d«      d
   dk(  r'| jC                  |d«       | j/                  |dd¬«       Œ•| j1                  |d«      d   dk7  sŒ®| j5                  |dd«       ŒÂ y )Nc                 óH  — g }d}d}d}| D ]‘  }|dk(  rd}|j                  |«       Œ|dk(  rd}|j                  |«       Œ5|dk(  rd}d}Œ?|dd dk(  r|d	   d
k7  rd}|j                  |«       Œc|dk(  rd}|j                  |«       Œ||r|rŒ�|j                  |«       Œ“ |r|S y)a‹  Remove hidden text from a PDF page.

            Args:
                cont_lines: list of lines with /Contents content. Should have status
                    from after page.cleanContents().

            Returns:
                List of /Contents lines from which hidden text has been removed.

            Notes:
                The input must have been created after the page's /Contents object(s)
                have been cleaned with page.cleanContents(). This ensures a standard
                formatting: one command per line, single spaces between operators.
                This allows for drastic simplification of this code.
            Fs   BTTs   ETs   3 TrrÁ  Ns   Trr   ó   3ó   Q©ri   )Ú
cont_linesÚ	out_linesÚin_textÚsuppressÚmake_returnrm   s         r(   Úremove_hiddenz%Document.scrub.<locals>.remove_hidden¢  sß   € ð  ˆIØˆGØˆHØˆKÛ"�Ø˜5’=Ø"�GØ×$Ñ$ TÔ*ØØ˜5’=Ø#�GØ×$Ñ$ TÔ*ØØ˜7’?Ø#�HØ"&�KØØ˜˜�9 Ò%¨$¨q©'°Tª/Ø$�HØ×$Ñ$ TÔ*ØØ˜4’<Ø$�HØ×$Ñ$ TÔ*ØÙ¡ØØ× Ñ  Õ&ð/ #ñ0 Ø Ð àr)   rÊ  zclosed or encrypted docFr   r  )r  T)Úimagesr   r½  ÚThumbr¥  z(bad xref %i - clean PDF before scrubbingÚSz/JavaScriptz<</S/JavaScript/JS()>>r  z	/Metadataú<<>>s   deleted)rˆ  r´  )"rÌ  r²   rî  r±   Úset_metadatar�  Úresetr\  Údelete_linkr�  r·   r�   r1  r  r‘  rê   Úapply_redactionsr  Úget_contentsr6   Úxref_streamrÈ  rÆ  Úupdate_streamrÐ  rý   r[  rÓ  rË  rµ  rW  r8  rh  ri  )r  ræ  rç  rè  ré  rê  rï  rë  rì  rí  rî  rï  rð  rñ  rü  rÅ   r)  rg  rˆ  Úfound_redactsrÎ   r0  rý   rÐ  r÷  r   Ú
xref_limitrÕ  rü   s                                r(   ÚscrubzDocument.scrub‘  s  € ò"/	ðb �zŠzÜ˜[Ó)Ð)Ø×Ò˜sŸ}š}ÜÐ6Ó7Ð7áØˆKØˆJáØ×Ñ˜RÔ äˆDÙà"Ÿl™lžn�FØ—L‘L•Nð -ñ ØŸ™Ó(�Û!�DØ×$Ñ$ TÕ*ð "ð "ˆMØŸ™ž�Ø—:‘:˜a‘=¤E×$CÑ$CÒCÉØ×%Ñ%¨dÐ%Ô3Ù"Ø×*Ñ*Ô,Ø—:‘:˜a‘=¤E×$:Ñ$:Ó:Ø$(‘Mð 'ñ ™mØ×%Ñ%¨]Ð%Ô;á¡;Øà×ÑÔ!Ø×$Ñ$Ô&ÙÙØ×)Ñ)Ó+�Ü˜5“z Q’Ð&�Ø˜Q‘x�Ø—‘ tÓ,�Ù*¨4¯?©?Ó+<Ó=�
ÙØ Ÿ:™: jÓ1�DØ×%Ñ% d¨DÔ1ãØ×#Ñ# D§I¡I¨wÓ7¸Ñ:¸fÔDØ×$Ñ$ T§Y¡Y°¸Ö@ðS ñZ Ø×)Ñ)Ö+�Ø—‘ Õ%ð ,ñ Ø× Ñ Ô"Ù¡
Ø‰JàŸ™Ó*ˆJÜ˜!˜ZÖ(ˆDØ—?‘? 4Ô(Ø@À4ÑG�Ü  “oÐ%Ù˜c×.Ñ.¨t°SÓ9¸!Ñ<ÀÒMà.�Ø×!Ñ! $¨Ô,ØáØà×Ñ  fÓ-¨aÑ0°KÒ?à×!Ñ! $¨Ô/Ø×!Ñ! $¨
¸Ð!Ô=Øà×Ñ  jÓ1°!Ñ4¸Ó>Ø× Ñ   z°6Õ:ñ) )r)   Úquadsc                 ót   — |€dt         z  t        z  t        z  t        z  }| |   j	                  |||||¬«      S )a¹  Search for a string on a page.

        Args:
            pno: page number
            text: string to be searched for
            clip: restrict search to this rectangle
            quads: (bool) return quads instead of rectangles
            flags: bit switches, default: join hyphened words
            textpage: reuse a prepared textpage
        Returns:
            a list of rectangles or quads, each containing an occurrence.
        r   )r	  rï  r¬  ru  )ÚTEXT_DEHYPHENATEÚTEXT_PRESERVE_LIGATURESÚTEXT_PRESERVE_WHITESPACEÚTEXT_MEDIABOX_CLIPÚ
search_for)r  rÇ  r   r	  rï  r¬  ru  s          r(   Úsearch_page_forzDocument.search_page_for,  s_   € ð* ˆ=ØÜ&ñ'ä-ñ.ô /ñ/ô )ñ	)ˆEð �3‰x×"Ñ"ØØØØØð #ó 
ð 	
r)   c                 óô  — | j                   s| j                  rt        d«      ‚| j                  st        d«      ‚t	        |d«      st        d«      ‚t        t        | «      «      }t        |«      dk(  st        |«      |vst        |«      |vrt        d«      ‚t        | «      }t        dk\  r&t        j                  ||t        j                  «       nt        j                  ||«       | j                  «        y)	z,Build sub-pdf with page numbers in the list.r  rÊ  rN  zsequence requiredr   rË  )r   é   r   N)r±   rî  r²   rÌ  r9   r8  r6   r«  rÔ  r½   rI  r�   Úpdf_rearrange_pages2ÚPDF_CLEAN_STRUCTURE_KEEPrD  )r'   ÚpylisteÚvalid_rangerF  s       r(   ÚselectzDocument.selectP  sÑ   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø�{Š{Ü˜[Ó)Ð)Ü�w Ô.ÜÐ0Ó1Ð1äœC ›IÓ&ˆÜ�‹L˜AÒÜ�7‹| ;Ñ.Ü�7‹| ;Ñ.äÐ1Ó2Ð2ô ˜tÓ$ˆô  *Ò,ô ×&Ñ& s¨G´U×5SÑ5SÕTä×&Ñ& s¨GÔ4ð 	×ÑÕr)   c                 ó–   — t        | «      }|st        j                  }nt        j                  |«      }t        j                  ||«       yr²  )r½   r�   r  r}  Úpdf_set_document_language)r'   r  rF  r  s       r(   r  zDocument.set_languagen  s=   € Ü˜tÓ$ˆÙÜ×&Ñ&‰Dä×5Ñ5°hÓ?ˆDÜ×'Ñ'¨¨TÔ2Ør)   c                 ó  — | j                   rt        d«      ‚t        | j                  «       j	                  «       «      }|t        «       k(  rt        d«      ‚|rWt        |«      t        t        fvrt        d«      ‚t        |«      j                  |«      }|t        «       k7  rt        d|z  «      ‚|rWt        |«      t        t        fvrt        d«      ‚t        |«      j                  |«      }|t        «       k7  rt        d|z  «      ‚|rWt        |«      t        t        fvrt        d«      ‚t        |«      j                  |«      }|t        «       k7  rt        d|z  «      ‚|rƒt        |«      t        t        fvrt        d	«      ‚|D ]\  }	t        |	«      t        t        fvrt        d
|	z  «      ‚t        |	«      j                  |«      }|t        «       k7  sŒPt        d|z  «      ‚ |r/t        |«      j                  «       }|dk(  rd}|dvrt        d«      ‚t        | «      }
t        j                  t        j                  |
«      t        d«      t        d«      «      }|j                   sy|dk(  r t        j"                  |t        d«      «      }n3t        j$                  t        j"                  |t        d«      «      |«      }|j                   st        t&        «      ‚t)        ||||||«       t        j*                  |
j                   «       y)z5Set the PDF keys /ON, /OFF, /RBGroups of an OC layer.r­   z document has no optional contentzbad type: 'on'zbad OCGs in 'on': %szbad type: 'off'zbad OCGs in 'off': %szbad type: 'locked'zbad OCGs in 'locked': %szbad type: 'rbgroups'zbad RBGroup '%s'zbad OCGs in RBGroup: %sÚ	UNCHANGEDÚ	Unchanged)r…  r†  r	  zbad 'basestate'r  r4  Nr…  rñ  rƒ  )r±   r²   r¸  rO  r®  r·   r¡   r¢   Ú
differencerÙ   Úupperr½   r�   r  r   rô   r»   ró   rŠ  rˆ  ÚJM_set_ocg_arraysrt  )r'   r‰  Ú	basestaterv  ÚoffÚrbgroupsr  rL  r_  r  rF  r’  rü   s                r(   Ú	set_layerzDocument.set_layerw  s�  € à�>Š>ÜÐ.Ó/Ð/Ü�4—=‘=“?×'Ñ'Ó)Ó*ˆØ”3“5Š=ÜÐ?Ó@Ð@áÜ�B‹x¤¤e˜}Ñ,Ü Ð!1Ó2Ð2Ü�B“×"Ñ" 4Ó(ˆAØ”C“EŠzÜ Ð!7¸!Ñ!;Ó<Ð<áÜ�C‹y¤¤u Ñ-Ü Ð!2Ó3Ð3Ü�C“×#Ñ# DÓ)ˆAØ”C“EŠzÜ Ð!8¸1Ñ!<Ó=Ð=áÜ�F‹|¤D¬% =Ñ0Ü Ð!5Ó6Ð6Ü�F“×&Ñ& tÓ,ˆAØ”C“EŠzÜ Ð!;¸aÑ!?Ó@Ð@áÜ�H‹~¤d¬E ]Ñ2Ü Ð!7Ó8Ð8Û�Ü˜A“w¤4¬ -Ñ/Ü$Ð%7¸!Ñ%;Ó<Ð<Ü˜“F×%Ñ% dÓ+�Øœ›“:Ü$Ð%>ÀÑ%BÓCÐCð ñ Ü˜I›×,Ñ,Ó.ˆIØ˜KÒ'Ø'�	ØÐ :Ñ:Ü Ð!2Ó3Ð3Ü˜tÓ$ˆÜ×!Ñ!Ü×!Ñ! 3Ó'Ü˜Ó Ü˜Ó(óˆð
 �~Š~ØØ�RŠ<Ü×$Ñ$ c¬8°C«=Ó9‰Cä×%Ñ%Ü×&Ñ&¨¬X°iÓ-@ÓAØóˆCð �~Š~ÜÔ/Ó0Ð0Ü˜3 	¨2¨s°H¸fÔEÜ×Ñ˜sŸ~™~Õ.r)   c                 ód  — t        |t        «      rB| j                  «       D �cg c]  }|d   |k(  sŒ|d   ‘Œ }}|g k(  rt        d|› d�«      ‚|d   }t	        | «      }|dk(  rt        j                  ||«       y|dk(  rt        j                  ||«       yt        j                  ||«       yc c}w )	z$Set / unset OC intent configuration.r   r8  z	bad OCG 'rI  r   r   r   N)	r<   rÙ   r  r²   r½   r�   Úpdf_toggle_layer_config_uiÚpdf_deselect_layer_config_uiÚpdf_select_layer_config_ui)r'   r8  rn  Úuir	  rF  s         r(   Úset_layer_ui_configzDocument.set_layer_ui_config¸  s¯   € ô �fœcÔ"Ø-1×-BÑ-BÔ-DÓ]Ñ-D rÈÈ6É
ÐV\ÓH\�b˜“lÐ-DˆFÐ]Ø˜Š|Ü  9¨V¨H°BÐ!7Ó8Ð8Ø˜A‘YˆFÜ˜tÓ$ˆØ�QŠ;Ü×,Ñ,¨S°&Õ9Ø�qŠ[Ü×.Ñ.¨s°FÕ;ä×,Ñ,¨S°&Õ9ùò ^s
   £B-±B-r%  c                 ód  — | j                  «       }|dk(  rt        d«      ‚|rt        |t        «      syddddœ}t	        |j                  «       «      j                  |j                  «       «      sDdt	        |j                  «       «      j                  |j                  «       «      › �}t        |«      ‚d}|j                  |«       |j                  «       D ]?  \  }}t        |«      j                  «       }|dvrt        d|› d	|› d
�«      ‚|d|› d|› �z  }ŒA |dz  }| j                  |d|«       y)zSet the PDF MarkInfo values.r   ú	not a PDFFr  zbad MarkInfo key(s): r  )r#  Úfalsezbad key value 'z': 'r×   r"  r    r  r  T)rg  r²   r<   r4   r¸  r®  Ú
issupersetr	  rû  r@   rÙ   r¿  r[  )r'   r%  rý   r$  ÚbadkeysÚpdfdictr  r¥   s           r(   Úset_markinfozDocument.set_markinfoÉ  s!  € à×ÑÓ!ˆØ�1Š9Ü˜[Ó)Ð)Ùœz¨(´DÔ9ØØ °EÀuÑMˆä�5—:‘:“<Ó ×+Ñ+¨H¯M©M«OÔ<Ø-¬c°(·-±-³/Ó.B×.MÑ.MÈeÏjÉjËlÓ.[Ð-\Ð]ˆGÜ˜WÓ%Ð%ØˆØ�‰�XÔØŸ+™+ž-‰JˆC�Ü�e“*×"Ñ"Ó$ˆEØÐ-Ñ-Ü  ?°3°%°t¸E¸7À!Ð!DÓEÐEØ˜˜3˜%˜q  Ð(Ñ(‰Gð	 (ð
 	�4‰ˆØ×Ñ˜$ 
¨GÔ4Ør)   rm  c                 óâ  — | j                   st        d«      ‚| j                  s| j                  rt        d«      ‚|€i }nt	        |«      t
        urt        d«      ‚ddddddd	d
ddddœ}t        |j                  «       «      }t        |j                  «       «      j                  |«      }|t        «       k7  rd|z  }t        |«      ‚| j                  dd«      \  }}|dk7  rd}nt        |j                  dd«      «      }|i k(  r|dk(  ry|dk(  r9| j                  «       }| j                  |d«       | j                  ddd|z  «       n)|i k(  r$| j                  ddd«       | j                  «        y|j!                  «       D �	�
cg c]  \  }	}
||	   €Œ|	|
f‘Œ c}
}	D ]:  \  }}||   }t#        |«      r|dv rd}nt%        |«      }| j                  |||«       Œ< | j                  «        yc c}
}	w )zcUpdate the PDF /Info object.

        Args:
            m: a dictionary like doc.metadata.
        rÊ  r  Nzbad metadataÚAuthorÚProducerr  rm  rþ  ÚModDateÚSubjectÚKeywordsÚTrapped)r—  r™  ru  rf  r–  rü  rg  rh  ri  r˜  rš  zbad dict key(s): %sr…  ÚInforý   r   rF  rZ   r 	  ú%i 0 Rr¥  )Únoner¥  )rÌ  r²   r±   rî  r·   r4   r¸  r®  r	  rÐ  r3   rÊ  r?  ri  r[  r  r@   r%  rR  )r  rm  ÚkeymapÚ
valid_keysÚdiff_setrÕ  r5  rq  Ú	info_xrefr�  rD   r  rÿ   Úpdf_keys                 r(   r	  zDocument.set_metadataà  sî  € ð �zŠzÜ˜[Ó)Ð)Ø�=Š=˜C×,Ò,ÜÐ;Ó<Ð<Øˆ9Ø‰AÜ�!‹WœDÑ Ü˜^Ó,Ð,àØ"Ø ØØØØ*Ø Ø Ø"Ø ñ
ˆô ˜Ÿ™›Ó'ˆ
Ü�q—v‘v“x“=×+Ñ+¨JÓ7ˆØ”s“uÒØ'¨(Ñ2ˆCÜ˜S“/Ð!à×"Ñ" 2 vÓ.‰ˆˆ4Ø�Š;Ø‰Iä˜DŸL™L¨°Ó3Ó4ˆIà�Š7�y A’~Øà˜Š>Ø×(Ñ(Ó*ˆIØ×Ñ˜i¨Ô0Ø×Ñ˜R ¨°IÑ)=Õ>Ø�"ŠWØ×Ñ˜R ¨Ô0Ø�L‰LŒNØà,-¯G©G¬IÔO©I¡D A q¸À¹Ñ9N˜!˜Qš¨IÕO‰HˆC�Ø˜S‘kˆGÜ˜”9 Ð'7Ñ 7Ø‘ä! #Ó&�Ø×Ñ˜Y¨°Õ5ð Pð 	�‰ŒØùó Ps   ÆG+ÆG+r³  c                 óˆ  — | j                   s| j                  rt        d«      ‚| j                  |d«      \  }}|dk7  s|dvrt        d|z  «      ‚|dkD  r,| j                  |d«      \  }}|dk7  s|dvrt        d|z  «      ‚|dk(  r'd	| j	                  |«      v r| j                  |d	d
«       y| j                  |d	d|z  «       y)zÄAttach optional content object to image or form xobject.

        Args:
            xref: (int) xref number of an image or form xobject
            oc: (int) xref number of an OCG or OCMD
        rA  rs  r   rB  rE  r   r  )z/OCGz/OCMDr±  r¥  Nr;	  )r±   rî  r²   rÐ  Úxref_get_keysr[  )r  rý   r³  r5  r   s        r(   r‰  zDocument.set_oc  sÙ   € ð �=Š=˜C×,Ò,ÜÐ:Ó;Ð;Ø×"Ñ" 4¨Ó3‰ˆˆ4Ø�Š;˜$Ð&9Ñ9ÜÐ9¸DÑ@ÓAÐAØ�Š6Ø×&Ñ& r¨6Ó2‰GˆAˆtØ�FŠ{˜dÐ*;Ñ;Ü Ð!=ÀÑ!BÓCÐCØ�Š7�t˜s×0Ñ0°Ó6Ñ6Ø×Ñ˜T 4¨Ô0ØØ×Ñ˜˜t X°¡]Ô3Ør)   rL  rU  rV  c                 óŠ  ‡	‡
— t        | j                  «       j                  «       «      Š	ˆ	ˆ
fd„Š
d}|rst        |«      t        t
        fv r\t        |«      j                  ‰	«      }|t        «       k7  rd|z  }t        |«      ‚|ddj                  t        d„ |«      «      z   dz   z  }|r=t        |«      j                  «       }dd	d
ddœ}|dvrt        d|z  «      ‚|d||   z  z  }|r|d ‰
|«      z  z  }|dz  }|dk(  r| j                  «       }n d| j                  |d¬«      vrt        d«      ‚| j                  ||«       |S )aÑ  Create or update an OCMD object in a PDF document.

        Args:
            xref: (int) 0 for creating a new object, otherwise update existing one.
            ocgs: (list) OCG xref numbers, which shall be subject to 'policy'.
            policy: one of 'AllOn', 'AllOff', 'AnyOn', 'AnyOff' (any casing).
            ve: (list) visibility expression. Use instead of 'ocgs' with 'policy'.

        Returns:
            Xref of the created or updated OCMD.
        c                 óÜ  •— t        | «      t        t        fvst        | «      dk  rt	        d| z  «      ‚| d   j                  «       dvrt	        d| d   z  «      ‚| d   j                  «       dk(  rt        | «      dk7  rt	        d| z  «      ‚d| d   j                  «       z  }| dd  D ]<  }t        |«      t        u r|‰vrt	        d	|z  «      ‚|d
|z  z  }Œ/|d ‰|«      z  z  }Œ> |dz  }|S )Nr   zbad 've' format: %sr   )ÚandÚorÚnotzbad operand: %srH	  z[/%sr   z
bad OCG %iz %i 0 Rz %srZ  )r·   r¡   r¢   r6   r²   r¿  rf  r3   )rV  rA   r  Úall_ocgsÚve_makers      €€r(   rJ	  z#Document.set_ocmd.<locals>.ve_makerH  sû   ø€ Ü�B‹x¤¤e˜}Ñ,´°B³¸!²Ü Ð!6¸Ñ!;Ó<Ð<Ø�!‰u�{‰{‹}Ð$8Ñ8Ü Ð!2°R¸±UÑ!:Ó;Ð;Ø�!‰u�{‰{‹} Ò%¬#¨b«'°Qª,Ü Ð!6¸Ñ!;Ó<Ð<Ø˜B˜q™EŸK™K›MÑ)ˆDØ˜˜“V�Ü˜“7œc‘>Ø Ñ(Ü(¨¸Ñ)9Ó:Ð:Ø˜I¨™MÑ)‘Dà˜E¡H¨Q£KÑ/Ñ/‘Dð ð �C‰KˆDØˆKr)   z<</Type/OCMDzbad OCGs: %srS  r    c                 ó   — d| z  S )Nr;	  r,   rO  s    r(   Ú<lambda>z#Document.set_ocmd.<locals>.<lambda>a  s   € °hÀ²lr)   rZ  ÚAnyOnÚAllOnÚAnyOffÚAllOff)ÚanyonÚallonÚanyoffÚalloffzbad policy: %sz/P/%sz/VE%sr  r   rR  Tre  zbad xref or not an OCMD)r¸  rO  r®  r·   r¡   r¢   r	  r²   rÆ  rÇ  rÙ   r¿  r?  rh  ri  )r  rý   rL  rU  rV  r   r_  rÕ  ÚpolsrI	  rJ	  s            @@r(   Úset_ocmdzDocument.set_ocmd3  sU  ù€ ô& �s—|‘|“~×*Ñ*Ó,Ó-ˆõ	ð$ ˆá”D˜“J¤4¬ -Ñ/Ü�D“	×$Ñ$ XÓ.ˆAØ”C“EŠzØ$ qÑ(�Ü  “oÐ%Ø�H˜sŸx™x¬Ñ,BÀDÓ(IÓJÑJÈSÑPÑPˆDáÜ˜“[×&Ñ&Ó(ˆFà Ø Ø"Ø"ñ	ˆDð ÐCÑCÜ Ð!1°FÑ!:Ó;Ð;Ø�G˜d 6™lÑ*Ñ*ˆDáØ�G™h r›lÑ*Ñ*ˆDà�‰ˆð �1Š9Ø×#Ñ#Ó%‰DØ §¡°À$ Ó!GÑGÜÐ6Ó7Ð7Ø×Ñ˜$ Ô%Øˆr)   rP  c                 ó  — d}| j                  «       }|dk(  rt        d«      ‚|st        d«      ‚|d   dk(  r|dd }|D ];  }|j                  «       |j                  «       k(  sŒ%| j                  |dd|› �«        y	 t        d«      ‚)
zSet the PDF PageLayout value.)rM  Ú	OneColumnÚTwoColumnLeftÚTwoColumnRightÚTwoPageLeftÚTwoPageRightr   r-	  zbad PageLayout valuer"  r   NrL  T©rg  r²   r¿  r[  )r'   rP  r$  rý   rD   s        r(   Úset_pagelayoutzDocument.set_pagelayout|  s—   € àmˆØ×ÑÓ!ˆØ�1Š9Ü˜[Ó)Ð)ÙÜÐ3Ó4Ð4Ø�a‰=˜CÒØ# A B˜ˆJÛˆAØ×ÑÓ! Q§W¡W£YÓ.Ø×!Ñ! $¨¸¸!¸°gÔ>Ùð ô Ð/Ó0Ð0r)   rT  c                 ó  — d}| j                  «       }|dk(  rt        d«      ‚|st        d«      ‚|d   dk(  r|dd }|D ];  }|j                  «       |j                  «       k(  sŒ%| j                  |dd|› �«        y	 t        d«      ‚)
zSet the PDF PageMode value.)rS  ÚUseOutlinesÚ	UseThumbsÚ
FullScreenÚUseOCÚUseAttachmentsr   r-	  zbad PageMode valuer"  r   NrR  Tr]	  )r'   rT  r$  rý   rD   s        r(   Úset_pagemodezDocument.set_pagemodeŒ  s•   € à`ˆØ×ÑÓ!ˆØ�1Š9Ü˜[Ó)Ð)ÙÜÐ1Ó2Ð2Ø�A‰;˜#ÒØ  �|ˆHÛˆAØ�~‰~Ó 1§7¡7£9Ó,Ø×!Ñ! $¨
°a¸°s°GÔ<Ùð ô Ð-Ó.Ð.r)   c                 óD   ‡— d„ Šˆfd„}| j                   ||«      «       y)a0  Add / replace page label definitions in PDF document.

        Args:
            doc: PDF document (resp. 'self').
            labels: list of label dictionaries like:
            {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int},
            as returned by get_page_labels().
        c                 óà   — d| d   z  }| j                  dd«      dk7  r|d| d   z  z  }| j                  dd«      dk7  r|d| d   z  z  }| j                  dd	«      d	kD  r|d
| d   z  z  }|dz  }|S )zåConvert Python label dict to corresponding PDF rule string.

            Args:
                label: (dict) build rule for the label.
            Returns:
                PDF label rule string wrapped in "<<", ">>".
            z%i<<Ú	startpageÚprefixrZ   z/P(%s)rK  z/S/%sÚfirstpagenumr   z/St %ir  )r7   )rl  r_  s     r(   Úcreate_label_strz2Document.set_page_labels.<locals>.create_label_str§  s”   € ð ˜˜{Ñ+Ñ+ˆAØ�y‰y˜ 2Ó&¨"Ò,Ø�X  h¡Ñ/Ñ/�Ø�y‰y˜ "Ó%¨Ò+Ø�W˜u W™~Ñ-Ñ-�Ø�y‰y˜¨Ó+¨aÒ/Ø�X  nÑ 5Ñ5Ñ5�Ø�‰IˆAØˆHr)   c                 ó‚   •— | j                  d„ ¬«       dj                  | D �cg c]
  } ‰|«      ‘Œ c}«      }|S c c}w )a5  Return concatenated string of all labels rules.

            Args:
                labels: (list) dictionaries as created by function 'rule_dict'.
            Returns:
                PDF compatible string for page label definitions, ready to be
                enclosed in PDF array 'Nums[...]'.
            c                 ó   — | d   S )Nrh	  r,   rO  s    r(   rL	  z?Document.set_page_labels.<locals>.create_nums.<locals>.<lambda>Â  s   €  a¨¢nr)   ©r  rZ   )r¹  rÆ  )rj  rl  r_  rk	  s      €r(   Úcreate_numsz-Document.set_page_labels.<locals>.create_nums¹  sB   ø€ ð �K‰KÑ4ˆKÔ5Ø—‘¹fÓE¹f°UÑ)¨%Õ0¸fÑEÓFˆAØˆHùò Fs   ¤<N)rk  )r  rj  ro	  rk	  s      @r(   Úset_page_labelszDocument.set_page_labelsœ  s"   ø€ ò	ô$	ð 	×Ñ™[¨Ó0Õ1r)   r¿  rí  c           	      óê  — | j                   s| j                  rt        d«      ‚| j                  st        d«      ‚|st	        | j                  «       «      S t        |«      t        t        fvrt        d«      ‚t	        |«      }| j                  }|d   }t        |«      t        t        fvrt        d«      ‚|d   dk7  rt        d«      ‚t        t        |dz
  «      «      D ]®  }||   }||dz      }d|d	   cxk  r|k  sn t        d
|z  «      ‚t        |«      t        t        fvst	        |«      dvrt        d|dz   z  «      ‚t        |d   «      t        us|d   dk  rt        d|dz   z  «      ‚|d   |d   dz   kD  sŒŸt        d|dz   z  «      ‚ | j                  «       }	g }	dg|	z   }
| j                  «       |
d<   |t	        |	«      kD  r;t        |t	        |	«      z
  «      D ]!  }|
j                  | j                  «       «       Œ# ddi}ddd|
d   dœg}t        |«      D �]•  }||   }|d   }t        |d   «      }t!        | j                  dz
  t#        d|d	   dz
  «      «      }| j%                  |«      }| j'                  |«      j(                  }t+        d|dz
  «      }|t,        dœ}|d	   dk  r	t.        |d<   t	        |«      dkD  rÈt        |d   «      t        t0        fv rt+        d||d   z
  «      |d<   n˜t        |d   «      t2        u r|d   j5                  «       n|}d|vr||d<   ne| |   }t+        |d   «      }|j6                  j(                  |j8                  z
  |_        ||j:                  z  }|j<                  |j8                  f|d<   i }d|d<   d|d<   d|d<   d|d<   d|d<   t?        j@                  ||«      |d<   |d   |d<   ||d<   ||dz
     |d<   |
|dz      |d<   |jC                  d«      |d<   |jC                  d d«      d	|jC                  d!d«      z  z   |d"<   |dz   ||<   |||dz
        }|jC                  d#«      s|r||kD  r|dxx   dz  cc<   n|dxx   dz  cc<   |d   dk(  r|dz   |d<   |dz   |d<   n |d   |d<   ||d      }|dz   |d<   |dz   |d<   |j                  |«       �Œ˜ tE        |«      D �]'  \  }}d$}|d   dk7  r|d%|d   z  z  }	 ||d   z  }	 |d   dkD  r|d&|
|d      z  z  }	 |d   dkD  r|d'|
|d      z  z  }	 |d   dkD  r|d(|
|d      z  z  }	 |d   dkD  r|d)|
|d      z  z  }	 |d   dkD  r|d*|
|d      z  z  }	 |d+|d   z   z  }|jC                  d«      r/t	        |d   «      dk(  r|d,tM        t        |d   «      «      › d-�z  }|jC                  d"d«      dkD  r|d.|d"   z  z  }|dk(  r|d/z  }|d0z  }| jO                  |
|   |«       �Œ* | jQ                  «        |S # tF        $ r tH        d	k\  r
tK        «        Y �Œ7w xY w# tF        $ r tH        d	k\  r
tK        «        Y �ŒCw xY w# tF        $ r tH        d	k\  r
tK        «        Y �ŒOw xY w# tF        $ r tH        d	k\  r
tK        «        Y �Œ[w xY w# tF        $ r tH        d	k\  r
tK        «        Y �Œgw xY w# tF        $ r tH        d	k\  r
tK        «        Y �Œsw xY w# tF        $ r tH        d	k\  r
tK        «        Y �ŒŠw xY w)1aÉ  Create new outline tree (table of contents, TOC).

        Args:
            toc: (list, tuple) each entry must contain level, title, page and
                optionally top margin on the page. None or '()' remove the TOC.
            collapse: (int) collapses entries beyond this level. Zero or None
                shows all entries unfolded.
        Returns:
            the number of inserted items, or the number of removed items respectively.
        r  rÊ  z'toc' must be list or tupler   z'items must be sequences of 3 or 4 itemsr   z#hierarchy level of item 0 must be 1r…  r   z row %i: page number out of range)r   r8  z
bad row %izbad hierarchy level in row %i)rö  r2  Úlastrý   r»  é$   )rH  rF  rF  r   rH  r2  rö  rr	  r¨  r*  r¯  Útoprf  rÖ   rý   rô  rQ  r=  r¬  rí  r  z	/Count %iz/First %i 0 Rz/Last %i 0 Rz/Next %i 0 Rz/Parent %i 0 Rz/Prev %i 0 Rz/Titlez/C[ rZ  z/F %iz/Type/Outlinesr  ))r±   rî  r²   rÌ  r6   r5  r·   r¡   r¢   rÂ  r8  r3   r  ri   r?  rR  r«  rÔ  r[  rE  rÅ  rÖ  rN  Ú	LINK_NONEr\  r4   rG  rD  r  r?  r  rá  Ú
getDestStrr7   rã  re   r÷   rt   r£   ri  r  )r  r¿  rí  ÚtoclenrÂ  Út0rL  Út1Út2Ú	old_xrefsrý   ÚlvltabÚolitemsr�  r†  rf  rÇ  r[  Úpage_heightrt	  r¹  rÅ   r  rõ  rÖ   r¨  rÍ  rX  s                               r(   Úset_toczDocument.set_tocÈ  s«  € ð �=Š=˜C×,Ò,ÜÐ;Ó<Ð<Ø�zŠzÜ˜[Ó)Ð)ÙÜ�s—{‘{“}Ó%Ð%ô �‹9œT¤5˜MÑ)ÜÐ:Ó;Ð;Ü�S“ˆØ—^‘^ˆ
Ø�‰VˆÜ�‹8œD¤%˜=Ñ(ÜÐFÓGÐGØˆa‰5�AŠ:ÜÐBÓCÐCÜ”e˜F Q™JÓ'Ö(ˆAØ�Q‘ˆBØ�Q˜‘U‘ˆBØ˜˜A™Ô, *Ô,Ü Ð!CÀaÑ!GÓHÐHÜ�R“¤¤u Ñ-´#°b³'ÀÑ2GÜ  °°Q±Ñ!7Ó8Ð8Ü�R˜‘U“¤3Ñ&¨2¨a©5°1ª9Ü Ð!@ÀAÈÁEÑ!JÓKÐKØ�!‰u�r˜!‘u˜q‘yÓ Ü Ð!@ÀAÈÁEÑ!JÓKÐKð )ð  —K‘K“Mˆ	ð ˆ	Øˆs�Y‰ˆØ×&Ñ&Ó(ˆˆQ‰Ø”C˜	“NÒ"Ü˜F¤S¨£^Ñ3Ö5�Ø—‘˜C×,Ñ,Ó.Õ/ð 6ð �Q�ˆð
 ¨°RÀÀaÁÑIÐJˆô �v—ˆAØ�A‘ˆAØ�A‘$ˆCÜ  !¡Ó%ˆEÜ�c—n‘n qÑ(¬#¨a°°1±¸±Ó*:Ó;ˆCØŸ™ cÓ*ˆIØ×*Ñ*¨3Ó/×6Ñ6ˆKÜ˜˜K¨"Ñ,Ó-ˆCØ"¬IÑ6ˆIØ�‰t�aŠxÜ$-�	˜&Ñ!Ü�1‹v˜ŠzÜ˜˜!™“:¤#¤u Ñ-Ü&+¨B°¸aÀ¹dÑ0BÓ&C�I˜d’Oô 04°A°a±D«z¼TÑ/A  !¡§	¡	¤Ày�IØ 9Ñ,Ø*-˜	 $šà" 3™x˜Ü % i°¡oÓ 6˜Ø"&§,¡,×"5Ñ"5¸¿¹Ñ"?˜œØ %¨×(<Ñ(<Ñ <˜Ø+0¯7©7°E·G±GÐ*<˜	 $™ØˆAØˆAˆg‰JØˆAˆg‰JØˆAˆf‰IØˆAˆf‰IØˆAˆf‰IÜ×(Ñ(¨°IÓ>ˆAˆf‰IØ  ‘ˆAˆe‰HØˆAˆg‰JØ   q¡™/ˆAˆh‰KØ˜Q ™U™ˆAˆf‰IØ"Ÿ™ wÓ/ˆAˆg‰JØ"Ÿ™ x°Ó3°a¸)¿-¹-ÈÐPQÓ:RÑ6RÑRˆAˆg‰JØ˜a™%ˆF�3‰KØ˜V C¨!¡G™_Ñ-ˆFð —‘˜jÔ)©X¸#Àº.à�w“ 1Ñ$”à�w“ 1Ñ$“à�g‰ "Ò$Ø"# a¡%��w‘Ø!" Q¡��v’à" 6™N��&‘	Ø˜v f™~Ñ.�Ø  1™u��V‘Ø!" Q¡��v‘Ø�N‰N˜1Öðq ôz ˜w×'‰EˆAˆrØˆCØ�'‰{˜aÒØ�{ R¨¡[Ñ0Ñ0�ðØ�r˜&‘zÑ!�ð
Ø�g‘; Ò#Ø˜?¨T°"°W±+Ñ->Ñ>Ñ>�CðØ�f‘: ’?Ø˜>¨D°°F±Ñ,<Ñ<Ñ<�CðØ�f‘: ’?Ø˜>¨D°°F±Ñ,<Ñ<Ñ<�Cð
Ø�h‘< "Ò$ØÐ+¨d°2°h±<Ñ.@Ñ@Ñ@�Cð
Ø�f‘: ’?Ø˜>¨D°°F±Ñ,<Ñ<Ñ<�Cð
Ø�x " W¡+Ñ-Ñ-�ð �v‰v�gŒ¤3 r¨'¡{Ó#3°qÒ#8Ø˜œi¬¨b°©kÓ(:Ó;Ð<¸AÐ>Ñ>�Ø�v‰v�g˜qÓ! AÒ%Ø�w  G¡Ñ,Ñ,�à�AŠvØÐ'Ñ'�Ø�4‰KˆCØ×Ñ˜d 1™g sÖ+ðu (ðx 	�‰ŒØˆøôo ò ä'¨1Ò,´Ô0@Úðûô ò Ü'¨1Ò,´Ô0@Úðûô ò Ü'¨1Ò,´Ô0@Úðûô ò ä'¨1Ò,´Ô0@Úðûô ò ä'¨1Ò,´Ô0@Úðûô ò ä'¨1Ò,´Ô0@Úðûô ò ä'¨1Ò,´Ô0@Úðús~   Ó X Ó)X#Ô YÔY)Ô.ZÕZ/Õ[Ø X ØX Ø#YÙYÙY&Ù%Y&Ù)Z	ÚZ	ÚZ,Ú+Z,Ú/[Û[Û[2Û1[2r¹  rF  rM  rf  rI  c
                 óH  — | j                  «       |   }
d}t        |«      t        u �r\|d   t        k(  rf|d   }| j	                  |«      }| j                  |«      j                  }|j                  dt        dd«      «      }||j                  z
  |_	        ||d<   t        j                  ||«      }|j                  d«      st        d«      ‚|j                  d	«      }|rNt        t        t         |«      «      }t#        |«      d
k7  st%        |«      dk  st'        |«      dkD  rt        d«      ‚|j                  dd«      }|j                  dd«      }|d|z  z   }|j                  d«      }| j)                  |
|dd ||||¬«      S |t*        k(  r| j-                  |«      S |€|€y|€| j)                  |
d|¬«      S |t        k(  r‹|�|t/        d| j0                  dz   «      vrt        d«      ‚| j	                  |dz
  «      }| j                  |dz
  «      j                  }|€t        d|dz
  «      }nt        |«      }||j                  z
  |_	        ||||||	dœ}t        j                  ||«      }|dk(  s|j                  d«      st        d«      ‚| j)                  |
|dd |¬«      S )az  Update TOC item by index.

        It allows changing the item's title and link destination.

        Args:
            idx:
                (int) desired index of the TOC list, as created by get_toc.
            dest_dict:
                (dict) destination dictionary as created by get_toc(False).
                Outrules all other parameters. If None, the remaining parameters
                are used to make a dest dictionary.
            kind:
                (int) kind of link (pymupdf.LINK_GOTO, etc.). If None, then only
                the title will be updated. If pymupdf.LINK_NONE, the TOC item will
                be deleted.
            pno:
                (int) page number (1-based like in get_toc). Required if
                pymupdf.LINK_GOTO.
            uri:
                (str) the URL, required if pymupdf.LINK_URI.
            title:
                (str) the new title. No change if None.
            to:
                (point-like) destination on the target page. If omitted, (72, 36)
                will be used as target coordinates.
            filename:
                (str) destination filename, required for pymupdf.LINK_GOTOR and
                pymupdf.LINK_LAUNCH.
            name:
                (str) a destination name for pymupdf.LINK_NAMED.
            zoom:
                (float) a zoom factor for the target location (pymupdf.LINK_GOTO).
        r   rF  rÅ   rH  r»  rs	  z/Azbad bookmark destrô  r   r   zbad color valuer=  FrQ  r   rí  N)rn  rf  rô  r¬  rí  )rn  rf  zbad page number)rF  rH  rM  rÅ   r_   rI  rZ   )r'  r·   r4   rN  r[  rE  rÅ  r7   rÖ  r  rá  rv	  r2   r²   r¡   rÇ  r\  r6   r«  rÔ  ro  ru	  r)  r8  rÂ  )r  r%  r¹  rF  rÇ  rM  rf  rH  rd   rI  rý   r[  r~	  rn  rô  r=  rQ  r¬  rí  Úddicts                       r(   Úset_toc_itemzDocument.set_toc_item‡  s´  € ðZ ×$Ñ$Ó& sÑ+ˆØˆ	Ü�	‹?œdÒ"Ø˜Ñ ¤IÒ-Ø Ñ'�ØŸM™M¨#Ó.�	Ø!×.Ñ.¨sÓ3×:Ñ:�Ø—]‘] 4¬¨r°2«Ó7�Ø" R§T¡TÑ)�”Ø"$�	˜$‘Ü×%Ñ% i°Ó;ˆFØ×$Ñ$ TÔ*Ü Ð!4Ó5Ð5Ø—M‘M 'Ó*ˆEÙÜœS¤¨Ó.Ó/�Ü�u“: ’?¤c¨%£j°1¢n¼¸E»
ÀQºÜ$Ð%6Ó7Ð7Ø—=‘= ¨Ó/ˆDØ—]‘] 8¨UÓ3ˆFØ˜Q ™XÑ%ˆEØ —}‘} ZÓ0ˆHØ×'Ñ'ØØ˜a˜b�zØØØØ!ð (ó ð ð ”9ÒØ×#Ñ# CÓ(Ð(Øˆ<˜E˜MØØˆ<Ø×'Ñ'¨°TÀÐ'ÓGÐGà”9ÒØˆ{˜c¬¨q°#·.±.À1Ñ2DÓ)EÑEÜ Ð!2Ó3Ð3ØŸ™ c¨A¡gÓ.ˆIØ×*Ñ*¨3°©7Ó3×:Ñ:ˆKØˆzÜ˜2˜{¨RÑ/Ó0‘ä˜2“Y�Ø" R§T¡TÑ)�”ð ØØØØØñ
ˆô ×!Ñ! )¨UÓ3ˆØ�RŠ<˜v×0Ñ0°Ô6ÜÐ0Ó1Ð1à×#Ñ# D°¸¸°À5Ð#ÓIÐIr)   c                 óø  — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  t	        j                  |«      t        d«      «      }|j                  st        t        t        «       t	        j                  |j                  d«      «      }t	        j
                  |t        d«      «      }|j                  rt        |||d«       y	t	        j                  ||t	        j                   «       d«      }t	        j"                  |t        d«      t        d«      «       t	        j"                  |t        d«      t        d«      «       t	        j"                  |t        d«      |«       y	)
z"Store XML document level metadata.r  r  r¹  r´  r   r  rs  ÚXMLN)r±   rî  r²   r½   r�   ró   r   rô   r»   rž  ÚMSG_BAD_PDFROOTrŸ  r�  r²  r  r  r  r:  )r'   rï  rF  r,  r  rŒ  s         r(   Úset_xml_metadatazDocument.set_xml_metadataó  s
  € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×!Ñ!¤5×#4Ñ#4°cÓ#:¼HÀVÓ<LÓMˆØ�ŠÜ”_Ô&:Ô;Ü×2Ñ2°H·O±OÀGÓ4LÓMˆÜ× Ñ  $¬°Ó(<Ó=ˆØ�>Š>Ü˜c 3¨¨QÕ/ä×&Ñ&¨¨S´%·,±,³.À!ÓDˆCÜ×Ñ ¤X¨fÓ%5´xÀ
Ó7KÔLÜ×Ñ ¤X¨iÓ%8¼(À5»/ÔJÜ×Ñ ¤h¨zÓ&:¸CÕ@r)   ÚverboseÚfallbackc                 óB  ‡ ‡— |sHt        j                  ‰ «      }t        j                  |t        t	        ‰ j
                  «      «      «       yi Šˆ fd„}ˆ fd„}ˆ fd„}d„ }ˆfd„}ˆfd„}	 |‰ «       ‰s|rt        d«       y	d	}
d	}‰j                  «       D ]  }|
t        |«      z  }
Œ ‰ D ]„  }|j                  «       D ]o  }t        |«      t        urŒ|d
   dd } |	|«      }|€Œ(‰|   \  }}\  }}|d   D ]*  }|j                  |d	   «       |j                  |d   «       Œ, ||||ff‰|<   Œq Œ† ‰j                  «       D ]Ö  \  }\  }}} |||d	   |d   «      }t        |«      d	   }|�t        |«      t        |«      k\  r|rt        d|›d�«       ŒS|rt        d|›d�«       ‰ j                  |¬«      }|d	   } ||«       ‰ j                  |d¬«      }|D ].  } ||«      \  }}‰ j!                  ||«       |s|sŒ% ||||«       Œ0 |t        |«      z  }ŒØ |
|z
  S )a´  Build font subsets in a PDF.

        Eligible fonts are potentially replaced by smaller versions. Page text is
        NOT rewritten and thus should retain properties like being hidden or
        controlled by optional content.

        This method by default uses MuPDF's own internal feature to create subset
        fonts. As this is a new function, errors may still occur. In this case,
        please fall back to using the previous version by using "fallback=True".
        Fallback mode requires the external package 'fontTools'.

        Args:
            fallback: use the older deprecated implementation.
            verbose: only used by fallback mode.

        Returns:
            The new MuPDF-based code returns None.  The deprecated fallback
            mode returns 0 if there are no fonts to subset.  Otherwise, it
            returns the decrease in fontsize (the difference in fontsize),
            measured in bytes.
        Nc                 ó  •— ‰j                  | d«      }|d   dk7  ryt        |d   dd j                  dd«      «      }‰j                  |d	«      }|d   dk7  rd
}n|d   }‰j                  |d«      }|d   dk7  rd
}||fS |d   }||fS )z(Retrieve old font '/W' and '/DW' values.ÚDescendantFontsr   r³  ©NNr   r…  rF  rZ   ÚWNÚDWr3   )rÐ  r3   rÊ  )rý   ÚdfÚdf_xrefÚwidthsÚdwidthsr  s        €r(   Úget_old_widthsz-Document.subset_fonts.<locals>.get_old_widths(  s¶   ø€ à×!Ñ! $Ð(9Ó:ˆBØ�!‰u˜ÒØ!Ü˜"˜Q™%  "˜+×-Ñ-¨e°RÓ8Ó9ˆGØ×%Ñ% g¨sÓ3ˆFØ�a‰y˜GÒ#Ø‘à ™�Ø×&Ñ& w°Ó5ˆGØ�q‰z˜UÒ"Ø�ð ˜7�?Ð"ð " !™*�Ø˜7�?Ð"r)   c                 óÆ  •— ‰j                  | d«      }|d   dk7  ryt        |d   dd j                  dd«      «      }t        |«      t        us|s,‰j                  |d	«      d   d
k7  r‰j                  |d	d
«       n‰j                  |d	|«       t        |«      t        us|s,‰j                  |d«      d   d
k7  r‰j                  |dd
«       y‰j                  |d|«       y)zÀRestore the old '/W' and '/DW' in subsetted font.

            If either parameter is None or evaluates to False, the corresponding
            dictionary key will be set to null.
            r‹	  r   r³  Nr   r…  rF  rZ   r�	  r¥  rŽ	  )rÐ  r3   rÊ  r·   rÙ   r[  )rý   r‘	  r’	  r�	  r�	  r  s        €r(   Úset_old_widthsz-Document.subset_fonts.<locals>.set_old_widths:  sü   ø€ ð ×!Ñ! $Ð(9Ó:ˆBØ�!‰u˜ÒØÜ˜"˜Q™%  "˜+×-Ñ-¨e°RÓ8Ó9ˆGÜ�V“¤CÑ'©v¸3×;KÑ;KÈGÐUXÓ;YØñ<àò<ð × Ñ  ¨#¨vÕ6à× Ñ  ¨#¨vÔ6Ü�W“¤SÑ(±¸S×=MÑ=MØ˜ó>àñ>àò>ð × Ñ  ¨$°Ô7ð ð × Ñ  ¨$°Ô8Ør)   c                 óT  •— ddl }ddl}dj                  |j                  t	        |j
                  «      d¬«      «      dz   }‰
j                  | d¬«      }|j                  d	d	|z   «      }‰
j                  | d
«      }|d   dk(  r“t        |d   dd j                  dd«      «      }‰
j                  |d«      }|d   dk(  rXt        |d   j                  dd«      «      }‰
j                  |d¬«      }	|	j                  dd|z   «      }	‰
j                  ||	«       ‰
j                  | |«       y)a'  Generate a name prefix to tag a font as subset.

            We use a random generator to select 6 upper case ASCII characters.
            The prefixed name must be put in the font xref as the "/BaseFont" value
            and in the FontDescriptor object as the '/FontName' value.
            r   NrZ   rØ  )r�  Ú+Tre  z
/BaseFont/r‹	  r³  r   r…  rF  ÚFontDescriptorrý   z
/FontName/)ÚrandomÚstringrÆ  Úchoicesr¢   Úascii_uppercaserh  rÊ  rÐ  r3   ri  )re  r™	  rš	  ri	  Úfont_strr�	  r�	  r   Úfd_xrefÚfd_strr  s             €r(   Úset_subset_fontnamez2Document.subset_fonts.<locals>.set_subset_fontnameR  s  ø€ ó ÛØ—W‘W˜VŸ^™^¬E°&×2HÑ2HÓ,IÈQ˜^ÓOÓPÐSVÑVˆFØ—‘ x¸D�ÓAˆHØ×'Ñ'¨°lÀVÑ6KÓLˆHØ×!Ñ! (Ð,=Ó>ˆBØ�!‰u˜ÒÜ˜b ™e A b˜k×1Ñ1°%¸Ó<Ó=�Ø×%Ñ% gÐ/?Ó@�Ø�a‘5˜F’?Ü! " Q¡%§-¡-°°rÓ":Ó;�GØ Ÿ_™_¨WÀ˜_ÓF�FØ#Ÿ^™^¨L¸,ÈÑ:OÓP�FØ×%Ñ% g¨vÔ6Ø×Ñ˜h¨Õ1r)   c           	      óÎ  — 	 ddl m} ddl}|j                  «       5 }|› d�}|› d�}|› d�}|dd|› �d	d
dddg}	t        |› d�dd¬«      5 }
d|v rL|	j                  d|› �«       |j                  d«       t        |«      }|D ]  }|
j                  d|z  «       Œ nK|	j                  d|› �«       |j                  d«       t        |«      }|D ]  }|
j                  d|z  «       Œ ddd«       t        |d«      5 }|j                  | «       ddd«       	 t        j                  |«       	 |j!                  |	«       t#        |¬«      }|j$                  }|j&                  dk(  rd}ddd«       |S # t        $ r t        r
t	        «        t        d«       ‚ w xY w# 1 sw Y   Œ³xY w# 1 sw Y   Œ™xY w# t        $ r Y Œ‘w xY w# t        $ r t	        «        d}Y Œqw xY w# 1 sw Y   S xY w)a"  Build font subset using fontTools.

            Args:
                buffer: (bytes) the font given as a binary buffer.
                unc_set: (set) required glyph ids.
            Returns:
                Either None if subsetting is unsuccessful or the subset font buffer.
            r   Nz/This method requires fontTools to be installed.z/oldfont.ttfz/newfont.ttfz/uncfile.txtz--retain-gidsz--output-file=z--layout-features=*z--passthrough-tablesz--ignore-missing-glyphsz--ignore-missing-unicodesz--symbol-cmapr   Úutf8)rØ  éýÿ  z--gids-file=é½   z%i
z--unicodes-file=éÿ   z%04x
Úwb)r7  )ÚfontTools.subsetÚsubsetÚImportErrorr÷   rt   rp   ÚtempfileÚTemporaryDirectoryr8   ri   r,  r¡   r   rb   r'  re   Úmainr  r«  Úglyph_count)r«  Úunc_setÚgid_setÚftsrª	  Útmp_dirÚoldfont_pathÚnewfont_pathÚuncfile_pathrä  Úunc_fileÚunc_listÚuncr7  rH  Ú
new_buffers                   r(   Úbuild_subsetz+Document.subset_fonts.<locals>.build_subsetj  sÿ  € ðÝ.ó
 Ø×,Ñ,Ô.°'Ø") ¨,Ð7�Ø") ¨,Ð7�Ø") ¨,Ð7�à Ø#Ø$ \ NÐ3Ø)Ø*Ø-Ø/Ø#ð	�ô ˜W˜I \Ð2°CÀ&ÕIÈXØ Ñ(ØŸ™ l°<°.Ð$AÔBØŸ™ CÔ(Ü#'¨£=˜Û#+˜CØ$ŸN™N¨6°C©<Õ8ñ $,ð Ÿ™Ð&6°|°nÐ$EÔFØŸ™ CÔ(Ü#'¨£=˜Û#+˜CØ$ŸN™N¨8°c©>Õ:ð $,÷ Jô ˜,¨Ô-°Ø—N‘N 6Ô*÷ .ðÜ—I‘I˜lÔ+ð&Ø—H‘H˜T”NÜ¨Ô6�DØ!%§¡�JØ×'Ñ'¨1Ò,Ø%)˜
÷U /ð\ Ðøôg ò Ý'¬NÔ,<ÜÐIÔJØðú÷* JÐIú÷ .Ð-ûô !ò Ùðûô !ò &Ü"Ô$Ø!%’Jð&ú÷W /ð\ Ðúsƒ   ‚E/ œ.GÁ
BFÃ&GÃ:F$ÄGÄF0Ä+:F?Å/&FÆF!	ÆGÆ$F-	Æ)GÆ0	F<Æ9GÆ;F<Æ<GÆ?GÇGÇGÇGÇG$c           
      ó8  •‡— d„ Šˆfd„}t        | j                  «      D ]ø  }| j                  |d¬«      D ]à  }|d   }|d   }|d   }|dvrŒt        |«      d	kD  r	|d	   d
k(  rŒ.| j	                  |«      }|d   } || |«      }	‰j                  |t        «       t        «       t        «       t        «       ff«      \  }
}}|j                  |«       |	D ]  }|
j                  |«       Œ t        |¬«      }|
j                  |j                  «       ~|
||f‰|<   Œâ Œú y)z·Populate 'font_buffers'.

            For each font candidate, store its xref and the list of names
            by which PDF text may refer to it (there may be multiple).
            c                 ó¦   — d| v rL| j                  d«      }t        | |dz   |dz    d«      }| j                  | ||dz    t        |«      «      } d| v rŒL| S )zlRecreate font name that contains PDF hex codes.

                E.g. #20 -> space, chr(32)
                Ú#r   r   é   )r“   r3   rÊ  Úchr)r   r�  r©  s      r(   Ú	norm_namez@Document.subset_fonts.<locals>.repl_fontnames.<locals>.norm_name±  sa   € ð
 ˜T‘kØŸ	™	 #›�AÜ˜D  Q¡¨¨Q©Ð/°Ó4�AØŸ<™<¨¨Q°°Q±¨¼¸Q»Ó@�Dð ˜T’kð �r)   c                 ó>  •— |d   }|g}| j                  |d   d«      d   dd } ‰|«      }||vr|j                  |«       | j                  |d   d«      }|d   dk7  r|S |d   dd }|j                  d	«      r!t        |dd
 «      }| j	                  |d¬«      }|j                  d«      }|dk\  rl|j                  d|dz   «      }t        |j                  d|dz   «      |j                  d|dz   «      «      }||dz   | } ‰|«      }||vr|j                  |«       |S )z�Return a list of fontnames for an item of page.get_fonts().

                There may be multiple names e.g. for Type0 fonts.
                r   r   rÙ  r   Nr‹	  r³  r…  rT  éüÿÿÿTre  z	/BaseFontr"  r  )rÐ  ri   rÉ  r3   rh  r“   r«  )	r  rA   ræ   r›  Údescendentsrý   r÷  rø  r¿	  s	           €r(   Úget_fontnameszDDocument.subset_fonts.<locals>.repl_fontnames.<locals>.get_fontnames¼  sO  ø€ ð
   ™7�Ø!˜
�Ø×+Ñ+¨D°©G°ZÓ@ÀÑCÀAÀBÐG�Ù$ XÓ.�Ø 5Ñ(Ø—L‘L Ô*Ø!×.Ñ.¨t°A©wÐ8IÓJ�Ø˜q‘> WÒ,Ø �LØ)¨!™n¨Q¨rÐ2�Ø×'Ñ'¨Ô/Ü˜{¨3¨BÐ/Ó0�DØ"%§/¡/°$À4 /Ó"H�KØ ×%Ñ% kÓ2�Ø˜’7Ø$×)Ñ)¨#¨r°A©vÓ6�BÜ˜[×-Ñ-¨c°2¸±6Ó:¸K×<LÑ<LÈTÐSUÐXYÑSYÓ<ZÓ[�BØ*¨2°©6°BÐ7�HÙ(¨Ó2�HØ uÑ,ØŸ™ XÔ.Ø�r)   T©r`  r   r   r   )ÚotfÚttfÚwoffÚwoff2rØ  r—	  r…  ©r8  N)
r8  rÂ  rc  r6   ræ  r7   r¸  r,  r  r   )r  rÃ	  rL  r¸  Ú	font_xrefÚfont_extr¬  Úextrr8  r›  Úname_setÚxref_setÚsubsetsr   rH  r¿	  Úfont_bufferss                  @€r(   Úrepl_fontnamesz-Document.subset_fonts.<locals>.repl_fontnamesª  s)  ù€ ò	ôô8 ˜3Ÿ>™>Ö*�Ø×+Ñ+¨A°DÐ+Ö9�AØ ! !¡�IØ  ™t�HØ  ™t�Hàð (ñ ð !ä˜8“} qÒ(¨X°a©[¸CÒ-?Ø à×+Ñ+¨IÓ6�DØ!% b¡�JÙ)¨#¨qÓ1�EØ2>×2BÑ2BØ"¤S£U¬C«E´C³E¼3»5°>Ð$Bó3Ñ/�H˜h¨ð —L‘L Ô+Û %˜Ø Ÿ™ TÕ*ð !&ä¨:Ô6�DØ—L‘L §¡Ô+ØØ08¸(ÀGÐ/L�L Ò,ñ9 :ñ +r)   c                 óN   •— ‰j                  «       D ]  \  }\  }}}| |v sŒ|c S  y r+   )r@   )r   r«  rÍ	  rí  rÐ	  s       €r(   Úfind_buffer_by_namez2Document.subset_fonts.<locals>.find_buffer_by_name÷  s5   ø€ Ø,8×,>Ñ,>Ö,@Ñ(�Ñ(˜ 1 aØ˜8Ò#Ø!’Mð -Að r)   zNo fonts to subset.r   rH  é!   Úcharsr   zCannot subset r   zBuilt subset of font rÉ	  Tre  )r�   r¢  Úpdf_subset_fonts2r¡   r8  rÂ  rp   r®  r6   Úget_texttracer·   r4   r,  r@   r9  rh  ri  ) r  r‡	  rˆ	  rF  r“	  r•	  r 	  r¹	  rÑ	  rÓ	  Úold_fontsizeÚnew_fontsizer8  rÅ   r×  ræ   r«  rÍ	  rÎ	  Úset_ucsÚset_gidr©  Ú
old_bufferrÏ	  r¸	  rÿ   re  r�	  rÊ	  Úwidth_tableÚ	def_widthrÐ	  s    `                              @r(   Úsubset_fontszDocument.subset_fonts  ss  ù€ ñ8 Ü×5Ñ5°cÓ:ˆCÜ×#Ñ# C¬¬e°C·N±NÓ.CÓ)DÔEØàˆô	#ô$	ô0	2ò0>	ô@K	MôZ	ñ 	�sÔÙÙÜÐ-Ô/ØàˆØˆØ&×+Ñ+Ö-ˆJØœC 
›OÑ+‰Lð .ó ˆDð ×*Ñ*Ö,�Ü˜“:¤TÑ)ØØ ™<¨¨Ð,�Ù,¨XÓ6�Ø�>ØØ9EÀfÑ9MÑ6�˜(Ñ$6 W¨gØ˜gœ�AØ—K‘K  !¡Ô%Ø—K‘K  !¡Õ%ð 'ð )1°(¸WÀgÐ<NÐ'O�˜VÒ$ñ -ð ð" :F×9KÑ9KÖ9MÑ5ˆJÑ5˜ 8¨WÙ% j°'¸!±*¸gÀa¹jÓIˆJÜ˜H“~ aÑ(ˆHØÐ!¤S¨£_¼¸J»Ò%GáÜ˜n¨X¨L¸Ð:Ô;ØÙÜÐ/°¨|¸1Ð=Ô>Ø×"Ñ"¨jÐ"Ó9ˆCØ˜1‘vˆHÙ Ô)Ø—‘ØØð 'ó ˆHó
 &�	á)7¸	Ó)BÑ&�˜Yà×!Ñ! )¨XÔ6á¢)Ù" 9¨k¸9ÕEð &ð œC 
›OÑ+‰Lð9 :Nð< ˜lÑ*Ð*r)   c                 óÊ  — t        | «      }t        j                  t        j                  |«      t	        d«      t	        d«      t	        d«      «      }t        j
                  |«      rt        j                  |«      s|dk  ryt        t        «      ‚|dk  ryt        j                  ||«       |r5t        j                  |«       t        j                  |j                  «       yy)zActivate an OC layer.r  r4  rƒ  r   Nr   )r½   r�   r  r   rô   rv  r‰  r²   ÚMSG_BAD_OC_LAYERÚpdf_select_layer_configÚpdf_set_layer_config_as_defaultrt  r»   )r'   r‰  Ú
as_defaultrF  Úcfgss        r(   Úswitch_layerzDocument.switch_layer=  s·   € ä˜tÓ$ˆÜ×"Ñ"Ü×!Ñ! 3Ó'Ü˜Ó Ü˜Ó(Ü˜Ó#ó	ˆô ×!Ñ! 4Ô(´×0CÑ0CÀTÔ0JØ˜ŠzØÜÔ.Ó/Ð/Ø�AŠ:ØÜ×%Ñ% s¨FÔ3ÙÜ×1Ñ1°3Ô7Ü×!Ñ! 3§>¡>Õ2ð r)   c                 óT  — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«      }t        |d|dz
  «      st        dt        «       t        |«       t        ||«      }t	        j                  |||«       |rt        t        |«      «       yy)z!Replace object definition source.r  r   rQ  N)r±   rî  r²   r½   r�   rt  r�  rž  ru  r>  r"  r  ÚJM_refresh_linksrÉ   )r'   rý   r   rÅ   rF  Úxreflenr‰  s          r(   ri  zDocument.update_objectQ  sŒ   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ñ$ SÓ)ˆÜ˜˜a ¨¡Ô+Ü�J¤Ô-Ü˜Ôä% c¨4Ó0ˆÜ×Ñ  T¨7Ô3ÙÜœl¨4Ó0Õ1ð r)   c                 ó¨  — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«      }|dk  s||kD  rt        t        «      ‚t	        j                  ||d«      }t	        j                  |«      st        t        «      ‚t        |«      }|j                  st        t        «      ‚t        ||||«       d|_        y)zReplace xref stream part.r  r   r   N)r±   rî  r²   r½   r�   rt  ru  rv  rg  ÚMSG_IS_NO_DICTr  r»   rœ  r  r  Údirty)	r'   rý   r   rˆ  ÚcompressrF  ré	  rü   r  s	            r(   r	  zDocument.update_stream`  s­   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ñ$ SÓ)ˆØ�!Š8�t˜g’~ÜœlÓ+Ð+ä×$Ñ$ S¨$°Ó2ˆÜ× Ñ  Ô%ÜœnÓ-Ð-Ü  Ó(ˆØ�~Š~Üœ^Ó,Ð,Ü˜˜c 3¨Ô1Øˆ�	r)   c                 ó`   — t        | d¬«      }|j                  rt        j                  |«      S y)z1
        Count versions of PDF document.
        r   r  )r½   r»   r�   Úpdf_count_versionsr›  s     r(   Úversion_countzDocument.version_countr  s+   € ô
 ˜t¨aÔ0ˆØ�>Š>Ü×+Ñ+¨CÓ0Ð0Ør)   c                 ó†   — ddl m}  |«       }| j                  ||||
||||||||	||||||||¬«       |j                  «       S )Nr   ©rN  )ró  rô  r   rß  rõ  rö  r÷  rø  ry  rù  rú  rû  rü  rý  rþ  rÿ  r  r  r  )rM  rN  r  rf  )r'   ró  rô  rõ  rö  r÷  rø  ry  rù  rú  r   rß  rû  rü  rý  rþ  rÿ  r  r  r  rN  Úbios                         r(   r   zDocument.write|  si   € õ, 	Ù‹iˆØ�	‰	ØØØØ#Ø%ØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ"3Ø'Ø#5ð) 	ô 	
ð, �|‰|‹~Ðr)   c                 ó&   —  | j                   |i |¤ŽS r+   )r   rã  s      r(   r   zDocument.tobytes¬  s   € Øˆt�z‰z˜4Ð* 6Ñ*Ð*r)   c                 ób   — t        | «       | j                  j                  | j                  «      S ©zPDF xref number of page.©rS  rÖ   r[  r8  r-   s    r(   rý   zDocument.xref¯  ó%   € ô 	�DÔØ�{‰{×$Ñ$ T§[¡[Ó1Ð1r)   )ÚkeepÚsourceÚtargetrù	  c                óR  — | j                  |«      r&| j                  |«      }| j                  ||dd¬«       |€g }| j                  |«      D ]  }||v rŒ| j	                  ||d«       Œ | j                  |«      D ]*  }| j                  ||«      }| j	                  |||d   «       Œ, y)aö  Copy a PDF dictionary object to another one given their xref numbers.

        Args:
            doc: PDF document object
            source: source xref number
            target: target xref number, the xref must already exist
            keep: an optional list of 1st level keys in target that should not be
                  removed before copying.
        Notes:
            This works similar to the copy() method of dictionaries in Python. The
            source may be a stream object.
        FT)rí	  rˆ  Nr¥  r   )Úxref_is_streamÚxref_stream_rawr	  rC	  r[  rÐ  )r  rú	  rû	  rù	  r   r  rA   s          r(   Ú	xref_copyzDocument.xref_copyµ  s½   € ð ×Ñ˜fÔ%à×(Ñ(¨Ó0ˆFØ×ÑØØØØð	 ô ð ˆ<ØˆDØ×$Ñ$ VÖ,ˆCØ�d‰{ØØ×Ñ˜V S¨&Õ1ð -ð
 ×$Ñ$ VÖ,ˆCØ×#Ñ# F¨CÓ0ˆDØ×Ñ˜V S¨$¨q©'Õ2ñ -r)   c                 óH  — t        | «      }t        j                  |«      }t        |d|dz
  «      s|dk7  rt	        t
        «      ‚|dkD  rt        j                  ||«      }nt        j                  |«      }|j                  syt        j                  ||«      }|j                  syd}t        j                  |«      rd}dt        j                  |«      z  }�n-t        j                  |«      rd}�nt        j                  |«      rd	}nüt        j                  |«      rd
}dt        j                  |«      z  }nÌt        j                   |«      rd}n´t        j"                  |«      rd}d}nšt        j$                  |«      rd}t        j&                  |«      rd}nkd}nht        j(                  |«      rd}dt        j*                  |«      z  }n8t        j,                  |«      r!d}t/        t        j0                  |«      «      }nd}|€t3        |dd«      }	t5        |	«      }||fS )z+Get PDF dict key value of object at 'xref'.r   r…  r   )r¥  r¥  Nrý   r;	  r³  r4   r3   z%ir\  r¥  r%  r#  r.	  r   z/%srš	  Úunknown)r½   r�   rt  r�  r²   ru  rw  r   r»   r£  r°  rî   rv  rg  Ú
pdf_is_intrõ   Úpdf_is_realrÜ  r+  r,  r¨  rf  Úpdf_is_stringrñ   rð   ÚJM_object_to_bufferr‹  )
r'   rý   r  rF  ré	  rü   Úsubobjr   r·   r  s
             r(   rÐ  zDocument.xref_get_keyØ  sÛ  € ä˜tÓ$ˆÜ×$Ñ$ SÓ)ˆÜ˜˜a ¨¡Ô+°¸²
ÜœlÓ+Ð+Ø�!Š8Ü×'Ñ'¨¨TÓ2‰Cä×#Ñ# CÓ(ˆCØ�~Š~Ø#Ü×$Ñ$ S¨#Ó.ˆØ× Ò Ø#ØˆÜ× Ñ  Ô(ØˆDØœe×.Ñ.¨vÓ6Ñ6ŠDÜ×Ñ Ô'ØŠDÜ×Ñ˜vÔ&Ø‰DÜ×Ñ˜fÔ%ØˆDØœ%×*Ñ*¨6Ó2Ñ2‰DÜ×Ñ˜vÔ&Ø‰DÜ×Ñ˜vÔ&ØˆDØ‰DÜ×Ñ˜vÔ&ØˆDÜ× Ñ  Ô(Ø‘à‘Ü×Ñ˜vÔ&ØˆDØœ5×,Ñ,¨VÓ4Ñ4‰DÜ× Ñ  Ô(ØˆDÜ$¤U×%=Ñ%=¸fÓ%EÓF‰DàˆDØˆ<Ü% f¨a°Ó3ˆCÜ'¨Ó,ˆDØ�dˆ|Ðr)   c                 óÀ  — t        | «      }t        j                  |«      }t        |d|dz
  «      s|dk7  rt	        t
        «      ‚|dkD  rt        j                  ||«      }nt        j                  |«      }t        j                  |«      }g }|dk(  r|S t        |«      D ]<  }t        j                  t        j                  ||«      «      }|j                  |«       Œ> |S )zFGet the keys of PDF dict object at 'xref'. Use -1 for the PDF trailer.r   r…  r   )r½   r�   rt  r�  r²   ru  rw  r   rh  r8  rf  rj  ri   )	r'   rý   rF  ré	  rü   rC   r’   rL  r  s	            r(   rC	  zDocument.xref_get_keys
  sÄ   € ä˜tÓ$ˆÜ×$Ñ$ cÓ*ˆÜ˜˜a ¨¡Ô+°¸²
ÜœlÓ+Ð+Ø�!Š8Ü×'Ñ'¨¨dÓ3‰Cä×#Ñ# SÓ)ˆCÜ×Ñ Ó$ˆØˆØ�Š6ØˆIÜ�q–ˆAÜ×#Ñ#¤U×%;Ñ%;¸SÀ!Ó%DÓEˆCØ�I‰I�c�Nð ð ˆ	r)   c                 ó|   — | j                   s| j                  rt        d«      ‚| j                  |d«      d   dk(  ryy)zCheck if xref is a font object.r  r  r   z/FontTF©r±   rî  r²   rÐ  ©r'   rý   s     r(   Úxref_is_fontzDocument.xref_is_font  s=   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø×Ñ˜T 6Ó*¨1Ñ-°Ò8ØØr)   c                 ó|   — | j                   s| j                  rt        d«      ‚| j                  |d«      d   dk(  ryy)z!Check if xref is an image object.r  rs  r   rC  TFr	
  r

  s     r(   Úxref_is_imagezDocument.xref_is_image%  s=   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø×Ñ˜T 9Ó-¨aÑ0°HÒ<ØØr)   c                 ót   — t        | d¬«      }|j                  syt        t        j                  ||«      «      S )z!Check if xref is a stream object.r   r  F)r½   r»   r%  r�   Úpdf_obj_num_is_streamr<  s      r(   rý	  zDocument.xref_is_stream-  s0   € ä˜t¨aÔ0ˆØ�~Š~ØÜ”E×/Ñ/°°TÓ:Ó;Ð;r)   c                 ó|   — | j                   s| j                  rt        d«      ‚| j                  |d«      d   dk(  ryy)z Check if xref is a form xobject.r  rs  r   rD  TFr	
  r

  s     r(   Úxref_is_xobjectzDocument.xref_is_xobject4  s=   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ø×Ñ˜T 9Ó-¨aÑ0°GÒ;ØØr)   c                 óf   — d}t        | d¬«      }|j                  rt        j                  |«      }|S )zGet length of xref table.r   r  )r½   r»   r�   rt  )r'   ré	  rF  s      r(   rW  zDocument.xref_length<  s/   € àˆÜ˜t¨aÔ0ˆØ�>Š>Ü×(Ñ(¨Ó-ˆGØˆr)   c                 óÈ  — | j                   rt        d«      ‚t        r$t        j                  | j
                  |||«      }|S t        | «      }t        j                  |«      }t        |d|dz
  «      s|dk7  rt        t        «      ‚|dkD  rt        j                  ||«      }nt        j                  |«      }t        t        j                  |«      ||«      }t        |«      }	|	S )z#Get xref object source as a string.r­   r   r…  r   )r±   r²   r  r   rh  r³   r½   r�   rt  r�  ru  rw  r   r
  r  ÚJM_EscapeStrFromBuffer)
r'   rý   rf  ry  rE   rF  ré	  rü   r  r   s
             r(   rh  zDocument.xref_objectD  sÃ   € à�>Š>ÜÐ.Ó/Ð/ÝÜ×#Ñ# T§Y¡Y°°jÀ%ÓHˆCØˆJÜ˜tÓ$ˆÜ×$Ñ$ SÓ)ˆÜ˜˜a ¨¡Ô+°¸²
ÜœlÓ+Ð+Ø�!Š8Ü×'Ñ'¨¨TÓ2‰Cä×#Ñ# CÓ(ˆCÜ!¤%×"<Ñ"<¸SÓ"AÀ:ÈuÓUˆÜ% cÓ*ˆØˆr)   c           	      ó`  — | j                   rt        d«      ‚|r2t        |t        «      r"t        j                  |«      t        «       dhfvrt        d«      ‚t        |t        «      r-|r+|d   dk(  r.t        j                  |dd «      t        «       k7  rt        d«      ‚t        | «      }t        j                  |«      }t        |d|dz
  «      s|dk7  rt        t        «      ‚|dk7  rt        j                  ||«      }nt        j                  |«      }t        |||«      }|j                  sy|dk7  rt        j                   |||«       yt        j"                  |«      }t%        |«      D ]A  }	t        j&                  |t        j(                  ||	«      t        j*                  ||	«      «       ŒC y)	z&Set the value of a PDF dictionary key.r­   r"  z	bad 'key'r   r   Nzbad 'value'r…  )r±   r²   r<   rÙ   ÚINVALID_NAME_CHARSÚintersectionr¸  r½   r�   rt  r�  ru  rw  r   ÚJM_set_object_valuer»   r  rh  r8  r:  rj  ri  )
r'   rý   r  r¥   rF  ré	  rü   r‰  rC   rL  s
             r(   r[  zDocument.xref_set_keyW  sw  € à�>Š>ÜÐ.Ó/Ð/áœ* S¬#Ô.Ô2D×2QÑ2QÐRUÓ2VÔ_bÓ_dÐgjÐfkÐ^lÑ2lÜ˜[Ó)Ð)Ü˜%¤Ô%©U°e¸A±hÀ#²oÔJ\×JiÑJiÐjoÐpqÐprÐjsÓJtÔx{Óx}ÒJ}Ü˜]Ó+Ð+ä˜tÓ$ˆÜ×$Ñ$ SÓ)ˆô ˜˜a ¨¡Ô+°¸²
ÜœlÓ+Ð+Ø�2Š:Ü×'Ñ'¨¨TÓ2‰Cä×#Ñ# CÓ(ˆCÜ% c¨3°Ó6ˆØ×!Ò!ØØ�2Š:Ü×#Ñ# C¨¨wÕ7ä×"Ñ" 7Ó+ˆAÜ˜1–X�Ü×"Ñ"ØÜ×.Ñ.¨w¸Ó:Ü×.Ñ.¨w¸Ó:õñ r)   c                 ó¨  — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«      }t        |d|dz
  «      s|dk7  rt        t        «      ‚|dk\  rt	        j                  ||d«      }nt	        j                  |«      }d}t	        j                  |«      r!t	        j                  ||«      }t        |«      }|S )zGet decompressed xref stream.r  r   r…  r   N)r±   rî  r²   r½   r�   rt  r�  ru  rv  r   r  Úpdf_load_stream_numberr
  ©r'   rý   rF  ré	  rü   r  r  s          r(   r	  zDocument.xref_stream}  s·   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ñ$ cÓ*ˆÜ˜˜a ¨¡Ô+°¸²
ÜœlÓ+Ð+Ø�1Š9Ü×(Ñ(¨#¨t°QÓ7‰Cä×#Ñ# SÓ)ˆCØˆÜ×Ñ Ô$Ü×.Ñ.°°TÓ:ˆCÜ  #Ó&ˆAØˆr)   c                 ó¨  — | j                   s| j                  rt        d«      ‚t        | «      }t	        j
                  |«      }t        |d|dz
  «      s|dk7  rt        t        «      ‚|dk\  rt	        j                  ||d«      }nt	        j                  |«      }d}t	        j                  |«      r!t	        j                  ||«      }t        |«      }|S )z&Get xref stream without decompression.r  r   r…  r   N)r±   rî  r²   r½   r�   rt  r�  ru  rv  r   r  Úpdf_load_raw_stream_numberr
  r
  s          r(   rþ	  zDocument.xref_stream_raw�  s·   € à�>Š>˜T×.Ò.ÜÐ;Ó<Ð<Ü˜tÓ$ˆÜ×$Ñ$ cÓ*ˆÜ˜˜a ¨¡Ô+°¸²
ÜœlÓ+Ð+Ø�1Š9Ü×(Ñ(¨#¨t°QÓ7‰Cä×#Ñ# SÓ)ˆCØˆÜ×Ñ Ô$Ü×2Ñ2°C¸Ó>ˆCÜ  #Ó&ˆAØˆr)   c                 óD  — t        | «      }t        j                  t        j                  |«      t	        d«      «      }|j
                  st        t        t        «       t        j                  |t	        d«      «      }d}|j
                  rt        j                  |«      }|S )z"Get xref of document XML metadata.r  r´  r   )
r½   r�   ró   r   rô   r»   rž  r…	  rŸ  rî   )r'   rF  r,  rŒ  rý   s        r(   Úxref_xml_metadatazDocument.xref_xml_metadata¡  sx   € ä˜tÓ$ˆÜ×!Ñ!¤5×#4Ñ#4°cÓ#:¼HÀVÓ<LÓMˆØ�ŠÜ”_Ô&:Ô;Ü× Ñ  $¬°Ó(<Ó=ˆØˆØ�>Š>Ü×#Ñ# SÓ)ˆDØˆr)   )r³   r  rö  Ú__dict__c                 ó   — | j                   S r+   )r§  r-   s    r(   rL	  zDocument.<lambda>¯  s   €  D§M¢Mr)   )rÀ  N)NNNNr   r   rê  )r…  r…  r…  )r…  r…  r…  r   r  r   rŒ	  )r…  éS  éJ  ©NNr   NN)r…  r   NN)r   r…  r   )r…  )r   r   N)r   FTTTFFFFFr   éÿ  NNTr   r   r   )r  r   Nr©  )r   NNNFr  )r…  r…  r…  r…  TTr   r   )Nrê  r"
  r#
  ÚhelvNr  r+   )Nr   r   rê  rº  r…   )
Nr   r   TTTTTFNr  )r   r   r   r   r   r   r   r   r   r   r   r   r   r%
  NNr   r   r   )TTTTTTTr   TTTTT)FNNN)NNNNN)r   NNN)NNNNNNNr   ©FF)r   Nr   r   )FFFFFFFFFFFFr   r%
  NNr   r   r   )Ùr.   r/   r0   r%  rÈ  rÓ  rz  r}  ÚtypingÚoverloadr3   rÁ   rN  ÚsysÚversion_inforÏ  r¡   r¢   rŠ   r  rÙ   rÚ   r$  r)  r5  r:  r=  rk  rÊ  rÑ  ÚUnionrÖ  rÛ  rÝ  rç  ré  rë  rø  rû  r  r  r  r  r$  r3  r9  r=  r?  rP  rR  r^  r(  rD  rk  ro  r!  rq  rw  r”  r˜  rœ  r   rÃ  rÄ  r×  r  r²  rµ  rÍ  rÎ  Ú
ByteStringr"  rÆ  rÈ  rË  r  rÍ  r4   rÓ  rÓ  ÚOptBytesrÖ  ræ  rñ  r  r	  r  ÚOptDictr2  r6  r<  r?  r´  rO  r^  r'  rc  rf  ri  ro  r¨   r…  r«   rs  ÚOptIntÚAnyrw  ry  r~  r»  r�  r’  r”  r  r¤  r\  r$  r¨  r¡  rº  r½  rª  rÌ  rÆ  rÉ  rÏ  rÒ  rÖ  rÛ  rÞ  râ  rå  rí  rñ  rô  r÷  r  rý  r  r	  rç  r  r  r%  r'  r   r3  r
  r§  r>  r�  rÂ  rE  rI  r[  rP  rT  ÚimplementationÚversionÚcollectionsÚabcÚIterableÚ
_pages_retrc  rg  r   rý  rg  ro  r‚  r¡  r“  rÃ  r  râ  rå  r
	  r	  r	  r  r%	  r+	  r2	  r	  r‰  rV	  r^	  re	  rp	  r	  r©   r‚	  r†	  rß	  ræ	  ri  r	  rð	  r   r   rý   rÿ	  rÐ  rC	  r
  r
  rý	  r
  rW  rh  r[  r	  rþ	  r
  Ú	__slots__r‰  Ú	is_streamr,   r)   r(   r°   r°   ø
  s®  „ ð 4ó ô,;ò.òð ‡_�_ñ˜Sð ¨ò ó ðð ×Ñ˜6Ò!Ø	�‰ð	 ð 	¨4°©:ò 	ó 
ð	ð 
�‰ð	  s¨C x¡ð 	°Tò 	ó 
ð	ó!ôW<ðr˜ó ðU˜#ó Uò)ð($àð$ð ó$òò@9ò+ð  ØØòw@Øðw@àðw@ð ðw@ð ð	w@ð
 ðw@ð ów@ð|  ØØØòDPØðDPàðDPð ð	DPð
 ðDPð ðDPð óDPòL
ð	 v§|¡|°C¸°HÑ'=ð 	À#ó 	ôò>
+ò-ò^%ô("òHDðL% ó %ñ Sð °#ð ¸Cð È3ð ÐWZð Ðadó ò<ò@ò)ò"ò ô(ò	ò/ò6 ôpò0)ò	8ò	 ò
'ôHð8 ñó ðô(/ôDòL
ò9ð &*¸4ò @˜dð @°Dð @ÀDó @ð$ ñ3ó ð3òòô$ò.;˜Sð ; có ;ò2<ò&˜só &ò
C ðP #Ø#Øò&Øð&àð&ð ð&ð ð	&ð
 ð&ð ó&ðP)˜só )ð& §¡¨S°#¨XÑ 6ó &ð	* §¡¨S°#¨XÑ 6ð 	*¸5ó 	*ð §¡¨c°3¨hÑ!7ð ¸Dó ð,˜tó ð  $Ø"Ø#ØòØ—,‘,˜s C˜xÑ(ðàðð ðð ð	ð
 ðð óô>/òbðB ØØØØØØØØØØØØØØØØØ ô)-ò^/ô6 ðv ØØ $òcØðcàðcð ðcð ð	cð
 ðcð ócôJò,ò2ð�Jð  cð ¨có ò"-ð^AH�jð AH¨ð AH°ó AHòFò$ #ð ¨Tð ¸Tó ò$
 3ð 
¨dð 
¸dó 
òKôð< #'ØØ%)Ø"ØØò!Øð!àð!ð  ð	!ð #ð!ð ð!ð ð!ð ð!ð ó!ðL !Ø"Ø Ø#'ØòLØðLàðLð ðLð ð	Lð
 ðLð !ðLð ðLð —‘óLð* Sð ¨Tó òð$  ò4Øð4àð4ð ó4òlð"˜
ð  tó ð
�zð 
 dó 
ò{ð0 ØØØØØØØô)ð\ 37Ø ØØØ"Ø#Ø òØðàðð —,‘,˜s D¨$˜Ñ/ðð ð	ð
 ðð ðð ðð ðð ðð óðD ØØØØØØØØØØôt(ðn ñ$ó ð$ð ñó ðð ñó ðð, ñó ðð ñ;ó ð;ð ñó ðò	8ò&òòPòòòò
"ô
4ò%òð ñ9ó ð9ð ñ/ó ð/òô2ò(ò<%òð ð˜$ò ó ðò:;˜Sð ; có ;ð( ñó ðôð0 ñó ðð ØØò	Øðàðð ðð ð	ð
 óò$/ò*ð$ ñ	5ó ð	5òò(òð" ð˜Cò ó ðð ð˜#ò ó ðð ×Ò×!Ò! FÒ*à —_’_×-Ò-‰
à —_’_×-Ò-¨dÑ3ˆ
ò(˜6ð (¨vð (À6ð (ÐT^ó (ò:ôHð ñó ðò0/ð 9 ð 9¨ó 9ôvð8 ØØØØØØØØØôU,ôn2òAðL ØØØØØØØØØØØØØØØØØØ ô+W"òr/ò"Yð $(Ø $Ø#'Ø $Ø#Ø!Ø#Ø!"Ø!%Ø!%Ø$(Ø#Ø!%òY;ØðY;à ðY;ð ðY;ð !ð	Y;ð
 ðY;ð ðY;ð ðY;ð ðY;ð ðY;ð ðY;ð ðY;ð "ðY;ð ðY;ð ðY;ð óY;ð~  Ø"ØØ#'ò"
Øð"
àð"
ð ð"
ð ð	"
ð
 ð"
ð ð"
ð !ð"
ð ó"
òH ô<ô?/óB:ð" Tð ¨dó ò.;˜*ð ;¨ð ;¸ó ;ðz�Jð  cð ¨sð °tó ð0 Ø-1Ø!Ø+/òGØðGàðGð —,‘,˜t T˜zÑ*ðGð ð	Gð
 —‘˜T 4˜ZÑ(ðGð óGðR1¨ó 1ð / Só /ò *2ð^ ò}Øð}àð}ð ð}ð ó	}ðD "&ØØØØ Ø!Ø#ØòjJØðjJàðjJð ðjJð ð	jJð
 ðjJð ðjJð ðjJð ðjJð ðjJð ðjJð ójJòXAò$v+˜*ð v+¨tð v+Àtð v+ÐX^ó v+óp	3ô(2õð$ òó ðð ØØØ ØØØØØØØØØØØØØØØ õ).ó`+ð ò2ó ð2ð
 NRó !3�zñ !3¨3ñ !3¸ñ !3Àdð !3ÐVZô !3óF0ódó&óô<óóõó&$óLó$ó$
ñ C€IáÒ1Ó2€GØ�Ir)   r°   c                   ó2   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zy)	ÚDocumentWriterc                 ó   — | S r+   r,   r-   s    r(   rz  zDocumentWriter.__enter__·  r{  r)   c                 ó$   — | j                  «        y r+   rÖ  r-  s     r(   r}  zDocumentWriter.__exit__º  rØ  r)   c                 óè  — t        |t        «      rn0t        |d«      rt        |«      }nt        |d«      r|j                  }t        |t        «      r5t	        j
                  ||t        j
                  j                  «      | _        y t        |«      }t	        j
                  ||t        j
                  j                  «      | _        |j                  «       dk(  sJ ‚t        | j                  d«      sJ ‚y )Nré  r   r   Ú_out)r<   rÙ   r9   r   r�   ÚFzDocumentWriterÚPathType_PDFr³   ré  ÚOutputType_PDFr$  )r'   r	   rõ  rì  s       r(   rŠ   zDocumentWriter.__init__½  sº   € Ü�tœSÔ!ØÜ�d˜JÔ'Ü˜“:‰DÜ�d˜FÔ#Ø—9‘9ˆDÜ�tœSÔ!Ü×.Ñ.°°g¼u×?UÑ?U×?bÑ?bÓcˆD�Iô (¨Ó.ˆCÜ×.Ñ.°°W¼e×>TÑ>T×>cÑ>cÓdˆDŒIØ×'Ñ'Ó)¨QÒ.Ð.Ð.Ü˜DŸI™I vÔ.Ð.Ñ.r)   c                 ór   — t        |«      }t        j                  | j                  |«      }t	        |«      }|S r+   )rí  r�   Úfz_begin_pager³   rœ  )r'   rX  Ú	mediabox2r§  Údevice_wrappers        r(   Ú
begin_pagezDocumentWriter.begin_pageÔ  s2   € Ü# HÓ-ˆ	Ü×$Ñ$ d§i¡i°Ó;ˆÜ&¨Ó/ˆØÐr)   c                 óB   — t        j                  | j                  «       y r+   )r�   Úfz_close_document_writerr³   r-   s    r(   r×  zDocumentWriter.closeÚ  s   € Ü×&Ñ&¨¯	©	Õ2r)   c                 óB   — t        j                  | j                  «       y r+   )r�   Úfz_end_pager³   r-   s    r(   Úend_pagezDocumentWriter.end_pageÝ  s   € Ü×Ñ˜4Ÿ9™9Õ%r)   N©rZ   )	r.   r/   r0   rz  r}  rŠ   rG
  r×  rL
  r,   r)   r(   r;
  r;
  µ  s    „ òòó/ò.ò3ó&r)   r;
  c                   ó.  — e Zd Zd„ Z	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zed„ «       Zed„ «       Zed„ «       Z	dd„Z
ed	„ «       Zed
„ «       Zdd„Zdd„Zed„ «       Zd„ Zdd„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zdd„Zd„ Zd„ Zy)r  c                 ó(   — t        | «      t        ury y r+   )r·   r  r-   s    r(   r¯  zFont.__del__ã  s   € Ü�‹:œTÑ!Øð "r)   Nc                 ó–  — |rSt        |d«      r|j                  «       }nt        |t        «      rt	        |«      }t        |t        «      st        d«      ‚t        |t        «      r´|j                  «       }d|v sd|v sd|v rt        d«       |dv rd}n†|j                  d	«      rd
}nr|j                  d«      rd}n^|j                  d«      rd}nJ|t        j                  «       v rdd l}|j                  |«      }d }~n|dk  rt        j                  ||«      }t!        j"                  |«      }t%        |||||||||	|
«
      }|| _        y )Nrf  zbad type: 'fontbuffer'r"  Ú\r   z!Warning: did you mean a fontfile?)Úcjkúchina-túchina-tsr   úchina-sr   Úkorear   Újapanr   )r9   rf  r<   rL  r  r²   rÙ   r¿  rp   r2   Úfitz_fontdescriptorsr®  Úpymupdf_fontsÚmyfontÚBase14_fontdictr7   r�   r}  ÚJM_get_fontr³   )r'   ræ   r7  r8  Úscriptr  rþ  Úis_boldÚ	is_italicÚis_serifÚembedÚfname_lowerrY
  r  rH  s                  r(   rŠ   zFont.__init__ç  sD  € ñ Ü�z :Ô.Ø'×0Ñ0Ó2‘
Ü˜J¬	Ô2Ü" :Ó.�
Ü˜j¬%Ô0Ü Ð!9Ó:Ð:ä�h¤Ô$Ø"Ÿ.™.Ó*ˆKØ�kÑ! T¨[Ñ%8¸CÀ;Ñ<NÜÐ;Ô<àÐ<Ñ<Ø‘à×'Ñ'¨	Ô2Ø‘Ø×'Ñ'¨Ô0Ø‘Ø×'Ñ'¨Ô0Ø‘ØÔ 4× 9Ñ 9Ó ;Ñ;Û$Ø*×1Ñ1°+Ó>�
Ø�Ù!à˜A’Ü*×.Ñ.¨x¸ÓB�ä×1Ñ1°(Ó;ˆÜ˜8 XØ˜v t¨XØ˜I x°ó8ˆð ˆ�	r)   c                 ó    — d| j                   z  S )Nz
Font('%s')©r   r-   s    r(   rÚ   zFont.__repr__   s   € Ø˜dŸi™iÑ'Ð'r)   c                 ó@   — t        j                  | j                  «      S )z Return the glyph ascender value.)r�   Úfz_font_ascenderr³   r-   s    r(   r  zFont.ascender   ó   € ô ×%Ñ% d§i¡iÓ0Ð0r)   c                 ó6   — | j                   j                  «       S r+   )r³   Úfz_font_bboxr-   s    r(   r  z	Font.bbox"   s   € à�y‰y×%Ñ%Ó'Ð'r)   c                 ó¸   — t        j                  t        j                  | j                  j                  j
                  «      «      }t        j                  |«      S r+   )r�   rT  Úll_fz_keep_bufferr³   r»   r«  Úfz_buffer_extract_copy)r'   r  s     r(   r«  zFont.buffer&   s<   € ä—.‘.¤%×"9Ñ"9¸4¿9¹9×;OÑ;O×;VÑ;VÓ"WÓXˆÜ×+Ñ+¨WÓ5Ð5r)   c           	      ó\  — t        j                  |«      }g }|D ]�  }	t        |	«      }
|r2t        j                  | j                  |
«      }|dk\  r2| j                  }n%t        j
                  | j                  |
||«      \  }}|j                  |t        j                  ||«      z  «       Œ‘ |S )z@Return tuple of char lengths of unicode 'text' under a fontsize.r   )r�   r}  ÚordÚfz_encode_character_scr³   Ú!fz_encode_character_with_fallbackri   r  )r'   r   rç   r  r]
  ÚwmodeÚ
small_capsr  r’   Úchr©  ÚgidrH  s                r(   Úchar_lengthszFont.char_lengths+   sš   € ä×1Ñ1°(Ó;ˆØˆÛˆBÜ�B“ˆAÙÜ×2Ñ2°4·9±9¸aÓ@�Ø˜!’8ØŸ9™9‘Dä!×CÑCÀDÇIÁIÈqÐRXÐZ^Ó_‘	��TØ�I‰I�h¤×!7Ñ!7¸¸cÀ5Ó!IÑIÕJð ð ˆ	r)   c                 ó@   — t        j                  | j                  «      S )z!Return the glyph descender value.)r�   Úfz_font_descenderr³   r-   s    r(   r  zFont.descender:   s   € ô ×&Ñ& t§y¡yÓ1Ð1r)   c                 ó²  ‡— t        j                  | j                  j                  «      }|sy t	        |t         j
                  «      sJ ‚t        rz|j                  gŠˆfd„} |d«      } |d«      } |d«      } |d«      } |d«      } |d«      } |d«      }	 |d«      }
 |d«      } |d«      } |d«      } |d«      } |d«      }t        rn|j                  t        rn|j                  t        rn|j                  t        rn|j                  t        rn|j                  t        rn|j                  t        r	n|j                  t        r
n|j                  t        rn|j                  t        rn|j                   t        rn|j"                  t        rn|j$                  t        rn|j&                  t        rdœS |j(                  dœS )Nc                 ó:   •— ‰d   d| z  dz
  z  }‰d   | z	  ‰d<   |S r  r,   )ÚbitsrE   rD   s     €r(   ÚbzFont.flags.<locals>.bI   s/   ø€ Ø˜‘d˜q D™y¨!™mÑ,�Ø˜‘t˜t‘|��!‘Ø�
r)   r   )ÚmonoÚserifr=  rQ  Ú
substituteÚstretchz	fake-boldzfake-italicÚopentypezinvalid-bboxrR
  zcjk-langra
  znever-embed)r�   Úll_fz_font_flagsr³   r»   r<   Úfz_font_flags_trŽ   Úis_monor`
  r^
  r_
  Úft_substituteÚ
ft_stretchÚ	fake_boldÚfake_italicÚhas_opentypeÚinvalid_bboxrR
  Úcjk_langra
  Únever_embed)r'   r¸  r{
  rƒ
  r`
  r^
  r_
  r„
  r…
  r†
  r‡
  rˆ
  r‰
  rŠ
  ra
  r‹
  rD   s                   @r(   r¬  z
Font.flags?   sv  ø€ ä×"Ñ" 4§9¡9×#7Ñ#7Ó8ˆÙØÜ˜1œe×3Ñ3Ô4Ð4Ð4åà—‘�ˆAôñ ˜“dˆGÙ˜“tˆHÙ˜“dˆGÙ˜!›ˆIÙ˜a›DˆMÙ˜1›ˆJÙ˜!›ˆIÙ˜A›$ˆKÙ˜Q›4ˆLÙ˜Q›4ˆLÙ˜“tˆHÙ�a“DˆEÙ˜A›$ˆKå+6¡¸A¿I¹IÝ,7¡¸Q¿Z¹ZÝ+6¡¸A¿I¹IÝ-8¡	¸a¿k¹kÝ1<¡À!Ç/Á/Ý.9¡
¸q¿|¹|Ý-8¡	¸a¿k¹kÝ/:¡ÀÇÁÝ0;¡ÀÇÁÝ0;¡ÀÇÁÝ,7¡¸Q¿U¹UÝ,7¡¸Q¿Z¹ZÝ)4¡¸!¿'¹'Ý/: ñð 	ð ABÇÁñð 	r)   c                 ó  — t        j                  |«      }|r2t        j                  | j                  |«      }|dk\  r2| j                  }n%t        j                  | j                  |||«      \  }}t        j
                  ||«      S )z2Return the glyph width of a unicode (font size 1).r   )r�   r}  ro
  r³   rp
  r  )	r'   Úchr_r  r]
  rq
  rr
  r  rt
  rH  s	            r(   Úglyph_advancezFont.glyph_advancek   sp   € ä×1Ñ1°(Ó;ˆÙÜ×.Ñ.¨t¯y©y¸$Ó?ˆCØ�aŠxØ—y‘y‘ä×?Ñ?ÀÇ	Á	È4ÐQWÐY]Ó^‰IˆC�Ü×%Ñ% d¨C°Ó7Ð7r)   c                 óB  — t        j                  |«      }|r2t        j                  | j                  |«      }|dk\  r2| j                  }n%t        j                  | j                  |||«      \  }}t        t        j                  |t        j                  «       «      «      S )z1Return the glyph bbox of a unicode (font size 1).r   )r�   r}  ro
  r³   rp
  r  Úfz_bound_glyphr_  )r'   Úcharr  r]
  rr
  r  rt
  rH  s           r(   Ú
glyph_bboxzFont.glyph_bboxv   s|   € ä×1Ñ1°(Ó;ˆÙÜ×.Ñ.°·	±	¸4Ó@ˆCØ�aŠxØ—y‘y‘ä×?Ñ?ÀÇÁÈDÐRXÐZ^Ó_‰IˆC�Ü”E×(Ñ(¨$°´U·^±^Ó5EÓFÓGÐGr)   c                 óB   — | j                   j                  j                  S r+   )r³   r»   r­	  r-   s    r(   r­	  zFont.glyph_count�   s   € à�y‰y×#Ñ#×/Ñ/Ð/r)   c                 ó   — t        |«      S )z$Return the unicode for a glyph name.)Úglyph_name_to_unicoderr  s     r(   r•
  zFont.glyph_name_to_unicode…   s   € ä$ TÓ*Ð*r)   c                 ó
  — |r<t        j                  |«      }t        j                  | j                  |||«      \  }}|S |r"t        j                  | j                  |«      }|S t        j
                  | j                  |«      }|S )z0Check whether font has a glyph for this unicode.)r�   r}  rp
  r³   ro
  r  )	r'   r¾	  r  r]
  rˆ	  rr
  r  rt
  rH  s	            r(   Ú	has_glyphzFont.has_glyph‰   s{   € áÜ×5Ñ5°hÓ?ˆDÜ×?Ñ?ÀÇ	Á	È3ÐPVÐX\Ó]‰IˆC�ð ˆ
ñ	 Ü×2Ñ2°4·9±9¸cÓB�ð ˆ
ô ×/Ñ/°·	±	¸3Ó?�Øˆ
r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   Úfz_font_is_boldr³   r-   s    r(   r^
  zFont.is_bold•   s   € ä×$Ñ$ d§i¡iÓ0Ð0r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   Úfz_font_is_italicr³   r-   s    r(   r_
  zFont.is_italic™   s   € ä×&Ñ&¨¯	©	Ó2Ð2r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   Úfz_font_is_monospacedr³   r-   s    r(   Úis_monospacedzFont.is_monospaced�   s   € ä×*Ñ*¨D¯I©IÓ6Ð6r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   Úfz_font_is_serifr³   r-   s    r(   r`
  zFont.is_serif¡   s   € ä×%Ñ% t§y¡yÓ1Ð1r)   c                  ó   — yr²  )r³   r�   r�
  r»   rŽ   ÚcppyyÚgblÚ"mupdf_mfz_font_flags_ft_substituter„
  Úll_fz_font_t3_procsÚpdf_font_writing_supported)r'   rH  r¬  r¢
  r„
  s        r(   Úis_writablezFont.is_writable¥   s   € àr)   c                 óD   — t        j                  | j                  «      }|S r+   )r�   Úfz_font_namer³   rð  s     r(   r   z	Font.name¸   s   € ä× Ñ  §¡Ó+ˆàˆ
r)   c                 ób  — | j                   }t        j                  |«      }d}	t        |t        «      st        t        «      ‚|D ]b  }
t        |
«      }|rt        j                  ||«      }|dk\  r|}nt        j                  ||||«      \  }}|	t        j                  ||«      z  }	Œd |	|z  }	|	S )z1Return length of unicode 'text' under a fontsize.r   )r³   r�   r}  r<   rÙ   rœ  ÚMSG_BAD_TEXTrn
  ro
  rp
  r  )r'   r   rç   r  r]
  rq
  rr
  Úthisfontr  r’   rs
  r©  rt
  rH  s                 r(   Útext_lengthzFont.text_length¾   s®   € à—9‘9ˆÜ×1Ñ1°(Ó;ˆØˆÜ˜$¤Ô$Üœ\Ó*Ð*ÛˆBÜ�B“ˆAÙÜ×2Ñ2°8¸QÓ?�Ø˜!’8Ø#‘Dä!×CÑCÀHÈaÐQWÐY]Ó^‘	��TØ”%×(Ñ(¨¨s°EÓ:Ñ:‰Bð ð 	ˆh‰ˆØˆ	r)   c                 ó   — t        |«      S )z$Return the glyph name for a unicode.)Úunicode_to_glyph_name)r'   rs
  s     r(   r¯
  zFont.unicode_to_glyph_nameÑ   s   € ä$ RÓ(Ð(r)   c                 ó¬   — t        j                  | j                  «      }|D �cg c]  }|j                  ‘Œ }}t	        |«      }t        |«      }|S c c}w )zE
        Returns sorted list of valid unicodes of a fz_font.
        )r�   Úfz_enumerate_font_cmap2r³   Úucsr¸  Úsorted)r'   Úucs_gidsrL  ÚucssÚucss_uniqueÚucss_unique_sorteds         r(   Úvalid_codepointszFont.valid_codepointsÕ   sO   € ô ×0Ñ0°·±Ó;ˆÙ'Ó(™x˜!�—“˜xˆÐ(Ü˜$“iˆÜ# KÓ0ÐØ!Ð!ùò )s   ¤A)
NNNr   Nr…  r   r   r   r   )rê  Nr   r   r   )Nr   r   r   )Nr   r   )r.   r/   r0   r¯  rŠ   rÚ   r!  r  r  r«  ru
  r  r¬  rŽ
  r’
  r­	  r•
  r—
  r^
  r_
  rž
  r`
  r§
  r   r­
  r¯
  r¸
  r,   r)   r(   r  r  á  sL  „ òð ØØØØØØØØØó1òf(ð ñ1ó ð1ð ñ(ó ð(ð ñ6ó ð6óð ñ2ó ð2ð ñ)ó ð)óV	8ó	Hð ñ0ó ð0ò+ó
ð ñ1ó ð1ð ñ3ó ð3ð ñ7ó ð7ð ñ2ó ð2ð ñó ðð$ ñó ðó
ò&)ó"r)   r  c                   ó   — e Zd Zd„ Zd„ Zy)r­  c                 ó6   — t        | «      t        ury d| _        y r®  )r·   r­  rÞ   r-   s    r(   r¯  zGraftmap.__del__â   s   € Ü�D‹zœXÑ%ØØˆ�r)   c                 ó`   — t        |«      }t        j                  |«      }|| _        d| _        y r²  )r½   r�   Úpdf_new_graft_mapr³   rÞ   )r'   r  ÚdstÚmap_s       r(   rŠ   zGraftmap.__init__ç   s*   € Ü˜sÓ#ˆÜ×&Ñ& sÓ+ˆØˆŒ	Øˆ�r)   N)r.   r/   r0   r¯  rŠ   r,   r)   r(   r­  r­  à   s   „ òó
r)   r­  c                   óÜ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ed	„ «       Zed
„ «       Zed„ «       Zedefd„«       Zed„ «       Zed„ «       Zed„ «       Zdd„Zdd„Zd„ Zed„ «       ZdZy)ÚLinkc                 ó$   — | j                  «        y r+   )rß   r-   s    r(   r¯  zLink.__del__ï   s   € Ø�‰�r)   c                 óJ   — t        |t        j                  «      sJ ‚|| _        y r+   )r<   r�   ÚFzLinkr³   )r'   r³   s     r(   rŠ   zLink.__init__ò   s   € Ü˜4¤§¡Ô.Ð.Ð.Øˆ�	r)   c                 óH   — t        | «       dt        | j                  «      z   S ©Nzlink on ©rS  rÙ   rÖ   r-   s    r(   rÚ   zLink.__repr__ö   ó   € Ü�DÔØœC §¡Ó,Ñ,Ð,r)   c                 óH   — t        | «       dt        | j                  «      z   S rÅ
  rÆ
  r-   s    r(   rÜ   zLink.__str__ú   rÇ
  r)   c                 ó˜   — t        |d¬«      }|j                  sy t        j                  ||d«      }|j                  sy t	        |«      }|S ©Nr   r  )r½   r»   r�   rv  rr  ©r'   r  rý   rF  Úlink_objr{
  s         r(   Ú_borderzLink._borderþ   sG   € Ü˜s¨QÔ/ˆØ�~Š~ØÜ×)Ñ)¨#¨t°QÓ7ˆØ×"Ò"ØÜ˜HÓ%ˆØˆr)   c                 ó´   — t        |d¬«      }|j                  sy t        j                  ||d«      }|j                  st	        t
        «      ‚t        |«      }|S rÊ
  )r½   r»   r�   rv  r²   ru  r�  rË
  s         r(   Ú_colorszLink._colors!  sO   € Ü˜s¨QÔ/ˆØ�~Š~ØÜ×)Ñ)¨3°°aÓ8ˆØ×"Ò"ÜœlÓ+Ð+Ü˜XÓ&ˆØˆr)   c                 ó    — d | _         d| _        y r®  )rÖ   rÞ   r-   s    r(   rß   zLink._erase!  s   € ØˆŒØˆ�r)   c                 óœ   — t        |d¬«      }|j                  sy t        j                  ||d«      }|j                  sy t	        |||«      }|S rÊ
  )r½   r»   r�   rv  rP  )r'   ru  r  rý   rF  rÌ
  r{
  s          r(   Ú
_setBorderzLink._setBorder!  sK   € Ü˜s¨QÔ/ˆØ�~Š~ØÜ×)Ñ)¨#¨t°QÓ7ˆØ×"Ò"ØÜ ¨¨XÓ6ˆØˆr)   c                 óv   — | j                  | j                  j                  j                  | j                  «      S r+   )rÍ
  rÖ   r³   rý   r-   s    r(   ru  zLink.border !  ó'   € à�|‰|˜DŸK™K×.Ñ.×3Ñ3°T·Y±YÓ?Ð?r)   c                 óv   — | j                  | j                  j                  j                  | j                  «      S r+   )rÏ
  rÖ   r³   rý   r-   s    r(   rú   zLink.colors$!  rÔ
  r)   c                 ó®  — t        | d«      r| j                  €t        d«      ‚| j                  j                  j                  s | j                  j                  j                  rt        d«      ‚| j                  j                  }| j
                  s| j                  j                  d«      rd}n|j                  | j                  «      }t        | ||«      S )z Create link destination details.rÖ   Núorphaned object: parent is Noner  r¼	  )
r9   rÖ   r²   r±   rî  r�  rM  r2   r‚  ÚlinkDest)r'   r  rM  s      r(   r¯  z	Link.dest(!  s¥   € ô �4˜Ô" t§{¡{Ð':ÜÐ>Ó?Ð?Ø�;‰;×Ñ×'Ò'¨4¯;©;×+=Ñ+=×+JÒ+JÜÐ;Ó<Ð<Ø�k‰k× Ñ ˆà×Ò˜tŸx™x×2Ñ2°3Ô7Ø‰Cà×"Ñ" 4§8¡8Ó,ˆCä˜˜c 3Ó'Ð'r)   rÀ  c                 óÄ   — t        | «       | j                  j                  }|j                  sy|j                  | j                  d«      }|d   dk7  rt        |d   «      S y)Nr   r•  r   r¥  )rS  rÖ   rÌ  rÐ  rý   r3   )r'   r  r¸  s      r(   r¬  z
Link.flags8!  sU   € ä�DÔØ�k‰k× Ñ ˆØ�zŠzØØ×Ñ˜TŸY™Y¨Ó,ˆØˆQ‰4�6Š>Ü�q˜‘t“9ÐØr)   c                 ó$  — t        | «       t        rt        j                  | j                  «      S | j                  }|j
                  r|j
                  j                  syt        t        j                  |j
                  j                  «      «      S )zFlag the link as external.F)
rS  r  r   ÚLink_is_externalr³   r»   rM  r%  r�   Úfz_is_external_link©r'   Ú	this_links     r(   r�  zLink.is_externalC!  si   € ô 	�DÔÝÜ×)Ñ)¨4¯9©9Ó5Ð5Ø—I‘Iˆ	Ø×#Ò#¨9×+?Ñ+?×+CÒ+CØÜ”U×.Ñ.°	×0DÑ0D×0HÑ0HÓIÓJÐJr)   c                 óê  — | j                   j                  syt        | «       	 | j                   j                  «       }|j                  syt        |«      }|�rd|_        | j                  |_	        ||j                  j                  t        |«      <   | j                  dkD  r¹| j                  j                  «       D �cg c]  }|d   t        j                  k(  sŒ|d   ‘Œ  }}| j                  j                  «       D �cg c]  }|d   t        j                  k(  sŒ|d   ‘Œ  }}|j!                  | j                  «      }||dz      |_        ||dz      |_        |S d|_        d|_        |S c c}w c c}w )z
Next link.Nr   Tr   r   rZ   )r³   r»   rS  r  r   Ú	Link_nextr*  rÀ
  rÞ   rÖ   r%  r&  rý   r­  r�   r�  rP  )r'   rÿ   r  Ú
link_xrefsÚlink_idsr%  s         r(   r*  z	Link.nextN!  sF  € ð �y‰y×#Ò#ØÜ�DÔØð —)‘)—.‘.Ó"ˆCØ�~Š~ØÜ�C‹jˆÚØˆCŒKØŸ™ˆCŒJØ.1ˆC�J‰J×"Ñ"¤2 c£7Ñ+Ø�y‰y˜1Š}Ø,0¯K©K×,CÑ,CÔ,EÓfÑ,E qÈÈ1ÉÔQV×QeÑQeÓIe˜a ›dÐ,E�
ÐfØ*.¯+©+×*AÑ*AÔ*CÓdÑ*C QÀqÈÁtÌu×OcÑOcÓGc˜A˜a›DÐ*C�ÐdØ ×&Ñ& t§y¡yÓ1�Ø% c¨A¡gÑ.�”Ø! #¨¡'Ñ*�”ð ˆ
ð �”Ø�”Øˆ
ùò gùÚds   Â>E+ÃE+Ã?E0ÄE0c                 óÒ   — t        | «       | j                  �| j                  j                  st        d«      ‚t	        | j                  j                  «       «      }t        |«      }|S )zRectangle ('hot area').z"self.this.m_internal not available)rS  r³   r»   re   rT  rä   r  r¸  s     r(   rä   z	Link.rectj!  sS   € ô 	�DÔð �9‰9Ð D§I¡I×$8Ò$8ÜÐAÓBÐBÜ˜tŸy™yŸ~™~Ó/Ó0ˆÜ�3‹iˆØˆ
r)   Nc                 ó¦   — t        |«      t        ur|||dœ}| j                  || j                  j                  j                  | j
                  «      S )N)rJ  rK  rL  )r·   r4   rÒ
  rÖ   r³   rý   )r'   ru  rJ  rL  rK  s        r(   rR  zLink.set_borderv!  sA   € Ü�‹<œtÑ#Ø$¨uÀÑGˆFØ�‰˜v t§{¡{×'9Ñ'9×'>Ñ'>ÀÇ	Á	ÓJÐJr)   c                 óÔ  — t        | «       | j                  j                  }t        |«      t        ur||dœ}|j	                  d«      }|j	                  d«      }|�t        d«       |g dfv r|j                  | j                  dd«       yt        |d	«      rt        |«      g}t        |«       t        |«      d
v sJ ‚dt        |«      › d�}|j                  | j                  d|«       y)zSet border colors.rT  rè   rU  Nz!warning: links have no fill colorr,   rÓ  rV  rW  rX  rY  rZ  )rS  rÖ   r·   r4   r7   rp   r[  rý   r9   r\  r]  r6   r£   )r'   rú   rU  rè   r  r_  s         r(   r`  zLink.set_colors{!  sØ   € ä�DÔØ�k‰k× Ñ ˆÜ�‹<œtÑ#Ø"¨fÑ5ˆFØ�z‰z˜&Ó!ˆØ—‘˜HÓ%ˆØÐÜÐ7Ô8Ø�b˜"�XÑØ×Ñ˜TŸY™Y¨¨TÔ2ØÜ�6˜;Ô'Ü˜F“m�_ˆFÜ�6ÔÜ�6‹{˜iÑ'Ð'Ð'Ø”	˜&Ó!Ð" !Ð$ˆØ×Ñ˜Ÿ™ C¨Õ+r)   c                 óø   — t        | «       | j                  j                  }|j                  st        d«      ‚t	        |«      t
        urt        d«      ‚|j                  | j                  dt        |«      «       y )NrÊ  zbad 'flags' valuer•  )	rS  rÖ   rÌ  r²   r·   r3   r[  rý   rÙ   )r'   r¬  r  s      r(   rc  zLink.set_flags�!  s`   € Ü�DÔØ�k‰k× Ñ ˆØ�zŠzÜ˜[Ó)Ð)Ü�E‹{œcÑ!ÜÐ0Ó1Ð1Ø×Ñ˜Ÿ™ C¬¨U«Ô4Ør)   c                 ó¬   — t         rt        j                  | j                  «      S | j                  }|j                  r|j                  j
                  S dS )zUri string.rZ   )r  r   Úlink_urir³   r»   rM  rÝ
  s     r(   rM  zLink.uri™!  sB   € õ Ü—>‘> $§)¡)Ó,Ð,Ø—I‘Iˆ	Ø+4×+?Ò+?ˆy×#Ñ#×'Ñ'ÐGÀRÐGr)   r…  )Nr   NNr  )r.   r/   r0   r¯  rŠ   rÚ   rÜ   rÍ
  rÏ
  rß   rÒ
  r!  ru  rú   r¯  r3   r¬  r�  r*  rä   rR  r`  rc  rM  rÅ   r,   r)   r(   rÀ
  rÀ
  î   sð   „ òòò-ò-òòòòð ñ@ó ð@ð ñ@ó ð@ð ñ(ó ð(ð ð�Sò ó ðð ñKó ðKð ñó ðð6 ñ	ó ð	óKó
,ò(ð ñHó ðHð �Dr)   rÀ
  c                   ó¾   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdddddddœd„Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zed„ «       Zd„ Zd„ Zd„ Zd„ Ze	ZeZeZy)rb  c           	      ój   — t        j                  t        | D �cg c]  }||z  ‘Œ	 c}«      «      S c c}w r+   ©ÚmathÚsqrtÚsum©r'   r©  s     r(   Ú__abs__zMatrix.__abs__§!  ó,   € Ü�y‰yœ©4Ó0©4 a˜a ›c¨4Ñ0Ó1Ó2Ð2ùÒ0ó   ™0c           
      óè  — t        |d«      r^t        | j                  |z   | j                  |z   | j                  |z   | j
                  |z   | j                  |z   | j                  |z   «      S t        |«      dk7  rt        d«      ‚t        | j                  |d   z   | j                  |d   z   | j                  |d   z   | j
                  |d   z   | j                  |d   z   | j                  |d	   z   «      S ©
NrW  rØ  úMatrix: bad seq lenr   r   r   r   r8  r   ©
r9   rb  r    r{
  r©  rõ  rM  r¸  r6   r²   r  s     r(   Ú__add__zMatrix.__add__ª!  óÑ   € Ü�1�kÔ"Ü˜$Ÿ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ØŸ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ó>ð >äˆq‹6�QŠ;ÜÐ2Ó3Ð3Ü�d—f‘f˜q ™t‘m T§V¡V¨a°©d¡]°D·F±F¸Q¸q¹T±MØŸ&™& 1 Q¡4™-¨¯©°!°A±$©¸¿¹ÀÀ1Á¹óGð 	Gr)   c                 óJ   — t        | «      t        | «      cxk(  xr dk(   S c  S r…   ©rÔ  r«  r-   s    r(   Ú__bool__zMatrix.__bool__³!  ó&   € Ü˜“I¤ T£Ö/¨aÑ/Ð0Ð0Ñ/Ð0Ð0r)   c                 óH   — t        |d«      syt        |«      dk(  xr | |z
   S )Nr  FrØ  ©r9   r6   )r'   rc  s     r(   Ú__eq__zMatrix.__eq__¶!  s)   € Ü�s˜IÔ&ØÜ�3‹x˜1‰}Ò1 d¨S¡jÐ!1Ð1r)   c                 ó�   — | j                   | j                  | j                  | j                  | j                  | j
                  f|   S r+   ©r    r{
  r©  rõ  rM  r¸  rÚ  s     r(   rN  zMatrix.__getitem__»!  s2   € Ø—‘˜Ÿ™ §¡¨¯©°·±¸¿¹Ð?ÀÑBÐBr)   Nr  c                ó  — |s,dx| _         x| _        x| _        x| _        x| _        | _        �n t        |«      dkD  rt        d«      ‚t        |«      dk(  r7t        t        |«      \  | _         | _        | _        | _        | _        | _        �nBt        |«      dk(  �rbt        |d   t        j                  «      rz|d   j                   | _         |d   j                  | _        |d   j                  | _        |d   j                  | _        |d   j                  | _        |d   j
                  | _        �nœt        |d   d«      rƒt        j                  |d   «      }t!        t        j"                  |«      d«      }	t!        t        j$                  |«      d«      }
|	x| _         | _        |
| _        |
 | _        dx| _        | _        �n
t        t        |d   «      \  | _         | _        | _        | _        | _        | _        nÑt        |«      dk(  st        |«      d	k(  rN|d   dk(  rFt        |d   «      ddt        |d   «      ddf\  | _         | _        | _        | _        | _        | _        ngt        |«      d	k(  rN|d   dk(  rFd
t        |d   «      t        |d   «      d
ddf\  | _         | _        | _        | _        | _        | _        nt        d«      ‚|�|| _         |�|| _        |�|| _        |�|| _        |�|| _        |�|| _        yy)aº  
        Matrix() - all zeros
        Matrix(a, b, c, d, e, f)
        Matrix(zoom-x, zoom-y) - zoom
        Matrix(shear-x, shear-y, 1) - shear
        Matrix(degree) - rotate
        Matrix(Matrix) - new copy
        Matrix(sequence) - from 'sequence'
        Matrix(mupdf.FzMatrix) - from MuPDF class wrapper for fz_matrix.
        
        Explicit keyword args a, b, c, d, e, f override any earlier settings if
        not None.
        r‹  rØ  rõ
  r   r   rW  r   r   r   rŒ  zMatrix: bad argsN)r    r{
  r©  rõ  rM  r¸  r6   r²   rÇ  r\  r<   r�   r_  r9   rì
  ÚradiansÚroundÚcosÚsin)r'   r    r{
  r©  rõ  rM  r¸  rä  ÚthetaÚc_Ús_s              r(   rŠ   zMatrix.__init__¾!  s‘  € ñ ØBEÐEˆDŒFÐE�T”VÐE˜dœfÐE t¤vÐE°´¸¾Ü�‹Y˜Š]ÜÐ2Ó3Ð3Ü�‹Y˜!Š^Ü=@ÄÈÓ=MÑ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D¶FÜ�‹Y˜!‹^Ü˜$˜q™'¤5§>¡>Ô2Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�”Ø˜a™Ÿ™�–Ü˜˜a™ +Ô.ÜŸ™ T¨!¡WÓ-�Üœ4Ÿ8™8 E›?¨AÓ.�Üœ4Ÿ8™8 E›?¨AÓ.�Ø"$Ð$�”˜œØ�”Ø˜�”Ø"%Ð%�”˜žäADÄUÈDÐQRÉGÓATÑ>�”˜œ ¤¨¬°´¸½Ü�‹Y˜!Š^œs 4›y¨Aš~°$°q±'¸Q²,Ü=BÀ4ÈÁ7»^Ø�Sœ%  Q¡›.¨#¨sð>3Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°DµFä�‹Y˜!Š^  Q¡¨1¢Ø=@Ü�d˜1‘g“¤ d¨1¡g£°°S¸#ð>>Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°DµFô Ð/Ó0Ð0ð ˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜D�Fˆ=r)   c                 ó<   — t        «       }|j                  | «       |S )zCalculate inverted matrix.)rb  Úinvert)r'   Úm1s     r(   Ú
__invert__zMatrix.__invert__õ!  s   € ä‹XˆØ
�	‰	�$ŒØˆ	r)   c                  ó   — y)NrØ  r,   r-   s    r(   r  zMatrix.__len__û!  ó   € Ør)   c           	      ó  — t        |d«      r^t        | j                  |z  | j                  |z  | j                  |z  | j
                  |z  | j                  |z  | j                  |z  «      S t        dd«      }|j                  | |«      S )NrW  r   )	r9   rb  r    r{
  r©  rõ  rM  r¸  Úconcat)r'   rm  r  s      r(   Ú__mul__zMatrix.__mul__þ!  sr   € Ü�1�kÔ"Ü˜$Ÿ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ØŸ&™& 1™* d§f¡f¨q¡j°$·&±&¸1±*ó>ð >ä�A�a‹[ˆØ�y‰y˜˜qÓ!Ð!r)   c                 ó¦   — t        | j                   | j                   | j                   | j                   | j
                   | j                   «      S r+   )rb  r    r{
  r©  rõ  rM  r¸  r-   s    r(   Ú__neg__zMatrix.__neg__"  s;   € Ü�t—v‘v�g §¡˜w¨¯©¨°$·&±&°¸4¿6¹6¸'ÀDÇFÁFÀ7ÓKÐKr)   c                 óJ   — t        | «      t        | «      cxk(  xr dk(   S c  S r…   rú
  r-   s    r(   Ú__nonzero__zMatrix.__nonzero__"  rü
  r)   c                 ó   — t        | «      S r+   )rb  r-   s    r(   Ú__pos__zMatrix.__pos__"  s   € Ü�d‹|Ðr)   c                 ó0   — dt        t        | «      «      z   S )Nrb  ©rÙ   r¢   r-   s    r(   rÚ   zMatrix.__repr__"  s   € Øœ#œe D›kÓ*Ñ*Ð*r)   c                 óÊ   — t        |«      }|dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y t        d«      ‚)Nr   r   r   r   r8  r   úindex out of range)r\  r    r{
  r©  rõ  rM  r¸  ræ  ©r'   rL  rD   s      r(   Ú__setitem__zMatrix.__setitem__"  s�   € Ü�!‹HˆØ�!ŠV˜a�T”Vð 	ð �!ŠV˜a�T”Vð 	ð �!ŠV˜a�T”Vð 	ð �!ŠV˜a�T”Vð
 	ð	 �!ŠV˜a�T”Vð 	ð �!ŠV˜a�T”Vð 	ô Ð1Ó2Ð2r)   c           
      óè  — t        |d«      r^t        | j                  |z
  | j                  |z
  | j                  |z
  | j
                  |z
  | j                  |z
  | j                  |z
  «      S t        |«      dk7  rt        d«      ‚t        | j                  |d   z
  | j                  |d   z
  | j                  |d   z
  | j
                  |d   z
  | j                  |d   z
  | j                  |d	   z
  «      S rô
  rö
  r  s     r(   Ú__sub__zMatrix.__sub__"  rø
  r)   c           	      ól  — t        |d«      rpt        | j                  dz  |z  | j                  dz  |z  | j                  dz  |z  | j
                  dz  |z  | j                  dz  |z  | j                  dz  |z  «      S t        |«      d   }|st        d«      ‚t        dd«      }|j                  | |«      S ©NrW  rŒ  r   zmatrix not invertible)r9   rb  r    r{
  r©  rõ  rM  r¸  Úutil_invert_matrixÚZeroDivisionErrorr  )r'   rm  r  Úm2s       r(   Ú__truediv__zMatrix.__truediv__&"  sª   € Ü�1�kÔ"Ü˜$Ÿ&™& 2™+ a™-¨¯©°"©°Q©¸¿¹À¹ÀA¹ØŸ&™& 2™+ a™-¨¯©°"©°Q©¸¿¹À¹ÀA¹óGð Gä Ó" 1Ñ%ˆÙÜ#Ð$;Ó<Ð<Ü�A�a‹[ˆØ�y‰y˜˜rÓ"Ð"r)   c                 óÐ   — t        |«      t        |«      cxk(  rdk(  st        d«      ‚ t        d«      ‚t        ||«      \  | _        | _        | _        | _        | _        | _        | S )z.Multiply two matrices and replace current one.rØ  rõ
  )	r6   r²   Úutil_concat_matrixr    r{
  r©  rõ  rM  r¸  )r'   ÚoneÚtwos      r(   r  zMatrix.concat0"  s_   € ä�3‹xœ3˜s›8Ô( qÒ(ÜÐ2Ó3Ð3ð )ÜÐ2Ó3Ð3Ü9KÈCÐQTÓ9UÑ6ˆŒ�”˜œ ¤¨¬°´Øˆr)   c                 óœ   — |€t        | «      }nt        |«      }|d   dk(  ry|d   \  | _        | _        | _        | _        | _        | _        y)z}Calculate the inverted matrix. Return 0 if successful and replace
        current one. Else return 1 and do nothing.
        r   r   )r#  r    r{
  r©  rõ  rM  r¸  )r'   rÆ  r½
  s      r(   r  zMatrix.invert7"  sP   € ð ˆ;Ü$ TÓ*‰Cä$ SÓ)ˆCØˆq‰6�QŠ;ØØ9<¸Q¹Ñ6ˆŒ�”˜œ ¤¨¬°´Ør)   c                 óî   — t        | j                  «      t        k  xr t        | j                  «      t        k  xs: t        | j                  «      t        k  xr t        | j
                  «      t        k  S )z,True if rectangles are mapped to rectangles.)rÙ  r{
  ÚEPSILONr©  r    rõ  r-   s    r(   Úis_rectilinearzMatrix.is_rectilinearD"  sR   € ô �D—F‘F“œgÑ%Ò?¬#¨d¯f©f«+¼Ñ*?ò >Ü�—‘‹[œ7Ñ"Ò<¤s¨4¯6©6£{´WÑ'<ð	>r)   c                 óP  — t        |«      }|dk  r|dz  }|dk  rŒ|dk\  r|dz  }|dk\  rŒt        d|z
  «      t        k  r	 | S t        d|z
  «      t        k  rL| j                  }| j                  }| j
                  | _        | j                  | _        | | _        | | _        | S t        d|z
  «      t        k  rJ| j                   | _        | j                   | _        | j
                   | _        | j                   | _        | S t        d|z
  «      t        k  rL| j                  }| j                  }| j
                   | _        | j                   | _        || _        || _        | S t        j                  |«      }t        j                  |«      }t        j                  |«      }| j                  }| j                  }||z  || j
                  z  z   | _        ||z  || j                  z  z   | _        | |z  || j
                  z  z   | _        | |z  || j                  z  z   | _        | S )z2Calculate pre rotation and replace current matrix.r   r¡  g     €V@g     €f@g     àp@)r\  rÙ  r-  r    r{
  r©  rõ  rì
  r  r  r  )r'   r  r    r{
  Úradr_  r©  s          r(   Ú	prerotatezMatrix.prerotateJ"  sì  € ä�e“ˆØ�aŠi˜ #™˜ˆe�a‹iØ�sŠl˜E S™L˜Eˆe�s‹lÜˆq�5‰y‹>œGÒ#ØðF ˆôC �˜‘Ó¤Ò(Ø—‘ˆAØ—‘ˆAØ—V‘VˆDŒFØ—V‘VˆDŒFØ�RˆDŒFØ�RˆDŒFð6 ˆô3 �˜‘Ó¤'Ò)Ø—f‘f�WˆDŒFØ—f‘f�WˆDŒFØ—f‘f�WˆDŒFØ—f‘f�WˆDŒFð* ˆô' �˜‘Ó¤'Ò)Ø—‘ˆAØ—‘ˆAØ—f‘f�WˆDŒFØ—f‘f�WˆDŒFØˆDŒFØˆDŒFð ˆô —,‘,˜uÓ%ˆCÜ—‘˜“ˆAÜ—‘˜“ˆAØ—‘ˆAØ—‘ˆAØ˜‘U˜Q §¡™ZÑ'ˆDŒFØ˜‘U˜Q §¡™ZÑ'ˆDŒFØ�B˜‘F˜Q §¡™ZÑ'ˆDŒFØ�B˜‘F˜Q §¡™ZÑ'ˆDŒFàˆr)   c                 óÚ   — t        |«      }t        |«      }| xj                  |z  c_        | xj                  |z  c_        | xj                  |z  c_        | xj                  |z  c_        | S )z1Calculate pre scaling and replace current matrix.©r\  r    r{
  r©  rõ  )r'   ÚsxÚsys      r(   ÚprescalezMatrix.prescaleu"  sM   € ä�2‹YˆÜ�2‹YˆØ�Š�"‰�Ø�Š�"‰�Ø�Š�"‰�Ø�Š�"‰�Øˆr)   c                 óJ  — t        |«      }t        |«      }| j                  | j                  }}| xj                  || j                  z  z  c_        | xj                  || j                  z  z  c_        | xj                  ||z  z  c_        | xj                  ||z  z  c_        | S )z2Calculate pre shearing and replace current matrix.r3  )r'   r¶  rD   r    r{
  s        r(   ÚpreshearzMatrix.preshear"  sx   € ä�!‹HˆÜ�!‹HˆØ�v‰v�t—v‘vˆ1ˆØ�Š�!�d—f‘f‘*Ñ�Ø�Š�!�d—f‘f‘*Ñ�Ø�Š�!�a‘%‰�Ø�Š�!�a‘%‰�Øˆr)   c                 óú   — t        |«      }t        |«      }| xj                  || j                  z  || j                  z  z   z  c_        | xj                  || j
                  z  || j                  z  z   z  c_        | S )z5Calculate pre translation and replace current matrix.)r\  rM  r    r©  r¸  r{
  rõ  )r'   ÚtxÚtys      r(   ÚpretranslatezMatrix.pretranslateŠ"  s_   € ä�2‹YˆÜ�2‹YˆØ�Š�"�t—v‘v‘+  T§V¡V¡Ñ+Ñ+�Ø�Š�"�t—v‘v‘+  T§V¡V¡Ñ+Ñ+�Øˆr)   r+   )r.   r/   r0   rð
  r÷
  rû
  rÿ
  rN  rŠ   r  r  r  r  r  r  rÚ   r  r   r&  r  r  r!  r.  r1  r6  r8  r<  Ú__inv__Ú__div__Únormr,   r)   r(   rb  rb  ¥!  sª   „ ò3òGò1ò2ò
Cð !%¨°¸ÀÈô 5'ònòò"òLò1òò+ò
òGò#òóð ñ>ó ð>ò
)òVò	òð €GØ€GØ�Dr)   rb  c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚIdentityMatrixz"Identity matrix [1, 0, 0, 1, 0, 0]c                 ó   — t        d«      S )N)r   r   r   r   r   r   )Úhashr-   s    r(   Ú__hash__zIdentityMatrix.__hash__š"  s   € Ü�MÓ"Ð"r)   c                 ó2   — t         j                  | dd«       y )NrŒ  )rb  rŠ   r-   s    r(   rŠ   zIdentityMatrix.__init__�"  s   € Ü�‰˜˜c 3Õ'r)   c                  ó   — y)Nz,IdentityMatrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0)r,   r-   s    r(   rÚ   zIdentityMatrix.__repr__ "  s   € Ø=r)   c                 ór   — |dv rd| j                   |<   y |dv rd| j                   |<   y || j                   |<   y )NÚadrŒ  Úbcefr‹  )r 
  )r'   r   r¥   s      r(   Ú__setattr__zIdentityMatrix.__setattr__£"  s:   € Ø�4‰<Ø"%ˆD�M‰M˜$ÒØ�V‰^Ø"%ˆD�M‰M˜$Òà"'ˆD�M‰M˜$Òr)   c                  ó   — t        d«      ‚)NzIdentity is readonly)ÚNotImplementedError)rä  s    r(   Ú	checkargszIdentityMatrix.checkargs«"  s   € Ü!Ð"8Ó9Ð9r)   N)	r.   r/   r0   Ú__doc__rD  rŠ   rÚ   rJ  rM  r,   r)   r(   rA  rA  —"  s   „ Ù,ò#ò(ò>ò(ó:r)   rA  c                   ó   — e Zd ZdZdd„Zy)rØ
  z#link or outline destination detailsNc           	      óB	  ‡ — |j                   }| }d‰ _        d‰ _        d‰ _        d‰ _        d‰ _        t        ‰ _        t        dd«      ‰ _	        t        «       ‰ _        d‰ _        |j                  ‰ _        t        dd«      ‰ _        |j                  ‰ _        ˆ fd„}d„ }|rI‰ j                  j!                  d«      s.d|d   dz   › d	t#        |d   «      › d
t#        |d   «      › �‰ _        |j                   rd‰ _        t$        ‰ _        ‰ j                  sd‰ _        t        ‰ _        |�r‰ j                  �r	‰ j                  j'                  dd«      ‰ _        ‰ j                  j!                  d«      �rªt(        ‰ _        t+        j,                  d‰ j                  «      }|r„t/        |j1                  d«      «      dz
  ‰ _        t        t3        |j1                  d«      «      t3        |j1                  d«      «      «      ‰ _	        ‰ j                  t4        z  t6        z  ‰ _        �nt+        j,                  d‰ j                  «      }|r#t/        |j1                  d«      «      dz
  ‰ _        nÖt8        ‰ _        t+        j,                  d‰ j                  «      }|sJ ‚|rh|rf ||j1                  d«      «      }	|j;                  «       j=                  |	«      ‰ _        ‰ j                  €t        «       ‰ _        |	‰ j                  d<   n= |‰ j                  dd  «      ‰ _        n"t8        ‰ _         |‰ j                  «      ‰ _        |j                   �r6‰ j                  s�n(‰ j                  j!                  d«      rÚ‰ j                  dd  ‰ _        ‰ j                  j!                  d«      r‰ j                  dd  ‰ _        d‰ _        d‰ _        t>        ‰ _        ‰ j                  jA                  d«      }
tC        |
«      dk(  rˆ|
d   j!                  d«      rttD        ‰ _        |
d   ‰ _        t/        |
d   jA                  d«      d   dd  «      dz
  ‰ _        n3d‰ j                  v rd‰ _        t$        ‰ _        nd‰ _        t>        ‰ _        tG        ‰ j                  t        «      sJ ‚y )NrZ   r   Fc                 óº   •— ‰j                   dd  j                  d«      }t        «       }|D ],  }|j                  d«      }|dk\  r||dz   d  ||d | <   Œ(d ||<   Œ. |S )Nr   Ú&r   r   )rM  r5   r4   r“   )rM  r@   rE   rA   Úeqr'   s        €r(   Úuri_to_dictz&linkDest.__init__.<locals>.uri_to_dictÄ"  sk   ø€ Ø—H‘H˜Q˜R�L×&Ñ& sÓ+ˆEÜ“&ˆCÛ�Ø—Y‘Y˜s“^�Ø˜’7Ø%)¨"¨Q©$¨% [�C˜˜S˜b˜	’Nà $�C˜’Ið ð ˆJr)   c                 ó¶   — | j                  dd«      }|j                  d«      }|d   }|dd D ](  }|dd }|t        t        |d¬	«      «      z  }||dd z  }Œ* |S )
z'Unescape '%AB' substrings to chr(0xAB).z%%z%25Ú%r   r   Nr   r½	  )Úbase)rÊ  r5   r¾	  r3   )r   r5   rž  rA   Úpieces        r(   Úunescapez#linkDest.__init__.<locals>.unescapeÏ"  sq   € à—L‘L  uÓ-ˆEØ—K‘K Ó$ˆEØ˜A‘hˆGØ˜a˜b›	�Ø˜R˜a˜�Øœ3œs 5¨rÔ2Ó3Ñ3�Ø˜4  ˜8Ñ#‘ð "ð ˆNr)   r¼	  z#page=r   z&zoom=0,r   r   r…  z	&zoom=nanz&zoom=0z7^#page=([0-9]+)&zoom=([0-9.]+),(-?[0-9.]+),(-?[0-9.]+)$r   r8  z^#page=([0-9]+)$z^#nameddest=(.*)Ú	nameddestzfile:r   z//zpage=rR  r]   T)$r�  r¯  Ú	file_specr¬  Úis_mapÚis_uriru	  rF  rÖ  Últr4   rá  Ú
new_windowrÅ   r\  rM  r2   r£   rT  rÊ  rN  Úrer  r3   Úgroupr\  ÚLINK_FLAG_L_VALIDÚLINK_FLAG_T_VALIDÚ
LINK_NAMEDrÃ  r7   rS  r5   r6   rQ  r<   )r'   rü   Úrlinkr¸   ÚisExtÚisIntrT  rY  rm  rá  Úftabs   `          r(   rŠ   zlinkDest.__init__´"  s–  ø€ Ø—‘ˆØ�	ˆØˆŒ	ØˆŒØˆŒ
ØˆŒØˆŒÜˆŒ	Ü˜˜1“+ˆŒÜ“VˆŒ
ØˆŒØ—H‘HˆŒ	Ü˜˜1“+ˆŒØ—7‘7ˆŒô		ò		ñ ˜Ÿ™×,Ñ,¨SÔ1Ø  a¡¨1¡˜~¨X´iÀÀaÁÓ6IÐ5JÈ!ÌIÐV[Ð\]ÑV^ÓL_ÐK`ÐaˆDŒHØ�?Š?ØˆDŒIÜ ˆDŒIØ�xŠxØˆDŒIÜ!ˆDŒIÚ�T—X“XØ—x‘x×'Ñ'¨°YÓ?ˆDŒHØ�x‰x×"Ñ" 3Õ'Ü%�”	Ü—H‘HÐVÐX\×X`ÑX`Óa�ÙÜ # A§G¡G¨A£J£°!Ñ 3�D”IÜ#¤E¨1¯7©7°1«:Ó$7¼¸q¿w¹wÀq»zÓ9JÓK�D”GØ!%§¡Ô.?Ñ!?ÔBSÑ!S�D–JäŸ™Ð!3°T·X±XÓ>�AÙÜ$'¨¯©°«
£O°aÑ$7˜�	ä$.˜œ	ÜŸH™HÐ%7¸¿¹ÓB˜Ù'˜˜xÙ#©Ù$,¨Q¯W©W°Q«ZÓ$8˜EØ)1×)?Ñ)?Ó)A×)EÑ)EÀeÓ)L˜DœJØ#Ÿz™zÐ1ô .2«V ¤
Ø6;˜DŸJ™J {Ò3á)4°T·X±X¸a¸b°\Ó)B˜D�Jä&�”	Ù(¨¯©Ó2�”
Ø�?‹?Ø—8’8ÙØ—‘×$Ñ$ WÔ-Ø!%§¡¨!¨" �”Ø—>‘>×,Ñ,¨TÔ2Ø%)§^¡^°A°BÐ%7�D”NØ#�”Ø�”Ü'�”	Ø—~‘~×+Ñ+¨CÓ0�Ü�t“9 ’>Ø˜A‘w×)Ñ)¨'Ô2Ü$.˜œ	Ø)-¨a©˜œÜ$'¨¨Q©¯©°cÓ(:¸1Ñ(=¸a¸bÐ(AÓ$BÀQÑ$F˜�	Ø˜Ÿ™‘Ø"�”Ü$�•	à"�”Ü'�”	Ü˜$Ÿ*™*¤dÔ+Ð+Ñ+r)   r+   ©r.   r/   r0   rN  rŠ   r,   r)   r(   rØ
  rØ
  ±"  s   „ Ù-ôb,r)   rØ
  c                   ód   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ «       Zd„ Zd„ Zdd„Zy)r'  z6
    Class describing a PDF form field ("widget")
    c                 ó¶  — 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| _        y )Nrÿ  r   ©r   r   r   ÚHelvrZ   )r«  Úborder_styleÚborder_widthÚborder_dashesÚchoice_valuesÚ	rb_parentÚ
field_nameÚfield_labelÚfield_valueÚfield_flagsÚfield_displayÚ
field_typeÚfield_type_stringrD  Úbutton_captionÚ	is_signedrå   Ú	text_fontÚtext_fontsizeÚtext_maxlenÚtext_formatÚ_text_dar]
  Úscript_strokeÚscript_formatÚscript_changeÚscript_calcÚscript_blurÚscript_focusrä   rý   r-   s    r(   rŠ   zWidget.__init__#  sï   € Ø ˆÔØˆÔØˆÔØ!ˆÔØ!ˆÔØˆŒàˆŒØˆÔØˆÔØˆÔØˆÔØˆŒØ!%ˆÔàˆŒØ"ˆÔØˆŒØ#ˆŒØˆŒØˆÔØˆÔØˆÔØˆŒàˆŒØ!ˆÔØ!ˆÔØ!ˆÔØˆÔØˆÔØ ˆÔàˆŒ	Øˆ�	r)   c                 ó<   — d| j                   › d| j                  › d�S )NzWidget:(field_type=z script=rˆ  )ry  r]
  r-   s    r(   rÚ   zWidget.__repr__B#  s%   € ð % T×%;Ñ%;Ð$<¸HÀTÇ[Á[ÀMÐQRÐSÐSr)   c                 ó´   — | j                   sd| _         yd}|D ]6  }| j                   j                  «       |j                  «       k(  sŒ/|| _          y d| _         y)zAEnsure text_font is from our list and correctly spelled.
        rm  N)ÚCourÚTiRorm  ÚZaDb)r|  r¿  )r'   Úvalid_fontsr¸  s      r(   Ú_adjust_fontzWidget._adjust_fontH#  sU   € ð �~Š~Ø#ˆDŒNØØ6ˆÛˆAØ�~‰~×#Ñ#Ó%¨¯©«Ó2Ø!"�”Ùð ð  ˆŒØr)   c           	      óü  — | j                   t        dd«      vrt        d«      ‚| j                   t        j                  k(  r¼| j
                  dvr­t        | d«      r | j                  j                  }|j                  | j                  d«      \  }}|dk(  ret        t        t        |dd j                  d	d
«      j                  «       «      «      }|D ]%  }|| j                  k7  sŒ|j                  |dd«       Œ' yyyyy)z Any widget type checks.
        r   r   zbad field type)FÚOffrÖ   zParent/Kidsr³  r…  rF  rZ   ÚASz/OffN)rx  r8  r²   r�   ÚPDF_WIDGET_TYPE_RADIOBUTTONru  r9   rÖ   rÐ  rý   r¢   rÇ  r3   rÊ  r5   r[  )r'   r  Ú	kids_typeÚ
kids_valuer0  rý   s         r(   Ú_checkerzWidget._checkerV#  sô   € ð �?‰?¤%¨¨1£+Ñ-ÜÐ-Ó.Ð.ð �?‰?œe×?Ñ?Ò?ÀD×DTÑDTÐ\jÑDjÔovÐw{ð  ~Fô  pGð —+‘+×$Ñ$ˆCØ$'×$4Ñ$4°T·Y±YÀÓ$NÑ!ˆI�zØ˜GÒ#Üœc¤# z°!°BÐ'7×'?Ñ'?ÀÀbÓ'I×'OÑ'OÓ'QÓRÓS�Û!�DØ˜tŸy™yÓ(Ø×(Ñ(¨¨t°VÕ<ñ "ð $ð pGÐDjÐ?r)   c                 ó   — | j                   syd}d}d}| j                   j                  «       }t        |«      D ]¢  \  }}|dk(  r2||dz
     dd }t        ||dz
     «      }dx||<   x||dz
  <   ||dz
  <   Œ=|d	k(  r t        ||dz
     «      g}dx||<   ||dz
  <   Œb|d
k(  sŒh||dz
  | D �cg c]  }t        |«      ‘Œ }}dx||<   x||dz
  <   x||dz
  <   ||dz
  <   Œ¤ || _        || _        || _        d| _         yc c}w )z°Extract font name, size and color from default appearance string (/DA object).

        Equivalent to 'pdf_parse_default_appearance' function in MuPDF's 'pdf-annot.c'.
        Nrm  r   rl  ÚTfr   r   rZ   ÚgÚrgr   )r€  r5   rã  r\  r|  r}  rå   )r'   rH  rä  rK  ÚdatrL  rA   r¸  s           r(   rù   zWidget._parse_dak#  sK  € ð
 �}Š}ØØˆØˆØˆØ�m‰m×!Ñ!Ó#ˆÜ  –~‰GˆAˆtØ�tŠ|Ø˜1˜q™5‘z ! "�~�Ü˜c ! a¡%™jÓ)�Ø/1Ð1��A‘Ð1˜˜Q˜q™S™ C¨¨!©¡HØØ�sŠ{Ü˜c ! a¡%™jÓ)Ð+�Ø$&Ð&��A‘˜˜Q˜q™S™ØØ�t‹|Ø),¨Q°©U°1©Ó6© A”u˜Q•x¨�Ð6Ø:<Ð<��A‘Ð<˜˜Q˜q™S™Ð< C¨¨!©¡H¨s°1°Q±3©xØð &ð ˆŒØ"ˆÔØˆŒØˆŒØùò 7s   Â+C;c                 óÚ  — | j                   j                  s| j                   j                  rt        d«      ‚| j                  st        d«      ‚| j
                  dk(  rd| _        t        | j                  «       t        | j                  «       | j                  sd| _	        t        | j                  «       | j                  sd| _
        | j                  sd| _        | j                  j                  «       dd | _        | j                  t        j                   t        j"                  t        j$                  fv }| j&                  sd| _        n&t)        | j&                  «      t*        urt        d«      ‚|s| j,                  sd| _        n&t)        | j,                  «      t*        urt        d	«      ‚|s| j.                  sd| _        n&t)        | j.                  «      t*        urt        d
«      ‚|s| j0                  sd| _        n&t)        | j0                  «      t*        urt        d«      ‚|s| j2                  sd| _        n&t)        | j2                  «      t*        urt        d«      ‚|s| j4                  sd| _        n&t)        | j4                  «      t*        urt        d«      ‚|s| j6                  sd| _        n&t)        | j6                  «      t*        urt        d«      ‚| j9                  «        y)z$Validate the class entries.
        zbad rectzfield name missingÚUnnamedNrl  r   r   zscript content must be a stringz$script_calc content must be a stringz&script_change content must be a stringz&script_format content must be a stringz&script_stroke content must be a stringz$script_blur content must be a stringz%script_focus content must be a string)rä   Úis_infiniteÚis_emptyr²   rs  rt  r]  r«  rD  rå   ro  r}  rn  r 	  rx  r�   ÚPDF_WIDGET_TYPE_BUTTONÚPDF_WIDGET_TYPE_CHECKBOXr‘  r]
  r·   rÙ   r„  rƒ  r‚  r�  r…  r†  r”  )r'   Úbtn_types     r(   Ú	_validatezWidget._validateŠ#  sZ  € ð �I‰I×!Ò!Ø�y‰y×!Ò!ä˜ZÓ(Ð(à�ŠÜÐ1Ó2Ð2à×Ñ˜yÒ(Ø#ˆDÔÜ�4×$Ñ$Ô%Ü�4—?‘?Ô#Ø�ŠØ'ˆDŒOÜ�4—?‘?Ô#à× Ò Ø !ˆDÔà×!Ò!Ø!"ˆDÔà ×-Ñ-×3Ñ3Ó5°a¸Ð:ˆÔð —?‘?Ü×,Ñ,Ü×.Ñ.Ü×1Ñ1ð'ð ˆð
 �{Š{ØˆD�KÜ�$—+‘+Ó¤cÑ)ÜÐ>Ó?Ð?ñ ˜4×+Ò+Ø#ˆDÕÜ�$×"Ñ"Ó#¬3Ñ.ÜÐCÓDÐDá˜4×-Ò-Ø!%ˆDÕÜ�$×$Ñ$Ó%¬SÑ0ÜÐEÓFÐFá˜4×-Ò-Ø!%ˆDÕÜ�$×$Ñ$Ó%¬SÑ0ÜÐEÓFÐFá˜4×-Ò-Ø!%ˆDÕÜ�$×$Ñ$Ó%¬SÑ0ÜÐEÓFÐFá˜4×+Ò+Ø#ˆDÕÜ�$×"Ñ"Ó#¬3Ñ.ÜÐCÓDÐDá˜4×,Ò,Ø $ˆDÕÜ�$×#Ñ#Ó$¬CÑ/ÜÐDÓEÐEà�‰�r)   c                 ó$  — | j                   sy| j                  j                  }|sJ ‚t        |«      }t        j                  || j                   «      }t        j
                  |t        d«      «      }|j                  «       sy|j                  t        d«      | j                  «       |j                  t        d«      «      }|j                  «       st        d«       yt        |j                  «       «      D ]—  }|j                  |«      }|j                  «       sŒ%|j                  «       }|| j                   k(  rŒE|j                  t        d«      «      }	|	j!                  «       dk(  sŒs|j                  t        d«      | j                  «       Œ™ y)	a  Propagate the field flags.

        If this widget has a "/Parent", set its field flags and that of all
        its /Kids widgets to the value of the current widget.
        Only possible for widgets existing in the PDF.

        Returns True or False.
        Fr†  ÚFfrn  z0warning: malformed PDF, Parent has no Kids arrayrs  r'  T)rý   rÖ   r½   r�   rw  ró   rô   rg  r5  rv  rv  rp   r8  r‰  rŠ  rî   rf  )
r'   r  rF  Ú
pdf_widgetr†  rp  rL  rq  rý   râ  s
             r(   Ú_sync_flagszWidget._sync_flagsÑ#  sM  € ð �yŠyØØ�k‰k× Ñ ˆÙˆ
ˆsÜ˜sÓ#ˆä×*Ñ*¨3°·	±	Ó:ˆ
Ü×#Ñ# J´¸Ó0BÓCˆØ×!Ñ!Ô#Øð 	×Ñ¤¨£°×0@Ñ0@ÔAð ×"Ñ"¤8¨FÓ#3Ó4ˆØ× Ñ Ô"ÜÐFÔGØä�t×)Ñ)Ó+Ö,ˆAà×$Ñ$ QÓ'ˆCØ—?‘?Ô$ØØ—>‘>Ó#ˆDØ�t—y‘yÒ ØØ×&Ñ&¤x°	Ó':Ó;ˆGØ×&Ñ&Ó(¨HÒ4Øà× Ñ ¤¨$£°×1AÑ1AÕBð -ð r)   c                 ó  — | j                   dvryt        | d«      r| j                  j                  }ny| j                  }dddœ}|j	                  |d«      }|d   dk(  rLg }|d   d	d
 }|j                  d«      dd }|D ]$  }|j                  |j                  «       d   «       Œ& ||d<   |d   dk(  rug }t        |d   j                  d«      d   «      }|j                  |«      }|j                  d«      dd }|D ]$  }|j                  |j                  «       d   «       Œ& ||d<   |j	                  |d«      }	|	d   dk(  rLg }
|	d   d	d
 }	|	j                  d«      dd }|D ]$  }|
j                  |j                  «       d   «       Œ& |
|d<   |	d   dk(  rug }
t        |	d   j                  d«      d   «      }|j                  |«      }	|	j                  d«      dd }|D ]$  }|
j                  |j                  «       d   «       Œ& |
|d<   |S )a	  Return the on/off state names for button widgets.

        A button may have 'normal' or 'pressed down' appearances. While the 'Off'
        state is usually called like this, the 'On' state is often given a name
        relating to the functional context.
        ©r   r   NrÖ   )r>  r„  zAP/Nr   r4   r   r   rÁ  r"  r>  rý   r    zAP/Dr„  )	rx  r9   rÖ   rý   rÐ  r5   ri   r3   rh  )r'   r  rý   ÚstatesÚAPNÚnstatesÚapntr  ÚnxrefÚAPDÚdstatesÚapdtÚdxrefs                r(   Úbutton_stateszWidget.button_statesþ#  s  € ð �?‰? &Ñ(ØÜ�4˜Ô"Ø—+‘+×$Ñ$‰CàØ�y‰yˆØ ¨$Ñ/ˆØ×Ñ˜t VÓ,ˆØˆq‰6�VÒØˆGØ�a‘&˜˜2�,ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Õ,ð à&ˆF�8ÑØˆq‰6�VÒØˆGÜ˜˜A™Ÿ™ SÓ)¨!Ñ,Ó-ˆEØ—/‘/ %Ó(ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Õ,ð à&ˆF�8ÑØ×Ñ˜t VÓ,ˆØˆq‰6�VÒØˆGØ�a‘&˜˜2�,ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Õ,ð à$ˆF�6‰NØˆq‰6�VÒØˆGÜ˜˜A™Ÿ™ SÓ)¨!Ñ,Ó-ˆEØ—/‘/ %Ó(ˆCØ—9‘9˜S“> ! "Ð%ˆDÛ�Ø—‘˜qŸw™w›y¨™|Õ,ð à$ˆF�6‰NØˆr)   c                 ó.   — | j                   j                  S r+   )Ú_annotr*  r-   s    r(   r*  zWidget.next/$  s   € à�{‰{×ÑÐr)   c                 óÄ   — | j                   dvry| j                  «       }|€
t        «       }|j                  «       D ]  }||   D ]  }|dk7  sŒ	|c c S  Œ t	        d«       y)a�  Return the "On" value for button widgets.
        
        This is useful for radio buttons mainly. Checkboxes will always return
        "Yes". Radio buttons will return the string that is unequal to "Off"
        as returned by method button_states().
        If the radio button is new / being created, it does not yet have an
        "On" value. In this case, a warning is shown and True is returned.
        r§  Nr�  z(warning: radio button has no 'On' value.T)rx  r±  r4   r®  rp   )r'   Úbstater�  rD   s       r(   Úon_statezWidget.on_state3$  se   € ð �?‰? &Ñ(ØØ×#Ñ#Ó%ˆØˆ>Ü“VˆFØ—‘–ˆAØ˜A”Y�Ø˜“:Ø”Hñ ð ô 	Ð:Ô;Ør)   c                 óB   — t         j                  | j                  «       y)z.Reset the field value to its default.
        N)rø   Ú_reset_widgetr³  r-   s    r(   r	  zWidget.resetH$  s   € ô 	×Ñ˜DŸK™KÕ(r)   c                 ób  — | j                  «        | j                  «        d| _        t        | j                  «      dk(  rd| j                  z   }nOt        | j                  «      dk(  rd| j                  z   }n't        | j                  «      dk(  rd| j                  z   } j
                  | j                  | j                  | j                  dœŽ| _        | j                  rt        | j                  «       t        j                  | j                  | «       d| _        |r| j                  «        y	y	)
z!Reflect Python object in the PDF.rZ   r   ú!{:g} {:g} {:g} rg /{f:s} {s:g} Tfr   z{:g} g /{f:s} {s:g} Tfr8  z%{:g} {:g} {:g} {:g} k /{f:s} {s:g} Tf©r¸  r_  N)r¡  r�  r€  r6   rå   r–  r|  r}  r„  Úutil_ensure_widget_calcr³  rø   Ú_save_widgetr¥  )r'   Ú
sync_flagsrž   s      r(   rû  zWidget.updateM$  sí   € à�‰Ôà×ÑÔð ˆŒÜ�—‘Ó! QÒ&Ø5¸¿¹ÑE‰CÜ�—‘Ó! QÒ&Ø*¨T¯]©]Ñ:‰CÜ�—‘Ó! QÒ&Ø9¸D¿M¹MÑIˆCØ"˜Ÿ
™
 D§O¡O°t·~±~Ø&*×&8Ñ&8ò:ˆŒð ×Òä# D§K¡KÔ0ô 	×Ñ˜4Ÿ;™;¨Ô-ØˆŒÙØ×ÑÕð r)   Nr©  )r.   r/   r0   rN  rŠ   rÚ   r�  r”  rù   r¡  r¥  r±  r!  r*  r¶  r	  rû  r,   r)   r(   r'  r'  #  sW   „ ñò#òJ8òò=ò*ò>EòN+òZ/ðb ñ ó ð òò*)ô
r)   r'  )Ú_extrac                   ó¾   — e Zd Zd„ Zed„ «       Zd„ Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       ZdgZy)r<  c                 ó   — || _         y r+   )r³   ©r'   rÍ  s     r(   rŠ   zOutline.__init__q$  s	   € Øˆ�	r)   c                 ó   — t        | dd«      S )zoutline destination detailsN©rØ
  r-   s    r(   r¯  zOutline.destt$  s   € ô ˜˜d DÓ)Ð)r)   c                 ó   — t        | d|«      S )zo
        Like `dest` property but uses `document` to resolve destinations for
        kind=LINK_NAMED.
        NrÄ  )r'   r¸   s     r(   ÚdestinationzOutline.destinationy$  s   € ô
 ˜˜d HÓ-Ð-r)   c                 ój   — | j                   }|j                  «       }|j                  sy t        |«      S r+   )r³   r„  r»   r<  )r'   rÍ  Údown_ols      r(   r„  zOutline.down€$  ó-   € à�Y‰YˆØ—'‘'“)ˆØ×!Ò!ØÜ�wÓÐr)   c                 óÚ   — t         rt        j                  | j                  «      S | j                  }|j                  sy|j                  j
                  }|€yt        j                  |«      S r®  )r  r¿  ÚOutline_is_externalr³   r»   rM  r�   rÜ
  )r'   rÍ  rM  s      r(   r�  zOutline.is_externalˆ$  sW   € åô ×-Ñ-¨t¯y©yÓ9Ð9Ø�Y‰YˆØ�}Š}ØØ�m‰m×ÑˆØˆ;ØÜ×(Ñ(¨Ó-Ð-r)   c                 óD   — 	 | j                   j                  j                  S r+   )r³   r»   r  r-   s    r(   r  zOutline.is_open—$  s   € àØ—9‘9×'Ñ'×/Ñ/Ð/r)   c                 ój   — | j                   }|j                  «       }|j                  sy t        |«      S r+   )r³   r*  r»   r<  )r'   rÍ  Únext_ols      r(   r*  zOutline.next�$  rÉ  r)   c                 óX   — 	 | j                   j                  j                  j                  S r+   )r³   r»   rÅ   r-   s    r(   rÅ   zOutline.page¥$  s!   € àØ—9‘9×'Ñ'×,Ñ,×1Ñ1Ð1r)   c                 óB   — | j                   j                  j                  S r+   )r³   r»   rf  r-   s    r(   rf  zOutline.title«$  s   € à�y‰y×#Ñ#×)Ñ)Ð)r)   c                 ó`   — | j                   }|j                  sy |j                  j                  S r+   )r³   r»   rM  rÂ  s     r(   rM  zOutline.uri¯$  s%   € à�Y‰YˆØ�}Š}ØØ�}‰}× Ñ Ð r)   c                 óB   — | j                   j                  j                  S r+   )r³   r»   r  r-   s    r(   r  z	Outline.x¶$  ó   € à�y‰y×#Ñ#×%Ñ%Ð%r)   c                 óB   — | j                   j                  j                  S r+   )r³   r»   r  r-   s    r(   r  z	Outline.yº$  rÓ  r)   r³   N)r.   r/   r0   rŠ   r!  r¯  rÆ  r„  r�  r  r*  rÅ   rf  rM  r  r  r8
  r,   r)   r(   r<  r<  o$  sÝ   „ òð ñ*ó ð*ò.ð ñ ó ð ð ñ.ó ð.ð ñ#ó ð#ð
 ñ ó ð ð ñ%ó ð%ð
 ñ*ó ð*ð ñ!ó ð!ð ñ&ó ð&ð ñ&ó ð&ð �	�Ir)   r<  c                 ó`  ‡— t        j                  «       }| |_        ||_        ||_        ||_        |rz‰rt        ‰t         j                  «      sJ ‚t        j                  «       Š G ˆfd„dt         j                  «      } |«       }|j                  |j                  «       «       ||_        |S )z4
    Returns a mupdf.PdfFilterOptions instance.
    c                   ó(   •‡ — e Zd Zˆ ˆfd„Zd„ Zˆ xZS )ú'_make_PdfFilterOptions.<locals>.Factoryc                 óP   •— t         ‰| �  «        | j                  «        ‰| _        y r+   )r¶   rŠ   Úuse_virtual_filterÚsopts)r'   Ú	__class__rÚ  s    €€r(   rŠ   z0_make_PdfFilterOptions.<locals>.Factory.__init__á$  s!   ø€ Ü‘Ñ Ô"Ø×'Ñ'Ô)Ø"�•
r)   c           	      óh   — 	 t        j                  |||||| j                  j                  «       «      S r+   )r&   rÚ  rî  r�   Úll_pdf_new_sanitize_filter)r'   Úctxr  ÚchainÚstruct_parentsÚ	transformrõ  s          r(   Úfilterz._make_PdfFilterOptions.<locals>.Factory.filterå$  s9   € Øô ×7Ñ7ØØØ&Ø!ØØŸ
™
×+Ñ+Ó-óð r)   )r.   r/   r0   rŠ   râ  Ú__classcell__)rÛ  rÚ  s   @€r(   ÚFactoryr×  à$  s   ù„ õ#ör)   rä  )r�   ÚPdfFilterOptionsrw  rx  ry  Ú	no_updater<   ÚPdfSanitizeFilterOptionsÚPdfFilterFactory2Úadd_factoryrî  Ú_factory)	rw  rx  ry  ræ  rz  rÚ  r~  rä  Úfactorys	        `   r(   r|  r|  Á$  sœ   ø€ ô ×$Ñ$Ó&€GØ€G„OØ+€GÔØ€G„Mà!€GÔÙñ Ü˜e¤U×%CÑ%CÔDÐDÐDä×2Ñ2Ó4ˆEö	”e×-Ñ-ô 	ñ2 “)ˆØ×Ñ˜G×,Ñ,Ó.Ô/Ø"ˆÔØ€Nr)   c            /       ó(  — e Zd Zd„ Zd„ Zd„ Zd„ Zdòd„Zddddddddej                  d	ddd
dfd„Z
d„ Zd„ Zd„ Zdód„Zd„ Zdmd„Zdôd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdedefd„Zd„ Zdõd„Z	 	 	 död„Zd „ Zd!„ Zd÷d"„Z d#„ Z!død%„Z"d&„ Z#dùd'„Z$d(„ Z%d)„ Z&dúd*„Z'd+e(de)fd,„Z*d-e+de)fd.„Z,	 	 	 dòd+e(d/e-d0e.d1ed2ed3ede)fd4„Z/ddddddddej                  d	ddd
dd5œd-e+d6e.d7e0d8ed9e1d:e1d;e1d<e0d=e1d>e1d?e2d@e0dAe2dBe2de)fdC„Z3	 	 dûde)fdD„Z4dEe5de)fdF„Z6dGe(dHe(de)fdI„Z7dJe5de)fdK„Z8dJe5de)fdL„Z9d-e+de)fdM„Z:	 	 	 	 	 	 	 düd6ed8ed7e0dAe2dNe1d9e1dOe;de)fdP„Z<	 	 	 	 dûde)fdQ„Z=dmd-e+de)fdR„Z>dûde)fdS„Z?dýd+e(d6e.d3e.de)fdT„Z@dûde)fdU„ZAdVeBde)fdW„ZCdX„ ZDdY„ ZEdôdZ„ZF	 	 	 dþd[d d\e2d]e2d6e2de;f
d^„ZGdÿd_„ZHd`„ ZIeJda„ «       ZKeJdb„ «       ZLdc„ ZMdÿdd„ZNeJde„ «       ZOeJdf„ «       ZPdg„ ZQd[d dhe2fdi„ZRdj„ ZSd[d dVeBdeBfdk„ZTeJdeUfdl„«       ZV	 	 	 	 	 	 	 	 	 	 	 	 �d d[d dGe(dHe(dne(doe(dpe1dNe1d=edqe0dredse;dte2due2dve;dwe0dxe0de2deWf$dy„ZX	 	 	 	 	 	 	 	 	 	 	 �dd[d dze(d{e0dpe1dNe1dre1d=edqe0dte2due2dve;dwe0dxe0de2deWfd|„ZY	 	 	 	 	 	 	 	 	 	 	 	 �d d[d dGe(dHe(dne(dpe1dNe1d=edqe0dre1dse;dte2due2dve;dwe0dxe0de2deWf"d}„ZZ	 	 	 	 	 	 	 	 	 	 �dd[d dGe(dHe(dpe1d=edqe0dte2due2dve;dre1dwe0dxe0deWfd~„Z[	 	 	 	 	 	 	 	 	 	 	 �dd[d d-e\jº                  e+e^f   dpe1dNe1d=edre1dqe0dte2due2dve;dwe0dxe0de2deWfd„Z_	 	 	 	 	 	 	 	 	 	 	 	 �dd[d dJe5dpe1dNe1d=edqe0dre1dte2due2dve;dse;dwe0dxe0de2deWfd€„Z`	 	 	 	 	 	 	 	 	 	 	 �dd[d d�e^dpe1dNe1d=edqe0dte2due2dre1dve;dwe0dxe0de2deWfd‚„Za	 	 	 	 	 	 	 	 	 	 	 	 �dd[d d-e+dpe1dNe1d=edqe0dte2due2dre1dve;dwe0dxe0de2deWfdƒ„Zb	 	 	 	 	 	 	 	 	 	 	 	 	 �dd[d dze(d+e(d„e0dpe1dNe1d=ed…e;dre1dqe0dse;dte2due2dve;dwe0dxe0de2deWf$d†„Zc	 	 	 	 	 	 	 	 	 	 	 �dd[d dGe(dHe(d‡e0dpe1d=edqe0dte2due2dve;dre1dwe0dxe0de2deWfdˆ„Zd	 	 	 	 	 	 	 	 	 	 	 �dd[d dGe(dHe(d‡e0dpe1d=edqe0dte2due2dve;dre1dwe0dxe0de2deWfd‰„Ze�ddŠ„ZfeJd‹„ «       ZgeJdŒ„ «       ZheJd�„ «       ZidôdŽ„Zjdòd�„Zkd�„ Zldÿd‘„Zm�d	d’e;de5fd“„Zn	 	 �d
d[d d”e;d•e;de5fd–„Zo�d	d[d de5fd—„Zpd˜„ Zqd[d de5fd™„Zresdddd
d$dšœd[d d›etdœeud�e+dže;dŸe;dd fd¡„Zvd¢„ Zw	 	 �dd£e0d¤e0d¥e;de5fd¦„Zx�d	d§„Zydmd¨„Zz�d	d©„Z{de5fdª„Z|�dd«„Z}	 dôd[e~d-e+de.fd¬„Zd­„ Z€d®„ Z�d¯„ Z‚d°„ Zƒd±„ Z„dõd�e+d²e2dd³fd´„Z…dµ„ Z†d¶„ Z‡	 	 �dd¸„Zˆdddddd	d$d$d
d¹œ	de‰fdº„ZŠdddd$ddd$dddddd»œd¼„Z‹død[d d½eŒd¾e;ddfd¿„Z�ddd·ddddddÀd	dddd$d	d	ddÁœd[d d+e(d6e\jº                  e.e5f   d7e0dÂeŽd8e.dÃedÄe2dÅe2dpe1dNe1d<e0dÆe0dÇe2dBe2dre1dve;dwe0dxe0de2f(dÈ„Z�d·dddddddd	dddd	dÀdd$d	d	ddÉœd[d d-e+dÊe\jº                  e.e5f   d8e.dÃedÄe2dÅe2d7e0dÂeŽdpe1dNe1dËe2dAe2dBe2dÇe2dÆe0d<e0dre1dve;dwe0dxe0de2de0f.dÌ„Z�eJdÍ„ «       Z‘eJdÎ„ «       Z’dôdÏ„Z“dÐe\jº                  e.e2f   de)fdÑ„Z”dÒ„ Z•dÓ„ Z–eJdÔ„ «       Z—eJdÕ„ «       Z˜dÖ„ Z™d×„ ZšdØ„ Z›ddddÙœd[d dhe2fdÚ„ZœeJdÛ„ «       Z�eJdeUfdÜ„«       ZždÝ„ ZŸdd
dddÞœde5fdß„Z dà„ Z¡dá„ Z¢dâ„ Z£dã„ Z¤dôdä„Z¥då„ Z¦dæ„ Z§dç„ Z¨	 	 	 	 	 	 �dde2fdè„Z©eJdé„ «       ZªeJdê„ «       Z«d[d d½eŒddfdë„Z¬dôdì„Z­dí„ Z®	 	 	 	 	 	 	 	 �d	 	 	 �ddî„Z¯eJdï„ «       Z° eJeMdð¬ñ«      Z±y(  rÁ   c                 ó®  — t        |t        j                  t        j                  f«      s
J d|› �«       ‚|| _        d| _        d | _        d| _        t        «       | _	        || _
        |j                  r\t        |t        j                  «      r&|j                  j                  j                  | _        y |j                  j                  | _        y d | _        y )Nz	page is: TrZ   )r<   r�   rÃ   rÂ   r³   rÞ   Ú
last_pointÚ	draw_contr4   r%  rÖ   r»   r¶   r8  )r'   rÅ   r¸   s      r(   rŠ   zPage.__init__%  sœ   € Ü˜$¤§¡¬u¯}©}Ð =Ô>ÐRÀ)ÈDÈ6Ð@RÓRÐ>ØˆŒ	ØˆŒØˆŒØˆŒÜ›6ˆÔØˆŒØ�?Š?Ü˜4¤§¡Ô/Ø"Ÿo™o×3Ñ3×:Ñ:�•à"Ÿo™o×4Ñ4�•àˆD�Kr)   c                 ó"   — | j                  «       S r+   )rÜ   rS  rÖ   r   r   r	  r8  r’  s     r(   rÚ   zPage.__repr__%  s   € Ø�|‰|‹~Ðr)   c                 óø  — t        | dd «      }t        | j                  j                  t        j
                  «      r+| j                  j                  j                  j                  }n | j                  j                  j                  }d|› �}|rl| j                  j                  }| j                  j                  �d| j                  j                  fz  }|dk(  rd| j                  j                  z  }|d|› �z  }|S )NrÖ   rã  z<memory, doc# %i>rZ   z<new PDF, doc# %i>ú of )rØ   r<   r³   r»   r�   Úpdf_pager¶   r8  rÖ   r   r   r	  )r'   rÖ   r8  rE   r  s        r(   rÜ   zPage.__str__%  sÍ   € ä˜˜x¨Ó.ˆÜ�d—i‘i×*Ñ*¬E¯N©NÔ;Ø—Y‘Y×)Ñ)×/Ñ/×6Ñ6‰Fà—Y‘Y×)Ñ)×0Ñ0ˆFØ�f�XÐˆÙØ—‘× Ñ ˆAØ�{‰{×!Ñ!Ð-Ø'¨4¯;©;×+@Ñ+@Ð*BÑB�Ø�BŠwØ(¨4¯;©;×+@Ñ+@Ñ@�Ø�T˜!˜�:ÑˆCØˆ
r)   c                 ój  — t         r+t        j                  | j                  t	        |«      «      }|S | j                  «       }t        j                  |t        j                  «      }|rªt	        |«      }t        j                  |«      }t        j                  |j                  |j                  |j                  |j                  z   |j                  z
  |j                  |j                  z   |j                   z
  «      }t        j"                  ||«       t        j$                  |«       t'        |d«       |S ©Nrð  )r  r   Ú_add_caret_annotr³   ÚJM_point_from_pyÚ	_pdf_pager�   Úpdf_create_annotr/  Úpdf_annot_rectrU  r  r  r÷  rø  rù  rú  rž  r<  ÚJM_add_annot_id)r'   r  rÎ   rÅ   r�  r  s         r(   rö  zPage._add_caret_annot,%  sÞ   € ÝÜ×*Ñ*¨D¯I©IÔ7GÈÓ7NÓOˆEð ˆð —>‘>Ó#ˆDÜ×*Ñ*¨4´×1FÑ1FÓGˆEÙÜ$ UÓ+�Ü×(Ñ(¨Ó/�Ü—L‘L §¡ a§c¡c¨1¯3©3°·±©:¸¿¹Ñ+<¸a¿c¹cÀAÇDÁD¹jÈ1Ï4É4Ñ>OÓP�Ü×(Ñ(¨°Ô2Ü×"Ñ" 5Ô)Ü˜E 3Ô'Øˆr)   Nc                 óV  — | j                  «       }|r|n|}|r|n|}	t        |«      }
t        |«      }|j                  st	        t
        «      ‚t        j                  |t        j                  «      }t        j                  |«      }t        j                  |
j                  |
j                  |
j                  |j                  z   |j                  z
  |
j                  |j                  z   |j                   z
  «      }t        j"                  ||«       t        j$                  }t        j&                  ||«       |rt        j(                  ||«       t+        |j-                  «       ||||	d«      }t        j.                  t        j0                  |«      t3        d«      |«       t        j4                  t        j0                  |«      t3        d«      |«       t        j6                  |«       t        j"                  ||«       t        j&                  ||«       t9        |d«       t;        |«      S )Nr   r“  rÿ  rð  )rø  r÷  r  r»   rœ  r  r�   rù  r1  rú  Úfz_make_rectr  r  r÷  rø  rù  rú  rž  ÚPDF_ANNOT_IS_PRINTrb  Úpdf_set_annot_icon_namerÙ  r  r:  rì   rô   rm  r<  rû  rÑ   )r'   r  r  rd   r  r§  ÚiconrÅ   Úufrõ  r�  ÚfilebufrÎ   r  r¬  rÿ   s                   r(   Ú_add_file_annotzPage._add_file_annot;%  s–  € Ø�~‰~ÓˆÙ#‰Y¨ˆÙ‰D˜hˆÜ˜UÓ#ˆÜ$ WÓ-ˆØ×!Ò!Üœ^Ó,Ð,Ü×&Ñ& t¬U×-LÑ-LÓMˆÜ× Ñ  Ó'ˆÜ×Ñ˜qŸs™s A§C¡C¨¯©¨q¯t©t©°a·d±dÑ):¸A¿C¹CÀ!Ç$Á$¹JÈÏÉÑ<MÓNˆÜ× Ñ  ¨Ô*Ü×(Ñ(ˆÜ×!Ñ! %¨Ô/áÜ×)Ñ)¨%°Ô6ä˜DŸH™H›J¨°¸2¸qÀ!ÓDˆÜ×Ñœ5×.Ñ.¨uÓ5´xÀ³~ÀsÔKÜ×&Ñ&¤u×':Ñ':¸5Ó'AÄ8ÈJÓCWÐYaÔbÜ×Ñ˜uÔ%Ü× Ñ  ¨Ô*Ü×!Ñ! %¨Ô/Ü˜˜sÔ#Ü�U‹|Ðr)   rê  r   r   Fc                 óZ  — d|› �}| j                  «       }|r|st        d«      ‚|r|s|}t        |«      \  }}t        |«      \  }}t        |«      }t	        j
                  |«      st	        j                  |«      rt        t        «      ‚t	        j                  |t        j                  «      }t	        j                  |«      }|st	        j                  ||«       nBt	        j                  |t        d«      |«       |r t	        j                  |t        d«      |«       t	        j                  ||«       |dk  r|dz  }|dk  rŒ|dk\  r|dz  }|dk\  rŒ|dk7  r t	        j                  |t        d«      |«       t	        j                   ||«       |dkD  rt	        j"                  ||d | «       t	        j$                  ||«       t	        j&                  ||«       |	r&|	D ]!  }t	        j(                  |t+        |«      «       Œ# |
rjt	        j,                  |t        d«      t        d	«      «       t	        j.                  ||«       t1        |
«      }t3        j4                  |t7        |
«      |«       |st9        |||||«       t	        j:                  |«       t=        |d
«       t?        |«      }|S )Nzï<?xml version="1.0"?>
            <body xmlns="http://www.w3.org/1999/xtml"
            xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"
            xfa:contentType="text/html" xfa:APIVersion="Acrobat:8.0.0" xfa:spec="2.4">
            r¯  r®  ÚDSr   r¡  r   r¦  ÚFreeTextCalloutrð  ) rø  r²   r'  rí  r�   rœ  r›  r�  rù  r0  rì   rk  rm  rô   rž  r5  Úpdf_set_annot_quaddingr6  Úpdf_set_annot_border_widthrŽ  Úpdf_add_annot_border_dash_itemr\  r:  Úpdf_set_annot_callout_styler6   r   ÚJM_set_annot_callout_liner¢   rÅ  r<  rû  rÑ   )r'   rä   r   rç   ræ   rå   rD  r«  ro  rL  ÚcalloutÚline_endrB  rþ   rE  ÚrichtextrK  r’   rÅ   rH  rI  Úntcolrâ  r  rÎ   r  rõ  Úpoint_countrÿ   s                                r(   Ú_add_freetext_annotzPage._add_freetext_annotV%  sO  € ð$ð ˆFð	ˆð
 �~‰~ÓˆÙ¡ÜÐLÓMÐMÙ¡
Ø%ˆJÜ+¨JÓ7‰ˆˆtÜ+¨JÓ7‰ˆˆtÜ˜DÓ!ˆÜ×$Ñ$ QÔ'¬5×+AÑ+AÀ!Ô+DÜœlÓ+Ð+Ü×&Ñ& t¬U×-FÑ-FÓGˆÜ×'Ñ'¨Ó.ˆ	ñ Ü×(Ñ(¨°Õ5ä×*Ñ*¨9´X¸d³^ÀRÔHÙÜ×.Ñ.¨y¼À$»ÈÔOä× Ñ  ¨Ô*à�qŠjØ�c‰MˆFð �q‹jà˜ŠmØ�c‰MˆFð ˜‹mà�QŠ;Ü×"Ñ" 9¬h°xÓ.@À&ÔIä×$Ñ$ U¨EÔ2à�1Š9Ü×%Ñ% e¨T°&°5¨\Ô:ä×(Ñ(¨°Ô=Ü×#Ñ# E¨7Ô3ÙÛ�Ü×4Ñ4°U¼EÀ!»HÕEð ñ Ü×Ñ˜y¬(°4«.¼(ÐCTÓ:UÔVÜ×-Ñ-¨e°XÔ>Ü˜g›,ˆKÜ×+Ñ+¨E´5¸³>À;ÔOñ Ü˜U E¨4°¸8ÔDä×Ñ˜uÔ%Ü˜˜sÔ#Ü�E‹lˆØˆ
r)   c                 ó`  — t        | j                  «      }t        |«      st        t        «      ‚t        j                  «       }t        j                  |t        j                  d«      |«       t        j                  |«      }t        j                  |t
        j                  «      }t        j                  |«      }t        |«      }t        j                  |j                  «       |«      }t!        |«      D ]ë  }	||	   }
t        |
«      }t        j                  |j                  «       d|z  «      }t!        |«      D ]Ž  }|
|   }t        |«      rt#        |«      dk7  rt        t        «      ‚t        j$                  t'        |«      |«      }t        j(                  ||j*                  «       t        j(                  ||j,                  «       Œ� t        j.                  ||«       Œí t        j0                  |t3        d«      |«       t        j4                  |«       t7        |d«       t9        |«      S )Nr   r   r  rð  )rÉ   r³   ÚPySequence_Checkr²   ÚMSG_BAD_ARG_INK_ANNOTr�   r_  r  rU  Úfz_invert_matrixrù  r2  rì   r6   r7  r  r8  ÚPySequence_Sizer  r÷  r9  r  r  rx  r:  rô   r<  rû  rÑ   )r'   r¡   rÅ   rË  Úinv_ctmrÎ   r  Ún0Úinklistrn  ÚsublistÚn1rU  rL  r�  r  s                   r(   Ú_add_ink_annotzPage._add_ink_annot¦%  s£  € Ü˜DŸI™IÓ&ˆÜ Ô%ÜÔ3Ó4Ð4Ü�n‰nÓˆÜ× Ñ  ¤u§|¡|°A£¸Ô<Ü×(Ñ(¨Ó-ˆÜ×&Ñ& t¬U×-@Ñ-@ÓAˆÜ×'Ñ'¨Ó.ˆ	Ü�‹YˆÜ×%Ñ% d§h¡h£j°"Ó5ˆä�r–ˆAØ˜1‘gˆGÜ�W“ˆBÜ×(Ñ(¨¯©«°Q¸±VÓ<ˆFä˜2–Y�Ø˜A‘J�Ü'¨Ô*¬o¸aÓ.@ÀAÒ.EÜ$Ô&;Ó<Ð<Ü×0Ñ0Ô1AÀ!Ó1DÀgÓN�Ü×)Ñ)¨&°%·'±'Ô:Ü×)Ñ)¨&°%·'±'Õ:ð ô × Ñ  ¨&Õ1ð ô 	×Ñ˜9¤h¨yÓ&9¸7ÔCÜ×Ñ˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr)   c                 ó8  — | j                  «       }t        j                  |t        j                  «      }t	        |«      }t	        |«      }t        j
                  |||«       t        j                  |«       t        |d«       |j                  sJ ‚t        |«      S rõ  )
rø  r�   rù  r*  r÷  Úpdf_set_annot_liner<  rû  r»   rÑ   )r'   r÷  rø  rÅ   rÎ   r    r{
  s          r(   Ú_add_line_annotzPage._add_line_annotÆ%  s}   € Ø�~‰~ÓˆÜ×&Ñ& t¬U×-AÑ-AÓBˆÜ˜RÓ ˆÜ˜RÓ ˆÜ× Ñ  ¨¨1Ô-Ü×Ñ˜uÔ%Ü˜˜sÔ#Ø×ÒÐÐÜ�U‹|Ðr)   c                 ój  — | j                  «       }t        |«      dk  rt        t        «      ‚t	        j
                  ||«      }|D ]@  }t        |«      dk7  rt        t        «      ‚t        |«      }t	        j                  ||«       ŒB t	        j                  |«       t        |d«       t        |«      S )Nr   rð  )rø  r6   r²   ÚMSG_BAD_ARG_POINTSr�   rù  r  r÷  Úpdf_add_annot_vertexr<  rû  rÑ   )r'   rö  rÝ  rÅ   rÎ   r�  r  s          r(   Ú_add_multilinezPage._add_multilineÑ%  s˜   € Ø�~‰~ÓˆÜˆv‹;˜Š?ÜÔ0Ó1Ð1Ü×&Ñ& t¨ZÓ8ˆÛˆAÜ Ó" aÒ'Ü Ô"4Ó5Ð5Ü$ QÓ'ˆEÜ×&Ñ& u¨eÕ4ð	 ô 	×Ñ˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr)   c                 ó  — | j                  «       }g d¢}d}	t        j                  |t        j                  «      }
t	        |«      }t        j
                  |«      }t        j                  |
|«       |rŽt        |«      \  }	}t        j                  |j                  «       |	«      }t        |	«      D ]  }t        j                  |||   «       Œ t        j                  t        j                  |
«      t        d«      |«       |r§|sJ ‚t        j                  t        j                  |
«      dt        j                   |«      «       t        j"                  t        j                  |
«      t        d«      |«       t        j$                  t        j                  |
«      t        d«      |«       t        j&                  |
«       t)        |
d«       t        j*                  |
j,                  «      }
t        j.                  |
«      }
t1        |
«      S )N)r   r   r   r   r   r  râ   ÚDArã   rð  )rø  r�   rù  rê   ÚJM_quad_from_pyÚfz_rect_from_quadrž  r'  r7  r  r8  r9  r:  rì   rô   rn  ro  rm  r5  r<  rû  Úll_pdf_keep_annotr»   rÓ   rÑ   )r'   rú  r   Úda_strrþ   rè   rå   rÅ   rI  rH  rÎ   Úqr  r9  rL  s                  r(   Ú_add_redact_annotzPage._add_redact_annotà%  s‰  € Ø�~‰~ÓˆÚˆØˆÜ×&Ñ& t¬U×-CÑ-CÓDˆÜ˜DÓ!ˆÜ×#Ñ# AÓ&ˆä× Ñ  ¨Ô*ÙÜ/°Ó5‰KˆE�4Ü×%Ñ% d§h¡h£j°%Ó8ˆCÜ˜5–\�Ü×)Ñ)¨#¨t°A©wÕ7ð "ä×Ñœu×2Ñ2°5Ó9¼8ÀD»>È3ÔOÙÙˆM�6Ü×ÑÜ×'Ñ'¨Ó.Ø!Ü×-Ñ-¨dÓ3ôô
 ×*Ñ*¬5×+>Ñ+>¸uÓ+EÄxÐPTÃ~ÐW]Ô^Ü×"Ñ"¤5×#6Ñ#6°uÓ#=¼xÈ»}ÈeÔTÜ×Ñ˜uÔ%Ü˜˜sÔ#Ü×'Ñ'¨×(8Ñ(8Ó9ˆÜ—‘ Ó&ˆÜ�U‹|Ðr)   c                 óv  — | j                  «       }t        |«      }t        j                  |«      st        j                  |«      rt        t        «      ‚t        j                  ||«      }t        j                  ||«       t        j                  |«       t        |d«       |j                  sJ ‚t        |«      S rõ  )rø  rí  r�   rœ  r›  r²   r�  rù  rž  r<  rû  r»   rÑ   )r'   rä   rÝ  rÅ   r  rÎ   s         r(   Ú_add_square_or_circlezPage._add_square_or_circleþ%  s‘   € Ø�~‰~ÓˆÜ˜DÓ!ˆÜ×$Ñ$ QÔ'¬5×+AÑ+AÀ!Ô+DÜœlÓ+Ð+Ü×&Ñ& t¨ZÓ8ˆÜ× Ñ  ¨Ô*Ü×Ñ˜uÔ%Ü˜˜sÔ#Ø×ÒÐÐÜ�U‹|Ðr)   c                 óˆ  — t        |«      }t        |«      }t        j                  |«      st        j                  |«      rt        t        «      ‚| j                  «       }g d¢}t        |«      }d }d }|t        |«      v r||   }nžt        |t        «      r|j                  «       }n}t        |t        «      r$t        j                  |«      j!                  «       }nIt        |t"        t$        f«      r|}n0t        |t&        j(                  «      r|j+                  «       }n|d   }t        j,                  |t        j.                  «      }	|�ret        j0                  |«      }
t        j2                  |
«      }|j5                  «       |j7                  «       }}t9        |j:                  |z  |j<                  |z  «      }||z  }||z  }|j>                  |j@                  z   dz  }|jB                  |dz  z
  }|jD                  |dz  z
  }||z   }||z   }t        jF                  ||||«      }t        jH                  |	|«       t        jJ                  |	|«       t        jL                  t        jN                  |	«      tQ        d«      t        jR                  d«      «       t        jT                  |	d«       nht        jH                  |	|«       t        jL                  t        jN                  |	«      tQ        d«      tQ        |«      «       t        jT                  |	|«       t        jV                  |	«       tY        |	d«       t[        |	«      S )N)ÚApprovedÚAsIsÚConfidentialÚDepartmentalÚExperimentalÚExpiredÚFinalÚ
ForCommentÚForPublicReleaseÚNotApprovedÚNotForPublicReleaseÚSoldÚ	TopSecretÚDraftr   r   rü  Ú
ImageStampzImage Stamprð  ).r  rí  r�   rœ  r›  r²   r�  rø  r6   r8  r<   rÄ  r   rÙ   r]  r^  Ú
read_bytesr  rL  rM  rN  rf  rù  r3  r�  Úfz_new_image_from_bufferr   r¶  r«  rJ  rÅ  r×  rØ  r  r  rý  rž  Úpdf_set_annot_stamp_imager:  rì   rô   r!  rk  r<  rû  rÑ   )r'   rä   Ústampr  rÅ   Ústamp_idrC   r®  r   rÎ   ÚfzbuffrÄ  r   r¶  ÚscalerJ  rÅ  r.  rø  rú  r÷  rù  s                         r(   Ú_add_stamp_annotzPage._add_stamp_annot
&  s‘  € Ü�D‹zˆÜ˜DÓ!ˆÜ×$Ñ$ QÔ'¬5×+AÑ+AÀ!Ô+DÜœ\Ó*Ð*Ø�~‰~Óˆòˆô  �‹MˆØˆØˆØ”E˜!“HÑØ˜E‘?‰DÜ˜œvÔ&Ø—-‘-“/‰CÜ˜œsÔ#Ü—,‘,˜uÓ%×0Ñ0Ó2‰CÜ˜¤¤yÐ1Ô2Ø‰CÜ˜œrŸz™zÔ*Ø—.‘.Ó"‰Cà˜A‘;ˆDä×&Ñ& t¬U×-BÑ-BÓCˆÚÜ×9Ñ9¸#Ó>ˆFÜ×0Ñ0°Ó8ˆCð —5‘5“7˜CŸE™E›GˆqˆAÜ˜Ÿ
™
 Q™¨¯©°a©Ó8ˆEØ˜‘IˆEØ˜‘YˆFð —g‘g §¡Ñ'¨1Ñ,ˆFØ—‘˜E A™IÑ%ˆBØ—‘˜F Q™JÑ&ˆBØ�e‘ˆBØ�f‘ˆBÜ×"Ñ" 2 r¨2¨rÓ2ˆAÜ×$Ñ$ U¨AÔ.Ü×+Ñ+¨E°3Ô7Ü×Ñœu×2Ñ2°5Ó9¼8ÀFÓ;KÌU×M_ÑM_Ð`lÓMmÔnÜ×(Ñ(¨°Õ>ä×$Ñ$ U¨AÔ.Ü×Ñœu×2Ñ2°5Ó9¼8ÀFÓ;KÌXÐVZË^Ô\Ü×(Ñ(¨°Ô5Ü×Ñ˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr)   c                 ór  — | j                  «       }t        |«      }t        j                  |t        j                  «      }t        j
                  |«      }t        j                  |j                  |j                  |j                  |j                  z   |j                  z
  |j                  |j                  z   |j                  z
  «      }t        j                  ||«       t        j                  ||«       |rt        j                  ||«       t        j                   |«       t#        |d«       t%        |«      S rõ  )rø  r÷  r�   rù  r4  rú  rý  r  r  r÷  rø  rù  rú  rž  rk  rÿ  r<  rû  rÑ   )r'   r  r   r   rÅ   r�  rÎ   r  s           r(   Ú_add_text_annotzPage._add_text_annotN&  sÝ   € Ø�~‰~ÓˆÜ˜eÓ$ˆÜ×&Ñ& t¬U×-AÑ-AÓBˆÜ× Ñ  Ó'ˆÜ×Ñ˜qŸs™s A§C¡C¨¯©¨q¯t©t©°a·d±dÑ):¸A¿C¹CÀ!Ç$Á$¹JÈÏÉÑ<MÓNˆÜ× Ñ  ¨Ô*Ü×$Ñ$ U¨DÔ1ÙÜ×)Ñ)¨%°Ô6Ü×Ñ˜uÔ%Ü˜˜sÔ#Ü�U‹|Ðr)   c                 óâ   — t        | «       | j                  j                  st        d«      ‚t	        | ||«      }|sy t        j                  | «      |_        || j                  t        |«      <   |S )NrÊ  )	rS  rÖ   rÌ  r²   ÚPage__add_text_markerrò  rô  r%  r&  )r'   r	  rÝ  rÿ   s       r(   Ú_add_text_markerzPage._add_text_marker\&  s_   € ä�DÔØ�{‰{×!Ò!Ü˜[Ó)Ð)ä# D¨%°Ó<ˆÙØÜ—]‘] 4Ó(ˆŒ
Ø$'ˆ×Ñœ˜C›Ñ!àˆ
r)   c                 ób  — t        | «       t        r?t        j                  | j                  _        t        j                  | j                  |«      S t        | j                  «      }t        |«      }|dk  ryd}t        |t        «      st        d«      ‚t        j                  |j                  «       t        d«      «      j                   s.t        j"                  |j                  «       t        d«      |«       t        j                  |j                  «       t        d«      «      }|j                   sJ d|›d|j                   ›�«       ‚t%        |«      D ]¬  }||   }t'        |«      }|st)        d|«       Œ"	 t        j*                  |j-                  «       t/        |j-                  «       |«      «      }t        j0                  |j-                  «       t        j2                  |«      d	«      }	t        j4                  ||	«       Œ® y# t6        $ r! t8        r
t;        «        t)        d
|z  «       Y ŒÙw xY w)z&Add links from list of object sources.r   Nr…  zbad 'linklist' argumentr„  zlcount=z annots.m_internal=z"skipping bad link / annot item %i.r   z#skipping bad link / annot item %i.
)rS  r  r   ÚPage_addAnnot_FromStringrÛ  r]  r³   rÉ   r6   r<   r¢   r²   r�   ró   rü   rô   r»   r„  r8  ÚJM_StrAsCharrp   r…  r  r"  rv  rî   rx  re   r÷   rt   )
r'   ÚlinklistrÅ   ÚlcountrL  r�  Útxtpyr   rÎ   r  s
             r(   r]  zPage._addAnnot_FromStringj&  s·  € ä�DÔÝÜ27×2PÑ2PˆD�N‰NÔ/ä×1Ñ1°4·9±9¸hÓGÐGÜ˜DŸI™IÓ&ˆÜ�X“ˆØ�AŠ:ØØˆô ˜(¤EÔ*ÜÐ7Ó8Ð8Ü×!Ñ! 4§8¡8£:¬x¸Ó/AÓB×MÒMÜ×$Ñ$ d§h¡h£j´(¸8Ó2DÀfÔMÜ×#Ñ# T§X¡X£Z´¸(Ó1CÓDˆØ× Ò ÐC W V IÐ-A¨v×/@Ñ/@Ð.BÐ"CÓCÐ Ü�v–ˆAØ˜Q‘KˆEÜ Ó&ˆDÙÜÐ<¸aÔ@ØðDÜ×,Ñ,¨d¯h©h«jÔ:MÈtÏxÉxËzÐ[_Ó:`Óa�Ü×0Ñ0°$·(±(³*¼e×>NÑ>NÐPUÓ>VÐXYÓZ�Ü×$Ñ$ f¨gÕ6ñ øô ò DÝ'¬NÔ,<ÜÐ>ÀÑBÖCðDús   Å7B
HÈ'H.È-H.c                 óº   — | j                  «       }|j                  «       }t        ||||«      }|j                  st	        d«      ‚t        |d«       t        |«      S )Nzcannot create widgetr�	  )rø  r  ÚJM_create_widgetr»   rÍ   rû  rÑ   )r'   rx  rs  rÅ   rF  rÎ   s         r(   Ú
_addWidgetzPage._addWidgetŒ&  sR   € Ø�~‰~ÓˆØ�h‰h‹jˆÜ   d¨J¸
ÓCˆØ×ÒÜÐ 6Ó7Ð7Ü˜˜sÔ#Ü�U‹|Ðr)   c                 óÐ   — | j                  «       }t        j                  «       }d|_        ||_        ||_        ||_        t        j                  |j                  «       ||«      }|S r…   )	rø  r�   ÚPdfRedactOptionsÚblack_boxesr   Úimage_methodÚline_artÚpdf_redact_pager  )r'   r   rý  ÚgraphicsrÅ   rª  Úsuccesss          r(   Ú_apply_redactionszPage._apply_redactions•&  sY   € Ø�~‰~ÓˆÜ×%Ñ%Ó'ˆØˆÔØˆŒ	Ø"ˆÔØ ˆŒÜ×'Ñ'¨¯©«
°D¸$Ó?ˆØˆr)   c                 óÆ   — | j                  «        	 | j                  j                  | «       d | _        d| _        d | _        d | _        y # t        $ r t	        «        Y Œ2w xY wr®  )Ú_reset_annot_refsrÖ   rû  re   rt   rÞ   r8  r³   r-   s    r(   rß   zPage._eraseŸ&  s]   € Ø×ÑÔ ð	Ø�K‰K×$Ñ$ TÔ*ð ˆŒØˆŒØˆŒØˆ�	øô ò 	ÜÔÙð	ús   ’A
 Á
A ÁA c                 ó8  — t        | «      }t        j                  |j                  «       t        j                  «      }t        j                  |j                  «       t        j
                  «      }t        | j                  «      }t        j                  |||«      S )a”  Count missing graphic state pushs and pops.

        Returns:
            A pair of integers (push, pop). Push is the number of missing
            PDF "q" commands, pop is the number of "Q" commands.
            A balanced graphics state for the page will be reached if its
            /Contents is prepended with 'push' copies of string "q
"
            and appended with 'pop' copies of "
Q".
        )	rÉ   r�   ró   rü   r+  ÚPDF_ENUM_NAME_Contentsr½   rÖ   Ú pdf_count_q_balance_outparams_fn)r'   rÅ   r  rÐ  rF  s        r(   Ú_count_q_balancezPage._count_q_balance«&  s{   € ô ˜DÓ!ˆÜ× Ñ Ø�H‰H‹JÜ×)Ñ)ó
ˆô ×!Ñ!Ø�H‰H‹JÜ×(Ñ(ó
ˆô ˜tŸ{™{Ó+ˆô ×5Ñ5°c¸3ÀÓEÐEr)   r³  rÀ  c                 óv  — |�|dk(  ry | j                   }|j                  |d¬«      }d|v sd|v st        d«      ‚i }| j                  «       D ]
  \  }}|||<   Œ ||j	                  «       v r||   S d}d|z  }||j                  «       v r|dz  }d|z  }||j                  «       v rŒ| j                  ||«       |S )	Nr   Tre  ú	/Type/OCGrR  zbad optional content: 'oc'zMC%ir   )rÖ   rh  r²   Ú_get_resource_propertiesr®  rû   Ú_set_resource_property)	r'   r³  r  ÚcheckÚpropsr�  r  rL  Úmcs	            r(   Ú_get_optional_contentzPage._get_optional_contentÃ&  sØ   € Øˆ:˜˜qšØØ�k‰kˆØ—‘ ¨t�Ó4ˆØ˜uÑ$¨¸Ñ(=äÐ9Ó:Ð:àˆØ×1Ñ1Ö3‰DˆAˆqØˆE�!ŠHð 4à�—‘“ÑØ˜‘9ÐØˆØ�a‰ZˆØ�E—L‘L“NÑ"Ø�‰FˆAØ˜!‘ˆBð �E—L‘L“NÒ"ð 	×#Ñ# B¨Ô+àˆ	r)   c                 óX   — | j                  «       }t        |j                  «       «      }|S )z/
        page list Resource/Properties
        )rø  ÚJM_get_resource_propertiesrü   )r'   rÅ   r’   s      r(   re  zPage._get_resource_propertiesÚ&  s%   € ð �~‰~ÓˆÜ'¨¯©«
Ó3ˆØˆ	r)   c                 ó$  — t         r9t        j                  | j                  |||«      }t	        j
                  |«      }|S | j                  }t	        j                  |«      }t        |«      }|€t	        j                  |«      n
t        |«      }t        |«      }	t	        j
                  |«      }t	        j                  ||«      }
t        j                  r$t	        j                  |
t        j                  «       t        |t        j                   «      rn>t        |t        j"                  «      r|j%                  «       }nJ dt'        |«      ›�«       ‚t	        j(                  ||
|	t	        j*                  «       «       t	        j,                  |
«       |S )NrÀ   )r  r   Úpage_get_textpager³   r�   rð  rë  rí  Úfz_bound_pagerÀ  r¦  Ú_globalsr†   Úfz_enable_device_hintsÚFZ_NO_CACHEr<   rÃ   rÂ   r¶   r·   Úfz_run_pager»  Úfz_close_device)r'   rï  r¬  rÆ  Úll_tpageÚtpagerÅ   rõ  rä   rË  Údevs              r(   Ú_get_textpagezPage._get_textpageâ&  s+  € ÝÜ×.Ñ.¨t¯y©y¸$ÀÀvÓNˆHÜ×%Ñ% hÓ/ˆEØˆLØ�y‰yˆÜ×&Ñ& uÓ-ˆÜ˜tÓ$ˆà,0¨LŒu×"Ñ" 4Ô(¼oÈdÓ>SˆÜ Ó'ˆÜ×!Ñ! $Ó'ˆÜ×'Ñ'¨¨wÓ7ˆÜ×%Ò%Ü×(Ñ(¨#¬u×/@Ñ/@ÔAÜ�dœEŸL™LÔ)ØÜ˜œeŸm™mÔ,Ø—:‘:“<‰Dà3Ð1¤d¨4£j ]Ð3Ó3�1Ü×Ñ˜$  S¬%¯.©.Ó*:Ô;Ü×Ñ˜cÔ"Øˆr)   r…  c                 óì  — t        j                  «       }| j                  «       }|j                  «       }|
}|}|}d}d}d}d}d}d}|dkD  r¯t        j                  ||d«      }t        j
                  t        j                  |t        d«      t        d«      «      «      }t        j
                  t        j                  |t        d«      t        d«      «      «      }||z   dk(  rt        t        «      ‚d}d}d}d}n)|rt        |«      }d}n|rt        j                  |«      }d}|�rt|j                  }|j                  «       }|j                  «       }t        j                  |«      }|} |j!                  | d «      }!|!�.|!}t        j                  |j                  «       |d«      }d}d}d}nï|j#                  «       dk(  r)t        j$                  |t        j&                  «       «      }"n¯t        j(                  |t        j*                  «       t        j*                  «       t        j,                  d «      t        j.                  «       d«      }#d|#_        d |#_        t        j$                  |#t        j&                  «       «      }$t        j$                  ||$«      }"d}d}|�rêt        j2                  «       }%t4        rt        j6                  |%«       n?t        j8                  |%j:                  j<                  |j:                  j>                  «       |rgt        |«      }t4        rt        j6                  |%|«       n?t        j8                  |%|j:                  j<                  |j:                  j>                  «       t        j@                  |%«      }tC        |«      } |j!                  | d «      }!|!�¤|!}t        j                  |j                  «       |d«      }t        j
                  t        j                  |t        d«      t        d«      «      «      }t        j
                  t        j                  |t        d«      t        d«      «      «      }d}d}n9t        jD                  |«      }"|"j                  «       }|"j                  «       }|sd}|r©t        jF                  "«      }&|&j:                  st        d«      ‚|"jI                  «       }'|"j1                  «       }(t        jJ                  |"«      \  })}*t        jD                  |«      }$t        jL                  |||'|(|)|*ddtO        «       tO        «       |&|$«      }"|rAt        jP                  |"«      }|	rtS        |||	«       t        jT                  |«      }|| <   d}|�rst        jV                  |jY                  «       t        d«      «      }+|+j:                  s.t        jZ                  |jY                  «       t        d«      d	«      }+t        j\                  |+t        d
«      «      },|,j:                  s t        jZ                  |+t        d
«      d	«      },t_        |||||«      }-t        j`                  |,|«       t        jb                  d«      }.dte        |-jf                  |-jh                  |-jj                  |-jl                  |-jn                  |-jp                  f«      › d|› d�}/t        jr                  |.|/«       tu        ||jY                  «       |.|«       |r||fS |d fS )Nr   r   ÚWidthr�	  ÚHeightr&  z#uncompressed image cannot have maskr!  r   ÚXObjectr¦  ú
q
z cm
/z Do
Q
);r�   rT  rø  r  rv  rõ   rë  rô   r²   ÚMSG_IS_NO_IMAGEr  Úfz_read_filer³   r   r¶  Úfz_md5_pixmap2r7   rÉ  Úfz_new_image_from_pixmapÚFzImageÚfz_convert_pixmapr‡  ÚFzDefaultColorspacesÚFzColorParamsrÈ  ÚFzMd5rŽ   Úfz_md5_update_bufferÚfz_md5_updater»   rm  r6   Úfz_md5_final2r  r?  Úfz_compressed_image_bufferÚbpcÚfz_image_resolutionÚ$fz_new_image_from_compressed_buffer2r¡   Úpdf_add_imagerˆ  rî   r*  rü   r>  ró   Úcalc_image_matrixrn  r¨  r£   r    r{
  r©  rõ  rM  r¸  Úfz_append_stringÚJM_insert_contents)0r'   rd   Úpixmapr   Úimaskrï  ÚoverlayrE  Úkeep_proportionr³  rJ  rÅ  rý   rÉ  Ú_imgnameÚdigestsÚmaskbufrÅ   rF  r   r¶  Úimg_xrefÚ	rc_digestÚdo_process_pixmapÚdo_process_streamÚdo_have_imaskÚdo_have_imageÚdo_have_xrefÚrefÚimgbufÚarg_pixÚdigestÚmd5_pyrq  Úimager¨  ÚmaskÚstateÚcbuf1r‹  rÈ  ÚxresÚyresrN  Úxobjectrc  Únresr_  s0                                                   r(   Ú_insert_imagezPage._insert_imageû&  sÝ  € ô
 —.‘.Ó"ˆØ�~‰~Óˆð �h‰h‹jˆØˆØˆØˆØˆ	àÐØÐØˆØˆØˆà�!Š8Ü×(Ñ(¨¨d°AÓ6ˆCÜ× Ñ ¤%×"5Ñ"5°s¼HÀWÓ<MÌxÐX[Ë}Ó"]Ó^ˆAÜ× Ñ ¤%×"5Ñ"5°s¼HÀXÓ<NÔPXÐY\ÓP]Ó"^Ó_ˆAØ�1‰u˜ŠzÜ ¤/Ó2Ð2à !ÐØ !ÐØˆMØ‰Mñ Ü+¨FÓ3�Ø$%Ñ!áÜ"×/Ñ/°Ó9�Fà()Ð%âð —k‘kˆGØ—	‘	“ˆAØ—	‘	“ˆAÜ×)Ñ)¨'Ó2ˆFØˆFØ—;‘;˜v tÓ,ˆDØÐØ�Ü×,Ñ,¨T¯X©X«Z¸À1ÓE�à$%Ð!Ø !�Ø !‘à—=‘=“? aÒ'Ü!×:Ñ:¸7ÄEÇMÁMÃOÓT‘Eä×0Ñ0Ø#Ü!×.Ñ.Ó0Ü!×.Ñ.Ó0Ü!×6Ñ6°tÓ<Ü!×/Ñ/Ó1Øó�Bð  !�B”HØ$(�B”MÜ ×9Ñ9¸"¼e¿m¹m»oÓN�DÜ!×:Ñ:¸7ÀDÓI�Eà$%Ð!Ø !�âô —K‘K“MˆEÝÜ×*Ñ*¨E°6Õ:ä×#Ñ# E¨6×+<Ñ+<×+AÑ+AÀ6×CTÑCT×CXÑCXÔYÙÜ,¨UÓ3�ÝÜ×.Ñ.°°wÕ?ä×'Ñ'¨¨w×/AÑ/A×/FÑ/FÈ×HZÑHZ×H^ÑH^Ô_Ü×(Ñ(¨Ó/ˆFÜ˜6“]ˆFØ—;‘;˜v tÓ,ˆDØÐØ�Ü×,Ñ,¨T¯X©X«Z¸À1ÓE�Ü×$Ñ$¤e×&9Ñ&9¸3ÄÈÓ@QÔS[Ð\_ÓS`Ó&aÓb�Ü×$Ñ$¤e×&9Ñ&9¸3ÄÈÓ@RÔT\Ð]`ÓTaÓ&bÓc�à !�Ø !‘ä×6Ñ6°vÓ>�Ø—G‘G“I�Ø—G‘G“I�Ùà$%�Máô ×4Ñ4°eÓ<ˆEØ×#Ò#Ü Ð"GÓHÐHØ—)‘)“+ˆCØ×)Ñ)Ó+ˆJÜ×2Ñ2°5Ó9‰JˆD�$Ü×1Ñ1°'Ó:ˆDÜ×>Ñ>ØØØØØØØØÜ“FÜ“FØØóˆEñ ä×%Ñ% c¨5Ó1ˆCÙÜ   c¨2Ô.Ü×'Ñ'¨Ó,ˆHØ&ˆG�F‰OØˆIâä×6Ñ6°t·x±x³zÄ8ÈKÓCXÓYˆIØ×'Ò'Ü!×3Ñ3°D·H±H³JÄÈÓ@UÐWXÓY�	Ü×(Ñ(¨´H¸YÓ4GÓHˆGØ×%Ò%Ü×1Ñ1°)¼XÀiÓ=PÐRSÓT�Ü# A q¨$°¸ÓHˆCÜ×Ñ ¨°3Ô7Ü×&Ñ& rÓ*ˆDØœ	 3§5¡5¨#¯%©%°·±¸¿¹¸s¿u¹uÀcÇeÁeÐ"LÓMÐNÈfÐU]ÐT^Ð^fÐgˆAä×"Ñ" 4¨Ô+Ü˜s D§H¡H£J°°gÔ>áØ˜WÐ$Ð$à˜T�>Ð!r)   c                 óÊ  — | j                  «       }|j                  «       }t        |||||||||	|
«
      }t        j                  |j                  «       t        d«      «      }|j                  «       s.t        j                  |j                  «       t        d«      d«      }t        j                  |t        d«      «      }|j                  sNt        j                  |d«      }t        j                  |j                  «       |t        d«      t        d«      «       t        |d«      \  }}|st        d«      ‚t        j                  ||d«      }t        j                   |||«       |S )Nr!  r   r  r   zcannot insert font)rø  r  r6  r�   r*  rü   rô   rg  r>  ró   r»   r?  r  r/  rÍ   rv  rn  )r'   ræ   rü  r7  r8  Ú
set_simpler%  rq
  r}
  rØ  rþ  rÅ   rF  r¥   rN  r#  rí  rý   Úfont_objs                      r(   Ú_insertFontzPage._insertFont§'  s#  € Ø�~‰~ÓˆØ�h‰h‹jˆä˜s F¨H°ZÀÈSÐRWÐY^Ð`hÐjrÓsˆä×2Ñ2°4·8±8³:¼xÈÓ?TÓUˆ	Ø×$Ñ$Ô&Ü×/Ñ/°·±³
¼HÀ[Ó<QÐSTÓUˆIÜ×"Ñ" 9¬h°vÓ.>Ó?ˆØ×ÒÜ×&Ñ& s¨AÓ.ˆEÜ×Ñ §¡£
¨E´8¸KÓ3HÌ(ÐSYÓJZÔ[ä˜e QÓ'‰ˆˆ4ÙÜÐ 4Ó5Ð5Ü×)Ñ)¨#¨t°QÓ7ˆÜ×Ñ˜E 8¨XÔ6Øˆr)   c                 óŽ   — | j                  «       }|dk(  rt        ||«      }nt        ||«      }|j                  rt	        |«      S y r…   )rø  ÚJM_get_annot_by_nameÚJM_get_annot_by_xrefr»   rÑ   )r'   r   rý   rÅ   rÎ   s        r(   Ú_load_annotzPage._load_annot¼'  sE   € Ø�~‰~ÓˆØ�1Š9Ü(¨¨tÓ4‰Eä(¨¨tÓ4ˆEØ×ÒÜ˜“<Ðð r)   c           	      óN   — t        || j                  |||||«      }t        |«      S r+   )ÚJM_pixmap_from_pager³   rÄ  )r'   r  rË  rÌ  rÉ  r�  rï  rÍ  s           r(   Ú_makePixmapzPage._makePixmapÅ'  s&   € Ü! # t§y¡y°#°r¸5À&È$ÓOˆÜ�c‹{Ðr)   c                 ó€  — t        j                  t         j                  j                  «      }t        | j                  d¬«      }|j
                  rNt        j                  |j                  «       |«      }t        j                  |«      rt        j                  |«      }t        j                  |«      ry t        |«      S ©NFr  )r�   rU  rV  rÉ   r³   r»   rë   rü   rv  Úpdf_to_rectrœ  rT  )r'   Úboxtyperä   rÅ   rü   s        r(   Ú
_other_boxzPage._other_boxÉ'  sƒ   € Ü�|‰|œUŸ\™\×8Ñ8Ó9ˆÜ˜DŸI™I°Ô6ˆØ�?Š?Ü×%Ñ% t§x¡x£z°7Ó;ˆCÜ×!Ñ! #Ô&Ü×(Ñ(¨Ó-�Ü×$Ñ$ dÔ+ØÜ˜tÓ$Ð$r)   Tc                 ó0   — t        | j                  |¬«      S )Nr  )rÉ   r³   )r'   r¼   s     r(   rø  zPage._pdf_pageÔ'  s   € Ü˜DŸI™I°Ô9Ð9r)   c                 ó8   — | j                   j                  «        y)z,Invalidate / delete all annots of this page.N)r%  rb  r-   s    r(   r^  zPage._reset_annot_refs×'  s   € à×Ñ×ÑÕ r)   c                 ó
  — |dk\  r|dk\  r|€y t        t        t        |d«      dz  «      «      }|dk\  rd}t        t        t        |d«      dz  «      «      }|dk\  rd}d||fz  }|sy t        | j                  «      }t        j                  |j                  «       t        d«      «      }|j                  s.t        j                  |j                  «       t        d«      d«      }t        j                  |t        d«      «      }	|	j                  s t        j                  |t        d«      d«      }	t        j                  |	«      }
t        |
«      D ]6  }t        j                  |	|«      }t        j                  |«      }||k(  sŒ4|c S  t        j                  |j!                  «       d	«      }t        j"                  |t        d
«      |«       t        j"                  |t        d«      |«       t        j$                  |	||«       |S )Nr   r   ri  éc   zfitzca%02i%02ir!  r   r%  r   r"  r#  )r3   r  rÔ  rÉ   r³   r�   ró   rü   rô   r»   r>  rh  r8  rj  rf  r?  r  r@  rn  )r'   Úgstater"  r#  rp  ÚtCAÚtcarÅ   rN  rP  rC   rL  r  r   Úopas                  r(   Ú_set_opacityzPage._set_opacityÛ'  s«  € à�Š7�r˜Q’w 9Ð#4ØÜ”%œ˜B › cÑ)Ó*Ó+ˆØ�#Š:ØˆCÜ”%œ˜B ›
 SÑ(Ó)Ó*ˆØ�#Š:ØˆCØ! S¨# JÑ.ˆáØÜ˜DŸI™IÓ&ˆÜ×&Ñ& t§x¡x£z´8¸KÓ3HÓIˆ	Ø×#Ò#Ü×/Ñ/°·±³
¼HÀ[Ó<QÐSTÓUˆIÜ×!Ñ! )¬X°kÓ-BÓCˆØ�ŠÜ×*Ñ*¨9´h¸{Ó6KÈQÓOˆDÜ×Ñ˜tÓ$ˆÜ�q–ˆAÜ×'Ñ'¨¨aÓ0ˆBÜ×$Ñ$ RÓ(ˆDØ�v‹~Ø’ð	 ô
 × Ñ  §¡£¨QÓ/ˆÜ×Ñ ¤X¨d£^°RÔ8Ü×Ñ ¤X¨d£^°RÔ8Ü×Ñ˜D &¨#Ô.Øˆr)   c           
      óŒ  — | j                   }|€t        d«      ‚|j                  st        d«      ‚d}||vrt        d«      ‚t        |«      }| j                  }t        |d   |j
                  |d   z
  |d   |j
                  |d   z
  «      }|j                  |j                  cxk  r|j                  cxk  r|j                  k  r>n n;|j                  |j                  cxk  r|j
                  cxk  r|j
                  k  sn t        |› d	�«      ‚|j                  | j                  |d
t        t        |«      «      › d�«       y )Nr×
  rÊ  )ÚCropBoxÚBleedBoxÚTrimBoxÚArtBoxzbad boxtyper   r   r   r   z not in MediaBoxrY  rZ  )rÖ   r²   rÌ  r  rX  rù  rø  r÷  rú  r[  rý   r£   r¢   )r'   r¼  rä   r  Úvalid_boxesÚmbs         r(   Ú_set_pageboxzPage._set_pageboxü'  s
  € Ø�k‰kˆØˆ;ÜÐ>Ó?Ð?à�zŠzÜ˜[Ó)Ð)àBˆà˜+Ñ%Ü˜]Ó+Ð+ä�D‹zˆØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGˆØ—‘˜Ÿ™Ô3 4§7¡7Ô3¨b¯e©eÕ3¸¿¹ÀÇÁÔ8[È4Ï7É7Ô8[ÐVX×V[ÑV[Ô8[Ü ˜yÐ(8Ð9Ó:Ð:à×Ñ˜Ÿ™ G¨q´¼5À»;Ó1GÐ0HÈÐ-JÕKr)   c                 óZ   — | j                  «       }t        |j                  «       ||«       y r+   )rø  ÚJM_set_resource_propertyrü   )r'   r   rý   rÅ   s       r(   rf  zPage._set_resource_property(  s    € Ø�~‰~ÓˆÜ  §¡£¨T°4Õ8r)   c	                 óÐ  — t        |«      }	t        |«      }
|}t        | j                  «      }|j	                  «       }|j                  «       }t        |«       t        ||||j                  «      }|st        j                  |«      }t        j                  |d«      }t        j                  |d|«       t        j                  |d«      }t        j                  |t        d«      |«       t        j                  d«      }t        j                  |d«       t        j                   ||	|
||«      }|dkD  r t#        |t        j$                  |«      |«       t        j&                  |t        d«      «      }|j(                  s t        j*                  |t        d«      d«      }t        j,                  |t        d«      «      }|j(                  s t        j*                  |t        d«      d«      }t        j                  |||«       t        j                  d«      }t        j                  |d	«       t        j                  ||«       t        j                  |d
«       t/        ||||«       |S )Nr   Úfullpager|  é   z/fullpage Dor   r!  r¦  z q /z Do Q )rí  rÀ  rÉ   r³   rü   r  r>  ÚJM_xobject_from_pager�   rî   r?  rn  r:  rô   r¨  r�  Úpdf_new_xobjectrˆ  r  r*  r»   r>  ró   r‘  )r'   Ú
fz_srcpager”  rÆ  rý   r³  rï  r¯  r–  rD  rc  Úrc_xrefrv  Útpagerefrµ  Úxobj1Úsubres1Úsubresr  Úxobj2rN  r¬  s                         r(   Ú_show_pdf_pagezPage._show_pdf_page(  sñ  € Ü! $Ó'ˆÜ Ó'ˆØˆÜ˜TŸY™YÓ'ˆØ—9‘9“;ˆØ—‘“ˆÜ˜Ô ô % V¨Z¸¸x¿}¹}ÓMˆÙÜ×&Ñ& uÓ-ˆGô ×$Ñ$ V¨QÓ/ˆÜ×Ñ˜G Z°Ô7Ü×#Ñ# F¨AÓ.ˆÜ×Ñ˜6¤8¨IÓ#6¸Ô@ä×!Ñ! "Ó%ˆÜ×Ñ˜s NÔ3ä×%Ñ% f¨g°s¸FÀCÓHˆØ�Š6Ü˜V¤U×%?Ñ%?ÀÓ%FÈÔKô ×2Ñ2°8¼XÀkÓ=RÓSˆ	Ø×#Ò#Ü×/Ñ/°¼À+Ó9NÐPQÓRˆIÜ×#Ñ# I¬x¸	Ó/BÓCˆØ× Ò Ü×,Ñ,¨Y¼ÀÓ8KÈQÓOˆFä×Ñ˜F H¨eÔ4ô
 ×"Ñ" 2Ó&ˆÜ×Ñ˜t VÔ,Ü×Ñ˜t XÔ.Ü×Ñ˜t XÔ.ä˜6 8¨T°7Ô;Øˆr)   r  c                 óð   — t        | «      }	 | j                  |«      }|dk7  r| j                  |«       	 t        |«      }t	        | |«       t        |d«      sJ ‚|S # |dk7  r| j                  |«       w w xY w)zAdd a 'Caret' annotation.r   rÖ   )Úannot_preprocessrö  r£  rÑ   Úannot_postprocessr9   )r'   r  Úold_rotationrÎ   s       r(   Úadd_caret_annotzPage.add_caret_annotN(  s~   € ä'¨Ó-ˆð	0Ø×)Ñ)¨%Ó0ˆEà˜qÒ Ø×!Ñ! ,Õ/Ü�u“ˆÜ˜$ Ô&Ü˜˜xÔ(Ð(Ð(Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !ús   �A ÁA5rä   c                 óÜ   — t        | «      }	 | j                  |t        j                  «      }|dk7  r| j	                  |«       	 t        | |«       |S # |dk7  r| j	                  |«       w w xY w)z*Add a 'Circle' (ellipse, oval) annotation.r   )rß  r-  r�   r)  r£  rà  ©r'   rä   rá  rÎ   s       r(   Úadd_circle_annotzPage.add_circle_annot[(  óm   € ä'¨Ó-ˆð	0Ø×.Ñ.¨t´U×5KÑ5KÓLˆEà˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !úó   � A ÁA+r  rd   r  r§  r   c                 óÊ   — t        | «      }	 | j                  ||||||¬«      }|dk7  r| j                  |«       	 t        | |«       |S # |dk7  r| j                  |«       w w xY w)z"Add a 'FileAttachment' annotation.)r  r§  r   r   )rß  r  r£  rà  )	r'   r  r  rd   r  r§  r   rá  rÎ   s	            r(   Úadd_file_annotzPage.add_file_annotf(  s   € ô (¨Ó-ˆð
	0Ø×(Ñ(¨ØØØ'ØØð )ó ˆEð ˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !ús   �A	 Á	A"©rç   ræ   rå   rD  r«  ro  rL  r  r  rB  rþ   rE  r  rK  r   rç   ræ   rå   rD  r«  ro  rL  r  r  rB  rþ   rE  c                óÞ   — t        | «      }	 | j                  |||||||||	|
||||||¬«      }|dk7  r| j                  |«       	 t        | |«       |S # |dk7  r| j                  |«       w w xY w)zAdd a 'FreeText' annotation.rê  r   )rß  r  r£  rà  )r'   rä   r   rç   ræ   rå   rD  r«  ro  rL  r  r  rB  rþ   rE  r  rK  rá  rÎ   s                      r(   Úadd_freetext_annotzPage.add_freetext_annot(  sž   € ô, (¨Ó-ˆð	0Ø×,Ñ,ØØØ%Ø%Ø)Ø)Ø!-Ø!-Ø!Ø#Ø%Ø#ØØ!Ø%Øð! -ó ˆEð& ˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !ús   �!A ÁA,c                 ó€   — |€t        | |||¬«      }nt        |«      }| j                  |t        j                  «      }|S )zAdd a 'Highlight' annotation.©r‚  rÐ  rï  )Úget_highlight_selectionÚCheckMarkerArgrJ  r�   ÚPDF_ANNOT_HIGHLIGHT)r'   r	  r‚  rÐ  rï  r*  rE   s          r(   Úadd_highlight_annotzPage.add_highlight_annot¯(  s@   € ð ˆ=Ü'¨°EÀÈ4ÔP‰Aä˜uÓ%ˆAØ×#Ñ# A¤u×'@Ñ'@ÓAˆØˆ
r)   Úhandwritingc                 ó¾   — t        | «      }	 | j                  |«      }|dk7  r| j                  |«       	 t        | |«       |S # |dk7  r| j                  |«       w w xY w)znAdd a 'Ink' ('handwriting') annotation.

        The argument must be a list of lists of point_likes.
        r   )rß  r  r£  rà  )r'   ró  rá  rÎ   s       r(   Úadd_ink_annotzPage.add_ink_annot¹(  sg   € ô
 (¨Ó-ˆð	0Ø×'Ñ'¨Ó4ˆEà˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !ús   �A ÁAr÷  rø  c                 óÀ   — t        | «      }	 | j                  ||«      }|dk7  r| j                  |«       	 t        | |«       |S # |dk7  r| j                  |«       w w xY w)zAdd a 'Line' annotation.r   )rß  r  r£  rà  )r'   r÷  rø  rá  rÎ   s        r(   Úadd_line_annotzPage.add_line_annotÇ(  sg   € ä'¨Ó-ˆð	0Ø×(Ñ(¨¨RÓ0ˆEà˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !úó   �A ÁArö  c                 óÜ   — t        | «      }	 | j                  |t        j                  «      }|dk7  r| j	                  |«       	 t        | |«       |S # |dk7  r| j	                  |«       w w xY w)zAdd a 'Polygon' annotation.r   )rß  r#  r�   r,  r£  rà  ©r'   rö  rá  rÎ   s       r(   Úadd_polygon_annotzPage.add_polygon_annotÒ(  sm   € ä'¨Ó-ˆð	0Ø×'Ñ'¨´×0GÑ0GÓHˆEà˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !úrç  c                 óÜ   — t        | «      }	 | j                  |t        j                  «      }|dk7  r| j	                  |«       	 t        | |«       |S # |dk7  r| j	                  |«       w w xY w)zAdd a 'PolyLine' annotation.r   )rß  r#  r�   r+  r£  rà  rú  s       r(   Úadd_polyline_annotzPage.add_polyline_annotÝ(  sm   € ä'¨Ó-ˆð	0Ø×'Ñ'¨´×0IÑ0IÓJˆEà˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !úrç  c                 óÜ   — t        | «      }	 | j                  |t        j                  «      }|dk7  r| j	                  |«       	 t        | |«       |S # |dk7  r| j	                  |«       w w xY w)z&Add a 'Square' (rectangle) annotation.r   )rß  r-  r�   r(  r£  rà  rä  s       r(   Úadd_rect_annotzPage.add_rect_annotè(  ræ  rç  rè   r¬  c	                 ó˜  — d}	|r®t        t        j                  «      j                  |«      s†t	        |«       t	        |«       |sd}|sd}|sd}t        |d«      r|||f}t        |«      dkD  r|dd }d}
 |
j                  |||dœŽ}	|€d	}|r't        |d«      r|||f}t        |«      dkD  r|dd }nd}t        | «      }	 | j                  |||	||¬
«      }|dk7  r| j                  |«       	 t        | |«       |r²|j                  «       j                  «       dd }|\  }}}}}|j                  |«       |j                  |«       |j                  |«       |j                  |«       |j                  |«       |j                  d«       dj                  |«      }|j!                  |d«       |S # |dk7  r| j                  |«       w w xY w)zAdd a 'Redact' annotation.Nrm  rê  rl  rW  r   rº  r»  ©r   r   r   )r   r)  rþ   rè   r   r…  r»  r½  )r¸  rš	  Ú
whitespacer/	  r]  r9   r6   r–  rß  r+  r£  rà  r  rÈ  ri   rÆ  r  )r'   rú  r   ræ   rç   rþ   rè   rå   r¬  r)  rž   rá  rÎ   rë  rí  rî  rï  rð  rñ  r  s                       r(   Úadd_redact_annotzPage.add_redact_annotó(  sÙ  € ð ˆÙœœF×-Ñ-Ó.×9Ñ9¸$Ô?Ü�tÔÜ�zÔ"ÙØ!�ÙØ�ÙØ&�
Ü�z ;Ô/Ø(¨*°jÐA�
Ü�:‹ Ò"Ø'¨¨˜^�
Ø5ˆCØ�S—Z‘Z ¨x¸8ÒDˆFØˆ|Ø �ÙÜ˜4 Ô-Ø  $¨Ð-�DÜ�t“9˜q’=Ø  ˜8‘DàˆDä'¨Ó-ˆð	0Ø×*Ñ*¨4°dÀ6Ø"¨ð +ó /ˆEð ˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&ñ Ø—\‘\“^×.Ñ.Ó0°°"Ð5ˆFØ &ÑˆAˆr�2�r˜2Ø�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜"ÔØ�M‰M˜$ÔØ—‘˜FÓ#ˆBØ�L‰L˜˜QÔØˆøð# ˜qÒ Ø×!Ñ! ,Õ/ð !ús   ÃF0 Æ0G	c                 ó|   — |€t        | |||¬«      }nt        |«      }| j                  |t        j                  «      S )zAdd a 'Squiggly' annotation.rî  )rï  rð  rJ  r�   ÚPDF_ANNOT_SQUIGGLY©r'   r	  r‚  rÐ  rï  r*  s         r(   Úadd_squiggly_annotzPage.add_squiggly_annot1)  s<   € ð ˆ=Ü'¨°EÀÈ4ÔP‰Aä˜uÓ%ˆAØ×$Ñ$ Q¬×(@Ñ(@ÓAÐAr)   c                 óÀ   — t        | «      }	 | j                  ||«      }|dk7  r| j                  |«       	 t        | |«       |S # |dk7  r| j                  |«       w w xY w)z$Add a ('rubber') 'Stamp' annotation.r   )rß  rE  r£  rà  )r'   rä   rA  rá  rÎ   s        r(   Úadd_stamp_annotzPage.add_stamp_annot?)  sg   € ä'¨Ó-ˆð	0Ø×)Ñ)¨$°Ó6ˆEà˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !úrø  c                 ó|   — |€t        | |||¬«      }nt        |«      }| j                  |t        j                  «      S )zAdd a 'StrikeOut' annotation.rî  )rï  rð  rJ  r�   ÚPDF_ANNOT_STRIKE_OUTr  s         r(   Úadd_strikeout_annotzPage.add_strikeout_annotJ)  s:   € àˆ=Ü'¨°EÀÈ4ÔP‰Aä˜uÓ%ˆAØ×$Ñ$ Q¬×(BÑ(BÓCÐCr)   c                 óÄ   — t        | «      }	 | j                  |||¬«      }|dk7  r| j                  |«       	 t        | |«       |S # |dk7  r| j                  |«       w w xY w)z&Add a 'Text' (sticky note) annotation.)r   r   )rß  rG  r£  rà  )r'   r  r   r   rá  rÎ   s         r(   Úadd_text_annotzPage.add_text_annotR)  sl   € ä'¨Ó-ˆð	0Ø×(Ñ(¨°¸4Ð(Ó@ˆEà˜qÒ Ø×!Ñ! ,Õ/Ü˜$ Ô&Øˆøð ˜qÒ Ø×!Ñ! ,Õ/ð !ús   �A ÁAc                 ó|   — |€t        | |||¬«      }nt        |«      }| j                  |t        j                  «      S )zAdd a 'Underline' annotation.rî  )rï  rð  rJ  r�   ÚPDF_ANNOT_UNDERLINEr  s         r(   Úadd_underline_annotzPage.add_underline_annot])  s:   € àˆ=Ü'¨°EÀÈ4ÔP‰Aä˜uÓ%ˆAØ×$Ñ$ Q¬×(AÑ(AÓBÐBr)   r)  c                 ó–  — t        | «       | j                  }|j                  st        d«      ‚|j	                  «        | j                  |j                  |j                  «      }|syd|_        t        j                  | «      |_        || j                  t        |«      <   |j                  |_        ||_        |j                  «        |S )zAdd a 'Widget' (form field).rÊ  NT)rS  rÖ   rÌ  r²   r¡  rS  rx  rs  rÞ   rò  rô  r%  r&  r³  rû  )r'   r)  r  rÎ   s       r(   Ú
add_widgetzPage.add_widgete)  sž   € ä�DÔØ�k‰kˆØ�zŠzÜ˜[Ó)Ð)Ø×ÑÔØ—‘ × 1Ñ 1°6×3DÑ3DÓEˆÙØØˆŒÜ—}‘} TÓ*ˆŒØ&+ˆ×Ñœ˜E›Ñ#ØŸ™ˆŒØˆŒØ�‰ŒØˆr)   c                 óp   — 	 t        | «       | j                  d¬«      }|j                  sg S t        |«      S )z.
        page get list of annot names
        Fr  )rS  rø  r»   ÚJM_get_annot_id_list©r'   rÅ   s     r(   Úannot_nameszPage.annot_namesw)  s6   € ð 	>Ü�DÔØ�~‰~ uˆ~Ó-ˆØ�ŠØˆIÜ# DÓ)Ð)r)   c                 ó   — t        | «      S )zH
        List of xref numbers of annotations, fields and links.
        )ÚJM_get_annot_xref_list2r-   s    r(   r­  zPage.annot_xrefs‚)  s   € ô ' tÓ,Ð,r)   c              #   óŽ  K  — t         j                  t         j                  t         j                  f}t	        |d«      s)| j                  «       D �cg c]  }|d   |vsŒ|d   ‘Œ }}n0| j                  «       D �cg c]  }|d   |v sŒ|d   |vsŒ|d   ‘Œ }}|D ]  }| j                  |«      }d|_        |–— Œ  yc c}w c c}w ­w)a   Generator over the annotations of a page.

        Args:
            types: (list) annotation types to subselect from. If none,
                   all annotations are returned. E.g. types=[PDF_ANNOT_LINE]
                   will only yield line annotations.
        rN  r   r   TN)r�   r�  ÚPDF_ANNOT_POPUPr!  r9   r­  Ú
load_annotÚ_yielded)r'   ÚtypesÚ
skip_typesr    r­  rý   rÎ   s          r(   r�  zPage.annotsˆ)  sÇ   è ø€ ô ×*Ñ*¬E×,AÑ,AÄ5×CYÑCYÐZˆ
Ü�u˜mÔ,Ø)-×)9Ñ)9Ô);ÓVÑ); A¸qÀ¹tÈ:Ò?U˜1˜Q›4Ð);ˆKÑVà)-×)9Ñ)9Ô);ÓhÑ); A¸qÀ¹tÀuº}ÐQRÐSTÑQUÐ]gÒQg˜1˜Q›4Ð);ˆKÐhÛˆDØ—O‘O DÓ)ˆEØˆEŒNØ‹Kñ  ùò Wùâhùs0   ‚ACÁB;ÁB;Á$CÁ9C ÂC ÂC Â0CrÅ   rý  rZ  c           	      ó(  — d„ }t        | «       | j                  }|j                  s|j                  rt	        d«      ‚|j
                  st	        d«      ‚g }| j                  t        j                  f¬«      D ]!  }|j                  |j                  «       «       Œ# |g k(  ry| j                  |||«      }|st	        d«      ‚| j                  «       }	|D ]¬  }
|
d   }|
d   }|r$|	j                  |«       |	j                  ||¬	«       d
|
j                  «       v sŒF|
d
   }|
j!                  dd«      }|
d   }|
d   }|
d   } |||||«      }d}|dk  sŒ|dk\  sŒ…|	j#                  ||||||¬«      }|dz  }|dk  sŒ§|dk\  rŒ(Œ® |	j%                  «        y)aD  Apply the redaction annotations of the page.

        Args:
            page: the PDF page.
            images:
                  0 - ignore images
                  1 - remove all overlapping images
                  2 - blank out overlapping image parts
                  3 - remove image unless invisible
            graphics:
                  0 - ignore graphics
                  1 - remove graphics if contained in rectangle
                  2 - remove all overlapping graphics
            text:
                  0 - remove text
                  1 - ignore text
        c                 ó¤  — |r| j                   t        k  r| S 	 t        |||«      }|dz  }| j                   }t        j                  ||z  «      |z  }|| j                  k\  r| S | }| j                  j                  | j                  j                  z   |z
  dz  }	|	|_        |S # t        t        j
                  f$ r t        r
t        «        | cY S w xY w)a¼  Calculate minimal sub-rectangle for the overlay text.

            Notes:
                Because 'insert_textbox' supports no vertical text centering,
                we calculate an approximate number of lines here and return a
                sub-rect with smaller height, which should still be sufficient.
            Args:
                annot_rect: the annotation rectangle
                new_text: the text to insert.
                font: the fontname. Must be one of the CJK or Base-14 set, else
                    the rectangle is returned unchanged.
                fsize: the fontsize
            Returns:
                A rectangle to use instead of the annot rectangle.
            ç333333ó?ç      à?)rJ  r-  Úget_text_lengthr²   r�   ÚFzErrorBaser÷   rt   rì
  ÚceilrÅ  r×  r  Úblrú  )
Ú
annot_rectÚnew_textrH  rä  Ú
text_widthÚline_heightrÿ  r¶  r  r  s
             r(   Úcenter_rectz*Page.apply_redactions.<locals>.center_rect²)  sÏ   € ñ  ˜z×/Ñ/´7Ò:Ø!Ð!ð"Ü,¨X°t¸UÓC�
ð
   #™+ˆKØ×$Ñ$ˆEÜ—	‘	˜* uÑ,Ó-°Ñ;ˆAØ�J×%Ñ%Ò%Ø!Ð!ØˆAØ—‘—‘ :§=¡=§?¡?Ñ2°QÑ6¸#Ñ=ˆAØˆAŒDØˆHøô ¤× 1Ñ 1Ð2ò "Ý'Ü"Ô$Ø!Ò!ð"ús   ™B! Â!+CÃCr  rÊ  )r  FzError applying redactions.rä   rè   )rè   rô  r   rþ   r   ræ   rç   rå   r…  r8  )ræ   rç   rô  rþ   r#  T)rS  rÖ   rî  r±   r²   rÌ  r�  r�   rê   ri   r   r\  Ú	new_shapeÚ	draw_rectÚfinishr®  r7   Úinsert_textboxÚcommit)rÅ   rý  rZ  r   r,  r  Úredact_annotsrÎ   r’   ÚshapeÚredactr(  rè   r)  rþ   rã  rä  rô  Útrects                      r(   r	  zPage.apply_redactionsš)  s¹  € ò0 	ôD 	�DÔØ�k‰kˆØ×Ò˜sŸ}š}ÜÐ;Ó<Ð<Ø�zŠzÜ˜[Ó)Ð)àˆØ—[‘[Ü×)Ñ)Ð+ð !ö 
ˆEð × Ñ  ×!9Ñ!9Ó!;Õ<ð	
ð ˜BÒØà×#Ñ# D¨&°(Ó;ˆÙÜÐ9Ó:Ð:ð —‘Ó ˆÛ#ˆFØ ™ˆJØ˜&‘>ˆDÙØ—‘ 
Ô+Ø—‘ $¨d�Ô3Ø˜Ÿ™›Ò&Ø! &™>�ØŸ
™
 7¨AÓ.�Ø˜zÑ*�Ø˜zÑ*�Ø˜|Ñ,�á# J°¸%ÀÓG�à�Ø˜1“f ¨!£à×-Ñ-ØØ Ø!&Ø!&Ø#Ø#ð .ó �Bð ˜S‘L�Eð ˜1“f ¨!¤ð! $ð6 	�‰ŒØr)   c                 óî   — |dvrt        d«      ‚t        | j                  «      }t        j                  «       }||_        t        j                  |«      }t        j                  || j                  |«       y)zbConvert colorspaces of objects on the page.
        
        Valid values are 1, 3 and 4.
        rX  z!components must be one of 1, 3, 4N)	r²   r½   rÖ   r�   Úpdf_recolor_optionsÚnum_compÚPdfRecolorOptionsÚpdf_recolor_pager8  )r'   r£  ÚpdfdocÚroptÚroptss        r(   r“  zPage.recolor	*  sa   € ð
 ˜YÑ&ÜÐ@ÓAÐAÜ! $§+¡+Ó.ˆÜ×(Ñ(Ó*ˆØ"ˆŒÜ×'Ñ'¨Ó-ˆÜ×Ñ˜v t§{¡{°EÕ:r)   c                 óð   — t        |«      }|j                  s|| j                  z  j                  rt	        d«      ‚|| j
                  z  }t        | «      }t        |«      }t        j                  ||«       y)z-Clip away page content outside the rectangle.z"rect must not be infinite or emptyN)
r  rœ  rä   r�  r²   rX  rÉ   rí  r�   Úpdf_clip_page)r'   rä   rï  r˜  Úpclips        r(   Úclip_to_rectzPage.clip_to_rect*  se   € ä�D‹zˆØ×Ò  t§y¡yÑ 0×:Ò:ÜÐAÓBÐBØ�×*Ñ*Ñ*ˆÜ˜tÓ$ˆÜ Ó%ˆÜ×Ñ˜G UÕ+r)   c                 óÀ   — | j                  d«      }|€| j                  S | j                  }t        |d   |j                  |d   z
  |d   |j                  |d   z
  «      S )z
The ArtBoxrË  r   r   r   r   ©r½  rD  rX  r  rù  ©r'   rä   rÍ  s      r(   ÚartboxzPage.artbox *  s[   € ð �‰˜xÓ(ˆØˆ<Ø—<‘<ÐØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGÐGr)   c                 óÀ   — | j                  d«      }|€| j                  S | j                  }t        |d   |j                  |d   z
  |d   |j                  |d   z
  «      S )zThe BleedBoxrÉ  r   r   r   r   rC  rD  s      r(   ÚbleedboxzPage.bleedbox)*  s[   € ð �‰˜zÓ*ˆØˆ<Ø—<‘<ÐØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGÐGr)   c                 ó¶  — t        | «       t        | j                  «      }t        j                  |«      }t        |«      }|j                  rŒ| j                  j                  rv| j                  }|j                  |j                  }}| j                  dvr||}}t        dd||«      }t        j                  d¬«      j                  «       d   }t!        |«       |S )zGet page rectangle.©r   é´   r   F)r	  r…  )rS  rÆ   r³   r�   ro  r  rœ  rÖ   rÌ  rD  rJ  rÅ  r=  rø   Úmupdf_warningsrÈ  rp   )r'   rÅ   rÿ   Úcbr   r¶  rÕ  s          r(   Úboundz
Page.bound2*  s°   € ä�DÔÜ˜4Ÿ9™9Ó%ˆÜ×!Ñ! $Ó'ˆÜ�3‹iˆà�?Š?˜tŸ{™{×1Ò1Ø—‘ˆBØ—8‘8˜RŸY™YˆqˆAØ�}‰} HÑ,Ø˜!�1�Ü�q˜!˜Q Ó"ˆCÜ×&Ñ&¨UÐ&Ó3×>Ñ>Ó@ÀÑDˆCÜ�CŒLàˆ
r)   c                 óì   — |s| j                   s| j                  «        t        | j                  d¬«      }|j                  sy t        d|¬«      }t        j                  |j                  «       ||«       y )NFr  r   )rw  rz  )	Ú
is_wrappedÚwrap_contentsrÉ   r³   r»   r|  r�   Úpdf_filter_page_contentsr  )r'   rz  rÅ   r~  s       r(   r  zPage.clean_contentsD*  sU   € Ù §¢Ø×ÑÔ Ü˜TŸY™Y°Ô7ˆØ�ŠØÜ(°¸XÔFˆÜ×&Ñ&¨¯©«
°D¸'ÕBr)   c                 óà   — t        | «       | j                  d¬«      }|j                  s t        j                  | j
                  «      }nt        |j                  «       «      }t        |«      }|S )zThe CropBox.Fr  )	rS  rø  r»   r�   ro  r³   rC  rü   r  )r'   rÅ   rÿ   s      r(   rD  zPage.cropboxM*  sU   € ô 	�DÔØ�~‰~ uˆ~Ó-ˆØ�ŠÜ×%Ñ% d§i¡iÓ0‰Cä˜TŸX™X›ZÓ(ˆCÜ�3‹iˆàˆ
r)   c                 ó.   — | j                   j                  S r+   )rD  r×  r-   s    r(   Úcropbox_positionzPage.cropbox_positionZ*  s   € à�|‰|�‰Ðr)   c                 ó  — t        | «       t        |«       | j                  «       }	 t        |j                  «      }|sn!t	        j
                  ||j                  «       Œ9t	        j                  |j                  «      }t	        j
                  ||j                  «       t        |«      }|rCd|_        t        j                  | «      |_        ||j                  j                  t        |«      <   |j                  «        |S )z!Delete annot and return next one.T)rS  rø  r‡  r³   r�   rˆ  r"  rÑ   rÞ   rò  rô  rÖ   r%  r&  rß   )r'   rÎ   rÅ   rŒ  Ú	nextannotrÿ   s         r(   Údelete_annotzPage.delete_annot^*  sÂ   € ä�DÔÜ�EÔà�~‰~ÓˆØä)¨%¯*©*Ó5ˆIÙØÜ×"Ñ" 4¨¯©Ô8ð ô ×(Ñ(¨¯©Ó4ˆ	Ü×Ñ˜t U§Z¡ZÔ0Ü�IÓˆáØˆCŒKÜ Ÿ™ tÓ,ˆCŒJØ.1ˆC�J‰J×"Ñ"¤2 c£7Ñ+Ø�‰ŒØˆ
r)   rý   c                 ól   — t        t        dd«      }|j                  «        | j                  ||¬«       y)zÅDelete the image referred to by xef.

        Actually replaces by a small transparent Pixmap using method Page.replace_image.

        Args:
            xref: xref of the image to delete.
        ©r   r   r   r   r   )r’  N)rÄ  r¼  Ú
clear_withÚreplace_image)rÅ   rý   rÍ  s      r(   Údelete_imagezPage.delete_imageu*  s/   € ô ”V˜\¨1Ó-ˆØ�‰ÔØ×Ñ˜4¨ÐÕ,r)   c                 ó  ‡ ‡— t        ‰ «       t        ‰t        «      syˆˆ fd„}t        ‰ j                  d¬«      }|j
                  s |«       S ‰t           }|dk  r |«       S t        j                  |j                  «       t        d«      «      }|j
                  s |«       S t        j                  |«      }|dk(  r |«       S d}t        |«      D ]2  }t        j                  t        j                  ||«      «      }||k(  sŒ2 n ||k7  r |«       S t        j                  |«       t        j                   |j#                  «       |«       t        j$                  |j                  «       t        d«      |«       t'        |«        |«       S )zDelete a Link.Nc                  ó¦   •— ‰d   dk(  ry 	 ‰d   } ‰j                   |    }|j                  «        y # t        $ r t        dkD  r
t	        «        Y y w xY w)Nrý   r   r&  r   )r%  rß   re   r÷   rt   )ÚlinkidÚlinkobjÚlinkdictr'   s     €€r(   Úfinishedz"Page.delete_link.<locals>.finishedˆ*  sY   ø€ Ø˜Ñ 1Ò$ fðØ! $™�Ø×*Ñ*¨6Ñ2�Ø—‘Õ øÜò ä'¨!Ò+´Ô0@Ùðús   Œ$1 ±AÁAFr  r   r„  r   )rS  r<   r4   rÉ   r³   r»   rï   r�   ró   rü   rô   r‰  r8  rî   rŠ  r‹  r.  r  r:  rè	  )	r'   ra  rb  rÅ   rý   r�  ræ  ÚoxrefrL  s	   ``       r(   r	  zPage.delete_link‚*  sB  ù€ ä�DÔÜ˜8¤TÔ*Øõ		ô ˜DŸI™I°Ô6ˆØ�ŠÙ“:ÐØœÑ%ˆØ�!Š8Ù“:ÐÜ×#Ñ# T§X¡X£Z´¸(Ó1CÓDˆØ× Ò Ù“:ÐÜ×"Ñ" FÓ+ˆØ�1Š9Ù“:ÐØˆÜ˜–ˆAÜ×$Ñ$¤e×&9Ñ&9¸6À1Ó&EÓFˆEØ�u‹}Ùð ð
 �5Š=Ù“:ÐÜ×Ñ ¨Ô*Ü×Ñ §¡£¨TÔ2Ü×Ñ˜DŸH™H›J¬°Ó(:¸FÔCÜ˜$Ôá‹zÐr)   c                 ó  — t        | «       t        |dd«      }|€t        d«      ‚|j                  }| j	                  |«       d|j
                  _        t        |j                  j                  «       «      }|D ]  }|j                  |= Œ |S )z0Delete widget from page and return the next one.r³  Nzbad type: widget)
rS  rØ   r²   r*  rW  r³  rÖ   r¡   r 
  r®  )rÅ   r)  rÎ   Ú
nextwidgetÚkeylistr  s         r(   Údelete_widgetzPage.delete_widget®*  s   € ä�DÔÜ˜ ¨$Ó/ˆØˆ=ÜÐ/Ó0Ð0Ø—[‘[ˆ
Ø×Ñ˜%Ô Ø#ˆ�‰ÔÜ�v—‘×+Ñ+Ó-Ó.ˆÛˆCØ—‘ Ñ$ð àÐr)   c                 ó.  — t         r(t        t        j                  | j                  «      «      S | j                  d¬«      }|j                  s6t        t        j                  t        j                  j                  «      «      S t        t        |«      «      S )zReflects page de-rotation.Fr  )r  rb  r   ÚPage_derotate_matrixr³   rø  r»   r�   rU  ÚUNITr  )r'   r˜  s     r(   rY  zPage.derotation_matrix¼*  si   € õ Üœ%×4Ñ4°d·i±iÓ@ÓAÐAØ—.‘.¨%�.Ó0ˆØ×!Ò!Üœ%Ÿ,™,¤u§|¡|×'8Ñ'8Ó9Ó:Ð:ÜÔ-¨gÓ6Ó7Ð7r)   r  Úp3Úp4rô  rJ  rÚ  Ú	closePathÚlineCapÚlineJoinr”  Ústroke_opacityÚfill_opacityc                 óð   — | j                  «       }|j                  t        |«      t        |«      t        |«      t        |«      «      }|j                  |||||||	|
|||¬«       |j	                  |«       |S )zODraw a general cubic Bezier curve from p1 to p4 using control points p2 and p3.©rô  rè   rL  rJ  rn  ro  rÚ  rm  rp  rq  r³  )r-  Údraw_bezierrÖ  r/  r1  )rÅ   r÷  rø  rk  rl  rô  rè   rL  rJ  rÚ  rm  rn  ro  r”  rp  rq  r³  rÄ  rã   s                      r(   rt  zPage.draw_bezierÆ*  sy   € ð( �n‰nÓˆØ�O‰OœE "›I¤u¨R£y´%¸³)¼UÀ2»YÓGˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   r.  Úradiusc                 ó´   — | j                  «       }|j                  t        |«      |«      }|j                  ||||||	||||¬«
       |j	                  |
«       |S )ú*Draw a circle given its center and radius.©
rô  rè   rL  rJ  rn  ro  rÚ  rp  rq  r³  )r-  Údraw_circlerÖ  r/  r1  )rÅ   r.  ru  rô  rè   rÚ  rL  rJ  rn  ro  r”  rp  rq  r³  rÄ  rã   s                   r(   ry  zPage.draw_circleí*  sf   € ð" �n‰nÓˆØ�O‰OœE &›M¨6Ó2ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ô 	ð 	�
‰
�7ÔØˆr)   c                 óÜ   — | j                  «       }|j                  t        |«      t        |«      t        |«      «      }|j                  |||||
|||	|||¬«       |j	                  |«       |S )zdDraw a special Bezier curve from p1 to p3, generating control points on lines p1 to p2 and p2 to p3.rs  )r-  Ú
draw_curverÖ  r/  r1  )rÅ   r÷  rø  rk  rô  rè   rL  rJ  rÚ  rm  rn  ro  r”  rp  rq  r³  rÄ  rã   s                     r(   r{  zPage.draw_curve+  ss   € ð& �n‰nÓˆØ�N‰Nœ5 ›9¤e¨B£i´°r³Ó;ˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   c                 óÆ   — | j                  «       }|j                  t        |«      t        |«      «      }|j                  |||d|||	|
||¬«
       |j	                  |«       |S )z&Draw a line from point p1 to point p2.F©
rô  rL  rJ  rm  rn  ro  rÚ  rp  rq  r³  )r-  Ú	draw_linerÖ  r/  r1  )rÅ   r÷  rø  rô  rL  rJ  rn  ro  r”  rÚ  rp  rq  r³  rÄ  r�  s                  r(   r~  zPage.draw_line5+  sj   € ð  �n‰nÓˆØ�M‰Mœ% ›)¤U¨2£YÓ/ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   c                 ó    — | j                  «       }|j                  |«      }|j                  ||||||||
||¬«
       |j                  |	«       |S )z4Draw an oval given its containing rectangle or quad.rx  )r-  Ú	draw_ovalr/  r1  )rÅ   rä   rô  rè   rL  rÚ  rJ  rn  ro  r”  rp  rq  r³  rÄ  rã   s                  r(   r€  zPage.draw_ovalW+  s`   € ð  �n‰nÓˆØ�M‰M˜$ÓˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   c                 ó¢   — | j                  «       }|j                  |«      }|j                  ||||||||
|||¬«       |j                  |	«       |S )z&Draw multiple connected line segments.rs  )r-  Údraw_polyliner/  r1  )rÅ   rö  rô  rè   rL  rJ  rÚ  rn  ro  r”  rm  rp  rq  r³  rÄ  rã   s                   r(   r‚  zPage.draw_polyliney+  se   € ð" �n‰nÓˆØ×Ñ˜fÓ%ˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   rú  c                 ó²   — | j                  «       }|j                  t        |«      «      }|j                  ||||||||
||¬«
       |j	                  |	«       |S )zDraw a quadrilateral.rx  )r-  Ú	draw_quadÚQuadr/  r1  )rÅ   rú  rô  rè   rL  rJ  rn  ro  rÚ  r”  rp  rq  r³  rÄ  rã   s                  r(   r„  zPage.draw_quad�+  sd   € ð  �n‰nÓˆØ�M‰Mœ$˜t›*Ó%ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   c                 ó¶   — | j                  «       }|j                  t        |«      |¬«      }|j                  ||||||||
||¬«
       |j	                  |	«       |S )zG
        Draw a rectangle. See Shape class method for details.
        ©ru  rx  )r-  r.  r  r/  r1  )rÅ   rä   rô  rè   rL  rJ  rn  ro  rÚ  r”  rp  rq  r³  ru  rÄ  rã   s                   r(   r.  zPage.draw_rect¿+  sh   € ð& �n‰nÓˆØ�M‰Mœ$˜t›*¨VˆMÓ4ˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   ÚbetaÚ
fullSectorc                 óÎ   — | j                  «       }|j                  t        |«      t        |«      ||¬«      }|j                  ||||	||||
|||¬«       |j	                  |«       |S )a  Draw a circle sector given circle center, one arc end point and the angle of the arc.

        Parameters:
            center -- center of circle
            point -- arc end point
            beta -- angle of arc (degrees)
            fullSector -- connect arc ends with center
        ©r‰  rs  )r-  Údraw_sectorrÖ  r/  r1  )rÅ   r.  r  rˆ  rô  rè   rL  r‰  rÚ  rJ  rm  rn  ro  r”  rp  rq  r³  rÄ  rã   s                      r(   rŒ  zPage.draw_sectorä+  ss   € ð6 �n‰nÓˆØ�O‰OœE &›M¬5°«<¸È*ˆOÓUˆØ�
‰
ØØØØØØ!ØØ#Ø-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   Úbreadthc                 óÊ   — | j                  «       }|j                  t        |«      t        |«      |¬«      }|j                  |||d|||
|||¬«
       |j	                  |	«       |S )z/Draw a squiggly line from point p1 to point p2.©r�  Fr}  )r-  Údraw_squigglerÖ  r/  r1  ©rÅ   r÷  rø  r�  rô  rL  rJ  rn  ro  r”  rÚ  rp  rq  r³  rÄ  r�  s                   r(   r�  zPage.draw_squiggle,  sq   € ð" �n‰nÓˆØ×Ñœe B›i¬¨r«¸GÐÓDˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   c                 óÊ   — | j                  «       }|j                  t        |«      t        |«      |¬«      }|j                  |||d|||
|||¬«
       |j	                  |	«       |S )z-Draw a zigzag line from point p1 to point p2.r�  Fr}  )r-  Údraw_zigzagrÖ  r/  r1  r‘  s                   r(   r“  zPage.draw_zigzag5,  sn   € ð" �n‰nÓˆØ�O‰OœE "›I¤u¨R£y¸'ˆOÓBˆØ�
‰
ØØØØØØ!ØØ-Ø)Øð 	ô 	ð 	�
‰
�7Ôàˆr)   c                 ób  — | j                   }|j                   }t        |t        j                  «      sJ ‚t        j                  «       }||_        t        |«      }t        j                  ||«      }t        j                  |||t        j                  «       «       t        j                  |«       y r+   )r³   r<   r�   rð  rë  r¬  rÀ  rŸ  rs  r»  rt  )	r'   rv  r¬  rÆ  rÅ   r©  rõ  rË  rw  s	            r(   Úextend_textpagezPage.extend_textpageX,  s‚   € Ø�y‰yˆØ�Z‰ZˆÜ˜2œu×0Ñ0Ô1Ð1Ð1Ü×&Ñ&Ó(ˆØˆŒÜ Ó'ˆÜ�n‰n˜R Ó)ˆÜ×Ñ˜4  c¬5¯>©>Ó+;Ô<Ü×Ñ˜sÕ#r)   c                 ó&  — t        | «       | j                  d¬«      }|j                  syt        j                  |«      }|j                  syt        |«      }d|_        t        j                  | «      |_	        || j                  t        |«      <   |S )zFirst annotation.Fr  NT)rS  rø  r»   r�   Úpdf_first_annotrÑ   rÞ   rò  rô  rÖ   r%  r&  )r'   rÅ   rÎ   rÿ   s       r(   Úfirst_annotzPage.first_annotc,  s{   € ô 	�DÔØ�~‰~ uˆ~Ó-ˆØ�ŠØÜ×%Ñ% dÓ+ˆØ×ÒØÜ�E‹lˆØˆŒÜ—]‘] 4Ó(ˆŒ
Ø$'ˆ×Ñœ˜C›Ñ!Øˆ
r)   c                 ó"   — | j                  «       S )z$
        First link on page
        )Ú
load_linksr-   s    r(   Ú
first_linkzPage.first_links,  s   € ð
 �‰Ó Ð r)   c                 ón  — t        | «       d}| j                  d¬«      }|j                  syt        j                  |«      }|j                  syt        |«      }d|_        t        j                  | «      |_	        || j                  t        |«      <   t        «       }t        j                  ||«       |}|S )zFirst widget/field.r   Fr  NT)rS  rø  r»   r�   Úpdf_first_widgetrÑ   rÞ   rò  rô  rÖ   r%  r&  r'  rø   r(  )r'   rÎ   rÅ   rÿ   r)  s        r(   Úfirst_widgetzPage.first_widgetz,  sœ   € ô 	�DÔØˆØ�~‰~ uˆ~Ó-ˆØ�ŠØÜ×&Ñ& tÓ,ˆØ×ÒØÜ�E‹lˆØˆŒÜ—]‘] 4Ó(ˆŒ
Ø$'ˆ×Ñœ˜C›Ñ!Ü“ˆÜ×Ñ˜3 Ô'ØˆØˆ
r)   c                 ón  — t        | «       | j                  }|dk7  r| j                  d«       | j                  }g }|rdnd}t	        ||«      }t        j                  ||t        j                  «       t        j                  «       «       t        j                  |«       |dk7  r| j                  |«       |S )Nr   TF)
rS  r=  r£  r³   ÚJM_new_bbox_devicer�   rs  r_  r»  rt  )r'   Úlayersrá  rÅ   r’   Ú
inc_layersrw  s          r(   Úget_bboxlogzPage.get_bboxlogŽ,  s—   € Ü�DÔØ—}‘}ˆØ˜1ÒØ×Ñ˜aÔ Ø�y‰yˆØˆÙ#‘T¨ˆ
Ü  " jÓ1ˆÜ×Ñ˜4 ¤e§n¡nÓ&6¼¿¹Ó8HÔIÜ×Ñ˜sÔ#à˜1ÒØ×Ñ˜lÔ+Øˆ	r)   c                 óF  — t        | «       | j                  }|dk7  r| j                  d«       | j                  }t	        |t
        j                  «      rt        j                  |«      }t	        |t
        j                  «      sJ d| j                  ›�«       ‚|rdnd}t        j                  |«      }t        rt        j                  ||||«      }n¬t        «       }t        |«      s|�t        |||«      }	nt        |||«      }	t        j                  ddddd|j                   «      |	_        t        j$                  ||	t        j                  «       t        j&                  «       «       t        j(                  |	«       |dk7  r| j                  |«       t        |«      s|�y|S )z3Extract vector graphics ("line art") from the page.r   z
self.this=TFNr   r…  )rS  r=  r£  r³   r<   r�   rÂ   rÃ   ro  r  r   Úget_cdrawingsr¡   ÚcallableÚJM_new_lineart_device_Devicer_  rù  Úptmrs  r»  rt  )
r'   ÚextendedÚcallbackÚmethodrá  rÅ   ÚclipsÚprectr’   rw  s
             r(   r¥  zPage.get_cdrawingsž,  sL  € ä�DÔØ—}‘}ˆØ˜1ÒØ×Ñ˜aÔ Ø�y‰yˆÜ�dœEŸM™MÔ*ä—<‘< Ó%ˆDÜ˜$¤§¡Ô-Ð>°*°$·)±)°¨Ó>Ð-Ù ‘ eˆÜ×#Ñ# DÓ)ˆÝÜ×$Ñ$ T¨8°X¸vÓF‰Bä“ˆBÜ˜Ô! VÐ%7Ü2°8¸UÀFÓK‘ä2°2°u¸fÓE�Ü—n‘n Q¨¨1¨b°!°U·X±XÓ>ˆCŒGÜ×Ñ˜d C¬¯©Ó)9¼5¿>¹>Ó;KÔLÜ×!Ñ! #Ô&à˜1ÒØ×Ñ˜lÔ+Ü�HÔ Ð!3ØØˆ	r)   c                 ó  — t        | «       g }t        | j                  «      }|j                  «       }t	        j
                  |t        j                  «      }t	        j                  |«      rct	        j                  |«      }t        |«      D ]>  }t	        j                  ||«      }t	        j                  |«      }|j                  |«       Œ@ |S |j                  r&t	        j                  |«      }|j                  |«       |S )zGet xrefs of /Contents objects.)rS  rÉ   r³   rü   r�   ró   r`  rv  r‰  r8  rŠ  rî   ri   r»   )	r'   rE   rÅ   rü   rY  rC   rL  Úicontrý   s	            r(   r	  zPage.get_contents½,  sÍ   € ä�DÔØˆÜ˜DŸI™IÓ&ˆØ�h‰h‹jˆÜ×%Ñ% c¬5×+GÑ+GÓHˆÜ×Ñ˜hÔ'Ü×#Ñ# HÓ-ˆAÜ˜1–X�Ü×+Ñ+¨H°aÓ8�Ü×'Ñ'¨Ó.�Ø—
‘
˜4Õ ð ð ˆ
ð × Ò Ü×#Ñ# HÓ-ˆDØ�J‰J˜ÔØˆ
r)   c                 óÄ   — t        | «       |r*t        j                  | j                  «      }t        |«      S t        j                  | j                  «      }t        |«      S )z|
        Make a DisplayList from the page for Pixmap generation.

        Include (default) or exclude annotations.
        )rS  r�   Úfz_new_display_list_from_pager³   Ú&fz_new_display_list_from_page_contentsr¬  )r'   r�  r¯  s      r(   Úget_displaylistzPage.get_displaylistÏ,  sO   € ô 	�DÔÙÜ×4Ñ4°T·Y±YÓ?ˆBô ˜2‹Ðô ×=Ñ=¸d¿i¹iÓHˆBÜ˜2‹Ðr)   r©  c                 óh  — d}| j                  |¬«      }t        t        |«      «      D �]   }||   }|d   j                  d«      st	        |d   «      |d<   nt	        |d   «      |d<   |d   dk7  r’|d   }g }|D ]�  }|d	   }	|d
d }
|	dk(  r#dt	        |
d	   «      j                  «       |
d
   f}n<|	dk(  rdt        |
d	   «      f}n&t        |	g|
D �cg c]  }t        |«      ‘Œ c}z   «      }|j                  |«       Œƒ ||d<   |d   dv r|D ]  }|j                  |«      ||<   Œ ||<   �Œ |S c c}w )a<  Retrieve vector graphics. The extended version includes clips.

        Note:
        For greater comfort, this method converts point-likes, rect-likes, quad-likes
        of the C version to respective Point / Rect / Quad objects.
        It also adds default items that are missing in original path types.
        )
rm  rè   rô  rJ  rn  ro  rL  rp  rq  Úeven_odd)r©  r·   rï  rä   Úscissorra  r@   r   r   Nr`  Úqur»  )r¥  r8  r6   r2   r  Ú	normalizer…  r¢   rÖ  ri   r7   Úobject)r'   r©  Úallkeysrÿ   rL  Únpathr@   ÚnewitemsrA   ÚcmdÚrestr�  ÚDrawpathÚDrawpathlistÚget_linearts                  r(   Úget_drawingszPage.get_drawingsÜ,  sd  € ðˆð × Ñ ¨(Ð Ó3ˆÜ”s˜3“x—ˆAØ˜‘FˆEØ˜‘=×+Ñ+¨FÔ3Ü $ U¨6¡]Ó 3��f’ä#'¨¨iÑ(8Ó#9��iÑ Ø�V‰}˜gÒ%Ø˜g™�Ø�Û!�DØ˜q™'�CØ  ˜8�DØ˜tšØ $¤d¨4°©7£m×&=Ñ&=Ó&?ÀÀaÁÐI™Ø šØ $¤d¨4°©7£mÐ4™ä$ c UÁÓ-EÁ¸1¬e°A­hÀÑ-EÑ%EÓF˜Ø—O‘O DÕ)ð "ð "*��g‘Ø�V‰} 
Ñ*Û �AØ$Ÿy™y¨›|�E˜!’Hð !ð ˆC�‹Fð1 !ð2 ˆ
ùò .Fs   ÃD/Úhashesr0  c                 óö  — | j                   }|r|j                  rd}|j                  sd}t        | dd«      }|r|s|S |s2| j                  t        ¬«      }|j                  |¬«      }~|r|| _        |r|j                  s|S | j                  «       }i }|D ]#  }|d   }	t        ||	«      }
|	||
j                  <   ~
Œ% t        t        |«      «      D ]&  }||   }|j                  |d   d«      }	|	|d	<   |||<   Œ( |S )
zßExtract image information only from a pymupdf.TextPage.

        Args:
            hashes: (bool) include MD5 hash for each image.
            xrefs: (bool) try to find the xref for each image. Sets hashes to true.
        TFÚ_image_infoN)r¬  ©rÃ  r   r£  rý   )rÖ   rÌ  rØ   rø  ÚTEXT_PRESERVE_IMAGESÚextractIMGINFOrÅ  Ú
get_imagesrÄ  r£  r8  r6   r7   )rÅ   rÃ  r0  r  Úimginfor©  Úimglistr—  rA   rý   rÍ  rL  s               r(   Úget_image_infozPage.get_image_infoš-  s  € ð �k‰kˆÙ�S—Z’ZØˆFØ�zŠzØˆEÜ˜$ ¨tÓ4ˆÙ™5ØˆNÙØ×"Ñ"Ô)=Ð"Ó>ˆBØ×'Ñ'¨vÐ'Ó6ˆGØÙØ#*�Ô Ù˜CŸJšJØˆNØ—/‘/Ó#ˆØˆÛˆDØ˜‘7ˆDÜ˜˜dÓ#ˆCØ"&ˆG�C—J‘JÑÙð	 ô
 ”s˜7“|Ö$ˆAØ˜1‘:ˆDØ—;‘;˜t H™~¨qÓ1ˆDØˆD�‰LØˆG�AŠJð	 %ð
 ˆr)   c                 óP  — t        |«      t        t        fv r|d   }nkt        |«      t        u r|}nW| j	                  «       D �cg c]  }|d   |k(  sŒ|‘Œ }}|g k(  rt        d«      ‚t        |«      dk7  rt        d«      ‚|d   d   }t        | j                  |«      }|j                  }~| j                  d¬«      }|s&|D �	cg c]  }	|	d   |k(  sŒt        |	d	   «      ‘Œ }
}	|
S |D �	cg c]&  }	|	d   |k(  rt        |	d	   «      t        |	d
   «      f‘Œ( }
}	|
S c c}w c c}	w c c}	w )a¹  Return list of image positions on a page.

        Args:
            name: (str, list, int) image identification. May be reference name, an
                  item of the page's image list or an xref.
            transform: (bool) whether to also return the transformation matrix.
        Returns:
            A list of pymupdf.Rect objects or tuples of (pymupdf.Rect, pymupdf.Matrix)
            for all image locations on the page.
        r   rµ  úbad image namer   zmultiple image names foundTrÆ  r£  r  rá  )r·   r¡   r¢   r3   rÉ  r²   r6   rÄ  rÖ   r£  rÌ  r  rb  )rÅ   r   rá  rý   rL  rË  rÍ  r£  ÚinfosÚimÚbboxess              r(   Úget_image_rectszPage.get_image_rectsÃ-  sK  € ô �‹:œ$¤˜Ñ&Ø˜‘7‰DÜ�$‹Zœ3ÑØ‰Dà"&§/¡/Ô"3ÓDÑ"3˜Q°q¸±t¸t³|’qÐ"3ˆGÐDØ˜"Š}Ü Ð!1Ó2Ð2Ü�W“ Ò"Ü Ð!=Ó>Ð>Ø˜1‘:˜a‘=ˆDÜ�T—[‘[ $Ó'ˆØ—‘ˆØØ×#Ñ#¨4Ð#Ó0ˆÙÙ16ÓQ±¨2¸"¸X¹,È&Ó:P”d˜2˜f™:Õ&°ˆFÐQð ˆñ  óá�BØ�h‘< 6Ò)ô �b˜‘jÓ!¤6¨"¨[©/Ó#:Ò;Øð ð ð
 ˆùò% Eùò Rùòs   ÁDÁDÃDÃDÃ*+D#c                 óœ   — | j                   j                  «       }|sy|j                  «        t        j                  | j
                  |«      S )z³Return the label for this PDF page.

        Args:
            page: page object.
        Returns:
            The label (str) of the page. Errors return an empty string.
        rZ   )rÖ   r  r¹  rá  rk  r8  )rÅ   rj  s     r(   Ú	get_labelzPage.get_labelç-  s<   € ð —‘×-Ñ-Ó/ˆÙØØ�‰ŒÜ×"Ñ" 4§;¡;°Ó7Ð7r)   c                 óð  — t        | «       | j                  }g }|r@t        j                  || j                  «      }|j                  |«       |j                  }|rŒ@|g k7  r�| j                  j                  rzt        | «      D �cg c]  }|d   t        j                  k(  r|‘Œ }}t        |«      t        |«      k(  r5t        t        |«      «      D ]  }||   d   ||   d<   ||   d   ||   d<   Œ  |S c c}w )z~Create a list of all links contained in a PDF page.

        Notes:
            see PyMuPDF ducmentation for details.
        r   r   rý   r   r&  )rS  r›  rá  rƒ  rÖ   ri   r*  rÌ  r  r�   r�  r6   r8  )rÅ   Úlnrg  Únlr  Ú	linkxrefsrL  s          r(   r\  zPage.get_links÷-  sü   € ô 	�DÔØ�_‰_ˆØˆÙÜ×"Ñ" 2 t§{¡{Ó3ˆBØ�L‰L˜ÔØ—‘ˆBò ð �BŠ;˜4Ÿ;™;×-Ò-ô ,¨DÔ1óá1ð  !ð ˜‘tœu×3Ñ3Ò3ò à1ð ð ô
 �9‹~¤ U£Ò+Üœs 9›~Ö.�AØ'0°¡|°A¡�E˜!‘H˜VÑ$Ø%.¨q¡\°!¡_�E˜!‘H˜T’Nð /ð ˆùòs   ÂC3rp  rÆ  rÈ  rï  rÉ  r�  rÄ  c                ó~  — |€t         }|r|dz  }t        ||«      }t        |«      t        u r:|j	                  «       dk(  rt
        }n |j	                  «       dk(  rt        }nt         }|j                  dvrt        d«      ‚| j                  |¬«      }|j                  ||||¬«      }	d}|r|	j                  ||«       |	S )	aÏ  Create pixmap of page.

        Keyword args:
            matrix: Matrix for transformation (default: Identity).
            dpi: desired dots per inch. If given, matrix is ignored.
            colorspace: (str/Colorspace) cmyk, rgb, gray - case ignored, default csRGB.
            clip: (irect-like) restrict rendering to this area.
            alpha: (bool) whether to include alpha channel
            annots: (bool) whether to also render annotations
        Nr»  r�  r‘  rX  zunsupported colorspace)r�  )rÆ  rÈ  rÉ  rï  )r½  rb  r·   rÙ   r 	  r¼  r¾  rC   r²   r³  rÎ  rÅ  )
rÅ   rÆ  rÇ  rÈ  rï  rÉ  r�  rI  r¯  rÍ  s
             r(   rÎ  zPage.get_pixmap.  sÂ   € ð( ÐÜˆJÙØ˜‘8ˆDÜ˜D $Ó'ˆFä�
ÓœsÑ"Ø×ÑÓ! VÒ+Ü#‘
Ø×!Ñ!Ó# vÒ-Ü#‘
ä"�
Ø�<‰<˜yÑ(ÜÐ5Ó6Ð6à×!Ñ!¨Ð!Ó0ˆØ�m‰m 6°jÈÐTXˆmÓYˆØˆÙØ�K‰K˜˜SÔ!Øˆ
r)   c           	      óx  — | j                   }|dk(  rt        S | j                  }|dk(  rBt        dddd|j                  |j
                  z
  |j                  z
  |j                  z
  d«      }nq|dk(  rBt        ddddd|j
                  |j                  z
  |j                  z
  |j                  z
  «      }n*t        ddddd|j                  z  d|j                  z  «      }|| j                  z  }t        t        |«      «      dz   }|j                  d«      }t        j                  | |d«      }|d	v r4|\  }}}	}
||_        ||_        |
|_        |	|_        | j                  |«       | j                  d«       | }| j!                  «       D ]"  }|j"                  |z  }|j%                  |«       Œ$ | j'                  «       D ]2  }|d
   |z  }| j)                  |«       ||d
<   	 | j+                  |«       Œ4 | j/                  «       D ](  }|j"                  |z  }||_        |j1                  «        Œ* |S # t,        $ r Y Œ}w xY w)z;Set page rotation to 0 while maintaining visual appearance.r   r¢  r   é  rÁ  z cm r¢	  F©r¢  rÛ  rE  )r=  rr  rX  rb  rù  r÷  rø  rú  rY  r£   r¢   r²  rø   Ú_insert_contentsÚset_mediaboxr£  r�  rä   rŸ  r\  r	  Úinsert_linkre   r�  rû  )r'   r@  rÍ  Úmat0rc  r½  rí  rø  rú  r÷  rù  rÎ   r  rˆ  r)  s                  r(   Úremove_rotationzPage.remove_rotation<.  s  € à�m‰mˆØ�!Š8ÜÐð �]‰]ˆà�"Š9ä˜!˜Q  1 b§e¡e¨b¯e©e¡m°b·e±eÑ&;¸b¿e¹eÑ&CÀQÓG‰DØ�CŠZä˜!˜Q  1 a¨¯©°·±©¸¿¹Ñ)>ÀÇÁÑ)FÓG‰Dä˜!˜Q  1 b¨2¯5©5¡j°"°r·u±u±*Ó=ˆDð �T×+Ñ+Ñ+ˆÜœ˜c›
Ó# fÑ,ˆØ�j‰j˜Ó ˆÜ×"Ñ" 4¨¨eÓ4ˆð �)ÑØ‰NˆB��B˜ØˆBŒEØˆBŒEØˆBŒEØˆBŒEØ×Ñ˜bÔ!à×Ñ˜!ÔØˆdˆà—[‘[–]ˆEØ—
‘
˜SÑ ˆAà�N‰N˜1Õð #ð —N‘NÖ$ˆDØ�V‘˜sÑ"ˆAØ×Ñ˜TÔ"ØˆD�‰LðØ× Ñ  Õ&ð %ð —l‘l–nˆFØ—‘˜cÑ!ˆAØˆFŒKØ�M‰M�Oð %ð ˆ
øô ò Ùðús   ÇH-È-	H9È8H9Úx_toleranceÚy_toleranceÚfinal_filterc                 ó¢  ‡‡— t        | «       | j                  }|�t        |«      }|Š|Š|€| j                  «       }ˆˆfd„}|D �cg c]u  }	 |d   j                  |j                  k\  rV|d   j
                  |j
                  k  r:|d   j                  |j                  k\  r|d   j                  |j                  k  r|‘Œw }	}t        |	D �cg c]  }|d   ‘Œ	 c}d„ ¬«      }
g }|
r‘|
d   ­}d}|rYd}t        t        |
«      dz
  dd	«      D ]8  } ||
|   |«      sŒ||
|   j                  z  }||
|   j                  z  }|
|= d}Œ: |rŒY|j                  |«       |
d= t        t        |
«      d
„ ¬«      }
|
rŒ‘t        t        |«      d„ ¬«      }|s|S |D �cg c]$  }|j                  ‰kD  sŒ|j                   ‰kD  sŒ#|‘Œ& c}S c c}w c c}w c c}w )aÊ  Join rectangles of neighboring vector graphic items.

        Args:
            clip: optional rect-like to restrict the page area to consider.
            drawings: (optional) output of a previous "get_drawings()".
            x_tolerance: horizontal neighborhood threshold.
            y_tolerance: vertical neighborhood threshold.

        Notes:
            Vector graphics (also called line-art or drawings) usually consist
            of independent items like rectangles, lines or curves to jointly
            form table grid lines or bar, line, pie charts and similar.
            This method identifies rectangles wrapping these disparate items.

        Returns:
            A list of Rect items, each wrapping line-art items that are close
            enough to be considered forming a common vector graphic.
            Only "significant" rectangles will be returned, i.e. having both,
            width and height larger than the tolerance values.
        c                 óª  •— | j                   | j                  kD  r| j                  | j                   fn| j                   | j                  f\  }}| j                  | j                  kD  r| j                  | j                  fn| j                  | j                  f\  }}|j                   |j                  kD  r|j                  |j                   fn|j                   |j                  f\  }}|j                  |j                  kD  r|j                  |j                  fn|j                  |j                  f\  }}		 ||‰
z
  k  s||‰
z   kD  s||‰z
  k  s||	‰z   kD  ryy)z÷Detect whether r1, r2 are "neighbors".

            Items r1, r2 are called neighbors if the minimum distance between
            their points is less-equal delta.

            Both parameters must be (potentially invalid) rectangles.
            FT©r÷  rø  rù  rú  )Úr1Úr2Úrr1_x0Úrr1_x1Úrr1_y0Úrr1_y1Úrr2_x0Úrr2_x1Úrr2_y0Úrr2_y1Údelta_xÚdelta_ys             €€r(   Úare_neighborsz,Page.cluster_drawings.<locals>.are_neighbors“.  s
  ø€ ð 02¯u©u°r·u±uª}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆF�FØ/1¯u©u°r·u±uª}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆF�FØ/1¯u©u°r·u±uª}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆF�FØ/1¯u©u°r·u±uª}˜bŸe™e R§U¡U™^À2Ç5Á5È"Ï%É%À.‰NˆF�FàØ˜F WÑ,Ò,Ø˜F WÑ,Ò,Ø˜F WÑ,Ò,Ø˜F WÑ,Ò,ð ð r)   r   rä   c                 ó2   — | j                   | j                  fS r+   ©rù  rø  ©r  s    r(   rL	  z'Page.cluster_drawings.<locals>.<lambda>¹.  s   € À1Ç4Á4ÈÏÉÁ,r)   rn	  r   TFr…  c                 ó2   — | j                   | j                  fS r+   rö  r÷  s    r(   rL	  z'Page.cluster_drawings.<locals>.<lambda>Î.  s   € ¸¿¹¸a¿d¹d±|r)   c                 ó2   — | j                   | j                  fS r+   rö  r÷  s    r(   rL	  z'Page.cluster_drawings.<locals>.<lambda>Ð.  s   € ¸!¿$¹$ÀÇÁ¹r)   )rS  rä   r  rÂ  rø  r÷  rú  rù  r³
  r8  r6   r×  rØ  ri   r¸  rJ  rÅ  )r'   rï  Údrawingsrâ  rã  rä  Úparearô  r�  ÚpathsÚprectsÚ	new_rectsr  ÚrepeatrL  rò  ró  s                  @@r(   Úcluster_drawingszPage.cluster_drawingsr.  sä  ù€ ô0 	�DÔØ—	‘	ˆØÐÜ˜“JˆEØˆØˆØÐØ×(Ñ(Ó*ˆHõ	ñ: ó
á�ØØ�&‘	—‘ §¡Ò(Ø�&‘	—‘ §¡Ò(Ø�&‘	—‘ §¡Ò(Ø�&‘	—‘ §¡Ò(ò Øð 	ð 
ô ©EÓ2©E q˜˜6›¨EÑ2Ñ8NÔOˆàˆ	ñ
 Ø˜‘�
ˆAØˆFÙØ�Üœs 6›{¨Q™°°2Ö6�AÙ$ V¨A¡Y°Õ2Ø˜V A™YŸ\™\Ñ)˜Ø˜V A™YŸ\™\Ñ)˜Ø" 1˜IØ!%™ð 7ò ð ×Ñ˜QÔØ�q�	ÜœC ›KÑ-CÔDˆFò ô  œ3˜y›>Ñ/EÔFˆ	ÙØÐÙ$ÓQ™9�a¨¯©°'Ó(9¸a¿h¹hÈÓ>P’˜9ÑQÐQùòK
ùò 3ùò4 Rs   ÁA:GÃGÆGÆ+GÆ;Gc                 óf   — t        | «       | j                  j                  | j                  |¬«      S )z)List of fonts defined in the page object.rÄ	  )rS  rÖ   rc  r8  ©r'   r`  s     r(   Ú	get_fontszPage.get_fontsÕ.  s(   € ä�DÔØ�{‰{×)Ñ)¨$¯+©+¸DÐ)ÓAÐAr)   c           	      ód  — t        | «       | j                  }|j                  s|j                  rt	        d«      ‚t        dddd«      }t        «       }|r||f}n|}t        |«      t        t        fv r"t        |d   «      t        urt	        d«      ‚|}nd|j                  | j                  d«      D �cg c]  }||d   k(  sŒ|‘Œ }	}t        |	«      dk(  r|	d   }n|	g k(  rt	        d«      ‚t	        d	|z  «      ‚|d   }
|
dk7  s|r	 | j                  ||¬
«      d   S | j#                  «       }t%        |«      }t'        |«      s|S |D ]Å  }|d   |d   k7  rŒt)        |d   «      }|j*                  }|dk(  r|} |}|S t        t-        |j.                  |j0                  «      «      }t3        |j.                  |j4                  z
  «      }t3        |j6                  |j4                  z
  «      }t        d|z  ddd|z  dd«      }||z   }||f} |}|S  |}|S c c}w # t        $ r t!        «        |cY S w xY w)zòGet rectangle occupied by image 'name'.

        'name' is either an item of the image list, or the referencing
        name string - elem[7] of the resp. item.
        Option 'transform' also returns the image transformation matrix.
        r  r   r…  z!need item of full page image listTrµ  r   rÎ  z!found multiple images named '%s'.)rá  éýÿÿÿ)rS  rÖ   r±   rî  r²   r  rb  r·   r¡   r¢   r3   rf  r8  r6   rÒ  re   rt   rø  ÚJM_image_reporterr%  r…  rä   Úutil_hor_matrixÚllÚlrrÙ  r”  Úur)r'   r   rá  r  Úinf_rectÚnull_matr’   rA   rL  rË  rý   ró  rÿ   rD   r*  r  Úhmr¶  r   Úm0rm  s                        r(   Úget_image_bboxzPage.get_image_bboxÚ.  sN  € ô 	�DÔØ�k‰kˆØ�=Š=˜C×,Ò,ÜÐ;Ó<Ð<ä˜˜1˜b "Ó%ˆÜ“8ˆÙØ˜HÐ%‰BàˆBä�‹:œ$¤˜Ñ&Ü˜˜R™“>¤SÑ(Ü Ð!DÓEÐEØ‰Dà"%×"5Ñ"5°d·k±kÀ4Ô"HÓYÑ"H˜QÈDÐTUÐVWÑTXËL’qÐ"HˆGÐYÜ�7‹|˜qÒ Ø˜q‘z‘Ø˜B’Ü Ð!1Ó2Ð2ä Ð!DÀtÑ!KÓLÐLØ�B‰xˆØ�1Š9™	ð Ø×+Ñ+¨D¸IÐ+ÓFÀqÑIÐIð —>‘>Ó#ˆÜ Ó)ˆä�CŒyØˆIãˆAØ�‰t�t˜B‘xÒØÜ�Q�q‘T“
ˆAØ—6‘6ˆDØ˜AŠ~Ø�Øð ˆàˆ
ô œ¨¯©¨a¯d©dÓ3Ó4ˆBÜ�A—D‘D˜1Ÿ4™4‘KÓ ˆAÜ�A—D‘D˜1Ÿ4™4‘KÓ ˆAÜ˜˜A™˜q ! Q¨¡U¨A¨qÓ1ˆBØ�r‘'�
ˆAØ˜�ˆBØØˆàˆ
ð% ð  ˆàˆ
ùòM Zøô ò  ÜÔ Ø’ð ús   Â3HÃHÄH ÈH/È.H/c                 óf   — t        | «       | j                  j                  | j                  |¬«      S )z*List of images defined in the page object.rÄ	  )rS  rÖ   rf  r8  r  s     r(   rÉ  zPage.get_images/  s(   € ä�DÔØ�{‰{×*Ñ*¨4¯;©;¸TÐ*ÓBÐBr)   c                 óº   — g }| j                  «       D ]E  \  }}| j                  j                  |d¬«      }d|v rd}nd|v rd}nŒ2|j                  |||f«       ŒG |S )zÈGet OCGs and OCMDs used in the page's contents.

        Returns:
            List of items (name, xref, type), where type is one of "ocg" / "ocmd",
            and name is the property name.
        Tre  rd  rŒ  rR  Úocmd)re  rÖ   rh  ri   )r'   r’   Úpnamerý   r   Úoctypes         r(   Úget_oc_itemszPage.get_oc_items/  sp   € ð ˆØ×8Ñ8Ö:‰KˆE�4Ø—;‘;×*Ñ*¨4¸DÐ*ÓAˆDØ˜dÑ"Ø‘Ø Ñ%Ø‘àØ�I‰I�u˜d FÐ+Õ,ð ;ð ˆ	r)   c                 ó”  — t        | «       t        j                  | j                  «      }t	        |«      }|}|dk(  rt        j
                  nt        j                  }t        j                  ||«      }t        j                  d«      }t        j                  |«      }t        j                  ||j                  |j                  z
  |j                  |j                  z
  |d«      }	t        j                  | j                  |	|t        j                   «       «       t        j"                  |	«       |j%                  «        t'        |«      }
|
S )zMake SVG image from page.r   é   )rS  r�   ro  r³   rÀ  ÚFZ_SVG_TEXT_AS_PATHÚFZ_SVG_TEXT_AS_TEXTr–  r¨  r©  Úfz_new_svg_devicer÷  rø  rù  rú  rs  r»  rt  rë  r
  )r'   rÆ  Útext_as_pathrX  rË  ÚtboundsÚtext_optionr  rì  rw  r   s              r(   Úget_svg_imagezPage.get_svg_image2/  sú   € ä�DÔÜ×&Ñ& t§y¡yÓ1ˆÜ Ó'ˆØˆØ3?À1Ò3D”e×/Ò/Ì%×JcÑJcˆÜ×)Ñ)¨'°3Ó7ˆä×!Ñ! $Ó'ˆÜ�n‰n˜SÓ!ˆÜ×%Ñ%ØØ—
‘
˜7Ÿ:™:Ñ%Ø—
‘
˜7Ÿ:™:Ñ%ØØóˆô 	×Ñ˜$Ÿ)™) S¨#¬u¯~©~Ó/?Ô@Ü×Ñ˜cÔ"Ø×ÑÔÜ% cÓ*ˆØˆr)   c                 óŒ   — |}|€| j                  «       }nt        |d«      | k7  rt        d«      ‚|j                  |«      }|€~|S )NrÖ   únot a textpage of this page)rø  rØ   r²   ÚextractTextbox)rÅ   rä   ru  r©  r’   s        r(   rè  zPage.get_textboxJ/  sU   € ð
 ˆØˆ:Ø×"Ñ"Ó$‰BÜ�R˜Ó" dÒ*ÜÐ:Ó;Ð;Ø×Ñ˜tÓ$ˆØÐØØˆ	r)   c                 ó4   — t        j                  | g|¢­i |¤ŽS r+   rà  rã  s      r(   râ  zPage.get_textY/  ræ  r)   c                 ó4   — t        j                  | g|¢­i |¤ŽS r+   )rá  Úget_text_blocksrã  s      r(   r$  zPage.get_text_blocks\/  s   € Ü×$Ñ$ TÐ;¨DÒ;°FÑ;Ð;r)   c                 ó4   — t        j                  | g|¢­i |¤ŽS r+   )rá  Úget_text_selectionrã  s      r(   r&  zPage.get_text_selection_/  s   € Ü×'Ñ'¨Ð>¨tÒ>°vÑ>Ð>r)   c                 ó4   — t        j                  | g|¢­i |¤ŽS r+   )rá  Úget_text_wordsrã  s      r(   r(  zPage.get_text_wordsb/  s   € Ü×#Ñ# DÐ:¨4Ò:°6Ñ:Ð:r)   c                 ó4   — t        j                  | g|¢­i |¤ŽS r+   )rá  Úget_textpage_ocrrã  s      r(   r*  zPage.get_textpage_ocre/  s   € Ü×%Ñ% dÐ<¨TÒ<°VÑ<Ð<r)   r¬  rñ  c                 óV  — t        | «       |€t        dd«      }| j                  }|dk7  r| j                  d«       	 | j	                  |||¬«      }|dk7  r| j                  |«       	 t        |«      }t        j                  | «      |_        |S # |dk7  r| j                  |«       w w xY w)Nr   r   )r¬  rÆ  )	rS  rb  r=  r£  rx  rñ  rò  rô  rÖ   )r'   rï  r¬  rÆ  rá  ru  s         r(   rø  zPage.get_textpageh/  s©   € Ü�DÔØˆ>Ü˜A˜q“\ˆFØ—}‘}ˆØ˜1ÒØ×Ñ˜aÔ ð	0Ø×)Ñ)¨$°eÀFÐ)ÓKˆHà˜qÒ Ø×!Ñ! ,Õ/Ü˜HÓ%ˆÜ!Ÿ-™-¨Ó-ˆŒØˆøð	 ˜qÒ Ø×!Ñ! ,Õ/ð !ús   ½B ÂB(c                 ó  — t        | «       | j                  }|dk7  r| j                  d«       | j                  }g }t        rt        j                  |«      }nt        |«      }t        j                  |«      }t        j                  ddddd|j                  «      |_        t        j                  ||t        j                  «       t        j                  «       «       t        j                  |«       |dk7  r| j                  |«       |S ©Nr   r   r…  )rS  r=  r£  r³   r  r   ÚJM_new_texttrace_devicer�   ro  r_  rù  r¨  rs  r»  rt  )r'   rá  rÅ   r’   rw  r­  s         r(   r×	  zPage.get_texttracex/  sÍ   € ä�DÔØ—}‘}ˆØ˜1ÒØ×Ñ˜aÔ Ø�y‰yˆØˆÝÜ×/Ñ/°Ó3‰Cä)¨"Ó-ˆCÜ×#Ñ# DÓ)ˆÜ—.‘.  A q¨"¨a°·±Ó:ˆŒÜ×Ñ˜$ ¤U§^¡^Ó%5´u·~±~Ó7GÔHÜ×Ñ˜cÔ"à˜1ÒØ×Ñ˜lÔ+Øˆ	r)   c                 ób   — t        | «       | j                  j                  | j                  «      S )z,List of xobjects defined in the page object.)rS  rÖ   ry  r8  r-   s    r(   Úget_xobjectszPage.get_xobjects�/  s#   € ä�DÔØ�{‰{×,Ñ,¨T¯[©[Ó9Ð9r)   r&
  c                 ó$  — | j                   }|€t        d«      ‚d}|j                  d«      r|dd  }t        j	                  |«      }	|	t        «       k7  rt        d|	› �«      ‚t        | |«      }
|
�&|
d   }t        ||«      r|S |j                  |«       |S t        j                  |j                  «       d «      }d}d}g d¢}g d¢}	 |j                  |«      }d}|dk  r	 |j                  |«      }d}|j                  «       t         j#                  «       v rdd l}|j'                  |«      }~|�Pt)        |«      t*        u r|}n>t-        |d	«      rt+        |«      }n&t-        |d
«      r|j.                  }nt        d«      ‚d }| j1                  ||||||||||«
      }|s|S |d   }|d   }t        ||«      r|S |j                  ||¬«       |S # t        $ r t        dkD  r
t        «        Y �Œw xY w# t        $ r t        dkD  r
t        «        Y �Œw xY w)Nr×
  r   r"  r   zbad fontname chars r…  )rS
  rU
  rW
  rV
  )rT
  úchina-ssújapan-súkorea-sré  r   zbad fontfile)r  )rÖ   r²   r2   r
  r
  r¸  Ú	CheckFontr(  r2  r[
  r7   r¿  rP  re   r÷   rt   rX
  r®  rY
  rZ
  r·   rÙ   r9   r   r±  )r'   ræ   r7  r8  r¯  rq
  rØ  r  r%  Ú	inv_charsrH  rý   rü  r}
  Ú
CJK_numberÚ
CJK_list_nÚ
CJK_list_srY
  Úfontfile_strrÿ   r  s                        r(   Úinsert_fontzPage.insert_font’/  s>  € à�k‰kˆØˆ;ÜÐ>Ó?Ð?Øˆà×Ñ˜sÔ#Ø  �|ˆHÜ&×3Ñ3°HÓ=ˆ	Øœ›ÒÜÐ2°9°+Ð>Ó?Ð?ä˜˜xÓ(ˆØÐØ˜‘7ˆDÜ˜S $Ô'Ø�à×Ñ Ô%ØˆKô !×$Ñ$ X§^¡^Ó%5°tÓ<ˆàˆØˆ
Ú=ˆ
ÚCˆ
ð	Ø#×)Ñ)¨(Ó3ˆJØˆEð ˜Š>ðØ'×-Ñ-¨hÓ7�
Ø�ð �>‰>ÓÔ3×8Ñ8Ó:Ñ:Û Ø&×-Ñ-¨hÓ7ˆJØð ÐÜ�H‹~¤Ñ$Ø'‘Ü˜ :Ô.Ü" 8›}‘Ü˜ 6Ô*Ø'Ÿ}™}‘ä  Ó0Ð0àˆLØ×Ñ˜x¨°¸zÈ:ÐWZØ$ e¨X°zóCˆñ ØˆJà�1‰vˆØ�q‘6ˆä˜˜dÔ#ØˆKð 	×Ñ˜D¨8ÐÔ4Øˆøô[ ò 	ä# aÒ'¬NÔ,<Úð	ûô ò ä'¨!Ò+´Ô0@Úðús$   ÃG Ã G/ ÇG,Ç+G,Ç/HÈH)	ÚcssÚ	scale_lowÚarchiverE  r³  rB  r”  Ú_scale_word_widthÚ_verbosec       	   	      óô  ‡— |dz  dk(  st        d«      ‚|dk  r|dz  }|dk  rŒ|dk\  r|dz  }|dk\  rŒd|cxk  rdk  st        d«      ‚ t        d«      ‚|€d}t        |«      }|d	v r#t        dd|j                  |j                  «      }n"t        dd|j                  |j                  «      }d
|z   }t	        |t
        «      rt        |||¬«      }nt	        |t        «      r|}nt        d«      ‚|dk(  rdnd|z  }|j                  |d||
rt        j                  nd|¬«      Š‰j                  sd‰j                  z  }d|fS t        ‰j                  «      ‰_        ‰j                  j                  ‰j                  j                  fdk(  sJ ‚‰j                  j                  ‰j                  j                  fdk(  sJ ‚d‰j                  z  }||k\  sJ d|›d|›�«       ‚t!        ‰j                  j"                  ‰j                  j"                  z
  |z  d«      }ˆfd„}|j%                  |«      }d|cxk  rdk  rFn nC|d   }|j'                  ||¬«      }d|› d�}t(        j+                  ||j-                  «       d«       | j/                  ||d|||	¬«       ‰j                  j0                  ‰j                  j2                  z   dz  |z  }|j0                  |j2                  z   dz  }t5        |dd||j6                   |j8                   «      t5        | «      z  t5        dddd|j6                  |j8                  «      z  }|d   j;                  «       D ]   }|dxx   |z  cc<   | j=                  |«       Œ" ||fS )as  Insert text with optional HTML tags and stylings into a rectangle.

        Args:
            rect: (rect-like) rectangle into which the text should be placed.
            text: (str) text with optional HTML tags and stylings.
            css: (str) CSS styling commands.
            scale_low: (float) force-fit content by scaling it down. Must be in
                range [0, 1]. If 1, no scaling will take place. If 0, arbitrary
                down-scaling is acceptable. A value of 0.1 would mean that content
                may be scaled down by at most 90%.
            archive: Archive object pointing to locations of used fonts or images
            rotate: (int) rotate the text in the box by a multiple of 90 degrees.
            oc: (int) the xref of an OCG / OCMD (Optional Content).
            opacity: (float) set opacity of inserted content.
            overlay: (bool) put text on top of page content.
            _scale_word_width: internal, for testing only.
            _verbose: internal, for testing only.
        Returns:
            A tuple of floats (spare_height, scale).
            spare_height:
                The height of the remaining space in <rect> below the
                text, or -1 if we failed to fit.
            scale:
                The scaling required; `0 < scale <= 1`.
                Will be less than `scale_low` if we failed to fit.
        r¢  r   zbad rotation angler¡  r   z'scale_low' must be in [0, 1]NrZ   rÜ  zbody {margin:1px;})ÚhtmlÚuser_cssr>  z"'text' must be a string or a Story)Ú	scale_minÚ	scale_maxr¬  r‡	  r…  rº  z
scale_low=z scale=c                  ó6   •— ‰j                   ‰j                   d fS r+   rÂ  )rä  Úfits    €r(   Úrect_functionz*Page.insert_htmlbox.<locals>.rect_functionL0  s   ø€ Ø—8‘8˜SŸX™X tÐ+Ð+r)   ©r"  r#  r"  z gs
)rE  r³  r”  r   rE  )r²   r  rÅ  rJ  r<   rÙ   ÚStoryÚ	fit_scaler�   ÚFZ_PLACE_STORY_FLAG_NO_OVERFLOWÚ
big_enoughÚ	parameterÚfilledrä   rø  rú  rÔ  rù  Úwrite_with_linksrÆ  rø   rÝ  r²  Úshow_pdf_pager×  rØ  rb  r  r  r\  rß  )rÅ   rä   r   r<  r=  r>  rE  r³  rB  r”  r?  r@  Ú	temp_rectÚmycssÚstoryÚrect_scale_maxrD  Úspare_heightrH  r  rv  rO  r_  Úmp1Úmp2rc  rˆ  rG  s                              @r(   Úinsert_htmlboxzPage.insert_htmlboxå/  sn  ø€ ðT ˜‰{˜aÒÜÐ1Ó2Ð2Ø�qŠjØ�c‰MˆFð �q‹jà˜ŠmØ�c‰MˆFð ˜‹mð �IÔ" Ò"ÜÐ<Ó=Ð=ð #ÜÐ<Ó=Ð=àˆ;ØˆCä�D‹zˆØ�YÑÜ˜Q  4§;¡;°·
±
Ó;‰Iä˜Q  4§:¡:¨t¯{©{Ó;ˆIð % sÑ*ˆô �dœCÔ Ü˜t¨e¸WÔE‰EÜ˜œeÔ$Ø‰EäÐAÓBÐBð "+¨a¢™°Q¸±]ˆà�o‰oØØØ(Ù?P”e×;Ò;ÐVWØ ð ó ˆð �~Š~Ø˜Ÿ™Ñ%ˆEØ˜�;Ðô ˜#Ÿ*™*Ó%ˆŒ
Ø—‘—‘˜SŸX™XŸ[™[Ð)¨VÒ3Ð3Ð3Ø—
‘
—‘˜sŸz™zŸ}™}Ð-°Ò7Ð7Ð7à�C—M‘MÑ!ˆØ˜	Ò!Ð; j i \°°5°(Ð#;Ó;Ð!ä˜CŸH™HŸK™K¨#¯*©*¯-©-Ñ7¸5Ñ@À!ÓDˆô	,ð ×$Ñ$ ]Ó3ˆð �Ô˜!ÕØ˜‘FˆEà×%Ñ%¨°WÐ%Ó=ˆDØ�D�6˜�ˆAÜ×"Ñ" 5¨!¯(©(«*°aÔ8ð 	×Ñ˜4  a°¸2ÀwÐÔOð �x‰x�{‰{˜SŸX™XŸ[™[Ñ(¨AÑ-°Ñ5ˆð �w‰w˜Ÿ™Ñ  AÑ%ˆô �5˜!˜Q ¨¯© v°·±¨vÓ6Ü�f�W‹oñä�Q˜˜1˜a §¡¨¯©Ó.ñ/ð 	ð ˜‘F×$Ñ$Ö&ˆDØ�‹L˜CÑ‹LØ×Ñ˜TÕ"ð 'ð ˜UÐ"Ð"r)   )rÉ  rd   rÅ  r•  r¦  r³  r”  r’  rE  r   rJ  rý   c                óÞ  — t        | «       | j                  }|j                  st        d«      ‚|dk(  r1t	        |«      t	        |«      z   t	        |	«      z   dk7  rt        d«      ‚|rNt        |«      t        u rn<t        |d«      rt        |«      }n$t        |d«      r|j                  }nt        d«      ‚|r-t        j                  j                  |«      st        d|z  «      ‚|r1t        |«      t        t        t        j                   fvrt        d	«      ‚|	rt        |	«      t"        urt        d
«      ‚|r|s|st        d«      ‚|r1t        |«      t        t        t        j                   fvrt        d«      ‚|
dk  r|
dz  }
|
dk  rŒ|
dk\  r|
dz  }
|
dk\  rŒ|
dvrt        d«      ‚t%        |«      }|j&                  s|j(                  rt        d«      ‚|| j*                   z  }|j-                  | j.                  «      D �cg c]  }|d   ‘Œ	 }}||j1                  | j.                  «      D �cg c]  }|d   ‘Œ	 c}z  }||j3                  | j.                  «      D �cg c]  }|d   ‘Œ	 c}z  }d}d}|dz   }||v r|dz  }|t        |«      z   }||v rŒ|r| j5                  «        |j6                  }| j9                  ||	|||||||
||||||¬«      \  }}|�||_        |S c c}w c c}w c c}w )a‹  Insert an image for display in a rectangle.

        Args:
            rect: (rect_like) position of image on the page.
            alpha: (int, optional) set to 0 if image has no transparency.
            filename: (str, Path, file object) image filename.
            height: (int)
            keep_proportion: (bool) keep width / height ratio (default).
            mask: (bytes, optional) image consisting of alpha values to use.
            oc: (int) xref of OCG or OCMD to declare as Optional Content.
            overlay: (bool) put in foreground (default) or background.
            pixmap: (pymupdf.Pixmap) use this as image.
            rotate: (int) rotate by 0, 90, 180 or 270 degrees.
            stream: (bytes) use this as image.
            width: (int)
            xref: (int) use this as image.

        'page' and 'rect' are positional, all other parameters are keywords.

        If 'xref' is given, that image is used. Other input options are ignored.
        Else, exactly one of pixmap, stream or filename must be given.

        'alpha=0' for non-transparent images improves performance significantly.
        Affects stream and filename only.

        Optimum transparent insertions are possible by using filename / stream in
        conjunction with a 'mask' image of alpha values.

        Returns:
            xref (int) of inserted image. Re-use as argument for multiple insertions.
        rÊ  r   r   z4xref=0 needs exactly one of filename, pixmap, streamré  r   zbad filenamezNo such file: '%s'z#stream must be bytes-like / BytesIOzpixmap must be a Pixmapz mask requires stream or filenamez!mask must be bytes-like / BytesIOr¡  )r   r¢  rJ  rÛ  úbad rotate valueú!rect must be finite and not emptyrµ  r8  ÚfzImgrx   )rd   r’  r   r“  rï  r”  r³  rý   rE  r•  rJ  rÅ  rÉ  r–  r—  )rS  rÖ   rÌ  r²   r%  r·   rÙ   r9   r   rb   r	   r  r  r  rL  rM  rN  rÄ  r  r�  rœ  rX  rf  r8  ry  rc  rP  ró  r­  )rÅ   rä   rÉ  rd   rÅ  r•  r¦  r³  r”  r’  rE  r   rJ  rý   r  r  rï  rL  ÚilstrC   r–  r—  s                         r(   Úinsert_imagezPage.insert_imagex0  s÷  € ô` 	�DÔØ�k‰kˆØ�zŠzÜ˜[Ó)Ð)à�1Š9œ$˜x›.¬4°«<Ñ7¼$¸v»,ÑFÈ!ÒKÜÐSÓTÐTáÜ�H‹~¤Ñ$ØÜ˜ :Ô.Ü˜x›=‘Ü˜ 6Ô*Ø#Ÿ=™=‘ä  Ó0Ð0áœBŸG™GŸN™N¨8Ô4Ü#Ð$8¸8Ñ$CÓDÐDÙœ˜V›¬U´I¼r¿z¹zÐ,JÑJÜÐBÓCÐCÙœ˜V›¬FÑ2ÜÐ6Ó7Ð7Ù™¡8ÜÐ?Ó@Ð@Ù”D˜“J¤u¬i¼¿¹Ð&DÑDÜÐ@ÓAÐAØ�qŠjØ�c‰MˆFð �q‹jà˜ŠmØ�c‰MˆFð ˜‹màÐ*Ñ*ÜÐ/Ó0Ð0ä�‹JˆØ�:Š:˜ŸšÜÐ@ÓAÐAØ�D×.Ñ.Ð.Ñ.ˆð "×1Ñ1°$·+±+Ô>Ó?Ñ>˜��!“Ð>ˆÐ?Ø˜s×4Ñ4°T·[±[ÔAÓBÑA˜!��1“ÐAÑBÑBˆØ˜s×1Ñ1°$·+±+Ô>Ó?Ñ>˜!��1“Ð>Ñ?Ñ?ˆØˆØˆØ�s‘7ˆØ˜$ÑØ�‰FˆAØœ3˜q›6‘zˆHð ˜$Òñ Ø×ÑÔ Ø×$Ñ$ˆØ×*Ñ*ØØØØØØØØØØ+ØØØØØð +ó 
‰ˆˆgð" ÐØ!(ˆCÔàˆùòC @ùÚBùÚ?s   ÈK È/K%ÉK*rU  r  c                 óŠ   — t        | «       t        j                  | |«      }|dk(  rt        d«      ‚| j	                  |f«       y)z'Insert a new link for the current page.rZ   úlink kind not supportedN)rS  rá  ÚgetLinkTextr²   r]  )rÅ   rU  r  rÎ   s       r(   rß  zPage.insert_linkô0  s?   € ä�DÔÜ×!Ñ! $¨Ó,ˆØ�BŠ;ÜÐ6Ó7Ð7Ø×!Ñ! 5 (Õ+r)   çš™™™™™©?)rç   r\  ræ   r7  r¯  rØ  rô  rè   ro  Úmiter_limitÚrender_moderE  rÚ  r”  rp  rq  r³  r\  r7  r¯  rØ  rd  re  c                ó˜   — | j                  «       }|j                  |||||||||	|
||||||||¬«      }|dk\  r|j                  |«       |S )N)rç   r\  ræ   r7  r¯  rØ  rô  rè   ro  re  rd  rE  rÚ  rp  rq  r³  r   )r-  r  r1  )rÅ   r  r   rç   r\  ræ   r7  r¯  rØ  rô  rè   ro  rd  re  rE  rÚ  r”  rp  rq  r³  rÄ  r’   s                         r(   r  zPage.insert_textü0  ss   € ð0 �n‰nÓˆØ�_‰_ØØØØ!ØØØ!ØØØØ%Ø#Ø#ØØØ)Ø%Øð% ó 
ˆð( �Š7Ø�J‰J�wÔØˆ	r)   )ræ   r7  r¯  rØ  rç   r\  rô  rè   Ú
expandtabsrþ   rE  re  rd  ro  rÚ  r”  rp  rq  r³  r«  rg  c                óœ   — | j                  «       }|j                  |||||||||	|
||||||||||¬«      }|dk\  r|j                  |«       |S )a3  Insert text into a given rectangle.

        Notes:
            Creates a Shape object, uses its same-named method and commits it.
        Parameters:
            rect: (rect-like) area to use for text.
            buffer: text to be inserted
            fontname: a Base-14 font, font name or '/name'
            fontfile: name of a font file
            fontsize: font size
            lineheight: overwrite the font property
            color: RGB color triple
            expandtabs: handles tabulators with string function
            align: left, center, right, justified
            rotate: 0, 90, 180, or 270 degrees
            morph: morph box with a matrix and a fixpoint
            overlay: put text in foreground or background
        Returns:
            unused or deficit rectangle area (float)
        )rç   r\  ræ   r7  r¯  rØ  rô  rè   rg  re  rd  ro  rþ   rE  rÚ  rp  rq  r³  r   )r-  r0  r1  )rÅ   rä   r«  ræ   r7  r¯  rØ  rç   r\  rô  rè   rg  rþ   rE  re  rd  ro  rÚ  r”  rp  rq  r³  rÄ  r’   s                           r(   r0  zPage.insert_textbox-1  s|   € ðZ �n‰nÓˆØ×ÑØØØØ!ØØØ!ØØØØ!Ø#Ø#Ø%ØØØØ)Ø%Øð)  ó 
ˆð, �Š7Ø�J‰J�wÔØˆ	r)   c                 ó(   — | j                  «       dk(  S )z3Check if /Contents is in a balanced graphics state.rº  )rb  r-   s    r(   rO  zPage.is_wrappedu1  s   € ð ×$Ñ$Ó&¨&Ñ0Ð0r)   c                 óè   — t        | j                  d¬«      }|j                  syt        j                  |j                  «       t        d«      «      }|j                  syt        j                  |«      S )zPage language.Fr  NÚLang)rÉ   r³   r»   r�   r*  rü   rô   Úpdf_to_str_buf)r'   r˜  r  s      r(   r  zPage.languagez1  sX   € ô ˜tŸy™y°5Ô9ˆØ×!Ò!ØÜ×-Ñ-¨g¯k©k«m¼XÀfÓ=MÓNˆØ�ŠØÜ×#Ñ# DÓ)Ð)r)   c              #   óV   K  — | j                  «       }|D ]  }|�|d   |v sŒ|–— Œ y­w)zì Generator over the links of a page.

        Args:
            kinds: (list) link kinds to subselect from. If none,
                   all links are returned. E.g. kinds=[LINK_URI]
                   will only yield URI links.
        NrF  )r\  )r'   ÚkindsÚ	all_linksrˆ  s       r(   rg  z
Page.links…1  s3   è ø€ ð —N‘NÓ$ˆ	ÛˆDØˆ}  V¡°Ò 5Ø“ñ ùs   ‚)¢)Úidentc                 ó(  — t        | «       t        |«      t        u rd}|}n!t        |«      t        u r|}d}nt	        d«      ‚| j                  ||«      }|s|S d|_        t        j                  | «      |_	        || j                  t        |«      <   |S )z€Load an annot by name (/NM key) or xref.

        Args:
            ident: identifier, either name (str) or xref (int).
        r   Nz&identifier must be a string or integerT)rS  r·   rÙ   r3   r²   rµ  rÞ   rò  rô  rÖ   r%  r&  )r'   rp  rý   r   rÿ   s        r(   r  zPage.load_annot’1  sŽ   € ô 	�DÔÜ�‹;œ#ÑØˆDØ‰DÜ�%‹[œCÑØˆDØ‰DäÐEÓFÐFØ×Ñ˜t TÓ*ˆÙØˆJØˆŒÜ—]‘] 4Ó(ˆŒ
Ø$'ˆ×Ñœ˜C›Ñ!Øˆ
r)   c                 ó  — t        | «       t        j                  | j                  «      }|j                  syt        |«      }d|_        t        j                  | «      |_	        || j                  t        |«      <   d|_        d|_        | j                  j                  rS| j                  «       }|D �cg c]  }|d   t        j                  k(  sŒ|‘Œ }}|r|d   }|d   |_        |d   |_        |S d|_        d|_        |S c c}w )zGet first Link.NTr   rZ   r   r   )rS  r�   Úfz_load_linksr³   r»   rÀ
  rÞ   rò  rô  rÖ   r%  r&  rý   rÌ  r­  r�  )r'   rÿ   r0  r  Úlink_ids        r(   rš  zPage.load_links©1  sî   € ä�DÔÜ×!Ñ! 4§9¡9Ó-ˆØ�~Š~ØÜ�C‹jˆØˆŒÜ—]‘] 4Ó(ˆŒ
Ø$'ˆ×Ñœ˜C›Ñ!ØˆŒØˆŒØ�;‰;×ÒØ×$Ñ$Ó&ˆEÙ %ÓF¡˜1¨¨1©´×1EÑ1EÓ)E’Q ˆEÐFÙØ ™(�Ø" 1™:�”Ø  ™�”ð ˆ
ð ˆCŒHØˆCŒFØˆ
ùò Gs   Â4DÃDc                 ó   — t        | «       t        | j                  «      }t        ||«      }|}|s|S d|_        t        j                  | «      |_        || j                  t        |«      <   t        «       }t        j                  ||«       |}|S )zLoad a widget by its xref.T)rS  rÉ   r³   ÚJM_get_widget_by_xrefrÞ   rò  rô  rÖ   r%  r&  r'  rø   r(  )r'   rý   rÅ   rÎ   rÿ   r)  s         r(   Úload_widgetzPage.load_widgetÄ1  s}   € ä�DÔä˜DŸI™IÓ&ˆÜ% t¨TÓ2ˆàˆÙØˆJØˆŒÜ—]‘] 4Ó(ˆŒ
Ø$'ˆ×Ñœ˜C›Ñ!Ü“ˆÜ×Ñ˜3 Ô'ØˆØˆ
r)   c                 óð   — t        | «       | j                  d¬«      }|j                  s*t        j                  | j
                  «      }t        |«      S t        |j                  «       «      }t        |«      S )zThe MediaBox.Fr  )	rS  rø  r»   r�   ro  r³   ÚJM_mediaboxrü   r  )r'   rÅ   rä   s      r(   rX  zPage.mediaboxÖ1  s_   € ô 	�DÔØ�~‰~ uˆ~Ó-ˆØ�ŠÜ×&Ñ&¨¯	©	Ó2ˆDô �D‹zÐô  §¡£
Ó+ˆDÜ�D‹zÐr)   c                 ój   — t        | j                  j                  | j                  j                  «      S r+   )rÖ  rX  r÷  rù  r-   s    r(   Úmediabox_sizezPage.mediabox_sizeá1  s#   € ä�T—]‘]×%Ñ% t§}¡}×'7Ñ'7Ó8Ð8r)   c                 ó   — t        | «      S r+   )ÚShaper-   s    r(   r-  zPage.new_shapeå1  ó   € Ü�T‹{Ðr)   c                 ó,   — t         j                  | «      S )z7All /Contents streams concatenated to one bytes object.)rø   Ú_get_all_contentsr-   s    r(   Úread_contentszPage.read_contentsï1  s   € ä×&Ñ& tÓ,Ð,r)   c                 ób   — t        | «       | j                  }|j                  | «      }|| _        y)z-Refresh page after link/annot/widget updates.N)rS  rÖ   ro  r³   )r'   r  rÅ   s      r(   ÚrefreshzPage.refreshó1  s(   € ä�DÔØ�k‰kˆØ�‰˜tÓ$ˆàˆ�	r)   )rd   r’  r   c                óp  — | j                   }|j                  |«      st        d«      ‚t        |«      t        |«      z   t        |«      z   dk7  rt        d«      ‚| j	                  | j
                  |||¬«      }|j                  ||«       | j                  «       d   }|j                  |d«       d| _	        y)aò  Replace the image referred to by xref.

        Replace the image by changing the object definition stored under xref. This
        will leave the pages appearance instructions intact, so the new image is
        being displayed with the same bbox, rotation etc.
        By providing a small fully transparent image, an effect as if the image had
        been deleted can be achieved.
        A typical use may include replacing large images by a smaller version,
        e.g. with a lower resolution or graylevel instead of colored.

        Args:
            xref: the xref of the image to replace.
            filename, pixmap, stream: exactly one of these must be provided. The
                meaning being the same as in Page.insert_image.
        zxref not an imager   z3Exactly one of filename/stream/pixmap must be given)rd   r   r’  r…  r  N)
rÖ   r
  r²   r%  r_  rä   rÿ	  r	  r	  rÅ  )rÅ   rý   rd   r’  r   r  re  Úlast_contents_xrefs           r(   r[  zPage.replace_imageû1  s²   € ð. �k‰kˆØ× Ñ  Ô&ÜÐ0Ó1Ð1Ü�‹>œD ›LÑ(¬4°«<Ñ7¸1Ò<ÜÐRÓSÐSØ×$Ñ$Ø�I‰I °Àð %ó 
ˆð 	�‰�h Ô%Ø!×.Ñ.Ó0°Ñ4Ðð 	×ÑÐ,¨dÔ3ØˆÕr)   c                 óv   — t        | «       t        | j                  d¬«      }|j                  syt	        |«      S )zPage rotation.r   r  )rS  rÉ   r³   r»   ÚJM_page_rotationr  s     r(   r=  zPage.rotation!2  s1   € ô 	�DÔÜ˜DŸI™I°Ô2ˆØ�ŠØÜ Ó%Ð%r)   c                 ó>   — t        t        j                  | «      «      S )zReflects page rotation.)rb  rø   Ú_rotate_matrixr-   s    r(   r?  zPage.rotation_matrix*2  s   € ô ”e×*Ñ*¨4Ó0Ó1Ð1r)   c                 ó¨   — t        | «       t        j                  | j                  |j                  t        |«      t        j                  «       «       y)z=Run page through a device.
        dw: DeviceWrapper
        N)rS  r�   rs  r³   r§  rÀ  r»  )r'   r¼  rm  s      r(   r¾  zPage.run/2  s5   € ô 	�DÔÜ×Ñ˜$Ÿ)™) R§Y¡YÔ0AÀ!Ó0DÄeÇnÁnÓFVÕWr)   )rï  r	  r¬  ru  c                ó  — |€dt         z  t        z  t        z  t        z  }|�t	        |«      }t        | «       |}|€| j                  ||¬«      }nt        |d«      | k7  rt        d«      ‚|j                  ||¬«      }|€~|S )a¢  Search for a string on a page.

        Args:
            text: string to be searched for
            clip: restrict search to this rectangle
            quads: (bool) return quads instead of rectangles
            flags: bit switches, default: join hyphened words
            textpage: a pre-created pymupdf.TextPage
        Returns:
            a list of rectangles or quads, each containing one occurrence.
        r   )rï  r¬  rÖ   r   )r	  )
r	  r	  r	  r	  r  rS  rø  rØ   r²   Úsearch)rÅ   r   rï  r	  r¬  ru  r©  Úrlists           r(   r	  zPage.search_for62  s¥   € ð( ˆ=ØÜ"ñ#ä*ñ+ô *ñ*ô %ñ	%ˆEð ÐÜ˜“:ˆDä�DÔØˆØˆ:Ø×"Ñ"¨°EÐ"Ó:‰BÜ�R˜Ó" dÒ*ÜÐ:Ó;Ð;Ø—	‘	˜$ e�	Ó,ˆØÐØØˆr)   c                 ó&   — | j                  d|«      S )zSet the ArtBox.rË  ©rÎ  ©r'   rä   s     r(   Ú
set_artboxzPage.set_artbox_2  s   € à× Ñ  ¨4Ó0Ð0r)   c                 ó&   — | j                  d|«      S )zSet the BleedBox.rÉ  r�  r�  s     r(   Úset_bleedboxzPage.set_bleedboxc2  s   € à× Ñ  ¨TÓ2Ð2r)   c                 óT  — t        | «       | j                  }|j                  rt        d«      ‚|j                  st        d«      ‚|t        d|j                  «       «      vrt        d«      ‚|j                  |«      st        d«      ‚|j                  | j                  dd|z  «       y)	z-Set object at 'xref' as the page's /Contents.r­   rÊ  r   rQ  zxref is no streamrÿ  r;	  N)
rS  rÖ   r±   r²   rÌ  r8  rW  rý	  r[  rý   )r'   rý   r  s      r(   Úset_contentszPage.set_contentsg2  s�   € ä�DÔØ�k‰kˆØ�=Š=ÜÐ.Ó/Ð/Ø�zŠzÜ˜[Ó)Ð)Ø”u˜Q §¡Ó 1Ó2Ñ2Ü˜ZÓ(Ð(Ø×!Ñ! $Ô'ÜÐ0Ó1Ð1Ø×Ñ˜Ÿ™ J°¸4±Õ@r)   c                 ó&   — | j                  d|«      S )z,Set the CropBox. Will also change Page.rect.rÈ  r�  r�  s     r(   Úset_cropboxzPage.set_cropboxu2  ó   € à× Ñ  ¨DÓ1Ð1r)   c                 ól  — t        | «       t        | j                  «      }|s.t        j                  |j                  «       t        d«      «       yt        j                  |«      }t        t        d«      sJ ‚t        j                  |j
                  t        d«      t        j                  |«      «       y)zSet PDF page default language.rk  r  N)rS  rÉ   r³   r�   r-  rü   rô   r}  r9   rm  r  )r'   r  r˜  r  s       r(   r  zPage.set_languagey2  s‚   € ä�DÔÜ˜tŸy™yÓ)ˆÙÜ×Ñ˜wŸ{™{›}¬h°vÓ.>Õ?ä×5Ñ5°hÓ?ˆDÜœ5Ð"AÔBÐBÐBÜ×*Ñ*Ø—K‘KÜ˜VÓ$Ü×7Ñ7¸Ó=õr)   c                 ó†  — t        | «       | j                  «       }t        |«      }t        j                  |«      st        j
                  |«      rt        t        «      ‚t        j                  |j                  «       t        d«      |«       t        j                  |j                  «       t        d«      «       t        j                  |j                  «       t        d«      «       t        j                  |j                  «       t        d«      «       t        j                  |j                  «       t        d«      «       y)zSet the MediaBox.ÚMediaBoxrÈ  rË  rÉ  rÊ  N)rS  rø  rí  r�   r›  rœ  r²   r�  r  rü   rô   r-  )r'   rä   rÅ   rX  s       r(   rÞ  zPage.set_mediaboxˆ2  sÐ   € ä�DÔØ�~‰~ÓˆÜ" 4Ó(ˆÜ×"Ñ" 8Ô,Ü×,Ñ,¨XÔ6äœlÓ+Ð+Ü×Ñ §¡£¬X°jÓ-AÀ8ÔLÜ×Ñ˜DŸH™H›J¬°Ó(;Ô<Ü×Ñ˜DŸH™H›J¬°Ó(:Ô;Ü×Ñ˜DŸH™H›J¬°Ó(<Ô=Ü×Ñ˜DŸH™H›J¬°Ó(;Õ<r)   c                 ó¶   — t        | «       t        | j                  «      }t        |«      }t	        j
                  |j                  «       t        d«      |«       y)zSet page rotation.r   N)rS  rÉ   r³   ÚJM_norm_rotationr�   r5  rü   rô   )r'   r=  rÅ   r@  s       r(   r£  zPage.set_rotation—2  s?   € ä�DÔÜ˜DŸI™IÓ&ˆÜ˜xÓ(ˆÜ×Ñ §¡£
¬H°XÓ,>ÀÕDr)   c                 ó&   — | j                  d|«      S )zSet the TrimBox.rÊ  r�  r�  s     r(   Úset_trimboxzPage.set_trimboxž2  r˜  r)   c	           
      óÈ  — dd„}	t        | «       | j                  }
|
j                  r|j                  st        d«      ‚|j                  s|j
                  rt        d«      ‚|dk  r||j                  z  }|dk  rŒ||   }|| j                   z  }|s|j                  n|j                  |z  }|j                  s|j
                  rt        d«      ‚||j                   z  } |	||||¬«      }|
j                  | j                  «      D �cg c]  }|d   ‘Œ	 }}||
j                  | j                  «      D �cg c]  }|d   ‘Œ	 c}z  }||
j                  | j                  «      D �cg c]  }|d	   ‘Œ	 c}z  }d
}d}|dz   }||v r|dz  }|t        |«      z   }||v rŒ|j                  }|
j                  |k(  rt        d«      ‚|
j                  j!                  |d«      }|€t#        |
«      }||
j                  |<   ||f}|
j$                  j!                  |d«      }|r| j'                  «        | j)                  ||||||||¬«      }||
j$                  |<   |S c c}w c c}w c c}w )av  Show page number 'pno' of PDF 'docsrc' in rectangle 'rect'.

        Args:
            rect: (rect-like) where to place the source image
            docsrc: (document) source PDF
            pno: (int) source page number
            keep_proportion: (bool) do not change width-height-ratio
            overlay: (bool) put in foreground
            oc: (xref) make visibility dependent on this OCG / OCMD (which must be defined in the target PDF)
            rotate: (int) degrees (multiple of 90)
            clip: (rect-like) part of source page rectangle
        Returns:
            xref of inserted object (for reuse)
        r   c           	      óæ  — | j                   | j                  z   dz  }|j                   |j                  z   dz  }t        dddd|j                   |j                   «      t        |«      z  }| |z  }|j
                  |j
                  z  }|j                  |j                  z  }	|rt        ||	«      x}}	|t        ||	«      z  }|t        dddd|j                  |j                  «      z  }t        |«      S )ah  Calculate transformation matrix from source to target rect.

            Notes:
                The product of four matrices in this sequence: (1) translate correct
                source corner to origin, (2) rotate, (3) scale, (4) translate to
                target's top-left corner.
            Args:
                sr: source rect in PDF (!) coordinate system
                tr: target rect in PDF coordinate system
                keep: whether to keep source ratio of width to height
                rotate: rotation angle in degrees
            Returns:
                Transformation matrix.
            ç       @r   r   )	r×  rØ  rb  r  r  rJ  rÅ  r«  ÚJM_TUPLE)
ÚsrÚtrrù	  rE  ÚsmpÚtmprm  Úsr1ÚfwÚfhs
             r(   Úcalc_matrixz'Page.show_pdf_page.<locals>.calc_matrix»2  sÖ   € ð  —5‘5˜2Ÿ5™5‘= CÑ'ˆCà—5‘5˜2Ÿ5™5‘= CÑ'ˆCô �q˜!˜Q  C§E¡E 6¨C¯E©E¨6Ó2´V¸F³^ÑCˆAà�q‘&ˆCà—‘˜CŸI™IÑ%ˆBØ—‘˜SŸZ™ZÑ'ˆBÙÜ˜b "›+Ð%��Rà”˜˜B“ÑˆAØ”˜˜1˜a  C§E¡E¨3¯5©5Ó1Ñ1ˆAÜ˜A“;Ðr)   rÊ  r\  z!clip must be finite and not empty)rù	  rE  r   rµ  r8  ÚfzFrmrx   z%source document must not equal targetN)r”  rÆ  rý   r³  rï  r¯  r–  )Tr   )rS  rÖ   rÌ  r²   r�  rœ  rÂ  rX  rä   ry  r8  rf  rc  rÙ   r	  rñ  r7   r­  rò  rP  rÝ  )rÅ   rä   r°  rÇ  r•  r”  r³  rE  rï  r«  r  rº  Útar_rectÚsrc_rectrÆ  rL  r^  rC   r–  ÚisrcÚgmapÚpno_idrý   s                          r(   rQ  zPage.show_pdf_page¢2  s|  € ó2 	ôD 	�DÔØ�k‰kˆà�zŠz §¢Ü˜[Ó)Ð)à�=Š=˜D×,Ò,ÜÐ@ÓAÐAà�AŠgØ�6×$Ñ$Ñ$ˆCð �A‹gà˜#‘;ˆà˜4×5Ñ5Ð5Ñ5ˆá(,�8—=’=°(·-±-À$Ñ2FˆØ×Ò × 4Ò 4ÜÐ@ÓAÐAØ˜x×=Ñ=Ð=Ñ=ˆá˜X x°oÈfÔUˆð "×3Ñ3°D·K±KÔ@ÓAÑ@˜��!“Ð@ˆÐAØ˜s×2Ñ2°4·;±;Ô?Ó@Ñ?˜!��1“Ð?Ñ@Ñ@ˆØ˜s×1Ñ1°$·+±+Ô>Ó?Ñ>˜!��1“Ð>Ñ?Ñ?ˆð ˆØˆØ�s‘7ˆØ˜$ÑØ�‰FˆAØœ3˜q›6‘zˆHð ˜$Òð ×ÑˆØ�=‰=˜DÒ ÜÐDÓEÐEð �}‰}× Ñ   tÓ,ˆØˆ<Ü˜C“=ˆDØ"&ˆC�M‰M˜$Ñð ˜�ˆØ�~‰~×!Ñ! &¨!Ó,ˆáØ×ÑÔ Ø×"Ñ"ØØØØØØØØð #ó 	
ˆð "&ˆ�‰�vÑàˆùòQ BùÚ@ùÚ?s   Ä
IÄ6IÅ%Ic                 óº  — t        | «       t        j                  «       }| j                  d¬«      }|j                  st        |«      S t        j                  t        j                  j                  «      }t        j                  |||«       t        |«      }| j                  dz  dk(  rt        |«      }|S t        ddddd| j                  j                  «      }|S )zPage transformation matrix.Fr  r¡  r   r   r…  )rS  r�   r_  rø  r»   r^  rU  rS  r  r=  rb  rD  rÅ  )r'   rË  rÅ   rX  rÿ   s        r(   rX  zPage.transformation_matrix3  s´   € ô 	�DÔä�n‰nÓˆØ�~‰~ uˆ~Ó-ˆØ�ŠÜ$ SÓ)Ð)Ü—<‘<¤§¡× 7Ñ 7Ó8ˆÜ× Ñ   x°Ô5Ü Ó$ˆà�=‰=˜3Ñ !Ò#Ü˜“+ˆCð ˆ
ô ˜˜A˜q " a¨¯©×)<Ñ)<Ó=ˆCØˆ
r)   c                 óÀ   — | j                  d«      }|€| j                  S | j                  }t        |d   |j                  |d   z
  |d   |j                  |d   z
  «      S )zThe TrimBoxrÊ  r   r   r   r   rC  rD  s      r(   ÚtrimboxzPage.trimbox13  s[   € ð �‰˜yÓ)ˆØˆ<Ø—<‘<ÐØ�]‰]ˆÜ�D˜‘G˜RŸU™U T¨!¡W™_¨d°1©g°r·u±u¸tÀA¹w±ÓGÐGr)   c                 ó¨   — t        | «       t        j                  | |«      }|dk(  rt        d«      ‚| j                  j                  |d   || ¬«       y)z"Update a link on the current page.rZ   ra  rý   rÄ   N)rS  rá  rb  r²   rÖ   ri  )rÅ   rU  rÎ   s      r(   Úupdate_linkzPage.update_link:3  sL   € ä�DÔÜ×!Ñ! $¨Ó,ˆØ�BŠ;ÜÐ6Ó7Ð7à�‰×!Ñ! # f¡+¨u¸4Ð!Õ@r)   c              #   óÞ   K  — | j                  «       D �cg c]  }|d   t        j                  k(  sŒ|d   ‘Œ  }}|D ](  }| j                  |«      }|�|j                  |v sŒ%|–— Œ* yc c}w ­w)a    Generator over the widgets of a page.

        Args:
            types: (list) field types to subselect from. If none,
                    all fields are returned. E.g. types=[PDF_WIDGET_TYPE_TEXT]
                    will only yield text fields.
        r   r   N)r­  r�   r!  rw  rx  )r'   r  r    Úwidget_xrefsrý   r)  s         r(   r�  zPage.widgetsC3  ss   è ø€ ð '+×&6Ñ&6Ô&8Ó[Ñ&8 ¸A¸a¹DÄE×DZÑDZÓ<Z˜˜!›Ð&8ˆÐ[ã ˆDØ×%Ñ% dÓ+ˆFØˆ} × 1Ñ 1°UÒ :Ø“ñ !ùò \ùs   ‚A-•A(±A(¸(A-Á!A-c                 ó¶   — | j                  «       \  }}|dkD  rd|z  }t        j                  | |d«       |dkD  r d|z  dz   }t        j                  | |d«       yy)z,Ensure page is in a balanced graphics state.r   rÀ  Fs   
Qr½  TN)rb  rø   rÝ  )r'   ÚpushÚpopÚprependri   s        r(   rP  zPage.wrap_contentsT3  sb   € à×)Ñ)Ó+‰	ˆˆcØ�!Š8Ø˜t‘mˆGÜ×"Ñ" 4¨°%Ô8Ø�Š7Ø˜c‘\ EÑ)ˆFÜ×"Ñ" 4¨°Õ6ð r)   c	           
      óâ  — t        | t        «      sJ ‚|st        d«      ‚t        |«      t        u r |dk(  r|€|j                  | |||¬«       y|f}|d   j                  }	t        «       }
|
j                  | j                  j                  | j                  j                  ¬«      }|D ]%  }|	|j                  z  }	|j                  |||¬«       Œ' |€|	}| j                  ||
d||||	|¬«       d}
d}y)aÄ  Write the text of one or more pymupdf.TextWriter objects.

        Args:
            rect: target rectangle. If None, the union of the text writers is used.
            writers: one or more pymupdf.TextWriter objects.
            overlay: put in foreground or background.
            keep_proportion: maintain aspect ratio of rectangle sides.
            rotate: arbitrary rotation angle.
            oc: the xref of an optional content object
        z$need at least one pymupdf.TextWriterr   N)rB  rô  r”  r7  )rB  rô  )r”  r•  rE  rï  r³  )r<   rÁ   r²   r·   Ú
TextWriterÚ
write_textÚ	text_rectr°   r§  rä   rJ  rÅ  rQ  )rÅ   rä   Úwritersr”  rô  rB  r•  rE  r³  rï  Útextdocrv  Úwriters                r(   r¿  zPage.write_text^3  s
  € ô* ˜$¤Ô%Ð%Ð%ÙÜÐCÓDÐDÜ�‹=œJÑ&Ø˜Š{˜t˜|Ø×"Ñ" 4°ÀÈwÐ"ÔWØà"˜*�Ø�q‰z×#Ñ#ˆÜ“*ˆØ× Ñ  t§y¡y§¡¸t¿y¹y×?OÑ?OÐ ÓPˆÛˆFØ�F×$Ñ$Ñ$ˆDØ×Ñ˜e¨W¸EÐÕBð ð ˆ<ØˆDØ×ÑØØØØØ+ØØØð 	ô 		
ð ˆØ‰r)   c                 ób   — t        | «       | j                  j                  | j                  «      S rö	  r÷	  r-   s    r(   rý   z	Page.xref‘3  rø	  r)   zpage rectangle)r  r  r$
  r+   )Nr   N)NNNNNr   r   r   r   r   r   r   r…  NN)r   r   Nr  )Nr   r   N)r   Nr   r   NNNr   )NNrê  r   NNT)ÚNote)r   r   r   r  )r  NNr   NFr   r   Tr   r   r   )r  NNNr   r   r   Tr   r   r   )
r  Nr   r   r   TNr   r   r   )r  NNr   Nr   r   TFr   r   r   )r  NNr   r   r   NTr   r   r   )r  NNr   r   r   NTr   r   r   N)r  NNTNr   Fr   r   Tr   r   r   )r   r  Nr   r   r   TNr   r   r   ©r   Nr©  r'
  )NNr   r   Tr@  )r&
  NNFr   r   )r   TTr   r   N)NNTNNTr   r   )rÅ   rÁ   rÀ  N)²r.   r/   r0   rŠ   rÚ   rÜ   rö  r  r�   ÚPDF_ANNOT_LE_OPEN_ARROWr  r  r  r#  r+  r-  rE  rG  rJ  r]  rS  r\  rß   rb  r0
  r"  rj  re  rx  r­  r±  rµ  r¸  r½  rø  r^  rÆ  rÎ  rf  rÝ  r©   rÑ   râ  r«   rå  r-
  rÙ   ré  r\  r$  r3   rì  rò  r¡   rõ  r÷  rû  rý  rÿ  r%  r  r  r	  r  r  r  r'  r  r  r­  r�  r	  r“  rA  r!  rE  rG  rM  r  rD  rT  rW  r\  r	  rg  rb  rY  rÖ  rt  ry  r{  r~  r(
  r,
  rª   r€  r‚  r„  r.  rŒ  r�  r“  r•  r˜  r›  rž  r£  r¥  r	  r³  rÂ  rÌ  rÒ  rÔ  r\  rr  r¨   r…  rÎ  rá  r   r  r  rÉ  r  r  rÁ   rè  râ  r$  r&  r(  r*  rø  r×	  r0  r;  r¢   rY  r_  r4   rß  r#  r  r0  rO  r  rg  r  rš  rw  rX  r{  r-  r�  rƒ  r[  r=  r?  r¾  r	  r‘  r“  r•  r—  r  rÞ  r£  rŸ  rQ  rX  r´  r¶  r�  rP  r¿  rý   rä   r,   r)   r(   rÁ   rÁ   ÿ$  sÒ  „ òò 2òò"óð< ØØØØØØØØ×2Ñ2ØØØØØó!Nò`ò@	òóò<
óBóHòò DòDòò
òFð0¨ð °6ó ò.óð4 GKØJKØ59ój"òXò* óò	%ó:ò!óòBLò*9ó7ðr Zð °Eó ð	 Yð 	°5ó 	ð   $ØØñàðð  ðð ð	ð
 ðð ðð ðð óð<  Ø"Ø $Ø $Ø"&Ø!"Ø Ø!Ø×7Ñ7ØØØØØò%.àð.ð ð.ð
 ð.ð ð.ð ð.ð ð.ð !ð.ð  ð.ð ð.ð ð.ð ð.ð ð.ð ð.ð  ð!.ð& ó'.ð` 59Ø*.ñØ38óð¨ð °%ó ð	 ð 	°ð 	Àó 	ð	¨ð 	°ó 	ð	¨ð 	°%ó 	ð	 9ð 	°ó 	ð Ø"ØØØØ $Ø!ñ<ð ð<ð ð	<ð
 ð<ð ð<ð ð<ð ð<ð ð<ð ó<ð@ ØØØñBð óBñ	 Ið 	¸5ó 	ñDÐSXó Dñ	 Jð 	°cð 	Àð 	ÐQVó 	ñCÐSXó Cð ð ¨Eó ò$	*ò-óð( ØØñ	mØðmàðmð ðmð ð	mð
 ómó^;ò,ð ñHó ðHð ñHó ðHòó$Cð ñ
ó ð
ð ñó ðòð.-˜6ð -¨ó -ò*ðX˜Fð ¨Fð °vó ð ð8 6ò 8ó ð8ð !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øò#%Øð%àð%ð ð%ð ð	%ð
 ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð ð%ð "ð%ð   ð!%ð" ð#%ð$ ó%%ðV !ØØ Ø!ØØØØ Ø$%Ø"#Øò Øð àð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð ð ð ó ðN !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øò!$Øð$àð$ð ð$ð ð	$ð
 ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð ð$ð "ð$ð  ð$ð  ð!$ð" ó#$ðT !Ø!ØØØØ Ø Ø$%Ø"#Øò Øð àð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð ó ðJ !ØØ!Ø ØØØØ Ø$%Ø"#Øò Øð à—,‘,˜y¨)Ð3Ñ4ð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð ð ð ó ðJ !ØØ!ØØ ØØØ Ø#Ø$%Ø"#Øò"Øð"àð"ð ð"ð ð	"ð
 ð"ð ð"ð ð"ð ð"ð ð"ð ð"ð ð"ð "ð"ð  ð"ð ð"ð ó"ðN !ØØ!ØØØØ Ø Ø$%Ø"#Øò Øð àð ð ð ð ð	 ð
 ð ð ð ð ð ð ð ð ð ð ð ð "ð ð  ð ð ð ð ó ðJ !ØØ!ØØØØ Ø Ø$%Ø"#ØØò#Øð#àð#ð ð#ð ð	#ð
 ð#ð ð#ð ð#ð ð#ð ð#ð ð#ð "ð#ð  ð#ð ð#ð ó#ðT !ØØ!Ø#Ø ØØ#ØØØ Ø$%Ø"#Øò#,Øð,àð,ð ð,ð ð	,ð
 ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð ð,ð "ð,ð   ð!,ð" ð#,ð$ ó%,ðd Ø Ø!ØØØØ Ø Ø$%Ø"#Øò!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð "ð!ð  ð!ð ð!ð ó!ðN Ø Ø!ØØØØ Ø Ø$%Ø"#Øò!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð "ð!ð  ð!ð ð!ð ó!ôF	$ð ñó ðð ñ!ó ð!ð ñó ðó&ó ò>ó$ò| Tð |°Dó |ð@ !Øò'Øð'àð'ð ð'ð ó	'òR"˜fð "Àó "òH8ð ˜ð  4ó ð: %-ØØ'+Ø $Ø!Ø!ò)Øð)ð $ð)ð
 'ð)ð  ð)ð ð)ð ð)ð ó)òV4ðn VWØ!òaRØ5:ðaRØMRðaRàðaRð 
óaRôFBó
>ô@Cð
˜dó ô&ð6 ñØðàðð ó	ò5ò<ò?ò;ò=ñ ð ¸#ð ÐS]ó ò ò*:ð
 FJØ78ôQðp ØØØØØØØØòQ#ð 
óQ#ðn ØØØ ØØØØØØØØôzñx,˜&ð , tð ,°4ð ,À4ó ,ð !Ø#'Ø"Ø#ØØØ ØØ"&Ø!"Ø ØØ Ø Ø$%Ø"#Øò+/Øð/àð/ð —,‘,˜s D˜yÑ)ð/ð
 ð/ð !ð/ð ð/ð ð/ð ð/ð ð/ð ð/ð ð/ð  ð/ð ð/ð ð/ð  ð!/ð" ð#/ð$ ð%/ð& "ð'/ð(  ð)/ð* ó+/ðl #Ø#ØØØ Ø#'Ø ØØØØØ Ø!"Ø"&Ø Ø Ø$%Ø"#Øò/FØðFàðFð —L‘L  d Ñ+ðFð
 ðFð ðFð ðFð ðFð ðFð !ðFð ðFð ðFð ðFð ðFð ðFð  ð!Fð" ð#Fð$  ð%Fð& ð'Fð( ð)Fð* "ð+Fð,  ð-Fð. ð/Fð0 ó1FðP ñ1ó ð1ð ñ*ó ð*óð §¡¨S°#¨XÑ 6ð ¸5ó ò.ò6ð$ ñó ðð ñ9ó ð9òò-òð ØØò$ Øð$ àó$ ðL ñ&ó ð&ð ð2 ò 2ó ð2òXð ØØØò'ð ó'òR1ò3òAò2óò=òEò2ð Ø ØØØØòzð ózðx ñó ðð$ ñHó ðHðA˜&ð A tð A°ó Aóò"7ð ØØØØØ ØØñ1Øð1ð ô1ðf ñ2ó ð2ñ
 �EÐ/Ô0�Dr)   rÁ   c                   óú  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Z	d2d„Z
d3d	„Zd4d
„Zed„ «       Zd„ Zed„ «       Zd„ Zed„ «       Zd4d„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd5d„Zd6d„Zd„ Zd„ Zd„ Zd„ Zedefd„«       Zed„ «       Zd„ Z ed„ «       Z!d7d „Z"d8d!„Z#d9d"„Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)ed(„ «       Z*ed)„ «       Z+d*„ Z,ed+„ «       Z-d,„ Z.ed-„ «       Z/ed.„ «       Z0ed/„ «       Z1ed0„ «       Z2e-Z3eZ4d1„ Z5y):rÄ  c                 óF  — d| _         d| _        	 t        |t        t        j
                  ft        j                  t        j                  t        t        t        f«      rC|\  }}d}t	        j                  |t        |«      t	        j                  d«      |«      }|| _        yt        |t        t        j
                  ft        j                  t        j                  t        t        t        ft        t         f«      rB|\  }}}t	        j                  |t        |«      t	        j                  d«      |«      }|| _        yt        |t        t        j
                  t#        d«      ft$        t        j&                  f«      �r"|\  }}t)        |t        «      r|j                  }n|€t	        j
                  d«      }t)        |t$        «      r|j                  }t	        j*                  |«      j,                  st/        d«      ‚|j,                  rWt	        j0                  ||t	        j
                  «       t	        j2                  d«      t	        j4                  «       d«      | _        yt	        j6                  |«      | _        | j                  j,                  st9        t:        «      ‚yt        |t$        t        j&                  ft$        t        j&                  f«      r›|\  }}t)        |t$        «      r|j                  }t)        |t$        «      r|j                  }|}|}	|j,                  s0t	        j6                  |	«      }
|
j,                  s%t9        t:        «      ‚t	        j<                  ||	«      }
|
| _        yt        |t$        t        j&                  ft>        t        ft>        t        fd«      s7t        |t$        t        j&                  ft>        t        ft>        t        f«      �rtA        |«      dk(  r*|\  }}}t	        j                  t        jB                  «      }n|\  }}}}t        |«      }t)        |t$        «      r|j                  n|}t	        jD                  |«      s>t	        jF                  ||jI                  «       |jK                  «       |||«      }|| _        yt	        jF                  ||jI                  «       |jK                  «       ||t	        j                  t        jB                  «      «      }|| _        yt        |tL        t$        t        j&                  f«      r1|d   dk(  r)|\  }}t)        |t$        «      r|j                  }|| _        yt        |t$        t        j&                  ft        df«      �r²|d   }tA        |«      dk(  r|d   nd}t)        |t$        «      r|j                  n|}tO        |dd«      st/        d«      ‚t	        j*                  |«      }|j,                  s|st/        d	«      ‚t	        j                  «       }t	        jP                  |«      }t	        jR                  |«      }t	        jT                  |«      }t	        jV                  |||||«      }|j,                  jH                  |j,                  _$        |j,                  jJ                  |j,                  _%        |j,                  jX                  |j,                  _,        |j,                  jZ                  |j,                  _-        	 t]        j^                  |j,                  |j,                  |«       || _        yt        |t        j
                  t        ft        t        dt        t         f«      �r]|\  }}}}$}t)        |t        «      r(|j                  }t)        |t        j
                  «      sJ ‚t	        jn                  |«      }||z   |z  }%t	        j                  «       }t	        jV                  |||||«      }t)        |$tp        tr        f«      r!t	        jt                  |$«      }&tA        |$«      }nOtw        |$«      }'|'j,                  st/        d
«      ‚t	        jx                  |'«      \  }}(t	        jt                  |$«      }&|%|z  |k7  rt/        d|›d|›d|›d|›d|%›d|›�«      ‚t	        jz                  |j,                  |&«       || _        yt        |d«      �r”|\  })d}*t}        |)d«      r(|)j                  «       }+|+r¹t	        j€                  |+«      },n£t}        |)|*«      r$|)j‚                  }+|+r‰t	        j€                  |+«      },nst)        |)tL        «      rt	        j€                  |)«      },nMtw        |)«      }'|'j,                  r|'j,                  j@                  st/        d«      ‚t	        j„                  |'«      },t	        j†                  ,t	        j                  tˆ        tˆ        tŠ        tŠ        «      t	        jŒ                  |,j�                  «       dd|,j‘                  «       dd«      «      \  }}}t	        j’                  |,«      \  }-}.|-|j,                  _,        |.|j,                  _-        || _        yt        |t”        t        j–                  ft        «      �ry|\  }/}0t™        |/«      }1t	        jš                  |1«      }2tO        |0d|2dz
  «      st/        tœ        «      ‚t	        jž                  |1|0d«      }3t	        j                   |3t£        d«      «      }4t	        j¤                  |4t£        d«      «      sMt	        j¤                  |4t£        d«      «      s.t	        j¤                  |4t£        d«      «      st/        t¦        «      ‚t	        j¨                  |1|3«      },t	        j†                  |,t	        j                  tˆ        tˆ        tŠ        tŠ        «      t	        jŒ                  |,j�                  «       dd|,j‘                  «       dd«      «      \  }5}}|5| _        yd}6|D ]  }7|6dt#        |7«      › d|7› d�z  }6Œ t«        |6«      ‚)a  
        Pixmap(colorspace, irect, alpha) - empty pixmap.
        Pixmap(colorspace, src) - copy changing colorspace.
        Pixmap(src, width, height,[clip]) - scaled copy, float dimensions.
        Pixmap(src, alpha=1) - copy and add or drop alpha channel.
        Pixmap(filename) - from an image in a file.
        Pixmap(image) - from an image in memory (bytes).
        Pixmap(colorspace, width, height, samples, alpha) - from samples data.
        Pixmap(PDFdoc, xref) - from an image at xref in a PDF document.
        Nr   z"source colorspace must not be Noner   r   Úrawr   zbad alpha valuez'cannot drop alpha for 'NULL' colorspacezbad samples datazbad samples length w=z h=z alpha=z n=z stride=z size=r   r‡  úbad image datars  rè  ÚAlphaÚ
Luminosityz+Unrecognised args for constructing Pixmap:
ú    ry   r$   )VÚ_samples_mvÚ_memory_viewrž  r…  r�   r‡  rU  ÚFzIrectÚIRectr  r¢   Úfz_new_pixmap_with_bboxr   rÃ  r³   r3   r%  r·   rÄ  ÚFzPixmapr<   Úfz_pixmap_colorspacer»   r²   rƒ  r„  r…  Ú fz_new_pixmap_from_alpha_channelrÍ   ÚMSG_PIX_NOALPHAÚ!fz_new_pixmap_from_color_and_maskr\  r6   Úfz_infinite_irectr¡  Úfz_scale_pixmapr  r  rÙ   r�  Úfz_pixmap_colorantsÚfz_pixmap_widthÚfz_pixmap_heightÚfz_new_pixmapr©  rª  r   Úpixmap_copyÚfz_pixmap_samples_memoryviewrÉ  ÚstriderC   r8  Úfz_samples_setÚfz_samples_getr—  r  rL  rþ  r  r   Úll_fz_pixmap_copy_rawr9   rÜ   Úfz_new_image_from_filer   r?  Úfz_get_pixmap_from_imageÚFZ_MIN_INF_RECTÚFZ_MAX_INF_RECTr_  r   r¶  rŒ  r°   r´   r½   rt  ru  rv  ró   rô   rÛ  r~  rì  re   )8r'   rä  rÌ  rä   rÉ  r¨  ÚspixÚmpixÚspmÚmpmr½
  r   r¶  r  rï  Úsrc_pixrí  ÚsepsrC   Úsrc_viewÚpm_viewr¦  ÚtptrÚsptrÚ	pm_strideÚpm_nÚpm_alphaÚ
src_strideÚsrc_nr  r  Úpm_iÚsrc_irL  Úsrc_pix_alpharn  Úsamplesrá  Úsamples2r  r©  Ú	imagedatar   rã  rÄ  r©  rª  r  rý   rF  ré	  r   rG  rÍ  r   Úargs8                                                           r(   rŠ   zPixmap.__init__œ3  sv	  € ð  ˆÔð
 !ˆÔàô ˜ÜœU×/Ñ/Ð0Ü—‘œuŸ}™}¬e´T¼5ÐAôð
 ‰HˆB�ØˆEÜ×.Ñ.¨rÔ3CÀDÓ3IÌ5×K^ÑK^Ð_`ÓKaÐchÓiˆBØˆD�Iä˜ÜœU×/Ñ/Ð0Ü—‘œuŸ}™}¬e´T¼5ÐAÜ”d�ôð #‰OˆB��eÜ×.Ñ.¨rÔ3CÀDÓ3IÌ5×K^ÑK^Ð_`ÓKaÐchÓiˆBØˆD�Iä˜œz¬5×+=Ñ+=¼tÀD»zÐJÌVÔUZ×UcÑUcÐLdÕeà‰HˆB�Ü˜"œjÔ)Ø—W‘W‘Ø�Ü×'Ñ'¨Ó-�Ü˜$¤Ô'Ø—y‘y�Ü×-Ñ-¨dÓ3×>Ò>Ü Ð"FÓGÐGà�}Š}Ü!×3Ñ3ØØÜ×*Ñ*Ó,Ü×2Ñ2°4Ó8Ü×+Ñ+Ó-Øó�•	ô "×BÑBÀDÓI�”	Ø—y‘y×+Ò+Ü&¬Ó8Ð8ð ,ô ˜œv¤u§~¡~Ð6¼ÄÇÁÐ8PÔQà‰JˆD�$Ü˜$¤Ô'Ø—y‘y�Ü˜$¤Ô'Ø—y‘y�ØˆCØˆCØ—?’?Ü×<Ñ<¸SÓA�Ø—~’~Ü&¬Ó8Ð8ä×=Ñ=¸cÀ3ÓG�ØˆD�Iä˜¤¬¯©Ð7¼%Ä¸ÌÌsÀ|ÐUYÔZÜ˜œv¤u§~¡~Ð6¼Ä¸ÄuÌcÀlÕSä�4‹y˜AŠ~Ø!‘
��a˜Ü—}‘}¤U×%<Ñ%<Ó=‘à#'Ñ ��a˜˜DÜ'¨Ó-�ä#-¨d´FÔ#;�d—i’iÀˆGÜ×-Ñ-¨dÔ3Ü×*Ñ*¨7°G·I±I³KÀÇÁÃÈaÐQRÐTXÓY�ð ˆD�Iô ×*Ñ*¨7°G·I±I³KÀÇÁÃÈaÐQRÔTY×TaÑTaÔbg×byÑbyÓTzÓ{�ØˆD�Iä˜œc¤F¬E¯N©NÐ#;Ô<ÀÀaÁÈEÒAQà‰EˆAˆrÜ˜"œfÔ%Ø—W‘W�ØˆD�Iä˜œv¤u§~¡~Ð6¼¸d¸ÕDð ˜‘7ˆDÜ" 4›y¨Aš~�D˜’G°1ˆEÜ#-¨d´FÔ#;�d—i’iÀˆGÜ˜E 1 aÔ(Ü Ð"3Ó4Ð4Ü×+Ñ+¨GÓ4ˆBØ—=’=©Ü Ð"KÓLÐLÜ×&Ñ&Ó(ˆDÜ×)Ñ)¨'Ó2ˆAÜ×%Ñ% gÓ.ˆAÜ×&Ñ& wÓ/ˆAÜ×$Ñ$ R¨¨A¨t°UÓ;ˆBØ%×0Ñ0×2Ñ2ˆB�M‰MŒOØ%×0Ñ0×2Ñ2ˆB�M‰MŒOØ!(×!3Ñ!3×!8Ñ!8ˆB�M‰MÔØ!(×!3Ñ!3×!8Ñ!8ˆB�M‰MÔð ô ×!Ñ! 2§=¡=°'×2DÑ2DÀaÔHðh ˆD�Iä˜œu×1Ñ1´:Ð>ÄÄSÈ$ÔQTÔVZÐP[Õ\à'+Ñ$ˆB��1�g˜uÜ˜"œjÔ)Ø—W‘W�Ü! "¤e×&8Ñ&8Ô9Ð9Ð9Ü×%Ñ% bÓ)ˆAØ˜%‘i 1‘_ˆFÜ×&Ñ&Ó(ˆDÜ×$Ñ$ R¨¨A¨t°UÓ;ˆBä˜7¤U¬IÐ$6Ô7ä ×3Ñ3°GÓ<�Ü˜7“|‘ä(¨Ó1�Ø—~’~Ü$Ð&8Ó9Ð9Ü×1Ñ1°#Ó6‘��aÜ ×3Ñ3°GÓ<�Ø˜‰z˜TÒ!Ü Ð$:¸°t¸4¸Q¸DÀÀ%ÀÈÈ1È$ÈiÐPVÈyÐX_ÐZ^ÐY`Ð"aÓbÐbÜ×'Ñ'¨¯©¸ÔAØˆD�Iä˜˜dÕ#à‰JˆIØˆDÜ�y )Ô,Ø!×)Ñ)Ó+�ÙÜ×6Ñ6°uÓ=‘CÜ˜ DÔ)Ø!Ÿ™�ÙÜ×6Ñ6°uÓ=‘CÜ˜I¤sÔ+Ü×2Ñ2°9Ó=‘ä(¨Ó3�Ø—~’~¨S¯^©^×-?Ò-?Ü$Ð&6Ó7Ð7Ü×4Ñ4°SÓ9�ô
 ×5Ñ5ØÜ—M‘M¤/´?ÄOÔUdÓeÜ—N‘N C§E¡E£G¨Q°°3·5±5³7¸A¸qÓAó‰HˆB��1ô
 ×2Ñ2°3Ó7‰JˆD�$Ø!%ˆB�M‰MÔØ!%ˆB�M‰MÔØˆD�Iä˜œx¬×)9Ñ)9Ð:¼CÕ@à‰IˆC�Ü" 3Ó'ˆCÜ×(Ñ(¨Ó-ˆGÜ˜D ! W¨Q¡YÔ/Ü ¤,Ó/Ð/Ü×(Ñ(¨¨d°AÓ6ˆCÜ×&Ñ& s¬H°YÓ,?Ó@ˆEÜ×%Ñ% e¬X°gÓ->Ô?Ü!×-Ñ-¨e´X¸gÓ5FÔGÜ!×-Ñ-¨e´X¸lÓ5KÔLä ¤/Ó2Ð2Ü×&Ñ& s¨CÓ0ˆCô ×6Ñ6ØÜ—M‘M¤/´?ÄOÔUdÓeÜ—N‘N 3§5¡5£7¨A¨q°#·%±%³'¸1¸aÓ@ó‰IˆC��Að
 ˆD�Ið BˆDÛ�Ø˜$œt C›y˜k¨¨C¨5°Ð3Ñ3‘ð ä˜TÓ"Ð"r)   c                 ó   — | j                   S r+   )r¦  r-   s    r(   r  zPixmap.__len__´4  s   € Ø�y‰yÐr)   c                 ó  — t        | «      t        ury | j                  rHd| j                  j                  j                  j
                  ›d| j                  ›d| j                  ›d�S dd›d| j                  ›d| j                  ›d�S )NzPixmap(z, rˆ  r›  )r·   rÄ  rÈ  r³   r»   r   ÚirectrÉ  r-   s    r(   rÚ   zPixmap.__repr__·4  sd   € Ü�D‹zœVÑ# VØ�?‹?Ø+/¯?©?×+?Ñ+?×+JÑ+J×+OÓ+OÐQU×Q[ÓQ[Ð]a×]gÓ]gÐhÐhð ò ,2°4·:³:¸t¿z»zÐJÐJr)   c                 ót  — | j                   }t        j                  |«      |j                  «       z  }t        j                  |«      }t        j
                  |«      }|dk(  rt        j                  ||«       n¤|dk(  rt        j                  ||«       nˆ|dk(  rt        j                  ||«       nl|dk(  rt        j                  ||«       nP|dk(  rt        j                  ||«       n4|dk(  rt        j                  |||d«       nt        j                  ||«       |j                  «        t        |«      }|S )z!
        Pixmap._tobytes
        r   r   r   r   rØ  rµ  r   )r³   r�   Úfz_pixmap_strider¶  r¨  r©  Úfz_write_pixmap_as_pngÚfz_write_pixmap_as_pnmÚfz_write_pixmap_as_pamÚfz_write_pixmap_as_psdÚfz_write_pixmap_as_psÚfz_write_pixmap_as_jpegrë  r
  )r'   Úformat_Újpg_qualityr¨  r¦  r  rì  Úbarrays           r(   Ú_tobyteszPixmap._tobytes¾4  sú   € ð �Y‰YˆÜ×%Ñ% bÓ)¨B¯D©D«FÑ2ˆÜ×!Ñ! $Ó'ˆÜ�n‰n˜SÓ!ˆØ˜Š\œE×8Ñ8¸¸bÕAØ˜Š\œE×8Ñ8¸¸bÕAØ˜Š\œE×8Ñ8¸¸bÕAØ˜Š\œE×8Ñ8¸¸bÕAØ˜Š\œE×7Ñ7¸¸RÕ@Ø˜Š\Ü×)Ñ)¨#¨r°;ÀÕBä×(Ñ(¨¨bÔ1Ø×ÑÔÜ! #Ó&ˆØˆr)   c                 óš  — | j                   }|dk(  rt        j                  ||«       y |dk(  rt        j                  ||«       y |dk(  rt        j                  ||«       y |dk(  rt        j
                  ||«       y |dk(  rt        j                  ||«       y |dk(  rt        j                  |||«       y t        j                  ||«       y )Nr   r   r   r   rØ  rµ  )r³   r�   Úfz_save_pixmap_as_pngÚfz_save_pixmap_as_pnmÚfz_save_pixmap_as_pamÚfz_save_pixmap_as_psdÚfz_save_pixmap_as_psÚfz_save_pixmap_as_jpeg)r'   rd   r
  r  r¨  s        r(   Ú	_writeIMGzPixmap._writeIMGÓ4  s¡   € Ø�Y‰YˆØ˜Š\œE×7Ñ7¸¸HÕEØ˜Š\œE×7Ñ7¸¸HÕEØ˜Š\œE×7Ñ7¸¸HÕEØ˜Š\œE×7Ñ7¸¸HÕEØ˜Š\œE×6Ñ6°r¸8ÕDØ˜Š\œE×8Ñ8¸¸XÀ{ÕSÜ!×7Ñ7¸¸HÕEr)   c                 ó@   — t        j                  | j                  «      S )z$Indicates presence of alpha channel.)r�   Úfz_pixmap_alphar³   r-   s    r(   rÉ  zPixmap.alphaÝ4  r˜  r)   Nc                 óÎ   — |€ t        j                  | j                  «       y|€!t        j                  | j                  |«       yt	        | j                  |t        |«      «       y)z*Fill all color components with same value.N)r�   Úfz_clear_pixmapr³   Úfz_clear_pixmap_with_valueÚJM_clear_pixmap_rect_with_valuer   )r'   r¥   r  s      r(   rZ  zPixmap.clear_withâ4  sH   € àˆ=Ü×!Ñ! $§)¡)Õ,Øˆ\Ü×,Ñ,¨T¯Y©Y¸Õ>ä+¨D¯I©I°uÔ>NÈtÓ>TÕUr)   c                 óP   — | j                   }t        ||«      }|st        |«      S |S )z-
        Return count of each color.
        )r³   ÚJM_color_countr6   )r'   rú   rï  r¨  r’   s        r(   Úcolor_countzPixmap.color_countë4  s*   € ð �Y‰YˆÜ˜R Ó&ˆÙÜ˜“8ˆOØˆ	r)   c                 ó  — d}d}|�#| j                   t        |«      v r| j                   }| j                  d|¬«      j                  «       D ]  \  }}||z  }||kD  sŒ|}|}Œ |sdt	        dg| j
                  z  «      fS ||z  fS )z/Return most frequent color and its usage ratio.r   T)rú   rï  r   r¥	  )r  r  r  r@   r  rC   )r'   rï  Ú	allpixelsÚcntÚpixelrö  Úmaxpixels          r(   Úcolor_topusagezPixmap.color_topusageõ4  s›   € àˆ	ØˆØÐ §
¡
¬d°4«jÑ 8Ø—:‘:ˆDØ ×,Ñ,°D¸dÐ,ÓC×IÑIÖK‰LˆE�5Ø˜ÑˆIØ�s‹{Ø�Ø ‘ð	 Lñ
 Ø”u˜c˜U T§V¡V™^Ó,Ð-Ð-Ø�i‘ Ð*Ð*r)   c                 óv   — t        t        j                  | j                  «      «      }|j                  dk(  ry|S )zPixmap Colorspace.r›  N)r…  r�   rÕ  r³   r   )r'   rÌ  s     r(   rÈ  zPixmap.colorspace5  s1   € ô œ×2Ñ2°4·9±9Ó=Ó>ˆØ�7‰7�fÒØØˆ	r)   c                 ó4  — | j                   }|j                   }t        j                  |«      st        d«      ‚|j	                  «       |j	                  «       k7  rt        d«      ‚t        j
                  ||t        |«      t        j                  d«      «       y)zCopy bbox from another Pixmap.z'cannot copy pixmap with NULL colorspacez%source and target alpha must be equalN)r³   r�   rÕ  r²   rÉ  Úfz_copy_pixmap_rectr   r„  )r'   rÆ  r  r¨  rí  s        r(   rG  zPixmap.copy5  st   € à�Y‰YˆØ—(‘(ˆÜ×)Ñ)¨'Ô2ÜÐGÓHÐHØ�8‰8‹:˜Ÿ™›Ò(ÜÐEÓFÐFÜ×!Ñ! " gÔ/?ÀÓ/EÄu×GaÑGaÐbfÓGgÕhr)   c                 óV   — t        j                  | j                  «      }t        |«      S )zMD5 digest of pixmap (bytes).)r�   r€  r³   r  rð  s     r(   r£  zPixmap.digest5  s"   € ô ×"Ñ" 4§9¡9Ó-ˆÜ�S‹zÐr)   c                 óš   — t        j                  | j                  «      st        d«       yt        j                  | j                  |«       y)z=Apply correction with some float.
        gamma=1 is a no-op.zcolorspace invalid for functionN)r�   rÕ  r³   rí   Úfz_gamma_pixmap)r'   Úgammas     r(   Ú
gamma_withzPixmap.gamma_with5  s6   € ô ×)Ñ)¨4¯9©9Ô5ÜÐ=Ô>ØÜ×Ñ˜tŸy™y¨%Õ0r)   c                 ó@   — t        j                  | j                  «      S )zThe height.)r�   rÝ  r³   r-   s    r(   r¶  zPixmap.h$5  rg
  r)   c                 ó
  — | j                   }t        j                  |«      j                  st	        d«       yt        |«      }t        j                  |«      rt        j                  |«       yt        j                  ||«       y)z Invert the colors inside a bbox.zignored for stencil pixmapFT)	r³   r�   rÕ  r»   rí   r   r¡  Úfz_invert_pixmapÚfz_invert_pixmap_rect)r'   r  r¨  r  s       r(   Úinvert_irectzPixmap.invert_irect)5  sg   € à�Y‰YˆÜ×)Ñ)¨"Ó-×8Ò8ÜÐ8Ô9ØÜ˜TÓ"ˆÜ×%Ñ% aÔ(Ü×"Ñ" 2Ô&ØÜ×#Ñ# B¨Ô*Ør)   c                 óV   — t        j                  | j                  «      }t        |«      S )zPixmap bbox - an IRect object.)r�   Úfz_pixmap_bboxr³   ÚJM_py_from_irectr¸  s     r(   r  zPixmap.irect65  s#   € ô ×"Ñ" 4§9¡9Ó-ˆÜ Ó%Ð%r)   c                 ó@   — t        j                  | j                  «      S )zCheck if pixmap is monochrome.)r�   Úfz_is_pixmap_monochromer³   r-   s    r(   Úis_monochromezPixmap.is_monochrome<5  s   € ô ×,Ñ,¨d¯i©iÓ8Ð8r)   c                 óð   — | j                   }|j                  «       }|j                  «       |j                  «       z  |z  }d„ }t	        d||«      D ]#  }|dk(  r ||d|«      }Œ ||||«      }|k7  sŒ# y y)z5
        Check if pixmap has only one color.
        c                 óŠ   — t        «       }t        |«      D ]*  }|j                  t        j                  | ||z   «      «       Œ, |S r+   )r¡   r8  ri   r�   rã  )r¨  ÚoffsetrC   rE   rL  s        r(   Ú_pixmap_read_samplesz0Pixmap.is_unicolor.<locals>._pixmap_read_samplesI5  s9   € Ü“&ˆCÜ˜1–X�Ø—
‘
œ5×/Ñ/°°F¸1±HÓ=Õ>ð àˆJr)   r   FT)r³   rC   r   r¶  r8  )r'   r¨  rC   rö  r;  r:  Úsample0Úsamples           r(   Úis_unicolorzPixmap.is_unicolorA5  s   € ð
 �Y‰YˆØ�D‰D‹FˆØ—‘“˜Ÿ™›‘ !Ñ#ˆò	ô
 ˜Q  qÖ)ˆFØ˜Š{Ù.°°A°qÓ9‘á-¨r°6¸1Ó=�Ø˜WÓ$Ù ð *ð r)   c                 óž   — t         r)d„ }t        |«      | j                  _        | j                  S t	        j
                  | j                  «      S )zThe size of one pixel.c                 ó@   — t        j                  | j                  «      S r+   )r   Úpixmap_nr³   r-   s    r(   Ún2zPixmap.n.<locals>.n2^5  s   € Ü—~‘~ d§i¡iÓ0Ð0r)   )r  r!  rÛ  rC   r�   Úfz_pixmap_componentsr³   )r'   rB  s     r(   rC   zPixmap.nW5  s:   € õ ò1ä'¨›|ˆD�N‰NÔØ—6‘6ˆMÜ×)Ñ)¨$¯)©)Ó4Ð4r)   c                 ó–  — t        |«      }t        j                  «       }||_        |r|j	                  |«       |r|j                  |«       | j                  }t        |t        «      rt        j                  ||d|«       yt        |«      }	 t        j                  |||«       |j                  «        y# |j                  «        w xY w)z4
        Save pixmap as an OCR-ed PDF page.
        r   N)Úget_tessdatar�   ÚFzPdfocrOptionsrí	  Úlanguage_set2Údatadir_set2r³   r<   rÙ   Úfz_save_pixmap_as_pdfocrré  Úfz_write_pixmap_as_pdfocrrë  )r'   rd   rí	  r  Útessdatarª  rÍ  rì  s           r(   Úpdfocr_savezPixmap.pdfocr_saved5  s¦   € ô   Ó)ˆÜ×$Ñ$Ó&ˆØ ˆŒÙØ×Ñ Ô)ÙØ×Ñ˜xÔ(Ø�i‰iˆÜ�h¤Ô$Ü×*Ñ*¨C°¸1¸dÕCä'¨Ó2ˆCð&Ü×/Ñ/°°c¸4Ô@à×#Ñ#Õ%ø�×#Ñ#Õ%ús   ÂB6 Â6Cc                 ó|   — t        |«      }ddlm}  |«       }| j                  ||||¬«       |j	                  «       S )a¾  Save pixmap as an OCR-ed PDF page.

        Args:
            compress: (bool) compress, default 1 (True).
            language: (str) language(s) occurring on page, default "eng" (English),
                    multiples like "eng+ger" for English and German.
            tessdata: (str) folder name of Tesseract's language support. If None
                    we use environment variable TESSDATA_PREFIX or search for
                    Tesseract installation.
        Notes:
            On failure, make sure Tesseract is installed and you have set
            <tessdata> or environment variable "TESSDATA_PREFIX" to the folder
            containing your Tesseract's language support data.
        r   rò	  )rí	  r  rK  )rE  rM  rN  rL  rf  )r'   rí	  r  rK  rN  ró	  s         r(   Úpdfocr_tobyteszPixmap.pdfocr_tobytesy5  s;   € ô   Ó)ˆÝÙ‹iˆØ×Ñ˜ x¸(ÈXÐÔVØ�|‰|‹~Ðr)   c                 óR  — 	 ddl m} | j                  }|sd}nB|j
                  dk(  r| j                  sdnd}n"|j
                  dk(  r| j                  sdnd	}nd
}|j                  || j                  | j                  f| j                  «      }|S # t        $ r t        d«       ‚ w xY w)z&Create a Pillow Image from the Pixmap.r   )rè  zPIL/Pillow not installedr
  r   ÚLAr   r�  ÚRGBAr‘  )ÚPILrè  r©	  rp   rÈ  rC   rÉ  Ú	frombytesrJ  rÅ  rû  )r'   rè  Úcspacer   rÄ  s        r(   Ú	pil_imagezPixmap.pil_imageŽ5  s—   € ð	Ý!ð
 —‘ˆÙØ‰DØ�X‰X˜Š]Ø"Ÿjšj‘3¨d‰DØ�X‰X˜Š]Ø $§
¢
‘5°‰DàˆDà�o‰o˜d T§Z¡Z°·±Ð$=¸t¿|¹|ÓLˆØˆ
øô ò 	ÜÐ.Ô/Øð	ús   ‚B ÂB&c                 ó¢   — | j                  «       }d|j                  «       vr| j                  | j                  f|d<    |j                  |i |¤Ž y)a6  Write to image file using Pillow.

        An intermediate PIL Image is created, and its "save" method is used
        to store the image. See Pillow documentation to learn about the
        meaning of possible positional and keyword parameters.
        Use this when other output formats are desired.
        rÇ  N)rU  r®  r©  rª  r  )r'   rä  rå  rÄ  s       r(   Úpil_savezPixmap.pil_save£5  sG   € ð �n‰nÓˆà˜Ÿ™›Ñ%Ø!ŸY™Y¨¯	©	Ð2ˆF�5‰Màˆ�‰�$Ð!˜&Ó!r)   c                 óð   — t        j                  «       }| j                  «       }d|j                  «       vr| j                  | j
                  f|d<    |j                  |g|¢­i |¤Ž |j                  «       S )a?  Convert to an image in memory using Pillow.

        An intermediate PIL Image is created, and its "save" method is used
        to store the image. See Pillow documentation to learn about the
        meaning of possible positional or keyword parameters.
        Use this when other output formats are desired.
        rÇ  )rM  rN  rU  r®  r©  rª  r  rf  )r'   rä  rå  Ú	bytes_outrÄ  s        r(   Úpil_tobyteszPixmap.pil_tobytes²5  sf   € ô —J‘J“Lˆ	Ø�n‰nÓˆà˜Ÿ™›Ñ%Ø!ŸY™Y¨¯	©	Ð2ˆF�5‰Màˆ�‰�Ð,˜TÒ, VÒ,Ø×!Ñ!Ó#Ð#r)   c                 óþ  — t         r+t        j                  | j                  j                  ||«      S 	 |dk  sK|| j                  j                  j
                  k\  s(|dk  s#|| j                  j                  j                  k\  rt        t        t        «       | j                  j                  j                  }| j                  j                  j                  }||z  ||z  z   }t        | j                  |||z    «      }|S )zXGet color tuple of pixel (x, y).
        Last item is the alpha if Pixmap.alpha is true.r   )r  r   Úpixmap_pixelr³   r»   r   r¶  rž  ÚMSG_PIXEL_OUTSIDEr;  rC   rá  r¢   Ú
samples_mv)r'   r  r  rC   rá  rL  rE   s          r(   r"  zPixmap.pixelÃ5  sÍ   € õ Ü×%Ñ% d§i¡i×&:Ñ&:¸A¸qÓAÐAØØ�q’5Ø˜Ÿ	™	×,Ñ,×.Ñ.Ò.Ø�q’5Ø˜Ÿ	™	×,Ñ,×.Ñ.Ò.äÔ%Ô'7Ô8Ø�I‰I× Ñ ×"Ñ"ˆØ—‘×%Ñ%×,Ñ,ˆØ�Q‰J˜˜Q™ÑˆÜ�T—_‘_ a¨¨1©Ð-Ó.ˆØˆ
r)   rÀ  c                 ó0   — | j                   }t        |«      S r+   )r^  r  )r'   Úmvs     r(   rû  zPixmap.samplesÕ5  s   € à�_‰_ˆÜ�b‹zÐr)   c                 óz   — | j                   €$t        j                  | j                  «      | _         | j                   S )z,
        Pixmap samples memoryview.
        )rÏ  r�   rà  r³   r-   s    r(   r^  zPixmap.samples_mvÚ5  s3   € ð ×ÑÐ#Ü$×AÑAÀ$Ç)Á)ÓLˆDÔØ×ÑÐr)   c                 óR   — | j                   r| j                   j                  «        y y r+   ©rÏ  Úreleaser-   s    r(   Ú_samples_mv_releasezPixmap._samples_mv_releaseç5  ó"   € Ø×ÒØ×Ñ×$Ñ$Õ&ð r)   c                 ó@   — t        j                  | j                  «      S r+   )r�   Úfz_pixmap_samples_intr³   r-   s    r(   Úsamples_ptrzPixmap.samples_ptrë5  s   € ä×*Ñ*¨4¯9©9Ó5Ð5r)   c                 ó®  — dddddddddddœ
}t        |«      t        u rn0t        |d«      rt        |«      }nt        |d	«      r|j                  }|€'t        j
                  j                  |«      \  }}|dd
 }|j                  |j                  «       d
«      }|€(t        d|› dt        |j                  «       «      › �«      ‚| j                  r|dv rt        d|z  «      ‚| j                  r,| j                  j                  dkD  r|dv rt        d|› d�«      ‚|dk(  r&| j                  | j                   | j"                  «       | j%                  |||«      S )zòOutput as image in format determined by filename extension.

        Args:
            output: (str) only use to overrule filename extension. Default is PNG.
                    Others are JPEG, JPG, PNM, PGM, PPM, PBM, PAM, PSD, PS.
        r   r   r   r   rØ  rµ  )
r�  ÚpnmÚpgmÚppmÚpbmÚpamÚpsdÚpsÚjpgÚjpegré  r   NúImage format ú not in ©r   rØ  rµ  z'%s' cannot have alpha©r   r   r8  úunsupported colorspace for 'r×   )r·   rÙ   r9   r   rb   r	   Úsplitextr7   r¿  r²   r¢   r®  rÉ  rÈ  rC   rÅ  r©  rª  r  )r'   rd   r¬  r  Úvalid_formatsrí  rý  r%  s           r(   r  zPixmap.saveï5  sO  € ð ØØØØØØØØØñˆô �‹>œSÑ ØÜ�X˜zÔ*Ü˜8“}‰HÜ�X˜vÔ&Ø—}‘}ˆHØˆ>Ü—W‘W×%Ñ% hÓ/‰FˆAˆsØ˜˜�WˆFà×Ñ §¡£°Ó5ˆØˆ;Ü˜}¨V¨H°H¼UÀ=×CUÑCUÓCWÓ=XÐ<YÐZÓ[Ð[Ø�:Š:˜# Ñ*ÜÐ5¸Ñ>Ó?Ð?Ø�?Š?˜tŸ™×0Ñ0°1Ò4¸À	Ñ9IÜÐ;¸F¸8À1ÐEÓFÐFØ�!Š8Ø�L‰L˜Ÿ™ D§I¡IÔ.Ø�~‰~˜h¨¨[Ó9Ð9r)   c                 ó<  — | j                   }d}d}|j                  «       dk(  rt        t        «      ‚t	        j
                  |«      }t	        j                  |«      }	t	        j                  |«      }
|	|
z  |dz   z  }g d¢}g d¢}d}d}|r>t        |t        t        f«      r(t        |«      |k(  rt        |«      D ]
  }||   ||<   Œ d}|r>t        |t        t        f«      r(t        |«      |k(  rt        |«      D ]
  }||   ||<   Œ d}t        «       }d}|rJt        |t        t        f«      r|}t        |«      }nJ dt        |«      › �«       ‚||	|
z  k  rt        d«      ‚	 t	        j                   ||||t	        j"                  |«      |j$                  ||||«
       y)a©  Set alpha channel to values contained in a byte array.
        If omitted, set alphas to 255.

        Args:
            alphavalues: (bytes) with length (width * height) or 'None'.
            premultiply: (bool, True) premultiply colors with alpha values.
            opaque: (tuple, length colorspace.n) this color receives opacity 0.
            matte: (tuple, length colorspace.n)) preblending background color.
        r   r   ©r   r   r   r   z!unexpected type for alphavalues: zbad alpha valuesN)r³   rÉ  r²   r×  r�   rÛ  rÜ  rÝ  r<   r¡   r¢   r6   r8  r  rL  r·   ÚPixmap_set_alpha_helperrþ  r»   rã  râ  )r'   ÚalphavaluesÚpremultiplyÚopaqueÚmatterÍ  rÉ  rm  rC   r   r¶  Úbalenrú   rh  Úzero_outÚbgroundrL  rm  Údata_lenr�  rn  Údata_fixÚ	fz_mul255s                          r(   Ú	set_alphazPixmap.set_alpha6  s—  € ð �i‰iˆØˆØˆØ�9‰9‹;˜!ÒÜœoÓ.Ð.Ü×%Ñ% cÓ*ˆÜ×!Ñ! #Ó&ˆÜ×"Ñ" 3Ó'ˆØ�A‘˜˜1™‘ˆÚˆÚˆØˆØˆÙ”j ¬$´¨Ô7¼CÀ»KÈ1Ò<LÜ˜1–X�Ø" 1™I��q’	ð àˆHÙ”Z ¬´¨Ô6¼3¸u»:Èº?Ü˜1–X�Ø" 1™X�˜’
ð àˆGÜ‹wˆØˆÙô ˜+¬¬yÐ'9Ô:Ø"�Ü˜{Ó+‘àQÐ=¼dÀ;Ó>OÐ=PÐQÓQ�qØ˜!˜a™%ÒÜ Ð"4Ó5Ð5Øä×)Ñ)ØØØØÜ×,Ñ,¨dÓ3Ø—N‘NØØØØõr)   c                 óØ  — dddddddddddddœ}|j                  |j                  «       d	«      }|€(t        d
|› dt        |j	                  «       «      › �«      ‚| j
                  r|dv rt        d«      ‚| j                  r,| j                  j                  dkD  r|dv rt        d|› d�«      ‚|dk(  r&| j                  | j                  | j                  «       | j                  ||«      }|S )zA
        Convert to binary image stream of desired type.
        r   r   r   r8  r   rØ  rµ  )r�  rk  rl  rm  rn  ro  ÚtgaÚtpicrp  rq  rr  rs  Nrt  ru  rv  z'{output}' cannot have alpharw  rx  r×   )r7   r¿  r²   r¢   r®  rÉ  rÈ  rC   rÅ  r©  rª  r  )r'   r¬  r  rz  r%  r  s         r(   r   zPixmap.tobytesw6  sõ   € ð
 ØØØØØØØØØØØñˆð ×Ñ §¡£°Ó5ˆØˆ;Ü˜}¨V¨H°H¼UÀ=×CUÑCUÓCWÓ=XÐ<YÐZÓ[Ð[Ø�:Š:˜# Ñ*ÜÐ;Ó<Ð<Ø�?Š?˜tŸ™×0Ñ0°1Ò4¸À	Ñ9IÜÐ;¸F¸8À1ÐEÓFÐFØ�!Š8Ø�L‰L˜Ÿ™ D§I¡IÔ.Ø—‘˜s KÓ0ˆØˆr)   c                 ó`   — | j                   }||j                  _        ||j                  _        y)z"Set resolution in both dimensions.N)r³   r»   r©  rª  )r'   r©  rª  r¨  s       r(   rÅ  zPixmap.set_dpi•6  s#   € à�Y‰YˆØ!ˆ�‰ÔØ!ˆ�‰Õr)   c                 ó`   — | j                   }||j                  _        ||j                  _        y)zSet top-left coordinates.N)r³   r»   r  r  )r'   r  r  r¨  s       r(   Ú
set_originzPixmap.set_origin›6  s!   € à�Y‰YˆØˆ�‰ŒØˆ�‰�r)   c                 ó*  — t         r,t        j                  | j                  j                  |||«      S | j                  }t        |d|j                  «       dz
  «      rt        |d|j                  «       dz
  «      st        t        «      ‚|j                  «       }t        |«      D ]#  }||   }t        |dd«      rŒt        t        «      ‚ t        j                  |«      }||z  ||z  z   }	 t        |«      D ]  }|j#                  ||z   ||   «       Œ y)zSet color of pixel (x, y).r   r   r¥	  N)r  r   Ú	set_pixelr³   r»   r�  r   r¶  r²   r]  rC   r8  ÚMSG_BAD_COLOR_SEQr�   r  rÐ  r^  râ  )	r'   r  r  rô  r¨  rC   rn  rL  rá  s	            r(   r�  zPixmap.set_pixel¡6  sí   € åÜ—?‘? 4§9¡9×#7Ñ#7¸¸A¸uÓEÐEØ�Y‰YˆÜ˜˜1˜bŸd™d›f q™jÔ)´¸!¸QÀÇÁÃÈÁ
Ô1KÜÔ/Ó0Ð0Ø�D‰D‹FˆÜ�q–ˆAØ�a‘ˆAÜ˜A˜q #Õ&Ü Ô"3Ó4Ð4ð ô ×'Ñ'¨Ó,ˆØ�Q‰J˜˜Q™ÑˆØô ˜1–X�Ø×!Ñ! ! a¡%¨¨q©Õ2ñ r)   c                 ó  — | j                   }|j                  «       }g }t        |«      D ]4  }||   }t        |dd«      st	        t
        «      ‚|j                  |«       Œ6 t        |«      }t        |||«      }t        |«      }|S )z Set color of all pixels in bbox.r   r¥	  )
r³   rC   r8  r�  r²   r‘  ri   r   ÚJM_fill_pixmap_rect_with_colorr%  )	r'   r  rô  r¨  rC   r©  rn  rL  r’   s	            r(   rŸ  zPixmap.set_rectº6  s}   € à�Y‰YˆØ�D‰D‹FˆØˆÜ�q–ˆAØ�a‘ˆAÜ˜A˜q #Ô&Ü Ô"3Ó4Ð4Ø�H‰H�Q�Kð	 ô
   Ó%ˆÜ*¨2¨q°$Ó7ˆÜ�!‹WˆØˆ	r)   c                 ó”   — |dk  rt        d«       yt        j                  | j                  |«       d| _        | j                  «        y)zgDivide width and height by 2**factor.
        E.g. factor=1 shrinks to 25% of original size (in place).r   zignoring shrink factor < 1N)rí   r�   Úfz_subsample_pixmapr³   rÐ  re  )r'   Úfactors     r(   ÚshrinkzPixmap.shrinkÉ6  s?   € ð �AŠ:ÜÐ8Ô9ØÜ×!Ñ! 4§9¡9¨fÔ5à ˆÔØ× Ñ Õ"r)   c                 ó@   — t        j                  | j                  «      S )zPixmap size.)r�   Úfz_pixmap_sizer³   r-   s    r(   r¦  zPixmap.sizeÔ6  s   € ô ×$Ñ$ d§i¡iÓ0Ð0r)   c                 ó6   — | j                   j                  «       S )z%Length of one image line (width * n).)r³   rá  r-   s    r(   rá  zPixmap.strideÙ6  s   € ð �y‰y×ÑÓ!Ð!r)   c                 ó¦   — | j                   r| j                   j                  dkD  rt        d«       yt        j                  | j
                  ||«      S )z/Tint colors with modifiers for black and white.r   z(warning: colorspace invalid for functionN)rÈ  rC   rp   r�   Úfz_tint_pixmapr³   )r'   ÚblackÚwhites      r(   Ú	tint_withzPixmap.tint_withÞ6  s?   € à�Š $§/¡/×"3Ñ"3°aÒ"7ÜÐ>Ô?ØÜ×#Ñ# T§Y¡Y°°uÓ=Ð=r)   c                 ó@   — t        j                  | j                  «      S )z
The width.)r�   rÜ  r³   r-   s    r(   r   zPixmap.wå6  r˜  r)   c                 óü   — |j                   st        d«      ‚t        |«      }|j                  |j                  |j
                  |j                  g}t        j                  | j                  |||«      }t        |«      S )z!Return pixmap from a warped quad.zquad must be convex)Ú	is_convexr²   r&  r”  r
  r	  r  r�   Úfz_warp_pixmapr³   rÄ  )r'   rú  rJ  rÅ  r*  rö  r½
  s          r(   ÚwarpzPixmap.warpê6  s`   € à�~Š~¤ZÐ0EÓ%FÐFÜ˜DÓ!ˆØ—4‘4˜Ÿ™˜qŸt™t Q§T¡TÐ*ˆÜ×"Ñ" D§I¡I¨v°u¸fÓEˆÜ�s‹|Ðr)   c                 ó@   — t        j                  | j                  «      S )zx component of Pixmap origin.)r�   Úfz_pixmap_xr³   r-   s    r(   r  zPixmap.xò6  ó   € ô × Ñ  §¡Ó+Ð+r)   c                 ó6   — | j                   j                  «       S )zResolution in x direction.)r³   r©  r-   s    r(   r©  zPixmap.xres÷6  ó   € ð �y‰y�~‰~ÓÐr)   c                 ó@   — t        j                  | j                  «      S )zy component of Pixmap origin.)r�   Úfz_pixmap_yr³   r-   s    r(   r  zPixmap.yü6  r§  r)   c                 ó6   — | j                   j                  «       S )zResolution in y direction.)r³   rª  r-   s    r(   rª  zPixmap.yres7  r©  r)   c                 óR   — | j                   r| j                   j                  «        y y r+   rc  r-   s    r(   r¯  zPixmap.__del__	7  rf  r)   rŒ	  rÆ  r+   )r   NN)TÚengN)Né_   )Nr   NN)r�  r¯  )6r.   r/   r0   rŠ   r  rÚ   r  r  r!  rÉ  rZ  r  r$  rÈ  rG  r£  r,  r¶  r1  r  r7  r>  rC   rL  rN  rU  rW  rZ  r"  r  rû  r^  re  ri  r  rˆ  r   rÅ  rŽ  r�  rŸ  r—  r¦  rá  rŸ  r   r¤  r  r©  r  rª  rJ  rÅ  r¯  r,   r)   r(   rÄ  rÄ  š3  s  „ òV#òpòKòò*Fð ñ0ó ð0óVóó+ð ñó ðòið ñó ðò
1ð ñ1ó ð1óð ñ&ó ð&ð
 ñ9ó ð9ð ñó ðð* ñ
5ó ð
5ó&ó*ò*ò*"ò$ò"ð$ ð�uò ó ðð ñ
 ó ð
 ò'ð ñ6ó ð6ó':óR]ó~ò<"òò3ò2ò	#ð ñ1ó ð1ð ñ"ó ð"ò>ð ñ0ó ð0òð ñ,ó ð,ð ñ ó ð ð ñ,ó ð,ð ñ ó ð ð €EØ€Fó'r)   rÄ  c                   ó¨   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdddœd	„Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zd„ Zd„ Zed„ «       ZeZeZy)rÖ  c                 óŽ   — t        j                  | j                  | j                  z  | j                  | j                  z  z   «      S r+   )rì
  rí
  r  r  r-   s    r(   rð
  zPoint.__abs__7  s.   € Ü�y‰y˜Ÿ™ $§&¡&™¨4¯6©6°D·F±F©?Ñ:Ó;Ð;r)   c                 óð   — t        |d«      r&t        | j                  |z   | j                  |z   «      S t	        |«      dk7  rt        d«      ‚t        | j                  |d   z   | j                  |d   z   «      S ©NrW  r   úPoint: bad seq lenr   r   ©r9   rÖ  r  r  r6   r²   ©r'   r�  s     r(   r÷
  zPoint.__add__7  óe   € Ü�1�kÔ"Ü˜Ÿ™ !™ T§V¡V¨a¡ZÓ0Ð0Üˆq‹6�QŠ;ÜÐ1Ó2Ð2Ü�T—V‘V˜a ™d‘] D§F¡F¨Q¨q©T¡MÓ2Ð2r)   c                 óJ   — t        | «      t        | «      cxk(  xr dk(   S c  S r…   rú
  r-   s    r(   rû
  zPoint.__bool__7  rü
  r)   c                 óH   — t        |d«      syt        |«      dk(  xr | |z
   S )Nr  Fr   rþ
  r¶  s     r(   rÿ
  zPoint.__eq__7  s(   € Ü�q˜)Ô$ØÜ�1‹v˜‰{Ò- D¨1¡H˜~Ð-r)   c                 ó8   — | j                   | j                  f|   S r+   ©r  r  rÚ  s     r(   rN  zPoint.__getitem__#7  s   € Ø—‘˜Ÿ™Ð Ñ"Ð"r)   c                 ó*   — t        t        | «      «      S r+   ©rC  r¢   r-   s    r(   rD  zPoint.__hash__&7  ó   € Ü”E˜$“KÓ Ð r)   Nr»  c                ón  — |sd| _         d| _        �nt        |«      dkD  rt        d«      ‚t        |«      dk(  r't	        |d   «      | _         t	        |d   «      | _        nÂt        |«      dk(  r©|d   }t        |t        j                  t        j                  f«      r#|j                   | _         |j                  | _        nbt        |d«      st        d«      ‚t        |«      dk7  rt        d«      ‚t	        |d   «      | _         t	        |d   «      | _        nt        d«      ‚|�|| _         |�|| _        yy)	zÎ
        Point() - all zeros
        Point(x, y)
        Point(Point) - new copy
        Point(sequence) - from 'sequence'

        Explicit keyword args x, y override earlier settings if not None.
        r‹  r   r´  r   r   rN  zPoint: bad argsN)
r  r  r6   r²   r\  r<   r�   r  Úfz_pointr9   )r'   r  r  rä  r  s        r(   rŠ   zPoint.__init__)7  s  € ñ ØˆDŒFØˆDŽFÜ�‹Y˜Š]ÜÐ1Ó2Ð2Ü�‹Y˜!Š^Ü˜4 ™7“^ˆDŒFÜ˜4 ™7“^ˆD�FÜ�‹Y˜!Š^Ø�Q‘ˆAÜ˜!œeŸm™m¬U¯^©^Ð<Ô=ØŸ™�”ØŸ™�•ä˜q -Ô0Ü$Ð%6Ó7Ð7Ü�q“6˜Q’;Ü$Ð%9Ó:Ð:Ü˜q ™t›�”Ü˜q ™t›�•äÐ1Ó2Ð2Øˆ= Q˜DœFØˆ= Q˜D�Fˆ=r)   c                  ó   — y©Nr   r,   r-   s    r(   r  zPoint.__len__K7  r  r)   c                 ó  — t        |d«      r&t        | j                  |z  | j                  |z  «      S t        |d«      r3t	        |«      dk(  r%| j                  |d   z  | j                  |d   z  z   S t        | «      }|j                  |«      S )NrW  rN  r   r   r   )r9   rÖ  r  r  r6   rá  )r'   rm  r�  s      r(   r  zPoint.__mul__N7  sw   € Ü�1�kÔ"Ü˜Ÿ™ !™ T§V¡V¨a¡ZÓ0Ð0Ü�1�mÔ$¬¨Q«°1ªà—6‘6˜A˜a™D‘= 4§6¡6¨A¨a©D¡=Ñ0Ð0Ü�$‹KˆØ�{‰{˜1‹~Ðr)   c                 óF   — t        | j                   | j                   «      S r+   )rÖ  r  r  r-   s    r(   r  zPoint.__neg__W7  s   € Ü�d—f‘f�W˜tŸv™v˜gÓ&Ð&r)   c                 óJ   — t        | «      t        | «      cxk(  xr dk(   S c  S r…   rú
  r-   s    r(   r  zPoint.__nonzero__Z7  rü
  r)   c                 ó   — t        | «      S r+   )rÖ  r-   s    r(   r  zPoint.__pos__]7  r~  r)   c                 ó0   — dt        t        | «      «      z   S )NrÖ  r  r-   s    r(   rÚ   zPoint.__repr__`7  ó   € ØœœU 4›[Ó)Ñ)Ð)r)   c                 ób   — t        |«      }|dk(  r|| _        y |dk(  r|| _        y t        d«      ‚)Nr   r   r  )r\  r  r  ræ  r  s      r(   r  zPoint.__setitem__c7  s?   € Ü�!‹HˆØ�!ŠV˜a�T”Vð ð �!ŠV˜a�T”Vð ô Ð1Ó2Ð2r)   c                 óð   — t        |d«      r&t        | j                  |z
  | j                  |z
  «      S t	        |«      dk7  rt        d«      ‚t        | j                  |d   z
  | j                  |d   z
  «      S r³  rµ  r¶  s     r(   r   zPoint.__sub__k7  r·  r)   c                 óà   — t        |d«      r,t        | j                  dz  |z  | j                  dz  |z  «      S t	        |«      d   }|st        d«      ‚t        | «      }|j                  |«      S r"  )r9   rÖ  r  r  r#  r$  rá  )r'   rm  r  r�  s       r(   r&  zPoint.__truediv__r7  sf   € Ü�1�kÔ"Ü˜Ÿ™ "™ Q™¨¯©°©°A©Ó6Ð6Ü Ó" 1Ñ%ˆÙÜ#Ð$;Ó<Ð<Ü�$‹KˆØ�{‰{˜2‹Ðr)   c                 ó,  — | j                   | j                   z  | j                  | j                  z  z   }|t        k  rt        dd«      S t	        j
                  |«      }t        t        | j                   «      |z  t        | j                  «      |z  «      S )z&Unit vector with positive coordinates.r   )r  r  r-  rÖ  rì
  rí
  rÙ  ©r'   r_  s     r(   Úabs_unitzPoint.abs_unit{7  sk   € ð �F‰F�T—V‘V‰O˜dŸf™f t§v¡v™oÑ-ˆØŒwŠ;Ü˜˜1“:ÐÜ�I‰I�a‹LˆÜ”S˜Ÿ™“[ 1‘_¤c¨$¯&©&£k°A¡oÓ6Ð6r)   c                 ó  — t        |«      dkD  st        d«      ‚|d   }t        |«      dk(  rt        |«      }n%t        |«      dk(  rt        |«      }nt        d«      ‚t        |«      dkD  r|d   }nd}dd	d
ddœ}||   d   ||   d   z  }t	        |«      t        u rt        | |z
  «      |z  S t        |j                  |j                  «      }||j                  z  }| |v ry| j                  |j                  kD  r†| j                  |j                  k\  r| j                  |j                  |«      S | j                  |j                  k  r| j                  |j                  |«      S | j                  |j                  z
  |z  S |j                  | j                  cxk  r|j                  k  rTn nQ| j                  |j                  k\  r| j                  |j                  z
  |z  S |j                  | j                  z
  |z  S | j                  |j                  k\  r| j                  |j                   |«      S | j                  |j                  k  r| j                  |j                  |«      S |j                  | j                  z
  |z  S )z.Return distance to rectangle or another point.r   z$at least one parameter must be givenr   r8  z$arg1 must be point-like or rect-liker   rK  )rŒ  rŒ  ©rŒ  ç      R@©gR¸…ëQ@rÑ  ©gffffff9@rÑ  ©rK  ÚinÚcmÚmmr‹  )r6   r²   rÖ  r  r·   rÙ  Útop_leftÚbottom_rightr  r÷  r  rù  Údistance_torú  Ú	top_rightrø  Úbottom_left)r'   rä  r  ÚunitÚur¸  r  s          r(   rÚ  zPoint.distance_to„7  s  € ä�4‹y˜1Š}ÜÐCÓDÐDà�‰GˆÜˆq‹6�QŠ;Ü�a“‰AÜ�‹V�qŠ[Ü�Q“‰AäÐCÓDÐDäˆt‹9�qŠ=Ø˜‘7‰DàˆDØ (°+Øñ ˆàˆd‰G�A‰J˜˜4™ ™Ñ#ˆä�‹7”eÑÜ�t˜a‘x“= 1Ñ$Ð$ô �—‘˜QŸZ™ZÓ(ˆØ�—‘ÑˆØ�1‰9ØØ�6‰6�A—D‘DŠ=Ø�v‰v˜Ÿ™Š~Ø×'Ñ'¨¯©¸Ó=Ð=Ø—‘˜1Ÿ4™4’Ø×'Ñ'¨¯©°TÓ:Ð:àŸ™ §¡™¨Ñ*Ð*Ø�T‰T�T—V‘VÔ#˜qŸt™tÕ#Ø�v‰v˜Ÿ™Š~ØŸ™ §¡™¨Ñ*Ð*àŸ™˜tŸv™v™¨Ñ*Ð*à�v‰v˜Ÿ™Š~Ø×'Ñ'¨¯©°tÓ<Ð<Ø—‘˜1Ÿ4™4’Ø×'Ñ'¨¯
©
°DÓ9Ð9àŸ™˜tŸv™v™¨Ñ*Ð*r)   c                 ój   — t        |«      dk7  rt        d«      ‚t        | |«      \  | _        | _        | S )z7Replace point by its transformation with matrix-like m.rØ  rõ
  )r6   r²   Úutil_transform_pointr  r  r  s     r(   rá  zPoint.transform¶7  s2   € äˆq‹6�QŠ;ÜÐ2Ó3Ð3Ü-¨d°AÓ6‰ˆŒ�”Øˆr)   c                 ó  — | j                   | j                   z  | j                  | j                  z  z   }|t        k  rt        dd«      S t	        j
                  |«      }t        | j                   |z  | j                  |z  «      S )zUnit vector of the point.r   )r  r  r-  rÖ  rì
  rí
  rÍ  s     r(   rÝ  z
Point.unit½7  sc   € ð �F‰F�T—V‘V‰O˜dŸf™f t§v¡v™oÑ-ˆØŒwŠ;Ü˜˜1“:ÐÜ�I‰I�a‹LˆÜ�T—V‘V˜a‘Z §¡¨!¡Ó,Ð,r)   )r.   r/   r0   rð
  r÷
  rû
  rÿ
  rN  rD  rŠ   r  r  r  r  r  rÚ   r  r   r&  r!  rÎ  rÚ  rá  rÝ  r>  r?  r,   r)   r(   rÖ  rÖ  7  s™   „ ò<ò3ò1ò.ò
#ò!ð !%¨ô  'òDòò'ò1òò*òò3òð ñ7ó ð7ò0+òdð ñ-ó ð-ð €GØ�Dr)   rÖ  c                   ó  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	ddddd	œd
„Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zed„ «       Zd„ ZeZ ed„ «      Z ed„ «      Zy)r…  c                 ó¦   — | j                   ryt        | j                  | j                  z
  «      t        | j                  | j                  z
  «      z  S ©Nr‹  )r�  rÙ  r”  r
  r  r-   s    r(   rð
  zQuad.__abs__Ì7  s;   € Ø�=Š=ØÜ�4—7‘7˜TŸW™WÑ$Ó%¬¨D¯G©G°d·g±gÑ,=Ó(>Ñ>Ð>r)   c                 ól  — t        |d«      rBt        | j                  |z   | j                  |z   | j                  |z   | j
                  |z   «      S t        |«      dk7  rt        d«      ‚t        | j                  |d   z   | j                  |d   z   | j                  |d   z   | j
                  |d   z   «      S ©NrW  r8  úQuad: bad seq lenr   r   r   r   ©r9   r…  r”  r
  r  r	  r6   r²   ©r'   r*  s     r(   r÷
  zQuad.__add__Ñ7  ó–   € Ü�1�kÔ"Ü˜Ÿ™ !™ T§W¡W¨q¡[°$·'±'¸A±+¸t¿w¹wÈ¹{ÓKÐKÜˆq‹6�QŠ;ÜÐ0Ó1Ð1Ü�D—G‘G˜a ™d‘N D§G¡G¨a°©d¡N°D·G±G¸aÀ¹d±NÀDÇGÁGÈaÐPQÉdÁNÓSÐSr)   c                 ó   — | j                    S r+   ©r�  r-   s    r(   rû
  zQuad.__bool__Ø7  ó   € Ø—=‘=Ð Ð r)   c                 ót  — 	 |j                  «       }|dk(  rt	        || «      S |dk7  ryt        |«      r6t        |«      j                  ryt	        |d d | «      xr t	        |dd  | «      S t        |«      r"t        d«      D ]  }t	        ||   | «      rŒ y yy# t        $ r t        dkD  r
t        «        Y yw xY w)Nr   Fr   r8  T)
r  re   r÷   rt   Úutil_point_in_quadÚ	CheckRectr  r�  Ú	CheckQuadr8  )r'   r  r  rL  s       r(   rÈ  zQuad.__contains__Û7  s¿   € ð	Ø—	‘	“ˆAð �Š6Ü% a¨Ó.Ð.Ø�Š6ØÜ�QŒ<Ü�A‹w×ÒØÜ% a¨¨ e¨TÓ2ÒVÔ7IÈ!ÈAÈBÈ%ÐQUÓ7VÐVÜ�QŒ<Ü˜1–X�Ü)¨!¨A©$°Õ5Ù ð ð Øøô! ò 	Ü# aÒ'¬NÔ,<Ùð	ús   ‚B ÂB7Â6B7c                 óØ   — t        |d«      syt        |«      dk(  xrN | j                  |d   k(  xr: | j                  |d   k(  xr& | j                  |d   k(  xr | j
                  |d   k(  S ©Nr  Fr8  r   r   r   r   )r9   r6   r”  r
  r  r	  )r'   rú  s     r(   rÿ
  zQuad.__eq__ð7  su   € Ü�t˜YÔ'ØÜ�4‹y˜A‰~ò 
Ø�G‰G�t˜A‘wÑò Ø�G‰G�t˜A‘wÑòà�G‰G�t˜A‘wÑòð �G‰G�t˜A‘wÑð		
r)   c                 ód   — | j                   | j                  | j                  | j                  f|   S r+   ©r”  r
  r  r	  rÚ  s     r(   rN  zQuad.__getitem__ú7  ó&   € Ø—‘˜Ÿ™ $§'¡'¨4¯7©7Ð3°AÑ6Ð6r)   c                 ó*   — t        t        | «      «      S r+   r½  r-   s    r(   rD  zQuad.__hash__ý7  r¾  r)   Nrõ  c                ó”  — |s&t        «       x| _        x| _        x| _        | _        �nWt        |«      dkD  rt        d«      ‚t        |«      dk(  r+t        t         |«      \  | _        | _        | _        | _        �nt        |«      dk(  rì|d   }t        |t        j                  «      rs|| _        t        |j                  «      t        |j                  «      t        |j                  «      t        |j                  «      f\  | _        | _        | _        | _        net        |d«      st        d«      ‚t        |«      dk7  rt        d«      ‚t        t         |«      \  | _        | _        | _        | _        nt        d«      ‚|�t        |«      | _        |�t        |«      | _        |�t        |«      | _        |�t        |«      | _        yy)zð
        Quad() - all zero points
        Quad(ul, ur, ll, lr)
        Quad(quad) - new copy
        Quad(sequence) - from 'sequence'

        Explicit keyword args ul, ur, ll, lr override earlier settings if not
        None.
    
        r8  rç  r   r   rN  zQuad: bad argsN)rÖ  r”  r
  r  r	  r6   r²   rÇ  r<   r�   ÚFzQuadr³   r9   )r'   r”  r
  r  r	  rä  r  s          r(   rŠ   zQuad.__init__ 8  sg  € ñ Ü49³GÐ;ˆDŒGÐ;�d”gÐ; ¤¨$®'Ü�‹Y˜Š]ÜÐ0Ó1Ð1Ü�‹Y˜!Š^Ü14´U¸DÓ1AÑ.ˆDŒG�T”W˜dœg t¦wÜ�‹Y˜!Š^Ø�Q‘ˆAÜ˜!œUŸ\™\Ô*Ø�”	Ü5:¸1¿4¹4³[Ä%ÈÏÉÃ+ÌuÐUV×UYÑUYË{Ô\aÐbc×bfÑbfÓ\gÐ5gÑ2�”˜œ $¤'¨4­7Ü˜Q Ô.Ü Ð!1Ó2Ð2Ü�Q“˜1’Ü Ð!4Ó5Ð5ä58¼À³]Ñ2�”˜œ $¤'¨4­7äÐ-Ó.Ð.Øˆ>¤e¨B£i˜DœGØˆ>¤e¨B£i˜DœGØˆ>¤e¨B£i˜DœGØˆ>¤e¨B£i˜D�Gˆ>r)   c                  ó   — y©Nr8  r,   r-   s    r(   r  zQuad.__len__#8  r  r)   c                 ó>   — t        | «      }|j                  |«      }|S r+   )r…  rá  )r'   rm  r*  s      r(   r  zQuad.__mul__&8  s   € Ü�‹JˆØ�K‰K˜‹NˆØˆr)   c                 óv   — t        | j                   | j                   | j                   | j                   «      S r+   )r…  r”  r
  r  r	  r-   s    r(   r  zQuad.__neg__+8  ó+   € Ü�T—W‘W�H˜tŸw™w˜h¨¯©¨°4·7±7°(Ó;Ð;r)   c                 ó   — | j                    S r+   rì  r-   s    r(   r  zQuad.__nonzero__.8  rí  r)   c                 ó   — t        | «      S r+   )r…  r-   s    r(   r  zQuad.__pos__18  ó   € Ü�D‹zÐr)   c                 ó0   — dt        t        | «      «      z   S )Nr…  r  r-   s    r(   rÚ   zQuad.__repr__48  ó   € ØœœE $›KÓ(Ñ(Ð(r)   c                 óÈ   — |dk(  rt        |«      | _        y |dk(  rt        |«      | _        y |dk(  rt        |«      | _        y |dk(  rt        |«      | _        y t        d«      ‚©Nr   r   r   r   r  )rÖ  r”  r
  r  r	  ræ  r  s      r(   r  zQuad.__setitem__78  sn   € Ø�!ŠVœu Q›x�T”Wð ð �!ŠVœu Q›x�T”Wð
 ð	 �!ŠVœu Q›x�T”Wð ð �!ŠVœu Q›x�T”Wð ô Ð1Ó2Ð2r)   c                 ól  — t        |d«      rBt        | j                  |z
  | j                  |z
  | j                  |z
  | j
                  |z
  «      S t        |«      dk7  rt        d«      ‚t        | j                  |d   z
  | j                  |d   z
  | j                  |d   z
  | j
                  |d   z
  «      S ræ  rè  ré  s     r(   r   zQuad.__sub__@8  rê  r)   c                 ó˜   — t        |d«      rd|z  }nt        |«      d   }|st        d«      ‚t        | «      }|j	                  |«      }|S )NrW  rŒ  r   zMatrix not invertible)r9   r#  r$  r…  rá  )r'   rm  rÐ  r*  s       r(   r&  zQuad.__truediv__G8  sN   € Ü�1�kÔ"Ø�a‘‰Bä# AÓ& qÑ)ˆBÙÜ'Ð(?Ó@Ð@Ü�‹JˆØ�K‰K˜‹OˆØˆr)   c                 óp  — t        | j                  | j                  «      }| j                  |z  }| j                  |z  }|j
                  |j
                  z  dkD  ryt        | j                  | j                  «      }| j                  |z  }| j                  |z  }|j
                  |j
                  z  dkD  ryy)zêCheck if quad is convex and not degenerate.

        Notes:
            Check that for the two diagonals, the other two corners are not
            on the same side of the diagonal.
        Returns:
            True or False.
        r   FT)Úplanish_liner”  r	  r  r
  r  )r'   rm  r÷  rø  s       r(   r¢  zQuad.is_convexR8  s�   € ô ˜Ÿ™ $§'¡'Ó*ˆØ�W‰W�q‰[ˆØ�W‰W�q‰[ˆØ�4‰4�"—$‘$‰;˜Š?ØÜ˜Ÿ™ $§'¡'Ó*ˆØ�W‰W�q‰[ˆØ�W‰W�q‰[ˆØ�4‰4�"—$‘$‰;˜Š?ØØr)   c                 óR   — | j                   t        k  xs | j                  t        k  S )zsCheck whether all quad corners are on the same line.

        This is the case if width or height is zero.
        )rJ  r-  rÅ  r-   s    r(   r�  zQuad.is_emptyh8  s!   € ð �z‰zœGÑ#Ò< t§{¡{´WÑ'<Ð<r)   c                 ó.   — | j                   j                  S )z(Check whether this is the infinite quad.)rä   rœ  r-   s    r(   rœ  zQuad.is_infinitep8  s   € ð �y‰y×$Ñ$Ð$r)   c                 óŠ  — t        | j                  | j                  | j                  «      }t	        |dz
  «      t
        kD  ryt        | j                  | j                  | j                  «      }t	        |dz
  «      t
        kD  ryt        | j                  | j                  | j                  «      }t	        |dz
  «      t
        kD  ryy)zïCheck if quad is rectangular.

        Notes:
            Some rotation matrix can thus transform it into a rectangle.
            This is equivalent to three corners enclose 90 degrees.
        Returns:
            True or False.
        r   FT)Úutil_sine_betweenr”  r
  r	  rÙ  r-  r  )r'   Úsines     r(   Úis_rectangularzQuad.is_rectangularu8  sŽ   € ô ! §¡¨$¯'©'°4·7±7Ó;ˆÜˆt�a‰x‹=œ7Ò"Øä  §¡¨$¯'©'°4·7±7Ó;ˆÜˆt�a‰x‹=œ7Ò"Øä  §¡¨$¯'©'°4·7±7Ó;ˆÜˆt�a‰x‹=œ7Ò"Øàr)   c                 óª   — | j                   r
t        «       S t        dd«      j                  |j                  |j
                  «      }| | z  |z  |z  }|S )zSMorph the quad with matrix-like 'm' and point-like 'p'.

        Return a new quad.r   )rœ  ÚINFINITE_QUADrb  r<  r  r  )r'   r�  rm  Údeltar*  s        r(   rÚ  z
Quad.morphŽ8  sO   € ð ×ÒÜ “?Ð"Ü�q˜!“×)Ñ)¨!¯#©#¨q¯s©sÓ3ˆØ�E�6‰M˜AÑ Ñ%ˆØˆr)   c                 ó2  — t        «       }t        | j                  j                  | j                  j                  | j
                  j                  | j                  j                  «      |_        t        | j                  j                  | j                  j                  | j
                  j                  | j                  j                  «      |_	        t        | j                  j                  | j                  j                  | j
                  j                  | j                  j                  «      |_        t        | j                  j                  | j                  j                  | j
                  j                  | j                  j                  «      |_        |S r+   )r  r«  r”  r  r
  r	  r  rø  r  rú  rÔ  r÷  rù  ©r'   r  s     r(   rä   z	Quad.rect˜8  sÖ   € ä‹FˆÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒÜ�4—7‘7—9‘9˜dŸg™gŸi™i¨¯©¯©°D·G±G·I±IÓ>ˆŒØˆr)   c                 óú   — t        |d«      rnt        |«      dk7  rt        d«      ‚| xj                  |z  c_        | xj                  |z  c_        | xj
                  |z  c_        | xj                  |z  c_        | S )z1Replace quad by its transformation with matrix m.rW  rØ  rõ
  )r9   r6   r²   r”  r
  r  r	  r  s     r(   rá  zQuad.transform¡8  s_   € ä�1�kÔ"ØÜ�‹V�qŠ[ÜÐ2Ó3Ð3Ø�Š�1‰�Ø�Š�1‰�Ø�Š�1‰�Ø�Š�1‰�Øˆr)   c                 óš   — t        t        | j                  | j                  z
  «      t        | j                  | j
                  z
  «      «      S r+   )rÔ  rÙ  r”  r
  r  r	  r-   s    r(   rL	  zQuad.<lambda>®8  ó/   € ¤3¤s¨4¯7©7°T·W±WÑ+<Ó'=¼sÀ4Ç7Á7ÈTÏWÉWÑCTÓ?UÔ#Vr)   c                 óš   — t        t        | j                  | j                  z
  «      t        | j                  | j
                  z
  «      «      S r+   )rÔ  rÙ  r”  r  r
  r	  r-   s    r(   rL	  zQuad.<lambda>¯8  r  r)   )r.   r/   r0   rð
  r÷
  rû
  rÈ  rÿ
  rN  rD  rŠ   r  r  r  r  r  rÚ   r  r   r&  r!  r¢  r�  rœ  r  rÚ  rä   rá  r>  rJ  rÅ  r,   r)   r(   r…  r…  Ê7  sð   „ ò?ò
Tò!òò*
ò7ò!ð "&¨$°4¸Dô !0òFòò
<ò!òò)òòTò	ð ñó ðð* ñ=ó ð=ð ñ%ó ð%ð ñó ðò0ð ñó ðò
ð €GÙÑVÓW€EÙÑVÓW�Fr)   r…  c                   ó”  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	d	d	d	d	d	d
œd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zd„ Zed„ «       Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Z ed „ «       Z!d!„ Z"d"„ Z#d#„ Z$ed$„ «       Z%d%„ Z&ed&„ «       Z'ed'„ «       Z(d(„ Z)d)„ Z*ed*„ «       Z+eZ,eZ-eZ. ee&«      Z/e'Z0e(Z1y	)+r  c                 óš   — | j                   s| j                  ry| j                  | j                  z
  | j                  | j
                  z
  z  S rä  )r�  rœ  r÷  rø  rù  rú  r-   s    r(   rð
  zRect.__abs__´8  s9   € Ø�=Š=˜D×,Ò,ØØ—‘˜$Ÿ'™'Ñ! d§g¡g°·±Ñ&7Ñ8Ð8r)   c                 ól  — t        |d«      rBt        | j                  |z   | j                  |z   | j                  |z   | j
                  |z   «      S t        |«      dk7  rt        d«      ‚t        | j                  |d   z   | j                  |d   z   | j                  |d   z   | j
                  |d   z   «      S ©NrW  r8  úRect: bad seq lenr   r   r   r   ©r9   r  rø  rú  r÷  rù  r6   r²   r¶  s     r(   r÷
  zRect.__add__¹8  rê  r)   c                 ó~   — t        |d«      st        d«      ‚t        |«      }t        | «      }|j                  |«      S )Nr  úbad operand 2)r9   r²   r  Ú	intersect)r'   r  rè  r  s       r(   Ú__and__zRect.__and__À8  s7   € Ü�q˜)Ô$Ü˜_Ó-Ð-ä�!‹WˆÜ�‹JˆØ�{‰{˜2‹Ðr)   c                 óJ   — t        | «      t        | «      cxk(  xr dk(   S c  S r…   rú
  r-   s    r(   rû
  zRect.__bool__È8  rü
  r)   c                 ó  — t        |d«      r|t        | «      v S t        |«      }|dk(  rt        || «      S |dk(  r˜t	        «       }	 t        |«      }| j                  |j                  cxk  xr! |j                  cxk  xr | j                  k  nc xr@ | j                  |j                  cxk  xr! |j                  cxk  xr | j                  k  S c S y# t        $ r+ t        dkD  r
t        «        t        |«      j                  }Y Œ¶w xY w)NrW  r   r8  r   F)r9   r¢   r6   Úutil_is_point_in_rectÚINFINITE_RECTr  re   r÷   rt   r…  rä   rø  r÷  rú  rù  )r'   r  r  r  s       r(   rÈ  zRect.__contains__Ë8  sÚ   € Ü�1�kÔ"Øœ˜d›Ð#Ð#Ü�‹FˆØ�Š6Ü(¨¨DÓ1Ð1Ø�Š6Ü“ˆAð!Ü˜“G�ð —G‘G˜qŸt™tÖ6 q§t¡tÖ6¨t¯w©wÔ6ò 7Ø—G‘G˜qŸt™tÖ6 q§t¡tÖ6¨t¯w©wÑ6ð8Ù6ð8àøô ò !Ü'¨!Ò+´Ô0@Ü˜“G—L‘L’ð!ús   ÁC Ã1DÄDc                 óH   — t        |d«      syt        |«      dk(  xr | |z
   S )Nr  Fr8  rþ
  r�  s     r(   rÿ
  zRect.__eq__Ü8  s)   € Ü�t˜YÔ'ØÜ�4‹y˜A‰~Ò3 t¨d¡{Ð"3Ð3r)   c                 ód   — | j                   | j                  | j                  | j                  f|   S r+   ©rø  rú  r÷  rù  rÚ  s     r(   rN  zRect.__getitem__á8  rö  r)   c                 ó*   — t        t        | «      «      S r+   r½  r-   s    r(   rD  zRect.__hash__ä8  r¾  r)   N©r[  r÷  rø  rú  r÷  rù  c          
      ó®   — t        |||||||dœŽ\  }}}}t        |«      | _        t        |«      | _        t        |«      | _        t        |«      | _        y)aa  
        Rect() - all zeros
        Rect(x0, y0, x1, y1)
        Rect(top-left, x1, y1)
        Rect(x0, y0, bottom-right)
        Rect(top-left, bottom-right)
        Rect(Rect or IRect) - new copy
        Rect(sequence) - from 'sequence'
    
        Explicit keyword args p0, p1, x0, y0, x1, y1 override earlier settings
        if not None.
        r+  N)Úutil_make_rectr\  rø  rú  r÷  rù  ©r'   r[  r÷  rø  rú  r÷  rù  rä  s           r(   rŠ   zRect.__init__ç8  sO   € ô (¨$°2¸"ÀÈÈrÐVXÒY‰ˆˆB��BÜ˜“*ˆŒÜ˜“*ˆŒÜ˜“*ˆŒÜ˜“*ˆ�r)   c                  ó   — yrû  r,   r-   s    r(   r  zRect.__len__ú8  r  r)   c                 óÚ   — t        |d«      rBt        | j                  |z  | j                  |z  | j                  |z  | j
                  |z  «      S t        | «      }|j                  |«      }|S )NrW  )r9   r  rø  rú  r÷  rù  rá  )r'   rm  r  s      r(   r  zRect.__mul__ý8  sX   € Ü�1�kÔ"Ü˜Ÿ™ !™ T§W¡W¨q¡[°$·'±'¸A±+¸t¿w¹wÈ¹{ÓKÐKÜ�‹JˆØ�K‰K˜‹NˆØˆr)   c                 óv   — t        | j                   | j                   | j                   | j                   «      S r+   )r  rø  rú  r÷  rù  r-   s    r(   r  zRect.__neg__9  rþ  r)   c                 óJ   — t        | «      t        | «      cxk(  xr dk(   S c  S r…   rú
  r-   s    r(   r  zRect.__nonzero__9  rü
  r)   c                 óØ   — t        |d«      st        d«      ‚t        | «      }t        |«      dk(  r|j	                  |«      S t        |«      dk(  r|j                  |«      S t        d«      ‚)Nr  r   r   r8  )r9   r²   r  r6   Úinclude_pointÚinclude_rect)r'   r  r  s      r(   Ú__or__zRect.__or__
9  s_   € Ü�q˜)Ô$Ü˜_Ó-Ð-Ü�‹JˆÜˆq‹6�QŠ;Ø—?‘? 1Ó%Ð%Üˆq‹6�QŠ;Ø—>‘> !Ó$Ð$Ü˜Ó)Ð)r)   c                 ó   — t        | «      S r+   ©r  r-   s    r(   r  zRect.__pos__9  r  r)   c                 ó0   — dt        t        | «      «      z   S )Nr  r  r-   s    r(   rÚ   zRect.__repr__9  r  r)   c                 ó–   — t        |«      }|dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y t        d«      ‚r  )r\  rø  rú  r÷  rù  ræ  r  s      r(   r  zRect.__setitem__9  sg   € Ü�!‹HˆØ�!ŠV˜q�T”Wð ð �!ŠV˜q�T”Wð
 ð	 �!ŠV˜q�T”Wð ð �!ŠV˜q�T”Wð ô Ð1Ó2Ð2r)   c                 ól  — t        |d«      rBt        | j                  |z
  | j                  |z
  | j                  |z
  | j
                  |z
  «      S t        |«      dk7  rt        d«      ‚t        | j                  |d   z
  | j                  |d   z
  | j                  |d   z
  | j
                  |d   z
  «      S r  r  r¶  s     r(   r   zRect.__sub__$9  rê  r)   c                 ó.  — t        |d«      rNt        | j                  dz  |z  | j                  dz  |z  | j                  dz  |z  | j
                  dz  |z  «      S t        |«      d   }|st        d|› �«      ‚t        | «      }|j                  |«      }|S )NrW  rŒ  r   zMatrix not invertible: )	r9   r  rø  rú  r÷  rù  r#  r$  rá  )r'   rm  rÐ  r  s       r(   r&  zRect.__truediv__+9  s�   € Ü�1�kÔ"Ü˜Ÿ™ "™ Q™¨¯©°"©°Q©¸¿¹À"¹ÀQ¹ÈÏÉÐRTÉÐUVÉÓWÐWÜ Ó" 1Ñ%ˆÙÜ#Ð&=¸a¸SÐ$AÓBÐBÜ�‹JˆØ�K‰K˜‹OˆØˆr)   c                 óB   — t        | j                  | j                  «      S ©zBottom-left corner.©rÖ  rø  rù  r-   s    r(   rÜ  zRect.bottom_left59  ó   € ô �T—W‘W˜dŸg™gÓ&Ð&r)   c                 óB   — t        | j                  | j                  «      S ©zBottom-right corner.©rÖ  r÷  rù  r-   s    r(   rÙ  zRect.bottom_right:9  r@  r)   c                 ó$   — | j                  |«      S )z.Check if containing point-like or rect-like x.©rÈ  r’  s     r(   ÚcontainszRect.contains?9  ó   € à× Ñ  Ó#Ð#r)   c                 óH   — t        d| j                  | j                  z
  «      S r…   ©rÔ  rù  rú  r-   s    r(   rÅ  zRect.heightC9  ó   € ä�1�d—g‘g §¡Ñ'Ó(Ð(r)   c                 ó‚   — t        |«      dk7  rt        d«      ‚t        | |«      \  | _        | _        | _        | _        | S )zExtend to include point-like p.r   r´  )r6   r²   Úutil_include_point_in_rectrø  rú  r÷  rù  r¶  s     r(   r4  zRect.include_pointG9  s;   € äˆq‹6�QŠ;ÜÐ1Ó2Ð2Ü-GÈÈaÓ-PÑ*ˆŒ�”˜$œ' 4¤7Øˆr)   c                 óð  — t        |«      dk7  rt        d«      ‚t        |«      }|j                  s| j                  r1t        t        t
        t
        f\  | _        | _        | _        | _	        | S |j                  r| S | j                  rI|j                  |j                  |j                  |j                  f\  | _        | _        | _        | _	        | S t        | |«      \  | _        | _        | _        | _	        | S )zExtend to include rect-like r.r8  r  )r6   r²   r  rœ  rç  rè  rø  rú  r÷  rù  r�  Úutil_union_rectr  s     r(   r5  zRect.include_rectN9  sÉ   € äˆq‹6�QŠ;ÜÐ0Ó1Ð1Ü�‹GˆØ�=Š=˜D×,Ò,Ü1@Ä/ÔSbÔdsÐ1sÑ.ˆDŒG�T”W˜dœg t¤wð ˆð �ZŠZØˆKØ�]Š]Ø12·±°q·t±t¸Q¿T¹TÀ1Ç4Á4Ð1GÑ.ˆDŒG�T”W˜dœg t¤wð ˆô 2AÀÀqÓ1IÑ.ˆDŒG�T”W˜dœg t¤wØˆr)   c                 ó$  — t        |«      dk(  st        d«      ‚t        |«      }|j                  r| S | j                  rI|j                  |j
                  |j                  |j                  f\  | _        | _        | _        | _        | S |j                  rI|j                  |j
                  |j                  |j                  f\  | _        | _        | _        | _        | S | j                  r| S t        | |«      \  | _        | _        | _        | _        | S )z)Restrict to common rect with rect-like r.r8  r  )
r6   r²   r  rœ  rø  rú  r÷  rù  r�  Úutil_intersect_rectr  s     r(   r!  zRect.intersect]9  sÜ   € ä�1‹v˜Š{ÜÐ0Ó1Ð1Ü�‹GˆØ�=Š=ØˆKØ×ÒØ12·±°q·t±t¸Q¿T¹TÀ1Ç4Á4Ð1GÑ.ˆDŒG�T”W˜dœg t¤wð ˆð �ZŠZØ12·±°q·t±t¸Q¿T¹TÀ1Ç4Á4Ð1GÑ.ˆDŒG�T”W˜dœg t¤wð
 ˆð	 �]Š]ØˆKä1DÀTÈ1Ó1MÑ.ˆDŒG�T”W˜dœg t¤wØˆr)   c                 óf  — t        |«      }	 | j                   xr— | j                   xrˆ |j                   xry |j                   xrj | j                  |j                  k  xrO |j                  | j                  k  xr4 | j
                  |j                  k  xr |j
                  | j                  k  S )z4Check if intersection with rectangle x is not empty.)r  r�  rœ  rø  r÷  rú  rù  )r'   r  Úrect2s      r(   Ú
intersectszRect.intersectsn9  s°   € ä�Q“ˆð'ØŸ™Ð%ò'à×(Ñ(Ð(ò'ð Ÿ™Ð&ò'ð ×)Ñ)Ð)ò	'ð
 —G‘G˜eŸh™hÑ&ò'ð —H‘H˜tŸw™wÑ&ò'ð —G‘G˜eŸh™hÑ&ò'ð —H‘H˜tŸw™wÑ&ð		r)   c                 ój   — | j                   | j                  k\  xs | j                  | j                  k\  S ©z True if rectangle area is empty.©rø  r÷  rú  rù  r-   s    r(   r�  zRect.is_empty|9  ó)   € ð �w‰w˜$Ÿ'™'Ñ!Ò7 T§W¡W°·±Ñ%7Ð7r)   c                 ó¦   — | j                   | j                  cxk(  xr	 t        k(  nc xr( | j                  | j                  cxk(  xr	 t
        k(  S c S )z'True if this is the infinite rectangle.©rø  rú  rç  r÷  rù  rè  r-   s    r(   rœ  zRect.is_infinite�9  ó9   € ð �w‰w˜$Ÿ'™'Ö4¤_Ô4Ò^¸¿¹ÀDÇGÁGÖ9^ÌÑ9^Ð^Ñ9^Ð^r)   c                 ój   — | j                   | j                  k  xr | j                  | j                  k  S ©zTrue if rectangle is valid.rV  r-   s    r(   Úis_validzRect.is_valid†9  ó)   € ð �w‰w˜$Ÿ'™'Ñ!Ò8 d§g¡g°·±Ñ&8Ð8r)   c                 óf   — | j                   r
t        «       S | j                  j                  ||«      S ©zGMorph with matrix-like m and point-like p.

        Returns a new quad.©rœ  r  rú  rÚ  ©r'   r�  rm  s      r(   rÚ  z
Rect.morph‹9  ó*   € ð ×ÒÜ “?Ð"Ø�y‰y�‰˜q !Ó$Ð$r)   c           	      ój   — t        j                  t        | D �cg c]  }||z  ‘Œ	 c}«      «      S c c}w r+   rë
  rï
  s     r(   r?  z	Rect.norm“9  rñ
  rò
  c                 óö   — | j                   | j                  k  r#| j                   | j                  c| _        | _         | j                  | j                  k  r#| j                  | j                  c| _        | _        | S )z*Replace rectangle with its finite version.rç  r-   s    r(   r¸  zRect.normalize–9  óW   € à�7‰7�T—W‘WÒØ#Ÿw™w¨¯©ÐˆDŒG�T”WØ�7‰7�T—W‘WÒØ#Ÿw™w¨¯©ÐˆDŒG�T”WØˆr)   c                 ón   — t        | j                  | j                  | j                  | j                  «      S ©z!Return Quad version of rectangle.©r…  r×  r¥  r'  rØ  r-   s    r(   rú  z	Rect.quadž9  ó%   € ô �D—G‘G˜TŸW™W d§g¡g¨t¯w©wÓ7Ð7r)   c                 ó*   — t        t        | «      «      S )zReturn the IRect.)rÒ  Úutil_round_rectr-   s    r(   r  z
Rect.round£9  s   € ä”_ TÓ*Ó+Ð+r)   c                 óB   — t        | j                  | j                  «      S ©zTop-left corner.©rÖ  rø  rú  r-   s    r(   rØ  zRect.top_left§9  r@  r)   c                 óB   — t        | j                  | j                  «      S ©zTop-right corner.©rÖ  r÷  rú  r-   s    r(   rÛ  zRect.top_right¬9  r@  r)   c           	      óš  — t        |«      }| j                  s$| j                  s|j                  s|j                  rt        d«      ‚t	        dddd| j
                   | j                   «      t	        |j                  | j                  z  |j                  | j                  z  «      z  t	        dddd|j
                  |j                  «      z  S ©z+Return matrix that converts to target rect.z'rectangles must be finite and not emptyr   r   ©	r  rœ  r�  r²   rb  rø  rú  rJ  rÅ  r  s     r(   ÚtorectzRect.torect±9  s    € ô �‹GˆØ×Ò˜tŸ}š}°·²ÀÇÂÜÐFÓGÐGä�1�a˜˜A §¡˜x¨$¯'©'¨Ó2Ü�Q—W‘W˜tŸz™zÑ)¨1¯8©8°d·k±kÑ+AÓBñCä�Q˜˜1˜a §¡ q§t¡tÓ,ñ-ð	
r)   c                 ó‚   — t        |«      dk(  st        d«      ‚t        | |«      \  | _        | _        | _        | _        | S )z1Replace with the transformation by matrix-like m.rØ  rõ
  )r6   r²   Úutil_transform_rectrø  rú  r÷  rù  r  s     r(   rá  zRect.transform½9  s;   € ä�1‹v˜Š{ÜÐ2Ó3Ð3Ü-@ÀÀqÓ-IÑ*ˆŒ�”˜$œ' 4¤7Øˆr)   c                 óH   — t        d| j                  | j                  z
  «      S r…   ©rÔ  r÷  rø  r-   s    r(   rJ  z
Rect.widthÄ9  rJ  r)   )2r.   r/   r0   rð
  r÷
  r"  rû
  rÈ  rÿ
  rN  rD  rŠ   r  r  r  r  r6  r  rÚ   r  r   r&  r!  rÜ  rÙ  rF  rÅ  r4  r5  r!  rS  r�  rœ  r]  rÚ  r?  r¸  rú  r  rØ  rÛ  rv  rá  rJ  r>  r'  rØ  r  r×  r¥  r,   r)   r(   r  r  ²8  s—  „ ò9ò
Tòò1òò"4ò
7ò!ð "&¨$°4¸DÀTÈdô ò&òò<ò1ò*òò)òòTòð ñ'ó ð'ð ñ'ó ð'ò$ð ñ)ó ð)òòòò"ð ñ8ó ð8ð ñ_ó ð_ð ñ9ó ð9ò%ò3òð ñ8ó ð8ò,ð ñ'ó ð'ð ñ'ó ð'ò

òð ñ)ó ð)ð €Gà	€BØ	€BÙ�U‹O€EØ	€BØ	�Br)   r  c            +       óæ  — e Zd ZdZed„ «       Zdefd„Zd„ Zde	de	de
fd	„Zd
ede
fd„Zde	de	de	de	de
f
d„Zdej                   eef   de
fd„Zde	dede
fd„Zde	de	de	de
fd„Z	 dGde	de	dedede
f
d„Zddœdede
fd„Zdede
fd„Z	 dHde	de	dede
fd „Z	 dHde	de	de
fd!„Zd"dd#dd$d$ddd$d%d&d$dd&d&d$d'œde	d(ej                   eef   d)ed*ed+ed,ed-ed.e d/e!d0e!d1e d2ed3ed4e d5e!d6ed7ed8e de f&d9„Z"d#dd"dd$d$ddd&d%d&d$d$d$dd&d&d$d:œded(ej                   eef   d+ed,ed)ed*ed-ed.e d/e!d0e!d;e d2ed3ed<e d1e d4e d5e!d6ed7ed8e def*d=„Z#	 	 	 	 	 	 	 	 	 	 	 	 dId>ed/e!d0e!d?e d@e dAedBed5e!dCed7ed6ed8e ddfdD„Z$dGdEeddfdF„Z%y)Jr}  zCreate a new shape.c                 óB  — t        || z
  «      j                  }t        j                  t	        |j
                  «      «      }|j                  dk  r:|j
                  dk  rt        j                  |z
   }|S t        j                  |z
  }|S |j
                  dk\  r	 |S | }|S )zÞReturn the angle to the horizontal for the connection from C to P.
        This uses the arcus sine function and resolves its inherent ambiguity by
        looking up in which quadrant vector S = P - C is located.
        r   )rÖ  rÝ  rì
  ÚasinrÙ  r  r  Úpi)rÓ  r¦  rÿ  Úalfas       r(   Úhorizontal_anglezShape.horizontal_angleÔ9  s•   € ô �!�a‘%‹L×ÑˆÜ�y‰yœ˜QŸS™S›Ó"ˆØ�3‰3�Š7Ø�s‰s�aŠxÜŸ™ 4™Ð(�ð ˆô —w‘w ‘~�ð ˆð	 �s‰s�aŠxØð ˆð �u�Øˆr)   rÅ   c                 óð  — t        |«       || _        |j                  | _        | j                  j                  st        d«      ‚|j                  j                  | _        |j                  j                  | _
        |j                  j                  | _	        |j                  j                  | _        |j                  | _        | j                   | _        d| _        d| _        d| _        d | _        d | _        y )NrÊ  rZ   )rS  rÅ   rÖ   r  rÌ  r²   r{  r  rÅ  r  rJ  rT  rX  ÚpctmÚipctmrï  Ú	text_contÚ	totalcontrî  rä   r  s     r(   rŠ   zShape.__init__è9  s»   € Ü�DÔØˆŒ	Ø—;‘;ˆŒØ�x‰x�ŠÜ˜[Ó)Ð)Ø×(Ñ(×*Ñ*ˆŒØ×'Ñ'×)Ñ)ˆŒ
Ø×&Ñ&×(Ñ(ˆŒØ×&Ñ&×(Ñ(ˆŒà×.Ñ.ˆŒ	Ø—i‘i�ZˆŒ
àˆŒØˆŒØˆŒØˆŒØˆ�	r)   c                 óX  — | j                   €1t        |«      dk(  rt        ||«      | _         y t        |«      | _         y t        |«      dk(  rðt        |«      }t	        | j                   j
                  |j                  «      | j                   _        t	        | j                   j                  |j                  «      | j                   _        t        | j                   j                  |j                  «      | j                   _
        t        | j                   j                  |j                  «      | j                   _        y t        |«      }t	        | j                   j
                  |j
                  «      | j                   _        t	        | j                   j                  |j                  «      | j                   _        t        | j                   j                  |j                  «      | j                   _
        t        | j                   j                  |j                  «      | j                   _        y rÂ  )rä   r6   r  rÖ  r«  rø  r  rú  r  rÔ  r÷  rù  r’  s     r(   Ú
updateRectzShape.updateRectü9  s>  € Ø�9‰9ÐÜ�1‹v˜Š{Ü   A›J�•	ä  ›G�•	ô �1‹v˜Š{Ü˜!“H�Ü" 4§9¡9§<¡<°·±Ó5�—	‘	”Ü" 4§9¡9§<¡<°·±Ó5�—	‘	”Ü" 4§9¡9§<¡<°·±Ó5�—	‘	”Ü" 4§9¡9§<¡<°·±Ó5�—	‘	•ä˜“G�Ü" 4§9¡9§<¡<°·±Ó6�—	‘	”Ü" 4§9¡9§<¡<°·±Ó6�—	‘	”Ü" 4§9¡9§<¡<°·±Ó6�—	‘	”Ü" 4§9¡9§<¡<°·±Ó6�—	‘	•r)   r÷  rø  rÀ  c                 ó   — t        |«      }t        |«      }| j                  |k(  sO| xj                  t        t	        || j
                  z  «      «      dz   z  c_        || _        | j                  |«       | xj                  t        t	        || j
                  z  «      «      dz   z  c_        | j                  |«       || _        | j                  S )zDraw a line between two points.ú m
ú l
)rÖ  rî  rï  r£   r£  rƒ  r‡  )r'   r÷  rø  s      r(   r~  zShape.draw_line:  sš   € ä�2‹YˆÜ�2‹YˆØ—‘ 2Ò%Ø�NŠNœi¬°°d·j±j±Ó(AÓBÀVÑKÑK�NØ ˆDŒOØ�O‰O˜BÔà�Šœ)¤H¨R°$·*±*©_Ó$=Ó>ÀÑGÑG�Ø�‰˜ÔØˆŒØ�‰Ðr)   rö  c           
      óä  — t        |«      D ]Ä  \  }}|dk(  ri| j                  t        |«      k(  s‘| xj                  t	        t        t        |«      | j                  z  «      «      dz   z  c_        t        |«      | _        n@| xj                  t	        t        t        |«      | j                  z  «      «      dz   z  c_        | j                  |«       ŒÆ t        |d   «      | _        | j                  S )z%Draw several connected line segments.r   r‰  rŠ  r…  )rã  rî  rÖ  rï  r£   r£  rƒ  r‡  )r'   rö  rL  r�  s       r(   r‚  zShape.draw_polyline:  s´   € ä˜fÖ%‰DˆAˆqØ�AŠvØŸ™¬5°«8Ò3Ø—N’N¤i´¼¸q»ÀDÇJÁJÑ9NÓ0OÓ&PÐSYÑ&YÑY•NÜ&+¨A£h�D•Oà—’¤)¬H´U¸1³XÀÇ
Á
Ñ5JÓ,KÓ"LÈvÑ"UÑU•Ø�O‰O˜AÕð &ô    r¡
Ó+ˆŒØ�‰Ðr)   rk  rl  c                 ó|  — t        |«      }t        |«      }t        |«      }t        |«      }| j                  |k(  s7| xj                  t        t	        || j
                  z  «      «      dz   z  c_        t	        t        || j
                  z  «      t        || j
                  z  «      z   t        || j
                  z  «      z   «      }| xj                  t        |«      dz   z  c_        | j                  |«       | j                  |«       | j                  |«       | j                  |«       || _        | j                  S )z#Draw a standard cubic Bezier curve.r‰  ú c
)rÖ  rî  rï  r£   r£  rƒ  r¡   r‡  )r'   r÷  rø  rk  rl  rä  s         r(   rt  zShape.draw_bezier-:  sï   € ô �2‹YˆÜ�2‹YˆÜ�2‹YˆÜ�2‹YˆØ—‘ 2Ò%Ø�NŠNœi¬°°d·j±j±Ó(AÓBÀVÑKÑK�NÜœ˜R $§*¡*™_Ó-´°R¸$¿*¹*±_Ó0EÑEÌÈRÐRV×R\ÑR\É_ÓH]Ñ]Ó^ˆØ�Šœ) D›/¨FÑ2Ñ2�Ø�‰˜ÔØ�‰˜ÔØ�‰˜ÔØ�‰˜ÔØˆŒØ�‰Ðr)   Útetrac                 óº  — t        |«      dk7  rt        d«      ‚t        |d   d«      rt        |«      j                  }nt        |«      }|j                  |j                  |j                  z
  dz  z   }|j                  |j                  |j                  z
  dz  z   }|j                  |j                  |j                  z
  dz  z   }|j                  |j                  |j                  z
  dz  z   }| j                  |k(  s>| xj                  t        t        || j                  z  «      «      dz   z  c_        || _
        | j                  ||j                  |«       | j                  ||j                  |«       | j                  ||j                  |«       | j                  ||j                  |«       | j!                  |j"                  «       || _
        | j                  S )z"Draw an ellipse inside a tetrapod.r8  zinvalid arg lengthr   rW  r#  r‰  )r6   r²   r9   r  rú  r…  r”  r
  r	  r  rî  rï  r£   r£  rƒ  r{  r‡  rä   )r'   rŽ  r*  ÚmtÚmrrÍ  Úmls          r(   r€  zShape.draw_ovalD:  sd  € äˆu‹:˜Š?ÜÐ1Ó2Ð2Ü�5˜‘8˜[Ô)Ü�U“× Ñ ‰Aä�U“ˆAà�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'ˆØ—‘ 2Ò%Ø�NŠNœi¬°°d·j±j±Ó(AÓBÀVÑKÑK�NØ ˆDŒOØ�‰˜˜AŸD™D "Ô%Ø�‰˜˜AŸD™D "Ô%Ø�‰˜˜AŸD™D "Ô%Ø�‰˜˜AŸD™D "Ô%Ø�‰˜Ÿ™ÔØˆŒØ�‰Ðr)   r.  ru  c                 óx   — |t         kD  st        d«      ‚t        |«      }||dfz
  }| j                  ||dd¬«      S )rw  úradius must be positiver   r¡  Fr‹  )r-  r²   rÖ  rŒ  )r'   r.  ru  r÷  s       r(   ry  zShape.draw_circle\:  sG   € àœÒÜÐ6Ó7Ð7Ü�v“ˆØ�v˜q�kÑ!ˆØ×Ñ ¨¨C¸EÐÓBÐBr)   c                 óœ   — d}t        |«      }t        |«      }t        |«      }|||z
  |z  z   }|||z
  |z  z   }| j                  ||||«      S )z4Draw a curve between points using one control point.ç7.SQ¬á?)rÖ  rt  )r'   r÷  rø  rk  ÚkappaÚk1Úk2s          r(   r{  zShape.draw_curved:  sa   € ð ˆÜ�2‹YˆÜ�2‹YˆÜ�2‹YˆØ�2˜‘7˜eÑ#Ñ#ˆØ�2˜‘7˜eÑ#Ñ#ˆØ×Ñ  B¨¨BÓ/Ð/r)   r  rˆ  r‰  c                 óR  — t        |«      }t        |«      }d„ }d„ }d„ }t        j                  | «      }t        j                  t        j                  d|«      «      dz  }	t        j                  t        j                  d|«      «      }
|
dz  }t	        |«      dt        j
                  z  kD  r%||	z  }t	        |«      dt        j
                  z  kD  rŒ%| j                  |k(  s5| xj                   |t        || j                  z  «      Ž z  c_        || _        t        dd«      }|}|}||z
  }t	        |«      }|t        kD  st        d	«      ‚| j                  ||«      }t	        |«      t	        |
«      kD  �rÆ|j                  t        j                  ||
z   «      |z  z   }|j                  t        j                   ||
z   «      |z  z   }t        ||«      }|j                  t        j                  ||z   «      |z  t        j                  |«      z  z   }|j                  t        j                   ||z   «      |z  t        j                  |«      z  z   }t        ||«      }d
t        j                  |«      z
  dz  dz  t	        ||z
  «      z  }|t	        ||z
  «      z  }|||z
  |z  z   }|||z
  |z  z   }| xj                   |t        t#        || j                  z  «      t#        || j                  z  «      z   t#        || j                  z  «      z   «      Ž z  c_        ||
z  }||
z  }|}t	        |«      t	        |
«      kD  r�ŒÆt	        |«      dkD  �r¿|dz  }|j                  t        j                  ||z   «      |z  z   }|j                  t        j                   ||z   «      |z  z   }t        ||«      }|j                  t        j                  ||z   «      |z  t        j                  |«      z  z   }|j                  t        j                   ||z   «      |z  t        j                  |«      z  z   }t        ||«      }d
t        j                  |«      z
  dz  dz  t	        ||z
  «      z  }|t	        ||z
  «      z  d
t        j                  |«      z
  z  }|||z
  |z  z   }|||z
  |z  z   }| xj                   |t        t#        || j                  z  «      t#        || j                  z  «      z   t#        || j                  z  «      z   «      Ž z  c_        |rŠ| xj                   |t        || j                  z  «      Ž z  c_        | xj                   |t        || j                  z  «      Ž z  c_        | xj                   |t        || j                  z  «      Ž z  c_        || _        | j                  S )zDraw a circle sector.c                 ó"   — t        | |f«      dz   S )Nr‰  ©r£   ©r    r{
  s     r(   rL	  z#Shape.draw_sector.<locals>.<lambda>}:  ó   € œ) Q¨ FÓ+¨fÒ4r)   c                 ó*   — t        | |||||f«      dz   S )Nr�  rœ  r  s         r(   rL	  z#Shape.draw_sector.<locals>.<lambda>~:  s   € ¤i°°A°q¸!¸QÀÐ0BÓ&CÀfÒ&Lr)   c                 ó"   — t        | |f«      dz   S )NrŠ  rœ  r�  s     r(   rL	  z#Shape.draw_sector.<locals>.<lambda>:  rž  r)   r¡  r…  r¢  r   r   r”  r   r8  r   çü©ñÒMbP?)rÖ  rì
  r  ÚcopysignrÙ  r~  rî  rï  r£  rƒ  r-  r²   r€  r  r  r  r  r¡   )r'   r.  r  rˆ  r‰  Úl3Úl4Úl5ÚbetarÚw360Úw90Úw45rã   rÓ  r¦  rÿ  r0  r  Úq1Úq2rè  ré  rÑ  Úkappahr—  Úcp1Úcp2Úbeta2s                               r(   rŒ  zShape.draw_sectors:  sÆ  € ô �v“ˆÜ�e“ˆÙ4ˆÙLˆÙ4ˆÜ—‘˜d˜UÓ#ˆÜ�|‰|œDŸM™M¨#¨uÓ5Ó6¸"Ñ=ˆÜ�l‰lœ4Ÿ=™=¨¨UÓ3Ó4ˆØ�A‰gˆÜ�%‹j˜1œtŸw™w™;Ò&Ø�T‰MˆEô �%‹j˜1œtŸw™w™;Ó&à—‘ 5Ò(Ø�NŠN™b¤(¨5°4·:±:Ñ+=Ó">Ð?Ñ?�NØ#ˆDŒOÜ�!�Q‹KˆØˆØˆØ�‰EˆÜ�!‹fˆà”WŠ}ÜÐ6Ó7Ð7à×$Ñ$ V¨UÓ3ˆÜ�%‹jœ3˜s›8Ó#Ø—‘”t—x‘x  s¡
Ó+¨cÑ1Ñ1ˆBØ—‘”t—x‘x  s¡
Ó+¨cÑ1Ñ1ˆBÜ�b˜"“ˆAØ—‘”t—x‘x  s¡
Ó+¨cÑ1´D·H±H¸S³MÑAÑAˆBØ—‘”t—x‘x  s¡
Ó+¨cÑ1´D·H±H¸S³MÑAÑAˆBÜ�b˜"“ˆAØœ$Ÿ(™( 3›-Ñ'¨1Ñ,¨qÑ0´3°q¸1±u³:Ñ=ˆFØœS  Q¡›ZÑ'ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØ�NŠN™b¤(Ü�S˜4Ÿ:™:Ñ%Ó&¬¨c°D·J±JÑ.>Ó)?Ñ?Ä$ÀqÈ4Ï:É:Á~ÓBVÑVó#ð ñ �Nð �S‰LˆEØ�C‰KˆDØˆAô# �%‹jœ3˜s›8Ô#ô& ˆu‹:˜ÓØ˜A‘IˆEØ—‘”t—x‘x  u¡Ó-°Ñ3Ñ3ˆBØ—‘”t—x‘x  u¡Ó-°Ñ3Ñ3ˆBÜ�b˜"“ˆAØ—‘”t—x‘x  u¡Ó-°Ñ3´d·h±h¸u³oÑEÑEˆBØ—‘”t—x‘x  u¡Ó-°Ñ3´d·h±h¸u³oÑEÑEˆBÜ�b˜"“ˆAàœ$Ÿ(™( 5›/Ñ)¨QÑ.°Ñ2´S¸¸Q¹³ZÑ?ˆFØœS  Q¡›ZÑ'¨1¬t¯x©x¸«Ñ+>Ñ?ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØ�NŠN™b¤(Ü�S˜4Ÿ:™:Ñ%Ó&¬¨c°D·J±JÑ.>Ó)?Ñ?Ä$ÀqÈ4Ï:É:Á~ÓBVÑVó#ð ñ �Nñ Ø�NŠN™b¤(¨5°4·:±:Ñ+=Ó">Ð?Ñ?�NØ�NŠN™b¤(¨6°D·J±JÑ+>Ó"?Ð@Ñ@�NØ�NŠN™b¤(¨1¨t¯z©z©>Ó":Ð;Ñ;�NØˆŒØ�‰Ðr)   Nr‡  rä   c          
      ó€  — t        |«      }|€‘| xj                  t        t        t	        |j
                  | j                  z  «      |j                  |j                  gz   «      «      dz   z  c_        | j                  |«       |j                  | _        | j                  S t        |d«      rE|dk  s|dkD  rt        d|› d�«      ‚t        |j                  |j                  «      |z  }|df}d|f}n}t        |d«      rbt        |«      dk(  rT|\  }}||j                  z  df}d||j                  z  f}t        ||«      dk  st!        ||«      dkD  rt        d|› d�«      ‚t        d|› d�«      ‚| j#                  |j                  |z   |j
                  |z
  «      }	| j%                  |	|j
                  |j
                  |z   «      }	| j#                  |	|j&                  |z
  «      }	| j%                  |	|j&                  |j&                  |z
  «      }	| j#                  |	|j(                  |z   «      }	| j%                  |	|j(                  |j(                  |z
  «      }	| j#                  |	|j                  |z   «      }	| j%                  |	|j                  |j                  |z   «      | _        | j                  |«       | j                  S )	að  Draw a rectangle.

        Args:
            radius: if not None, the rectangle will have rounded corners.
                This is the radius of the curvature, given as percentage of
                the rectangle width or height. Valid are values 0 < v <= 0.5.
                For a sequence of two values, the corners will have different
                radii. Otherwise, the percentage will be computed from the
                shorter side. A value of (0.5, 0.5) will draw an ellipse.
        z re
rW  r   r#  zbad radius value r   r  r   )r  rï  r£   r£  r¡   r'  rƒ  rJ  rÅ  r‡  r×  rî  r9   r²   r«  r6   rÔ  r~  r{  rØ  r¥  )
r'   rä   ru  r  rõ  rK  ÚpyÚrxÚryr\  s
             r(   r.  zShape.draw_rect½:  sX  € ô �‹JˆØˆ>Ø�NŠNœi¬Ü�Q—T‘T˜DŸJ™JÑ&Ó'¨1¯7©7°A·H±HÐ*=Ñ=ó)ó àññ �Nð �O‰O˜AÔØŸd™dˆDŒOØ—?‘?Ð"ô �6˜;Ô'Ø˜Š{˜f sšlÜ Ð#4°V°H¸AÐ!>Ó?Ð?Ü�A—G‘G˜QŸX™XÓ&¨Ñ/ˆAØ�Q�ˆBØ�Q�‰BÜ�V˜YÔ'¬C°«K¸1Ò,<Ø‰FˆB�Ø�q—w‘w‘, Ð"ˆBØ�R˜!Ÿ(™(‘]Ð#ˆBÜ�2�r‹{˜aÒ¤3 r¨2£;°Ò#4Ü Ð#4°V°H¸AÐ!>Ó?Ð?äÐ0°°¸Ð:Ó;Ð;à�^‰^˜AŸD™D 2™I q§t¡t¨b¡yÓ1ˆØ�_‰_˜R §¡ q§t¡t¨b¡yÓ1ˆà�^‰^˜B §¡ r¡	Ó*ˆØ�_‰_˜R §¡ q§t¡t¨b¡yÓ1ˆà�^‰^˜B §¡ r¡	Ó*ˆØ�_‰_˜R §¡ q§t¡t¨b¡yÓ1ˆà�^‰^˜B §¡ r¡	Ó*ˆØŸ/™/¨"¨a¯d©d°A·D±D¸2±IÓ>ˆŒà�‰˜ÔØ�‰Ðr)   rú  c                 ó¨   — t        |«      }| j                  |j                  |j                  |j                  |j
                  |j                  g«      S )zDraw a Quad.)r…  r‚  r”  r  r	  r
  )r'   rú  r*  s      r(   r„  zShape.draw_quadð:  s;   € ä�‹JˆØ×!Ñ! 1§4¡4¨¯©¨q¯t©t°Q·T±T¸1¿4¹4Ð"@ÓAÐAr)   r�  c                 óÊ  — t        |«      }t        |«      }||z
  }t        |«      }dt        t        |d|z  z  d«      «      z  }|dk  rt	        d«      ‚||z  }t        t        ||«      «      }| }	g }
t        d|«      D ]G  }|dz  dk(  rt        |d«      |z  }n|dz  dk(  rt        |d«      |z  }nŒ4|
j                  ||	z  «       ŒI | j                  |g|
z   |gz   «       |S )z%Draw a zig-zagged line from p1 to p2.r8  r   úpoints too closer   r…  r   )
rÖ  rÙ  r3   r  r²   rb  r  r8  ri   r‚  )r'   r÷  rø  r�  rÿ  r0  r!  rÍ  rÆ  Úi_matrö  rL  r�  s                r(   r“  zShape.draw_zigzagõ:  sû   € ô �2‹YˆÜ�2‹YˆØ�‰GˆÜ�!‹fˆØ”#”e˜C 1 w¡;Ñ/°Ó3Ó4Ñ4ˆØ�Š7ÜÐ/Ó0Ð0Ø�3‰YˆÜœ¨¨BÓ/Ó0ˆØ�ˆØˆÜ�q˜#–ˆAØ�1‰u˜ŠzÜ˜!˜R“L 2Ñ%‘Ø�Q‘˜!’Ü˜!˜Q“K "Ñ$‘àØ�M‰M˜!˜e™)Õ$ð ð 	×Ñ˜B˜4 &™=¨B¨4Ñ/Ô0Øˆ	r)   c                 óX  — t        |«      }t        |«      }||z
  }t        |«      }dt        t        |d|z  z  d«      «      z  }|dk  rt	        d«      ‚||z  }t        t        ||«      «      }| }	d}
g }t        d|«      D ]V  }|dz  dk(  rt        ||
 «      |z  }n'|dz  dk(  rt        ||
«      |z  }nt        |d«      |z  }|j                  ||	z  «       ŒX |g|z   |gz   }t        |«      }d}|dz   |k  r0| j                  ||   ||dz      ||dz      «       |dz  }|dz   |k  rŒ0|S )z#Draw a squiggly line from p1 to p2.r8  r   r¶  gh¼?3OP@r   r   r   )rÖ  rÙ  r3   r  r²   rb  r  r8  ri   r6   r{  )r'   r÷  rø  r�  rÿ  r0  r!  rÍ  rÆ  r·  r�  rö  rL  r�  s                 r(   r�  zShape.draw_squiggle;  s[  € ô �2‹YˆÜ�2‹YˆØ�‰GˆÜ�!‹fˆØ”#”e˜C 1 w¡;Ñ/°Ó3Ó4Ñ4ˆØ�Š7ÜÐ/Ó0Ð0Ø�3‰YˆÜœ¨¨BÓ/Ó0ˆØ�ˆØˆàˆÜ�q˜#–ˆAØ�1‰u˜ŠzÜ˜!˜a˜R“L 2Ñ%‘Ø�Q‘˜!’Ü˜!˜Q“K "Ñ$‘ä˜!˜Q“K "Ñ$�Ø�M‰M˜!˜e™)Õ$ð ð �˜‘ " Ñ%ˆÜ�&‹kˆØˆØ�!‰e�cŠkØ�O‰O˜F 1™I v¨a°!©e¡}°f¸QÀ¹U±mÔDØ�‰FˆAð �!‰e�c‹kð ˆ	r)   rê  r&
  r   rc  r   )rç   r\  ræ   r7  r¯  rØ  rô  rè   re  ro  rd  rE  rÚ  rp  rq  r³  r«  rç   r\  ræ   r7  r¯  rØ  rô  rè   re  ro  rd  rE  rÚ  rp  rq  r³  c          
      ó²	  — t        |«      syt        |«      t        t        fvr|j	                  «       }n|}t        |«      dkD  syt        |«      }	 t        dj                  |«      D �cg c]  }t        |«      ‘Œ c}«      }|}|j                  d«      r|dd  }| j                  j                  ||||¬«      }t        | j                   |«      }|d   }|d   }|d   }|d   }|d	   }|d
   }|r||z  }n||z
  dk  r|dz  }n|||z
  z  }|dkD  r | j                   j#                  ||dz   «      } n|d   } g }!|D ]*  }"|r|dvrd }#n| }#|!j%                  t'        |"|#||«      «       Œ, |!}t)        |	d«      }$t)        |
d«      }%|
s|dk(  r|	}
t)        |	d«      }%t+        |«      }&|}'|'dz  dk7  rt-        d«      ‚|'dk  r|'dz  }'|'dk  rŒ|'dz  }'d„ }(d„ })d}*d}+d},| j.                  }-| j0                  }.|&rkt3        dddd|d   j4                  | j4                  z   |-|d   j6                  z
  | j6                  z
  «      }/|/ |d   z  |/z  }0t9        t;        |0«      «      dz   }1nd}1|-|j6                  z
  | j6                  z
  }2|j4                  | j4                  z   }3|2}4|'dk(  rJ|-|j6                  z
  | j6                  z
  }3|j4                   | j4                  z
  }2|1|*z  }1|.t=        |2«      z
  }4n¯|'dk(  rG|- |j6                  z   | j6                  z   }3|j4                  | j4                  z   }2|1|+z  }1t=        |2«      }4nc|'dk(  r^|j4                   | j4                  z
  }3|- |j6                  z   | j6                  z   }2|1|,z  }1t=        |j6                  | j6                  z   «      }4| j                  j?                  |«      }5|5�d|5z  }6d}7ndx}6}7| j                  jA                  ||¬«      }8|8€d}8nd |8z  }8 |(|6|8|1|3|2||«      }9|dkD  r/|9d!|z  z  }9|9t9        ||z  «      d"z   z  }9|�|9t9        |«      d#z   z  }9|	�|9|$z  }9|
�|9|%z  }9|9|d   z  }9d}:t        |«      dkD  r|9 |)|«      z  }9n|9d$z  }9tC        dt        |«      «      D ](  };|4|k  r n!|;dkD  r|9d%z  }9|9||;   d$z   z  }9|4|z  }4|:dz  }:Œ* |9d&|7z  z  }9| xjD                  |9z  c_"        |:S c c}w # t        $ r t        «        Y yw xY w)'Nr   r    r"  r   ©ræ   r7  rØ  r¯  rþ  r  r   r  r  r"  r¥	  r'  ©r&  r%  r©  r¸  r¢  r[  r¡  c                 óR   — d| › |› d|› dt        ||f«      › d|› dt        |«      › d�S )Nr}  úBT
ú1 0 0 1 z Tm
/r    ú Tf rœ  ©r    r{
  r©  rõ  rM  r¸  r—  s          r(   rL	  z#Shape.insert_text.<locals>.<lambda>˜;  sC   € ¨u°Q°C¸°s¸$¸q¸cÀÌ)ÐUVÐXYÐTZÓJ[ÐI\Ð\bÐcdÐbeÐefÔgpÐqrÓgsÐftÐtxÑ-yr)   c                 ó    — dt        | «      › d�S )NzTJ
0 -z TD
rœ  ©r    s    r(   rL	  z#Shape.insert_text.<locals>.<lambda>™;  s   € ˜W¤Y¨q£\ N°%Ñ8r)   ú0 1 -1 0 0 0 cm
ú0 -1 1 0 0 0 cm
ú-1 0 0 -1 0 0 cm
ú cm
rZ   rÛ  rJ  ú/OC /%s BDC
úEMC
rI  ú/%s gs
ú%i Tr ú w ú M ÚTJz
T* z
ET
%sQ
)#r%  r·   r¡   r¢   rÈ  r6   rÖ  rÔ  rÆ  rn
  re   rt   r2   rÅ   r;  r(  r  r2  ri   ÚgetTJstrr±  Ú
CheckMorphr²   rÅ  rJ  rb  r  r  r£   r£  rÙ  rj  rÆ  r8  r„  )<r'   r  r«  rç   r\  ræ   r7  r¯  rØ  rô  rè   re  ro  rd  rE  rÚ  rp  rq  r³  r   r©  Úmaxcoderã  rý   r-  r  rþ  r  rü  r  r  Úlheightr'  Útabr5  r—  Ú	color_strÚfill_strÚmorphingr@  Útempl1Útempl2Úcmp90Úcmm90Úcm180rÅ  rJ  r  rc  rÖ  rt	  rù  ÚspaceÚoptcontÚbdcÚemcrÉ  r¬  ÚnlinesrL  s<                                                               r(   r  zShape.insert_text:;  ss  € ô0 �FŒ|Øä�‹<¤¤e˜}Ñ,Ø×$Ñ$Ó&‰DàˆDä�4‹y˜1Š}Øä�e“ˆð	Ü¨3¯8©8°D¬>Ó:©> aœ3˜q�6¨>Ñ:Ó;ˆGð ˆØ×Ñ˜CÔ Ø˜!˜"�IˆEà�y‰y×$Ñ$Ø X¸ÈZð %ó 
ˆô ! §¡¨4Ó0ˆà˜A‘;ˆØ˜JÑ'ˆØ˜(Ñ#ˆØ˜&Ñ!ˆØ˜JÑ'ˆØ˜[Ñ)ˆ	ÙØ Ñ+‰GØ˜	Ñ! QÒ&Ø ‘n‰Gà (¨YÑ"6Ñ7ˆGà�SŠ=Ø—X‘X×-Ñ-¨d°G¸a±KÓ@‰Fà˜hÑ'ˆFàˆÛˆAÙ˜&Ð(BÑBØ‘à�Ø�J‰J”x  1 f¨hÓ7Õ8ð ð ˆä˜e SÓ)ˆ	Ü˜T 3Ó'ˆÙ˜ qÒ(ØˆDÜ  ¨Ó,ˆHä˜eÓ$ˆØˆØ�‰8�qŠ=ÜÐ/Ó0Ð0à�AŠgØ�3‰JˆCð �A‹gà�C‰iˆáyˆÙ8ˆØ#ˆØ#ˆØ$ˆØ—‘ˆØ—
‘
ˆñ Ü˜˜1˜a  E¨!¡H§J¡J°·±Ñ$7¸À%ÈÁ(Ç*Á*Ñ9LÈtÏvÉvÑ9UÓVˆBØ�#˜˜a™‘. 2Ñ%ˆCÜœ8 C›=Ó)¨GÑ3‰BàˆBØ�u—w‘wÑ §¡Ñ'ˆØ�w‰w˜Ÿ™ÑˆØˆà�"Š9Ø˜EŸG™GÑ# d§f¡fÑ,ˆDØ—7‘7�(˜TŸV™VÑ#ˆCØ�%‰KˆBØœC ›HÑ$‰Eð �CŠZØ�7˜UŸW™WÑ$ t§v¡vÑ-ˆDØ—'‘'˜DŸF™FÑ"ˆCØ�%‰KˆBÜ˜“H‰Eð �CŠZØ—G‘G�8˜dŸf™fÑ$ˆDØ�'˜EŸG™GÑ# d§f¡fÑ,ˆCØ�%‰KˆBÜ˜Ÿ™ $§&¡&Ñ(Ó)ˆEð —)‘)×1Ñ1°"Ó5ˆØÐØ! GÑ+ˆCØ‰CàˆNˆC�#à—	‘	×&Ñ&¨.¸\Ð&ÓJˆØˆ=Ø‰Eà Ñ&ˆEÙ�c˜5 " d¨C°¸ÓAˆà˜Š?Ø�H˜{Ñ*Ñ*ˆDØ”I˜l¨XÑ5Ó6¸Ñ>Ñ>ˆDØÐ&Øœ	 +Ó.°Ñ6Ñ6�ØÐØ�IÑˆDØÐØ�HÑˆDð
 	��Q‘‰ˆØˆÜˆt‹9�qŠ=Ø‘F˜7“OÑ#‰Dà�D‰LˆDÜ�qœ#˜d›)Ö$ˆAØ�wŠÙØ�1ŠuØ˜‘�Ø�D˜‘G˜d‘NÑ"ˆDØ�WÑˆEØ�a‰K‰Fð %ð 	� Ñ#Ñ#ˆð 	�Š˜$Ñ�Øˆùòg ;øÜò 	ÜÔÙð	ús$   ÁS  Á*R;Á<S  Ò;S  Ó SÓS)ræ   r7  rç   r\  r¯  rØ  rô  rè   rg  ro  rd  rþ   re  rE  rÚ  rp  rq  r³  rg  rþ   c          
      óR  ‡‡P‡Q— t        |«      }|j                  s|j                  rt        d«      ‚t	        |	d«      }t	        |
d«      }|
€|dk(  r|	}
t	        |	d«      }| j
                  j                  |«      }|�d|z  }d}ndx}}| j
                  j                  ||¬	«      }|€d}nd
|z  }|dz  dk7  rt        d«      ‚|}|dk  r|dz  }|dk  rŒ|dz  }t        |«      s|dv r|j                  S |j                  S d}d}d}| j                  }|} | j                  d«      r| dd } | j
                  j                  | |||¬«      }!t        | j                  |!«      }"|"d   }#|#d   ŠQ|#d   }$|#d   ŠP|#d   }%|#d   }&|#d   }'|r|}(n|&|'z
  dk  rd}(n|&|'z
  }(‰|(z  })t        |«      t         t"        fv rdj%                  |«      }*n|}*t'        |*D �+cg c]  }+t)        |+«      ‘Œ c}+«      },|$r4|,dkD  r/dj%                  |*D �+cg c]  }+t)        |+«      dk  r|+nd‘Œ c}+«      }*|*j+                  «       }*| j                  j-                  |!|,dz   «      ŠP|$r|%d vrd}-n‰P}-ˆˆPˆQfd!„}.‰Qdk  r‰Pd"   d   ‰z  }/n‰}/d}0t/        |«      rut1        dddd|d   j2                  | j2                  z   | j                  |d   j4                  z
  | j4                  z
  «      }1|1 |d   z  |1z  }2t7        t9        |2«      «      d#z   }3nd}3d}4t;        d‰|&z  «      }5|dk(  r(|j<                  |5z   }6|j                  }7|j                  }8nÃ|dk(  r<t;        ‰|&z  d«      }5|j>                  |5z   }6|j                  }7|j                  }8|3|z  }3n‚|d$k(  r?t;        d‰|&z  «       }5|j@                  |5z   }6|j                  }7d%}4|j                  }8|3|z  }3n>t;        ‰|&z  d«       }5|jB                  |5z   }6|j                  }7d%}4|j                  }8|3|z  }3g }9tE        |*«      D �]I  \  }:};|;jG                  |«      jI                  d&«      }<tK        |<«      }=d}>|7}?tM        |=«      D ]È  }@|<|@   }A |.|A«      }B|?|Bk\  r|>Ad&z   z  }>|?B|/z   z  }?Œ&|>r)|>jO                  «       dz   }>|0|>z  }0|9jQ                  d'«       d}>|7}?B|7k  rAd&z   }>|7Bz
  |/z
  }?ŒhtK        |9«      dkD  rd(|9d%<   AD ]9  }+ |.|>«      |7 |.|+«      z
  k  r|>|+z  }>Œ|>dz  }>|0|>z  }0|9jQ                  d(«       |+}>Œ; |>d&z  }>|7 |.|>«      z
  }?ŒÊ |>r$|0|>jO                  «       z  }0|9jQ                  d(«       |:tK        |*«      dz
  k  s�ŒE|0dz  }0�ŒL |0jS                  d«      r|0dd% }0|0jU                  d«      dz   }C|)|Cz  |'‰z  z
  }D|D|8z
  }E|EtV        kD  rd%Ez  S tY        E«      }E|EtV        k  rd}Ed)|›|›d*�|3z   }Fd+„ }G|0j+                  «       }Hd(|9d%<   tE        |H«      D �]  \  }:}Id}J|7 |.|I«      z
  }K|6|5|:|(z  z  z   }L|dk(  r0|dv rLt;        Kd,z  d«      |4z  z   }LnmLt;        dKd,z  «      |4z  z
  }LnW|d,k(  r*|dv rLt;        Kd«      |4z  z   }Ln;Lt;        dK«      |4z  z
  }Ln(|d-k(  r#IjU                  d&«      }M|MdkD  r|9|:   rKMz  }Jnd}J|Lj4                  z
  | j4                  z
  }N|Lj2                  | j2                  z   }O|dk(  r7|Lj4                  z
  | j4                  z
  }O|Lj2                   | j2                  z
  }Nnx|d.k(  r7| Lj4                  z   | j4                  z   }O|Lj2                  | j2                  z   }Nn<|d$k(  r7Lj2                   | j2                  z
  }O| |Lj4                  z   | j4                  z   }NF GON| ‰«      z  }F|dkD  r/Fd/|z  z  }F|Ft7        |‰z  «      d0z   z  }F|�Ft7        |«      d1z   z  }F|d-k(  rFt7        J«      d2z   z  }F|	�F|z  }F|
�F|z  }FFd3t[        I|-|$‰Q«      z  z  }F�Œ Fd4|z  z  }F| xj\                  |Fz  c_.        | j_                  |«       ES c c}+w c c}+w )5aQ  Insert text into a given rectangle.

        Args:
            rect -- the textbox to fill
            buffer -- text to be inserted
            fontname -- a Base-14 font, font name or '/name'
            fontfile -- name of a font file
            fontsize -- font size
            lineheight -- overwrite the font property
            color -- RGB stroke color triple
            fill -- RGB fill color triple
            render_mode -- text rendering control
            border_width -- thickness of glyph borders as percentage of fontsize
            expandtabs -- handles tabulators with string function
            align -- left, center, right, justified
            rotate -- 0, 90, 180, or 270 degrees
            morph -- morph box with a matrix and a fixpoint
        Returns:
            unused or deficit rectangle area (float)
        z%text box must be finite and not emptyr©  r¸  Nr   rÇ  rÈ  rZ   rI  rÉ  r¢  zrotate must be multiple of 90r¡  rI  rÃ  rÄ  rÅ  r"  r   rº  rþ  r  r'  r   r  r  r"  r$   r¥	  r  Ú?r»  c           	      óŠ   •— ‰dk  r+t        | D �cg c]  }‰t        |«         d   ‘Œ c}«      ‰z  S t        | «      ‰z  S c c}w )zCalculate pixel length of x.r   r   )rî
  rn
  r6   )r  r©  rç   r'  rþ  s     €€€r(   Úpixlenz$Shape.insert_textbox.<locals>.pixlen{<  sJ   ø€ à˜!Š|Ü±qÓ9±q°!˜F¤3 q£6™N¨1Ó-°qÑ9Ó:¸XÑEÐEä˜1“v Ñ(Ð(ùò :s   �A é    rÆ  rJ  r…  r    TFr}  r½  c                 óB   — dt        | |f«      › d|› dt        |«      › d�S )Nr¾  z Tm /r    r¿  rœ  )r    r{
  r©  rõ  s       r(   rL	  z&Shape.insert_textbox.<locals>.<lambda> =  s)   €  X¬i¸¸A¸Ó.?Ð-@ÀÀaÀSÈÌ)ÐTUË,ÈÐW[Ñ#\r)   r   r   rÛ  rÊ  rË  rÌ  z Tw z%sTJ
zET
%sQ
)0r  r�  rœ  r²   r±  rÅ   rj  rÆ  r%  rÅ  rJ  r2   r;  r(  r  r·   r¡   r¢   rÆ  rÔ  rn
  rÈ  r2  rÏ  rb  r  r  r£   r£  rÖ  r×  r'  rØ  r¥  rã  rg  r5   r6   r8  r%   ri   rÉ  rö  r-  rÙ  rÎ  r„  r‡  )Rr'   rä   r«  ræ   r7  rç   r\  r¯  rØ  rô  rè   rg  ro  rd  rþ   re  rE  rÚ  rp  rq  r³  rÓ  rÔ  rÜ  rÝ  rÞ  rÉ  r@  rØ  rÙ  rÚ  rÅ  rã  rý   r-  r  r  rü  r  r  Úlheight_factorrÑ  rx	  r©  rÐ  Ú	tj_glyphsrã  Úblenr   r  rc  rÖ  ÚprogrÚc_pntr  ÚmaxwidthÚ	maxheightÚjust_tabrL  rm   Úline_tÚ	num_wordsÚlbuffr¾  rn  ÚwordÚpl_wÚlb_countÚtext_heightÚmorer¬  ÚtemplÚtext_tr5  rY  ÚplrY  Úspacesrt	  rù  r'  rþ  sR        `                                                                          @@r(   r0  zShape.insert_textbox÷;  s	  ú€ ôX �D‹zˆØ�=Š=˜D×,Ò,ÜÐDÓEÐEä˜e SÓ)ˆ	Ü˜T 3Ó'ˆØˆ<˜K¨1Ò,ØˆDÜ  ¨Ó,ˆHà—)‘)×1Ñ1°"Ó5ˆØÐØ! GÑ+ˆCØ‰CàˆNˆC�#ð —	‘	×&Ñ&¨.¸\Ð&ÓJˆØˆ=Ø‰Eà Ñ&ˆEà�B‰;˜!ÒÜÐ<Ó=Ð=àˆØ�AŠgØ�3‰JˆCð �A‹gà�C‰iˆô �FŒ|Ø"%¨¡/�4—;‘;ÐA°t·z±zÐAà#ˆØ#ˆØ$ˆØ—‘ˆàˆØ×Ñ˜CÔ Ø˜!˜"�IˆEà�y‰y×$Ñ$Ø X¸ÈZð %ó 
ˆô ! §¡¨4Ó0ˆà˜A‘;ˆØ˜JÑ'ˆØ˜(Ñ#ˆØ˜(Ñ#ˆØ˜&Ñ!ˆØ˜JÑ'ˆØ˜[Ñ)ˆ	áØ'‰NØ˜	Ñ! QÒ&Ø ‰Nà%¨	Ñ1ˆNØ˜^Ñ+ˆô �‹<œD¤%˜=Ñ(Ø—‘˜6Ó"‰BàˆBä¡rÓ*¡r !”s˜1•v rÑ*Ó+ˆá�g ’mØ—‘¹bÓA¹b¸œs 1›v¨š|™!°Ñ4¸bÑAÓBˆBà�]‰]‹_ˆà—‘×)Ñ)¨$°¸!±Ó<ˆÙ�fÐ$>Ñ>Ø‰IàˆIö
	)ð �aŠ<Ø˜"‘:˜a‘= 8Ñ+‰DàˆDàˆä�eÔÜØ�1�a˜˜E !™HŸJ™J¨¯©Ñ/°·±¸uÀQ¹x¿z¹zÑ1IÈDÏFÉFÑ1RóˆBð �#˜˜a™‘. 2Ñ%ˆCÜœ8 C›=Ó)¨GÑ3‰BàˆBð
 ˆÜ�a˜ HÑ,Ó-ˆØ�!Š8Ø—G‘G˜e‘OˆEØ—z‘zˆHØŸ™‰Ià�BŠYÜ˜( XÑ-¨qÓ1ˆEØ—G‘G˜e‘OˆEØ—{‘{ˆHØŸ
™
ˆIØ�%‰K‰Bà�CŠZä˜1˜h¨Ñ1Ó2Ð2ˆEØ—G‘G˜e‘OˆEØ—z‘zˆHØˆEØ—{‘{ˆIØ�%‰K‰Bô ˜8 hÑ.°Ó2Ð2ˆEØ—G‘G˜e‘OˆEØ—{‘{ˆHØˆEØŸ
™
ˆIØ�%‰KˆBð
 ˆä  —}‰GˆAˆtØ—_‘_ ZÓ0×6Ñ6°sÓ;ˆFÜ˜F›ˆIØˆEØˆDô ˜9Ö%�Ø˜a‘y�Ù˜d“|�Ø˜4’<Ø˜T C™ZÑ'�EØ˜D 4™KÑ'�DØñ Ø!ŸL™L›N¨TÑ1�EØ˜E‘M�DØ—O‘O DÔ)à�Ø�à˜8Ò#Ø  3™J�EØ# d™?¨TÑ1�DØô �x“= 1Ò$Ø#(�H˜R‘LÛ�AÙ˜e“}¨±6¸!³9Ñ(<Ò<Ø ™
™à ™˜Ø ™˜Ø Ÿ™¨Ô.Ø !™ð ð ˜‘�Ø¡&¨£-Ñ/‘ðG &ñJ Ø˜Ÿ™›Ñ&�Ø—‘ Ô&à”3�r“7˜Q‘;ŒØ˜‘’ðe %ðj �=‰=˜ÔØ˜˜�9ˆDØ—:‘:˜dÓ# aÑ'ˆð  Ñ(¨9°xÑ+?Ñ?ˆà˜YÑ&ˆØ”'Š>Ø˜$‘;Ðä�4‹yˆØ”'Š>ØˆDøÙ"%¢uÐ-°Ñ2ˆÙ\ˆà—‘Ó"ˆØˆ�‰Ü˜f×%‰DˆAˆqØˆGØ™F 1›IÑ%ˆBØ˜% 1 ~Ñ#5Ñ6Ñ6ˆCØ˜ŠzØ˜(‘?Ø¤ b¨1¡f¨aÓ 0°5Ñ 8Ñ8‘Cà¤ a¨¨a©Ó 0°5Ñ 8Ñ8‘CØ˜!’Ø˜(‘?Ø¤ b¨!£¨uÑ 4Ñ4‘Cà¤ a¨£¨uÑ 4Ñ4‘CØ˜!’ØŸ™ ›�Ø˜A’: (¨1¢+Ø  6™k‘Gà�GØ˜3Ÿ5™5‘. 4§6¡6Ñ)ˆCØ—5‘5˜4Ÿ6™6‘>ˆDØ�bŠyØ §¡‘~¨¯©Ñ.�Ø—u‘u�f˜tŸv™v‘o‘Ø˜’Ø�w §¡‘¨¯©Ñ/�Ø—e‘e˜dŸf™f‘n‘Ø˜’ØŸ™�v §¡‘�Ø�g §¡‘o¨¯©Ñ.�à‘E˜$  U¨HÓ5Ñ5ˆDà˜QŠØ˜ ;Ñ.Ñ.�Øœ	 ,°Ñ"9Ó:¸UÑBÑB�ØÐ*ØœI kÓ2°UÑ:Ñ:�Dà˜ŠzØœ	 'Ó*¨VÑ3Ñ3�àÐ Ø˜	Ñ!�ØÐØ˜Ñ �Ø�Hœx¨¨9°f¸hÓGÑGÑGŠDð_ &ðb 	�˜cÑ!Ñ!ˆà�Š˜$Ñ�Ø�‰˜ÔØˆùò] +ùò Bs   Ç`Ç?`$rJ  rn  ro  rL  rµ  rm  c           
      óv  — | j                   dk(  ry|dk(  rd}n|€d}t        |d«      }t        |d«      }| j                  j                  |«      }|�d|z  | j                   z   | _         d}nd}| j                  j	                  ||
¬«      }|�d	|z  | j                   z   | _         |d
k7  r&|dk7  r!| xj                   t        |«      dz   z  c_         |dk7  rd|z  | j                   z   | _         |dk7  rd|z  | j                   z   | _         |dvrd|z  | j                   z   | _         |	r| xj                   dz  c_         d| _        |�| xj                   |z  c_         |�s| xj                   |z  c_         |�.|s| xj                   dz  c_         nY| xj                   dz  c_         nC|s| xj                   dz  c_         n+| xj                   dz  c_         n| xj                   dz  c_         | xj                   |z  c_         t        |«      r†t        d
ddd
|d   j                  | j                  z   | j                  |d   j                  z
  | j                  z
  «      }| |d
   z  |z  }t        t        |«      «      dz   | j                   z   | _         | xj                  d| j                   z   dz   z  c_        d| _         d| _        y)zäFinish the current drawing segment.

        Notes:
            Apply colors, opacity, dashes, line style and width, or
            morphing. Also whether to close the path
            by connecting last to first point.
        rZ   Nr   r©  r¸  rÇ  rÈ  rI  rÉ  r   ú w
z%i J
z%i j
)NrZ   ú[] 0z%s d
zh
zB
zB*
zf
zf*
zS
rÆ  r}  úQ
)rï  r±  rÅ   rj  rÆ  r£   rî  rÏ  rb  r  rÅ  r  r£  r…  )r'   rJ  rô  rè   rn  ro  rL  rµ  rÚ  rm  rq  rp  r³  rÓ  rÔ  rÜ  rÞ  rÉ  r  rc  s                       r(   r/  zShape.finish;=  sv  € ð, �>‰>˜RÒØà�AŠ:Ø‰EØˆ]ØˆEô ˜e SÓ)ˆ	Ü˜T 3Ó'ˆà—)‘)×1Ñ1°"Ó5ˆØÐØ,¨wÑ6¸¿¹ÑGˆDŒNØ‰CàˆCà—	‘	×&Ñ&¨.¸\Ð&ÓJˆØÐØ'¨%Ñ/°$·.±.Ñ@ˆDŒNà�AŠ:˜% 1š*Ø�NŠNœi¨Ó.°Ñ7Ñ7�Nà�aŠ<Ø%¨Ñ/°$·.±.Ñ@ˆDŒNØ�qŠ=Ø%¨Ñ0°4·>±>ÑAˆDŒNàÐ+Ñ+Ø%¨Ñ.°·±Ñ?ˆDŒNáØ�NŠN˜eÑ#�NØ"ˆDŒOàÐØ�NŠN˜iÑ'�NàÐØ�NŠN˜hÑ&�NØÐ ÙØ—N’N eÑ+–Nà—N’N fÑ,–NáØ—N’N eÑ+–Nà—N’N fÑ,–Nà�NŠN˜eÑ#�Nà�Š˜#Ñ�Ü�eÔÜØ�1�a˜˜E !™HŸJ™J¨¯©Ñ/°·±¸uÀQ¹x¿z¹zÑ1IÈDÏFÉFÑ1RóˆBð �#˜˜a™‘. 2Ñ%ˆCÜ&¤x°£}Ó5¸Ñ?À$Ç.Á.ÑPˆDŒNà�Š˜' D§N¡NÑ2°UÑ:Ñ:�ØˆŒØˆŒØr)   r”  c                 óÎ  — t        | j                  «       | xj                  | j                  z  c_        | j                  j	                  «       | _        | j                  rc|r| j                  j                  «        t        j                  | j                  d|«      }| j                  j                  || j                  «       d| _
        d| _        d| _        d| _        d| _        y)zžUpdate the page's /Contents object with Shape data.

        The argument controls whether data appear in foreground (default)
        or background.
        r  NrZ   )rS  rÅ   r…  r„  r²  rP  rø   rÝ  r  r	  rî  rä   rï  )r'   r”  rý   s      r(   r1  zShape.commit–=  s£   € ô 	�D—I‘IÔØ�Š˜$Ÿ.™.Ñ(�ØŸ™×.Ñ.Ó0ˆŒà�>Š>ÙØ—	‘	×'Ñ'Ô)ä×)Ñ)¨$¯)©)°T¸7ÓCˆDà�H‰H×"Ñ" 4¨¯©Ô8àˆŒØˆŒ	ØˆŒØˆŒØˆ�r)   r  )r   )r   r  Nr   r   NFNTr   r   r   )&r.   r/   r0   rN  r&  r€  rÁ   rŠ   r‡  r©   rÖ  r~  r¡   r‚  rt  r(
  r,
  rª   r«   r€  r\  ry  r{  r%  rŒ  r.  r„  r“  r�  rÙ   r#  r"  r3   r$  r  r0  r/  r1  r,   r)   r(   r}  r}  Ñ9  sÏ  „ Ùàñó ðð&˜Tó ò(7ð*˜Jð ¨Jð ¸5ó ð Dð ¨Uó ðàðð ðð ð	ð
 ðð 
óð.˜vŸ|™|¨I°yÐ,@ÑAð Àeó ð0C *ð C°eð CÀó Cð0àð0ð ð0ð ð	0ð
 
ó0ð(  ñHàðHð ðHð ð	Hð
 ðHð 
óHðT 48ò 1˜ið 1¸Eó 1ðfB˜ið B¨Eó Bð ñ	àðð ðð ð	ð
 
óðB ñ	#àð#ð ð#ð
 
ó#ðZ Ø#ØØØØØØØØ"ØØØØ !ØØò)xàðxð —‘˜S $˜YÑ'ðxð
 ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð ðxð  ð!xð" ð#xð$ ð%xð& ð'xð( ð)xð* 
ó+xðD "ØØØ#ØØØØØØ"ØØØØØØ !ØØò-BàðBð —‘˜S $˜YÑ'ðBð
 ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð ðBð  ð!Bð" ð#Bð$ ð%Bð& ð'Bð( ð)Bð* ð+Bð, ð-Bð. 
ó/BðL
 ØØØØØØØØØØ !ØñYàðYð ðYð ð	Yð
 ðYð ðYð ðYð ðYð ðYð ðYð ðYð ðYð ðYð 
óYñv˜dð ¨dô r)   r}  c                   óÆ   — e Zd Zdd„Zd„ Zed„ «       Zed„ «       Zd„ Z	dd„Z
dd„Zdd	„Zd
„ Zdd„Zedd„«       Zedd„«       Zdd„Z G d„ d«      Zdd„Zdd„Zdd„Zdd„Zy)rJ  Nc                 ób  — t        j                  |j                  d«      «      }|rt        |t        «      st	        |«      }|r|j
                  nt        j                  d «      }t        t         d«      rt        j                  ||||«      | _        y t        j                  ||||«      | _        y )Nr¹  ÚFzStoryS)
r�   r�  r²  r<   r(  r³   Ú	FzArchiver9   r  ÚFzStory)r'   rB  rC  Úemr>  r  Úarchs          r(   rŠ   zStory.__init__±=  s}   € Ü×6Ñ6¸¿¹ÀGÓ8LÓMˆÙœ: g¬wÔ7Ü˜gÓ&ˆGÙ&ˆw�|Š|¬E¯O©O¸TÓ,BˆÜ”5˜*Ô%ÜŸ™¨°¸2¸tÓDˆD�IäŸ™ w°¸"¸dÓCˆD�Ir)   c                 ó(  — | j                   }d}|j                  ddd«      }|ro|j                  }t        |«      dk(  r>|d   dk(  r6|d   dv r/|j	                  d«      }|sd|› �}|j                  d|«       |dz  }|j                  ddd«      }|rŒnyy)	zt
        Look for `<h1..6>` items in `self` and adds unique `id`
        attributes if not already present.
        r   Nr   r¶  r   Ú123456r&  Úh_id_)rz  r“   rŠ  r6   rž  r   r  )r'   ÚdomrL  r  r   ÚattrÚid_s          r(   Úadd_header_idszStory.add_header_ids»=  sœ   € ð
 �i‰iˆØˆØ�H‰H�T˜4 Ó&ˆÙØ—9‘9ˆDÜ�4‹y˜AŠ~ $ q¡'¨3¢,°4¸±7¸hÑ3FØ×,Ñ,¨TÓ2�ÙØ! ! ˜+�Cà—O‘O D¨#Ô.Ø˜‘F�AØ—‘˜D $¨Ó-ˆAô r)   c                 ó’  — t        | t        «      r| }nt        d| «      }t        «       }|D ]=  }|j                  dz  sŒ|j                  sŒ |j                  |v rŒ/|||j                  <   Œ? |D �]  }|j                  dz  sŒ|j
                  sŒ!t        «       }t        |j                  «      |d<   |j
                  j                  d«      rR|j
                  dd }	 ||   }	 t        |d<   |j                  \  }
}}}t        |
|«      |d	<   |j                   dz
  |d
<   nO|j
                  j                  d«      rt"        |d<   |j
                  dd |d<   nt$        |d<   |j
                  |d<   ||j                   dz
     j'                  |«       �Œ" |S # t        $ r*}	t        dkD  r
t        «        t        d|› d|› �«      |	‚d}	~	ww xY w)aÆ  
        Adds links to PDF document.
        Args:
            document_or_stream:
                A PDF `Document` or raw PDF content, for example an
                `io.BytesIO` instance.
            positions:
                List of `ElementPosition`'s for `document_or_stream`,
                typically from Story.element_positions(). We raise an
                exception if two or more positions have same id.
        Returns:
            `document_or_stream` if a `Document` instance, otherwise a
            new `Document` instance.
        We raise an exception if an `href` in `positions` refers to an
        internal position `#<name>` but no item in `positions` has `id =
        name`.
        rF  r   rE  r¼	  NzNo destination with id=z, required by position_from: rF  rH  rÅ   zname:r   r   rM  )r<   r°   r4   Ú
open_closer&  rÊ  r  rä   r2   re   r÷   rt   rÍ   r&   rN  rÖ  Úpage_numrd  rT  rß  )Údocument_or_streamÚ	positionsr¸   Úid_to_positionÚpositionÚposition_fromrˆ  Ú	target_idÚposition_torM  rø  rú  r÷  rù  s                 r(   Úadd_pdf_linkszStory.add_pdf_linksÎ=  sß  € ô& Ð(¬(Ô3Ø)‰Hä Ð'9Ó:ˆHô
 ›ˆã!ˆHà×#Ñ# aÓ'¨X¯[«[à—;‘; .Ñ0àà3;�N H§K¡KÒ0ð "ô 'ˆMà×(Ñ(¨1Ó,°-×2DÓ2Dô “v�Ü# M×$6Ñ$6Ó7��V‘à ×%Ñ%×0Ñ0°Ô5à -× 2Ñ 2°1°2Ð 6�IðEØ&4°iÑ&@˜ð ô
 $-�D˜‘LØ%0×%5Ñ%5‘N�B˜˜B ô "' r¨2£�D˜‘JØ#.×#7Ñ#7¸!Ñ#;�D˜’Lð %×)Ñ)×4Ñ4°WÔ=Ü'1˜˜V™Ø'4×'9Ñ'9¸!¸"Ð'=˜˜Všä'/˜˜V™Ø&3×&8Ñ&8˜˜U™ð ˜×/Ñ/°!Ñ3Ñ4×@Ñ@ÀÖFðQ 'ðT ˆøô; %ò EÜ/°!Ò3¼Ô8HÜ*Ð-DÀYÀKÐOlÐmzÐl{Ð+|Ó}ð  DEð  EûðEús   ÃFÆ	GÆ%GÇGc                 óB   — | j                  «       }|j                  «       S r+   )r¸   rí  ©r'   r	  s     r(   rz  z
Story.body#>  s   € à�m‰m‹oˆØ�{‰{‹}Ðr)   c                 óV   — t        j                  | j                  «      }t        |«      S r+   )r�   Úfz_story_documentr³   rx  r  s     r(   r¸   zStory.document(>  s    € Ü×%Ñ% t§y¡yÓ1ˆÜ�C‹yÐr)   c                 ó¢   — t        |«      }|r|j                  nt        j                  d «      }t        j                  | j                  ||«       y r+   )rÀ  r³   r�   rŸ  Úfz_draw_story)r'   r§  rÆ  Úctm2rw  s        r(   Údrawz
Story.draw,>  s8   € Ü  &Ó)ˆÙ#ˆf�kŠk¬¯©¸Ó)>ˆÜ×Ñ˜TŸY™Y¨¨TÕ2r)   c                 ód  ‡‡— t        ‰«      t        u rF‰j                  «       D ]2  }t        |«      t        u r|j	                  «       rŒ%t        d|› d�«      ‚ ni Št        ‰«      r‰j                  j                  dk7  rt        d«      ‚ˆˆfd„}t        j                  | j                  |«       y)zU
        Trigger a callback function to record where items have been placed.
        zinvalid key 'r×   r   z@callback 'function' must be a callable with exactly one argumentc                 ó¨  •—  G d„ d«      } |«       }| j                   |_         | j                  |_        | j                  |_        t        | j                  «      |_        | j
                  |_        | j                  |_        | j                  |_        | j                  |_	        ‰r%‰j                  «       D ]  \  }}t        |||«       Œ  ‰|«       y )Nc                   ó   — e Zd Zy)ú=Story.element_positions.<locals>.function2.<locals>.Position2N©r.   r/   r0   r,   r)   r(   Ú	Position2r#  ?>  s   „ Ør)   r%  )r  Úheadingr&  rT  rä   r   r  Úrectangle_numÚrect_numrÊ  r@   Úsetattr)r  r%  Ú	position2r�  rD   rä  rg   s        €€r(   Ú	function2z*Story.element_positions.<locals>.function2>>  s¥   ø€ ÷ñ á!›ˆIØ&Ÿn™nˆIŒOØ (× 0Ñ 0ˆIÔØ#Ÿ;™;ˆIŒLÜ,¨X¯]©]Ó;ˆIŒNØ%Ÿ]™]ˆIŒNØ#+×#6Ñ#6ˆIÔ Ø!)×!7Ñ!7ˆIÔØ%Ÿ]™]ˆIŒNÙØ ŸJ™JžL‘D�A�qÜ˜Y¨¨1Õ-ð )á�iÕ r)   N)r·   r4   r®  rÙ   Úisidentifierr²   r¦  Ú__code__Úco_argcountr�   Úfz_story_positionsr³   )r'   rg   rä  r�  r+  s    ``  r(   Úelement_positionszStory.element_positions1>  s’   ù€ ô �‹:œÑØ—Y‘Y–[�Ü˜Q›¤3™¨1¯>©>Õ+;Ü$ }°Q°C°qÐ%9Ó:Ð:ñ !ð ˆDÜ˜Ô! X×%6Ñ%6×%BÑ%BÀaÒ%GÜÐ_Ó`Ð`õ	!ô  	× Ñ  $§)¡)¨YÕ7r)   c                 óž   — t        |«      }t        j                  «       }t        j                  | j                  |||«      }|t        |«      fS )z5
        Wrapper for fz_place_story_flags().
        )rí  r�   rU  Úfz_place_story_flagsr³   rT  )r'   Úwherer¬  rO  rõ  s        r(   ÚplacezStory.placeP>  sC   € ô   Ó'ˆÜ—‘“ˆÜ×)Ñ)¨4¯9©9°e¸VÀUÓKˆØ”_ fÓ-Ð-Ð-r)   c                 óB   — t        j                  | j                  «       y r+   )r�   Úfz_reset_storyr³   r-   s    r(   r	  zStory.resetY>  s   € Ü×Ñ˜dŸi™iÕ(r)   c                 óÎ  ‡‡— d }dŠd}t        dddd«      }	  |||«      \  }}	}
|dz  }|r‰dz  Š| j                  |	«      \  }}‰rˆˆfd„}| j                  |«       |rq|r=|r|r |‰||d«       |j                  «        |j	                  |«      }|r |‰||d«       | j                  ||
«       |s0|r |‰||d«       |j                  «        n| j                  d |
«       |sy ŒÏ)Nr   r   c                 ó$   •— ‰| _          ‰| «       y r+   )r  )r  r  Ú
positionfns    €€r(   Úpositionfn2z Story.write.<locals>.positionfn2i>  s   ø€ ð )1�HÔ%Ù˜xÕ(r)   )r  r4  r0  rL
  rG
  r  )r'   rÃ  Úrectfnr9  Úpagefnrw  r(  rO  rX  rä   rË  rõ  r:  r  s      `         @r(   r   zStory.write\>  s  ù€ ØˆØˆØˆÜ�a˜˜A˜qÓ!ˆØÙ"(¨°6Ó":ÑˆH�d˜CØ˜‰MˆHÙà˜A‘�ØŸ:™: tÓ,‰LˆD�&Ùõ)ð
 ×&Ñ& {Ô3ÙÙáÙ!Ù" 8¨X°s¸AÔ>ØŸ™Ô)Ø ×+Ñ+¨XÓ6�CÙÙ˜x¨°3¸Ô:Ø—	‘	˜3 Ô$ÙÙÙ ¨(°C¸Ô;Ø—O‘OÕ%à—	‘	˜$ Ô$ÙØðA r)   c	                 óæ   ‡‡‡— t        «       Šd }		 |	}
 |‰«      }	dŠ|	|
k(  rdŠ|	}t        ||||«      }|r|j                  «        t        «       Šˆˆˆfd„}|j                  ‰r| nd |||«       ‰ry Œb)NFTc                 óD   •— ‰j                  | «       ‰r‰r	 ‰| «       y y y r+   rö  )r  r9  r  Ústables    €€€r(   r:  z+Story.write_stabilized.<locals>.positionfn2•>  s%   ø€ à× Ñ  Ô*Ù™jÙ˜xÕ(ð )�6r)   )r¡   rJ  r  r   )rÃ  Ú	contentfnr;  rC  r  r9  r<  r>  r  re  Úcontent_prevÚcontent2rT  r:  r  r?  s        `        @@r(   Úwrite_stabilizedzStory.write_stabilizedƒ>  sŽ   ú€ ä“Fˆ	ØˆàØ"ˆLÙ Ó+ˆGØˆFØ˜,Ò&Ø�ØˆHÜ˜( H¨b°'Ó:ˆEáØ×$Ñ$Ô&ä›ˆIö)ð
 �K‰KÙ$‘F¨$ØØØô	ñ Øð3 r)   c                 óü   ‡‡— t        j                  «       }t        |«      }	g Šˆˆfd„}
t        j	                  |	| ||||
|||«	       |	j                  «        |j                  d«       t        j                  |‰«      S )Nc                 ó>   •— ‰j                  | «       ‰r	 ‰| «       y y r+   rö  ©r  r9  r  s    €€r(   r:  z6Story.write_stabilized_with_links.<locals>.positionfn2©>  ó!   ø€ à×Ñ˜XÔ&ÙÙ˜8Õ$ð r)   r   )rM  rN  r;
  rJ  rC  r×  rÅ  r  )r@  r;  rC  r  r9  r<  r>  r  r   rÃ  r:  r  s       `      @r(   Úwrite_stabilized_with_linksz!Story.write_stabilized_with_links£>  sn   ù€ ô —‘“ˆÜ Ó'ˆØˆ	õ	%ô
 	×Ñ˜v y°&¸(ÀBÈÐU[Ð]dÐftÔuØ�‰ŒØ�‰�AŒÜ×"Ñ" 6¨9Ó5Ð5r)   c                 óì   ‡‡— t        j                  «       }t        |«      }g Šˆˆfd„}| j                  ||||¬«       |j	                  «        |j                  d«       t        j                  |‰«      S )Nc                 ó>   •— ‰j                  | «       ‰r	 ‰| «       y y r+   rö  rF  s    €€r(   r:  z+Story.write_with_links.<locals>.positionfn2¸>  rG  r)   )r9  r<  r   )rM  rN  r;
  r   r×  rÅ  rJ  r  )r'   r;  r9  r<  r   rÃ  r:  r  s     `    @r(   rP  zStory.write_with_links³>  s_   ù€ ä—‘“ˆÜ Ó'ˆØˆ	õ	%ð
 	�
‰
�6˜6¨kÀ&ˆ
ÔIØ�‰ŒØ�‰�AŒÜ×"Ñ" 6¨9Ó5Ð5r)   c                   ó   — e Zd ZdZdd„Zd„ Zy)úStory.FitResulta˜  
        The result from a `Story.fit*()` method.
        
        Members:
        
        `big_enough`:
            `True` if the fit succeeded.
        `filled`:
            Tuple (x0, y0, x1, y1) from the last call to `Story.place()`. This
            will be wider than .rect if any single word (which we never split)
            was too wide for .rect.
        `more`:
            `False` if the fit succeeded.
        `numcalls`:
            Number of calls made to `self.place()`.
        `parameter`:
            The successful parameter value, or the largest failing value.
        `rect`:
            The pumupdf.Rect created from `parameter`.
        Nc                 óX   — || _         || _        || _        || _        || _        || _        y r+   ©rM  rO  rõ  ÚnumcallsrN  rä   )r'   rM  rO  rõ  rO  rN  rä   s          r(   rŠ   zStory.FitResult.__init__×>  s,   € Ø(ˆDŒOØ ˆDŒKØˆDŒIØ$ˆDŒMØ&ˆDŒNØˆD�Ir)   c                 ó¢   — d| j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › �S )Nz big_enough=z filled=z more=z
 numcalls=ú parameter=ú rect=rN  r-   s    r(   rÚ   zStory.FitResult.__repr__ß>  sP   € à" 4§?¡?Ð"3Ø˜tŸ{™{˜mØ˜TŸY™Y˜KØ  §¡ Ø! $§.¡.Ð!1Ø˜TŸY™Y˜Kð)ðr)   r  )r.   r/   r0   rN  rŠ   rÚ   r,   r)   r(   Ú	FitResultrL  Â>  s   „ ñ	ó(	ó	r)   rS  c                 óÖ  ‡ ‡‡‡‡‡‡‡‡— ˆfd„Št        ‰t        t        f«      s‰�J ‚t        ‰t        t        f«      s‰�J ‚ G ˆˆˆfd„d«      } |«       Š‰r# ‰d‰j                  ›d‰j                  ›d�«       ‰ j                  «        ˆˆˆˆfd„}ˆˆˆˆ ˆˆfd	„Šd
„ }	‰j                  €-‰r ‰d«        |	‰j                  d«      }
	  ‰|
«      sn7|
dz  }
Œ ‰‰j                  «      r‰r ‰d‰j                  ›d�«        |«       S ‰j                  €-‰r ‰d«        |	‰j                  d«      }
	  ‰|
«      rn>|
dz  }
Œ ‰‰j                  «      s&d‰_        ‰r ‰d‰j                  ›d�«        |«       S ‰r# ‰d‰j                  ›d‰j                  ›d�«       	 ‰j                  ‰j                  z
  |k  r |«       S ‰j                  ‰j                  z   dz  }
 ‰|
«       ŒH)aÌ  
        Finds optimal rect that contains the story `self`.
        
        Returns a `Story.FitResult` instance.
            
        On success, the last call to `self.place()` will have been with the
        returned rectangle, so `self.draw()` can be used directly.
        
        Args:
        :arg fn:
            A callable taking a floating point `parameter` and returning a
            `pymupdf.Rect()`. If the rect is empty, we assume the story will
            not fit and do not call `self.place()`.

            Must guarantee that `self.place()` behaves monotonically when
            given rect `fn(parameter`) as `parameter` increases. This
            usually means that both width and height increase or stay
            unchanged as `parameter` increases.
        :arg pmin:
            Minimum parameter to consider; `None` for -infinity.
        :arg pmax:
            Maximum parameter to consider; `None` for +infinity.
        :arg delta:
            Maximum error in returned `parameter`.
        :arg verbose:
            If true we output diagnostics.
        :arg flags:
            Passed to mupdf.fz_place_story_flags(). e.g.
            zero or `mupdf.FZ_PLACE_STORY_FLAG_NO_OVERFLOW`.
        c                 ó*   •— ‰sJ ‚t        d| › �«       y )Nzfit(): ©rp   )r   r‡	  s    €r(   r&   zStory.fit.<locals>.log?  s   ø€ ÙˆN�7Ü�g˜d˜VÐ$Õ%r)   Nc                   ó   •— e Zd Zˆ ˆˆfd„Zy)úStory.fit.<locals>.Statec                 ó|   •— ‰| _         ‰| _        d | _        d | _        d | _        d| _        ‰r‰| _        ‰| _        y y r…   )ÚpminÚpmaxÚpmin_resultÚpmax_resultr  rO  Úpmin0Úpmax0)r'   r[  rZ  r‡	  s    €€€r(   rŠ   z!Story.fit.<locals>.State.__init__?  sE   ø€ Ø �”	Ø �”	Ø#'�Ô Ø#'�Ô Ø"�”Ø !�”ÙØ!%�D”JØ!%�D•Jð r)   Nr‹   )r[  rZ  r‡	  s   €€€r(   ÚStaterX  ?  s   ø„ ÷	&r)   r`  zstarting. state.pmin=ú state.pmax=r   c            
      ó„  •— ‰j                   �F‰j                  ‰j                   k7  r ‰r ‰d«        ‰‰j                   «      } | sJ ‚‰j                  }n8‰j                  r‰j                  nt        j                  ‰j                  ¬«      }‰r2 ‰d‰j                  ›d‰j                  ›d‰j                   ›d|›�«       |S )NzCCalling update() with pmax, because was overwritten by later calls.)rO  zfinished. state.pmin0=z state.pmax0=ra  z: returning result=)	r[  Úlast_pr]  r\  rJ  rS  rO  r^  r_  )rM  r  r&   r§  rû  r‡	  s     €€€€r(   rE   zStory.fit.<locals>.ret!?  sª   ø€ Ø�z‰zÐ%Ø—<‘< 5§:¡:Ò-ÙÙÐaÔcÙ!'¨¯
©
Ó!3�JÙ%Ð%˜:Ø×*Ñ*‘à.3×.?Ò.?˜×*Ò*ÄUÇ_Á_Ð^c×^lÑ^lÀ_ÓEm�ÙÙÐ- §¡ ¨n°·±¨~¸]¸u¿z¹z¸mÐK_ÐX^ÐW`ÐaÔbØˆMr)   c                 ó  •—  ‰| «      }t        |t        «      sJ dt        |«      ›d|›�«       ‚|j                  r.d}t        j                  | ‰
j                  ¬«      }‰r} ‰d«       nt‰	j                  |‰«      \  }}‰
xj                  dz  c_        | }t        j                  ||‰
j                  | ||¬«      }‰r  ‰d‰
j                  d	›d
|›d| ›d|›d�	«       |r| ‰
_        |‰
_	        n| ‰
_
        |‰
_        | ‰
_        |S )a  
            Evaluates `more, _ = self.place(fn(parameter))`. If `more` is
            false, then `rect` is big enough to contain `self` and we
            set `state.pmax=parameter` and return True. Otherwise we set
            `state.pmin=parameter` and return False.
            ztype(rect)=rR  F)rN  rO  z9update(): not calling self.place() because rect is empty.r   )rO  rõ  rO  rN  rä   rM  zupdate(): called self.place(): z>2dz: more=rQ  r   )r<   r  r·   r�  rJ  rS  rO  r4  r[  r]  rZ  r\  rc  )rN  rä   rM  r  rõ  rO  r¬  Úfnr&   r'   r§  r‡	  s         €€€€€€r(   rû  zStory.fit.<locals>.update/?  s  ø€ ñ �i“=ˆDÜ˜d¤DÔ)ÐC¨k¬d°4«j¨]¸'¸D¸7Ð+CÓCÐ)Ø�}Š}Ø"�
ÜŸ™°9ÀuÇ~Á~˜ÓV�ÙÙÐSÕUà#Ÿz™z¨$°Ó6‘��fØ—’ !Ñ#•Ø!%˜X�
ÜŸ™Ø%Ø!Ø!&§¡Ø"+Ø!Ø#-ð )ó �ñ ÙÐ9¸%¿.¹.ÈÐ9MÈXÐPTÈwÐVbÐXaÐWcÐcjÐeiÐdkÐklÐmÔnÙØ&�”
Ø$*�Õ!à&�”
Ø$*�Ô!Ø$ˆEŒLØÐr)   c                 ó4   — | �| dk(  r|S || z  dkD  rd| z  S |  S )z•
            Returns same sign as `direction`, larger or smaller than `p` if
            direction is positive or negative respectively.
            r   r   r,   )r�  Ú	directions     r(   ÚoppositezStory.fit.<locals>.oppositeT?  s1   € ð
 ˆy˜A˜qšDØ Ð Ø˜1‰}˜qÒ Ø˜1‘u�Ø�2ˆIr)   zfinding pmin.r…  r   r   zstate.pmin=z is big enough.zfinding pmax.z No solution possible state.pmax=z$doing binary search with state.pmin=)r<   r3   r\  rZ  r[  r	  )r'   re  rZ  r[  r  r‡	  r¬  r`  rE   rh  rN  r&   r§  rû  s   ```` ``    @@@r(   rG  z	Story.fité>  sØ  ÿø€ ô>	&ô ˜$¤¤e Ô-°°Ð=Ð=Ü˜$¤¤e Ô-°°Ð=Ð=÷
	&õ 
	&ñ “ˆáÙÐ(˜UŸZ™Z˜M¨¨5¯:©:¨-°qÐ9Ô:à�
‰
Œ÷	÷#	ñ #	òJ		ð �:‰:Ðá™˜mÔ-Ù  §¡¨RÓ0ˆIØÙ˜iÔ(ØØ˜Q‘�	ð ñ
 �e—j‘jÔ!Ù™C ; 5§:¡: -¨Ð ?Ô@Ù“u�à�:‰:Ðá™˜mÔ-Ù  §¡¨RÓ0ˆIØÙ˜)Ô$ØØ˜Q‘�	ð ñ
 ˜%Ÿ*™*Ô%à!�”
Ù™CÐ"C¸¿
¹
°}ÀAÐ FÔGÙ“u�ñ ‘CÐ?°E·J±J°=ÀÀ%Ç*Á*ÀÈaÐPÔQØØ�z‰z˜EŸJ™JÑ&¨Ò.Ù“u�ØŸ™ e§j¡jÑ0°AÑ5ˆIÙ�9Ôð	 r)   c                 óh   ‡
‡‡‡— |\  ŠŠ}}|‰z
  Š|‰z
  Š
ˆ
ˆˆˆfd„}	| j                  |	|||||«      S )aÉ  
        Finds smallest value `scale` in range `scale_min..scale_max` where
        `scale * rect` is large enough to contain the story `self`.

        Returns a `Story.FitResult` instance with `.parameter` set to `scale`.

        :arg width:
            width of rect.
        :arg height:
            height of rect.
        :arg scale_min:
            Minimum scale to consider; must be >= 0.
        :arg scale_max:
            Maximum scale to consider, must be >= scale_min or `None` for
            infinite.
        :arg delta:
            Maximum error in returned scale.
        :arg verbose:
            If true we output diagnostics.
        :arg flags:
            Passed to Story.place().
        c                 ó8   •— t        ‰‰‰| ‰z  z   ‰| ‰z  z   «      S r+   r8  )rD  rÅ  rJ  rø  rú  s    €€€€r(   re  zStory.fit_scale.<locals>.fn�?  s&   ø€ Ü˜˜B  U¨5¡[Ñ 0°"°u¸V±|Ñ2CÓDÐDr)   ©rG  )r'   rä   rD  rE  r  r‡	  r¬  r÷  rù  re  rÅ  rJ  rø  rú  s             @@@@r(   rK  zStory.fit_scaleƒ?  sC   û€ ð. ‰ˆˆB��BØ�R‘ˆØ�b‘ˆ÷	Eà�x‰x˜˜I y°%¸À%ÓHÐHr)   c                 óT   ‡‡	‡
— |\  ŠŠ
‰|z   Š	ˆˆ	ˆ
fd„}| j                  |||||«      S )a�  
        Finds smallest height in range `height_min..height_max` where a rect
        with size `(width, height)` is large enough to contain the story
        `self`.

        Returns a `Story.FitResult` instance.

        :arg width:
            width of rect.
        :arg height_min:
            Minimum height to consider; must be >= 0.
        :arg height_max:
            Maximum height to consider, must be >= height_min or `None` for
            infinite.
        :arg origin:
            `(x0, y0)` of rect.
        :arg delta:
            Maximum error in returned height.
        :arg verbose:
            If true we output diagnostics.
        c                 ó&   •— t        ‰‰‰‰| z   «      S r+   r8  )rÅ  rø  r÷  rú  s    €€€r(   re  zStory.fit_height.<locals>.fn¹?  s   ø€ Ü˜˜B  B v¡IÓ.Ð.r)   rk  )r'   rJ  Ú
height_minÚ
height_maxÚoriginr  r‡	  re  rø  r÷  rú  s           @@@r(   Ú
fit_heightzStory.fit_height¡?  s3   ú€ ð, ‰ˆˆBØ�%‰Zˆö	/à�x‰x˜˜J¨
°E¸7ÓCÐCr)   c                 óT   ‡‡	‡
— |\  ŠŠ	‰	|z   Š
ˆˆ	ˆ
fd„}| j                  |||||«      S )a©  
        Finds smallest width in range `width_min..width_max` where a rect with size
        `(width, height)` is large enough to contain the story `self`.

        Returns a `Story.FitResult` instance.
        Returns a `FitResult` instance.

        :arg height:
            height of rect.
        :arg width_min:
            Minimum width to consider; must be >= 0.
        :arg width_max:
            Maximum width to consider, must be >= width_min or `None` for
            infinite.
        :arg origin:
            `(x0, y0)` of rect.
        :arg delta:
            Maximum error in returned width.
        :arg verbose:
            If true we output diagnostics.
        c                 ó&   •— t        ‰‰‰| z   ‰«      S r+   r8  )rJ  rø  rú  rù  s    €€€r(   re  zStory.fit_width.<locals>.fnÕ?  s   ø€ Ü˜˜B  5¡¨"Ó-Ð-r)   rk  )r'   rÅ  Ú	width_minÚ	width_maxrp  r  r‡	  re  rø  rú  rù  s           @@@r(   Ú	fit_widthzStory.fit_width½?  s3   ú€ ð, ‰ˆˆBØ�&‰[ˆö	.à�x‰x˜˜I y°%¸ÓAÐAr)   )rZ   Nr·  Nr+   r  rŒ	  )Nr·  NNNT)NNr¡  Fr   )r   Nr¡  Fr   )r   Nrº  r¡  F)r.   r/   r0   rŠ   r  r&  r  r!  rz  r¸   r  r0  r4  r	  r   rC  rH  rP  rS  rG  rK  rq  rv  r,   r)   r(   rJ  rJ  ¯=  s¨   „ óDò.ð& ñRó ðRðh ñó ðòó3ó
8ó>.ò)ó%ðN òó ðð> ò6ó ð6ó6÷%ñ %óNXótIó<Dô8Br)   rJ  c                   óÔ   — e Zd Zd„ Zd„ Zd„ Zdd„Zd„ Zddefd„Z	de
fd	„Zdd
„Zdde
fd„Zddefd„Zdde
fd„Zd„ Zdde
fd„Zd„ Zdd„Zde
fd„Zde
fd„Zd„ Zed„ «       Zdd„ZeZy)rñ  c                 óú   — t        |t        j                  «      r |d   }t        j                  |«      | _        n3t        |t        j                  «      r|d   | _        nt        d|› �«      ‚d| _        d | _        y )Nr   úUnrecognised args: T)rž  r�   rU  rð  r³   re   rÞ   rÖ   )r'   rä  rX  s      r(   rŠ   zTextPage.__init__Ü?  sg   € Ü�dœEŸL™LÔ)Ø˜A‘wˆHÜ×)Ñ)¨8Ó4ˆD�IÜ˜œe×/Ñ/Ô0Ø˜Q™ˆD�IäÐ1°$°Ð8Ó9Ð9ØˆŒØˆ�r)   c                 ón  — | j                   }t        j                  d«      }t        j                  |«      }|dk(  rt        j                  ||d«       nF|dk(  rt        j
                  ||d«       n)|dk(  rt        j                  ||d«       nt        ||«       |j                  «        t        |«      }|S )Nr  r   r   r   r8  )
r³   r�   r¨  r©  Úfz_print_stext_page_as_htmlÚfz_print_stext_page_as_xmlÚfz_print_stext_page_as_xhtmlÚJM_print_stext_page_as_textrë  r
  )r'   r
  Ú
this_tpager  rì  r   s         r(   Ú_extractTextzTextPage._extractTextç?  s›   € Ø—Y‘Yˆ
Ü×!Ñ! $Ó'ˆÜ�n‰n˜cÓ"ˆð �aŠ<Ü×-Ñ-¨c°:¸qÕAØ˜Š\Ü×,Ñ,¨S°*¸aÕ@Ø˜Š\Ü×.Ñ.¨s°JÀÕBä'¨¨ZÔ8Ø×ÑÔÜ% cÓ*ˆØˆr)   c                 ó2   — t        | j                  ||«       y r+   )ÚJM_make_textpage_dictr³   )r'   Ú	page_dictrÊ  s      r(   Ú_getNewBlockListzTextPage._getNewBlockListü?  s   € Ü˜dŸi™i¨°CÕ8r)   c                 ó„   — | j                   j                  | j                   j                  dœ}| j                  ||«       |S )Nr7  )rä   rJ  rÅ  r„  )r'   rÊ  rƒ  s      r(   Ú_textpage_dictzTextPage._textpage_dictÿ?  s4   € Ø"Ÿi™iŸo™o¸¿¹×9IÑ9IÑJˆ	Ø×Ñ˜i¨Ô-ØÐr)   c                 ó†  — t         rt        j                  | j                  «      S d}| j                  }t	        j
                  |j                  j                  «      }t	        j                  d«      }g }|D �]Ç  }|dz  }t	        j
                  t        j
                  j                  «      }|j                  j                  t        j                  k(  �r%t	        j                  |«       d}d}	|D ]û  }
|dz  }t	        j
                  t        j
                  j                  «      }|
D ]|  }t        |
|«      }t        ||«      st	        j                  |«      sŒ1t!        ||j                  j"                  «       |j                  j"                  }	t	        j$                  ||«      }Œ~ |	dk7  r+t	        j&                  |«      st	        j(                  |d«       t	        j$                  ||«      }Œý t+        |«      }nØt        ||j                  j,                  «      st	        j                  |«      r£|j/                  «       }|j1                  «       }dt	        j2                  |«      |j5                  «       |j7                  «       |j9                  «       fz  }t	        j$                  |t	        j
                  |j                  j,                  «      «      }t	        j&                  |«      r�Œr|j:                  |j<                  |j>                  |j@                  ||j                  j                  f}|jC                  |«       �ŒÊ |S )z*Return a list with text block information.r…  r  r   r   é
   z+<image: %s, width: %d, height: %d, bpc: %d>)"r  r   ÚextractBLOCKSr³   r�   rU  r»   rX  r¨  ÚFixed_EMPTYr·   ÚFZ_STEXT_BLOCK_TEXTÚfz_clear_bufferÚJM_char_bboxÚJM_rects_overlaprœ  ÚJM_append_runer©  Úfz_union_rectr›  Úfz_append_byter
  r  Úi_imagerÈ  r”  r   r¶  r‹  rø  rú  r÷  rù  ri   )r'   Úblock_nr  Útp_rectr  rä  ÚblockÚ	blockrectÚline_nÚ	last_charrm   Úlinerectrs
  Úcbboxr   rÄ  rÌ  Úlitems                     r(   r‰  zTextPage.extractBLOCKS@  s}  € åÜ×&Ñ& t§y¡yÓ1Ð1ØˆØ—Y‘Yˆ
Ü—,‘,˜z×4Ñ4×=Ñ=Ó>ˆÜ×!Ñ! $Ó'ˆØˆÜˆEØ�q‰LˆGÜŸ™¤U§\¡\×%=Ñ%=Ó>ˆIØ×Ñ×$Ñ$¬×(AÑ(AÓAÜ×%Ñ% cÔ*Ø�Ø�	Û!�DØ˜a‘K�FÜ$Ÿ|™|¬E¯L©L×,DÑ,DÓE�HÛ"˜Ü ,¨T°2Ó 6˜Ü 0°¸%Ô @Ü(-×(AÑ(AÀ'Ô(Jà$Ü& s¨B¯M©M¯O©OÔ<Ø$&§M¡M§O¡O˜	Ü#(×#6Ñ#6°xÀÓ#G™ð #ð ! B’¬u×/EÑ/EÀhÔ/OÜ×,Ñ,¨S°"Ô5Ü %× 3Ñ 3°I¸xÓ H‘Ið "ô .¨cÓ2‘Ü" 7¨E×,<Ñ,<×,AÑ,AÔBÜ×0Ñ0°Ô9à—m‘m“o�Ø—^‘^Ó%�ØDÜ×0Ñ0°Ó4ØŸ™› §¡£¨#¯'©'«)ðHñ �ô "×/Ñ/°	¼5¿<¹<È×HXÑHX×H]ÑH]Ó;^Ó_�	Ü×)Ñ)¨)Ö4à!Ÿ™Ø!Ÿ™Ø!Ÿ™Ø!Ÿ™ØØØ×(Ñ(×-Ñ-ð�ð —‘˜UÖ#ðW  ðX ˆr)   NrÀ  c                 ó¨   — | j                  d¬«      }|�|j                  |d<   |j                  |d<   |r|d   }|j                  d„ ¬«       ||d<   |S )z>Return page content as a Python dict of images and text spans.F©rÊ  rJ  rÅ  Úblocksc                 ó"   — | d   d   | d   d   fS ©Nr  r   r   r,   ©r{
  s    r(   rL	  z&TextPage.extractDICT.<locals>.<lambda>C@  ó   €  q¨¡y°¡|°Q°v±Y¸q±\Ñ&Br)   rn	  ©r†  rJ  rÅ  r¹  ©r'   rL  r¹  rÿ   rž  s        r(   ÚextractDICTzTextPage.extractDICT;@  s]   € à×!Ñ! eÐ!Ó,ˆØˆ>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÙØ˜‘]ˆFØ�K‰KÑBˆKÔCØ"ˆC�‰MØˆ
r)   c                 ó$   — | j                  d«      S )z%Return page content as a HTML string.r   ©r€  r-   s    r(   ÚextractHTMLzTextPage.extractHTMLG@  rG  r)   c           	      óü  — d}| j                   }g }|D �]å  }|dz  }|j                  j                  t        j                  k(  rŒ1|j                  «       }d}|j                  «       }|j                  rd}	nd}	t        j                  |«      }
|
j                  r|
j                  «       }d}
|rçt        j                  t        t        t        t        «      }t        j                  |«      sJ ‚t        j                  |j                  «       dd|j                  «       dd«      }t        j                   |||«      \  }}}t        j"                  |«      }t%        |«      }|dk(  r2|j                  «       |j                  «       z  |j'                  «       z  }t        j(                  t        j*                  |j                  j,                  «      «      }t/        «       }||t0        <   t3        |j                  j4                  «      |t6        <   t9        |j;                  «       «      |t<        <   |j                  «       |t>        <   |j                  «       |t@        <   t        jB                  |«      |tD        <   t        jF                  |«      |tH        <   |jK                  «       |tL        <   |jO                  «       |tP        <   |jS                  «       |tT        <   ||tV        <   |r|d<   |	|d<   |jY                  |«       �Œè |S )	z*Return a list with image meta information.r…  r   r   TFNr£  zhas-mask)-r³   r»   r·   r�   r‹  r’  r¦  rŠ  Úfz_compressed_buffer_sizerÑ  rç  rè  r¡  r_  r   r¶  ræ  r€  r  rC   r‡  Úll_fz_keep_colorspacerÈ  r4   Údictkey_numberrT  r  Údictkey_bboxr^  Úi_transformÚdictkey_matrixÚdictkey_widthÚdictkey_heightr—  Údictkey_colorspacer”  rï  r©  Údictkey_xresrª  Údictkey_yresr‹  Údictkey_bpcr¤  ri   )r'   rÃ  r“  r  r’   r•  rÄ  Úimg_sizer¦  Úhas_maskÚ
compr_buffr  rm  rÍ  r   r¶  r£  rÌ  Ú
block_dicts                      r(   rÈ  zTextPage.extractIMGINFOK@  sb  € àˆØ—Y‘Yˆ
ØˆÜˆEØ�q‰LˆGØ×Ñ×$Ñ$¬×(AÑ(AÒAØØ—-‘-“/ˆCØˆHØ—8‘8“:ˆDØ�ŠØ‘à �Ü×9Ñ9¸#Ó>ˆJØ×$Ò$Ø%×?Ñ?ÓA�Ø!�
ÙÜ—M‘M¤/´?ÄOÔUdÓe�Ü×1Ñ1°!Ô4Ð4Ð4Ü—N‘N 3§5¡5£7¨A¨q°#·%±%³'¸1¸aÓ@�Ü!×:Ñ:¸3ÀÀ1ÓE‘	��Q˜Ü×-Ñ-¨cÓ2�Ü˜v›�Ø˜q’=Ø"Ÿu™u›w¨¯©«Ñ0°3·5±5³7Ñ:�HÜ×#Ñ#¤E×$?Ñ$?ÀÇÁ×@YÑ@YÓ$ZÓ[ˆBÜ›ˆJØ)0ˆJ”~Ñ&Ü'6°u×7GÑ7G×7LÑ7LÓ'MˆJ”|Ñ$Ü):¸5×;LÑ;LÓ;NÓ)OˆJ”~Ñ&Ø(+¯©«ˆJ”}Ñ%Ø),¯©«ˆJ”~Ñ&Ü-2×-BÑ-BÀ2Ó-FˆJÔ)Ñ*Ü*/×*BÑ*BÀ2Ó*FˆJ”Ñ'Ø'*§x¡x£zˆJ”|Ñ$Ø'*§x¡x£zˆJ”|Ñ$Ø&)§g¡g£iˆJ”{Ñ#Ø'/ˆJ”|Ñ$ÙØ'-�
˜8Ñ$Ø%-ˆJ�zÑ"Ø�I‰I�jÖ!ðQ  ðR ˆ	r)   c                 ó  ‡— ddl Šddl}| j                  d¬«      } G ˆfd„d|j                  «      }|�|j                  |d<   |j
                  |d<   |r|d	   }|j                  d
„ ¬«       ||d	<   |j                  |d|d¬«      }|S )z.Return 'extractDICT' converted to JSON format.r   NFr�  c                   ó   •— e Zd Zˆ fd„Zy)ú'TextPage.extractJSON.<locals>.b64encodec                 ór   •— t        |«      t        t        fv r‰j                  |«      j	                  «       S y r+   ©r·   r  rL  Ú	b64encoderÑ  ©r'   r_  Úbase64s     €r(   r   z/TextPage.extractJSON.<locals>.b64encode.default‚@  ó3   ø€ Ü˜“7œu¤iÐ0Ñ0Ø!×+Ñ+¨AÓ.×5Ñ5Ó7Ð7ð 1r)   N©r.   r/   r0   r   ©rÁ  s   €r(   r¿  r¼  �@  ó   ø„ õ8r)   r¿  rJ  rÅ  rž  c                 ó"   — | d   d   | d   d   fS r   r,   r¡  s    r(   rL	  z&TextPage.extractJSON.<locals>.<lambda>‹@  r¢  r)   rn	  ©r   r]   r   ©Ú
separatorsr¡  rj  ©rÁ  rX  r†  ÚJSONEncoderrJ  rÅ  r¹  Údumps©r'   rL  r¹  rX  rÿ   r¿  rž  rÁ  s          @r(   ÚextractJSONzTextPage.extractJSON{@  sŽ   ø€ ãÛØ×!Ñ! eÐ!Ó,ˆö	8˜×(Ñ(ô 	8ð
 ˆ>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÙØ˜‘]ˆFØ�K‰KÑBˆKÔCØ"ˆC�‰Mà�j‰j˜¨¸È1ˆjÓMˆØˆ
r)   c                 ó¨   — | j                  d¬«      }|�|j                  |d<   |j                  |d<   |r|d   }|j                  d„ ¬«       ||d<   |S )zCReturn page content as a Python dict of images and text characters.Tr�  rJ  rÅ  rž  c                 ó"   — | d   d   | d   d   fS r   r,   r¡  s    r(   rL	  z)TextPage.extractRAWDICT.<locals>.<lambda>™@  r¢  r)   rn	  r£  r¤  s        r(   ÚextractRAWDICTzTextPage.extractRAWDICT‘@  s]   € à×!Ñ! dÐ!Ó+ˆØˆ>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÙØ˜‘]ˆFØ�K‰KÑBˆKÔCØ"ˆC�‰MØˆ
r)   c                 ó  ‡— ddl Šddl}| j                  d¬«      } G ˆfd„d|j                  «      }|�|j                  |d<   |j
                  |d<   |r|d	   }|j                  d
„ ¬«       ||d	<   |j                  |d|d¬«      }|S )z1Return 'extractRAWDICT' converted to JSON format.r   NTr�  c                   ó   •— e Zd Zˆ fd„Zy)ú*TextPage.extractRAWJSON.<locals>.b64encodec                 ór   •— t        |«      t        t        fv r‰j                  |«      j	                  «       S y r+   r¾  rÀ  s     €r(   r   z2TextPage.extractRAWJSON.<locals>.b64encode.default¤@  rÂ  r)   NrÃ  rÄ  s   €r(   r¿  rÔ  £@  rÅ  r)   r¿  rJ  rÅ  rž  c                 ó"   — | d   d   | d   d   fS r   r,   r¡  s    r(   rL	  z)TextPage.extractRAWJSON.<locals>.<lambda>­@  r¢  r)   rn	  rÇ  r   rÈ  rÊ  rÍ  s          @r(   ÚextractRAWJSONzTextPage.extractRAWJSON�@  sŽ   ø€ ãÛØ×!Ñ! dÐ!Ó+ˆö	8˜×(Ñ(ô 	8ð
 ˆ>ØŸ8™8ˆC�‰LØŸI™IˆC�‰MÙØ˜‘]ˆFØ�K‰KÑBˆKÔCØ"ˆC�‰MØ�j‰j˜¨¸È1ˆjÓMˆØˆ
r)   c                 óv   — t        |«      }t        |«      }t        j                  | j                  ||d«      }|S r…   )r÷  r�   Úfz_copy_selectionr³   )r'   ÚpointaÚpointbr    r{
  rŽ  s         r(   ÚextractSelectionzTextPage.extractSelection²@  s5   € Ü˜VÓ$ˆÜ˜VÓ$ˆÜ×'Ñ'¨¯	©	°1°a¸Ó;ˆØˆr)   c                 óÂ   — |s| j                  d«      S | j                  «       dd }|j                  d„ ¬«       dj                  |D �cg c]  }|d   ‘Œ	 c}«      S c c}w )z%Return simple, bare text on the page.r   Nc                 ó   — | d   | d   fS )Nr   r   r,   r¡  s    r(   rL	  z&TextPage.extractText.<locals>.<lambda>½@  s   €  1 Q¡4¨¨1©¡,r)   rn	  rZ   r8  )r€  r‰  r¹  rÆ  )r'   r¹  rž  r{
  s       r(   ÚextractTextzTextPage.extractText¸@  s]   € áØ×$Ñ$ QÓ'Ð'Ø×#Ñ#Ó%¡aÐ(ˆØ�‰Ñ.ˆÔ/Ø�w‰w¡fÓ-¡f ˜˜!› fÑ-Ó.Ð.ùÒ-s   Á	Ac                 óš   — | j                   }t        |t        j                  «      sJ ‚t	        |«      }t        ||«      }t        |«      }|S r+   )r³   r<   r�   rð  rí  ÚJM_copy_rectangleÚ PyUnicode_DecodeRawUnicodeEscape)r'   rä   r  r½  rŽ  r’   s         r(   r!  zTextPage.extractTextboxÀ@  sF   € Ø—Y‘Yˆ
Ü˜*¤e×&7Ñ&7Ô8Ð8Ð8Ü˜tÓ$ˆÜ! *¨dÓ3ˆÜ-¨eÓ4ˆØˆ	r)   c                 óÄ  — t         r t        j                  | j                  |«      S d}d}d}t	        j
                  t        j
                  j                  «      }| j                  }t	        j
                  |j                  j                  «      }d}t	        j                  d«      }	g }|D �]²  }
|dz  }|
j                  j                  t        j                  k7  rŒ1d}|
D �]z  }|dz  }d}t	        j                  |	«       d}|D �]'  }t        ||«      }t        ||«      st	        j                  |«      sŒ2|dk(  r|j                  j                   dk(  rŒQt#        |j                  j                   |«      }t%        |j                  j                   «      }|s||k7  rJ|dk(  r|rŒŸt	        j&                  |«      st)        ||	||||«      \  }}t	        j                  |	«       d}|rŒát+        |	|j                  j                   «       |}|dz  }t	        j,                  |t        ||«      «      }�Œ* |r(t	        j&                  |«      st)        ||	||||«      \  }}d}�Œ} �Œµ |S )z)Return a list with text word information.r   r…  Né@   r   i   )r  r   ÚextractWORDSr³   r�   rU  rŠ  r»   rX  r¨  r·   r‹  rŒ  r�  rŽ  rœ  r©  ÚJM_is_word_delimiterÚJM_is_rtl_charr›  ÚJM_append_wordr�  r�  )r'   Ú
delimitersÚbuflenÚlast_char_rtlr“  Úwbboxr  r”  rä  r=  r•  r—  rm   Úword_nrs
  rš  Úword_delimiterÚthis_char_rtls                     r(   rå  zTextPage.extractWORDSÈ@  s  € åÜ×%Ñ% d§i¡i°Ó<Ð<ØˆØˆØˆÜ—‘œUŸ\™\×5Ñ5Ó6ˆØ—Y‘Yˆ
Ü—,‘,˜z×4Ñ4×=Ñ=Ó>ˆàˆÜ×"Ñ" 2Ó&ˆØˆÜˆEØ�q‰LˆGØ×Ñ×$Ñ$¬×(AÑ(AÒAØØˆFÜ�Ø˜!‘�Ø�Ü×%Ñ% dÔ+Ø�Ü�BÜ(¨¨rÓ2�EÜ,¨W°eÔ<Ü$)×$=Ñ$=¸gÔ$Fà à ’{ r§}¡}§¡¸&Ò'@à Ü%9¸"¿-¹-¿/¹/È:Ó%V�NÜ$2°2·=±=·?±?Ó$C�MÙ%¨¸-Ò)GØ! Qš;©>Ø$Ü$×5Ñ5°eÔ<Ü,:¸5À$ÈÈwÐX^Ð`fÓ,g™M˜F EÜ×-Ñ-¨dÔ3Ø!"˜Ù)Ø$ä" 4¨¯©¯©Ô9Ø$1�MØ˜a‘K�Fä!×/Ñ/°´|ÀDÈ"Ó7MÓN’Eð5 ñ6 ¤%×"8Ñ"8¸Ô"?Ü$2°5¸$ÀÀwÐPVÐX^Ó$_‘M�F˜EØ’òE ð  ðP ˆr)   c                 ó$   — | j                  d«      S )z&Return page content as a XHTML string.r8  r§  r-   s    r(   ÚextractXHTMLzTextPage.extractXHTML A  rG  r)   c                 ó$   — | j                  d«      S )z$Return page content as a XML string.r   r§  r-   s    r(   Ú
extractXMLzTextPage.extractXMLA  rG  r)   c                 ó¨   — | j                   }t        j                  |j                  j                  «      }t        j
                  |«      }d|_        |S )zTextPage current poolsize.N)r³   r�   ÚPoolr»   ÚpoolÚfz_pool_size)r'   rv  rö  r¦  s       r(   ÚpoolsizezTextPage.poolsizeA  sA   € à—	‘	ˆÜ�z‰z˜%×*Ñ*×/Ñ/Ó0ˆÜ×!Ñ! 4Ó(ˆØˆŒØˆr)   c                 óv   — | j                   }|j                  j                  }t        |«      }t	        |«      }|S )zPage rectangle.)r³   r»   rX  rT  r  )r'   r  rX  rÿ   s       r(   rä   zTextPage.rectA  s6   € ð —Y‘Yˆ
Ø×(Ñ(×1Ñ1ˆÜ˜hÓ'ˆÜ�3‹iˆàˆ
r)   c                 ó„  — t        | j                  |«      }|s|S t        |«      }t        |«      D ]'  }t	        ||   «      }|r|||<   Œ|j
                  ||<   Œ) |r|S d}||dz
  k  rW||   }||dz      }	|j                  |	j                  k7  s||	z  j                  r|dz  }ŒC||	z  ||<   ||dz   = |dz  }||dz
  k  rŒW|S )z)Locate 'needle' returning rects or quads.r   r   )ÚJM_search_stext_pager³   r6   r8  r…  rä   rù  r�  )
r'   ÚneedleÚhit_maxr	  rÿ   r@   rL  r*  Úv1Úv2s
             r(   rŒ  zTextPage.searchA  sã   € ä" 4§9¡9¨fÓ5ˆÙØˆJÜ�C“ˆÜ�u–ˆAÜ�S˜‘V“ˆAÙØ��A’àŸ™��A’ð ñ ØˆJØˆØ�%˜!‘)ŠmØ�Q‘ˆBØ�Q˜‘U‘ˆBØ�u‰u˜Ÿ™Š~ " r¡'×!3Ò!3Ø�Q‘�ØØ˜"‘WˆC�‰FØ�A˜‘E�
Ø�Q‰JˆEð �%˜!‘)‹mð ˆ
r)   r©  r®  r  r+   )r   r   )r.   r/   r0   rŠ   r€  r„  r†  r‰  r4   r¥  rÙ   r¨  rÈ  rÎ  rÑ  r×  rÜ  rß  r!  rå  rñ  ró  rø  r!  rä   rŒ  ÚextractTEXTr,   r)   r(   rñ  rñ  Ú?  s·   „ ò	òò*9óò
5ñn
°$ó 
ð$˜Só $ó.ñ`°#ó ñ,
°Tó 
ñ°Só ò*ñ/¨ó /òó6ðp$˜có $ð$˜Có $òð ñó ðóð4 �Kr)   rñ  c                   óÄ   — e Zd Zdd„Zed„ «       Zdd„Zdd„Zd„ Z	 	 	 	 	 	 	 	 ddd de	d	e
j                  eef   d
ede
j                  e   dededededededefd„Zdd„Zy)r¾  Nc                 ó”  — t        j                  «       | _        || _        || _        t        |«      | _        t        ddddd| j                  j                  «      | _	        | j                   | _
        t        «       | _        d| j                  _        t        «       | _        d| j                  _        t        «       | _        d| _        y)z;Stores text spans for later output on compatible PDF pages.r   r   r…  z'Position following last text insertion.zAccumulated area of text spans.TN)r�   Úfz_new_textr³   rB  rô  r  rä   rb  rÅ  rË  ÚictmrÖ  rî  rN  rÀ  r¸  Ú
used_fontsrÞ   )r'   Ú	page_rectrB  rô  s       r(   rŠ   zTextWriter.__init__9A  s’   € ä×%Ñ%Ó'ˆŒ	àˆŒØˆŒ
Ü˜“OˆŒ	Ü˜!˜Q  2 q¨$¯)©)×*:Ñ*:Ó;ˆŒØ—X‘X�IˆŒ	Ü›'ˆŒØ"Kˆ�‰ÔÜ›ˆŒà!Bˆ�‰ÔÜ›%ˆŒØˆ�r)   c                 óº   — t        t        j                  | j                  t        j                  d «      t        j
                  «       «      «      }t        |«      }|S r+   )rT  r�   Úfz_bound_textr³   ÚFzStrokeStater_  r  r¸  s     r(   Ú_bboxzTextWriter._bboxJA  sC   € äœu×2Ñ2°D·I±I¼u×?RÑ?RÐSWÓ?XÔZ_×ZhÑZhÓZjÓkÓlˆÜ�3‹iˆØˆ
r)   c           
      óp  — t        |«      | j                  z  }|€t        d«      }|j                  s	 t        d|j                  z  «      ‚|r-| j                  |«      }dj                  t        |«      «      }d}t!        j"                  |«      }	t%        |«      }
t!        j&                  |dd||
j(                  |
j*                  «      }d}d}|dk(  r1t!        j,                  | j                  |j                  ||||||	«      }n&t/        | j                  |j                  ||||||	«      }t1        |«      }t        |dd «      | j2                  z  | _        | j6                  | j2                  z  | _        | j8                  | j4                  f}|j:                  d   dk(  r| j<                  j?                  |«       |S )	z8Store 'text' at point 'pos' using 'font' and 'fontsize'.Nr&
  r   zUnsupported font '%s'.rZ   rÁ  r|
  r   ) rÖ  r  r  r§
  r&   rŽ   r¢
  r£
  Úmupdf_font_namer³   r»   r²   r   Ú	clean_rtlrÆ  r¼  r�   r}  r÷  Úfz_make_matrixr  r  Úfz_show_stringÚJM_show_string_csr^  rË  rî  r
  rÀ  r¬  r  r,  )r'   rO  r   rH  rç   r  Úright_to_leftrr
  r¢
  r  r�  ÚtrmÚ
markup_dirrq
  rÿ   s                  r(   ri   zTextWriter.appendPA  sw  € ä�C‹j˜4Ÿ9™9Ñ$ˆàˆ<Ü˜“<ˆDØ×ÒØô Ð5¸¿	¹	ÑAÓBÐBÙØ—>‘> $Ó'ˆDØ—7‘7œ8 D›>Ó*ˆDØˆMä×1Ñ1°(Ó;ˆÜ˜SÓ!ˆÜ×"Ñ" 8¨Q°°8¸Q¿S¹SÀ!Ç#Á#ÓFˆØˆ
ØˆØ˜Š?Ü×&Ñ&¨¯	©	°4·9±9¸cÀ4ÈÐP]Ð_iÐkoÓp‰Cä# T§Y¡Y°·	±	¸3ÀÀeÈ]Ð\fÐhlÓmˆCÜ Ó$ˆä  B C ›/¨D¯H©HÑ4ˆŒØŸ™ d§h¡hÑ.ˆŒØ�n‰n˜dŸo™oÐ-ˆØ�:‰:�fÑ Ò"Ø�O‰O×Ñ Ô%Øˆ
r)   c           	      ó¢   — |dz  }|D ].  }| j                  ||||||¬«       |xj                  |z  c_        Œ0 | j                  | j                  fS )Nr"  )rH  rç   r  rr
  )ri   r  rÀ  rî  )	r'   rO  r   rH  rç   r  rr
  rÑ  r©  s	            r(   ÚappendvzTextWriter.appendv|A  sV   € Ø˜S‘.ˆÛˆAØ�K‰K˜˜Q T°HØ!¨jð ô :à�EŠE�WÑŽEð ð �~‰~˜tŸ™Ð.Ð.r)   c           	      óž  — |s|S |j                  d«      }g }t        t        |«      «      D ]j  }||   }t        |«      dk  rŒt        |D �cg c]  }t	        |«      ‘Œ c}«      dkD  rŒ=dj                  t        |«      «      ||<   |j                  |«       Œl g }t        t        |«      «      D ]…  }|g k(  r|j                  ||   «       Œ||   |d   dz   kD  r8t        |«      dkD  r#t        ||d   |d   dz    «      ||d   |d   dz    ||   g}Œc||   |d   dz   k(  sŒr|j                  ||   «       Œ‡ dj                  |«      }|S c c}w )a)  Revert the sequence of Latin text parts.

        Text with right-to-left writing direction (Arabic, Hebrew) often
        contains Latin parts, which are written in left-to-right: numbers, names,
        etc. For output as PDF text we need *everything* in right-to-left.
        E.g. an input like "<arabic> ABCDE FG HIJ <arabic> KL <arabic>" will be
        converted to "<arabic> JIH GF EDCBA <arabic> LK <arabic>". The Arabic
        parts remain untouched.

        Args:
            text: str
        Returns:
            Massaged string.
        r    r   r¥	  rZ   r…  r   r   )r5   r8  r6   rÔ  rn
  rÆ  r¼  ri   )r'   r   Úwordsr%  rL  r   r©  Úidx2s           r(   r  zTextWriter.clean_rtl„A  sQ  € ñ ØˆKà—
‘
˜3“ˆØˆÜ”s˜5“zÖ"ˆAØ�a‘ˆAä˜“F˜Q“J¤#±qÓ&9±q°!¤s¨1¥v°qÑ&9Ó":¸SÓ"@ØŸ7™7¤8¨A£;Ó/��a‘Ø—
‘
˜1•ð #ð ˆÜ”s˜3“x–ˆAØ�rŠzØ—‘˜C ™FÕ#à�Q‘˜$˜r™( Q™,Ò&Ü�t“9˜q’=Ü4<Ø˜d 1™g¨¨R©°1©Ð5ó5�E˜$˜q™' D¨¡H¨q¡LÐ1ð ˜A™�x‘à�Q‘˜4 ™8 a™<Ó'Ø—‘˜C ™FÕ#ð !ð �x‰x˜‹ˆØˆùò+ ':s   ÁE

rÃ  rä   r   rO  rH  rç   r\  rþ   Úwarnr  rr
  rÀ  c                 ó’  ‡ ‡‡‡
‡%‡&‡'‡(— t        |«      }|j                  rt        d«      ‚t        ‰«      t        urt	        d«      Šˆˆˆ
fd„Š(ˆˆˆ
fd„Š&ˆˆˆ
ˆ fd„Š%‰dz  } ‰(d«      }|j
                  |z
  Š'|j                  |z   }ˆ&fd„}ˆ%ˆ'ˆ(fd	„}‰j                  }‰j                  }|s||z
  d
k  rd}n||z
  }n|}‰|z  }‰'}|�t        |«      }n|j                  |‰|z  fz   }||vrt        d«      ‚|t        k(  rd}n|t        k(  rd}nd}t        |«      t        u r|j                  «       }n(g }|D ]!  }|j                  |j                  «       «       Œ# t!        |j"                  |j$                  z
  |z  «      d
z   }g }g }t'        |«      D �]e  \  }}|dv r@|j)                  ||f«       |j
                  |z
  }|j)                  t+        |«      d
z
  «       ŒK|dk(  r|j,                  |j.                  z
  }n|j
                  |z
  }|	r‰ j1                  |«      } ‰(|«      }||k  r1|j)                  ||f«       |j)                  t+        |«      d
z
  «       ŒÊ|j3                  d«      } |||«      \  }}t+        |«      }	 dj5                  |d| «      } t7        |d| «      ||d
z
  z  z   }!|!|k  r+|j)                  | |!f«       ||d }||d }t+        |«      }d} n|d
z  }t+        |«      dk(  r�Œc|sJ ‚Œu t+        |«      }"|"|kD  r&d||"fz  }#|€n|rt9        d|#z   «       nt        |#«      ‚t        «       }$|t+        |«      d
z
  gz  }t;        |«      D ]Æ  }	 |j=                  d«      \  }}|	rdj5                  tE        |«      «      }|dk(  r|}$|tF        k(  r/||vr+|‰'k  r& ||$|«       ||$_        |$xj$                  |z  c_        Œs|dkD  s|j.                  |k(  r|$xj.                  ||z
  |z  z  c_         ‰%|$|«       ||$_        |$xj$                  |z  c_        ŒÈ |S # t>        $ r t@        dk\  r
tC        «        Y  |S w xY w)ay  Fill a rectangle with text.

        Args:
            writer: pymupdf.TextWriter object (= "self")
            rect: rect-like to receive the text.
            text: string or list/tuple of strings.
            pos: point-like start position of first word.
            font: pymupdf.Font object (default pymupdf.Font('helv')).
            fontsize: the fontsize.
            lineheight: overwrite the font property
            align: (int) 0 = left, 1 = center, 2 = right, 3 = justify
            warn: (bool) text overflow action: none, warn, or exception
            right_to_left: (bool) indicate right-to-left language.
        zfill rect must not empty.r&
  c                 ó,   •— ‰j                  | ‰‰¬«      S )zReturn length of a string.©rç   rr
  )r­
  ©r  rH  rç   rr
  s    €€€r(   rZ  z(TextWriter.fill_textbox.<locals>.textlenÓA  s"   ø€ à×#Ñ#Ø˜H°ð $ó ð r)   c                 ó,   •— ‰j                  | ‰‰¬«      S )z5Return list of single character lengths for a string.r  )ru
  r  s    €€€r(   ru
  z-TextWriter.fill_textbox.<locals>.char_lengthsÙA  s   ø€ à×$Ñ$ Q°ÀjÐ$ÓQÐQr)   c                 ó4   •— ‰j                  | |‰‰‰¬«      }|S )N)rH  rç   rr
  rö  )rO  r   rE   rH  rç   rr
  rÃ  s      €€€€r(   Úappend_thisz,TextWriter.fill_textbox.<locals>.append_thisÝA  s(   ø€ Ø—-‘-Ø˜ D°8È
ð  ó ˆCð ˆJr)   çš™™™™™É?r    c                 ól  •— g }g }|D ]§  } ‰|«      }t        |«      }|| k  r#|j                  |«       |j                  |«       Œ>t        |«      }|dkD  sŒOt        |d| «      }|| k  r;|j                  |d| «       |j                  |«       ||d }||d }t        |«      }n|dz  }|dkD  rŒYŒ© ||fS )z.Cut any word in pieces no longer than 'width'.r   Nr   )rî
  ri   r6   )	rJ  r  ÚnwordsÚword_lengthsr   Úwl_lstÚwlrC   ru
  s	           €r(   Ú
norm_wordsz+TextWriter.fill_textbox.<locals>.norm_wordsèA  sÓ   ø€ àˆFØˆLÛ�Ù% a›�Ü˜“[�Ø˜’;Ø—M‘M !Ô$Ø ×'Ñ'¨Ô+Øô ˜“K�Ø˜!“eÜ˜V B Q˜Z›�BØ˜U’{ØŸ™ a¨¨ eÔ,Ø$×+Ñ+¨BÔ/Ø˜a˜b˜E˜Ø!'¨¨ ˜Ü ›K™à˜Q™˜ð ˜!”eð ð( ˜<Ð'Ð'r)   c                 óN  •— |j                  d«      D �cg c]
  }|dk7  sŒ	|‘Œ }}t        |«      }|dk(  ry|dk(  r ‰
| |d   «       yt        |D �cg c]
  } ‰|«      ‘Œ c}«      }|dz
  }‰|z
  |z  }|D ]"  } ‰
| |«      \  }}	|	j                  |z   | _        Œ$ yc c}w c c}w )zJustified output of a line.r    rZ   r   Nr   )r5   r6   rî
  r  )r‚  rm   r   r  r#  r×  ÚgapsÚgaplrí  r\  r   Ú	std_widthrZ  s             €€€r(   Úoutput_justifyz/TextWriter.fill_textbox.<locals>.output_justifyB  s¾   ø€ ð !%§
¡
¨3¤Ó;¡˜1°1¸³7’Q ˆEÐ;Ü˜“ZˆFØ˜Š{ØØ˜Š{Ù˜E 5¨¡8Ô,ØÜ©%Ó0©% Q‘g˜a•j¨%Ñ0Ó1ˆBØ˜A‘:ˆDØ ‘N dÑ*ˆDÛ�Ù# E¨1Ó-‘��2ØŸ$™$ ™+�•ð ð ùò <ùò 1s   •
B BÁB"r   r"  NzText must start in rectangle.r#  rŒ  r   )rZ   r    zOnly fitting %i of %i lines.z	Warning: r   rZ   )$r  r�  r²   r·   r  rJ  rø  r  r  rÖ  r×  r2  r3  rÙ   rÈ  rT  r3   rù  r  rã  ri   r6   r÷  r  r  r5   rÆ  rî
  rp   r8  r»  ræ  r÷   rt   r¼  r4  ))rÃ  rä   r   rO  rH  rç   r\  rþ   r  r  rr
  Ú	toleranceÚ	space_lenÚ	std_startr'  r,  r/  r0  rÑ  Ú
LINEHEIGHTrJ  r–  Ú	textlinesrm   Ú	max_linesÚ	new_linesÚ
no_justifyrL  r×  r  r$  rC   Úline0r&  rß  rÕ  r‚  r   ru
  r+  rZ  s)   `   ``    `                          @@@@r(   Úfill_textboxzTextWriter.fill_textbox²A  st  ÿ€ ô6 �D‹zˆØ�=Š=ÜÐ8Ó9Ð9Ü�‹:œTÑ!Ü˜“<ˆDö	ö	R÷	ð ˜s‘Nˆ	Ù˜C“Lˆ	Ø—J‘J Ñ*ˆ	Ø—G‘G˜iÑ'ˆ	ô	(ö4	ð$ �m‰mˆØ�n‰nˆÙØ�S‰y˜AŠ~Ø‘à ™)‘à ˆGà Ñ'ˆ
Øˆð ˆ?Ü˜“*‰Cà—'‘'˜Y¨°3©Ð7Ñ7ˆCØ�d‰?ÜÐ<Ó=Ð=ð Ô%Ò%Ø‰FØÔ&Ò&Ø‰FàˆFô �‹:œÑØŸ™Ó)‰IàˆIÛ�Ø× Ñ  §¡Ó!2Õ3ð ô ˜Ÿ™ 3§5¡5™¨JÑ6Ó7¸!Ñ;ˆ	àˆ	Øˆ
Ü  ×+‰GˆAˆtØ�yÑ Ø× Ñ  $¨	Ð!2Ô3ØŸ
™
 YÑ.�Ø×!Ñ!¤3 y£>°AÑ#5Ô7ØØ�AŠvØŸ™ #§%¡%™‘àŸ
™
 YÑ.�áØ×'Ñ'¨Ó-�Ù˜“ˆBØ�UŠ{Ø× Ñ  $¨ Ô,Ø×!Ñ!¤3 y£>°AÑ#5Ô7Øð —J‘J˜s“OˆEñ #-¨U°EÓ":ÑˆE�<ä�E“
ˆAØØŸ™  r¨ Ó+�Ü˜ b qÐ)Ó*¨Y¸!¸a¹%Ñ-@Ñ@�Ø˜’;Ø×$Ñ$ e¨R [Ô1Ø! ! "˜I�EØ#/°°Ð#3�LÜ˜E›
�AØ ‘Eà˜‘F�Aä�u“: ’?ÙÙ��qð ð5 ,ô^ �Y“ˆØ�IÒØ0°I¸vÐ3FÑFˆCØˆ|ØÙÜ˜ cÑ)Õ*ä  “oÐ%ä“ˆØ”s˜9“~¨Ñ)Ð*Ñ*ˆ
Ü�yÖ!ˆAðØ$Ÿ=™=¨Ó+‘��bñ
 Ø—w‘wœx¨›~Ó.�à�AŠvØ�àÔ*Ò*¨q¸
Ñ/BÀrÈIÂ~Ù˜u dÔ+Ø#�”Ø—’˜:Ñ%•Øà�1Šu˜Ÿ™ Ò*Ø—’˜E B™J¨&Ñ0Ñ0•á˜˜tÔ$ØˆEŒGØ�GŠG�zÑ!ŽGð1 "ð4 Ðøô/ ò Ü'¨1Ò,´Ô0@Ùð* Ðð/ús   ÍP%Ð%QÑQc	                 óâ  — t        |«       t        | j                  |j                  z
  «      dkD  rt        d«      ‚|�Jt	        |«      t
        t        fvs(t	        |d   «      t        ust	        |d   «      t        urt        d«      ‚|�|�t        d«      ‚t        |dd«      �|d	k(  r| j                  }|€| j                  }	 |j                  «       }	d}
|dk\  r|dk  r|}
d}g d
¢}|rt        |«      \  }}|dk(  rt        j                  «       }n.|dk(  rt        j                   «       }nt        j"                  «       }t        j$                  |	j'                  «       d«      }t        j(                  d«      }t        j*                  |	j'                  «       t        j,                  «       ||«      }t        j.                  || j0                  t        j,                  «       |||
t        j2                  t        j4                  «      «       t        j6                  |«       t9        |	|«      }t;        |«      }||f}|}|d   }|d   }|\  }}|j=                  «       }|j?                  |«      }|�d|z  }d}ndx}}dg}|r|jA                  |«       |jB                  }|jD                  dv r.|j                  jF                  |j                  jH                  z
  }nd}|jJ                  }tM        |«      s|jN                  dk7  s|dk7  rD|jA                  dtQ        |jR                  |jT                  |jN                  z   |z
  f«      › d�«       |rN|d   | jV                  z  } t        dd«      jY                  | jR                  | jT                  «      }| |d   z  |z  }|s|r&|jA                  tQ        t[        |«      «      dz   «       |D �]¬  }!|!j]                  d«      rŒ|!dk(  r&|jA                  |!«       |jA                  d|z  «       ŒA|!j]                  d«      r)t_        |!ja                  «       d   dd «      |z   }"d|"z  }!�n!|!j]                  d«      rx|!ja                  «       }#tc        |#d   «      }$|dk7  r|$dz  }%nd}%|jA                  tQ        |%«      dz   «       t_        |#d   dd «      |z   }&dje                  d|&z  g|#dd z   «      }!n˜|!j]                  d «      r"|jA                  |!jg                  d!d"«      «       ne|!j]                  d#«      r"|jA                  |!jg                  d#d$«      «       n2|!j]                  d%«      r!|jA                  |!jg                  d%d&«      «       |jA                  |!«       �Œ¯ |r|jA                  |«       |jA                  d'«       d(je                  |«      ji                  d)«      }tj        jm                  |||¬*«       d}| jn                  D ]  }&tq        ||&«       Œ |S )+aÚ  Write the text to a PDF page having the TextWriter's page size.

        Args:
            page: a PDF page having same size.
            color: override text color.
            opacity: override transparency.
            overlay: put in foreground or background.
            morph: tuple(Point, Matrix), apply a matrix with a fixpoint.
            matrix: Matrix to be used instead of 'morph' argument.
            render_mode: (int) PDF render mode operator 'Tr'.
        r¡  zincompatible page rectNr   r   z%morph must be (Point, Matrix) or Nonez$only one of matrix, morph is allowedrW  r…  r|  r   r8  r   r  z/OC /%s BDCÚEMCrZ   r*  rÜ  r¾  z cmÚBTz%i Trz gsz	/Alp%i gsú Tfrc  z wr   r    z/F%iz rgr˜  ÚRGz gz Gz kz Krý  r$   r¹  )r”  )9rS  rÙ  rä   r²   r·   r¢   r¡   rÖ  rb  rØ   rB  rô  rø  r'  r�   rÁ  Úfz_device_cmykÚfz_device_grayr?  r  r¨  Úpdf_new_pdf_devicer_  Úfz_fill_textr³   r…  Úfz_default_color_paramsrt  ÚJM_merge_resourcesr
  rÈ  rj  ri   rT  r=  rÅ  rJ  rX  r%  rú  r£   r  r  r  r<  r£  rÉ  r3   r5   r\  rÆ  rÊ  r²  rø   rÝ  r  Úrepair_mono_font)'r'   rÅ   rô  rB  r”  rÚ  rÆ  re  r³  r˜  rÉ  ÚncolÚ	dev_colorrÈ  rN  rY  rw  Úmax_numsÚcont_stringr  rÿ   re  Úmax_alpÚmax_fontÚold_cont_linesrÜ  rÝ  rÞ  Únew_cont_linesrL  r  rÍ  r�  rm   Úalprq  rä  r   rH  s'                                          r(   r¿  zTextWriter.write_text”B  sO  € ô 	�DÔÜˆt�y‰y˜4Ÿ9™9Ñ$Ó%¨Ò,ÜÐ5Ó6Ð6ØÐÜ�U“¤E¬4 =Ñ0Ü˜E !™H“~¬UÑ2Ü˜E !™H“~¬VÑ3ä Ð!HÓIÐIØÐ %Ð"3ÜÐCÓDÐDÜ�7˜K¨Ó.Ð6¸'ÀRº-Ø—l‘lˆGØˆ=Ø—J‘JˆEàØ—n‘nÓ&ˆGØˆEØ˜!Š| ¨!¢Ø�ØˆDÚ$ˆIÙÜ"7¸Ó">‘��iØ�qŠyÜ"×0Ñ0Ó2‘
Ø˜’Ü"×1Ñ1Ó3‘
ä"×1Ñ1Ó3�
ä×*Ñ*¨7¯;©;«=¸!Ó<ˆIÜ×*Ñ*¨4Ó0ˆHÜ×*Ñ*¨G¯K©K«M¼5¿>¹>Ó;KÈYÐX`ÓaˆCä×ÑØØ—I‘IÜ—N‘NÓ$ØØØÜ×'Ñ'¬×(EÑ(EÓFôô ×!Ñ! 3Ô'ô *¨7°IÓ>ˆHÜ0°(Ó;ˆKØ Ð,ˆFØˆCà�q‘6ˆØ�a‘&ˆØ$Ñˆ�Ø ×+Ñ+Ó-ˆà×,Ñ,¨RÓ0ˆØÐØ 'Ñ)ˆCØ‰CàˆNˆC�#à˜ˆÙØ×!Ñ! #Ô&à×"Ñ"ˆØ�=‰=˜IÑ%Ø—I‘I×$Ñ$ t§y¡y§¡Ñ6‰EàˆEØ�]‰]ˆÜ�Œ8�r—u‘u ’z U¨a¢ZØ×!Ñ! H¬Y¸¿¹¸b¿d¹dÀRÇUÁU¹lÈUÑ>RÐ7SÓ-TÐ,UÐUXÐ"YÔZáØ�a‘˜4Ÿ9™9Ñ$ˆAÜ˜1˜a“L×-Ñ-¨a¯c©c°1·3±3Ó7ˆEØ�V˜e A™hÑ&¨Ñ.ˆFÙ‘FØ×!Ñ!¤)¬H°VÓ,<Ó"=ÀÑ"EÔFä"ˆDØ�}‰}˜UÔ#ØØ�tŠ|Ø×%Ñ% dÔ+Ø×%Ñ% g°Ñ&;Ô<ØØ�}‰}˜UÔ#Ü˜$Ÿ*™*›, q™/¨!¨"Ð-Ó.°Ñ8�Ø" SÑ(’Ø—‘˜uÔ%Ø—z‘z“|�Ü˜d 1™g›�Ø !Ò#Ø ™‘Aà�AØ×%Ñ%¤i°£l°TÑ&9Ô:Ü˜4 ™7 1 2˜;Ó'¨(Ñ2�Ø—x‘x ¨$¡ °$°q°r°(Ñ :Ó;‘Ø—‘˜uÔ%Ø×%Ñ% d§l¡l°4¸Ó&>Õ?Ø—‘˜tÔ$Ø×%Ñ% d§l¡l°4¸Ó&>Õ?Ø—‘˜tÔ$Ø×%Ñ% d§l¡l°4¸Ó&>Ô?Ø×!Ñ! $Ö'ð5 #ñ6 Ø×!Ñ! #Ô&Ø×Ñ˜eÔ$Ø—)‘)˜NÓ+×2Ñ2°7Ó;ˆÜ×Ñ˜t W°gÐÔ>ØˆØ—O”OˆDÜ˜T 4Õ(ð $àˆ
r)   r~  )Nrê  Nr   r   )Nrê  NF)NNrê  Nr   NFF)Nr…  r   NNr   r   )r.   r/   r0   rŠ   r!  r
  ri   r  r  r«   r(
  r,
  rÙ   r¡   r©   ÚOptionalr  r\  r#  r3   r%  r¢   r6  r¿  r,   r)   r(   r¾  r¾  7A  sé   „ óð" ñó ðó
*óX/ò,ðd #Ø*.Ø Ø#'ØØØ"'Ø$ñ`Ø ð`àð`ð —,‘,˜s D˜yÑ)ð`ð ð	`ð
 —/‘/ $Ñ'ð`ð ð`ð !ð`ð ð`ð ð`ð  ð`ð ð`ð ó`ôDDr)   r¾  c                   óˆ  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	ddddddd	œd
„Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zd„ Zdefd„Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Z ed „ «       Z!d!„ Z"d"„ Z#d#„ Z$ed$„ «       Z%ed%„ «       Z&ed&„ «       Z'ed'„ «       Z(d(„ Z)d)„ Z*ed*„ «       Z+eZ,eZ-e'Z.e(Z/y)+rÒ  a  
    IRect() - all zeros
    IRect(x0, y0, x1, y1) - 4 coordinates
    IRect(top-left, x1, y1) - point and 2 coordinates
    IRect(x0, y0, bottom-right) - 2 coordinates and point
    IRect(top-left, bottom-right) - 2 points
    IRect(sequ) - new from sequence or rect-like
    c                 óJ   — t         j                  | |«      j                  «       S r+   )r  r÷
  r  r¶  s     r(   r÷
  zIRect.__add__%C  ó   € Ü�|‰|˜D !Ó$×*Ñ*Ó,Ð,r)   c                 óJ   — t         j                  | |«      j                  «       S r+   )r  r"  r  r’  s     r(   r"  zIRect.__and__(C  rO  r)   c                 ó.   — t         j                  | |«      S r+   )r  rÈ  r’  s     r(   rÈ  zIRect.__contains__+C  s   € Ü× Ñ   qÓ)Ð)r)   c                 óØ   — t        |d«      syt        |«      dk(  xrN | j                  |d   k(  xr: | j                  |d   k(  xr& | j                  |d   k(  xr | j
                  |d   k(  S ró  )r9   r6   rø  rú  r÷  rù  r  s     r(   rÿ
  zIRect.__eq__.C  sk   € Ü�q˜)Ô$ØÜ�1‹v˜‰{Òj˜tŸw™w¨!¨A©$™Òj°4·7±7¸aÀ¹d±?ÒjÀtÇwÁwÐRSÐTUÑRVÁÒjÐ[_×[bÑ[bÐfgÐhiÑfjÑ[jÐjr)   c                 ód   — | j                   | j                  | j                  | j                  f|   S r+   r)  rÚ  s     r(   rN  zIRect.__getitem__3C  rö  r)   c                 ó*   — t        t        | «      «      S r+   r½  r-   s    r(   rD  zIRect.__hash__6C  r¾  r)   Nr+  c          
      óV   — t        |||||||dœŽ\  | _        | _        | _        | _        y )Nr+  )Úutil_make_irectrø  rú  r÷  rù  r.  s           r(   rŠ   zIRect.__init__9C  s-   € Ü-<¸tÈÈrÐVXÐ]_ÐdfÐkmÒ-nÑ*ˆŒ�”˜$œ' 4¥7r)   c                  ó   — yrû  r,   r-   s    r(   r  zIRect.__len__<C  r  r)   c                 óJ   — t         j                  | |«      j                  «       S r+   )r  r  r  r  s     r(   r  zIRect.__mul__?C  rO  r)   c                 óv   — t        | j                   | j                   | j                   | j                   «      S r+   )rÒ  rø  rú  r÷  rù  r-   s    r(   r  zIRect.__neg__BC  s+   € Ü�d—g‘g�X §¡˜x¨$¯'©'¨°D·G±G°8Ó<Ð<r)   c                 óJ   — t         j                  | |«      j                  «       S r+   )r  r6  r  r’  s     r(   r6  zIRect.__or__EC  s   € Ü�{‰{˜4 Ó#×)Ñ)Ó+Ð+r)   c                 ó   — t        | «      S r+   )rÒ  r-   s    r(   r  zIRect.__pos__HC  r~  r)   c                 ó0   — dt        t        | «      «      z   S )NrÒ  r  r-   s    r(   rÚ   zIRect.__repr__KC  rÈ  r)   c                 ó–   — t        |«      }|dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y |dk(  r|| _        y t        d«      ‚r  )r3   rø  rú  r÷  rù  ræ  r  s      r(   r  zIRect.__setitem__NC  sg   € Ü�‹FˆØ�!ŠV˜q�T”Wð ð �!ŠV˜q�T”Wð
 ð	 �!ŠV˜q�T”Wð ð �!ŠV˜q�T”Wð ô Ð1Ó2Ð2r)   c                 óJ   — t         j                  | |«      j                  «       S r+   )r  r   r  r¶  s     r(   r   zIRect.__sub__XC  rO  r)   c                 óJ   — t         j                  | |«      j                  «       S r+   )r  r&  r  r  s     r(   r&  zIRect.__truediv__[C  s   € Ü×Ñ  aÓ(×.Ñ.Ó0Ð0r)   c                 óB   — t        | j                  | j                  «      S r>  r?  r-   s    r(   rÜ  zIRect.bottom_left^C  r@  r)   c                 óB   — t        | j                  | j                  «      S rB  rC  r-   s    r(   rÙ  zIRect.bottom_rightcC  r@  r)   c                 óH   — t        d| j                  | j                  z
  «      S r…   rI  r-   s    r(   rÅ  zIRect.heighthC  rJ  r)   c                 ó$   — | j                  |«      S )zCheck if x is in the rectangle.rE  r’  s     r(   rF  zIRect.containslC  rG  r)   rÀ  c                 ó„   — |r|d   }nd}dddddœ}||   d   ||   d   z  d	z  }|| j                   z  | j                  z  S )
zUCalculate area of rectangle.
parameter is one of 'px' (default), 'in', 'cm', or 'mm'.r   rK  )r   r   rÐ  rÒ  rÓ  rÔ  r   r   r7  )r'   rä  rÝ  rÞ  r¸  s        r(   Úget_areazIRect.get_areapC  sW   € áØ˜‘7‰DàˆDØ °LÈÑUˆØˆt‰W�Q‰Z˜!˜D™' !™*Ñ$¨Ñ*ˆØ�4—:‘:‰~ §¡Ñ+Ð+r)   c                 óP   — | j                   j                  |«      }|j                  S )z$Extend rectangle to include point p.)rä   r4  r  )r'   r�  rä   s      r(   r4  zIRect.include_pointzC  s    € à�y‰y×&Ñ& qÓ)ˆØ�z‰zÐr)   c                 óP   — | j                   j                  |«      }|j                  S )z(Extend rectangle to include rectangle r.)rä   r5  r  )r'   r  rä   s      r(   r5  zIRect.include_rectC  s    € à�y‰y×%Ñ% aÓ(ˆØ�z‰zÐr)   c                 óJ   — t         j                  | |«      j                  «       S )z4Restrict rectangle to intersection with rectangle r.)r  r!  r  r  s     r(   r!  zIRect.intersect„C  s   € ä�~‰~˜d AÓ&×,Ñ,Ó.Ð.r)   c                 ó.   — t         j                  | |«      S r+   )r  rS  r’  s     r(   rS  zIRect.intersectsˆC  s   € Ü�‰˜t QÓ'Ð'r)   c                 ój   — | j                   | j                  k\  xs | j                  | j                  k\  S rU  rV  r-   s    r(   r�  zIRect.is_empty‹C  rW  r)   c                 ó¦   — | j                   | j                  cxk(  xr	 t        k(  nc xr( | j                  | j                  cxk(  xr	 t
        k(  S c S )zTrue if rectangle is infinite.rY  r-   s    r(   rœ  zIRect.is_infinite�C  rZ  r)   c                 ój   — | j                   | j                  k  xr | j                  | j                  k  S r\  rV  r-   s    r(   r]  zIRect.is_valid•C  r^  r)   c                 óf   — | j                   r
t        «       S | j                  j                  ||«      S r`  ra  rb  s      r(   rÚ  zIRect.morphšC  rc  r)   c           	      ój   — t        j                  t        | D �cg c]  }||z  ‘Œ	 c}«      «      S c c}w r+   rë
  rï
  s     r(   r?  z
IRect.norm¢C  rñ
  rò
  c                 óö   — | j                   | j                  k  r#| j                   | j                  c| _        | _         | j                  | j                  k  r#| j                  | j                  c| _        | _        | S )z)Replace rectangle with its valid version.rç  r-   s    r(   r¸  zIRect.normalize¥C  rf  r)   c                 ón   — t        | j                  | j                  | j                  | j                  «      S rh  ri  r-   s    r(   rú  z
IRect.quad­C  rj  r)   c                 ó   — t        | «      S r+   r8  r-   s    r(   rä   z
IRect.rect²C  s   € ä�D‹zÐr)   c                 óB   — t        | j                  | j                  «      S rn  ro  r-   s    r(   rØ  zIRect.top_left¶C  r@  r)   c                 óB   — t        | j                  | j                  «      S rq  rr  r-   s    r(   rÛ  zIRect.top_right»C  r@  r)   c           	      óš  — t        |«      }| j                  s$| j                  s|j                  s|j                  rt        d«      ‚t	        dddd| j
                   | j                   «      t	        |j                  | j                  z  |j                  | j                  z  «      z  t	        dddd|j
                  |j                  «      z  S rt  ru  r  s     r(   rv  zIRect.torectÀC  sž   € ä�‹GˆØ×Ò˜tŸ}š}°·²ÀÇÂÜÐFÓGÐGä�q˜!˜Q  D§G¡G 8¨d¯g©g¨XÓ6Ü˜Ÿ™ 4§:¡:Ñ-¨q¯x©x¸$¿+¹+Ñ/EÓFñGä˜˜A˜q ! Q§T¡T¨1¯4©4Ó0ñ1ð	r)   c                 óJ   — t         j                  | |«      j                  «       S r+   )r  rá  r  r  s     r(   rá  zIRect.transformËC  s   € Ü�~‰~˜d AÓ&×,Ñ,Ó.Ð.r)   c                 óH   — t        d| j                  | j                  z
  «      S r…   rz  r-   s    r(   rJ  zIRect.widthÎC  rJ  r)   )0r.   r/   r0   rN  r÷
  r"  rÈ  rÿ
  rN  rD  rŠ   r  r  r  r6  r  rÚ   r  r   r&  r!  rÜ  rÙ  rÅ  rF  r\  re  r4  r5  r!  rS  r�  rœ  r]  rÚ  r?  r¸  rú  rä   rØ  rÛ  rv  rá  rJ  rØ  r'  r×  r¥  r,   r)   r(   rÒ  rÒ  C  sš  „ ñò-ò-ò*òkò
7ò!ð "&¨$°4¸DÀTÈdô oòò-ò=ò,òò*òò-ò1ð ñ'ó ð'ð ñ'ó ð'ð ñ)ó ð)ò$ð, ó ,òò
ò
/ò(ð ñ8ó ð8ð ñ_ó ð_ð ñ9ó ð9ò%ò3òð ñ8ó ð8ð ñó ðð ñ'ó ð'ð ñ'ó ð'ò	ò/ð ñ)ó ð)ð 
€BØ	€BØ	€BØ	�Br)   rÒ  )ÚPDF_ÚUCDN_SCRIPT_ÚPDF_ENUM_NAME_)ÚCourierúCourier-ObliqueúCourier-BoldúCourier-BoldObliqueÚ	HelveticaúHelvetica-ObliqueúHelvetica-BoldúHelvetica-BoldObliqueúTimes-RomanúTimes-Italicú
Times-BoldúTimes-BoldItalicr&  r%  r~  r&
  r  Úheitr€  Úhebor�  Úhebirz  Úcourr{  Úcoitr|  Úcobor}  Úcobir‚  Útiror„  Útiborƒ  Útiitr…  Útibir&  Úsymbr%  ÚzadbrÃ  i   €i€ÿÿÚfitzr   r   r8  r   r   r½	  rä  rä  rØ  rµ  rÛ  rˆ  rê  r·  é   )r   é   ÚColorÚ	ColorBurnÚ
ColorDodgeÚDarkenÚ
DifferenceÚ	ExclusionÚ	HardLightÚHueÚLightenrÍ  ÚMultiplyÚNormalÚOverlayÚ
SaturationÚScreenÚ	Softlightc                 ó2   — d| › dt        |||f«      › d|› d�S )Nz<</A<</S/GoTo/D[z	 0 R/XYZ z	]>>/Rect[ú]/BS<</W 0>>/Subtype/Link>>rœ  )r    r{
  r©  rõ  rM  s        r(   rL	  rL	  ýD  s5   € Ð)9¸!¸¸IÄiÐQRÐTUÐWXÐPYÓFZÐE[Ð[dÐefÐdgð  hCñ  (Dr)   c                 ó   — d| › d|› d�S )Nz<</A<</S/GoTo/Dz>>/Rect[r¦  r,   r�  s     r(   rL	  rL	  þD  s   €  °¨s°(¸1¸#Ð=XÑYr)   c                 ó>   — d| › dt        |||f«      › d|› d|› d|› d�S )Nz<</A<</S/GoToR/D[z /XYZ z]/F<</F(ú)/UF(ú)/Type/Filespec>>>>/Rect[r¦  rœ  rÀ  s          r(   rL	  rL	  ÿD  sS   € Ð0AÀ!ÀÀFÌ9ÐVWÐYZÐ\]ÐU^ÓK_ÐJ`Ð`hÐijÐhkÐkpÐqrÐpsð  tMð  NOð  MPð  Pkñ  /lr)   c                 ó   — d| › d|› d|› d�S )Nz<</A<</S/GoToR/Dz/F(ú	)>>/Rect[r¦  r,   ©r    r{
  r©  s      r(   rL	  rL	   E  s   € Ð$4°Q°C°s¸1¸#¸YÀqÀcÐIdÑ"er)   c                 ó   — d| › d|› d|› d�S )Nz<</A<</S/Launch/F<</F(r©  rª  r¦  r,   r­  s      r(   rL	  rL	  E  s   € Ð$:¸1¸#¸UÀ1À#ÐE^Ð_`Ð^aÐa|Ñ"}r)   c                 ó   — d| › d|› d�S )Nz<</A<</S/URI/URI(r¬  r¦  r,   r�  s     r(   rL	  rL	  E  s   € Ð/°¨s°)¸A¸3Ð>YÑZr)   c                 ó   — d| › d|› d�S )Nz<</A<</S/GoTo/D(z)/Type/Action>>/Rect[r¦  r,   r�  s     r(   rL	  rL	  E  s   € Ð 0°°Ð3HÈÈÐKfÑgr)   )rG  Úgoto2rJ  rK  rL  rM  rá  c                   ó   — e Zd ZdZy)r   z0Raised for documents with file structure issues.N©r.   r/   r0   rN  r,   r)   r(   r   r   E  s   „ Ù:Ør)   r   c                   ó   — e Zd ZdZy)r  zRaised if file does not exist.Nr³  r,   r)   r(   r  r  
E  s   „ Ù(Ør)   r  c                   ó   — e Zd ZdZy)rü  z5Raised when creating documents from zero-length data.Nr³  r,   r)   r(   rü  rü  E  s   „ Ù?Ør)   rü  rþ   r  Úbidir  rž  r‹  r©  rÕ	  rô  rÈ  re  rg  zcs-nameÚdarL  Údescriptionr  rX  Úeffectrý  rd   rè   r¬  Ú
char_flagsrH  r  rÅ  r&  r¥  r@   r¥  rä  rá  rh  r   r8  rp  rä   r¦  rð  ÚspansrU  rK  ri  r   rf  r·   r  rJ  rq
  rý   r©  rª  )ÚfontdescriptorsÚfontbuffersÚloader(   ©é·   gq=
×£pÝ?r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  )rä  ç      Ð?)rÔ	  çZd;ßOÕ?)é"   ç7‰A`åÐæ?)é#   r#  )rs	  çÅ °rh‘á?)é%   ç-²�ï§ê?)é&   gL7‰A`åè?)é'   çj¼t“Ü?)rÇ  rÂ  )é)   rÂ  )é*   r#  )é+   rÆ  )é,   rÁ  )é-   rÆ  )é.   rÁ  )é/   ç˜nƒÀÊÑ?)é0   r#  )é1   r#  )r¦  r#  )é3   r#  )é4   r#  )é5   r#  )é6   r#  )é7   r#  )é8   r#  )é9   r#  )é:   rÓ  )é;   rÓ  )é<   rÆ  )é=   rÆ  )é>   rÆ  )é?   gÑ"Ûù~jÜ?)rä  rÆ  )éA   ç´Èv¾Ÿç?)éB   çòÒMbXå?)éC   rä  )éD   g/Ý$�•ã?)éE   çZd;ßO�ã?)éF   çÑ"Ûù~jè?)éG   ç²�ï§ÆKã?)r»  rä  )éI   rÂ  )éJ   çþÔxé&1ä?)éK   rä  )éL   çÁÊ¡E¶óå?)éM   g¦›Ä °rì?)éN   rä  )éO   rä  )éP   çú~j¼t“è?)éQ   gƒÀÊ¡E¶ç?)éR   g˜nƒÀÊá?)éS   g‹lçû©ñâ?)éT   rê  )éU   ç®Gázæ?)éV   rË  )éW   rù  )éX   g¤p=
×£ä?)éY   çq=
×£pé?)r¢  rê  )é[   rÂ  )é\   gV-²�ë?)é]   rÂ  )é^   çu“Vå?)r¯  r#  )é`   r#  )éa   rñ  )éb   rÆ  )rÁ  rÆ  )ri  çV-²�ß?)ée   rË  )éf   çyé&1¬à?)ég   ççû©ñÒMÚ?)éh   rî  )éi   çu“VÕ?)éj   rî  )ék   rÆ  )él   rÆ  )ém   ç;ßO�—nâ?)én   r  )éo   rÆ  )ép   rÆ  )éq   r  )ér   rÆ  )és   rî  )ét   rË  )éu   r  )év   rÄ  )éw   rô  )éx   gZd;ßO�ß?)éy   rô  )éz   r  )é{   ç¸…ëQ¸Þ?)é|   r!  )é}   r)  )é~   rÆ  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  r¿  )é    rÁ  )é¡   g×£p=
×ã?)é¢   gV-²�Ï?)é£   rÆ  )é¤   gÇK7‰A`Å?)é¥   rÄ  )é¦   r#  )é§   çj¼t“è?)é¨   r5  )é©   r5  )éª   r5  )é«   çyé&1¬ð?)é¬   rÄ  )é­   rî  )é®   ç/Ý$�•ï?)é¯   rî  )é°   gš™™™™™Ù?)é±   rÆ  )é²   r  )é³   rÆ  )rJ  rÆ  )éµ   r  )é¶   r  r¿  )é¸   rÆ  )é¹   rÆ  )éº   rÆ  )é»   rÆ  )é¼   r   )r¤	  rî  )é¾   r   )é¿   r	  )éÀ   ç¼t“Vê?)éÁ   rô  )éÂ   r  )éÃ   r>  )éÄ   rù  )éÅ   rù  )éÆ   rN  )éÇ   rù  )éÈ   rù  )éÉ   rÄ  )éÊ   rÄ  )éË   rÄ  )éÌ   rÄ  )éÍ   rÄ  )éÎ   rÄ  )éÏ   rÄ  )éÐ   rù  )éÑ   rÄ  )éÒ   çHáz®Gé?)éÓ   ra  )éÔ   g{®Gázì?)éÕ   rN  )éÖ   rÆ  )é×   rÆ  )éØ   rÄ  )éÙ   rî  )éÚ   rî  )éÛ   r:  )éÜ   r>  )éÝ   rî  )éÞ   r>  )éß   rî  )éà   r  )éá   r  )éâ   ra  )éã   ra  )éä   çôýÔxé&é?)éå   rÄ  )éæ   çú~j¼t“Ø?)éç   rw  )éè   rw  )éé   rw  )éê   rw  )éë   rw  )éì   r  )éí   r  )éî   r  )éï   r  r¿  )éñ   r  )éò   gð§ÆK7‰Ñ?)éó   rô  )éô   rô  )éõ   rô  )éö   rw  )é÷   rÆ  )éø   rw  )éù   rw  )éú   rw  )éû   rw  )éü   r  )éý   r  )éþ   r  r¿  (   ©rÀ  çžï§ÆK7é?r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  )rä  rÓ  )rÔ	  ç^ºI+ï?)rÃ  g�—nƒÀî?)rÅ  r‘  )rs	  g\�Âõ(\ï?)rÇ  g5^ºIç?)rÉ  çsh‘í|?é?)rÊ  ra  )rÇ  çZd;ßOé?)rÌ  rÿ  )rÍ  g¸…ëQ¸î?)rÎ  g?5^ºIî?)rÏ  rÆ  )rÐ  g\�Âõ(\ë?)rÑ  çôýÔxé&í?)rÒ  gB`åÐ"Ûí?)rÔ  r”  )rÕ  g=
×£p=î?)r¦  r‘  )rÖ  g)\�Âõ(è?)r×  gßO�—në?)rØ  çü©ñÒMbè?)rÙ  ç'1¬Zè?)rÚ  gƒÀÊ¡Eâ?)rÛ  gD‹lçû©å?)rÜ  rì  )rÝ  çR¸…ëQè?)rÞ  ç}?5^ºIè?)rß  gTã¥›Ä è?)rà  r  )rá  gD‹lçû©á?)râ  gÉv¾Ÿ/á?)rä  gX9´Èvâ?)rã  g¾Ÿ/Ý$æ?)rå  rt  )rç  r�  )rè  r�  )ré  ra  )rë  gÇK7‰A`é?)rí  gœÄ °rhé?)r»  çé&1¬ê?)rï  rN  )rð  r’  )rò  g¶óýÔxéê?)ró  rN  )rõ  rÈ  )rö  r™  )r÷  çd;ßO�—ê?)rø  gð§ÆK7‰í?)rú  g+‡ÙÎç?)rû  g‰A`åÐ"ç?)rü  g+‡ÙÎ÷ç?)rý  ra  )rþ  çòÒMbXé?)r   g=
×£p=æ?)r  ç¢E¶óýÔè?)r  rù  )r  r›  )r¢  r˜  )r  ç9´Èv¾Ÿæ?)r  g-²�ï§æ?)r  gmçû©ñÒå?)r  g;ßO�—næ?)r¯  g;ßO�—nê?)r
  g®Gázê?)r  r’  )r  r’  )rÁ  r�  )ri  g–C‹lçûå?)r  çƒÀÊ¡Eæ?)r  g?5^ºIæ?)r  rt  )r  gÉv¾Ÿ/é?)r  rÄ  )r  r“  )r  g…ëQ¸é?)r  r“  )r  çV-²�ïë?)r  r–  )r  r•  )r  r•  )r  r˜  )r  r˜  )r   ç%�•C‹ì?)r!  r   )r"  r�  )r#  gJ+‡é?)r$  gÕxé&1Ü?)r%  gD‹lçû©Á?)r&  gî|?5^ºÑ?)r'  g�Âõ(\�Ú?)r(  çJ+‡Ù?)r*  r¡  )r+  çÇK7‰A`å?)r,  r¢  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  r�  )r.  g�•C‹lç?)r/  çœÄ °rhá?)r0  r£  )r1  g…ëQ¸í?)r2  ræ  )r3  r—  )r4  r—  )r6  rœ  )r7  g
×£p=
ã?)r8  gh‘í|?5æ?)r9  gÕxé&1ä?)r;  r�  )r<  r�  )r=  r�  )r?  r�  )r@  r�  )rA  r�  )rB  r�  )rC  r�  )rJ  r�  )rD  r�  )rE  r�  r�  )rF  r�  )rG  r�  )rH  r�  )rI  r�  )rJ  r�  )r¤	  r�  )rK  r�  )rL  r�  )rM  r�  )rO  r�  )rP  r�  )rQ  r�  )rR  r�  )rS  r�  )rT  r�  )rU  r�  )rV  r�  )rW  r�  )rX  r�  )rY  r�  )rZ  r�  )r[  r�  )r\  r�  )r]  r�  )r^  r�  )r_  r�  )r`  r�  )rb  r�  )rc  gÏ÷Sã¥›ì?)rd  g7‰A`åÐê?)re  g¨ÆK7‰Að?)rf  gZd;ßOÝ?)rg  çV-²�ïç?)rh  çÅ °rh‘í?)ri  r¤  )rj  gÇK7‰A`í?)rk  çD‹lçû©í?)rl  çV-²í?)rm  r§  )rn  gã¥›Ä °ê?)ro  rŸ  )rp  gåÐ"Ûù~ê?)rq  r¥  )rr  r¥  )rs  gòÒMbXí?)ru  gÃõ(\�Âí?)rv  g˜nƒÀÊí?)rx  goƒÀÊ¡Ý?)ry  g¨ÆK7‰Aì?)rz  ç�—nƒÀê?)r{  r¨  )r|  çX9´Èv¾ë?)r}  r©  )r~  rž  )r  rž  )r€  ç+‡ÙÎ÷ë?r�  )r�  rª  )r‚  r—  )rƒ  gƒÀÊ¡Eî?)r„  çyé&1¬è?)r…  g®Gáz®ë?)r†  r«  )r‡  çÑ"Ûù~jì?)rˆ  g‹lçû©ñî?)r‰  r¬  )rŠ  rš  )r‹  rŸ  )rŒ  r¦  )r�  g
×£p=
ï?r�  r�  c                 ó°   — g }| j                  «       s|S t        |«      D ]*  }|j                  t        j                  | ||z   «      «       Œ, t        |«      S r+   )rû  r8  ri   r�   rã  r  )r’  r:  rC   rE   rL  s        r(   Ú_read_samplesr®  hG  sM   € ð €CØ�>‰>Ôàˆ
Ü�AŽYˆØ�
‰
”E×(Ñ(¨&°&¸1±*Ó=Õ>ð ä�#‹;Ðr)   c                 ó   — || k  xr | |k  S r+   r,   )rD   ÚlowÚhighs      r(   r�  r�  tG  s   € Ø�!‰8Ò!˜˜T™	Ð!r)   c           
      ó¸  — t        j                  | «      }t        |«      D �]6  }|}||v rŒt        j                  | |«      }t        j                  |t        d«      «      }|j                  sŒMt        j                  |«      }t        |dz
  dd«      D �]Á  }t        j                  ||«      }	t        j                  t        j                  |	t        d«      «      t        d«      «      sŒWt        j                  |	t        d«      «      }
t        j                  |	t        d«      «      }|
j                  r\t        j                  t        j                  |
t        d«      «      t        d	«      «      sŒÞt        j                  |
t        d
«      «      }d}t        j                  |«      r-t        j                  |d«      }t        j                  | |«      }n\t        j                  |«      rGt        j                  | j                  «       t        j                  |«      «      \  }}}|j                   }|dk  r�Œ¤|}||v s�Œ¬t        j"                  ||«       �ŒÄ �Œ9 y )Nr„  r   r…  rs  rÀ
  rð  rï  rÿ  ÚGoTorñ  r   )r�   r&  r8  r)  ró   rô   r»   r‰  rŠ  rÛ  rv  Úpdf_lookup_page_numberr
  rr  r¶   rð   rÅ   r‹  )rF  r]  Ú	pagecountrL  r  r/  r�  ræ  rn  r�  rn  r¯  rÇ  rû	  r  rí  s                   r(   r\  r\  xG  sß  € Ü×%Ñ% cÓ*€IÜ�9×ˆØˆØ�‰=Øä×+Ñ+¨S°!Ó4ˆÜ×#Ñ# W¬h°xÓ.@ÓAˆØ× Ò ØÜ×"Ñ" 6Ó*ˆÜ�t˜a‘x  R×(ˆAÜ×#Ñ# V¨QÓ/ˆAÜ×$Ñ$¤e×&8Ñ&8¸!¼XÀiÓ=PÓ&QÔS[Ð\bÓScÔdØÜ×'Ñ'¨¬H°S«MÓ:ˆFÜ×%Ñ% q¬(°6Ó*:Ó;ˆDØ× Ò Ü×(Ñ(¬%×*<Ñ*<¸fÄhÈsÃmÓ*TÔV^Ð_eÓVfÔgØÜ×)Ñ)¨6´8¸C³=ÓA�ØˆCÜ×!Ñ! 4Ô(Ü×,Ñ,¨d°AÓ6�Ü×2Ñ2°C¸Ó@‘Ü×$Ñ$ dÔ+Ü!&×!6Ñ!6¸¿	¹	»ÄU×E]ÑE]Ð_cÓEdÓ!e‘�˜!˜QØ—m‘m�Ø�QŠwÙØˆBØ�W‹}Ü×&Ñ&¨°Ö2ò+ )ñ r)   c                 óº   — t        | t        j                  t        j                  f«      sJ dt	        | «      ›d| ›�«       ‚| j
                  st        t        «      ‚y )Nztype(cond)=z cond=)r<   r�   rÂ   rµ   r·   r»   re   ÚMSG_IS_NO_PDF)Úconds    r(   Ú
ASSERT_PDFr¹  œG  sQ   € Ü�dœUŸ]™]¬E×,=Ñ,=Ð>Ô?ÐYÀKÄDÈÃJÀ=ÐPWÐRVÐQXÐAYÓYÐ?Ø�?Š?ÜœÓ&Ð&ð r)   c                  ó>   — t        t        t        t        t        «      S r+   )rÒ  rè  rç  r,   r)   r(   ÚEMPTY_IRECTr»  ¢G  ó   € Ü”¤/´?ÄOÓTÐTr)   c                  ó*   — t        «       j                  S r+   )Ú
EMPTY_RECTrú  r,   r)   r(   Ú
EMPTY_QUADr¿  ¦G  s   € Ü‹<×ÑÐr)   c                  ó>   — t        t        t        t        t        «      S r+   )r  rè  rç  r,   r)   r(   r¾  r¾  ªG  ó   € Ü”¤´/Ä?ÓSÐSr)   c                 ó0   — t        | «      st        d«      ‚y )Nz No journalling operation started)ÚJM_have_operationre   ©rF  s    r(   r>  r>  ®G  s   € Ü˜SÔ!ÜÐ:Ó;Ð;ð "r)   c                  ó>   — t        t        t        t        t        «      S r+   )rÒ  rç  rè  r,   r)   r(   ÚINFINITE_IRECTrÆ  ³G  r¼  r)   c                  ó*   — t        «       j                  S r+   )r&  rú  r,   r)   r(   r  r  ·G  s   € Ü‹?×ÑÐr)   c                  ó>   — t        t        t        t        t        «      S r+   )r  rç  rè  r,   r)   r(   r&  r&  »G  rÁ  r)   c                 óh   — t        | t        j                  «      sJ ‚t        j                  | «      }|S )z3
    Turn fz_buffer into a Python bytes object
    )r<   r�   rT  rl
  )r  rE   s     r(   r
  r
  ¿G  s-   € ô �gœuŸ~™~Ô.Ð.Ð.Ü
×
&Ñ
& wÓ
/€CØ€Jr)   c                 ó¤   — | €yt        | t        «      sJ dt        | «      ›�«       ‚| j                  dd«      }d}|D ]  }|t	        |«      z  }Œ |S )NrZ   ztype(c)=r¢	  Úsurrogateescape)r<   rÙ   r·   r²  r¾	  )r©  r{
  rE   Úbbs       r(   r   r   ÈG  s]   € ð& 	€yØÜ�aœÔÐ, (¤$ q£' ˜}Ó,ÐØ	�‰�Ð*Ó+€AØ
€CÛˆØŒs�2‹w‰‰ð à€Jr)   c                 óZ  — t        | t        t        f«      r| }n~t        | d«      r^| j	                  «       }t        |t
        «      r|j                  d«      }t        |t        t        f«      s+t        dt        |«      › �«      ‚t        j                  «       S t        j                  |«      S )zŽ
    Make fz_buffer from a PyBytes, PyByteArray or io.BytesIO object. If a text
    io.BytesIO, we convert to binary by encoding as utf8.
    rf  r¹  z&.getvalue() returned unexpected type: )r<   r  rL  r9   rf  rÙ   r²  re   r·   r�   rT  r�  )r   rm  s     r(   r  r  åG  sŠ   € ô
 �&œ5¤)Ð,Ô-Ø‰Ü	�˜Ô	$Ø�‰Ó ˆÜ�dœCÔ Ø—;‘;˜wÓ'ˆDÜ˜$¤¬	Ð 2Ô3ÜÐDÄTÈ$ÃZÀLÐQÓRÐRä�~‰~ÓÐÜ×/Ñ/°Ó5Ð5r)   c                 ó6   — t        | «      sy t        | |   «      S r+   )r  r\  )rü   r%  s     r(   ÚJM_FLOAT_ITEMrÏ  ÷G  s   € Ü˜CÔ ØÜ��S‘‹?Ðr)   c                 ó^   — |t        | «      k  r| |   }t        |t        t        f«      rd|fS y)Nr   r~  )r6   r<   r3   r\  )rü   r%  rq  s      r(   r/  r/  üG  s0   € Ø
ŒS�‹X‚~Ø�3‰xˆÜ�dœS¤%˜LÔ)Ø�d�7ˆNØr)   c                 óæ  — d}d}d}	d}
|
r|}n|}d}|}t        |«      }t        j                  |«      }t        |«      }t        j                  ||«      }t        j
                  ||«      }t        j                  |«      }t        j                  | «      }|j                  r@t        j                  |«      t        j                  |«      k(  rt        j                  |«      }||k7  �rt        j                  |«      }|j                  r†t        j                  |«      }||	k(  r6t        |«      D ]'  }t        j                  ||t        j                  «       Œ) n­t        |«      D ]'  }t        j                  ||t        j                   «       Œ) nwt        j"                  |«      rt        j$                  d«      }nL|j                  r@t        j                  |«      t        j                  |«      k7  rt        j$                  d«      }t        j&                  ||||«      }|rt        j(                  |«       nt        j*                  |d«       t        j,                  ||«      }|r=t        j.                  ||t        j0                  «       t        j2                  «       «       n<t        j4                  ||t        j0                  «       t        j2                  «       «       t        j6                  |«       |S )zf
    Pixmap creation directly using a short-lived displaylist, so we can support
    separations.
    r   r   r   TNr¥	  )rÀ  r�   ro  rí  Úfz_intersect_rectr–  Úfz_round_rectÚfz_document_output_intentr»   r—  Úfz_keep_colorspaceÚfz_page_separationsÚfz_count_separationsr8  Úfz_set_separation_behaviorÚFZ_SEPARATION_SPOTÚFZ_SEPARATION_COMPOSITEÚfz_page_uses_overprintÚfz_new_separationsrÓ  r  r  r¢  rs  r_  r»  Úfz_run_page_contentsrt  )r  rÅ   rË  rÌ  rÉ  r�  rï  Ú
SPOTS_NONEÚSPOTS_OVERPRINT_SIMÚ
SPOTS_FULLÚFZ_ENABLE_SPOT_RENDERINGÚspotsrî  rÈ  rÆ  rä   Úrclipr  ÚoirC   rL  rÍ  rw  s                          r(   r·  r·  H  sQ  € ð
 €JØÐØ€Jà#ÐÙØ#‰àˆà€DØ€Jä˜sÓ#€FÜ×Ñ˜tÓ$€DÜ˜DÓ!€EÜ×"Ñ" 4¨Ó/€DÜ×"Ñ" 4¨Ó0€DÜ×Ñ˜tÓ$€Dô 
×	(Ñ	(¨Ó	-€Bà	‡}‚}Ü× Ñ  Ó$¬×(=Ñ(=¸bÓ(AÒAÜ×1Ñ1°"Ó5ˆJð �
ÓÜ×(Ñ(¨Ó.ˆØ�?Š?Ü×*Ñ*¨4Ó0ˆAØ˜
Ò"Ü˜qž�AÜ×4Ñ4°T¸1¼e×>VÑ>VÕWñ "ô ˜qž�AÜ×4Ñ4°T¸1¼e×>[Ñ>[Õ\ñ "ä×)Ñ)¨$Ô/ô ×+Ñ+¨AÓ.‰DØ�]Š]œu×4Ñ4°RÓ8¼E×<QÑ<QÐR\Ó<]Ò]ô
 ×+Ñ+¨AÓ.ˆDä
×
'Ñ
'¨
°D¸$ÀÓ
F€CáÜ×Ñ˜cÕ"ä×(Ñ(¨¨dÔ3ä
×
"Ñ
" 6¨3Ó
/€CÙÜ×Ñ˜$ ¤U§^¡^Ó%5´u·~±~Ó7GÕHä×"Ñ" 4¨¬e¯n©nÓ.>ÄÇÁÓ@PÔQÜ	×Ñ˜#ÔØ€Jr)   c                 ó   — | S r+   r,   rO  s    r(   rM  rM  JH  s   € à€Hr)   r�  rÀ  c                 ó.   — t        t        d„ | «      «      S )Nc                 ó:   — t        | «      dk\  rt        | d«      S dS )Ng-Cëâ6?r   r   ©rÙ  r  rO  s    r(   rL	  zJM_TUPLE.<locals>.<lambda>QH  ó   € ¬c°!«f¸ªnœu Q¨›{ÐCÀ!ÐCr)   ©r¢   rÇ  ©r�  s    r(   r£  r£  PH  ó   € Ü”ÑCÀQÓGÓHÐHr)   c                 ó.   — t        t        d„ | «      «      S )Nc                 ó:   — t        | «      dk\  rt        | d«      S dS )Nr¡  r   r   rè  rO  s    r(   rL	  zJM_TUPLE3.<locals>.<lambda>UH  ré  r)   rê  rë  s    r(   Ú	JM_TUPLE3rï  TH  rì  r)   c                 óš   — | €yt        | t        «      r| j                  d«      } t        | t        «      sJ dt	        | «      ›d| ›�«       ‚| S )NrZ   r¢	  ztype(s)=z s=)r<   r  rÑ  rÙ   r·   ©r_  s    r(   rñ   rñ   XH  sM   € Ø€yØÜ�!”UÔØ�H‰H�VÓˆÜ�aœÔÐ1 (¤$ q£' ¨4¨Q¨DÐ1Ó1ÐØ€Hr)   c                 óˆ  — t        | t        j                  «      sJ ‚t        | «      }t        j                  | «      }t        |«      }d}	 t        › d|› |› �}||vrn|dz  }Œt        |«      }t        j                  |t        |«      «      }t        j                  |d|«       d|j                  «       j                  _        y)z
    Add a unique /NM key to an annotation or widget.
    Append a number to 'stem' such that the result is a unique name.
    r   r   Ú-r  N)r<   r�   rÓ   rÏ   rì   r  ÚJM_annot_id_stemrM  Úpdf_new_stringr6   rn  r  r»   r=  )	rÎ   ÚstemrÅ   r  r›  rL  Ústem_idÚresponser   s	            r(   rû  rû  aH  sº   € ô
 �eœUŸ^™^Ô,Ð,Ð,Ü˜5Ó!€DÜ×#Ñ# UÓ+€IÜ  Ó&€EØ	€AØ
Ü%Ð& a¨ v¨a¨SÐ1ˆØ˜%ÑØØ	ˆQ‰ˆð	 ô
 ˜GÓ$€HÜ×Ñ ¬3¨x«=Ó9€DÜ	×Ñ˜	 4¨Ô.Ø-.€D‡H�HƒJ×ÑÕ*r)   c                 ó´  — t        j                  | |d«      }t        j                  |«      st        t        t
        «       t        j                  |t        d«      «      }t        j                  |t        d«      «      dk(  s"t        j                  |t        d«      «      dk(  r!t        j                  |t        d«      |«       yt        t        t
        «       y)z1
    Add OC object reference to a dictionary
    r   r  ry  ÚOCMDr±  N)
r�   rv  rg  rž  ÚMSG_BAD_OC_REFr;  ró   rô   rk  r:  )rF  r   rý   ÚindobjrG  s        r(   rˆ  rˆ  vH  sœ   € ô ×#Ñ# C¨¨qÓ1€FÜ×Ñ˜VÔ$Ü”Ô 0Ô1Ü×Ñ˜v¤x°Ó'7Ó8€EÜ×Ñ˜¤¨£Ó0°AÒ5Ü×Ñ ¤x°Ó'7Ó8¸AÒ=ä×Ñ˜3¤¨£°Õ7ä”Ô 0Õ1r)   c                 óV  — t        «       }d }d}d}d }t        j                  | t        d«      «      }t        j                  |«      r´t        j
                  t        j                  |d«      «      }t        j                  |«      dk(  rst        j                  |d«      }t        t        j                  |«      «      D ]<  }t        j                  t        j                  ||«      «      }|j                  |«       Œ> t        j                  | t        d«      «      }	|	j                  rót        j
                  t        j                  |	t        d«      «      «      }t        j                  t        j                  |	t        d«      «      «      }|d	k(  rd }t        j                  |	t        d
«      «      }|j                  r]t        t        j                  |«      «      D ]<  }t        j                  t        j                  ||«      «      }|j                  |«       Œ> t        j                  | t        d«      «      }|j                  r2t        j                  t        j                  |t        d«      «      «      }t        «       }
||
t        <   t        |«      |
t         <   ||
t"        <   ||
d<   |
S )Nr…  ÚBorderr   r8  r   ÚBSr�	  rÿ  rZ   rñ  ÚBEÚIrM  )r¡   r�   ró   rô   rv  rÜ  rŠ  r‰  r8  rõ   ri   r»   rf  r4   r°  r¢   Údictkey_dashesÚdictkey_style)r  Údash_pyrK  rJ  rM  rü   ÚdashrL  rÿ   Úbs_or  s              r(   rr  rr  †H  s  € Ü‹f€GØ€EØ€EØ€FØ
€Cä
×
Ñ
˜i¬°(Ó);Ó
<€CÜ×Ñ˜3ÔÜ×!Ñ!¤5×#6Ñ#6¸¸QÓ#?Ó@ˆÜ×Ñ Ó$¨Ò)Ü×&Ñ&¨¨QÓ/ˆDÜœE×/Ñ/°Ó6Ö7�Ü×&Ñ&¬×(;Ñ(;¸TÀ1Ó(EÓF�Ø—‘ Õ$ð 8ô ×Ñ˜y¬(°4«.Ó9€DØ‡‚Ü×!Ñ!¤5×#5Ñ#5°t¼XÀc»]Ó#KÓLˆÜ×!Ñ!¤5×#5Ñ#5°t¼XÀc»]Ó#KÓLˆØ�BŠ;ØˆEÜ× Ñ  $¬°«Ó6ˆØ�>Š>ÜœE×/Ñ/°Ó5Ö6�Ü×&Ñ&¬×(;Ñ(;¸SÀ!Ó(DÓE�Ø—‘ Õ$ð 7ô ×
Ñ
˜i¬°$«Ó
8€CØ
‡~‚~Ü×!Ñ!¤5×#5Ñ#5°s¼HÀS»MÓ#JÓKˆä
‹&€CØ€CŒÑÜ  '›?€CŒÑØ€CŒÑØ€Cˆ�NØ€Jr)   c                 óª  — t        «       }t        «       }t        «       }t        j                  | t        j                  «      }t        j
                  |«      r_t        j                  |«      }t        |«      D ]<  }t        j                  t        j                  ||«      «      }|j                  |«       Œ> ||t        <   t        j                  | d«      }t        j
                  |«      r_t        j                  |«      }t        |«      D ]<  }t        j                  t        j                  ||«      «      }|j                  |«       Œ> ||t        <   |S )Nr  )r4   r¡   r�   ró   ÚPDF_ENUM_NAME_Crv  r‰  r8  rÜ  rŠ  ri   Údictkey_strokerë   Údictkey_fill)r  r  ÚbcÚfcr�  rC   rL  rK  s           r(   r�  r�  ®H  s  € Ü
‹&€CÜ	‹€BÜ‹€BÜ×Ñ˜9¤e×&;Ñ&;Ó<€AÜ×Ñ˜!ÔÜ×Ñ Ó"ˆÜ�q–ˆAÜ×#Ñ#¤U×%8Ñ%8¸¸AÓ%>Ó?ˆCØ�I‰I�c�Nð ð €CŒÑä×Ñ˜I tÓ,€AÜ×Ñ˜!ÔÜ×Ñ Ó"ˆÜ�q–ˆAÜ×#Ñ#¤U×%8Ñ%8¸¸AÓ%>Ó?ˆCØ�I‰I�c�Nð ð €CŒÑØ€Jr)   c                 óŽ  — t        | t        «      sJ ‚d }d}| j                  t        «      }| j                  t        «      }| j                  t
        «      }| j                  dd«      }t        |«      }	t        j                  |t        d«      «       t        j                  |t        d«      «       t        j                  |t        d«      «       |dk  r|	j                  t        «      }|€|	j                  t        «      }|€|	j                  t
        «      }|dk  r|	j                  dd«      }t        |t        «      rvt        |«      dkD  rht        |«      }t        j                  ||«      }
|D ]  }t        j                  |
|«       Œ t        j                  ||
t        d«      t        d«      «       t        j                  |t        j                  |«      t        d«      t        d«      «       |dk(  rt!        |«      }nt        d«      }t        j                  ||t        d«      t        d	«      «       |dkD  r‰t        j"                  |t        d«      d
«       t        j$                  |t        d«      «      }t        j&                  |t        d	«      t        d«      «       t        j(                  |t        d«      |«       y y )Nr   rM  r…  rÿ  r   rþ  rñ  r�	  rÿ  r   rÓ  r  )r<   r4   r7   r°  r  r  rr  r�   r-  rô   r¢   r6   r7  Úpdf_array_push_intr  Úpdf_new_realÚJM_get_border_styler>  ró   r:  r5  )ru  r  r  rü   ÚdashlenÚnwidthÚndashesÚnstyleÚncloudsÚoborderÚdarrrõ  s               r(   rP  rP  ÅH  s(  € Ü�fœdÔ#Ð#Ð#Ø
€CØ€GØ�Z‰ZœÓ'€FØ�j‰jœ.Ó)€GØ�Z‰ZœÓ'€FØ�z‰z˜8 RÓ(€Gô ˜yÓ)€Gô 
×Ñ˜	¤8¨D£>Ô2Ü	×Ñ˜	¤8¨D£>Ô2Ü	×Ñ˜	¤8¨HÓ#5Ô6ð �‚zØ—‘œmÓ,ˆØ€Ø—+‘+œ~Ó.ˆØ€~Ø—+‘+œ}Ó-ˆØ�‚{Ø—;‘; ¨"Ó-ˆä�7œEÔ"¤s¨G£}°qÒ'8Ü�w“-ˆÜ×"Ñ" C¨Ó1ˆÛˆAÜ×$Ñ$ d¨AÕ.ð ä×Ñ˜Y¨¬h°t«n¼hÀs»mÔLä	×ÑØÜ×Ñ Ó'Ü�T‹NÜ�S‹Mô	ð �!‚|Ü! 6Ó*‰ä�s‹mˆÜ	×Ñ˜ C¬°$«¼À#»ÔGà�‚{Ü×Ñ ¬H°T«N¸AÔ>Ü× Ñ  )¬X°d«^Ó<ˆÜ×Ñ˜C¤¨#£´¸³Ô>Ü×Ñ ¤X¨c£]°GÕ<ð	 r)   c                 ó€   — | dk(  ryd| cxk  rdk  sn | dk(  rt        | «      S d| cxk  rdk  ry | d	k  rd
| z  S d| z  S )Nr  z\u005crä  é   rˆ  i Ø  iÿß  z\ufffdéÿÿ  z\u%04xz\U%08x©r¾	  ©rs
  s    r(   Úmake_escaper  ûH  sV   € Ø	ˆR‚xØØ	ˆrŒ�SŒ˜B "šHÜ�2‹wˆØ	�2Ô	˜Ò	Øð 
 à	ˆvŠØ˜2‰~Ðà˜2‰~Ðr)   c                 óB   — t        j                  | t        |«      «       y)zG
    APPEND non-ascii runes in unicode escape format to fz_buffer.
    N)r�   r�  r  )r=  rs
  s     r(   r�  r�  I  s   € ô 
×Ñ˜4¤¨R£Õ1r)   c                 ó  — t        |«      }|j                  |j                  |j                  |j                  ||||f}| j                  |«       |dz   t        j                  t        j                  j                  «      fS )z'
    Functions for wordlist output
    r   )	r
  rø  rú  r÷  rù  ri   r�   rU  rŠ  )rä  r=  rì  r“  r—  rí  r_  r›  s           r(   rè  rè  I  sm   € ô 	˜tÓ$€Aà�H‰HØ�H‰HØ�H‰HØ�H‰HØØØØð	€Eð 
‡L�L�ÔØ�A‰:”u—|‘|¤E§L¡L×$<Ñ$<Ó=Ð=Ð=r)   c                 ó`  — t        | «      }t        j                  |t        d«      «      }t        j                  |«      s t        j
                  |t        d«      d«      }t        j                  | d«      }t        j                  |t        d«      |«       |� t        j                  |t        d«      |«       t        j                  |t        d«      t        d«      «       t        j
                  |t        d	«      d«      }|sn•t        j                  |t        d
«      «      }t        |«      }	t        |	«      D ]]  }
d}t        ||
«      \  }}|dk(  rŒt        j                  | |d«      }t        j                  ||«      sŒHt        j                  ||«       Œ_ t        j                  ||«       y)z1
    Add OC configuration to the PDF catalog
    rƒ  r   r   rü  Nr  Ú	BaseStater†  r…  r‚  r   )r‡  r�   ró   rô   rv  r„  r?  rm  r:  r6   r8  r/  rv  Úpdf_array_containsrx  )rF  r   ru  r…  r’  Úconfigsrñ  ÚonarrayrL  rC   rL  rý   rM  Úinds                 r(   rs  rs  "I  s^  € ô ! #Ó
&€CÜ× Ñ  #¤x°	Ó':Ó;€GÜ×Ñ˜wÔ'Ü×*Ñ*¨C´¸)Ó1DÀaÓHˆÜ×Ñ˜C Ó#€AÜ	×"Ñ" A¤x°Ó'7¸Ô>ØÐÜ×&Ñ&¨¬8°IÓ+>ÀÔHÜ	×Ñ˜œ8 KÓ0´(¸5³/ÔBÜ×&Ñ&¨¬8°D«>¸1Ó=€GÙØä×!Ñ! 3¬°Ó(8Ó9ˆÜ�‹GˆÜ�q–ˆAØˆDÜ! " aÓ(‰GˆAˆtØ�AŠvØÜ×(Ñ(¨#¨t°QÓ7ˆCÜ×'Ñ'¨¨sÕ3Ü×$Ñ$ g¨sÕ3ð ô 
×Ñ˜' 1Õ%r)   c                 ó(  — t        | |«      }t        j                  |«      }| j                  j                  s|S |j
                  |j                  |j                  j                  z   k  r(|j
                  |j                  j                  z
  |_        |S )z"
    return rect of char quad
    )ÚJM_char_quadr�   r'  r»   rq
  rù  rú  r¦  )rm   rs
  r*  r  s       r(   r�  r�  @I  sp   € ô 	�T˜2Ó€AÜ×Ñ Ó"€AØ�?‰?× Ò ØˆØ‡t�tˆa�d‰d�R—]‘]×'Ñ'Ñ'Ò'Ø�t‰t�b—m‘m×(Ñ(Ñ(ˆŒØ€Hr)   c                 ó(  — d}|r|r|t        ||«      z  }|t        j                  | «      t        z  z  }|t        j                  | «      t
        z  z  }|t        j                  | «      t        z  z  }|t        j                  | «      t        z  z  }|S r…   )
Údetect_super_scriptr�   r›
  ÚTEXT_FONT_ITALICr 
  ÚTEXT_FONT_SERIFEDr�
  ÚTEXT_FONT_MONOSPACEDr™
  ÚTEXT_FONT_BOLD)rH  rm   rs
  r¬  s       r(   ÚJM_char_font_flagsr.  MI  sŽ   € Ø€EÙ‘ØÔ$ T¨2Ó.Ñ.ˆØ	ŒU×$Ñ$ TÓ*Ô-=Ñ=Ñ=€EØ	ŒU×#Ñ# DÓ)Ô,=Ñ=Ñ=€EØ	ŒU×(Ñ(¨Ó.Ô1EÑEÑE€EØ	ŒU×"Ñ" 4Ó(¬>Ñ9Ñ9€EØ€Lr)   c                 óÚ
  — t         r=t        j                  t        j                  | j
                  |j
                  «      «      S t        | t        j                  «      sJ ‚t        |t        j                  «      sJ ‚t        j                  r|j                  S | j
                  j                  r|j                  S t        j                  t        j                  |j
                  j                  «      «      }t!        |«      }t#        |«      }|j
                  j$                  }||z
  t&        z   }|dk\  r<t        j(                  dk(  r)t        j                  |j
                  j                  «      S |j
                  j$                  }t        j*                  |«      }|j,                  |j.                  z
  }|dk  rd}d}d}t        j(                  s|dk  r
||z  }||z  }||z
  }||z  |z  }||z  |z  }| j
                  j0                  j2                  }	| j
                  j0                  j4                  }
t        j6                  |	|
 |
|	dd«      }t        j6                  |	|
|
 |	dd«      }|	dk(  rd|_        d|_        t        j6                  dddd|j
                  j:                  j2                   |j
                  j:                  j4                   «      }t        j6                  dddd|j
                  j:                  j2                  |j
                  j:                  j4                  «      }t        j<                  t        j                  |j
                  j                  «      |«      }t        j<                  ||«      }|	dk(  r^|j>                  j4                  dkD  rE||j>                  _        ||j@                  _        ||jB                  _        ||jD                  _        nH| |j>                  _        | |j@                  _        | |jB                  _        | |jD                  _        |jB                  j2                  dk  r"d|jB                  _        d|j>                  _        |jD                  j2                  |jB                  j2                  z
  }|t&        k  r§t        jF                  ||j
                  jH                  «      }|r{t        jJ                  ||| j
                  j                  «      }|jB                  j2                  ||z  z   |jD                  _        |jD                  j2                  |j@                  _        t        j<                  ||«      }t        j<                  ||«      }|S )zI
    re-compute char quad if ascender/descender values make no sense
    r   r   r¡  çš™™™™™¹¿çÍÌÌÌÌÌì?rŒ  r…  )&r  r�   rù  r   r'  r»   r<   ÚFzStextLineÚFzStextCharrp  r‰   rú  rq
  ÚFzFontÚll_fz_keep_fontrH  ÚJM_font_ascenderÚJM_font_descenderr¦  ÚFLT_EPSILONr‡   ri
  r÷  rø  rX  r  r  r  rõ  rp  Úfz_transform_quadr”  r
  r  r	  r  r©  r  )rm   rs
  rH  r/  r0  rä  Úasc_dscr  Úfwidthr©  r_  Útrm1Útrm2Úxlate1Úxlate2rú  Úcwidthr  s                     r(   r'  r'  XI  s  € õ ô �|‰|œE×.Ñ.°·±ÀÇÁÓOÓPÐPä�dœE×-Ñ-Ô.Ð.Ð.Ü�bœ%×+Ñ+Ô,Ð,Ð,Ü×%Ò%Ø�w‰wˆØ‡�×ÒØ�w‰wˆÜ�<‰<œ×-Ñ-¨b¯m©m×.@Ñ.@ÓAÓB€DÜ
˜4Ó
 €CÜ
˜DÓ
!€CØ�M‰M×Ñ€EØ�C‰iœ+Ñ%€GØ�!‚|œ×4Ñ4¸Ò9Ü�|‰|˜BŸM™M×.Ñ.Ó/Ð/ð
 �M‰M×Ñ€EÜ×Ñ˜dÓ#€DØ�W‰W�t—w‘wÑ€FØ
ˆT‚zØˆØˆØˆä×#Ò# w°¢{Ø�G‰mˆØ�G‰mˆØ�C‰i€GØ
�‰+˜Ñ
€CØ
�‰+˜Ñ
€Cð
 	�‰×Ñ×Ñ€AØ�‰×Ñ×Ñ€AÜ×Ñ  A 2 q¨!¨Q°Ó2€DÜ×Ñ  1 q b¨!¨Q°Ó2€DØ	ˆRŠØˆŒØˆŒÜ×!Ñ! ! Q¨¨1¨r¯}©}×/CÑ/C×/EÑ/EÐ.EÈÏÉ×H\ÑH\×H^ÑH^ÐG^Ó_€FÜ×!Ñ! ! Q¨¨1¨b¯m©m×.BÑ.B×.DÑ.DÀbÇmÁm×FZÑFZ×F\ÑF\Ó]€Fä×"Ñ"¤5§<¡<°·±×0BÑ0BÓ#CÀVÓL€DÜ×"Ñ" 4¨Ó.€Dð 	ˆA‚v�$—'‘'—)‘)˜a’-Øˆ�‰Œ	Øˆ�‰Œ	Øˆ�‰Œ	Øˆ�‰�	à�Dˆ�‰Œ	Ø�Dˆ�‰Œ	Ø�Dˆ�‰Œ	Ø�Dˆ�‰Œ	ð
 ‡w�w‡y�y�1‚}Øˆ�‰Œ	Øˆ�‰Œ	à�W‰W�Y‰Y˜Ÿ™Ÿ™Ñ"€FØ”ÒÜ×)Ñ)¨4°·±·±ÓAˆÙÜ×+Ñ+¨T°5¸$¿/¹/×:OÑ:OÓPˆFØŸ™Ÿ	™	 F¨U¡NÑ2ˆD�G‰GŒIØŸ™Ÿ	™	ˆD�G‰GŒIä×"Ñ" 4¨Ó.€DÜ×"Ñ" 4¨Ó0€DØ€Kr)   c           
      óÜ  — t        j                  | j                  «      }t        j                  | d«      }t	        |«      }|dk(  ryt        j
                  |t        d«      «      }g }t        |«      D ]ö  }t        j                  t        j                  ||«      «      }|dk(  rŒt        j                  t        j                  t        j                  ||«      d«      «      t        j                  t        j                  t        j                  ||«      d«      «      f}|j                  |«       Œ½t        j                  t        j                  ||«      «      }|j                  |«       Œø |S )z8
    return list of choices for list or combo boxes
    r   NÚOptr   r   )r�   rì   r³   Úpdf_choice_widget_options2r6   ró   rô   r8  r‰  rŠ  rð   ri   )	rÎ   r  rª  rC   Úoptarrr1  rL  rm  rÿ   s	            r(   ÚJM_choice_optionsrE  ±I  s%  € ô ×#Ñ# U§Z¡ZÓ0€Iä×+Ñ+¨U°AÓ6€DÜˆT‹
€AØˆA‚vØä×Ñ ¬H°U«OÓ<€FØ€Eä�AŽYˆÜ×Ñ¤×!4Ñ!4°f¸aÓ!@ÓAˆØ�Š6ä×,Ñ,¬e×.AÑ.AÄ5×CVÑCVÐX^Ð`aÓCbÐdeÓ.fÓgÜ×,Ñ,¬e×.AÑ.AÄ5×CVÑCVÐX^Ð`aÓCbÐdeÓ.fÓgðˆCð �L‰L˜#Õä×*Ñ*¬E×,?Ñ,?ÀÈÓ,KÓLˆCØ�L‰L˜#Õð ð €Lr)   c                 ó¾  — t        j                  |t        j                  | «      «      }|j                  |j                  z
  }|j
                  |j                  z
  }|dk  s|dk  ry| j                  «       }||j                  | j                  «       z
  z  | j                  «       |j                  | j                  «       z
  z  z   }t        j                  | j                  «       «      dk(  rÈd|z
  }	 |}t        d|«      D ]Ÿ  }t        j                  | |d«       |dz  }t        j                  | |d«       |dz  }t        j                  | |d«       |dz  }t        j                  | ||«       |dz  }| j                  «       sŒ„t        j                  | |d«       |dz  }Œ¡ ||z  }|dk(  r	 y|dz  }ŒÂ	 |}t        |«      D ]ˆ  }t        | j                  «       dz
  «      D ]  }	t        j                  | ||«       |dz  }Œ  | j                  «       rt        j                  | |d«       |dz  }Œmt        j                  | ||«       |dz  }ŒŠ ||z  }|dk(  r	 y|dz  }Œª)zO
    Clear a pixmap rectangle - my version also supports non-alpha pixmaps
    r   r8  r¥	  r   )r�   Úfz_intersect_irectr3  r÷  rø  rù  rú  rá  r  rC   r  r—  rÈ  r8  râ  rÉ  )
r¯  r¥   r{
  r   r  ÚdestspanÚdestpr_  r  r�  s
             r(   r  r  ÍI  s@  € ô 	× Ñ  ¤E×$8Ñ$8¸Ó$>Ó?€AØ	�‰ˆq�t‰t‰€AØ	�‰ˆq�t‰t‰€AØˆA‚v��a’Øà�{‰{‹}€HØ˜Ÿ™˜tŸv™v›x™Ñ(¨4¯6©6«8°q·t±t¸d¿f¹f»h±Ñ+GÑG€Eô ×Ñ˜TŸ_™_Ó.Ó/°1Ò4Ø�e‘ˆØØˆAÜ˜1˜a–[�Ü×$Ñ$ T¨1¨aÔ0Ø�Q‘�Ü×$Ñ$ T¨1¨aÔ0Ø�Q‘�Ü×$Ñ$ T¨1¨aÔ0Ø�Q‘�Ü×$Ñ$ T¨1¨eÔ4Ø�Q‘�Ø—:‘:•<Ü×(Ñ(¨¨q°#Ô6Ø˜‘F‘Að !ð �XÑˆEØ�AŠvØàð �‰FˆAð# ð( ØˆÜ�q–ˆAÜ˜4Ÿ6™6›8 A™:Ö&�Ü×$Ñ$ T¨1¨eÔ4Ø�Q‘‘ð 'ð �z‰zŒ|Ü×$Ñ$ T¨1¨cÔ2Ø�Q‘‘ä×$Ñ$ T¨1¨eÔ4Ø�Q‘‘ð ð 	�ÑˆØ�Š6Øàð 	
ˆQ‰ˆð r)   c                 ó  — t        | t        t        f«      r| g} t        | t        t        f«      sdg fS t        | «      dvrdg fS | d d  }t        t        |«      «      D ]  }||   dk  s	||   dkD  sŒd||<   Œ t        |«      |fS )Nr…  )r   r   r   r8  r   r   )r<   r3   r\  r¡   r¢   r6   r8  )rô  rE   rL  s      r(   r'  r'  J  sŒ   € ä�%œ#œu˜Ô&Ø�ˆä�uœt¤U˜mÔ,Ø�2ˆvˆä
ˆ5ƒz˜Ñ%Ø�2ˆvˆà
‘ˆ(€CÜ”3�s“8Ž_ˆØˆq‰6�AŠ:˜˜Q™ !›ØˆC�ŠFð ô ˆs‹8�Sˆ=Ðr)   c                 ó~  — t         r t        j                  | j                  |«      S t	        «       }d}t        j                  | «      }t        j                  |t        j                  t        |«      «      «      }| j                  «       }|j                  |j                  z
  }|j                  |j                  z
  }| j                  «       }||z  }	||j                  | j!                  «       z
  z  |j                  | j#                  «       z
  |z  z   }
t%        | |
|«      }d}t        j&                  |«      r|S t)        |«      D ]X  }t)        d|	|«      D ]A  }t%        | |
|z   |«      }||k7  r%|}|j+                  |d «      }|�||z  }|||<   d}|}Œ=|dz  }ŒC |
|z  }
ŒZ |}|j+                  |«      }|�||z  }|||<   |S r  )r  r   Úll_JM_color_countr»   r4   r�   r3  rG  rÓ  rí  rá  r÷  rø  rù  rú  rC   r  r  r®  Úfz_is_empty_irectr8  r7   )r¨  rï  r’   r!  r  rá  rJ  rÅ  rC   Ú	substrider_  ÚoldpixrL  rn  Únewpixr"  r©  s                    r(   r  r  J  s«  € ÝÜ×&Ñ& r§}¡}°dÓ;Ð;ä	‹€BØ
€CÜ× Ñ  "Ó%€EÜ×$Ñ$ U¬E×,?Ñ,?ÄÐPTÓ@UÓ,VÓW€EØ�Y‰Y‹[€FØ�H‰H�u—x‘xÑ€EØ�X‰X˜Ÿ™Ñ €FØ
�‰‹€AØ˜‘	€IØ�%—(‘(˜RŸT™T›VÑ#Ñ$¨¯©°2·4±4³6Ñ(9¸QÑ'>Ñ>€AÜ˜B  1Ó%€FØ
€CÜ×Ñ˜uÔ%Øˆ	Ü�FŽ^ˆÜ˜˜9 aÖ(ˆAÜ" B¨¨A©¨qÓ1ˆFØ˜ÒØ�Ø—F‘F˜E 4Ó(�Ø�=Ø˜1‘H�CØ ��E‘
Ø�Ø‘à�q‘‘ð )ð 	
ˆV‰‰ð ð €EØ
�‰�‹€AØ€}Øˆq‰ˆØ€Bˆ�JØ€Ir)   c                 óâ   — t        j                  | t         j                  «      \  }}|r|dk(  ryt        j                  t        j                  ||«      «      }t        j
                  ||«       |S )z*
    compress char* into a new buffer
    r   N)r�   Ú fz_new_deflated_data_from_bufferÚFZ_DEFLATE_BESTrT  Úfz_new_buffer_from_dataÚfz_resize_buffer)Úinbufferrm  Úcompressed_lengthr®  s       r(   ÚJM_compress_bufferrX  >J  sh   € ô $×DÑDØÜ×!Ñ!óÑ€DÐ
ñ
 Ð$¨Ò)ØÜ
�.‰.œ×6Ñ6°tÐ=NÓOÓ
P€CÜ	×Ñ˜3Ð 1Ô2Ø€Jr)   c                 ó–  — d}t        j                  «       }| D ]�  }|j                  j                  t        j
                  k7  rŒ+|D ]n  }d}|D ]`  }t        ||«      }t        ||«      sŒd}|r|j                  d«       d}|j                  t        |j                  j                  «      «       Œb |sŒmd}Œp ŒŸ |j                  «       }	|	S )Nr   r   r$   )rM  ÚStringIOr»   r·   r�   r‹  r�  rŽ  r   r  r©  rf  )
rÅ   r½  Úneed_new_liner«  r•  rm   Úline_had_textrs
  r  r_  s
             r(   rá  rá  NJ  s·   € Ø€MÜ�[‰[‹]€FÛˆØ×Ñ× Ñ ¤E×$=Ñ$=Ò=ØÛˆDØˆMÛ�Ü   rÓ*�Ü# D¨!Õ,Ø$%�MÙ$ØŸ™ TÔ*Ø()˜Ø—L‘L¤¨R¯]©]¯_©_Ó!=Õ>ð ò Ø !‘ñ ð ð  	�‰Ó€AØ€Hr)   c                 óÖ  — t        j                  «       }d}|}|}||kD  rd}|}|}t        |«      }|}		 t        |	||«      snÎt        j                  | |	«      }
t        j
                  |
«      }t        j                  ||«      \  }}}t        j                  |
|t        j                  «       t        j                  «       «       t        j                  |«       d}t        j                  |||||«      }t        j                  |d|«       |	|z  }	ŒÜt        j                  «       }d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        t        j2                  d«      }t        j4                  |«      }t        j6                  |||«       |j9                  «        t        j:                  |«      }t=        |t>        «      sJ ‚|S )zx
    Convert any MuPDF document to a PDF
    Returns bytes object containing the PDF, created via 'write' function.
    r   r…  Nr8  r   i    ) r�   rµ   r�  r�  r  ro  Úpdf_page_writers  r_  r»  rt  rV  rW  rÈ  rÏ  rË  rÌ  rÍ  rÓ  rÉ  rÊ  rÎ  rÑ  rÒ  rÐ  r¨  r©  rÞ  rë  rl
  r<   r  )r  re  r©  rE  rµ  r_  r_  rM  r@  rL  rÅ   rX  rw  rN  rY  rZ  rª  r  rì  r©  s                       r(   rª  rª  eJ  sÄ  € ô
 ×ÑÓ €FØ€DØ
€AØ
€AØ	ˆB‚wØˆØˆØˆÜ
˜6Ó
"€CØ
€AØ
Ü˜˜1˜aÔ ØÜ×!Ñ! # qÓ)ˆÜ×&Ñ& tÓ,ˆÜ#(×#7Ñ#7¸ÀÓ#IÑ ˆˆY˜Ü×Ñ˜$ ¤U§^¡^Ó%5´u·~±~Ó7GÔHÜ×Ñ˜cÔ"ØˆÜ×%Ñ% f¨h¸¸YÈÓQˆÜ×Ñ˜f b¨(Ô3Ø	ˆT‰	ˆð ô × Ñ Ó"€DØ€D„OØ€DÔØ€DÔØ€DÔØ€DÔØ€DÔØ€D„MØ€DÔØ€D„NØ€D„MØ€D„Nä
×
Ñ
˜dÓ
#€CÜ
�.‰.˜Ó
€CÜ	×Ñ˜V S¨$Ô/Ø×ÑÔÜ×$Ñ$ SÓ)€AÜ�aœÔÐÐØ€Hr)   c           
      óØ  — t        j                  t        j                  t        j                  | «      d«      «      }t        j                  |t         j
                  «      }t        j                  |«      }	 t        | ||«       t        j                  |t        d«      |«       |t         j                  k(  rj|t        t        z  z  }t        j                  t        j                  | «      t        j                  |«      t        d«      t        d«      t        d«      «       t        j                  t        j                  | «      d«      }|j                  s]t        j                   | d«      }t        j                  t        j                  | «      |t        d«      t        d«      t        d«      «       t        j"                  ||«       |S # t$        $ r• t&        r
t)        «        t        j*                  ||«       |t         j                  k(  rZt        j                  t        j                  | «      t        j                  |«      t        d«      t        d«      t        d«      «       ‚ w xY w)	NzRoot/AcroForm/SigFlagsrý  r  r  r{  zRoot/AcroForm/Fieldsr   r¥  )r�   rõ   r£  r   Úpdf_create_annot_rawr!  rì   ÚJM_set_field_typerm  rô   ÚPDF_WIDGET_TYPE_SIGNATUREÚSigFlag_SignaturesExistÚSigFlag_AppendOnlyr  r  r»   r7  rx  re   r÷   rt   rˆ  )	r  rÅ   r·   Ú	fieldnameÚold_sigflagsrÎ   r  r|  r1  s	            r(   rR  rR  šJ  sä  € Ü×#Ñ#¤E×$7Ñ$7¼×8IÑ8IÈ#Ó8NÐPhÓ$iÓj€Lô
 ×&Ñ& t¬U×-CÑ-CÓD€EÜ×#Ñ# EÓ*€Ið&Ü˜#˜y¨$Ô/Ü×&Ñ& y´(¸3³-ÀÔKà”5×2Ñ2Ò2Ø#Ô'>ÔASÑ'SÑTˆHÜ×ÑÜ×%Ñ% cÓ*Ü×%Ñ% hÓ/Ü˜VÓ$Ü˜ZÓ(Ü˜ZÓ(ôô ×"Ñ"¤5×#4Ñ#4°SÓ#9Ð;QÓRˆØ�ŠÜ×&Ñ& s¨AÓ.ˆDÜ×ÑÜ×%Ñ% cÓ*ØÜ˜VÓ$Ü˜ZÓ(Ü˜XÓ&ôô 	×Ñ˜T 9Ô-ð €Løô ò Ý¤NÔ$4Ü×Ñ˜t UÔ+à”5×2Ñ2Ò2Ü×ÑÜ×%Ñ% cÓ*Ü×%Ñ% lÓ3Ü˜VÓ$Ü˜ZÓ(Ü˜ZÓ(ôð 	ðús   Á7EG ÇBI)c                 óŽ  — t         rt        j                  | «      S t        | «      }t	        j
                  t	        j                  | t        d«      «      «      }t	        j                  |«      st	        j                  |«      r|}|j                  |j                  z
  }|j                  |j                  z
  }||_        ||_
        |S )z%
    return a PDF page's CropBox
    rÈ  )r  r   rC  ry  r�   r»  r*  rô   rœ  r›  rù  rú  )rZ  rX  rD  rú  rù  s        r(   rC  rC  ÌJ  s    € õ Ü×Ñ Ó)Ð)ä˜8Ó$€HÜ×ÑÜ×.Ñ.¨x¼À)Ó9LÓMó€Gô × Ñ  Ô)¬U×-CÑ-CÀGÔ-LØˆØ	�‰�w—z‘zÑ	!€BØ	�‰�w—z‘zÑ	!€BØ€G„JØ€G„JØ€Nr)   c                 óÐ   — t        | «      }t        |j                  |j                  z
  «      }t        |j                  |j
                  z
  «      }t        j                  ||«      }|S r+   )rC  rÙ  r÷  rø  rù  rú  r�   Úfz_make_point)rZ  rä   r   r¶  r¦  s        r(   ÚJM_cropbox_sizerj  àJ  sQ   € Ü�hÓ€DÜˆD�G‰G�d—g‘gÑÓ€AÜˆD�G‰G�d—g‘gÑÓ€AÜ×Ñ˜q !Ó$€DØ€Kr)   c                 óB   — t        | «      }t        j                  |«      S )z&
    just the inverse of rotation
    )r•  r�   r  )rÅ   Úmps     r(   r  r  èJ  s   € ô 
˜tÓ	$€BÜ×!Ñ! "Ó%Ð%r)   c                 óÒ  — d}t        j                  | d«      }t        j                  |t        d«      d«       t        j                  |t        d«      d«      }t        j                  |t        d«      |«       t        j                  |t        d«      |«       t        j                  |t        d«      |«       t        j
                  |t        d	«      t        d
«      «       d}	t        j                  | t        j                  |	«      t        j                  «       d«      }
t        j
                  |t        d«      |
«       t        | |
||«       t        j                  |«      \  }}t        j                  |
t        d«      |«       t        j                  |
t        d«      |«       t        j                  |
t        d«      d«      }t        j                  |t        d«      |«       |S )zE
    embed a new file in a PDF (not only /EmbeddedFiles entries)
    r   rØ  rß  r8  r”  r•  r—  r˜  r  ÚFilespecs     rþ  r™  rš  r›  )r�   r?  r>  rô   rm  r:  r  r�  r  r  r   r5  )rF  r®  rd   r  r§  rí	  ræ  rÿ   ÚefÚbsr¸  rí  Úparamss                r(   rÙ  rÙ  ðJ  sv  € ð €DÜ
×
Ñ
˜S !Ó
$€CÜ	×Ñ˜C¤¨$£°Ô3Ü	×	 Ñ	  ¤h¨t£n°aÓ	8€BÜ	×"Ñ" 3¬°«°xÔ@Ü	×"Ñ" 3¬°«¸	ÔBÜ	×"Ñ" 3¬°Ó(8¸$Ô?Ü	×Ñ�sœH VÓ,¬h°zÓ.BÔCØ	€BÜ×ÑØä×0Ñ0°Ó4Ü�L‰L‹NØó	€Aô 
×Ñ�rœ8 C›=¨!Ô,Ü�S˜!˜S (Ô+Ü×%Ñ% cÓ*�G€Dˆ!Ü	×Ñ˜1œh t›n¨dÔ3Ü	×Ñ˜1œh xÓ0°$Ô7Ü×$Ñ$ Q¬°Ó(:¸AÓ>€FÜ	×Ñ˜6¤8¨FÓ#3°TÔ:Ø€Jr)   c                 óì  — t        j                  t        j                  | «      t        d«      «      }t        j                  |t        d«      «      }|j                  r7t        j
                  |«      dk(  rt        j                  |t        d«      «       t        j                  |t        d«      t        d«      t        d«      «      }|j                  r!t        j                  |t        d«      d«       yy)	z°
    perform some cleaning if we have /EmbeddedFiles:
    (1) remove any /Limits if /Names exists
    (2) remove any empty /Collection
    (3) set /PageMode/UseAttachments
    r  Ú
Collectionr   rÌ  rÍ  rR  rd	  N)	r�   ró   r   rô   r»   rh  r-  r  rA  )rF  r,  ÚcollÚefiless       r(   rÛ  rÛ  K  sÀ   € ô ×Ñœu×0Ñ0°#Ó6¼ÀÓ8HÓI€Dô ×Ñ˜d¤H¨\Ó$:Ó;€DØ‡‚œ5×-Ñ-¨dÓ3°qÒ8Ü×Ñ˜4¤¨,Ó!7Ô8ä× Ñ ØÜ�WÓÜ�_Ó%Ü�WÓó	€Fð ×ÒÜ×Ñ ¤h¨zÓ&:Ð<LÕMð r)   c                 ód   — | j                   syt        j                  | «      }t        |d¬«      }|S )NrZ   rÊ  ©Úerrors)r»   r�   rl
  râ  )r=  r_  rÿ   s      r(   r
  r
  -K  s-   € Ø�?Š?ØÜ×$Ñ$ TÓ*€AÜ
*¨1°YÔ
?€CØ€Jr)   c           	      ó  — t        j                  t        j                  | «      t        d«      «      }|j                  sÆt        j
                  d«      }d}|D ]  }|t        |«      z  }Œ t        j                  t        j                  | «      t        d«      d«      }t        j                  |t        j                  |t        |«      «      «       t        j                  |t        j                  |t        |«      «      «       yy)z!
    Store ID in PDF trailer
    r  r½	  rZ   r   N)r�   ró   r   rô   r»   Ú
fz_memrnd2r¾	  r„  rx  rõ  r6   )rF  r  Úrnd0ÚrndrL  s        r(   rÜ  rÜ  5K  sÅ   € ô ×
Ñ
œe×/Ñ/°Ó4´h¸t³nÓ
E€CØ�>Š>Ü×Ñ Ó#ˆð ˆÛˆAØ”3�q“6‰M‰Cð ä×&Ñ&¬×(9Ñ(9¸3Ó(?ÄÈ$ÃÐQRÓSˆÜ×Ñ˜c¤5×#7Ñ#7¸¼cÀ#»hÓ#GÔHÜ×Ñ˜c¤5×#7Ñ#7¸¼cÀ#»hÓ#GÕHð r)   c                 óä  — t        j                  t        j                  t        j                  | «      t        d«      «      t        d«      «      }|j                  r|S t        j                  t        j                  | «      t        d«      «      }t        j
                  |t        d«      d«      }t        j                  |t        d«      d«       t        j
                  |t        d«      d«      }t        j                  |t        d«      d«       t        j                  |t        d	«      d«       t        j                  |t        d
«      d«       t        j                  |t        d«      d«       |S )z7
    Ensure OCProperties, return /OCProperties key
    r  r4  r   r‚  r   rñ  r   r…  r†  r„  ÚRBGroups)r�   ró   r   rô   r»   r>  r„  )rF  r’  r,  rñ  s       r(   r‡  r‡  EK  s  € ô ×
Ñ
œU×/Ñ/´×0AÑ0AÀ#Ó0FÌÐQWÓHXÓYÔ[cÐdrÓ[sÓ
t€CØ
‡~‚~Øˆ
Ü×Ñœe×/Ñ/°Ó4´h¸vÓ6FÓG€DÜ
×
!Ñ
! $¬°Ó(@À!Ó
D€CÜ	×Ñ˜S¤(¨6Ó"2°AÔ6Ü×Ñ ¤X¨c£]°AÓ6€AÜ	×Ñ˜Q¤¨£°Ô2Ü	×Ñ˜Q¤¨£°Ô3Ü	×Ñ˜Q¤¨Ó 1°1Ô5Ü	×Ñ˜Q¤¨Ó 4°aÔ8Ø€Jr)   c                 ó*  — | sy| j                  d«      ry| j                  d«      ry| j                  d«      ry| j                  d«      ry| j                  d«      ry	| j                  d
«      ry	| j                  d«      ry| j                  d«      ryy)z'
    Make /DA string of annotation
    rm  ÚCor‰  ÚcoÚTirŠ  ÚtiÚSyÚSymbr5  ÚZar‹  Úza)r2   rd
  s    r(   ÚJM_expand_fnamerˆ  WK  s|   € ñ ˜6Ø‡��tÔ vØ‡��tÔ vØ‡��tÔ vØ‡��tÔ vØ‡��tÔ vØ‡��tÔ vØ‡��tÔ vØ‡��tÔ vØr)   c                 ó  — | t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j
                  k(  ry| t         j                  k(  ry| t         j                  k(  ryy)	z!
    String from widget type
    ÚButtonÚCheckBoxÚRadioButtonÚTextÚListBoxÚComboBoxÚ	Signaturer
  )r�   rž  rŸ  r‘  ÚPDF_WIDGET_TYPE_TEXTÚPDF_WIDGET_TYPE_LISTBOXÚPDF_WIDGET_TYPE_COMBOBOXrb  )r»  s    r(   ÚJM_field_type_textr”  gK  s~   € ð ”×,Ñ,Ò,ØØ”×.Ñ.Ò.ØØ”×1Ñ1Ò1ØØ”×*Ñ*Ò*ØØ”×-Ñ-Ò-ØØ”×.Ñ.Ò.ØØ”×/Ñ/Ò/ØØr)   c                 óˆ  — t        | t        j                  «      sJ ‚t        j                  |t        j                  | «      «      }|j
                  |j                  z
  }|j                  |j                  z
  }|dk  s|dk  ry| j                  «       }||j                  | j                  «       z
  z  | j                  «       |j                  | j                  «       z
  z  z   }	 |}t        |«      D ]?  }t        | j                  «       «      D ]!  }	t        j                  | |||	   «       |dz  }Œ# ŒA ||z  }|dz  }|dk(  r	 yŒar  )r<   r�   rÔ  rG  r3  r÷  rø  rù  rú  rá  r  rC   r  r8  râ  )
r¯  rK  r{
  r   r  rH  rI  r_  r  rL  s
             r(   r“  r“  |K  s  € Ü�dœEŸN™NÔ+Ð+Ð+ä× Ñ  ¤E×$8Ñ$8¸$Ó$?Ó@€AØ	�‰ˆq�t‰t‰€AØ	�‰ˆq�t‰t‰€AØˆA‚v��a’ØØ�{‰{‹}€HØ˜Ÿ™˜tŸv™v›x™Ñ(¨4¯6©6«8°q·t±t¸d¿f¹f»h±Ñ+GÑG€EØ
ØˆÜ�q–ˆAÜ˜DŸF™F›HÖ%�Ü×$Ñ$ T¨1¨c°!©fÔ5Ø�Q‘‘ñ &ð ð 	�ÑˆØ	ˆQ‰ˆØ�Š6ØØð r)   c                 óÖ  — t        | t        j                  «      sJ ‚d}t        j                  | «      }d}t	        | «      }t        j
                  |«      }	 t        |t        j                  «      sJ ‚|j                  snft        j                  |«      }t        j                  |d«      }|j                  rt        j                  ||«      sd}nt        j                  |«      }Œ�|r|S y)z•
    Return the first annotation whose /IRT key ("In Response To") points to
    annot. Used to remove the response chain of a given annotation.
    Nr   r   r  )
r<   r�   rÓ   rì   rÏ   r—  r»   rë   rk  r"  )rÎ   rŒ  r  rŽ  rÅ   Úirt_annot_objr�  s          r(   r‡  r‡  “K  sÕ   € ô
 �eœUŸ^™^Ô,Ð,Ð,Ø€IÜ×#Ñ# EÓ*€IØ€Eä˜5Ó!€DÜ×%Ñ% dÓ+€IØ
Ü˜)¤U§^¡^Ô4Ð4Ð4Ø×#Ò#ØÜ×+Ñ+¨IÓ6ˆÜ×Ñ ¨uÓ5ˆØ�<Š<Ü×#Ñ# A yÔ1Ø�ØÜ×(Ñ(¨Ó3ˆ	ð ñ ØÐð r)   c                 ó†   — t        | t        j                  «      sJ ‚t        j                  ryt        j
                  | «      S )ú3
    need own versions of ascender / descender
    r`  )r<   r�   r4  rp  r‰   rf
  )rH  s    r(   r6  r6  ®K  s5   € ô �dœEŸL™LÔ)Ð)Ð)Ü×%Ò%ØÜ×!Ñ! $Ó'Ð'r)   c                 óŠ   — t        | t        j                  «      sJ ‚t        j                  ryt        j
                  | «      }|S )r™  gš™™™™™É¿)r<   r�   r4  rp  r‰   rw
  )rH  rE   s     r(   r7  r7  ¸K  s9   € ô �dœEŸL™LÔ)Ð)Ð)Ü×%Ò%ØÜ
×
!Ñ
! $Ó
'€CØ€Jr)   c                 óp   — 	 | dk  s| dk(  sd| cxk  rdk  ry ny|syt        | «      }|D ]	  }||k(  sŒ	 y y)z7Check if ch is an extra word delimiting character.
    rä  r-  i*   i.   TFr  )rs
  ré  r‘
  rõ  s       r(   ræ  ræ  ÃK  sY   € ð 	
Ø�Š8Ø�Š9Ø�RÔ!˜6Ò!ð ñ	 "ð ÙØÜˆr‹7€DÛˆØ�‹9Ùð ð r)   c                 ó   — | dk  s| dkD  ryy)Ni�  i 	  FTr,   r  s    r(   rç  rç  ×K  s   € Ø	ˆE‚z�R˜%’ZØØr)   c                 óÎ   — t        | t        j                  «      sJ ‚t        j                  | «      }|j	                  d«      }t
        j                  s
|dk(  s|dk7  r|S ||dz   d  S )Nr—	  r…  rØ  r   )r<   r�   r4  r©
  r“   rp  rˆ   )rH  r   r_  s      r(   ÚJM_font_namerž  ÝK  s]   € Ü�dœEŸL™LÔ)Ð)Ð)Ü×Ñ˜dÓ#€DØ�	‰	�#‹€AÜ× Ò  A¨¢G¨q°AªvØˆØ��A‘�ˆ<Ðr)   c           	      ób  — d}t        j                  |«      }t        |«      D �]  }t        j                  ||«      }t        j                  ||«      }t        j
                  |«      sCt        j                  dt        j                  |«      › dt        j                  |«      › d�«       Œˆt        j                  |t         j                  «      }	t        j                  |t         j                  «      }
|
j                  rt        j                  |
«      r%t        j                  |t         j                  «      }n|
}t        j                  |t         j                  «      }t        j
                  |«      r$t        j                  |t         j                   «      }t        j                  |«      }d}|rt#        | |«      }||t        j                  |	«      t%        t        j                  |«      «      t        j                  |«      t        j                  |«      |f}|j'                  |«       �Œ |S )Nr   r×   z' is no font dict (ú 0 R)rÚ  )r�   rh  r8  rj  ri  rg  Úfz_warnrf  rî   ró   ÚPDF_ENUM_NAME_SubtypeÚPDF_ENUM_NAME_BaseFontr»   rÜ  ÚPDF_ENUM_NAME_NameÚPDF_ENUM_NAME_EncodingÚPDF_ENUM_NAME_BaseEncodingrÝ  r   ri   )rF  Údict_ÚfontlistÚstream_xrefr’   rC   rL  Úrefnamer  râ  rã  r   rØ  rý   rý  rÎ  s                   r(   ÚJM_gather_fontsr«  æK  s·  € Ø	
€BÜ×Ñ˜5Ó!€AÜ�1�Xˆä×(Ñ(¨°Ó2ˆÜ×)Ñ)¨%°Ó3ˆÜ× Ñ  Ô*Ü�M‰M˜Qœu×0Ñ0°Ó9Ð:Ð:MÌe×N^ÑN^Ð_gÓNhÐMiÐinÐoÔpØä×$Ñ$ X¬u×/JÑ/JÓKˆÜ×%Ñ% h´×0LÑ0LÓMˆØ×"Ò"¤e×&7Ñ&7¸Ô&AÜ×%Ñ% h´×0HÑ0HÓI‰DàˆDÜ×%Ñ% h´×0LÑ0LÓMˆÜ×Ñ˜XÔ&Ü×)Ñ)¨(´E×4TÑ4TÓUˆHÜ×Ñ Ó)ˆØˆÙÜ& s¨DÓ1ˆCàØÜ×!Ñ! 'Ó*Ü#¤E×$5Ñ$5°dÓ$;Ó<Ü×!Ñ! 'Ó*Ü×!Ñ! (Ó+Øðˆð 	�‰˜Öð= ð> €Ir)   r§  r©  c           	      óT  — t        | t        j                  «      sJ ‚d}t        j                  |«      }t	        |«      D �]å  }t        j
                  ||«      }t        j                  ||«      }t        j                  |«      sCt        j                  dt        j                  |«      › dt        j                  |«      › d�«       Œˆt        j                  |t        d«      «      }	t        j                  |	t        d«      «      sŒÇt        j                  |t        d«      «      }
t        j                  |t        d«      «      }|j                  rt        j                  |«      }nt        j                   «       }|
j                  r*t        j"                  t        j$                  |
«      |«      }n-t        j&                  t        j&                  j(                  «      }t        j                  |«      }|t        j                  |«      |t+        |«      f}|j-                  |«       �Œè |S )	z6
    Store info of a /Form xobject in Python list
    r   r×   z' is no form dict (r   rs  ÚFormr  rb  )r<   r�   rµ   rh  r8  rj  ri  rg  r¡  rf  rî   ró   rô   rÛ  r»   Úpdf_to_matrixr_  r–  r»  rU  rV  rT  ri   )r  r§  Ú	imagelistr©  r’   rC   rL  rª  Ú	imagedictrG  r�  rm  rc  r  rý   rÎ  s                   r(   ÚJM_gather_formsr±  L  s°  € ô �cœ5×,Ñ,Ô-Ð-Ð-Ø	
€BÜ×Ñ˜5Ó!€AÜ�1�XˆÜ×(Ñ(¨%°Ó3ˆÜ×*Ñ*¨5°!Ó4ˆ	Ü× Ñ  Ô+Ü�M‰M˜Qœu×0Ñ0°Ó9Ð:Ð:MÌe×N^ÑN^Ð_hÓNiÐMjÐjoÐpÔqØä×"Ñ" 9¬h°yÓ.AÓBˆÜ× Ñ  ¬°Ó(8Ô9Øä×Ñ˜y¬(°6Ó*:Ó;ˆÜ×Ñ˜y¬(°8Ó*<Ó=ˆØ�<Š<Ü×%Ñ% aÓ(‰Cä—.‘.Ó"ˆCØ�<Š<Ü×*Ñ*¬E×,=Ñ,=¸aÓ,@À#ÓF‰Dä—<‘<¤§¡× ;Ñ ;Ó<ˆDÜ×Ñ 	Ó*ˆð Ü×!Ñ! 7Ó+ØÜ Ó%ð	ˆð 	×Ñ˜Öð; ð< €Ir)   r  c                 óž  — d}t        j                  |«      }t        |«      D �]¦  }t        j                  ||«      }t        j                  ||«      }t        j
                  |«      sCt        j                  dt        j                  |«      › dt        j                  |«      › d�«       Œˆt        j                  |t        d«      «      }	t        j                  |	t        d«      «      sŒÇt        j                  |«      }
d}t        j                  |t        d«      t        d	«      «      }|j                  rt        j                  |«      }t        j                  |t        d
«      t        d«      «      }t        j                  |«      rt        j                  |d«      }t        j                   d«      }t        j                  |t        d«      t        d«      «      }t        j                  |«      r—|}t        j                  |d«      }t        j                  |t        d«      «      st        j                  |t        d«      «      rAt        j                  |d«      }t        j                  |«      rt        j                  |d«      }t        j                  |t        d«      t        d«      «      }t        j                  |t        d«      t        d«      «      }t        j                  |t        d«      t        d«      «      }|
|t        j"                  |«      t        j"                  |«      t        j"                  |«      t%        t        j                  |«      «      t%        t        j                  |«      «      t%        t        j                  |«      «      t%        t        j                  |«      «      |f
}|j'                  |«       �Œ© |S )z/
    Store info of an image in Python list
    r   r×   z' is no image dict (r   rs  rè  r   ré  rê  ÚFilterr•  Ú
ColorSpaceÚCSÚDeviceNÚ
Separationr   rz  r�	  r{  r&  ÚBitsPerComponentÚBPC)r�   rh  r8  rj  ri  rg  r¡  rf  rî   ró   rô   rÛ  rë  r»   rv  rŠ  r  rõ   r   ri   )r  r§  r¯  r©  r’   rC   rL  rª  r°  rG  rý   Úgenrð  r~  ÚaltcsrÌ  ÚcsesrJ  rÅ  r‹  rÎ  s                        r(   ÚJM_gather_imagesr½  3L  sï  € ð 
€BÜ×Ñ˜EÓ"€AÜ�1�XˆÜ×(Ñ(¨°Ó2ˆÜ×*Ñ*¨5°!Ó4ˆ	Ü× Ñ  Ô+Ü�M‰M˜Aœe×/Ñ/°Ó8Ð9Ð9MÌe×N^ÑN^Ð_hÓNiÐMjÐjoÐpÔqØä×"Ñ" 9¬h°yÓ.AÓBˆÜ× Ñ  ¬°Ó(9Ô:Øä×Ñ 	Ó*ˆØˆÜ×#Ñ# I¬x¸Ó/@Ä(È6ÓBRÓSˆØ×ÒÜ×"Ñ" 5Ó)ˆCä×%Ñ% i´¸(Ó1CÄXÈcÃ]ÓSˆÜ×Ñ˜gÔ&Ü×)Ñ)¨'°1Ó5ˆGä—‘˜Q“ˆÜ× Ñ  ¬H°\Ó,BÄHÈTÃNÓSˆÜ×Ñ˜bÔ!ØˆDÜ×$Ñ$ T¨1Ó-ˆBÜ×!Ñ! "¤h¨yÓ&9Ô:Ü×(Ñ(¨¬X°lÓ-CÔDä×+Ñ+¨D°!Ó4�Ü×%Ñ% eÔ,Ü!×/Ñ/°°qÓ9�EÜ×#Ñ# I¬x¸Ó/@Ä(È3Ã-ÓPˆÜ×$Ñ$ Y´¸Ó0BÄHÈSÃMÓRˆÜ×!Ñ! )¬XÐ6HÓ-IÌ8ÐTYË?Ó[ˆð ØÜ× Ñ  Ó'Ü× Ñ  Ó(Ü× Ñ  Ó%Ü#¤E×$5Ñ$5°bÓ$9Ó:Ü#¤E×$5Ñ$5°eÓ$<Ó=Ü#¤E×$5Ñ$5°gÓ$>Ó?Ü#¤E×$5Ñ$5°gÓ$>Ó?Øðˆð 	×Ñ˜Öða ðb €Ir)   c                 ó0  — t        | t        j                  «      sJ ‚d}t        j                  | «      }	 |j                  snD|t        j
                  t        j                  |«      «      k(  rd}nt        j                  |«      }ŒQ|st        d|z  «      ‚|S )z$
    retrieve annot by its xref
    r   r   z$xref %d is not an annot of this page)	r<   r�   rÂ   r—  r»   rî   rì   r"  re   )rÅ   rý   rŽ  rÎ   s       r(   r´  r´  mL  s’   € ô �dœEŸM™MÔ*Ð*Ð*Ø€Eä×!Ñ! $Ó'€EØ
Ø×ÒØØ”5×#Ñ#¤E×$7Ñ$7¸Ó$>Ó?Ò?ØˆEØÜ×$Ñ$ eÓ,ˆð ñ ÜÐ>ÀÑEÓFÐFØ€Lr)   c                 óh  — t        | t        j                  «      sJ ‚|syd}t        j                  | «      }	 |j                  sn]t        j
                  t        j                  t        j                  |«      d«      «      \  }}||k(  rd}nt        j                  |«      }Œj|st        d|z  «      ‚|S )z*
    retrieve annot by name (/NM key)
    Nr   r   r  z!'%s' is not an annot of this page)
r<   r�   rÂ   r—  r»   Úpdf_to_stringrë   rì   r"  re   )rÅ   r   rŽ  rÎ   rø  ræ  s         r(   r³  r³  �L  s°   € ô �dœEŸM™MÔ*Ð*Ð*ÙØØ€Eä×!Ñ! $Ó'€EØ
Ø×ÒØä×,Ñ,¬U×-@Ñ-@Ä×ATÑATÐUZÓA[Ð]aÓ-bÓc‰ˆ�$Ø�8ÒØˆEØÜ×$Ñ$ UÓ+ˆð ñ ÜÐ;¸dÑBÓCÐCØ€Lr)   c                 óŠ  — g }t        j                  | j                  «       t         j                  «      }|j                  s|S t        t        j                  |«      «      D ]_  }t        j                  ||«      }t        j                  |d«      }|j                  sŒ<|j                  t        j                  |«      «       Œa |S )Nr  )r�   ró   rü   ÚPDF_ENUM_NAME_Annotsr»   r8  r‰  rŠ  rë   ri   rð   )rÅ   r›  r�  rL  r  r   s         r(   r  r  ™L  s™   € Ø€EÜ×Ñ §¡£¬U×-GÑ-GÓH€FØ×ÒØˆÜ”E×'Ñ'¨Ó/Ö0ˆÜ×'Ñ'¨°Ó2ˆ	Ü×"Ñ" 9¨dÓ3ˆØ�?‹?Ø�L‰LÜ×(Ñ(¨Ó.õð	 1ð €Lr)   c                 ól  — t         rt        j                  | «      }|S g }t        j                  | t        d«      «      }t        j                  |«      }t        |«      D ]Ò  }t        j                  ||«      }t        j                  |«      }t        j                  |t        d«      «      }|j                  sŒZt        j                  t        j                  |«      «      }|t        j                  k(  rŒ–t        j                  |d«      }	|j                  ||t        j                   |	«      f«       ŒÔ |S )zK
    return the xrefs and /NM ids of a page's annots, links and fields
    r„  rs  r  )r  r   r@  r�   ró   rô   r‰  r8  rŠ  rî   r»   rw  rf  ÚPDF_ANNOT_UNKNOWNrë   ri   rð   )
rZ  r›  r�  rC   rL  r  rý   râ  rG  r  s
             r(   r@  r@  §L  sþ   € õ Ü×,Ñ,¨hÓ7ˆØˆà€EÜ×Ñ ¬8°HÓ+=Ó>€FÜ×Ñ˜VÓ$€AÜ�AŽYˆÜ×'Ñ'¨°Ó3ˆ	Ü×Ñ Ó+ˆÜ×$Ñ$ i´¸)Ó1DÓEˆØ×!Ò!ØÜ×0Ñ0´%×2CÑ2CÀWÓ2MÓNˆØ”E×+Ñ+Ò+ØÜ×!Ñ! 9¨dÓ3ˆØ�‰�t˜U¤E×$<Ñ$<¸cÓ$BÐCÕDð ð €Lr)   c                 ó„   — | j                  d¬«      } | j                  s
t        «       S t        | j	                  «       «      S rº  )rø  r»   r¡   r@  rü   rÄ   s    r(   r  r  ÀL  s1   € Ø�>‰> 5ˆ>Ó)€DØ�?Š?Ü‹vˆÜ! 4§8¡8£:Ó.Ð.r)   c                 ó6  — t         j                  }| €|S | }|j                  d«      s|j                  d«      rt         j                  }|S |j                  d«      s|j                  d«      rt         j                  }|S |j                  d«      s|j                  d«      rt         j
                  }|S |j                  d«      s|j                  d«      rt         j                  }|S |j                  d	«      s|j                  d
«      rt         j                  }|S )z7
    return pdf_obj "border style" from Python str
    r{
  rÕ  rõ  rñ  rL  r  rÞ  ÚUr_  rÿ  )r�   ÚPDF_ENUM_NAME_Sr2   ÚPDF_ENUM_NAME_BÚPDF_ENUM_NAME_DÚPDF_ENUM_NAME_IÚPDF_ENUM_NAME_U)rK  rÿ   r_  s      r(   r  r  ÇL  sê   € ô ×
Ñ
€CØ€}Øˆ
Ø€AØ	
�‰�cÔ	˜aŸl™l¨3Ô/¼%×:OÑ:O°Cð
 €Jð	 
�‰�cÔ	˜aŸl™l¨3Ô/¼%×:OÑ:O°Cð €Jð 
�‰�cÔ	˜aŸl™l¨3Ô/¼%×:OÑ:O°Cð €Jð 
�‰�cÔ	˜aŸl™l¨3Ô/¼%×:OÑ:O°Cà€Jð 
�‰�cÔ	˜aŸl™l¨3Ô/¼%×:OÑ:O°CØ€Jr)   c
                 ód  ‡	— ˆ	fd„}
d}d}|r t        j                  d||d«      } |
|«      S |r+t        |«      }t        j                  d||d«      } |
|«      S |dkD  rt        j                  |«      } |
|«      S | rHt        j
                  | «      }|j                  r |
|«      S t        j                  | ||«      } |
|«      S t        j                  ||«      \  }}}d}|rt        j                  d|||d«      }|j                  r |
|«      S t        j                  |||||«      } |
|«      S )z6
    return a fz_font from a number of parameters
    c                 óª   •— | j                   st        t        «      ‚| j                   j                  j                  st        j                  | ‰«       | S r+   )r»   rÍ   ÚMSG_FONT_FAILEDr¬  r‹
  r�   Úfz_set_font_embedding)rH  ra
  s    €r(   ÚfertigzJM_get_font.<locals>.fertigæL  s=   ø€ Ø�ŠÜœÓ/Ð/à�‰×$Ñ$×0Ò0Ü×'Ñ'¨¨eÔ4Øˆr)   r   Nr…  )r�   Úfz_new_font_from_filer  r  Úfz_new_cjk_fontÚfz_new_base14_fontr»   Úfz_new_builtin_fontÚfz_lookup_noto_fontr  Úfz_load_fallback_font)ræ   r7  r8  r]
  r  rþ  r^
  r_
  r`
  ra
  rÑ  rP  rH  r  rm  r¦  s            `      r(   r\
  r\
  ×L  s7  ø€ ôð €EØ€DÙä×*Ñ*¨D°(¸EÀ1ÓEˆÙ�d‹|Ðáä  Ó,ˆÜ×,Ñ,¨d°C¸ÀÓBˆÙ�d‹|Ðà�"‚}ä×$Ñ$ XÓ.ˆÙ�d‹|Ðáô ×'Ñ'¨Ó1ˆØ�?Š?Ù˜$“<ÐÜ×(Ñ(¨°7¸IÓFˆÙ�d‹|Ðô ×1Ñ1°6¸4Ó@Ñ€Dˆ$�Ø€DÙÜ×,Ñ,¨d°D¸$ÀÀqÓIˆØ‡‚Ù�d‹|ÐÜ×&Ñ&¨°°hÀÈÓS€DÙ�$‹<Ðr)   c                 óZ  — |dk  ryt        j                  | |«      }t        j                  |t        d«      «      }|j                  rIt        j
                  t        j                  |d«      «      }t        j                  |t        d«      «      }nt        j                  |t        d«      «      }|j                  st        d«       y|}d}t        j                  |t        d«      «      }|j                  r|}t        j                  |t        d«      «      }|j                  r|}t        j                  |t        d	«      «      }|j                  r¹|}t        j                  |t        d
«      «      }|j                  r!t        j                  |«      st        d«       yt        j                  |t        d«      «      rnKt        j                  |t        d«      «      rn+t        j                  |t        d«      «      rnt        d«       |st        d«       yt        j                  |«      S )z@
    Return the contents of a font file, identified by xref
    r   Nr‹	  r   r˜	  z%invalid font - FontDescriptor missingÚFontFileÚ	FontFile2Ú	FontFile3rs  úinvalid font descriptor subtypeÚType1CÚCIDFontType0CÚOpenTypez6warning: unhandled font type {pdf_to_name(ctx, obj)!r}zwarning: unhandled font type)r�   rw  ró   rô   r»   r  rŠ  rp   r¨  rÛ  r	  )r  rý   r�  Údesftrü   r   s         r(   r  r  M  s¼  € ð ˆa‚xØÜ×Ñ˜c 4Ó(€AÜ×Ñ˜q¤(Ð+<Ó"=Ó>€EØ×ÒÜ×(Ñ(¬×)<Ñ)<¸UÀAÓ)FÓGˆÜ× Ñ  ¤hÐ/?Ó&@ÓA‰ä× Ñ  ¤HÐ-=Ó$>Ó?ˆà�>Š>ÜÐ7Ô9Øà€Aà€Fä
×
Ñ
˜Q¤¨Ó 4Ó
5€CØ
‡~‚~Øˆä
×
Ñ
˜Q¤¨Ó 5Ó
6€CØ
‡~‚~Øˆä
×
Ñ
˜Q¤¨Ó 5Ó
6€CØ
‡~‚~Øˆä× Ñ  ¤h¨yÓ&9Ó:ˆØ�>Š>¤%×"3Ñ"3°CÔ"8ÜÐ5Ô6Øä×Ñ˜S¤(¨8Ó"4Ô5ØÜ×Ñ˜s¤H¨_Ó$=Ô>ØÜ×Ñ˜s¤H¨ZÓ$8Ô9ØäÐLÔMáÜÐ.Ô/Øä× Ñ  Ó(Ð(r)   c                 óž  — t        j                  | t        d«      t        d«      «      }|j                  syt        j                  |«      }|dk  ryg }t        |«      D ]k  }t        j                  ||«      }t        j                  ||«      }t        j                  |«      }t        j                  |«      }|j                  ||f«       Œm |S )z…
    Return the items of Resources/Properties (used for Marked Content)
    Argument may be e.g. a page object or a Form XObject
    r!  Ú
Propertiesr,   r   )r�   r  rô   r»   rh  r8  rj  ri  rf  rî   ri   )	r   Ú
propertiesrC   r’   rL  r  rÿ   r©  rý   s	            r(   rl  rl  LM  s¶   € ô
 ×$Ñ$ S¬(°;Ó*?ÄÈ,ÓAWÓX€JØ× Ò Øä×Ñ˜zÓ*ˆØˆqŠ5ØØˆÜ�q–ˆAÜ×(Ñ(¨°QÓ7ˆCÜ×(Ñ(¨°QÓ7ˆCÜ×!Ñ! #Ó&ˆAÜ×#Ñ# CÓ(ˆDØ�I‰I�q˜$�iÕ ð ð €Ir)   c                 ó$  — d}t        j                  | «      }|j                  rRt        j                  |«      }|t        j                  |«      k(  rd}n"t        j
                  |«      }|j                  rŒR|st        d|› d�«      ‚t        |«      S )z%
    retrieve widget by its xref
    FTzxref z is not a widget of this page)r�   r�  r»   rì   rî   r#  re   rÑ   )rÅ   rý   rŽ  rÎ   r  s        r(   rv  rv  bM  sŒ   € ð €EÜ×"Ñ" DÓ)€EØ
×
Ò
Ü×'Ñ'¨Ó/ˆ	Ø”5×#Ñ# YÓ/Ò/ØˆEØÜ×%Ñ% uÓ-ˆð ×
Ó
ñ Ü˜5  Ð&CÐDÓEÐEÜ�%‹=Ðr)   c                 ó>  ‡— t        j                  | j                  «      }t        | j                  «      }|j	                  «       }| }ˆfd„}d„ }t        j
                  |j                  «      }|‰_        |t         j                  k(  r*t        j                  ||«      r
 |dd«       n |dd«       n	 |dd«        |‰dt        t        j                  |«      «      «        |‰dt        t        |«      «      «       t        j                  |«      }	 |‰d	|	«       d
„ }
 |
|t        d«      «      }|�
 |‰d|«       d}|t         j                  k(  rˆt        j                  |t        d«      «      }|j                   r |‰dt        j"                  |«      «       t        j                  |t        d«      «      }|j                   rt        j$                  |«      }|st        j&                  |«      } |‰dt        |«      «        |‰dt        j(                  |«      «       t        j*                  t        j,                  |t        d«      t        d«      «      «      }|dk(  rd} |‰d|«       t        j,                  |t        d«      t        d«      «      }t        j.                  |«      rat        j0                  |«      }dg|z  }t3        |«      D ].  }t        j4                  t        j6                  ||«      «      ||<   Œ0  |‰d|«        |‰dt        j8                  |j                  «      «        |‰dt        j:                  |j                  «      «       t        j,                  |t        d«      t        d«      «      }t        j.                  |«      rat        j0                  |«      }dg|z  }t3        |«      D ].  }t        j*                  t        j6                  ||«      «      ||<   Œ0  |‰d|«       t        j,                  |t        d«      t        d«      «      }t        j.                  |«      rat        j0                  |«      }dg|z  }t3        |«      D ].  }t        j*                  t        j6                  ||«      «      ||<   Œ0  |‰d|«        |‰d t=        | «      «       t        j>                  t        j@                  |t        d!«      «      «      } |‰d"t        |«      «       t        j,                  |t        d«      t        d#«      «      }|j                   r& |‰d$t        t        j>                  |«      «      «        |‰d%t        jB                  |«      «       ‰jE                  «        t        j                  |t        d&«      «      }tG        |«      } |‰d'|«        |‰d(tG        t        j,                  |t        d)«      t        d*«      «      «      «        |‰d+tG        t        j,                  |t        d)«      t        d,«      «      «      «        |‰d-tG        t        j,                  |t        d)«      t        d.«      «      «      «        |‰d/tG        t        j,                  |t        d)«      t        d0«      «      «      «        |‰d1tG        t        j,                  |t        d)«      t        jH                  d2«      «      «      «        |‰d3tG        t        j,                  |t        d)«      t        jH                  d4«      «      «      «       y)5z…
    Populate a Python Widget object with the values from a PDF form field.
    Called by "Page.first_widget" and "Widget.next".
    c                 ó    •— t        ‰| |«       y r+   ©r)  )r  r¥   r'  s     €r(   ÚSETATTRz)JM_get_widget_properties.<locals>.SETATTRM  s   ø€ Ü�˜˜UÕ#r)   c                 ó   — t        | ||«       y r+   rç  )Úmodr  r¥   s      r(   ÚSETATTR_DROPz.JM_get_widget_properties.<locals>.SETATTR_DROP‚M  s   € ô 	��S˜%Õ r)   r{  TFNrn  ry  rs  c                 óz  — | }d}	 | j                   syt        j                  | |«      }|j                   rt        j                  |«      }|r|S t        j                  | t	        d«      «      } | j                   |j                   k(  rt        d«      ‚|dz  }|dk(  r!t        j                  |t	        d«      «      }d}Œ·)a  
        This is a modified version of MuPDF's pdf_dict_get_inheritable(), with
        some changes:
        * Returns string from pdf_to_text_string() or None if not found.
        * Recurses to parent if current node exists but with empty string
          value.
        rê  r   Nr†  zcycle in resourcesr   r   )r»   r�   ró   rð   rô   re   )r�  r  ÚslowÚhalfbeatrÿ   rl  s         r(   Ú'pdf_dict_get_inheritable_nonempty_labelzIJM_get_widget_properties.<locals>.pdf_dict_get_inheritable_nonempty_label™M  s°   € ð ˆØˆØØ—?’?ØÜ×$Ñ$ T¨3Ó/ˆCØ�~Š~Ü×0Ñ0°Ó5�ÙØ �LÜ×%Ñ% d¬H°XÓ,>Ó?ˆDØ�‰ $§/¡/Ò1ÜÐ 4Ó5Ð5Ø˜‰MˆHØ˜1Š}Ü×)Ñ)¨$´¸Ó0BÓC�Ø�ð r)   ÚTUrt  r†  rr  r�  ru  rw  rÿ  r�	  r   r   ro  rñ  rp  r~  r  ÚMKÚBGrD  ÚBCr«  rq  r%  r€  r"  rz  rv  rð  r]
  r�  rƒ  ÚKr‚  r•  rƒ  ÚVr„  rÓ  r…  ÚBlr†  ÚFo)%r�   rì   r³   rÏ   r  Úpdf_widget_typerx  rb  Úpdf_signature_is_signedrñ   Úpdf_field_border_styler”  Úpdf_load_field_namerô   r‘  ró   r»   rî   rf  Úpdf_field_valueÚpdf_field_displayrÜ  r  rv  r‰  r8  rõ   rŠ  Úpdf_text_widget_max_lenÚpdf_text_widget_formatrE  rð   r*  Úpdf_field_flagsrù   ÚJM_get_scriptr!  )rÎ   r'  r  rÅ   rF  Útwrè  rë  rx  rs  rï  rl  Úfvaluerü   ro  rC   rõ  rL  rK  r·  r_  Ússs    `                    r(   ÚJM_get_widget_propertiesr  sM  s½  ø€ ô ×#Ñ# E§J¡JÓ/€Iä˜5Ÿ:™:Ó&€DØ
�(‰(‹*€CØ	€Bô$ò!ô ×&Ñ& r§w¡wÓ/€Jà"€FÔØ”U×4Ñ4Ò4Ü×(Ñ(¨¨iÔ8Ù�K Õ&á�K Õ&á�˜TÔ"Ù�˜Ô):¼5×;WÑ;WÐXaÓ;bÓ)cÔdÙ�Ð,Ô.?Ô@RÐS]Ó@^Ó._Ô`ä×*Ñ*¨9Ó5€JÙ�˜ zÔ2òñ8 4°I¼xÈ»~ÓN€EØÐÙ�V˜]¨EÔ2à€FØ”U×6Ñ6Ò6Ü× Ñ  )¬X°hÓ-?Ó@ˆØ�>Š>Ù˜ ¬e×.>Ñ.>ÀÓ.DÔEÜ× Ñ  ¬H°T«NÓ;ˆØ�>Š>Ü×&Ñ& sÓ+ˆFÙÜ×&Ñ& yÓ1ˆÙ�˜Ô(9¸&Ó(AÔBá�˜¬%×*AÑ*AÀ)Ó*LÔMä×$Ñ$¤U×%8Ñ%8¸ÄHÈTÃNÔT\Ð]`ÓTaÓ%bÓc€LØ�qÒØˆÙ�˜¨Ô6ä
×
Ñ
˜i¬°$«¼À#»Ó
G€CÜ×Ñ˜#ÔÜ×Ñ Ó$ˆØˆC�!‰GˆÜ�q–ˆAÜ×#Ñ#¤E×$7Ñ$7¸¸QÓ$?Ó@ˆAˆaŠDð á�V˜_¨aÔ0á�˜¬×(EÑ(EÀbÇgÁgÓ(NÔOá�˜¬×(DÑ(DÀRÇWÁWÓ(MÔNä
×
Ñ
˜i¬°$«¼À$»Ó
H€CÜ×Ñ˜#ÔÜ×Ñ Ó$ˆØˆc�A‰gˆÜ�q–ˆAÜ×&Ñ&¤u×':Ñ':¸3ÀÓ'BÓCˆC�ŠFð á�V˜\¨3Ô/ä
×
Ñ
˜i¬°$«¼À$»Ó
H€CÜ×Ñ˜#ÔÜ×Ñ Ó$ˆØˆc�A‰gˆÜ�q–ˆAÜ×&Ñ&¤u×':Ñ':¸3ÀÓ'BÓCˆC�ŠFð á�V˜^¨SÔ1á�˜Ô*;¸EÓ*BÔCä	×	!Ñ	!¤%×"@Ñ"@ÀÌHÐUYËNÓ"[Ó	\€BÙ�˜Ô%6°rÓ%:Ô;ä
×
Ñ
˜i¬°$«¼À$»Ó
H€CØ
‡~‚~Ù�VÐ-Ô/@Ä×AYÑAYÐZ]ÓA^Ó/_Ô`á�˜¬×(=Ñ(=¸iÓ(HÔIð ×ÑÔô 	×Ñ˜9¤h¨s£mÓ4€AÜ	�qÓ	€BÙ�˜ 2Ô&á�˜Üœ%×-Ñ-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ñ-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ñ-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ñ-¨i¼À$»ÌÐRUËÓWÓXôñ �˜Üœ%×-Ñ-¨i¼À$»Ì×I[ÑI[Ð\`ÓIaÓbÓcôñ �˜Üœ%×-Ñ-¨i¼À$»Ì×I[ÑI[Ð\`ÓIaÓbÓcõr)   c                 ó  — |dk  ryt        j                  | |«      }t        j                  |t        d«      «      }|j                  rIt        j
                  t        j                  |d«      «      }t        j                  |t        d«      «      }nt        j                  |t        d«      «      }|j                  sy|}t        j                  |t        d«      «      }|j                  ryt        j                  |t        d«      «      }|j                  ry	t        j                  |t        d
«      «      }|j                  rËt        j                  |t        d«      «      }|j                  r!t        j                  |«      st        d«       yt        j                  |t        d«      «      ryt        j                  |t        d«      «      ryt        j                  |t        d«      «      ryt        dt        j                  |«      «       y)zF
    Return the file extension of a font file, identified by xref
    r   rÚ  r‹	  r   r˜	  rÙ  ÚpfarÚ  rÆ	  rÛ  rs  rÜ  rÝ  ÚcffrÞ  Úcidrß  rÅ	  zunhandled font type '%s')r�   rw  ró   rô   r»   r  rŠ  r¨  rp   rÛ  rf  )r  rý   r�  rà  rü   s        r(   rÝ  rÝ  N  s•  € ð ˆa‚xØÜ×Ñ˜c 4Ó(€AÜ×Ñ˜q¤(Ð+<Ó"=Ó>€EØ×ÒÜ×(Ñ(¬×)<Ñ)<¸UÀAÓ)FÓGˆÜ× Ñ  ¤hÐ/?Ó&@ÓA‰ä× Ñ  ¤HÐ-=Ó$>Ó?ˆØ�>Š>Øà€Aä
×
Ñ
˜Q¤¨Ó 4Ó
5€CØ
‡~‚~Øä
×
Ñ
˜Q¤¨Ó 5Ó
6€CØ
‡~‚~Øä
×
Ñ
˜Q¤¨Ó 5Ó
6€CØ
‡~‚~Ü× Ñ  ¤h¨yÓ&9Ó:ˆØ�>Š>¤%×"3Ñ"3°CÔ"8ÜÐ5Ô6ØÜ×Ñ˜S¤(¨8Ó"4Ô5ØÜ×Ñ˜s¤H¨_Ó$=Ô>ØÜ×Ñ˜s¤H¨ZÓ$8Ô9ØäÐ.´×0AÑ0AÀ#Ó0FÔGàr)   c                 ó  — t        «       }t        j                  | «      rft        j                  | «      }t	        |«      D ]C  }t        j
                  | |«      }t        j                  |«      }||vsŒ3|j                  |«       ŒE |S )z„
    Get OCG arrays from OC configuration
    Returns dict {"basestate":name, "on":list, "off":list, "rbg":list, "locked":list}
    )r¡   r�   rv  r‰  r8  rŠ  rî   ri   )r9  Úlist_rC   rL  rü   rA   s         r(   ÚJM_get_ocg_arrays_impr  @N  st   € ô
 ‹F€EÜ×Ñ˜3ÔÜ×Ñ Ó%ˆÜ�q–ˆAÜ×%Ñ% s¨AÓ.ˆCÜ×#Ñ# SÓ)ˆDØ˜5Ò Ø—‘˜TÕ"ð	 ð
 €Lr)   c                 ó  — t        «       }t        j                  | t        d«      «      }t	        |«      }|r||d<   t        j                  | t        d«      «      }t	        |«      }|r||d<   t        j                  | t        d«      «      }t	        |«      }|r||d<   t        «       }t        j                  | t        d«      «      }t        j                  |«      rWt        j                  |«      }t        |«      D ]4  }t        j                  ||«      }t	        |«      }|j                  |«       Œ6 |r||d<   t        j                  | t        d	«      «      }|j                  rt        j                  |«      }||d
<   |S )Nr…  rv  r†  r#	  ÚLockedr  r~  r$	  r!  r"	  )r4   r�   ró   rô   r  r¡   rv  r‰  r8  rŠ  ri   r»   rf  )	Úconfr’   r9  r  rC   rL  rü   Úlist1r§  s	            r(   r5  r5  PN  sJ  € ä	‹€BÜ
×
Ñ
˜d¤H¨T£NÓ
3€CÜ! 3Ó'€EÙØˆˆ4‰Ü
×
Ñ
˜d¤H¨U£OÓ
4€CÜ! 3Ó'€EÙØˆˆ5‰	Ü
×
Ñ
˜d¤H¨XÓ$6Ó
7€CÜ! 3Ó'€EÙØˆˆ8‰Ü‹F€EÜ
×
Ñ
˜d¤H¨ZÓ$8Ó
9€CÜ×Ñ˜3ÔÜ×Ñ Ó%ˆÜ�q–ˆAÜ×%Ñ% s¨AÓ.ˆCÜ)¨3Ó/ˆEØ�L‰L˜Õð ñ Øˆˆ:‰Ü
×
Ñ
˜d¤H¨[Ó$9Ó
:€Cà
‡~‚~Ü×!Ñ! 3Ó'ˆØˆˆ;‰Ø€Ir)   c                 óÖ  — t        j                  |«      }t        d|d«      D ]Ä  }t        j                  t        j                  ||«      «      }t        j
                  |«      }t        j                  t        j                  ||dz   «      «      }t        |dd«      }t        j                  |«      }t        |t        «      sJ ‚|j                  d«      }| j                  ||f«       ŒÆ y )Nr   r   r   r¹  )r�   r‰  r8  r  rŠ  rõ   r
  Úfz_buffer_extractr<   r  rÑ  ri   )	r1  r  rC   rL  r  rÇ  rÿ   r  r©  s	            r(   r  r  qN  s¾   € Ü×Ñ˜DÓ!€AÜ�1�a˜Ž^ˆÜ×(Ñ(¬%×*=Ñ*=¸dÀAÓ*FÓGˆÜ×Ñ˜sÓ#ˆÜ×(Ñ(¬%×*=Ñ*=¸dÀAÈÁEÓ*JÓKˆÜ! # q¨!Ó,ˆÜ×#Ñ# CÓ(ˆÜ˜!œUÔ#Ð#Ð#Ø�H‰H�WÓˆØ�‰�s˜A�hÕñ r)   c                 óÈ  — | j                   syt        j                  | t        d«      «      }t        j                  |«      }|dk(  r,t        j                  | t        d«      «      }|j                   syyt        j
                  |«      rt        t        j                  |«      «      }n7t        j                  |«      r!t        j                  |«      }t        |«      }ny|r|S y)zà
    JavaScript extractor
    Returns either the script source or None. Parameter is a PDF action
    dictionary, which must have keys /S and /JS. The value of /S must be
    '/JavaScript'. The value of /JS is returned.
    Nrÿ  Ú
JavaScriptÚJS)r»   r�   ró   rô   rf  r
  rñ   rð   r  r	  r
  )r  rn  ÚjjÚjsr]
  r  s         r(   r  r  ~N  s¸   € ð �>Š>Øä×Ñ˜3¤¨£Ó.€AÜ	×	Ñ	˜1Ó	€BØ	ˆ\ÒÜ×Ñ ¤X¨d£^Ó4ˆØ�}Š}Øàä×Ñ˜2ÔÜ"¤5×#;Ñ#;¸BÓ#?Ó@‰Ü	×	Ñ	˜RÔ	 Ü×#Ñ# BÓ'ˆÜ'¨Ó,‰àÙØˆØ
r)   c                 ó^   — | j                   j                  rt        j                  | d«      syy)z(
    Ensure valid journalling state
    r   r   )r»   rÔ  r�   rÝ  rÄ  s    r(   rÃ  rÃ  �N  s&   € ð ‡~�~×Ò¤e×&=Ñ&=¸cÀ1Ô&EØØr)   c                 ó4  — | t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j
                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry	| t         j                  k(  ry
| t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ry| t         j                  k(  ryy)z/
    return extension for MuPDF image type
    ÚfaxrÊ  ÚflateÚlzwÚrldÚbmpÚgifÚjb2rs  ÚjpxÚjxrr�  rk  ÚtiffrÚ  )r�   ÚFZ_IMAGE_FAXÚFZ_IMAGE_RAWÚFZ_IMAGE_FLATEÚFZ_IMAGE_LZWÚFZ_IMAGE_RLDÚFZ_IMAGE_BMPÚFZ_IMAGE_GIFÚFZ_IMAGE_JBIG2ÚFZ_IMAGE_JPEGÚFZ_IMAGE_JPXÚFZ_IMAGE_JXRÚFZ_IMAGE_PNGÚFZ_IMAGE_PNMÚFZ_IMAGE_TIFF)rG  s    r(   ÚJM_image_extensionr2  ¦N  sç   € ð ”×"Ñ"Ò"¨uØ”×"Ñ"Ò"¨uØ”×$Ñ$Ò$¨wØ”×"Ñ"Ò"¨uØ”×"Ñ"Ò"¨uØ”×"Ñ"Ò"¨uØ”×"Ñ"Ò"¨uØ”×$Ñ$Ò$¨uØ”×#Ñ#Ò#¨vØ”×"Ñ"Ò"¨uØ”×"Ñ"Ò"¨uØ”×"Ñ"Ò"¨uØ”×"Ñ"Ò"¨uØ”×#Ñ#Ò#¨vàr)   c                 ó`  — t        |t        j                  «      sJ ‚t        j                  t        j                  j                  «      }t        j
                  t        j                  |«      |«      }t        j
                  |t        «      }|t        |«      f}t        j                  |«       y r+   )r<   r�   r_  rU  rS  r9  Úfz_quad_from_rectÚg_img_info_matrixÚJM_py_from_quadÚ
g_img_infori   )r€  rË  r   r¥  r  r*  rq  s          r(   ÚJM_image_filterr8  ÀN  s{   € Ü�cœ5Ÿ>™>Ô*Ð*Ð*Ü�‰”U—\‘\×,Ñ,Ó-€AÜ×Ñ¤×!8Ñ!8¸Ó!;¸SÓA€AÜ×Ñ Ô$5Ó6€AØ” Ó#Ð#€DÜ×Ñ�dÕr)   c                 óV  — | syt        | «      }|dk  rt        d«       y| }t        j                  |«      }|t        j                  k(  ry|rt        j
                  ||«      }nt        j                  ||«      }t        j                  |«      }t        j                  |«      }t        j                  |«      \  }}	t        j                  |«      }
t        j                  |j                  «       «      }t        «       }|j                  «       |t        <   |j!                  «       |t"        <   |
|d<   t%        |«      |t&        <   ||t(        <   |	|t*        <   |j-                  «       |t.        <   |j1                  «       |t2        <   t5        |«      |t6        <   ||t8        <   |r	||t:        <   |S )zŒ
    Return basic properties of an image provided as bytes or bytearray
    The function creates an fz_image and optionally returns it.
    Nr   rË  Úorientation)r6   rp   r�   Úfz_recognize_image_formatÚFZ_IMAGE_UNKNOWNr�  Úfz_new_buffer_from_shared_datar?  Úfz_image_orientation_matrixrŒ  Úfz_image_orientationr”  rÈ  r4   r   r°  r¶  r±  r^  r¯  r³  r´  rC   r²  r‹  rµ  r2  rÞ  rï  Údictkey_image)rý  Ú
keep_imageræ  r©  rG  r  r¥  rË  r©  rª  r:  Úcs_namer  s                r(   ÚJM_image_profilerC  ÉN  sp  € ñ
 Øä�	‹?€DØˆa‚xÜÐ!Ô"ØØ€Aä×+Ñ+¨QÓ/€EØ”×&Ñ&Ò&ØáÜ×2Ñ2°A°tÓ<‰ä×2Ñ2°A°tÓ<ˆÜ×*Ñ*¨CÓ0€EÜ
×
+Ñ
+¨UÓ
3€CÜ×*Ñ*¨5Ó1�J€Dˆ$Ü×,Ñ,¨eÓ4€KÜ×&Ñ&¨×(8Ñ(8Ó(:Ó;€GÜ‹V€FØ"ŸW™W›Y€FŒMÑØ#Ÿg™g›i€FŒNÑØ(€FˆMÑÜ/°Ó4€FŒNÑØ €FŒLÑØ €FŒLÑØ"'§'¡'£)€FÔÑØ Ÿ9™9›;€FŒKÑÜ-¨eÓ4€FŒKÑØ&€FŒOÑáØ!&ˆ”ÑØ€Mr)   c                 ó`  — | j                  «       }t        j                  «       at        j                  «       }t        j
                  | |t        «        G d„ dt        j                  «      } |«       }t        dddd|¬«      }g at        j                  || |«       t        t        «      }g a|S )Nc                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ú0JM_image_reporter.<locals>.SanitizeFilterOptionsc                 óB   •— t         ‰| �  «        | j                  «        y r+   ©r¶   rŠ   Úuse_virtual_image_filter©r'   rÛ  s    €r(   rŠ   z9JM_image_reporter.<locals>.SanitizeFilterOptions.__init__ýN  s   ø€ Ü‰GÑÔØ×)Ñ)Õ+r)   c                 óF   — t        d t        j                  |«      ||«       y r+   )r8  r�   r_  )r'   rÞ  rË  r   r¥  r¶  s         r(   Úimage_filterz=JM_image_reporter.<locals>.SanitizeFilterOptions.image_filter O  s   € Ü˜D¤%§.¡.°Ó"5°t¸UÕCr)   ©r.   r/   r0   rŠ   rL  rã  ©rÛ  s   @r(   ÚSanitizeFilterOptionsrF  üN  s   ø„ ô	,ö	Dr)   rO  r   )rx  ry  ræ  rz  rÚ  )r  r�   r_  r5  rU  r  ÚPdfSanitizeFilterOptions2r|  r7  rQ  r¢   )rÅ   r  rX  rO  Úsanitize_filter_optionsÚfilter_optionsr’   s          r(   r  r  õN  s�   € Ø
�(‰(‹*€CäŸ™Ó(ÐÜ�|‰|‹~€HÜ	×Ñ˜T 8Ô->Ô?ôD¤× ?Ñ ?ô Dñ 4Ó5Ðä+ØØØØØ)ô€Nð €Jä	×"Ñ" C¨¨~Ô>ä	ŒzÓ	€BØ€JØ€Ir)   c                  óÚ  — t        t        d«       } t        t        d«       }t        t        d«       }t        t        d«       }t        t        d«       }t        t        d«       }t        t        d«       }t        t        d«       }t        t        d	«       }t        «       }	||	d
<   t        t        j                  «      |	d<   t        t        j
                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t        j                  «      |	d<   t        t         «      |	d<   t        t        j"                  «      |	d<   | |	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d <   t        t        j$                  «      |	d!<   |	S )"NÚTOFUÚTOFU_BASE14ÚTOFU_CJKÚTOFU_CJK_EXTÚTOFU_CJK_LANGÚ
TOFU_EMOJIÚTOFU_HISTORICÚTOFU_SILÚTOFU_SYMBOLÚbase14ÚcbzÚepubrB  ÚiccrÄ  r!  r  rF  zplotter-cmykz	plotter-gz	plotter-nzplotter-rgbz	py-memoryrë  Útofuztofu-cjkztofu-cjk-extztofu-cjk-langz
tofu-emojiztofu-historicztofu-silztofu-symbolÚxps)r9   r�   r4   r%  ÚFZ_ENABLE_CBZÚFZ_ENABLE_EPUBÚFZ_ENABLE_HTMLÚFZ_ENABLE_ICCÚFZ_ENABLE_IMGÚFZ_ENABLE_JPXÚFZ_ENABLE_JSÚFZ_ENABLE_PDFÚFZ_PLOTTERS_CMYKÚFZ_PLOTTERS_GÚFZ_PLOTTERS_NÚFZ_PLOTTERS_RGBÚ	JM_MEMORYÚFZ_ENABLE_SVGÚFZ_ENABLE_XPS)
Ú	have_TOFUÚhave_TOFU_BASE14Úhave_TOFU_CJKÚhave_TOFU_CJK_EXTÚhave_TOFU_CJK_LANGÚhave_TOFU_EMOJIÚhave_TOFU_HISTORICÚhave_TOFU_SILÚhave_TOFU_SYMBOLrE   s
             r(   ÚJM_fitz_configr{  O  s  € Ü%¤e¨VÓ4Ð4€IÜ%¤e¨]Ó;Ð;ÐÜ%¤e¨ZÓ8Ð8€MÜ%¤e¨^Ó<Ð<ÐÜ%¤e¨_Ó=Ð=ÐÜ%¤e¨\Ó:Ð:€OÜ%¤e¨_Ó=Ð=ÐÜ%¤e¨ZÓ8Ð8€MÜ%¤e¨]Ó;Ð;Ðä
‹&€CØ.€Cˆ�MÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#7Ñ#7Ó8€Cˆ�KÜ"¤5×#7Ñ#7Ó8€Cˆ�KÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#5Ñ#5Ó6€Cˆ�IÜ"¤5×#6Ñ#6Ó7€Cˆ�JÜ"¤5×#9Ñ#9Ó:€CˆÑÜ"¤5×#6Ñ#6Ó7€CˆÑÜ"¤5×#6Ñ#6Ó7€CˆÑÜ"¤5×#8Ñ#8Ó9€CˆÑÜ"¤9›o€CˆÑÜ"¤5×#6Ñ#6Ó7€Cˆ�JØ'€Cˆ�KØ+€Cˆ
�OØ/€CˆÑØ0€CˆÑØ-€CˆÑØ0€CˆÑØ+€Cˆ
�OØ.€CˆÑÜ"¤5×#6Ñ#6Ó7€Cˆ�JØ€Jr)   c                 ó¤  — t        j                  |t        d«      «      }t        j                  | |t        j                  «       d«      }t        j
                  |«      }t        j                  |«      r3|rt        j                  ||«       |S t        j                  ||d«       |S t        j                  | d«      }|r9|j                  rt        j                  ||«       t        j                  ||«       n8t        j                  ||«       |j                  rt        j                  ||«       t        j                  |t        d«      |«       |S )ag  
    Insert a buffer as a new separate /Contents object of a page.
    1. Create a new stream object from buffer 'newcont'
    2. If /Contents already is an array, then just prepend or append this object
    3. Else, create new array and put old content obj and this object into it.
       If the page had no /Contents before, just create a 1-item array.
    rÿ  r   r   )r�   ró   rô   r  r  rî   rv  rx  rB  r7  r»   r:  )rF  r/  Únewcontr”  rY  Únewcontsrý   Úcarrs           r(   r‘  r‘  >O  s  € ô ×!Ñ! '¬8°JÓ+?Ó@€HÜ×#Ñ# C¨´%·,±,³.À!ÓD€HÜ×Ñ˜HÓ%€DÜ×Ñ˜(Ô#ÙÜ× Ñ  ¨8Ô4ð €Kô ×"Ñ" 8¨X°qÔ9ð €Kô ×"Ñ" 3¨Ó*ˆÙØ×"Ò"Ü×$Ñ$ T¨8Ô4Ü× Ñ   xÕ0ä× Ñ   xÔ0Ø×"Ò"Ü×$Ñ$ T¨8Ô4Ü×Ñ˜7¤H¨ZÓ$8¸$Ô?Ø€Kr)   c
           
      óz  — d}
d}d}d}d}d}d}d}d}d}t        | «       |	dkD  rt        j                  |	«      \  }}}|r7t        j                  d||d«      }
t        j                  | |
|	||«      }d}d}nã|rt        j
                  |«      \  }}|r5t        j                  ||dd«      }
t        j                  | |
|«      }d}d}n’|rt        j                  d||d«      }
nCt        |«      }|j                  st        t        t        «       t        j                  d||d«      }
|st        j                  | |
«      }d}nt        j                  | |
|«      }d}t        j                  |«      }t!        t        j"                  t        j$                  |t'        d«      «      «      «      }t)        t        j"                  t        j$                  |t'        d«      «      «      «      }|st)        t+        | |«      «      }t        j,                  |
«      }t        j.                  |
«      }||||t1        |«      |	||d	œg}|S )
z 
    Insert a font in a PDF
    Nr   r…  rÚ  r   r   rÙ  rs  )r   r·   rý  r  rþ  r  r  )r>  r�   r  r  Úpdf_add_cjk_fontr  Úpdf_add_simple_fontrÒ  r  r»   rž  r5  r;  r  Úpdf_add_cid_fontrî   r   rf  ró   rô   rñ   rÝ  rf
  rw
  r%  )rF  rü  r7  r8  r¯  r%  rq
  r}
  rØ  rþ  rH  r  rm  ÚixrefrP  r  r¥   r   ry  Úextor¦  r°  r/  r0  s                           r(   r6  r6  \O  s1  € ð €DØ
€CØ€DØ€EØ€EØ€FØ
€EØ	€DØ	€DØ€Dä�SÔà�"‚}Ü!×4Ñ4°XÓ>Ñˆˆd�EÙÜ×,Ñ,¨T°4¸¸uÀaÓHˆÜ×)Ñ)¨#¨t°X¸uÀeÓLˆØˆØ‰ñ
 Ü×4Ñ4°VÓ<‰JˆD�$ÙÜ×0Ñ0°¸¸tÀQÈÓJˆDÜ×0Ñ0°°d¸HÓEˆHØˆDØ‰Fñ Ü×2Ñ2°4¸À3ÈÓJ‘ä(¨Ó4�Ø—~’~ÜÔ.Ô0@ÔAÜ×4Ñ4°T¸3ÀÀQÓG�áÜ ×1Ñ1°#°tÓ<�Ø‘ä ×4Ñ4°S¸$ÀÓI�Ø�ä×Ñ˜XÓ&€EÜ¤× 1Ñ 1´5×3EÑ3EÀhÔPXÐYcÓPdÓ3eÓ fÓg€Däœe×/Ñ/´×1CÑ1CÀXÌxÐXaÓObÓ1cÓdÓe€DáÜ Ô!5°c¸5Ó!AÓBˆä
×
 Ñ
  Ó
&€CÜ
×
!Ñ
! $Ó
'€CààØØÜ˜v›,Ø$ØØ ñð€Eð €Lr)   c                 ó´  — t        | t        j                  «      r| S t        | t        «      rBt        j                  | j                  | j
                  | j                  | j                  «      } | S t        | t        «      rWt        j                  | j                  | j
                  | j                  | j                  «      }t        j                  |«      }|S t        | t        j                  «      rt        j                  | «      }|S | rt        | «      rt        | «      dk7  r#t        j                  t        j                  «      S g d¢}t        d«      D ]_  }| |   ||<   ||   €%t        j                  t        j                  «      c S ||   t        k  r	t        ||<   ||   t        kD  sŒWt        ||<   Œa t        j                   |d   |d   |d   |d   «      S )z>
    PySequence to mupdf.FzIrect. Default: infinite irect
    r8  r|  r   r   r   r   )r<   r�   rÑ  rÒ  rø  rú  r÷  rù  r  rU  r  r  rÙ  r8  rç  rè  Úfz_make_irect)r  rE   r¸  rL  s       r(   r   r   ©O  si  € ô �!”U—]‘]Ô#ØˆÜ�!”UÔÜ�M‰M˜1Ÿ4™4 §¡ q§t¡t¨Q¯T©TÓ2ˆØˆÜ�!”TÔÜ�l‰l˜1Ÿ4™4 §¡ q§t¡t¨Q¯T©TÓ2ˆÜ�m‰m˜CÓ ˆØˆ
Ü�!”U—\‘\Ô"Ü�m‰m˜AÓˆØˆ
ÙÔ$ QÔ'¬?¸1Ó+=ÀÒ+BÜ�}‰}œU×4Ñ4Ó5Ð5Ú€AÜ�1ŽXˆØ�‰tˆˆ!‰ØˆQ‰4ˆ<Ü—=‘=¤×!8Ñ!8Ó9Ò9ØˆQ‰4”/Ò!Ü"ˆAˆa‰DØˆQ‰4”/Ó!Ü"ˆAˆaŠDð ô ×Ñ˜q ™t Q q¡T¨1¨Q©4°°1±Ó6Ð6r)   c                 óì  — t        j                  | «      }t        j                  |t        d«      «      }t        j                  |«      rt        j
                  |«      S t        j                  |«      }g }t        |«      D ]p  }t        j                  ||«      }t        j                  |«      rt        j                  |d«      }|j                  t        t        j
                  |«      «      «       Œr |S )z 
    ListBox retrieve value
    rõ  r   )r�   rì   ró   rô   r
  rð   r‰  r8  rŠ  rv  ri   rñ   )rÎ   r  rD  rC   r1  rL  Úelems          r(   ÚJM_listbox_valuerŠ  ÆO  sÆ   € ô
 ×#Ñ# UÓ+€IÜ×Ñ ¬H°S«MÓ:€FÜ×Ñ˜FÔ#Ü×'Ñ'¨Ó0Ð0ô 	×Ñ˜VÓ$€AØ€Eô �AŽYˆÜ×"Ñ" F¨AÓ.ˆÜ×Ñ˜tÔ$Ü×&Ñ&¨¨aÓ0ˆDØ�‰Ô'¬×)AÑ)AÀ4Ó)HÓIÕJð	 ð
 €Lr)   c           	      ól  — d}|dk  r|dz  }nZ|dk(  r||d   d›d�z  }nH|dk(  rJ ‚|dk(  r||d   d›d	|d   d›d	|d   d›d
�z  }n!||d   d›d	|d   d›d	|d   d›d	|d   d›d�z  }|dt        |«      › d	|› d�z  }t        j                  t        j                  | «      t        j                  |«       y )NrZ   r   z0 g r   r—  z g r   r   r    z rg z k r"  r:  )rˆ  r�   rm  rì   ÚPDF_ENUM_NAME_DA)rÎ   rC  rK  ræ   rç   r®  s         r(   rÅ  rÅ  ÞO  s÷   € ð
 €CØˆa‚xØ�‰‰Ø	�ŠØ�#�a‘&˜�˜3ÐÑ‰Ø	�ŠØˆqØ	�ŠØ�#�a‘&˜�˜1˜S ™V A˜J a¨¨A©¨q z°Ð6Ñ6‰à�#�a‘&˜�˜1˜S ™V A˜J a¨¨A©¨q z°°3°q±6¸!°*¸CÐ@Ñ@ˆØˆQŒ˜xÓ(Ð)¨¨8¨*°CÐ8Ñ8€CÜ	×"Ñ"¤5×#6Ñ#6°uÓ#=¼u×?UÑ?UÐWZÕ[r)   c                 ó  — t         rt        j                  | ||||«      S d }g }t        j                  |«       t        j
                  t        j
                  j                  «      }t        j
                  t        j
                  j                  «      } G d„ d«      }	 |	«       }
 |	«       }d }d }|D �]  }t        ||«      }t        ||«      st        j                  |«      sŒ2t        t        j                  t        j                  |j                  j                  «      «      ||«      }t        j                  |j                  j                   «      }|j                  j"                  |_        ||_        t&        dk\  r-|j                  j$                  t        j(                   z  |_        t-        t        j                  t        j                  |j                  j                  «      «      «      |_        |j                  j.                  |_        t1        t        j                  t        j                  |j                  j                  «      «      «      |_        t5        t        j                  t        j                  |j                  j                  «      «      «      |_        |j                  j8                  |_        |j"                  |
j"                  k7  s‡|j$                  |
j$                  k7  snt&        dk\  r|j*                  |
j*                  k7  sL|j.                  |
j.                  k7  s3|j                  |
j                  k7  s|j8                  |
j8                  k7  �r~|
j"                  dk\  r‚|r||t:        <   d }n't=        |«      |t>        <   t        j                  |«       tA        |«      |tB        <   tE        |«      |tF        <   t        jH                  ||«      }|jK                  |«       d }tM        «       }|j2                  }|j6                  }|j2                  dk  rd}d}|j"                  |tN        <   |j$                  |tP        <   |j8                  |tR        <   t&        dk\  r|j*                  |tT        <   tW        |j                  «      |tX        <   |j.                  dz  |tZ        <   t&        d	k\  r|j.                  d
z	  |d<   ||d<   ||d<    |	|«      }
|}|}t        jH                  ||«      }|r²tM        «       }tA        |j                  j                   «      |tB        <   tE        |«      |tF        <   t]        |j                  j^                  «      |t`        <   tc        |j                  j$                  t        j(                  z  «      |d<   |€g }|jK                  |«       �Œöte        ||j                  j^                  «       �Œ |r—|r||t:        <   d }n't=        |«      |t>        <   t        j                  |«       tA        |«      |tB        <   tE        |«      |tF        <   t        jf                  |«      s'|jK                  |«       t        jH                  ||«      }d }t        jf                  |«      s|| th        <   |S || th        <   |S )Nc                   ó   — e Zd Zdd„Zd„ Zy)ú$JM_make_spanlist.<locals>.char_styleNc                 ó®  — |r’|j                   | _         |j                  | _        t        dk\  r|j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        y d| _         d| _        t        dk\  rd| _        d| _        d| _        d| _        d| _        d| _        y )N©r   r	  r   r…  rZ   r   )	r¦  r¬  rI  rº  rH  Úargbr/  r§  r¶  )r'   rƒ  s     r(   rŠ   z-JM_make_spanlist.<locals>.char_style.__init__üO  s¥   € ÙØŸH™H�”	Ø ŸY™Y�”
Ü&¨*Ò4Ø&)§n¡n�D”OØŸH™H�”	ØŸH™H�”	ØŸ7™7�”ØŸH™H�”	ØŸH™H�•	à�”	Ø�”
Ü&¨*Ò4Ø&(�D”OØ�”	Ø�”	Ø�”Ø�”	Ø�•	r)   c           	      óä   — | j                   › d| j                  › �}t        dk\  r|d| j                  › �z  }|d| j                  › d| j
                  › d| j                  › d| j                  › �z  }|S )Nr    r‘  )r¦  r¬  rI  rº  rH  rô  r/  r§  rð  s     r(   rÜ   z,JM_make_spanlist.<locals>.char_style.__str__P  sp   € Ø—Y‘Y�K˜q §¡ Ð-ˆCÜ" jÒ0Ø˜˜4Ÿ?™?Ð+Ð,Ñ,�Ø�Q�t—y‘y�k  4§:¡: ,¨a°·±¨z¸¸4¿9¹9¸+ÐFÑFˆCØˆJr)   r+   )r.   r/   r0   rŠ   rÜ   r,   r)   r(   Ú
char_styler�  ûO  s   „ ó	ó*	r)   r”  r‘  r   r¡  r1  r0  éÿÿÿ )r   r	  r   é   rÉ  r  r  Ú	synthetic)5r  r   ÚJM_make_spanlistr�   rŒ  rU  rŠ  r�  rŽ  rœ  r.  r4  r5  r»   rH  r  rp  r¦  r¬  rI  ÚFZ_STEXT_SYNTHETICrº  rž  r’  r6  r/  r7  r§  r¶  Údictkey_charsr
  rò   ÚJM_py_from_pointÚdictkey_originrT  r­  r�  ri   r4   r¤  Údictkey_flagsÚdictkey_bidiÚdictkey_char_flagsr   Údictkey_fontró  r¾	  r©  Ú	dictkey_cr%  r�  r›  Údictkey_spans)Ú	line_dictrm   rÊ  r=  r”  Ú	char_listÚ	span_listÚ	span_rectÚ	line_rectr”  Ú	old_stylerK  r×  Úspan_originrs
  r  r¬  rp  r/  r§  Ú	char_dicts                        r(   r˜  r˜  òO  s  € ÝÜ×%Ñ% i°°s¸DÀ'ÓJÐJØ€IØ€IÜ	×Ñ˜$ÔÜ—‘œUŸ\™\×5Ñ5Ó6€IÜ—‘œUŸ\™\×5Ñ5Ó6€I÷ñ ñ: “€IÙ‹L€EØ€DØ€Käˆä˜˜rÓ"ˆÜ  ¨!Ô,Ü×1Ñ1°'Ô:àô #¤5§<¡<´×0EÑ0EÀbÇmÁm×FXÑFXÓ0YÓ#ZÐ\`ÐbdÓeˆÜ—‘˜rŸ}™}×3Ñ3Ó4ˆØ—]‘]×'Ñ'ˆŒ
ØˆŒÜ *Ò,à!Ÿ}™}×2Ñ2´e×6NÑ6NÐ5NÑNˆEÔÜ!¤%§,¡,¬u×/DÑ/DÀRÇ]Á]×EWÑEWÓ/XÓ"YÓZˆŒ
Ø—]‘]×'Ñ'ˆŒ
Ü$¤U§\¡\´%×2GÑ2GÈÏÉ×HZÑHZÓ2[Ó%\Ó]ˆŒ	Ü&¤u§|¡|´E×4IÑ4IÈ"Ï-É-×J\ÑJ\Ó4]Ó'^Ó_ˆŒ
Ø—]‘]×'Ñ'ˆŒ
à�J‰J˜)Ÿ.™.Ò(Ø—;‘; )§/¡/Ò1Ü'¨:Ò5Ø×)Ñ)¨Y×-AÑ-AÒAà—:‘: §¡Ò/Ø—:‘: §¡Ò/Ø—:‘: §¡Ó/à�~‰~ Ò"áà*3�DœÑ'Ø $‘Iô *@ÀÓ)F�DœÑ&Ü×)Ñ)¨$Ô/ä'7¸Ó'D�”^Ñ$Ü%4°YÓ%?�”\Ñ"Ü!×/Ñ/°	¸9ÓE�	Ø× Ñ  $Ô'Ø�ä“6ˆDØ—)‘)ˆCØ—:‘:ˆDØ�y‰y˜4ÒØ�Ø�à!&§¡ˆD”ÑØ"'§+¡+ˆD”ÑØ!&§¡ˆD”ÑÜ" jÒ0Ø+0×+;Ñ+;�Ô'Ñ(Ü!4°U·Z±ZÓ!@ˆD”ÑØ"'§*¡*¨xÑ"7ˆD”ÑÜ" jÒ0Ø %§
¡
¨bÑ 0��W‘Ø"ˆD�ÑØ $ˆD�Ññ # 5Ó)ˆIØˆIØ ˆKä×'Ñ'¨	°1Ó5ˆ	áÜ›ˆIÜ(8¸"¿-¹-×:NÑ:NÓ(OˆI”nÑ%Ü&5°aÓ&8ˆI”lÑ#Ü#& r§}¡}§¡Ó#7ˆI”iÑ Ü%)¨"¯-©-×*=Ñ*=Ä×@XÑ@XÑ*XÓ%YˆI�kÑ"àÐ Ø�	Ø×Ñ˜YÖ'ä˜4 §¡§¡Ö1ðy ñ~ ÙØ"+ˆD”ÑØ‰Iä!7¸Ó!=ˆD”ÑÜ×!Ñ! $Ô'Ü/°Ó<ˆŒ^ÑÜ,¨YÓ7ˆŒ\Ñä×%Ñ% iÔ0Ø×Ñ˜TÔ"Ü×+Ñ+¨I°yÓAˆIØˆÜ×!Ñ! )Ô,Ø#,ˆ	”-Ñ ð Ðð $-ˆ	”-Ñ ØÐr)   c                 óÖ  — | j                  «       }t        |«      }t        j                  | j                  «      }	 |r5|t        j
                  t        j                  fv s|t        j                  k  r:t        j                  | t        j                  t        j                  «      «      }d}n„|dk(  rM| j                  «       dk(  r:t        j                  | t        j                  t        j                  «      dd«      }n2t        j                  t        j                  |j                  «      «      }t!        |«      }| j#                  «       |t$        <   | j'                  «       |t(        <   ||t*        <   | j                  «       |t,        <   | j/                  «       |t0        <   | j3                  «       |t4        <   | j7                  «       |t8        <   t;        |«      |t<        <   ||t>        <   y)zÒPopulate a dictionary with information extracted from a given image.

    Used by 'Document.extract_image' and by 'JM_make_image_block'.
    Both of these functions will add some more specific information.
    r�  rs  r8  r¯  r   N) Úfz_compressed_image_typer2  r�   Úll_fz_compressed_image_bufferr»   r+  r<  r)  Úfz_new_buffer_from_image_as_pngr…  r@  rC   Ú fz_new_buffer_from_image_as_jpegrT  rk
  r«  r
  r   r°  r¶  r±  rÞ  r²  r©  r³  rª  r´  r‹  rµ  r6   r¤  r@  )rÄ  Úimg_dictÚimg_typerý  Úll_cbufr  rå  s          r(   rí  rí  �P  sz  € ð ×+Ñ+Ó-€HÜ
˜XÓ
&€Cô ×1Ñ1°#·.±.ÓA€Gà	ÙØœ×,Ñ,¬e×.DÑ.DÐEÑEØ”e×(Ñ(Ò(ô ×3Ñ3ØÜ×'Ñ'¬×(EÑ(EÓFóˆð ‰Ø	�Š˜3Ÿ5™5›7 aš<ä×4Ñ4Øœ×,Ñ,¬U×-JÑ-JÓKÈRÐQRóT‰ô �n‰nœU×4Ñ4°W·^±^ÓDÓEˆä˜cÓ"€FØ!Ÿe™e›g€HŒ]ÑØ"Ÿu™u›w€HŒ^ÑØ€HŒ[ÑØ#&§5¡5£7€HÔÑ Ø ŸX™X›Z€HŒ\ÑØ ŸX™X›Z€HŒ\ÑØŸG™G›I€HŒ[ÑÜ  ›[€HŒ\ÑØ$€HŒ]Òr)   c                 óJ  — | j                  «       }t        ||«       |j                  «       }|j                  rF|j	                  t        j                  t
        j                  «      «      }|j                  «       |d<   nd |d<   t        | j                  «       «      |t        <   y )Nr¦  )r’  rí  r¦  r»   r®  r�   r…  r@  r  r^  r®  r¯  )r•  r¹  rÄ  r¦  r=  s        r(   ÚJM_make_image_blockr´  ºP  s   € Ø
�-‰-‹/€CÜ�S˜*Ô%à�8‰8‹:€DØ‡‚Ø×3Ñ3´E×4GÑ4GÌ×HeÑHeÓ4fÓgˆØ!×3Ñ3Ó5ˆ
�6Òà!ˆ
�6ÑÜ!2°5×3DÑ3DÓ3FÓ!G€JŒ~Òr)   c           	      ó  — t         r7t        j                  | j                  |||j                  |j                  «      S g }t	        j
                  t        j
                  j                  «      }| D ]ý  }t	        j                  t	        j                  |t	        j
                  |j                  j                  «      «      «      rt	        j                  |«      sŒit        «       }t        |||||«      }	t	        j                  ||	«      }|j                  j                  |t        <   t!        |j                  j"                  «      |t$        <   t'        |	«      |t(        <   |j+                  |«       Œÿ t'        |«      |t(        <   ||t,        <   y r+   )r  r   ÚJM_make_text_blockr»   r�   rU  rŠ  r›  rÒ  r  rœ  r4   r˜  r�  rq
  Údictkey_wmoder›  rX  Údictkey_dirrT  r­  ri   Údictkey_lines)
r•  r¹  rÊ  r=  r”  Ú	line_listÚ
block_rectrm   r£  r§  s
             r(   r¶  r¶  ÇP  s(  € ÝÜ×'Ñ'¨×(8Ñ(8¸*ÀcÈ4Ï?É?Ð\c×\nÑ\nÓoÐoØ€IÜ—‘œeŸl™l×6Ñ6Ó7€Jãˆä×"Ñ"¤5×#:Ñ#:¸7ÄEÇLÁLÐQU×Q`ÑQ`×QeÑQeÓDfÓ#gÔhÜ×1Ñ1°'Ô:àÜ“Fˆ	Ü$ Y°°c¸4ÀÓIˆ	Ü×(Ñ(¨°YÓ?ˆ
Ø#'§?¡?×#8Ñ#8ˆ	”-Ñ Ü!1°$·/±/×2EÑ2EÓ!Fˆ	”+ÑÜ"1°)Ó"<ˆ	”,ÑØ×Ñ˜Õ#ð ô  /¨zÓ:€JŒ|ÑØ )€JŒ}Òr)   c           	      ó  — t         r!t        j                  | j                  ||«      S t	        j
                  d«      }g }t	        j                  | j                  j                  «      }d}| D �]’  }|dz  }t	        j                  |t	        j                  |j                  j                  «      «      s=t	        j                  |«      s(|j                  j                  t        j                  k(  rŒƒt	        j                  |«      sQt	        j                  t	        j                  |t	        j                  |j                  j                  «      «      «      rŒét        «       }||t         <   |j                  j                  |t"        <   |j                  j                  t        j                  k(  r3t%        |j                  j                  «      |t&        <   t)        ||«       nt+        |||||«       |j-                  |«       �Œ• ||t.        <   y )Né€   r…  r   )r  r   r‚  r»   r�   r¨  rU  rX  Úfz_contains_rectr  rœ  r·   ÚFZ_STEXT_BLOCK_IMAGEr›  rÒ  r4   r¬  rß  rT  r­  r´  r¶  ri   Údictkey_blocks)	r©  rƒ  rÊ  Útext_bufferÚ
block_listr”  r“  r•  r¹  s	            r(   r‚  r‚  ÞP  s…  € ÝÜ×*Ñ*¨2¯=©=¸)ÀSÓIÐIÜ×%Ñ% cÓ*€KØ€JÜ�l‰l˜2Ÿ=™=×1Ñ1Ó2€GØ€GäˆØ�1‰ˆÜ×&Ñ& w´·±¸U×=MÑ=M×=RÑ=RÓ0SÔTÜ×1Ñ1°'Ô:Ø×$Ñ$×)Ñ)¬U×-GÑ-GÒGàÜ×)Ñ)¨'Ô2Ü×*Ñ*¬5×+BÑ+BÀ7ÌEÏLÉLÐY^×YiÑYi×YnÑYnÓLoÓ+pÔqàä“Vˆ
Ø%,ˆ
”>Ñ"Ø#(×#3Ñ#3×#8Ñ#8ˆ
”<Ñ Ø×Ñ× Ñ ¤E×$>Ñ$>Ò>Ü'6°u×7GÑ7G×7LÑ7LÓ'MˆJ”|Ñ$Ü  zÕ2ä˜u j°#°{ÀGÔLà×Ñ˜*Ö%ð+ ð, !+€IŒnÒr)   c           	      ó8  — g d¢}t        | t        j                  «      r| S t        | t        «      rVt        j                  | j                  | j
                  | j                  | j                  | j                  | j                  «      S | rt        | «      rt        | «      dk7  rt        j                  «       S t        d«      D ],  }t        | |«      ||<   ||   �Œt        j                  «       c S  t        j                  |d   |d   |d   |d   |d   |d   «      S )	N)r   r   r   r   r   r   rØ  r   r   r   r   r8  r   )r<   r�   r_  rb  r    r{
  r©  rõ  rM  r¸  r  r  r8  rÏ  rU  )rm  r    rL  s      r(   rÀ  rÀ  ÿP  sß   € Ú€AÜ�!”U—^‘^Ô$ØˆÜ�!”VÔÜ�~‰~˜aŸc™c 1§3¡3¨¯©¨Q¯S©S°!·#±#°q·s±sÓ;Ð;ÙÔ$ QÔ'¬?¸1Ó+=ÀÒ+BÜ�~‰~ÓÐÜ�1ŽXˆÜ˜Q Ó"ˆˆ!‰ØˆQ‰4‰<Ü—<‘<“>Ò!ð ô �>‰>˜!˜A™$  !¡ a¨¡d¨A¨a©D°!°A±$¸¸!¹Ó=Ð=r)   c           	      óŠ  — t        j                  t         j                  j                  «      }t        j                  t        j                  | t        d«      «      «      }t        j                  |«      st        j                  |«      rd|_        d|_	        d|_
        d|_        t        j                  t        j                  |j                  |j                  «      t        j                  |j                  |j                  «      t        j                  |j                  |j                  «      t        j                  |j                  |j                  «      «      }|j                  |j                  z
  dk  s|j                  |j                  z
  dk  r-t        j                  t         j                  j                  «      }|S )z&
    return a PDF page's MediaBox
    r›  r   éd  é  r   )r�   rU  rS  r»  r*  rô   r›  rœ  rø  rú  r÷  rù  Úfz_minÚfz_max)rZ  Úpage_mediaboxrX  s      r(   ry  ry  Q  s2  € ô —L‘L¤§¡×!8Ñ!8Ó9€MÜ× Ñ Ü×*Ñ*¨8´X¸jÓ5IÓJó€Hô ×Ñ˜hÔ'¬5×+DÑ+DÀXÔ+NØˆŒØˆŒØˆŒØˆŒä—L‘LÜ�L‰L˜Ÿ™ h§k¡kÓ2Ü�L‰L˜Ÿ™ h§k¡kÓ2Ü�L‰L˜Ÿ™ h§k¡kÓ2Ü�L‰L˜Ÿ™ h§k¡kÓ2ó	€Mð 	×Ñ˜=×+Ñ+Ñ+¨aÒ/Ø×Ñ -×"2Ñ"2Ñ2°QÒ6äŸ™¤U§\¡\×%<Ñ%<Ó=ˆàÐr)   c
                 óÎ  — t         rt        j                  | |||||||||	«
      S |}
d}t        j                  ||z
  «      dz   }||k  rO|}||k  rGt        | |||
||||	«       |dz  }|dkD  r||z  dk(  rt        d|› d|› d�«       |dz  }|
dz  }
||k  rŒFyy|}||k\  rGt        | |||
||||	«       |dz  }|dkD  r||z  dk(  rt        d|› d|› d�«       |dz  }|
dz  }
||k\  rŒFyy)z·
    Copy a range of pages (spage, epage) from a source PDF to a specified
    location (apage) of the target PDF.
    If spage > epage, the sequence of source pages is reversed.
    r   r   z	Inserted rò  z pages.N)r  r   r¯  r�   Úfz_absiÚ
page_mergerp   )Údoc_desÚdoc_srcÚspageÚepageÚapagerE  rg  r�  rž  Ú	graft_mapÚ	afterpageÚcounterr  rÅ   s                 r(   r¯  r¯  +Q  sH  € õ" Ü×#Ñ#ØØØØØØØØØØóð 	ð €IØ€GÜ�M‰M˜% %™-Ó(¨1Ñ,€Eàˆu‚}ØˆØ�eŠmÜ�w ¨¨y¸&À%ÈÐQZÔ[Ø�q‰LˆGØ˜qÒ  W¨}Ñ%<ÀÒ%AÜ˜) G 9¨D°°°wÐ?Ô@Ø�A‰IˆDØ˜‰NˆIð �e�mð ˆØ�eŠmÜ�w ¨¨y¸&À%ÈÐQZÔ[Ø�q‰LˆGØ˜qÒ  W¨}Ñ%<ÀÒ%AÜ˜) G 9¨D°°°wÐ?Ô@Ø�A‰IˆDØ˜‰NˆIð �e�mr)   c                 óP  — t        j                  | j                  «       t        d«      «      }|j                  s.t        j
                  | j                  «       t        d«      d«      }t        j                  |t        d«      «      }t        j                  |t        d«      «      }t        j                  |t        d«      «      }t        j                  |t        d«      «      }d}d}t        j                  |«      �rTt        j                  |«      }	t        j                  |«      rt        t        j                  |«      «      D ]]  }
t        j                  t        j                  ||
«      «      }|j                  d«      sŒ>t        j                  |dd «      }||kD  sŒ\|}Œ_ n t        j
                  |t        d«      |	«      }|d	z  }t        |	«      D ]x  }
t        j                  t        j                  ||
«      «      }t        j                  |dd «      |z   }d|› �}t        j                  ||
«      }t        j                  |||«       Œz t        j                  |«      rt        t        j                  |«      «      D ]]  }
t        j                  t        j                  ||
«      «      }|j                  d
«      sŒ>t        j                  |d	d «      }||kD  sŒ\|}Œ_ n t        j
                  |t        d«      d«      }|d	z  }t        t        j                  |«      «      D ]x  }
t        j                  t        j                  ||
«      «      }t        j                  |d	d «      |z   }d
|› �}t        j                  ||
«      }t        j                  |||«       Œz ||fS )aW  
    Merge the /Resources object created by a text pdf device into the page.
    The device may have created multiple /ExtGState/Alp? and /Font/F? objects.
    These need to be renamed (renumbered) to not overwrite existing page
    objects from previous executions.
    Returns the next available numbers n, m for objects /Alp<n>, /F<m>.
    r!  r   r%  r  r…  ÚAlpr   Nr   r•  r   )r�   ró   rü   rô   r»   r>  rg  rh  r8  rf  rj  r2   Úfz_atoiri  rn  )rÅ   Útemp_resrN  Ú	main_extgÚ
main_fontsÚ	temp_extgÚ
temp_fontsrG  Ú	max_fontsrC   rL  rK  rn  r   rÿ   rH  s                   r(   rA  rA  aQ  s  € ô ×"Ñ" 4§8¡8£:¬x¸Ó/DÓE€IØ×ÒÜ×+Ñ+¨D¯H©H«J¼ÀÓ8MÈqÓQˆ	Ü×"Ñ" 9¬h°{Ó.CÓD€IÜ×#Ñ# I¬x¸Ó/?Ó@€Jô ×"Ñ" 8¬X°kÓ-BÓC€IÜ×#Ñ# H¬h°vÓ.>Ó?€Jà€GØ€Iô ×Ñ˜Õ#Ü×Ñ˜yÓ)ˆÜ×Ñ˜YÔ'Üœ5×-Ñ-¨iÓ8Ö9�ä×'Ñ'¬×)?Ñ)?À	È1Ó)MÓN�Ø—~‘~ eÔ,ØÜ—M‘M # a b 'Ó*�Ø�w“;Ø‘Gñ :ô ×/Ñ/°	¼8ÀKÓ;PÐRSÓTˆIà�1‰ˆÜ�q–ˆAÜ×#Ñ#¤U×%;Ñ%;¸YÈÓ%JÓKˆCÜ—‘˜c ! "˜gÓ&¨Ñ0ˆAØ˜˜�9ˆDÜ×(Ñ(¨)°QÓ7ˆCÜ×Ñ 	¨4°Õ5ð ô ×Ñ˜Ô$Ü”u×)Ñ)¨*Ó5Ö6ˆAÜ×$Ñ$¤e×&<Ñ&<¸jÈ!Ó&LÓMˆDØ—?‘? 3Ô'ØÜ—‘˜d 1 2˜hÓ'ˆAØ�9‹}Ø‘	ñ 7ô ×,Ñ,¨Y¼ÀÓ8HÈ!ÓLˆ
à��N€IÜ”5×%Ñ% jÓ1Ö2ˆÜ× Ñ ¤%×"8Ñ"8¸*ÀaÓ"HÓIˆÜ�M‰M˜$˜q˜r˜(Ó# iÑ/ˆØ�1�#ˆwˆÜ×$Ñ$ Z°Ó3ˆÜ×Ñ˜J¨¨cÕ2ð 3ð �YÐÐr)   c                 óX   — t         j                  | «       t        rt        d| › �«       yy)z!
    redirect MuPDF warnings
    zMuPDF warning: N)r©  ri   ÚJM_mupdf_show_warningsrp   ro   s    r(   ÚJM_mupdf_warningrà  £Q  s)   € ô ×"Ñ" 4Ô(ÝÜ�/ $ Ð(Õ)ð r)   c                 óZ   — t         j                  | «       t        rt        d| › d�«       y y )NzMuPDF error: r$   )r©  ri   rí  rp   ro   s    r(   ÚJM_mupdf_errorrâ  ¬Q  s)   € Ü×"Ñ" 4Ô(ÝÜ�- ˜v RÐ(Õ)ð r)   c                 ó>   — t        | t        «      sJ ‚t        | |«      S r+   )r<   r¡   ÚJM_new_bbox_device_Device)r’   r¢  s     r(   r   r   ²Q  s   € Ü�bœ$ÔÐÐÜ$ b¨*Ó5Ð5r)   c           
      ó\  — t        | t        j                  «      sJ ‚t        j                  | j                  j
                  «      }t        j                  d«      }| D ]Ì  }|j                  j                  t        j                  k(  sŒ+|D ]~  }|D ]X  }t        |t        ||«      «      st        j                  |«      sŒ/t        j                  ||j                  j                  «       ŒZ t        j                  |t        d«      «       Œ€ t        j                  |t        d«      «       ŒÎ |S )z1
    make a buffer from an stext_page's text
    r  r$   )r<   r�   rð  rU  r»   rX  r¨  r·   r‹  rŽ  r�  rœ  Úfz_append_runer©  r‘  rn
  )rÅ   rä   r®  r•  rm   rs
  s         r(   ÚJM_new_buffer_from_stext_pagerç  ·Q  sç   € ô �dœE×-Ñ-Ô.Ð.Ð.Ü�<‰<˜Ÿ™×0Ñ0Ó1€DÜ
×
Ñ
˜cÓ
"€CÛˆØ×Ñ× Ñ ¤E×$=Ñ$=Ó=Û�Û�BÜ,¨T´<ÀÀbÓ3IÔJÜ$)×$=Ñ$=¸dÔ$Cà Ü×(Ñ(¨¨b¯m©m¯o©oÕ>ð ô ×$Ñ$ S¬#¨d«)Õ4ð ô × Ñ  ¤c¨$£iÕ0ð ð €Jr)   c                 ó–  — |€yt        |«      }|€yt        j                  |j                  d«      «      }t        j                  | |t        j
                  «       d«      }t        j                  | d«      }t        j                  |t        d«      t        j                  d«      «       t        j                  |t        d«      |«       |S )z“
    make new PDF action object from JavaScript source
    Parameters are a PDF document and a Python string.
    Returns a PDF action object.
    Nr¢	  r   r8  rÿ  r  r  )
rM  r�   r�  r²  r  r  rU  r:  rô   r!  )rF  r¥   rm  r  rú	  Ú	newactions         r(   ÚJM_new_javascriptrê  ÌQ  s¢   € ð €}àÜ˜Ó€DØ€|àä
×
.Ñ
.¨t¯{©{¸6Ó/BÓ
C€CÜ×!Ñ! # s¬E¯L©L«N¸AÓ>€FÜ×&Ñ& s¨AÓ.€IÜ	×Ñ�y¤(¨3£-´×1CÑ1CÀLÓ1QÔRÜ	×Ñ�y¤(¨4£.°&Ô9ØÐr)   c                 ó   — t        | «      S r+   )ÚJM_new_output_fileptr_Output)ró	  s    r(   ré  ré  âQ  s   € Ü'¨Ó-Ð-r)   c                 óX   — | dk  r| dz  } | dk  rŒ| dk\  r| dz  } | dk\  rŒ| dz  dk7  ry| S )zB
    # return normalized /Rotate value:one of 0, 90, 180, 270
    r   r¡  r¢  r,   )rE  s    r(   r�  r�  æQ  sJ   € ð �1Š*Ø�#‰ˆð �1‹*à
�CŠ-Ø�#‰ˆð �C‹-à��{�aÒØØ€Mr)   c                 óÔ   — t        j                  d«      }t        j                  |«      }t        j                  || ||«       |j	                  «        t        j
                  |«       |S )Nr§  )r�   r¨  r©  rª  rë  Úfz_terminate_buffer)r-  rí	  ry  r  rì  s        r(   r
  r
  óQ  sS   € Ü
×
Ñ
˜cÓ
"€CÜ
�.‰.˜Ó
€CÜ	×Ñ˜˜T 8¨UÔ3Ø×ÑÔÜ	×Ñ˜cÔ"Ø€Jr)   c                 ó.  — | j                   s|S | }|j                   røt        j                  |«      }||v s)t        j                  |t	        d«      «      j                   r	 |S |j                  |«       t        j                  |t	        d«      «      }t        j                  |«      rt        ||«      }t        j                  |t	        d«      «      }t        j                  |t	        d«      «      }t        j                  |«      s|}|j                   rŒø|S )zƒ
    Return list of outline xref numbers. Recursive function. Arguments:
    'obj' first OL item
    'xrefs' empty Python list
    r  r,  ÚNextr†  )r»   r�   rî   ró   rô   ri   rg  r-  )rü   r0  ÚthisobjÚnewxrefr2  rÖ   s         r(   r-  r-  üQ  sì   € ð �>Š>ØˆØ€GØ
×
Ò
Ü×"Ñ" GÓ,ˆØ�eÑœu×1Ñ1°7¼HÀVÓ<LÓM×XÒXàð €Lð 	�‰�gÔÜ×"Ñ" G¬X°gÓ->Ó?ˆÜ×Ñ˜eÔ$Ü$ e¨UÓ3ˆEÜ×$Ñ$ g¬x¸Ó/?Ó@ˆÜ×#Ñ# W¬h°xÓ.@ÓAˆÜ× Ñ  'Ô*ØˆGð ×
Ó
ð €Lr)   c                 ó®   — d}t        j                  | j                  «       t         j                  «      }t        j                  |«      }t        |«      }|S )zE
    return a PDF page's /Rotate value: one of (0, 90, 180, 270)
    r   )r�   r*  rü   r<  rõ   r�  )rÅ   rE  rü   s      r(   r‡  r‡  R  sF   € ð €Fä
×
(Ñ
(¨$¯(©(«*´e×6PÑ6PÓ
Q€CÜ×Ñ˜cÓ"€FÜ˜fÓ%€FØ€Mr)   c                 óâ   — t        j                  t        |d«      «      }t        j                  |«      }t        j                  t         j
                  «      }t        j                  | ||«      }|S )zP
    create PDF object from given string (new in v1.14.0: MuPDF dropped it)
    r¢	  )r�   r�  r  rF  Ú	PdfLexbufÚPDF_LEXBUF_SMALLÚpdf_parse_stm_obj)r  rÆ  r  r   Úlexbufr  s         r(   r"  r"  !R  sX   € ô ×2Ñ2´5¸¸fÓ3EÓF€GÜ×!Ñ! 'Ó*€FÜ�_‰_œU×3Ñ3Ó4€FÜ×$Ñ$ S¨&°&Ó9€FØ€Mr)   c                 óx  — t        | t        j                  «      sJ ‚|€t        j                  «       }|�0t        |t        j                  «      sJ dt	        |«      ›d|› �«       ‚t        j
                  | «      }t        |«      }t        |«      }t        j                  ||«      }t        j                  ||«      }t        j                  |«      }	t        |t        j                  «      sJ ‚t        j                  ||	||«      }
|rt        j                  |
«       nt        j                  |
d«       t        j                  |«      sUt        j                   ||
|	«      }t        j"                  | |t        j$                  «       |t        j&                  «       «       n~t        j(                  ||
«      }t        j"                  | |t        j$                  «       t        j*                  t        j*                  j,                  «      t        j&                  «       «       t        j.                  |«       t1        d|
«      S )z�
    Version of fz_new_pixmap_from_display_list (util.c) to also support
    rendering of only the 'clip' part of the displaylist rectangle
    ztype(seps)=ry   r¥	  rÊ  )r<   r�   r¤  rÃ  r·   r·  rÀ  rí  rÒ  r–  rÓ  r‡  rÓ  r  r  rœ  r£  rº  r_  r»  r¢  rU  rV  rt  rÄ  )r  rË  rÌ  rÉ  rï  rî  rä   rÆ  rã  r  rÍ  rw  s               r(   r³  r³  /R  s²  € ô �eœU×0Ñ0Ô1Ð1Ð1Ø€|Ü×"Ñ"Ó$ˆØˆ<œ: d¬E×,?Ñ,?Ô@ÐZÀ[ÄTÈ$ÃZÀMÐQSÐTXÐSYÐBZÓZÐ@ä×&Ñ& uÓ-€DÜ˜sÓ#€FÜ˜DÓ!€EÜ×"Ñ" 4¨Ó/€Dä×"Ñ" 4¨Ó0€DÜ×Ñ Ó%€Eä�rœ5×-Ñ-Ô.Ð.Ð.ä
×
'Ñ
'¨¨E°4¸Ó
?€CÙÜ×Ñ˜cÕ"ä×(Ñ(¨¨dÔ3ä×$Ñ$ UÔ+Ü×0Ñ0°¸¸eÓDˆÜ×!Ñ! %¨¬e¯n©nÓ.>ÀÄuÇ~Á~ÓGWÕXä×&Ñ& v¨sÓ3ˆÜ×!Ñ! %¨¬e¯n©nÓ.>ÄÇÁÌUÏ\É\×MhÑMhÓ@iÔkp×kyÑkyÓk{Ô|ä	×Ñ˜#Ôä�5˜#ÓÐr)   c                 óø  — t        | t        j                  «      r| S t        | t        «      r*t        j                  | j                  | j
                  «      S t        rt        j                  | «      S t        j                  dd«      }t        | d«      }t        | d«      }|�|€|S t        |t        «      }t        |t        «      }t        |t        «      }t        |t        «      }t        j                  ||«      S )zM
    PySequence to fz_point. Default: (FZ_MIN_INF_RECT, FZ_MIN_INF_RECT)
    r   r   )r<   r�   r  rÖ  r  r  r  r   r÷  rÏ  rÔ  rç  r«  rè  )r�  r[  r  r  s       r(   r÷  r÷  \R  sÅ   € ô �!”U—]‘]Ô#ØˆÜ�!”UÔÜ�}‰}˜QŸS™S !§#¡#Ó&Ð&ÝÜ×%Ñ% qÓ)Ð)ä	�‰�q˜!Ó	€BÜ�a˜Ó€AÜ�a˜Ó€AØ€y�A�IØˆ	ÜˆQ”Ó €AÜˆQ”Ó €AÜˆQ”Ó €AÜˆQ”Ó €AÜ�=‰=˜˜AÓÐr)   c                 óN  — t         rt        j                  | |«      S t        | t        j
                  «      sJ ‚t        |t        j                  «      sJ ‚t	        j                  |j                  j                  «      }d}d}d}d}t        |«      D ]a  \  }}|j                  j                  t        j                  k(  r0t        |«      D ]  \  }	}
t        |
«      D ]  \  }}Œ |z  }Œ |	z  }||z  }Œc |D ]¬  }|j                  j                  t        j                  k(  sŒ+|D ]}  }
d}|
D ]R  }t        |
|«      }t	        j                  |«      st        ||«      sŒ1|j                  j                   }t#        | |«       ŒT |dk7  sŒb|dkD  sŒht	        j$                  | d«       Œ Œ® y)zÉ
    Plain text output. An identical copy of fz_print_stext_page_as_text,
    but lines within a block are concatenated by space instead a new-line
    character (which else leads to 2 new-lines).
    r   rˆ  r$   N)r  r   r~  r<   r�   rT  rð  rU  r»   rX  rã  r·   r‹  r�  rœ  rŽ  r©  r�  r�  )r  rÅ   rä   r˜  Ún_blocksÚn_linesÚn_charsÚ	n_blocks2r•  Ún_lines2rm   Ún_chars2rs
  Úchbboxs                 r(   r~  r~  sR  s‚  € õ Ü×0Ñ0°°dÓ;Ð;ä�cœ5Ÿ>™>Ô*Ð*Ð*Ü�dœE×-Ñ-Ô.Ð.Ð.Ü�<‰<˜Ÿ™×0Ñ0Ó1€DØ€Ià€HØ€GØ€GÜ% tÖ,Ñˆ	�5Ø×Ñ× Ñ ¤E×$=Ñ$=Ò=Ü"+¨UÖ"3‘�˜$Ü$-¨tÖ$4‘L�H˜bØð %5à˜8Ñ#‘ð #4ð �xÑˆGØ�IÑ‰ð -ó ˆØ×Ñ× Ñ ¤E×$=Ñ$=Ó=Û�Ø�	Û�BÜ)¨$°Ó3�FÜ×1Ñ1°$Ô7Ü/°°fÕ=ð %'§M¡M§O¡O˜	ä& s¨IÕ6ð ð  “? y°1£}Ü×*Ñ*¨3°Õ5ñ ñ r)   c                 ó  — t        j                  | |«      }t        j                  | «      }|sH|�|j                  st        j                  | |«       y|j                  rt        j                  ||«       y|j                  r|j                  st        |«      }nt        t        j                  ||«      «      }||k7  rIt        ||«      }|j                  st        j                  | ||«       yt        j                  | |||«       yy)a   
    Create a JavaScript PDF action.
    Usable for all object types which support PDF actions, even if the
    argument name suggests annotations. Up to 2 key values can be specified, so
    JavaScript actions can be stored for '/A' and '/AA/?' keys.
    N)	r�   ró   r{  r»   r-  r  rê  r:  r  )r  Úkey1Úkey2r¥   Úkey1_objrF  r]
  ré  s           r(   ÚJM_put_scriptr  žR  sâ   € ô ×!Ñ! )¨TÓ2€HÜ
×
&Ñ
& yÓ
1€Cñ Øˆ<˜tŸšÜ×Ñ˜y¨$Ô/ð 	ð × Ò Ü×Ñ˜x¨Ô.Øð �?Š? (×"5Ò"5Ü˜xÓ(‰äœu×1Ñ1°(¸DÓAÓBˆð �‚Ü% c¨5Ó1ˆ	Ø�ŠÜ×Ñ˜y¨$°	Õ:ä×Ñ 	¨9°d¸DÕAð r)   c                 ó^   — | j                   | j                  | j                  | j                  fS r+   r)  r÷  s    r(   r4  r4  ¿R  ó!   € Ø�4‰4�—‘�q—t‘t˜QŸT™TÐ!Ð!r)   c                 óŠ   — | j                   | j                  | j                  | j                  | j                  | j
                  fS r+   r  )rm  s    r(   r^  r^  ÃR  s-   € Ø�3‰3�—‘�Q—S‘S˜!Ÿ#™#˜qŸs™s A§C¡CÐ'Ð'r)   c                 ó2   — | j                   | j                  fS r+   r»  )r�  s    r(   r›  r›  ÇR  s   € Ø�3‰3�—‘ˆ8€Or)   c                 ó^  — | j                   j                  | j                   j                  f| j                  j                  | j                  j                  f| j                  j                  | j                  j                  f| j
                  j                  | j
                  j                  ffS )z"
    PySequence from fz_quad.
    )r”  r  r  r
  r  r	  )r*  s    r(   r6  r6  ËR  sn   € ð
 �T‰T�V‰V�Q—T‘T—V‘VÐØ�T‰T�V‰V�Q—T‘T—V‘VÐØ�T‰T�V‰V�Q—T‘T—V‘VÐØ�T‰T�V‰V�Q—T‘T—V‘VÐð	ð r)   c                 ó^   — | j                   | j                  | j                  | j                  fS r+   r)  r÷  s    r(   rT  rT  ×R  r
  r)   c           
      ó8  — t        | t        j                  «      r| S t        | d«      r8t	        | «      dk(  r*t        | d   d«      rt        j
                  t        | «      Ž } t        | t        j
                  «      rt        j                  | «      S t        | t        «      r¼t        j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  «      S t        j                  dddddddd«      }g d¢}| r$t        | t        t         f«      rt	        | «      dk7  r|S t#        | d«      €t        j                  t%        | «      «      S t'        d«      D �]  }|t	        | «      k\  r|c S | |   }t)        |«      rt+        |«      dk7  r|c S t#        |d«      ||   _        t#        |d«      ||   _        ||   j                  �||   j                  €|c S t-        ||   j                  t.        «      ||   _        t-        ||   j                  t.        «      ||   _        t1        ||   j                  t2        «      ||   _        t1        ||   j                  t2        «      ||   _        �Œ |d   |_
        |d   |_        |d   |_        |d   |_        |S )	NrN  r8  r   rW  r|  r   r   r   )r<   r�   rù  r9   r6   rU  r¢   r4  r…  Úfz_make_quadr”  r  r  r
  r  r	  r¡   rÏ  rí  r8  r  r  rÔ  rç  r«  rè  )r  r*  r�  rL  rü   s        r(   r&  r&  ÛR  s\  € Ü�!”U—\‘\Ô"Øˆäˆq�-Ô ¤S¨£V¨q¢[´W¸Q¸q¹TÀ;Ô5OÜ�L‰Lœ% ›(Ð#ˆÜ�1”e—l‘lÔ#Ü×&Ñ&¨Ó*Ð*Ü�1”dÔÜ×!Ñ!Ø—‘—‘˜Ÿ™Ÿ™Ø—‘—‘˜Ÿ™Ÿ™Ø—‘—‘˜Ÿ™Ÿ™Ø—‘—‘˜Ÿ™Ÿ™ó	ð 	ô 	×Ñ˜1˜a  A q¨!¨Q°Ó2€AÚ€AÙ”J˜q¤5¬$ -Ô0´C¸³F¸a²KØˆä�Q˜ÓÐ"Ü×&Ñ&¤°qÓ'9Ó:Ð:ä�1�XˆØ”�A“Š;ØŠHØ�‰dˆÜ Ô$¬¸Ó(<ÀÒ(AØŠHä˜s AÓ&ˆˆ!‰ŒÜ˜s AÓ&ˆˆ!‰ŒØˆQ‰4�6‰6ˆ>˜Q˜q™TŸV™V˜^ØŠHÜ�a˜‘d—f‘fœoÓ.ˆˆ!‰ŒÜ�a˜‘d—f‘fœoÓ.ˆˆ!‰ŒÜ�a˜‘d—f‘fœoÓ.ˆˆ!‰ŒÜ�a˜‘d—f‘fœoÓ.ˆˆ!‰Žð ð ˆQ‰4€A„DØˆQ‰4€A„DØˆQ‰4€A„DØˆQ‰4€A„DØ€Hr)   c                 ó–  — t        | t        j                  «      sJ t        | «      › «       ‚t        j                  | t        j
                  «      }t        j                  |«      r¬t        j                  d«      }t        t        j                  |«      «      D ]t  }|dkD  rt        j                  |d«       t        j                  ||«      }t        j                  |«      sŒJt        j                  |«      }t        j                  ||«       Œv |S |j                  rt        j                  |«      }|S t        j                  d«      }|S )zK
    Read and concatenate a PDF page's /Contents object(s) in a buffer
    r  r   rä  )r<   r�   r  r·   ró   r`  rv  rT  r8  r‰  r‘  rŠ  r  r	  Úfz_append_bufferr»   )r/  rY  r  rL  rü   r¬  s         r(   r  r  S  s  € ô �gœuŸ|™|Ô,Ð@´°g³°Ó@Ð,Ü×!Ñ! '¬5×+GÑ+GÓH€HÜ×Ñ˜(Ô#Ü�n‰n˜TÓ"ˆÜ”u×*Ñ*¨8Ó4Ö5ˆAØ�1ŠuÜ×$Ñ$ S¨"Ô-Ü×%Ñ% h°Ó2ˆCÜ×"Ñ" 3Õ'Ü×,Ñ,¨SÓ1�Ü×&Ñ& s¨DÕ1ð 6ð €Jð	 
×	Ò	Ü×#Ñ# HÓ-ˆð €Jô �n‰n˜QÓˆØ€Jr)   c                 ó´  — t        | t        j                  «      r| S t        | t        j                  «      rt        j                  | «      S t        | t        «      r@t        j
                  | j                  | j                  | j                  | j                  «      S t        | t        «      r@t        j
                  | j                  | j                  | j                  | j                  «      S | rt        | «      rt        | «      dk7  r-t        j                  t        j                  j                  «      S g d¢}t        d«      D ]p  }t        | |«      ||<   ||   €/t        j                  t        j                  j                  «      c S ||   t         k  r	t         ||<   ||   t"        kD  sŒht"        ||<   Œr t        j
                  |d   |d   |d   |d   «      S )Nr8  r|  r   r   r   r   )r<   r�   rU  rÑ  r  rý  rø  rú  r÷  rù  rÒ  r  r  rV  r8  rÏ  rç  rè  )r  r¸  rL  s      r(   rí  rí  S  s[  € Ü�!”U—\‘\Ô"ØˆÜ�!”U—]‘]Ô#Ü�|‰|˜A‹ÐÜ�!”TÔÜ×!Ñ! !§$¡$¨¯©¨a¯d©d°A·D±DÓ9Ð9Ü�!”UÔÜ×!Ñ! !§$¡$¨¯©¨a¯d©d°A·D±DÓ9Ð9ÙÔ$ QÔ'¬?¸1Ó+=ÀÒ+BÜ�|‰|œEŸL™L×7Ñ7Ó8Ð8Ú€AÜ�1ŽXˆÜ˜Q Ó"ˆˆ!‰ØˆQ‰4ˆ<Ü—<‘<¤§¡× ;Ñ ;Ó<Ò<ØˆQ‰4”/Ò!Ü"ˆAˆa‰DØˆQ‰4”/Ó!Ü"ˆAˆaŠDð ô ×Ñ˜a ™d A a¡D¨!¨A©$°°!±Ó5Ð5r)   c                 óÐ   — 	 | j                   |j                  k\  sK| j                  |j                  k\  s2| j                  |j                   k  s| j                  |j                  k  ryyr  rV  r�  s     r(   rŽ  rŽ  5S  sG   € Ø	Ø�t‰t�q—t‘tŠ|Ø�t‰t�q—t‘tŠ|Ø�t‰t�q—t‘tŠ|Ø�t‰t�q—t‘tŠ|àØr)   c                 ó
  — | �| j                   syt        j                  | j                  «       t	        d«      «      }|j                   r»| j                  «       }t        j                  || j                  «       «      }t        j                  «       }t        j                  «       }t        j                  | ||«       t        j                  || |||«      }t        j                  |j                   «      | j                   _        yy)z<
    refreshes the link and annotation tables of a page
    Nr„  )r»   r�   ró   rü   rô   r  r´  rU  r_  r  Úpdf_load_link_annotsÚll_fz_keep_linkrg  )rÅ   rü   rF  r8  rÉ  r  rˆ  s          r(   rè	  rè	  @S  sº   € ð €|˜4Ÿ?š?ØÜ
×
Ñ
˜dŸh™h›j¬(°8Ó*<Ó
=€CØ
‡~‚~Ø�h‰h‹jˆÜ×-Ñ-¨s°D·H±H³JÓ?ˆÜŸ™›ˆÜ—>‘>Ó#ˆÜ× Ñ  $¨°xÔ@Ü×)Ñ)¨3°°c¸6À8ÓLˆÜ %× 5Ñ 5°t·±Ó Gˆ�‰Õð r)   c                 ó¨  — | j                   st        j                  «       S t        | «      }|dk(  rt        j                  «       S t	        | j                  «       «      }|j                  }|j                  }|dk(  rt        j                  dddd|d«      }|S |dk(  rt        j                  dddd||«      }|S t        j                  ddddd|«      }|S )z*
    calculate page rotation matrices
    r   r¢  r   r…  rJ  )	r»   r�   r_  r‡  rj  rü   r  r  r  )rÅ   r=  Úcb_sizer   r¶  rm  s         r(   r•  r•  QS  sË   € ð �?Š?Ü�~‰~ÓÐÜ Ó%€Hà�1‚}Ü�~‰~ÓÐÜ˜dŸh™h›jÓ)€GØ�	‰	€AØ�	‰	€Aà�2‚~Ü× Ñ   A r¨1¨a°Ó3ˆð €Hð 
�SŠÜ× Ñ   Q¨¨2¨q°!Ó4ˆð €Hô × Ñ   B¨¨1¨a°Ó3ˆà€Hr)   c                 ó„  — t         r t        j                  | j                  |«      S t	        j
                  | j                  j                  «      }|sy g } G d„ d«      } |«       }d|_        ||_        d|_	        d|_
        t        | «      }t	        j                  |«      }d}t        ||d  |«      \  }	}
|	€|S |	|z  }	|
|z  }
d}d}| D ]ó  }|j                  j                  t        j                  k7  rŒ+|D ]§  }|D ]ƒ  }|dz  }t	        j                   |«      st#        ||«      }t%        ||«      sŒ6	 |s||	k\  rd}|r<||
k  rt'        |||«       n*d}t        ||d  |«      \  }	}
|	€|c c c S |	|z  }	|
|z  }
ŒH	 |dz  }Œ… ||   dk(  sJ d|›d	||   ›�«       ‚|dz  }Œ© ||   dk(  sJ d|›d	||   ›�«       ‚|dz  }Œõ |S )
Nc                   ó   — e Zd Zd„ Zy)ú"JM_search_stext_page.<locals>.Hitsc                 ón   — d| j                   › d| j                  › d| j                  › d| j                  › �S )Nz	Hits(len=z quads=z hfuzz=z vfuzz=)r6   r	  ÚhfuzzÚvfuzzr-   s    r(   rÜ   z*JM_search_stext_page.<locals>.Hits.__str__rS  s5   € Ø˜tŸx™x˜j¨°·
±
¨|¸7À4Ç:Á:À,ÈgÐVZ×V`ÑV`ÐUaÐbÐbr)   N)r.   r/   r0   rÜ   r,   r)   r(   ÚHitsr  qS  s   „ ó	cr)   r   r   r!  çš™™™™™¹?r   r$   z	haystack=z haystack_string[haystack]=)r  r   rû  r»   r�   rU  rX  r6   r	  r  r  rç  Úfz_string_from_bufferÚfind_stringr·   r‹  rœ  r�  rŽ  Úon_highlight_char)rÅ   rü  rä   r	  r   Úhitsr  Úhaystack_stringÚhaystackÚbeginrƒ  ÚinsiderL  r•  rm   rs
  r  s                    r(   rû  rû  iS  s4  € ÝÜ×)Ñ)¨$¯/©/¸6ÓBÐBä�<‰<˜Ÿ™×0Ñ0Ó1€DÙØØ€E÷cñ cñ ‹6€DØ€D„HØ€D„JØ€D„JØ€D„Jä+¨DÓ1€GÜ×1Ñ1°'Ó:€OØ€HÜ˜_¨X¨YÐ7¸Ó@�J€Eˆ3Ø€}àˆà	ˆXÑ€EØˆ8�O€CØ€FØ	€AÛˆØ×Ñ× Ñ ¤E×$=Ñ$=Ò=ØÛˆDÛ�Ø�Q‘�Ü×0Ñ0°Ô6Ü$ T¨2Ó.�AÜ+¨D°!Ô4à Øá!Ø# uÒ,Ø%&˜FÙØ# cš>Ü-¨d°D¸"Ô=Ø!à%&˜FÜ)4°_ÀXÀYÐ5OÐQWÓ)X™J˜E 3Ø$˜}à',¦ð !&¨Ñ 1 Ø # x¡ Ø (ØØ˜A‘‘ð9 ð< # 8Ñ,°Ò4ð @Ø �x�kÐ!= ?°8Ñ#<Ð">Ð?ó@Ð4à˜‰M‰HðC ðD ˜xÑ(¨DÒ0ð 	<Ø�8�+Ð9˜¨xÑ8Ð:Ð;ó	<Ð0à�A‰‰ðO ðR €Lr)   c           	      óÊ  — t        j                  |«      rt        j                  d«       y	 t        j                  |t         j                  «      }|dk(  r3t        j                  |t         j
                  «      }t        | |||«       n?|dk(  rt        | |||«       n+|dk(  rt        | |||«       n	 t        j                  |«       yt        j                  |«      }t        |«      D ]É  }	t        j                  ||	«      }
t        j                  |
«      rt        j                  |
«      }nd}t        j                  |
t         j                  «      }|j                   sŒw|}||vr"|j#                  |«       t%        | |||||«       ŒŸt        j                  d«        t        j                  |«       y 	 t        j                  |«       y# t        j                  |«       w xY w)zP
    Step through /Resources, looking up image, xobject or font information
    z.Circular dependencies! Consider page cleaning.Nr   r   r   r   )r�   Úpdf_mark_objr¡  ró   ÚPDF_ENUM_NAME_XObjectÚPDF_ENUM_NAME_Fontr«  r½  r±  Úpdf_unmark_objrh  r8  ri  r  rî   r+  r»   ri   r,  )rF  r0  r1  r-  r©  r2  ÚxobjrH  rC   rL  rü   ÚsxrefÚsubrsrcÚsxref_ts                 r(   r,  r,  ²S  s‡  € ô ×Ñ˜$ÔÜ�‰ÐFÔGØð#Ü×!Ñ! $¬×(CÑ(CÓDˆà�1Š9Ü×%Ñ% d¬E×,DÑ,DÓEˆDÜ˜C  u¨kÕ:Ø�QŠYÜ˜S $¨¨{Õ;Ø�QŠYÜ˜C  u¨kÕ:àô( 	×Ñ˜TÕ"ô# ×Ñ˜tÓ$ˆÜ�q–ˆAÜ×(Ñ(¨¨qÓ1ˆCÜ×"Ñ" 3Ô'Ü×(Ñ(¨Ó-‘à�Ü×(Ñ(¨¬e×.KÑ.KÓLˆGØ×!Ó!Ø�Ø &Ñ(Ø—M‘M 'Ô*Ü% s¨G°U¸DÀ%ÈÕPä—M‘MÐ"RÔSØä×Ñ˜TÕ"ñ! ô  	×Ñ˜TÕ"øŒ×Ñ˜TÕ"ús   ­BG ÃBG Å>G Æ3G ÇG"c                 ó’  — |syt        |t        t        f«      sJ ‚t        |«      }|dk(  ryt	        j
                  | «      }t	        j                  |«      }t	        j                  ||«      }t        |«      D ]­  }||   }|}t        |t        «      rt	        j                  ||«       Œ1t        |t        t        f«      rt        |«      dk(  sJ d«       ‚|\  }	}
|	r|
sJ d«       ‚t	        j                  |d«      }t	        j                  ||	«       t	        j                  ||
«       Œ¯ t	        j                  |t        d«      |«       y)z'
    set ListBox / ComboBox values
    Nr   r   zbad choice field listrB  )r<   r¢   r¡   r6   r�   rì   r{  r7  r8  rÙ   Úpdf_array_push_text_stringÚpdf_array_push_arrayr:  rô   )rÎ   r1  rC   r  rF  rD  rL  rÿ   ÚoptÚopt1Úopt2Ú	optarrsubs               r(   ÚJM_set_choice_optionsr:  ÛS  s   € ñ ØÜ�uœu¤d˜mÔ,Ð,Ð,ÜˆU‹€AØˆA‚vØÜ×#Ñ# UÓ+€IÜ
×
&Ñ
&¨	Ó
2€CÜ× Ñ  # qÓ)€FÜ�1ŽXˆØ�A‰hˆØˆÜ�cœ3ÔÜ×,Ñ,¨f°cÕ:ä˜s¤U¬D MÔ2´s¸C³yÀA²~Ð^ÐG^Ó^ÐEØ‰JˆD�$Ù™DÐ9Ð"9Ó9�=Ü×2Ñ2°F¸AÓ>ˆIÜ×,Ñ,¨i¸Ô>Ü×,Ñ,¨i¸Õ>ð ô 
×Ñ˜	¤8¨E£?°FÕ;r)   c                 óª  — d}d}d}|t         j                  k(  rt        d«      }t         j                  }�n|t         j                  k(  r,t        d«      }t         j                  }t         j
                  }nÛ|t         j                  k(  r-t        d«      }t         j                  t         j
                  z  }n›|t         j                  k(  rt        d«      }n||t         j                  k(  rt        d«      }t         j                  }nM|t         j                  k(  rt        d«      }t         j                  }n|t         j                  k(  rt        d«      }|�,|j                  r t        j                  |t        d«      |«       |dk7  s|dk7  rKt        j                  |t        d«      «      }|| z  }||z  }t        j                  |t        d«      |«       yy)	z
    Set the field type
    r   NÚBtnÚTxÚChÚSigr‚  r£  )r�   rž  rô   ÚPDF_BTN_FIELD_IS_PUSHBUTTONr‘  ÚPDF_BTN_FIELD_IS_RADIOrŸ  r‘  r’  ÚPDF_CH_FIELD_IS_COMBOr“  rb  r»   r:  rC  r5  )r  rü   r·   ÚsetbitsÚ	clearbitsÚtypenamerz
  s          r(   ra  ra  ÷S  sx  € ð €GØ€IØ€HØŒu×+Ñ+Ò+Ü˜E“?ˆÜ×3Ñ3ŠØ	”×2Ñ2Ò	2Ü˜E“?ˆÜ×5Ñ5ˆ	Ü×.Ñ.‰Ø	”×/Ñ/Ò	/Ü˜E“?ˆÜ×6Ñ6¼×9UÑ9UÑU‰	Ø	”×+Ñ+Ò	+Ü˜D“>‰Ø	”×.Ñ.Ò	.Ü˜D“>ˆÜ×/Ñ/‰	Ø	”×/Ñ/Ò	/Ü˜D“>ˆÜ×-Ñ-‰Ø	”×0Ñ0Ò	0Ü˜E“?ˆàÐ × 3Ò 3Ü×Ñ˜3¤¨£°Ô9à�!‚|�y A’~Ü×%Ñ% c¬8°D«>Ó:ˆØ��
ÑˆØ�‰ˆÜ×Ñ˜s¤H¨T£N°DÕ9ð	 &r)   c                 óf  — d}t        j                  | «      }|j                  d«      }t        |«      }|dz
  }||   }||= t        |«      }t        j                  | |«      }	|	j
                  st|dkD  rodj                  |«      }
t        j                  t        j                  | t        |
«      «      «      rt        dt        |«      «      ‚||dz
  = t        |«      }|dkD  rŒot        j                  | |t        j                  |«      «       t        j                  | |«      }	t        j                  |	«      st        d|«      ‚t        j                  |	«      }||k7  rt        d|«      ‚t        | dd«      }t        |«      }d|›d|›d�}d|›d	|›�}|j!                  ||d«      }t#        ||«      }|S )
z*
    Set a PDF dict key to some value
    zfitz: replace me!r"  r   r   zpath to '%s' has indirectszcannot insert value for '%s'r‡  rˆ  r    )r�   r{  r5   r6   r£  r»   rÆ  r°  rM  re   Úpdf_dict_putpro  r
  rð   r
  r
  rÊ  r"  )rü   r  r¥   Ú
eyecatcherrF  r  ræ  rL  ÚskeyÚtestkeyr5  rq  r  ÚobjstrÚnullvalÚnewvalÚnewstrr‰  s                     r(   r
  r
  T  s—  € ð %€JÜ
×
&Ñ
& sÓ
+€Cà�I‰I�c‹N€EÜˆu‹:€DØˆq‰€AØ�‰8€DàˆaˆÜˆu‹:€DÜ×!Ñ! # sÓ+€GØ×Òð �QŠhØ—‘˜“ˆAÜ×$Ñ$¤U×%8Ñ%8¸¼lÈ1»oÓ%NÔOÜÐ <¼lÈ4Ó>PÓQÐQØ�d˜Q‘h�Ü�u“:ˆDð �Q‹hô 
×Ñ˜˜S¤%×";Ñ";¸JÓ"GÔHÜ×!Ñ! # sÓ+€GÜ×Ñ˜wÔ'ÜÐ6¸Ó<Ð<Ü×#Ñ# GÓ,€DØˆzÒÜÐ6¸Ó<Ð<ä
˜c 1 aÓ
(€CÜ# CÓ(�Fò !¢*Ð-�GÚ™uÐ%€FØ�^‰^˜G V¨QÓ/€Fô " # vÓ.€GØ€Nr)   c                 ó0  — |r t        j                  | t        d«      |«       |�Mt        j                  | t        d«      «       |r,t        j                  | t        d«      d«      }t        ||«       |�Mt        j                  | t        d«      «       |r,t        j                  | t        d«      d«      }t        ||«       |�Mt        j                  | t        d«      «       |r,t        j                  | t        d«      d«      }t        ||«       |�…t        j                  | t        d«      «       |rct        j                  | t        d«      d«      }t        |«      }t        |«      D ])  }||   }	t        j                  |d«      }
t        |
|	«       Œ+ y y y )Nr!  r…  r   r†  r  r~  )	r�   rA  rô   r-  r„  ÚJM_set_ocg_arrays_impr6   r8  r5  )r  r"	  rv  r#	  r$	  r  r9  rC   rL  Úitem0rü   s              r(   r!	  r!	  MT  sV  € ÙÜ×Ñ ¤x°Ó'<¸iÔHà	€~Ü×Ñ˜D¤(¨4£.Ô1ÙÜ×*Ñ*¨D´(¸4³.À!ÓDˆCÜ! 3¨Ô+Ø
€Ü×Ñ˜D¤(¨5£/Ô2ÙÜ×*Ñ*¨D´(¸5³/À1ÓEˆCÜ! 3¨Ô,ØÐÜ×Ñ˜D¤(¨8Ó"4Ô5ÙÜ×*Ñ*¨D´(¸8Ó2DÀaÓHˆCÜ! 3¨Ô/ØÐÜ×Ñ˜D¤(¨:Ó"6Ô7ÙÜ×*Ñ*¨D´(¸:Ó2FÈÓJˆCÜ�8‹}ˆAÜ˜1–X�Ø  ™�Ü×0Ñ0°#°qÓ9�Ü% s¨EÕ2ñ ð ð r)   c                 ó–   — t        j                  | «      }|D ]/  }t        j                  ||d«      }t        j                  | |«       Œ1 y)z�
    Set OCG arrays from dict of Python lists
    Works with dict like {"basestate":name, "on":list, "off":list, "rbg":list}
    r   N)r�   r{  rv  rx  )r9  r  rF  rý   rü   s        r(   rP  rP  kT  sB   € ô
 ×
&Ñ
& sÓ
+€CÛˆÜ×$Ñ$ S¨$°Ó2ˆÜ×Ñ˜S #Õ&ñ r)   c                 ó  — t        j                  | «      }t        j                  ||d«      }|j                  st	        t
        t        «       t        j                  | t        d«      «      }|j                  s t        j                  | t        d«      d«      }t        j                  |t        d«      «      }|j                  s t        j                  |t        d«      d«      }t        j                  |t        j                  |«      |«       y)zã
    Insert an item into Resources/Properties (used for Marked Content)
    Arguments:
    (1) e.g. page object, Form XObject
    (2) marked content name
    (3) xref of the referenced object (insert as indirect reference)
    r   r!  r   râ  N)r�   r{  rv  r»   rž  ru  r;  ró   rô   r>  r:  r!  )r   r   rý   rF  r%  rN  rã  s          r(   rÐ  rÐ  vT  sÊ   € ô ×
&Ñ
& sÓ
+€CÜ
×
 Ñ
   d¨AÓ
.€CØ�>Š>Ü”Ô.Ô/Ü×"Ñ" 3¬°Ó(=Ó>€IØ×ÒÜ×+Ñ+¨C´¸+Ó1FÈÓJˆ	Ü×#Ñ# I¬x¸Ó/EÓF€JØ× Ò Ü×,Ñ,¨Y¼ÀÓ8NÐPQÓRˆ
Ü	×Ñ�z¤5×#5Ñ#5°dÓ#;¸SÕAr)   c                 ó  ‡— t        | t        «      r| j                  } t        | t        j                  «      sJ dt        | «      ›dt
        ›�«       ‚t        | «      }|j                  sJ d«       ‚t        j                  | «      }|j                  «       }ˆfd„} |d«      }|} |d«      }t        |«      }t        |«      }	t        j                  ||	«      }t        j                  | |«        |d«      }|rot        |«      rdt        |«      }
t        j                   ||
«      }d}t#        |
«      D ]  }||   }t        j$                  ||«       Œ t        j&                  ||«        |d	«      }|rt        |«      rtt        |«      }
t        j                   ||
«      }t#        |
«      D ]  }t        j(                  |||   «       Œ t        j*                  ||t-        d
«      t-        d«      «        |d«      }|rƒt        |«      rxt        |«      }
t        j                   ||
«      }d}t#        |
«      D ]  }||   }t        j$                  ||«       Œ t        j*                  ||t-        d«      t-        d«      «        |d«      }|�+t/        |«      }t        j0                  |t-        d«      |«        |d«      }|�Et/        |«      }t        j2                  |«      }||k7  r t        j0                  |t-        d«      |«       |t        j4                  k(  r, |d«      }|}|r t        j6                  |t-        d«      |«        |d«      }|}t        j8                  ||«       |t        j:                  t        j<                  fv r |d«      }t?        | |«        |d«      }tA        |«      }t        j*                  ||t-        d
«      t-        d«      «        |d«      }|}t        j*                  |t        jB                  |«      t-        d
«      t-        d«      «        |d«      }t/        |«      }t        j0                  |t-        d«      |«       t        jD                  |t-        d«      «       t        jD                  |t-        d«      «        |d «      }|�”|t        j<                  k(  r|t        jF                  z  }nM|t        jH                  k(  r|t        jJ                  z  }n&|t        jL                  k(  r|t        jN                  z  }t        j6                  |t-        d!«      |«        |d"«      }t/        |«      }|rt        jP                  ||«        |d#«      }tS        |t-        d$«      t        jT                  «       |«        |d%«      }tS        |t-        d&«      t-        d'«      |«        |d(«      }tS        |t-        d&«      t-        d)«      |«        |d*«      }tS        |t-        d&«      t-        d+«      |«        |d,«      }tS        |t-        d&«      t-        d-«      |«        |d.«      }tS        |t-        d&«      t        jV                  d/«      |«        |d0«      }tS        |t-        d&«      t        jV                  d1«      |«        |d2«      }t/        |«      }|t        jH                  k(  rÑ|s:t        jX                  ||d3d4«       t        jZ                  |t-        d5«      d3«       �nÍt        j\                  |«      }|j                  rOt        j^                  |«      }t        jX                  |||d4«       t        jZ                  |t-        d5«      |«       �n]|�rZt        jZ                  |t-        d5«      |«       �n8|t        j`                  k(  rÊt        j\                  |«      }|j_                  «       }|d6|fv s|d7k(  rYt        jX                  |||d4«       t        jZ                  |t-        d5«      |«       t        jZ                  |t-        d+«      |«       nœt        jZ                  |t-        d5«      d3«       t        jZ                  |t-        d+«      d3«       n[|rYt        jX                  |||d4«       |t        j<                  t        j:                  fv rt        jD                  |t-        d8«      «       t        jb                  | «       t        jd                  | d4«       t        jf                  | d4«       t        jh                  | «       y)9z�
    Update the PDF form field with the properties from a Python Widget object.
    Called by "Page.add_widget" and "Annot.update_widget".
    ztype(annot)=r|  rË   c                 ó   •— t        ‰| d «      S r+   )rØ   )r   r'  s    €r(   ÚGETATTRz)JM_set_widget_properties.<locals>.GETATTR—T  s   ø€ Ü�v˜t TÓ*Ð*r)   rx  rä   rD  r   rp  rÿ  rñ  r«  rñ  ró  rt  Nrð  rs  rý  r~  ÚMaxLenrw  rq  rn  rÿ  ro  r�	  r€  r%  r  r®  rv  r£  rz  r]
  rð  r�  rƒ  rô  r‚  r•  rƒ  rõ  r„  rÓ  r…  rö  r†  r÷  ru  r�  r   r�  TÚYesr  )5r<   rÑ   r³   r�   rÓ   r·   rÏ   r»   rì   r  rí  r•  r–  rž  r  r6   r7  r8  r9  Úpdf_field_set_fill_colorr  r  rô   rM  rm  rû  r‘  r5  Úpdf_field_set_displayr’  r“  r:  r  r  r-  rB  r‘  rA  rž  r@  Úpdf_field_set_button_captionr  r  r!  Úpdf_set_field_valuerA  Úpdf_button_field_on_staterf  rŸ  r;  Úpdf_set_annot_hotÚpdf_set_annot_activer<  )rÎ   r'  rÅ   r  rF  rV  r¥   rx  rä   Úrot_matrC   Úfill_colrK  rL  rL  Ú
border_colrl  r   Úold_namer~  rõ  rÿ   ro  r·  rv  r#  r   Úonstaterv  s    `                           r(   ÚJM_set_widget_propertiesre  ‹T  s†  ø€ ô
 �5œ%Ô Ø—
‘
ˆÜ�uœeŸn™nÔ-ÐH°,´$°u³+°¸wÄÀÐ/HÓHÐ-Ü˜5Ó!€DØ�?Š?Ð:Ð:Ó:ˆ?Ü×#Ñ# EÓ*€IØ
�(‰(‹*€Cô+ñ �LÓ!€EØ€Jñ �F‹O€EÜ˜5Ó!€DÜ# DÓ)€GÜ×"Ñ" 4¨Ó1€DÜ	×Ñ˜U DÔ)ñ �LÓ!€EÙÔ! %Ô(Ü�‹JˆÜ×&Ñ& s¨AÓ.ˆØˆÜ�q–ˆAØ˜‘(ˆCÜ×%Ñ% h°Õ4ð ô 	×&Ñ& y°(Ô;ñ �OÓ$€EÙÔ! %Ô(Ü�‹JˆÜ×$Ñ$ S¨!Ó,ˆÜ�q–ˆAÜ×$Ñ$ V¨U°1©XÕ6ð ä×Ñ˜I v¬x¸«~¼xÈ»}ÔMñ �NÓ#€EÙÔ! %Ô(Ü�‹JˆÜ×(Ñ(¨¨aÓ0ˆ
ØˆÜ�q–ˆAØ˜‘(ˆCÜ×%Ñ% j°#Õ6ð ô 	×Ñ˜I z´8¸D³>Ä8ÈDÃ>ÔRñ �MÓ"€EØÐÜ˜UÓ#ˆÜ×&Ñ& y´(¸4³.À%ÔHñ �LÓ!€EØÐÜ˜EÓ"ˆÜ×,Ñ,¨YÓ7ˆØ�8ÒÜ×*Ñ*¨9´h¸s³mÀTÔJð ”U×/Ñ/Ò/Ù˜Ó&ˆØˆÙÜ×"Ñ" 9¬h°xÓ.@À+ÔNÙ�OÓ$€EØ€AÜ	×Ñ 	¨1Ô-ð ”e×3Ñ3´U×5SÑ5SÐTÑTÙ˜Ó(ˆÜ˜e UÔ+ñ �NÓ#€EÜ
˜eÓ
$€CÜ	×Ñ˜	 3¬°«¼À»ÔFñ �NÓ#€EØ€LÜ	×ÑØÜ×Ñ˜|Ó,Ü�T‹NÜ�S‹Mô	ñ �JÓ€EÜ	�eÓ	€BÜ	×"Ñ" 9¬h°t«n¸bÔAÜ	×Ñ�y¤(¨4£.Ô1Ü	×Ñ�y¤(¨4£.Ô1ñ ˜-Ó(€KØÐØœ×7Ñ7Ò7Øœ5×6Ñ6Ñ6‰KØœ5×<Ñ<Ò<Øœ5×7Ñ7Ñ7‰KØœ5×7Ñ7Ò7Øœ5×<Ñ<Ñ<ˆKÜ×Ñ 	¬8°D«>¸;ÔGñ Ð$Ó%€EÜ	�eÓ	€BÙ	Ü×*Ñ*¨9°bÔ9ñ �HÓ€EÜ�)œX c›]¬E¯L©L«N¸EÔBñ �OÓ$€EÜ�)œX d›^¬X°c«]¸EÔBñ �OÓ$€EÜ�)œX d›^¬X°c«]¸EÔBñ �OÓ$€EÜ�)œX d›^¬X°c«]¸EÔBñ �MÓ"€EÜ�)œX d›^¬X°c«]¸EÔBñ �MÓ"€EÜ�)œX d›^¬U×-?Ñ-?ÀÓ-EÀuÔMñ �NÓ#€EÜ�)œX d›^¬U×-?Ñ-?ÀÓ-EÀuÔMñ �MÓ"€EÜ˜Ó€DØ”U×6Ñ6Ò6ÙÜ×%Ñ% c¨9°e¸QÔ?Ü×#Ñ# I¬x¸«~¸uÖEô ×5Ñ5°iÓ@ˆGØ×!Ò!Ü×&Ñ& wÓ/�Ü×)Ñ)¨#¨y¸"¸aÔ@Ü×'Ñ'¨	´8¸D³>À2ÖFÚÜ×'Ñ'¨	´8¸D³>À4ÖHØ	”u×5Ñ5Ò	5Ü×1Ñ1°)Ó<ˆØ× Ñ Ó"ˆØ�T˜2�JÑ $¨%¢-Ü×%Ñ% c¨9°b¸!Ô<Ü×#Ñ# I¬x¸«~¸rÔBÜ×#Ñ# I¬x¸«}¸bÕAä×#Ñ# Y´¸³ÀÔFÜ×#Ñ# Y´¸³¸uÕEáÜ×%Ñ% c¨9°d¸AÔ>Øœe×<Ñ<¼e×>[Ñ>[Ð\Ñ\Ü×"Ñ" 9¬h°s«mÔ<Ü	×Ñ˜%Ô Ü	×Ñ˜E 1Ô%Ü	×Ñ˜u aÔ(Ü	×Ñ˜5Õ!r)   c                 óÈ  — d}|t        |«      k  rÑt        j                  ||d  «      \  }	}
||	z  }t        j                  ||
«      }|dk(  rt        j                  ||
d|«      \  }}n|}t        j
                  | ||||
||||«	       t        j                  |||«      }|dk(  rt        j                  ||d«      }nt        j                  |d| «      }|t        |«      k  rŒÑ|S r…   )r6   r�   Úfz_chartorunero
  rp
  Úfz_show_glyphr  Úfz_pre_translate)r   Ú	user_fontr  r_  rq
  Ú
bidi_levelr  r  rL  r  r²
  rt
  rH  r  s                 r(   r  r  MU  sé   € ð 	
€AØ
Œc�!‹fŠ*Ü×$Ñ$ Q q r UÓ+‰ˆˆ3Ø	ˆQ‰ˆÜ×*Ñ*¨9°cÓ:ˆØ�!Š8Ü×?Ñ?À	È3ÐPQÐS[Ó\‰IˆC‘àˆDÜ×Ñ˜D $¨¨S°#°u¸jÈ*ÐV^Ô_Ü×$Ñ$ T¨3°Ó6ˆØ�AŠ:Ü×(Ñ(¨¨c°1Ó5‰Cä×(Ñ(¨¨a°#°Ó6ˆCð Œc�!‹f‹*ð €Jr)   c                 óœ   — t        j                  | «      }|j                  d¬«      }|j                  t	        d«      «      }|dk\  r|d | }|S )NrÊ  rw  r   )r�   rl
  rÑ  r“   r¾	  )r=  Ú
buff_bytesrÿ   r÷  s       r(   r‹  r‹  iU  sN   € Ü×-Ñ-¨dÓ3€JØ
×
Ñ
 9Ð
Ó
-€CØ�‰”�Q“Ó€AØˆA‚vØ�"�1ˆgˆØ€Jr)   c                 ó    — t        d| › �«       y)z
    Generate a warning.
    z	warning: NrV  ro   s    r(   rí   rí   rU  s   € ô ˆi˜�vÐÕr)   c                 óª  — |r¹t        j                  |«      \  }}|dkD  rœt        |«      }t        |t         j                  «      sJ ‚|j
                  rit        j                  |«      \  }}||k  rLt        j                  |t         j                  t         j                  «       t        j                  | ||d«       yt        j                  | ||d«       y)zD
    update a stream object
    compress stream when beneficial
    é   r   Nr   )
r�   r   rX  r<   rT  r»   r:  ÚPDF_ENUM_NAME_FilterÚPDF_ENUM_NAME_FlateDecodeÚpdf_update_stream)r  rü   r  rí	  r¥  rí  Úbuffer_compressedÚlength_compresseds           r(   r  r  yU  s»   € ñ
 Ü×+Ñ+¨GÓ4‰	ˆ�Ø�BŠ;Ü 2°7Ó ;ÐÜÐ/´·±Ô@Ð@Ð@Ø ×+Ò+Ü',×'>Ñ'>Ð?PÓ'QÑ$Ð! 1Ø$ vÒ-Ü×&Ñ&ØÜ!×6Ñ6Ü!×;Ñ;ôô
 ×+Ñ+¨C°Ð6GÈÔKØä	×Ñ˜C  g¨qÕ1r)   c                 óè  — t        |t        j                  «      sJ dt        |«      ›�«       ‚|dkD  rt        j                  | |d«      }|S t        |j                  «      }|j                  «       }t        j                  t        j                  |t        d«      «      «      }t        j                  |t        d«      «      }|j                  rt        j                  ||«      }	nt        j                  | |«      }	t        |«      }
t        j                  | |t        j                   «       t        j"                  d«      |
«      }t%        | ||
d«       t        j&                  |t        d«      |	«       |S )zl
    Make an XObject from a PDF page
    For a positive xref assume that its object can be used instead
    ztype(gmap)=r   r›  r!  r   )r<   r�   ÚPdfGraftMapr·   rv  rÉ   r³   rü   r»  r*  rô   r»   r¬  Úpdf_graft_objectr  rÕ  r_  r  r  r:  )rµ  Úfsrcpagerý   r°  rÙ  ÚsrcpageÚspagerefrX  r�  rN  r  s              r(   rÔ  rÔ  ‘U  s/  € ô
 �dœE×-Ñ-Ô.Ð@°;´4¸³:°-Ð0@Ó@Ð.Øˆa‚xÜ×&Ñ& v¨t°QÓ7ˆð2 €Lô/ ˜xŸ}™}Ó-ˆØ—;‘;“=ˆÜ×$Ñ$¤U×%CÑ%CÀHÌhÐWaÓNbÓ%cÓdˆä×*Ñ*¨8´X¸kÓ5JÓKˆØ�?Š?ä×5Ñ5°d¸AÓ>‰Iä×.Ñ.¨v°qÓ9ˆIô ˜xÓ(ˆô
 ×%Ñ% f¨h¼¿¹Ó8HÌ%Ï,É,ÐWXË/Ð[^Ó_ˆä˜ ¨¨QÔ/ô 	×Ñ˜5¤(¨;Ó"7¸ÔCØ€Lr)   c                 ó.   — t        | t        t        f«      S r+   )r<   r¢   r¡   rñ  s    r(   r  r  ´U  s   € Ü�aœ%¤˜Ó'Ð'r)   c                 ó   — t        | «      S r+   )r6   rñ  s    r(   r  r  ¸U  s   € Üˆq‹6€Mr)   zbad annot typezbad or missing annot AP/Nz%arg must be seq of seq of float pairszbad seq of pointszbad type: 'buffer'zbad color sequencerì  zbad filetypezbad locationzbad config numberzbad layer numberzbad 'oc' referencezbad page idrË  zPDF has no rootzrect is infinite or emptyzbad type: 'text'rQ  zcolor count failedzneed font file or bufferzcannot create fontzis no annotationzis no imagerÊ  zobject is no PDF dictzsource pixmap has no alphazpixel(s) outside imager²   c                 ó   — t        | «      ‚r+   )re   )rÕ  Úexcs     r(   rž  rž  ÞU  s   € ô �S‹/Ðr)   c                 ó¤   — | syt        | t        «      r| j                  d|¬«      }nt        | t        «      r| d d  }j	                  d|¬«      }|S )NrZ   r¢	  rw  Úraw_unicode_escape)r<   rÙ   r²  r  rÑ  )r_  rx  r’   rE   s       r(   râ  râ  äU  sO   € áØÜ�!”SÔØ�X‰X�f VˆXÓ,‰Ü	�A”uÔ	Ø‰qˆTˆØ
�)‰)Ð(°ˆ)Ó
8€CØ€Jr)   c                 ó    — | rLt        | «      t        t        fvs)t        | «      dvst	        | «      dk  st        | «      dkD  rt        d«      ‚y y )NrX  r   r   z/need 1, 3 or 4 color components in range 0 to 1)r·   r¡   r¢   r6   r«  rÔ  r²   ©r©  s    r(   r]  r]  ðU  sM   € Ùä�‹GœD¤%˜=Ñ(Ü�1‹v˜YÑ&Ü�1‹v˜ŠzÜ�1‹v˜ŠzäÐNÓOÐOð ð 	r)   rÅ   ræ   c                 óF   — | j                  «       D ]  }|d   |k(  sŒ|c S  y)zGReturn an entry in the page's font list if reference name matches.
    r8  N)r  )rÅ   ræ   r¸  s      r(   r5  r5  ûU  s&   € ð �^‰^ÖˆØˆQ‰4�8ÓØŠHñ r)   c                 ó>   — | j                   D ]  }||d   k(  sŒ|c S  y)z3Return a font info if present in the document.
    r   N)rð  )r  rý   r¸  s      r(   r(  r(  V  s"   € ð �]Œ]ˆØ�1�Q‘4‹<ØŠHñ r)   r	  c                 óº   — t        | «      rt        | «      }|j                  fS t        | «      r| fS | D ]$  }t        |«      rŒt        |«      rŒt	        d«      ‚ | S )Nzbad quads entry)rð  r  rú  rñ  r²   )r	  r  r*  s      r(   rð  rð  V  sX   € Ü�ÔÜ�‹KˆØ—‘ˆyÐÜ�ÔØˆxˆÛˆÜ˜!•¤	¨!¥ÜÐ.Ó/Ð/ð ð €Lr)   c                 ó2  — t        | «      syt        | «      t        t        fv rt	        | «      dk(  st        d«      ‚t	        | d   «      dk(  rt	        | d   «      dk(  st        d«      ‚| d   d   | d   d	   cxk(  rdk(  st        d
«      ‚ t        d
«      ‚y)NFr   z$morph must be a sequence of length 2r   r   rØ  zinvalid morph param 0r8  r   zinvalid morph param 1T)r%  r·   r¡   r¢   r6   r²   rë  s    r(   rÏ  rÏ  V  s˜   € Ü�Œ7ØÜ�‹Gœœe�}Ñ$¬¨Q«°1ªÜÐ?Ó@Ð@Ü��!‘‹I˜ŠNœs 1 Q¡4›y¨Aš~ÜÐ0Ó1Ð1ØˆQ‰4�‰7�a˜‘d˜1‘gÔ" Ò"ÜÐ0Ó1Ð1ð #ÜÐ0Ó1Ð1Ør)   c                  ó   — y r+   )r9   rÖ   r²   r·   rë  s    r(   rS  rS  #V  s   € Ø
r)   r*  c                 óv   — 	 t        | «      }|j                  S # t        $ r t        dkD  r
t        «        Y yw xY w)zkCheck whether an object is convex, not empty  quad-like.

    It must be a sequence of 4 number pairs.
    r   F)r…  re   r÷   rt   r¢  )r*  Úq0s     r(   rñ  rñ  )V  s=   € ð
Ü�!‹Wˆð �<‰<Ðøô ò Ü !Ò#¬Ô(8Ùðús   ‚ ™8·8r  c                 ó”   — 	 t        | «      } | j                  xs | j
                   S # t        $ r t        dkD  r
t        «        Y yw xY w)zbCheck whether an object is non-degenerate rect-like.

    It must be a sequence of 4 numbers.
    r   F)r  re   r÷   rt   r�  rœ  r÷  s    r(   rð  rð  6V  sI   € ð
Ü�‹Gˆð —
‘
Ò+˜aŸm™mÐ,Ð,øô ò Ü !Ò#¬Ô(8Ùðús   ‚( ¨AÁAr¸  c                 óL  — | syt        | d«      r| f} t        | «       t        | «      dk(  r t        | d   «      dz   }|dk(  r|dz   S |dz   S t        | «      d	k(  r&t        t	        | «      «      dz   }|dk(  r|d
z   S |dz   S t        t	        | «      «      dz   }|dk(  r|dz   S |dz   S )NrZ   rW  r   r   r    r©  zG zg r   zRG zrg zK zk )r9   r]  r6   r£   r¢   )r©  r¸  r_  s      r(   r±  r±  CV  s¹   € ÙØÜˆq�+ÔØˆDˆÜˆq„MÜ
ˆ1ƒv�‚{Ü�a˜‘d‹O˜cÑ!ˆØ š8ˆq�4‰xÐ1¨¨T©Ð1ä
ˆ1ƒv�‚{Ü”e˜A“hÓ #Ñ%ˆØ šHˆq�5‰yÐ3¨!¨e©)Ð3ä”%˜“(Ó˜cÑ!€AØ˜C’xˆ1ˆt‰8Ð- Q¨¡XÐ-r)   c                 óÞ  ‡‡— | j                  «       Št        ‰«      Šˆˆfd„}	 ‰dk7  r.t        j                  ‰j	                  «       t        d«      d«       t        j                  ‰|«      }|D ]#  }t        |«      }t        j                  ||«       Œ% t        j                  |«       t        |d«        |«        t        |«      S # t        $ r t        r
t        «         |«        Y y w xY w)Nc                  ón   •— ‰dk7  r/t        j                  ‰ j                  «       t        d«      ‰«       y y )Nr   r   )r�   r5  rü   rô   )r˜  r=  s   €€r(   rŸ  z$Page__add_text_marker.<locals>.finalXV  s,   ø€ Ø�qŠ=Ü×"Ñ" 7§;¡;£=´(¸8Ó2DÀhÕOð r)   r   r   rð  )rø  r‡  r�   r5  rü   rô   rù  r&  Úpdf_add_annot_quad_pointr<  rû  re   r÷   rt   rÑ   )	r'   r	  rÝ  rŸ  rÎ   rA   r*  r˜  r=  s	          @@r(   rI  rI  UV  sÊ   ù€ Ø�n‰nÓ€GÜ Ó(€HõPðØ�qŠ=Ü×"Ñ" 7§;¡;£=´(¸8Ó2DÀaÔHÜ×&Ñ& w°
Ó;ˆÛˆDÜ Ó%ˆAÜ×*Ñ*¨5°!Õ4ð ô 	×Ñ˜uÔ%Ü˜˜sÔ#ÙŒô
 �‹<Ðøô	 ò Ý¤NÔ$4ÙŒÙðús   ¥BC	 Ã	 C,Ã+C,c                 óP   — t        | t        «      sJ ‚t        t        d| › �«      }|S )Nry  )r<   rÙ   rØ   r�   )r  rE   s     r(   rô   rô   lV  s,   € Ü�aœÔÐÐÜ
”%˜>¨!¨Ð-Ó
.€Cð €Jr)   r
  c                 ó¾   — |d   }d}t        | j                  «      D ]  \  }}|d   |k(  sŒd} n |r|| j                  <   y | j                  j                  |«       y )Nr   FT)rã  rð  ri   )r  r
  rý   rŽ  rL  Úfis         r(   r,  r,  zV  s_   € Ø�‰7€DØ€EÜ˜3Ÿ=™=Ö)‰ˆˆ2Øˆa‰5�D‹=ØˆEÙð *ñ Øˆ�‰�aÒà�‰×Ñ˜TÕ"r)   c                 óÜ   — d}t        t        |«      «      D ]D  }||   }|t        | «      k\  rt        |t        «      rd|v rŒ+ y|�t        | |   |«      s y|dz  }ŒF |t        | «      k7  ryy)zý
    Returns true if <args> matches <types>.

    Each item in <types> is a type or tuple of types. Any of these types will
    match an item in <args>. `None` will match anything in <args>. `type(None)`
    will match an arg whose value is `None`.
    r   NFr   T)r8  r6   r<   r¢   )rä  r  rn  rL  rG  s        r(   rž  rž  ‡V  sx   € ð 	
€AÜ”3�u“:ÖˆØ�a‘ˆØ”�D“	Š>Ü˜%¤Ô'¨D°E©MàáØÐ¤Z°°Q±¸Ô%?ÙØ	ˆQ‰‰ð ð 	ŒC�‹I‚~ØØr)   c                 óp  — t        |«      }t        j                  |«      }|j                  |j                  z
  }|j
                  |j                  z
  }|}	|}
|rt        | |«      }| |z  }||z  }ndx}}t        ||«      }|dk7  r|dk7  r|}|}|}|dk  r||z  ||z  kD  r||z  }	|}
n,|}	||z  }
n$||k7  r||z  ||z  kD  r||z  }	|}
n|}	||z  }
n|}	|}
t        j                  |j                  |j                  z   dz  |j                  |j
                  z   dz  «      }t        j                  dddddd«      }t        j                  ||«      }t        j                  |t        j                  |	|
«      «      }t        j                  |t        j                  |j                  |j                  «      «      }|S )z*
    # compute image insertion matrix
    r   r   rJ  r   g      à¿)rí  r�   Ú	fz_rotater÷  rø  rù  rú  rÔ  r«  ri  r  r  Úfz_scaleÚfz_translater  r  )rJ  rÅ  r¥  rE  rù	  r5  r@  ÚtrwÚtrhr   r¶  Úlarger©  rª  Úsmallr¸  r§  rc  s                     r(   r�  r�   V  s¶  € ô ˜BÓ€EÜ
�/‰/˜&Ó
!€CØ
�(‰(�U—X‘XÑ
€CØ
�(‰(�U—X‘XÑ
€CØ€AØ€AÙÜ�E˜6Ó"ˆØ�U‰]ˆØ�e‰^‰àˆˆˆRÜ��B‹K€EØ�‚{�v ’}ØˆØˆØˆØ	ˆA‚vØ�‰8�c˜B‘hÒØ�e‘ˆAØ‰AàˆAØ�e‘‰AØ	ˆrŠØ�‰8�c˜B‘hÒØ�e‘ˆAØ‰AàˆAØ�e‘‰AàˆØˆÜ
×
Ñ
Ø�X‰X˜Ÿ™Ñ  AÑ%Ø�X‰X˜Ÿ™Ñ  AÑ%ó€Cô ×
Ñ
˜q ! Q¨¨4°Ó
6€CÜ
�/‰/˜#˜sÓ
#€CÜ
�/‰/˜#œuŸ~™~¨a°Ó3Ó
4€CÜ
�/‰/˜#œu×1Ñ1°#·%±%¸¿¹Ó?Ó
@€CØ€Jr)   c                 óŒ  — | j                   j                  dk(  r«| j                   j                  j                  dk(  rˆ| j                   j                  j                  dk(  re|j                   j
                  j                  | j                   j                  j
                  j                  |j                   j                  dz  z
  k  S y)Nr   r   r!  )r»   rq
  rX  r  r  rp  Ú
first_charr¦  )rm   rs
  s     r(   r)  r)  ÑV  sŒ   € Ø‡�×Ñ Ò! d§o¡o×&9Ñ&9×&;Ñ&;¸qÒ&@ÀTÇ_Á_×EXÑEX×EZÑEZÐ^_ÒE_Ø�}‰}×#Ñ#×%Ñ%¨¯©×(BÑ(B×(IÑ(I×(KÑ(KÈbÏmÉm×N`ÑN`ÐcfÑNfÑ(fÑfÐfØr)   c           	      ó„   — | › dt        | «      › dt        t        | «      «      › d�}t        | «      D ]  }|d|› d�z  }Œ |S )Nr    ú (z):
rÎ  r$   )r·   r6   rX  )r  rE   rL  s      r(   Údir_strr   ×V  sK   € ØˆCˆq”�a“�	˜œC¤ A£›K˜=¨Ð
-€CÜ�ŽVˆØ��a�S˜ˆ|Ñ‰ð à€Jr)   r'  r  rþ  c           
      óp  — | j                  d«      r| j                  d«      r| S t        | «      sy|r‡|€<dj                  | D �cg c]   }t	        |«      dk  rdt	        |«      z  nd‘Œ" c}«      }nAdj                  | D �cg c]&  }t	        |«      dk  rd|t	        |«         d   z  nd‘Œ( c}«      }d|z   dz   S |dk  r2dj                  | D �cg c]  }d	|t	        |«         d   z  ‘Œ c}«      }n+dj                  | D �cg c]  }d	t	        |«      z  ‘Œ c}«      }d|z   dz   S c c}w c c}w c c}w c c}w )
aý   Return a PDF string enclosed in [] brackets, suitable for the PDF TJ
    operator.

    Notes:
        The input string is converted to either 2 or 4 hex digits per character.
    Args:
        simple: no glyphs: 2-chars, use char codes as the glyph
                glyphs: 2-chars, use glyphs instead of char codes (Symbol,
                ZapfDingbats)
        not simple: ordering < 0: 4-chars, use glyphs not char codes
                    ordering >=0: a CJK font! 4 chars, use char codes as glyphs
    z[<z>]z[<>]rZ   r  z%02xÚb7r   z%04x)r2   rÉ  r%  rÆ  rn
  )r   r'  r  rþ  r©  Úotxts         r(   rÎ  rÎ  ÞV  s9  € ð ‡��tÔ §¡¨tÔ!4Øˆä�Œ:ØáØˆ>Ø—7‘7ÉtÓTÉtÈ!¬s°1«v¸ª|˜F¤S¨£VšOÀÑEÈtÑTÓU‰Dà—7‘7ÙOSÓTÉtÈ!¬s°1«v¸ª|�˜&¤ Q£™.¨Ñ+Ò+ÀÑEÈtÑTóˆDð �d‰{˜TÑ!Ð!ð �!‚|Ø�w‰w¹DÓA¹D°q˜ ¬¨A«¡°Ñ!2Ó2¸DÑAÓB‰à�w‰w±Ó6±¨A˜¤ Q£›°Ñ6Ó7ˆà�$‰;˜ÑÐùò Uùò Uùò Bùâ6s   Á%D$Â +D)ÃD.Ä D3r_  c                 ó<  — t        | «      syd„ }d}| D ]  }t        |«      }|dkD  r
 || «      c S |dkD  r|dk  r|dv r|dz  }||z  }Œ6|dkD  r	|d	|z  z  }ŒD|d
k(  r|dz  }ŒO|dk(  r|dz  }ŒZ|dk(  r|dz  }Œe|dk(  r|dz  }Œp|dk(  r|dz  }Œ{|dz  }Œ� d|z   dz   S )až   Return a PDF string depending on its coding.

    Notes:
        Returns a string bracketed with either "()" or "<>" for hex values.
        If only ascii then "(original)" is returned, else if only 8 bit chars
        then "(original)" with interspersed octal strings 
nn is returned,
        else a string "<FEFF[hexstring]>" is returned, where [hexstring] is the
        UTF-16BE encoding of the original.
    z()c                 ób   — t        ddg«      t        | d«      z   }d|j                  «       z   dz   S )NrŽ  r¥	  zUTF-16BEÚ<Ú>)rL  Úhex)r_  r  s     r(   Úmake_utf16bez!get_pdf_str.<locals>.make_utf16beW  s1   € Ü�s˜C�jÓ!¤I¨a°Ó$<Ñ<ˆØ�Q—U‘U“W‰}˜sÑ"Ð"r)   rZ   r¥	  é   r  )r‡  rˆ  rQ
  rQ
  z\%03or   z\brÛ  z\trˆ  rý  r·  z\fr”  z\rz\267r‡  rˆ  )r%  rn
  )r_  r©  r  r©  r³  s        r(   rR  rR  W  sì   € ô �Œ7Øò#ð 	€AÛˆÜ�‹VˆØ�Š8Ù “?Ò"à�Š7�r˜C’xØÐ$Ñ$Ø�T‘	�Ø�‰FˆAØà�Š8Ø�˜B‘ÑˆAØð �Š7Ø�‰J‰AØ�1ŠWØ�‰J‰AØ�2ŠXØ�‰J‰AØ�2ŠXØ�‰J‰AØ�2ŠXØ�‰J‰Aà�‰L‰Að7 ð: �‰7�S‰=Ðr)   c                 óL  — | r| S t        j                  d«      } | r| S ddl}|j                  ddddd¬«      }|j                  dk(  r5t        j                  d|j                  «      }|r|j                  d«      } | S t        j                  d	k(  r´|j                  d
dddd¬«      }|j                  j                  «       }|j                  s|st        d«      ‚t         j                  j                  |«      }t         j                  j                  |d«      } t         j                  j!                  | «      r| S t        d«      ‚t#        «       }dD ]«  }|j                  d|› �dddd¬«      }|j                  dk(  sŒ,|j                  j                  «       j%                  «       }t'        |«      dk(  sŒc|d   }|› d�}|j)                  |«       t+        j*                  |«      }	|	j-                  «        |	sŒ¦|	d   c S  |rd}
|D ]
  }|
d|› �z  }
Œ t        |
«      ‚t        d«      ‚)aã  Detect Tesseract language support folder.

    This function is used to enable OCR via Tesseract even if the language
    support folder is not specified directly or in environment variable
    TESSDATA_PREFIX.

    * If <tessdata> is set we return it directly.
    
    * Otherwise we return `os.environ['TESSDATA_PREFIX']` if set.
    
    * Otherwise we search for a Tesseract installation and return its language
      support folder.

    * Otherwise we raise an exception.
    ÚTESSDATA_PREFIXr   Nztesseract --list-langsr   T)ÚshellÚcapture_outputrg  r   z%List of available languages in "(.+)"Úwin32zwhere tesseractz4No tessdata specified and Tesseract is not installedrK  zINo tessdata specified and Tesseract installation has no {tessdata} folder)ztesseract-ocrÚ	tesseractzwhereis r   z/*/tessdatar…  z(No tessdata specified and no match for:
rÎ  )rb   ÚgetenvÚ
subprocessr¾  Ú
returncoder`  rŒ  Ústdoutra  r*
  Úplatformr±  rÍ   r	   ÚdirnamerÆ  r  r¡   r5   r6   ri   Úglobr¹  )rK  r²  Úcprm  rø  r¶  Úattemptsr	   ÚpatternÚ	tessdatasr   Úattempts               r(   rE  rE  8W  sõ  € ñ  ØˆÜ�y‰yÐ*Ó+€HÙØˆó à	�‰Ð0¸È!ÐSTÐ[_ˆÓ	`€BØ	‡}�}˜ÒÜ�I‰IÐ=¸r¿y¹yÓIˆÙØ—w‘w˜q“zˆHØˆOô ‡|�|�wÒØ�^‰^Ð-°QÀqÐPQÐX\ˆ^Ó]ˆØ—9‘9—?‘?Ó$ˆØ�=Š=¡ÜÐUÓVÐVÜ—'‘'—/‘/ (Ó+ˆÜ—7‘7—<‘< ¨Ó4ˆÜ�7‰7�>‰>˜(Ô#ØˆOäÐjÓkÐkô ‹v€HÛ,ˆØ�^‰^˜h t fÐ-°QÀqÐPQÐX\ˆ^Ó]ˆØ�=‰=˜AÓØ—y‘y—‘Ó(×.Ñ.Ó0ˆHÜ�8‹} Ó!à" 1™+�Ø$˜I [Ð1�Ø—‘ Ô(Ü ŸI™I gÓ.�	Ø—‘Ô ÚØ$ R™=Ò(ð -ñ Ø:ˆÛˆGØ�d˜7˜)Ð$Ñ$‰Dð  ä˜4Ó Ð äÐQÓRÐRr)   )ÚCSSr>  r   Úfontcoder½  r>  c                ó¸  — d}t        |«      t        urt        d«      ‚|€d}t        j	                  «       D �cg c]  }|j                  | «      sŒ|‘Œ }}|g k(  rt        d| › d�«      ‚t        |«      dkD  rt        d«      ‚|€| }|D ]I  }t        |   }|d   }	|d	   }
 |d
   «       }|j                  ||«       |	rdnd}|
rdnd}||||||fz  z  }ŒK |S c c}w )a  Create @font-face items for the given fontcode of pymupdf-fonts.

    Adds @font-face support for fonts contained in package pymupdf-fonts.

    Creates a CSS font-family for all fonts starting with string 'fontcode'.

    Note:
        The font naming convention in package pymupdf-fonts is "fontcode<sf>",
        where the suffix "sf" is either empty or one of "it", "bo" or "bi".
        These suffixes thus represent the regular, italic, bold or bold-italic
        variants of a font. For example, font code "notos" refers to fonts
        "notos" - "Noto Sans Regular"
        "notosit" - "Noto Sans Italic"
        "notosbo" - "Noto Sans Bold"
        "notosbi" - "Noto Sans Bold Italic"

        This function creates four CSS @font-face definitions and collectively
        assigns the font-family name "notos" to them (or the "name" value).

    All fitting font buffers of the pymupdf-fonts package are placed / added
    to the archive provided as parameter.
    To use the font in pymupdf.Story, execute 'set_font(fontcode)'. The correct
    font weight (bold) or style (italic) will automatically be selected.
    Expects and returns the CSS source, with the new CSS definitions appended.

    Args:
        fontcode: (str) font code for naming the font variants to include.
                  E.g. "fig" adds notos, notosi, notosb, notosbi fonts.
                  A maximum of 4 font variants is accepted.
        CSS: (str) CSS string to add @font-face definitions to.
        archive: (Archive, mandatory) where to place the font buffers.
        name: (str) use this as family-name instead of 'fontcode'.
    Returns:
        Modified CSS, with appended @font-face statements for each font variant
        of fontcode.
        Fontbuffers associated with "fontcode" will be added to 'archive'.
    z1
@font-face {font-family: %s; src: url(%s);%s%s}
z'archive' must be an ArchiverZ   zNo font code 'z' found in pymupdf-fonts.r8  zfontcode too shortr=  rQ  r¾  zfont-weight: bold;zfont-style: italic;)r·   r(  r²   rX
  r®  r2   r6   r,  )r¾  r½  r>  r   ÚCSSFONTr�  Ú	font_keysÚfkeyrH  r=  rQ  ÚfbuffÚ	bold_textÚitalic_texts                 r(   Úcss_for_pymupdf_fontrÆ  ~W  s  € ðR D€Gä�‹=œGÑ#ÜÐ7Ó8Ð8Ø
€{Øˆô 1×5Ñ5Ô7ÓRÑ7�q¸1¿<¹<ÈÕ;Q’Ð7€IÐRØ�B‚Ü˜>¨(¨Ð3LÐMÓNÐNÜ
ˆ9ƒ~˜ÒÜÐ-Ó.Ð.Ø€|ØˆãˆÜ# DÑ)ˆØ�F‰|ˆØ�h‘ˆØ��X‘Ó ˆØ�‰�E˜4Ô Ù,0Ñ(°bˆ	Ù/5Ñ+¸2ˆØˆw˜$  i°Ð=Ñ=Ñ=‰ð ð €Jùò# Ss   ¹CÁCrç   rØ  c           	      ó¨  — |j                  «       }t        j                  |d«      }d}|dk(  rt        }|dk(  rt        }|�Ct        | D �cg c])  }t        |«      dk  r|t        |«         d   n|d   d   ‘Œ+ c}«      }||z  S |t        j                  «       v rt        | t        |   ||«      S |dv rt        | «      |z  S t        d|z  «      ‚c c}w )	a  Calculate length of a string for a built-in font.

    Args:
        fontname: name of the font.
        fontsize: font size points.
        encoding: encoding to use, 0=Latin (default), 1=Greek, 2=Cyrillic.
    Returns:
        (float) length of text.
    Nr&  r%  r  r   rÀ  )rS
  rU
  rT
  r2  rW
  r3  rV
  r4  zFont '%s' is unsupported)r¿  r[
  r7   r+  r*  rî
  rn
  r®  Úutil_measure_stringr6   r²   )r   ræ   rç   rØ  r¬  r'  r©  r   s           r(   r$  r$  ÃW  sô   € ð �~‰~Ó€HÜ×"Ñ" 8¨TÓ2€Hà€FØ�8ÒÜˆØ�>Ò!ÜˆØÐÜÑPTÓUÑPTÈ1¤c¨!£f¨s¢l�œ˜A›‘ Ò"¸¸s¹ÀA¹ÑFÐPTÑUÓVˆØ�8‰|Ðà”?×'Ñ'Ó)Ñ)Ü"Ø”/ (Ñ+¨X°xó
ð 	
ð ð 	ñ 	ô �4‹y˜8Ñ#Ð#ä
Ð/°(Ñ:Ó
;Ð;ùò) Vs   Á
.CrÄ  c                 ó  — t        | «      t        j                  u r| j                  «       }nBt	        | d«      r| j                  «       }n%t        | «      t        t        fv r| }nt        d«      ‚t        j                  |«      S )aG   Return basic properties of an image.

    Args:
        img: bytes, bytearray, io.BytesIO object or an opened image file.
    Returns:
        A dictionary with keys width, height, colorspace.n, bpc, type, ext and size,
        where 'type' is the MuPDF image type (0 to 14) and 'ext' the suitable
        file extension.
    rb  zbad argument 'img')r·   rM  rN  rf  r9   rb  r  rL  r²   rø   Úimage_profile)rÄ  r   s     r(   rÊ  rÊ  íW  sg   € ô ˆCƒy”B—J‘JÑØ—‘“‰Ü	��fÔ	Ø—‘“‰Ü	ˆc‹”uœiÐ(Ñ	(Ø‰äÐ-Ó.Ð.ä×Ñ˜vÓ&Ð&r)   c                 óœ  ‡ — t        ‰ j                  t        «      sJ ‚t        ‰ j                  «      s‰ j                  rS‰ j                  €J ‚ t        ‰ j                  ‰ j                  «      ‰ j                  «      }|st        d«       d‰ _        yˆ fd„}t        ‰ j                  t        «      sJ ‚t        ‰ j                  «      }|dk(  r |«       S ‰ j                  t           }|dk7  r |«       S ‰ j                  |dz
     }|t           }|dk7  r |«       S |t           }‰ j                  t           }||k7  r |«       S 	 ‰ j                  j                  «       D ]  \  }	}
|	|vsŒ|
||	<   Œ d}|dk(  r$d	|t        <   ‰ j                  j                  «        yt        d
«        |«        y# t        $ r t        r
t        «        d}Y ŒYw xY w)aq  
    Append current path to list or merge into last path of the list.
    (1) Append if first path, different item lists or not a 'stroke' version
        of previous path
    (2) If new path has the same items, merge its content into previous path
        and change path["type"] to "fs".
    (3) If "out" is callable, skip the previous and pass dictionary to it.
    Nr   z2calling cdrawings callback function/method failed!c                  ó    •— ‰ j                   j                  ‰ j                  j                  «       «       ‰ j                  j	                  «        y r+   )rì  ri   ÚpathdictrG  rb  )rw  s   €r(   ri   zjm_append_merge.<locals>.appendX  s0   ø€ à�‰�‰�s—|‘|×(Ñ(Ó*Ô+Ø�‰×ÑÕr)   r_  r   r¸  r…  r¨  z$could not merge stroke and fill path)r<   rì  r¡   r¦  r«  rØ   rÍ  rp   r6   rß  Údictkey_itemsr@   re   r÷   rt   rb  )rw  Úrespri   ræ  Úthistyper¨  ÚprevtypeÚ	previtemsÚ	thisitemsr�  rD   r’   s   `           r(   Újm_append_mergerÔ  X  sœ  ø€ ô �c—g‘gœtÔ$Ð$Ð$ô �—
‘
Ô˜sŸzšzà�:‰:Ðà�1ð 0”7˜3Ÿ7™7 C§J¡JÓ/°·±Ó=ˆDÙÜÐHÔIØˆŒØôô �c—g‘gœtÔ$Ð$Ð$Üˆs�w‰w‹<€Dàˆq‚yÙ‹xˆà�|‰|œ\Ñ*€Hà�3‚Ù‹xˆØ�7‰7�D˜‘FÑ€Dà”\Ñ"€Hà�3‚Ù‹xˆà”mÑ$€IØ—‘œmÑ,€IØ�IÒÙ‹xˆðØ—L‘L×&Ñ&Ö(‰DˆAˆqØ˜Š}Ø��Q’ð )ð ˆð
 
ˆQ‚wØ"ˆŒlÑØ�‰×ÑÕäÐ6Ô7Ù�øô ò Ý¤NÔ$4àŠðús   Å$F- Å(	F- Æ-GÇ
Gc                 óÌ   — | j                   s'| j                  j                  |t        |«      f«       y | j                  j                  |t        |«      | j                  f«       y r+   )r¡  r  ri   rT  Ú
layer_name)rw  rÞ  rä   r³  s       r(   Újm_bbox_add_rectr×  JX  sG   € Ø�:Š:Ø�
‰
×Ñ˜D¤/°$Ó"7Ð8Õ9à�
‰
×Ñ˜D¤/°$Ó"7¸¿¹ÐHÕIr)   c                 óÂ   — t        j                  t         j                  j                  «      }t        j                  |j	                  «       |«      }t        | ||d«       y )Nz
fill-image)r�   rU  rS  Úll_fz_transform_rectrî  r×  )rw  rÞ  r¥  rË  rÉ  Úcolor_paramsr  s          r(   Újm_bbox_fill_imagerÛ  QX  s@   € Ü�‰”U—\‘\×,Ñ,Ó-€AÜ×"Ñ" A§J¡J£L°#Ó6€AÜ�c˜3  <Õ0r)   c                 ó¢   — 	 t        | |t        j                  t        j                  |«      d«       y # t        $ r t
        r
t        «        ‚ w xY w)Nzfill-imgmask)r×  r�   rÙ  Úfz_unit_rectre   r÷   rt   )rw  rÞ  r¥  rË  rÈ  rô  rÉ  rÚ  s           r(   Újm_bbox_fill_image_maskrÞ  WX  sD   € ðÜ˜#˜s¤E×$>Ñ$>¼u×?QÑ?QÐSVÓ$WÐYgÕhøÜò Ý¤NÔ$4Øðús	   ‚03 ³Ac	           	      ó”   — |rdnd}	 t        | |t        j                  |d |«      d«       y # t        $ r t        r
t        «        ‚ w xY w)NTFz	fill-path©r×  r�   Úll_fz_bound_pathre   r÷   rt   ©	rw  rÞ  r	   rµ  rË  rÈ  rô  rÉ  rÚ  s	            r(   Újm_bbox_fill_pathrã  _X  sG   € Ù‰t U€HðÜ˜#˜s¤E×$:Ñ$:¸4ÀÀsÓ$KÈ[ÕYøÜò Ý¤NÔ$4Øðús	   ˆ#, ¬Ac                 ó†   — 	 t        | |t        j                  ||«      d«       y # t        $ r t        r
t        «        ‚ w xY w)Nz
fill-shade)r×  r�   Úll_fz_bound_shadere   r÷   rt   )rw  rÞ  ÚshaderË  rÉ  rÚ  s         r(   Újm_bbox_fill_shaderç  hX  s<   € ðÜ˜#˜s¤E×$;Ñ$;¸UÀCÓ$HÈ,ÕWøÜò Ý¤NÔ$4Øðús	   ‚"% ¥A c           	      óˆ   — 	 t        | |t        j                  |||«      d«       y # t        $ r t        r
t        «        ‚ w xY w)Nzstroke-text©r×  r�   Úll_fz_bound_textre   r÷   rt   )rw  rÞ  r   rU  rË  rä  s         r(   Újm_bbox_stroke_textrë  pX  ó?   € ðÜ˜#˜s¤E×$:Ñ$:¸DÀ&È#Ó$NÐP]Õ^øÜò Ý¤NÔ$4Øðúó	   ‚#& ¦Ac           	      óˆ   — 	 t        | |t        j                  |d |«      d«       y # t        $ r t        r
t        «        ‚ w xY w)Nz	fill-textré  )rw  rÞ  r   rË  rä  s        r(   Újm_bbox_fill_textrï  xX  s>   € ðÜ˜#˜s¤E×$:Ñ$:¸DÀ$ÈÓ$LÈkÕZøÜò Ý¤NÔ$4Øðúrí  c           	      óJ   — t        | |t        j                  |d |«      d«       y )Nzignore-text)r×  r�   rê  )rw  rÞ  r   rË  s       r(   Újm_bbox_ignore_textrñ  €X  s   € Ü�c˜3¤× 6Ñ 6°t¸TÀ3Ó GÈÕWr)   c	           	      óˆ   — 	 t        | |t        j                  |||«      d«       y # t        $ r t        r
t        «        ‚ w xY w)Nzstroke-pathrà  )	rw  rÞ  r	   rU  rË  rÈ  rô  rÉ  rÚ  s	            r(   Újm_bbox_stroke_pathró  „X  rì  rí  c                 ó  — | j                   t           }t        |«      }dgdz  }t        d«      D ]P  }||dz
  |z      }t	        |d   «      }|j
                  ||dz  <   |j                  ||dz  dz   <   t	        |d   «      }ŒR j
                  |d   k7  s|j                  |d   k7  ryd| _        t        j                  |d   |d   |d   |d   |d   |d   |d   |d	   «      }d
t        |«      f}	|	||dz
  <   ||dz
  |…= y)a  
    Check whether the last 4 lines represent a quad.
    Because of how we count, the lines are a polyline already, i.e. last point
    of a line equals 1st point of next line.
    So we check for a polygon (last line's end point equals start point).
    If not true we return 0.
    r   r   r8  r   r   rØ  rµ  r   r   r·  )rÍ  rÎ  r6   r8  r÷  r  r  Ú	linecountr�   r  r6  )
rw  r@   ræ  r¸  rL  rm   rq  r\  r*  rä   s
             r(   Újm_checkquadrö  ŒX  s%  € ð �L‰Lœ-Ñ(€EÜˆu‹:€DØ	
ˆˆa‰€Aä�AŽYˆØ�d˜Q‘h ‘lÑ#ˆÜ  a¡Ó)ˆØ—6‘6ˆˆ!ˆa‰%‰Ø—v‘vˆˆ!ˆa‰%�!‰)‰Ü˜t Q™xÓ(‰ð ð 
‡t�tˆq�‰t‚|�r—t‘t˜q ™t’|ð ð €C„Mô 	×Ñ˜1˜Q™4  1¡ q¨¡t¨Q¨q©T°1°Q±4¸¸1¹¸qÀ¹tÀQÀqÁTÓJ€AØ”/ !Ó$Ð%€Dà€Eˆ4�!‰8ÑØˆt�a‰x˜$ˆÐØr)   c                 ó&  — d| _         d}| j                  t           }t        |«      }||dz
     }t	        |d   «      }t	        |d   «      }||dz
     }t	        |d   «      }t	        |d   «      }		 |j
                  |j
                  k7  sK|j                  |	j                  k7  s2|j
                  |	j
                  k7  s|j                  |j                  k7  ry|	j
                  |j
                  k  rCt        j                  |	j                  |	j
                  |j                  |j
                  «      }
d}nBt        j                  |j                  |j
                  |j                  |j
                  «      }
d}dt        |
«      |f}|||dz
  <   ||dz
  |…= y)z}
    Check whether the last 3 path items represent a rectangle.
    Returns 1 if we have modified the path, otherwise 0.
    r   r   r   r   r…  r`  )
rõ  rÍ  rÎ  r6   r÷  r  r  r�   rý  rT  )rw  r:  r@   ræ  r5  r  r	  Úline2r
  r”  r  rä   s               r(   Újm_checkrectrù  ³X  sZ  € ð €C„MØ€KØ�L‰Lœ-Ñ(€EÜˆu‹:€Dà�4˜!‘8Ñ€EÜ	˜5 !™9Ó	%€BÜ	˜5 !™9Ó	%€Bð �4˜!‘8Ñ€EÜ	˜5 !™9Ó	%€BÜ	˜5 !™9Ó	%€Bð 	
Ø�t‰t�r—t‘tŠ|Ø�t‰t�r—t‘tŠ|Ø�t‰t�r—t‘tŠ|Ø�t‰t�r—t‘tŠ|àð 
‡t�tˆb�d‰d‚{Ü×Ñ˜rŸt™t R§T¡T¨2¯4©4°·±Ó6ˆØ‰ä×Ñ˜rŸt™t R§T¡T¨2¯4©4°·±Ó6ˆØˆà”? 1Ó% {Ð3€DØ€Eˆ4�!‰8ÑØˆt�a‰x˜$ˆÐØr)   c           
      ó`   — |j                   }	 |sy t        | |||||||«       |j                  }Œ"r+   )ÚheadÚjm_trace_text_spanr*  )	rw  r   rG  rË  rÈ  rô  rÉ  Úseqnor×  s	            r(   Újm_trace_textrþ  äX  s8   € Ø�9‰9€DØ
ÙØÜ˜C  u¨c°:¸uÀeÈUÔSØ�y‰yˆð	 r)   c                 ó˜  — d}t        |t        j                  «      sJ ‚t        j                  |«      }t        |t        j                  «      sJ ‚t        j
                  |«      }t        |j                  «       «      }	t        j                  |j                  «       |«      }
t        j                  t        j                  dd«      |
«      }t        j                  |j                  |j                  z  |j                  |j                  z  z   «      }t        j                   |«      }d}t#        |j                  «       «      }t%        |j                  «       «      }|dk  rd}d}||z  ||z
  z  }||z  ||z
  z  }d}t        j&                  |j                  «       «      }||t(        z  z  }|t        j*                  |j                  «       «      t,        z  z  }|t        j.                  |j                  «       «      t0        z  z  }|t        j2                  |j                  «       «      t4        z  z  }d}t        j6                  «       }t        j8                  |j                  |j                  |j                   |j                  dd«      }|j                  dk(  rd|_        g }t=        |j>                  j@                  «      D �]ü  }d}|jC                  |«      jD                  dk\  rRt        jF                  |j                  «       |jC                  |«      jD                  |j>                  jH                  «      }||z  }|}|jC                  |«      jJ                  dk(  r|}t        j                  |jC                  |«      j                  |jC                  |«      j                  «      }t        jL                  ||«      }t        j8                  dddd|j                   |j                   «      }t        j                  ||«      }t        j                  |t        j
                  dddd|j                  |j                  «      «      }|j                  }||z   }|
j:                  dkD  r|j                  dk(  s8|j                  dk(  s)|
jN                  dk7  r9|
jN                  |
jP                   k(  r|j                  |z   }|j                  |z   }n|j                  |z
  }|j                  |z
  }t        jR                  ||||«      } t        jT                  | |«      } |jW                  |jC                  |«      jJ                  |jC                  |«      jD                  |j                  |j                  f| jX                  | jZ                  | j\                  | j^                  ff«       |dkD  rt        j`                  || «      }�Œû| }�Œÿ tc        |«      }|sw|t(        z  slt        jd                  |j                  «       ddd«      \  }!}t        jF                  |j                  «       |!|j>                  jH                  «      }||z  }|s|}n|}tg        «       }"ti        |«      |"d	<   tk        |	«      |"d
<   |j>                  jH                  |"d<   ||"d<   |j>                  jl                  |"d<   |j>                  jn                  |"d<   ||"d<   ||"d<   d|"d<   |r{t        jp                  t        jr                  t        jt                  |«      «      |t        jv                  «       t        jr                  «       t        jx                  «       «      }#|#dd }#nd}#| jz                  dkD  r| jz                  }$n|dz  }$|#|"d<   ||"d<   ||"d<   |$|"d<   ||"d<   ||"d<   t}        |«      |"d<   | j~                  |"d<   ||"d<   ||"d<   | j€                  jW                  |"«       y)z³
    jm_trace_text_span(fz_context *ctx, PyObject *out, fz_text_span *span, int type, fz_matrix ctm, fz_colorspace *colorspace, const float *color, float alpha, size_t seqno)
    Nr   r   r¡  r0  r1  r…  rä  rX  rH  rq
  r¬  Úbidi_lvlÚbidi_dirr  r  r   rÈ  rl  rc  rô  r¦  rB  Ú	linewidthÚ
spacewidthr·   r  Úlayerrý  rÕ	  )Ar<   r�   Úfz_text_spanÚ
FzTextSpanÚ	fz_matrixr_  rž  rH  r  r  Úfz_transform_vectorri  rì
  rí
  r  r  Úfz_normalize_vectorr6  r7  r�
  r,  r›
  r*  r 
  r+  r™
  r-  rU  r  rõ  r8  r»   r6   r@   rt
  r  rq
  r²
  r  r{
  r©  rý  r–  ri   rø  rú  r÷  rù  r�  r¢   rp
  r4   r›  r   rk  r  Úfz_convert_colorr‡  r«  rÁ  r…  r  rT  rÖ  rì  )%rw  r×  rG  rË  rÈ  rô  rÉ  rý  Úout_fontræ   rc  rX  rä  Ú	space_advr/  r0  ÚascsizeÚdscsizeÚfflagsr|
  Úlast_advÚ	span_bboxr@  rÕ	  rL  r  Ú	char_origr  rø  r÷  rú  rù  Ú	char_bboxr©  Ú	span_dictr¹  r  s%                                        r(   rü  rü  íX  s}  € ð €HÜ�tœU×/Ñ/Ô0Ð0Ð0Ü×Ñ˜TÓ"€DÜ�sœEŸO™OÔ,Ð,Ð,Ü
�.‰.˜#Ó
€CÜ˜TŸY™Y›[Ó)€Hô �/‰/˜$Ÿ(™(›* cÓ
*€CÜ
×
#Ñ
#¤E×$7Ñ$7¸¸1Ó$=¸sÓ
C€CÜ�I‰I�c—e‘e˜cŸe™e‘m c§e¡e¨c¯e©e¡mÑ3Ó4€Eä
×
#Ñ
# CÓ
(€Cà€IÜ
˜DŸI™I›KÓ
(€CÜ
˜TŸY™Y›[Ó
)€CØ
ˆT‚zØˆØˆð �E‰k˜S 3™YÑ'€GØ�E‰k˜S 3™YÑ'€GØ€FÜ×&Ñ&¨¯	©	«Ó4€DØ
ˆdÔ)Ñ)Ñ)€FØ
Œe×%Ñ% t§y¡y£{Ó3Ô6FÑFÑF€FØ
Œe×$Ñ$ d§i¡i£kÓ2Ô5FÑFÑF€FØ
Œe×#Ñ# T§Y¡Y£[Ó1´NÑBÑB€Fà€Hô —‘“€IÜ
×
Ñ
˜sŸu™u c§e¡e¨c¯e©e¨V°S·U±U¸A¸qÓ
A€CØ
‡u�u�‚{ØˆŒà€EÜ�D—O‘O×'Ñ'×(ˆØˆØ�:‰:�a‹=×Ñ Ò!Ü×(Ñ(¨$¯)©)«+°t·z±zÀ!³}×7HÑ7HÈ$Ï/É/×J_ÑJ_Ó`ˆCØˆu‰ˆØˆØ�:‰:�a‹=×Ñ Ò"ØˆIÜ×'Ñ'¨¯
©
°1«¯©¸¿¹ÀA»¿¹ÓIˆ	Ü×,Ñ,¨Y¸Ó<ˆ	Ü×!Ñ! ! Q¨¨1¨y¯{©{¨l¸Y¿[¹[¸LÓIˆÜ�_‰_˜R Ó%ˆÜ�_‰_˜R¤§¡°°1°a¸¸I¿K¹KÈÏÉÓ!UÓVˆØ�[‰[ˆØ�#‰Xˆà—‘˜’ §¡¨¢
¨c¯e©e°rªkà—‘˜!’ §¡¨#¯%©%¨¢à—‘˜wÑ&ˆBØ—‘˜wÑ&‰Bà—‘˜wÑ&ˆBØ—‘˜wÑ&ˆBÜ×&Ñ& r¨2¨r°2Ó6ˆ	Ü×+Ñ+¨I°rÓ:ˆ	Ø�‰à—J‘J˜q“M×%Ñ%Ø—J‘J˜q“M×%Ñ%à!Ÿ™Ø!Ÿ™ðð
 "Ÿ™Ø!Ÿ™Ø!Ÿ™Ø!Ÿ™ð	ðô	ð  ˆqŠ5Ü×+Ñ+¨I°yÓAŠIà!ŠIð] )ô^ �%‹L€EáØÔ-Ò-Ü×AÑAÀ4Ç9Á9Ã;ÐPRÐTUÐWXÓY‰KˆAˆxÜ×.Ñ.Ø—I‘I“KØØ—O‘O×)Ñ)óˆIð
 ˜ÑˆIÙØ$‘	à ˆIô “€IÜ(¨Ó-€IˆuÑÜ,¨XÓ6€IˆvÑØŸ/™/×/Ñ/€IˆwÑØ€IˆwÑØ ŸO™O×6Ñ6€IˆzÑØ!Ÿ_™_×7Ñ7€IˆzÑØ €IˆzÑØ!€Iˆ{ÑØ €Iˆ|ÑáÜ×$Ñ$Ü×"Ñ"¤E×$?Ñ$?ÀÓ$LÓMØÜ×#Ñ#Ó%Ü×"Ñ"Ó$Ü×#Ñ#Ó%óˆð �"�1ˆg‰àˆà
‡}�}�qÒØ—M‘M‰	à˜D‘Lˆ	ð €IˆwÑØ€IˆvÑØ!€IˆyÑØ'€Iˆ{ÑØ(€Iˆ|ÑØ€IˆvÑÜ(¨Ó3€IˆvÑØŸ.™.€IˆwÑØ€IˆwÑØ€IˆwÑà‡G�G‡N�N�IÕr)   c                 ó4  — | rx	 t        j                  t         j                  j                  «      }t        j                  «       }t        j                  | ||j
                  d |j                  «       «      }|d d S y# t        $ r t        r
t        «        ‚ w xY w)Nr   r,   )
r�   r‡  r�  r…  Úll_fz_convert_colorr»   rî  re   r÷   rt   )rÈ  rô  rÌ  r¸  r¹  s        r(   Újm_lineart_colorr  …Y  s‹   € áð	ô ×#Ñ#¤U×%7Ñ%7×%AÑ%AÓBˆBÜ×$Ñ$Ó&ˆBÜ×+Ñ+ØØØ—M‘MØØ—K‘K“MóˆCð �2�AˆwˆØøô	 ò 	Ý#¬Ô(8Øð	ús   „A2A< Á<Bc                 óT   — t        | j                  t        «      rg | _        g | _        y r+   )r<   rì  r¡   Úscissors©rw  rÞ  s     r(   Újm_lineart_drop_devicer  ¡Y  s   € Ü�#—'‘'œ4Ô ØˆŒØ€C…Lr)   c	                 óÒ  — |rdnd}	 t        |t        j                  «      sJ ‚t        j                  |«      | _        t
        | _        t        | ||«       | j                  €y d| j                  t        <   || j                  d<   || j                  d<   t        ||«      | j                  d<   t        | j                  «      | j                  t        <   | j                  | j                  d<   | j                  | j                  d<   | j                   r| j"                  | j                  d	<   t%        | «       | xj                  d
z  c_        y # t&        $ r t(        r
t+        «        ‚ w xY w)NTFr¸  rµ  rq  rè   rý  r  r   r   )r<   r�   r  r_  rË  Útrace_device_FILL_PATHÚ	path_typeÚjm_lineart_pathrÍ  rß  r  rT  ÚpathrectÚdictkey_rectrý  rÖ  r¬  r  rÔ  re   r÷   rt   râ  s	            r(   Újm_lineart_fill_pathr"  §Y  s  € ñ  ‰t U€HðÜ˜3¤§¡Ô0Ð0Ð0Ü—.‘. #Ó&ˆŒÜ.ˆŒÜ˜˜c 4Ô(Ø�<‰<ÐØð &)ˆ�‰”lÑ#Ø$,ˆ�‰�jÑ!Ø(-ˆ�‰�nÑ%ô !1°*¸eÓ Dˆ�‰�fÑÜ&5°c·l±lÓ&Cˆ�‰”lÑ#Ø!$§¡ˆ�‰�gÑà!$§¡ˆ�‰�gÑØ�9Š9Ø%(§Y¡YˆC�L‰L˜'Ñ"Ü˜ÔØ�	Š	�Q‰Ž	øäò Ý¤NÔ$4Øðús   ˆAE Á#C'E ÅE&c           
      óh   — 	 t        | |d||||| j                  «       | xj                  dz  c_        y r  )r&   r·   rþ  rý  )rw  rÞ  r   rË  rÈ  rô  rÉ  rÚ  s           r(   Újm_lineart_fill_textr$  ÎY  s.   € Øô �#�t˜Q  Z°¸¸s¿y¹yÔIØ‡I‚I��N†Ir)   c           
      óf   — t        | |d|d d d| j                  «       | xj                  dz  c_        y )Nr   r   ©rþ  rý  )rw  r   rË  s      r(   Újm_lineart_ignore_textr'  ÜY  s)   € ä�#�t˜Q  T¨4°°C·I±IÔ>Ø‡I‚I��N†Ir)   c                   ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚWalkerc                 ó°   •— t         ‰| �  «        | j                  «        | j                  «        | j	                  «        | j                  «        || _        y r+   )r¶   rŠ   Úuse_virtual_movetoÚuse_virtual_linetoÚuse_virtual_curvetoÚuse_virtual_closepathrw  )r'   rw  rÛ  s     €r(   rŠ   zWalker.__init__äY  sE   ø€ Ü‰ÑÔØ×ÑÔ!Ø×ÑÔ!Ø× Ñ Ô"Ø×"Ñ"Ô$Øˆ�r)   c                 óð  — 	 | j                   j                  dk(  rt        | j                   «      ry d| j                   _        | j                   j                  r×| j                   j                  | j                   j
                  k7  r�dt        | j                   j                  «      t        | j                   j
                  «      f}| j                   j                  t           j                  |«       | j                   j
                  | j                   _        d| j                   j                  d<   nd| j                   j                  d<   d| j                   _        y # t        $ r t        r
t        «        ‚ w xY w)Nr   r   r  Frm  T)rw  rõ  rù  ÚhavemoveÚ	lastpointÚ
firstpointr›  rÍ  rÎ  ri   re   r÷   rt   )r'   rÞ  rA   s      r(   Ú	closepathzWalker.closepathìY  s  € ð	Ø�x‰x×!Ñ! QÒ&Ü §¡Ô)àØ!"ˆD�H‰HÔà�x‰x× Ò Ø—8‘8×%Ñ%¨¯©×)<Ñ)<Ò<ØÔ!1°$·(±(×2DÑ2DÓ!EÜ!1°$·(±(×2EÑ2EÓ!FðH�Dà—H‘H×%Ñ%¤mÑ4×;Ñ;¸DÔAØ)-¯©×)<Ñ)<�D—H‘HÔ&Ø16�—‘×!Ñ! +Ò.ð 37�—‘×!Ñ! ;Ñ/ð !"ˆD�H‰HÕøäò 	Ý#¬Ô(8Øð	ús   ‚.E ±D(E ÅE5c                 ó2  — 	 d| j                   _        t        j                  ||«      }t        j                  ||«      }	t        j                  ||«      }
t        j                  || j                   j
                  «      }t        j                  |	| j                   j
                  «      }	t        j                  |
| j                   j
                  «      }
t        j                  | j                   j                  |«      | j                   _        t        j                  | j                   j                  |	«      | j                   _        t        j                  | j                   j                  |
«      | j                   _        dt        | j                   j                  «      t        |«      t        |	«      t        |
«      f}|
| j                   _	        | j                   j                  t           j                  |«       y # t        $ r t        r
t        «        ‚ w xY w)Nr   r©  )rw  rõ  r�   ri  r  rË  Úfz_include_point_in_rectr   r›  r1  rÍ  rÎ  ri   re   r÷   rt   )r'   rÞ  r÷  rù  Úx2Úy2Úx3Úy3r÷  rø  rk  r  s               r(   ÚcurvetozWalker.curvetoZ  s~  € ð	Ø!"ˆD�H‰HÔÜ×$Ñ$ R¨Ó,ˆBÜ×$Ñ$ R¨Ó,ˆBÜ×$Ñ$ R¨Ó,ˆBÜ×)Ñ)¨"¨d¯h©h¯l©lÓ;ˆBÜ×)Ñ)¨"¨d¯h©h¯l©lÓ;ˆBÜ×)Ñ)¨"¨d¯h©h¯l©lÓ;ˆBÜ %× >Ñ >¸t¿x¹x×?PÑ?PÐRTÓ UˆD�H‰HÔÜ %× >Ñ >¸t¿x¹x×?PÑ?PÐRTÓ UˆD�H‰HÔÜ %× >Ñ >¸t¿x¹x×?PÑ?PÐRTÓ UˆD�H‰HÔð Ü$ T§X¡X×%7Ñ%7Ó8Ü$ RÓ(Ü$ RÓ(Ü$ RÓ(ðˆEð "$ˆD�H‰HÔØ�H‰H×Ñœ}Ñ-×4Ñ4°eÕ<øÜò 	Ý#¬Ô(8Øð	ús   ‚G8G; Ç;Hc                 óÜ  — 	 t        j                  t        j                  ||«      | j                  j                  «      }t        j
                  | j                  j                  |«      | j                  _        dt        | j                  j                  «      t        |«      f}|| j                  _        | j                  j                  t           }|j                  |«       | j                  xj                  dz  c_        | j                  j                  dk(  r4| j                  j                  t        k7  rt        | j                  «       y y y # t         $ r t"        r
t%        «        ‚ w xY w)Nr  r   r8  )r�   r  ri  rw  rË  r5  r   r›  r1  rÍ  rÎ  ri   rõ  r  r  rö  re   r÷   rt   )r'   rÞ  r  r  r÷  r  r@   s          r(   ÚlinetozWalker.lineto#Z  s  € ð	Ü×)Ñ)¬5×+>Ñ+>¸qÀ!Ó+DÀdÇhÁhÇlÁlÓSˆBÜ %× >Ñ >ÀÇÁ×@QÑ@QÐSUÓ VˆD�H‰HÔàÜ$ d§h¡h×&8Ñ&8Ó9Ü$ RÓ(ðˆEð
 "$ˆD�H‰HÔØ—H‘H×%Ñ%¤}Ñ5ˆEØ�L‰L˜%Ô Ø�H‰H×Ò !Ñ#ÕØ�x‰x×!Ñ! QÒ&¨4¯8©8×+=Ñ+=ÔAWÒ+Wä˜TŸX™XÕ&ð ,XÐ&øô ò 	Ý#¬Ô(8Øð	ús   ‚EE ÅE+c                 óü  — 	 	 t        j                  t        j                  ||«      | j                  j                  «      | j                  _
        t        j                  | j                  j                  «      rŸt        j                  | j                  j                  j                  | j                  j                  j                  | j                  j                  j                  | j                  j                  j                  «      | j                  _        | j                  j                  | j                  _        d| j                  _        d| j                  _        y # t&        $ r t(        r
t+        «        ‚ w xY wr  )r<   rw  rÍ  r4   r&   r@   r�   r  ri  rË  r1  rœ  r   rý  r  r  r2  r0  rõ  re   r÷   rt   )r'   rÞ  r  r  rC   rD   s         r(   ÚmovetozWalker.moveto8Z  s  € Øð	ä!&×!9Ñ!9Ü×'Ñ'¨¨1Ó-Ø—H‘H—L‘Ló"ˆD�H‰HÔô ×(Ñ(¨$¯(©(×*;Ñ*;Ô<Ü$)×$6Ñ$6ØŸ™×*Ñ*×,Ñ,ØŸ™×*Ñ*×,Ñ,ØŸ™×*Ñ*×,Ñ,ØŸ™×*Ñ*×,Ñ,ó	%�—‘Ô!ð #'§(¡(×"4Ñ"4ˆD�H‰HÔØ !ˆD�H‰HÔØ!"ˆD�H‰HÕøÜò 	Ý#¬Ô(8Øð	ús   ƒEE  Å E;)	r.   r/   r0   rŠ   r3  r:  r<  r>  rã  rN  s   @r(   r)  r)  âY  s   ø„ ôòò8ò6ö*r)   r)  c                 ó  — 	 t        j                  t         j                  j                  «      | _        d| _        t        j
                  dd«      | _        t        «       | _        g | j                  t        <   t        | «      }t        j                  t        j                  t        j                  |«      «      ||j                  «       | j                  t           sd| _        yy# t        $ r t         r
t#        «        ‚ w xY w)a#  
    Create the "items" list of the path dictionary
    * either create or empty the path dictionary
    * reset the end point of the path
    * reset count of consecutive lines
    * invoke fz_walk_path(), which create the single items
    * if no items detected, empty path dict again
    r   N)r�   rU  rV  r   rõ  r  r1  r4   rÍ  rÎ  r)  Úfz_walk_pathÚFzPathÚll_fz_keep_pathr»   re   r÷   rt   )rw  rÞ  r	   Úwalkers       r(   r  r  UZ  s¼   € ðÜ—|‘|¤U§\¡\×%@Ñ%@ÓAˆŒØˆŒÜŸ™ q¨!Ó,ˆŒÜ“vˆŒØ')ˆ�‰”mÑ$ô ˜“ˆô 	×ÑœEŸL™L¬×)>Ñ)>¸tÓ)DÓEÀvÈv×O`ÑO`Ôaà�|‰|œ]Ò+ØˆC�Lð ,øäò Ý¤NÔ$4Øðús   ‚C"C& Ã&Dc	                 ó2  — 	 t        |t        j                  «      sJ ‚d| _        |j                  dk7  rFt        |j                  «      t        |j                  «      k(  rt        |j                  «      | _        nT|j                  dk7  rEt        |j                  «      t        |j                  «      k(  rt        |j                  «      | _        t        j                  |«      | _
        t        | _        t        | ||«       | j                  €y d| j                  t        <   || j                  d<   t!        ||«      | j                  d<   | j                  |j"                  z  | j                  t$        <   |j&                  |j(                  |j*                  f| j                  d<   | j                  |j,                  z  | j                  d<   d| j                  vrd	| j                  d<   |j.                  rÝt        j0                  d
«      }	t        j2                  |	d«       t5        |j.                  «      D ]Q  }
t        j6                  |j8                  |
«      }t        j2                  |	t;        | j                  |z  «      › d�«       ŒS t        j2                  |	dt;        | j                  |j<                  z  «      › �«       |	| j                  d<   nd| j                  d<   t?        | j@                  «      | j                  tB        <   | jD                  | j                  d<   | jF                  | j                  d<   | jH                  r| jJ                  | j                  d<   tM        | «       | xjF                  dz  c_#        y # tN        $ r tP        r
tS        «        ‚ w xY w)Nr   r   r_  rp  rô  rn  ro  rm  Fr  z[ r    z] rL  rü  r  rý  r   )*r<   r�   r  Ú
pathfactorr    rÙ  rõ  r{
  r©  r_  rË  Útrace_device_STROKE_PATHr  r  rÍ  rß  r  r  r°  Ú	start_capÚdash_capÚend_capÚlinejoinÚdash_lenr¨  r�  r8  Úfloats_getitemÚ	dash_listr£   Ú
dash_phaserT  r   r!  rÖ  rý  r¬  r  rÔ  re   r÷   rt   )rw  rÞ  r	   rU  rË  rÈ  rô  rÉ  rÚ  r=  rL  r¥   s               r(   Újm_lineart_stroke_pathrO  yZ  s«  € ð2Ü˜3¤§¡Ô0Ð0Ð0ØˆŒØ�5‰5�AŠ:œ#˜cŸe™e›*¬¨C¯E©E«
Ò2Ü  §¡›ZˆC�NØ�U‰U�aŠZœC §¡›J¬#¨c¯e©e«*Ò4Ü  §¡›ZˆCŒNÜ—.‘. #Ó&ˆŒÜ0ˆŒä˜˜c 4Ô(Ø�<‰<ÐØØ&)ˆ�‰”lÑ#Ø*/ˆ�‰Ð&Ñ'Ü!1°:¸uÓ!Eˆ�‰�gÑØ'*§~¡~¸×8HÑ8HÑ'Hˆ�‰”mÑ$à× Ñ Ø—‘Ø—‘ð$ˆ�‰�iÑ ð
 %(§N¡N°V·_±_Ñ$Dˆ�‰�jÑ!Ø˜cŸl™lÑ*à(-ˆC�L‰L˜Ñ%ð �?Š?Ü×&Ñ&¨Ó,ˆDÜ×"Ñ" D¨$Ô/Ü˜FŸO™OÖ,�ô ×,Ñ,¨f×.>Ñ.>ÀÓB�Ü×&Ñ&¨´¸3¿>¹>ÈEÑ;QÓ1RÐ0SÐSTÐ.UÕVð	 -ô
 ×"Ñ" D¨B¬y¸¿¹È&×J[ÑJ[Ñ9[Ó/\Ð.]Ð*^Ô_Ø&*ˆC�L‰L˜(Ò#à&,ˆC�L‰L˜(Ñ#Ü&5°c·l±lÓ&Cˆ�‰”lÑ#Ø #§¡ˆ�‰�WÑØ!$§¡ˆ�‰�gÑØ�9Š9Ø%(§Y¡YˆC�L‰L˜'Ñ"Ü˜ÔØ�	Š	�Q‰Ž	øäò Ý¤NÔ$4Øðús   ‚D
M; ÄI-M; Í;Nc                 ó  — | j                   sy t        j                  |«      | _        t        | _        t        | ||«       | j                  €y d| j                  t        <   t        |«      | j                  d<   d| j                  vrd| j                  d<   t        t        | «      «      | j                  d<   | j                  | j                  d<   | j                  | j                  d<   t        | «       | xj                  dz  c_        y )	Nrï  rµ  rm  Fr¶  r   r  r   )r¬  r�   r_  rË  Útrace_device_CLIP_PATHr  r  rÍ  rß  r%  rT  Úcompute_scissorr  rÖ  rÔ  )rw  rÞ  r	   rµ  rË  r¶  s         r(   Újm_lineart_clip_pathrS  °Z  sÇ   € Ø�9Š9ØÜ�n‰n˜SÓ!€C„GÜ*€C„MÜ�C˜˜dÔ#Ø
‡|�|ÐØØ"(€C‡L�L”,ÑÜ $ X£€C‡L�L�*ÑØ˜#Ÿ,™,Ñ&à$)ˆ�‰�[Ñ!ä-¬o¸cÓ.BÓC€C‡L�L�ÑØŸI™I€C‡L�L�ÑØŸN™N€C‡L�L�ÑÜ�CÔØ‡I‚I��N†Ir)   c                 óø  — | j                   sy t        j                  |«      | _        t        | _        t        | ||«       | j                  €y d| j                  d<   d | j                  d<   d| j                  vrd| j                  d<   t        t        | «      «      | j                  d<   | j                  | j                  d<   | j                  | j                  d<   t        | «       | xj                  d	z  c_
        y )
Nrï  rß  rµ  rm  Fr¶  r   r  r   )r¬  r�   r_  rË  Útrace_device_CLIP_STROKE_PATHr  r  rÍ  rT  rR  r  rÖ  rÔ  )rw  rÞ  r	   rU  rË  r¶  s         r(   Újm_lineart_clip_stroke_pathrV  ÅZ  sÃ   € Ø�9Š9ØÜ�n‰n˜SÓ!€C„GÜ1€C„MÜ�C˜˜dÔ#Ø
‡|�|ÐØØ#)€C‡L�L�Ñ Ø#€C‡L�L�ÑØ˜#Ÿ,™,Ñ&à$)ˆ�‰�[Ñ!Ü-¬o¸cÓ.BÓC€C‡L�L�ÑØŸI™I€C‡L�L�ÑØŸN™N€C‡L�L�ÑÜ�CÔØ‡I‚I��N†Ir)   c                 ó^   — | j                   sy t        | «       | xj                  dz  c_        y r@  ©r¬  rR  r  )rw  rÞ  r   rU  rË  r¶  s         r(   Újm_lineart_clip_stroke_textrY  ÙZ  ó!   € Ø�9Š9ØÜ�CÔØ‡I‚I��N†Ir)   c                 ó^   — | j                   sy t        | «       | xj                  dz  c_        y r@  rX  )rw  rÞ  r   rË  r¶  s        r(   Újm_lineart_clip_textr\  àZ  rZ  r)   c                 ó^   — | j                   sy t        | «       | xj                  dz  c_        y r@  rX  )rw  rÞ  r¥  rË  r¶  s        r(   Újm_lineart_clip_image_maskr^  çZ  rZ  r)   c                 ó°   — | j                   r| j                  sy t        | j                  «      }|dk  ry | j                  d= | xj                  dz  c_        y )Nr   r…  )r¬  r  r6   r  )rw  rÞ  ræ  s      r(   Újm_lineart_pop_clipr`  îZ  sC   € Ø�9Š9˜CŸLšLØÜˆs�|‰|Ó€DØˆa‚xØØ�‰�RÐØ‡I‚I��N†Ir)   c                 ó&   — |r|| _         y d| _         y ©NrZ   ©rÖ  )rw  rÞ  r   s      r(   Újm_lineart_begin_layerrd  øZ  s   € ÙØˆ�àˆ�r)   c                 ó   — d| _         y rb  rc  r  s     r(   Újm_lineart_end_layerrf  ÿZ  s	   € Ø€C…Nr)   c           	      ó  — | j                   sy dt        |«      t        |«      t        |«      t        j                  |«      || j
                  | j                  dœ| _        t        | «       | xj
                  dz  c_        y )Nra  )r·   rä   ÚisolatedÚknockoutrp  rB  r   r  r   )	r¬  rT  r%  r�   Úfz_blendmode_namer  rÖ  rÍ  rÔ  )rw  rÞ  r  rÌ  rh  ri  rp  rÉ  s           r(   Újm_lineart_begin_grouprk  [  sd   € à�9Š9ØàÜ# DÓ)Ü˜X›Ü˜X›Ü×0Ñ0°Ó;ØØ—Y‘YØ—^‘^ñ	€C„Lô �CÔØ‡I‚I��N†Ir)   c                 óH   — | j                   sy | xj                  dz  c_        y r@  )r¬  r  r  s     r(   Újm_lineart_end_grouprm  [  s   € à�9Š9ØØ‡I‚I��N†Ir)   c	           
      óf   — t        | |d||||| j                  «       | xj                  dz  c_        y r@  r&  )	rw  rÞ  r   rU  rË  rÈ  rô  rÉ  rÚ  s	            r(   Újm_lineart_stroke_textro  [  s)   € Ü�#�t˜Q  Z°¸¸s¿y¹yÔIØ‡I‚I��N†Ir)   c	                 ó>   — |j                   | _         t        | |«       y r+   )r  Újm_increase_seqno)	rw  rÞ  r	   rU  rÆ  rÈ  rô  rÉ  rÚ  s	            r(   Újm_dev_linewidthrr  ![  s   € Ø×$Ñ$€C„MÜ�s˜CÕ r)   c                 ól   — 	 | xj                   dz  c_         y # t        $ r t        r
t        «        ‚ w xY wr@  )rý  re   r÷   rt   )rw  rÞ  Úvargss      r(   rq  rq  &[  s.   € ðØ�	Š	�Q‰Ž	øÜò Ý¤NÔ$4Øðús   ‚ ˜3r÷  rø  c                 óX   — t        | «      } t        |«      }t        t        | |«      «      S )am  Compute matrix which maps line from p1 to p2 to the x-axis, such that it
    maintains its length and p1 * matrix = Point(0, 0).

    Args:
        p1, p2: point_like
    Returns:
        Matrix which maps p1 to Point(0, 0) and p2 to a point on the x axis at
        the same distance to Point(0,0). Will always combine a rotation and a
        transformation.
    )rÖ  rb  r  )r÷  rø  s     r(   r	  r	  .[  s(   € ô 
ˆr‹€BÜ	ˆr‹€BÜ”/ " bÓ)Ó*Ð*r)   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚJM_image_reporter_Filterc                 óB   •— t         ‰| �  «        | j                  «        y r+   rH  rJ  s    €r(   rŠ   z!JM_image_reporter_Filter.__init__?[  s   ø€ Ü‰ÑÔØ×%Ñ%Õ'r)   c                 óŒ   — t        |t        j                  «      sJ ‚t        | t        j                  |«      ||«       t
        ryy r…   )r<   r�   r  r8  r_  rŽ   )r'   rÞ  rË  r   r¥  s        r(   rL  z%JM_image_reporter_Filter.image_filterC[  s:   € Ü˜#œuŸ™Ô/Ð/Ð/Ü˜œeŸn™n¨SÓ1°4¸Ô?Ýð ð r)   rM  rN  s   @r(   rw  rw  >[  s   ø„ ô(ör)   rw  c                   óF   ‡ — e Zd Zˆ fd„ZeZeZeZ	e
ZeZeZeZeZeZeZˆ xZS )rä  c                 óŒ  •— t         ‰| �  «        || _        || _        d| _        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        y rb  )r¶   rŠ   r  r¡  rÖ  Úuse_virtual_fill_pathÚuse_virtual_stroke_pathÚuse_virtual_fill_textÚuse_virtual_stroke_textÚuse_virtual_ignore_textÚuse_virtual_fill_shadeÚuse_virtual_fill_imageÚuse_virtual_fill_image_maskÚuse_virtual_begin_layerÚuse_virtual_end_layer)r'   r  r¡  rÛ  s      €r(   rŠ   z"JM_new_bbox_device_Device.__init__M[  s›   ø€ Ü‰ÑÔØˆŒØˆŒØˆŒØ×"Ñ"Ô$Ø×$Ñ$Ô&Ø×"Ñ"Ô$Ø×$Ñ$Ô&Ø×$Ñ$Ô&Ø×#Ñ#Ô%Ø×#Ñ#Ô%Ø×(Ñ(Ô*à×$Ñ$Ô&Ø×"Ñ"Õ$r)   )r.   r/   r0   rŠ   rd  Úbegin_layerrf  Ú	end_layerrã  Ú	fill_pathró  Ústroke_pathrï  Ú	fill_textrë  Ústroke_textrñ  Úignore_textrç  Ú
fill_shaderÛ  Ú
fill_imagerÞ  Úfill_image_maskrã  rN  s   @r(   rä  rä  L[  s<   ø„ ô%ð" )€KØ$€Ià!€IØ%€KØ!€IØ%€KØ%€KØ#€JØ#€JØ-„Or)   rä  c                   ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )rì  c                 ó°   •— t         ‰| �  «        || _        | j                  «        | j	                  «        | j                  «        | j                  «        y r+   )r¶   rŠ   ró	  Úuse_virtual_writeÚuse_virtual_seekÚuse_virtual_tellÚuse_virtual_truncate)r'   ró	  rÛ  s     €r(   rŠ   z%JM_new_output_fileptr_Output.__init__l[  sE   ø€ Ü‰ÑÔØˆŒØ×ÑÔ Ø×ÑÔØ×ÑÔØ×!Ñ!Õ#r)   c                 ó:   — | j                   j                  ||«      S r+   )ró	  rÅ  )r'   rÞ  r:  Úwhences       r(   rÅ  z!JM_new_output_fileptr_Output.seekt[  s   € Ø�x‰x�}‰}˜f fÓ-Ð-r)   c                 ó:   — | j                   j                  «       }|S r+   )ró	  Útell)r'   rÞ  rE   s      r(   r™  z!JM_new_output_fileptr_Output.tellw[  s   € Ø�h‰h�m‰m‹oˆØˆ
r)   c                 ó6   — | j                   j                  «       S r+   )ró	  Útruncate)r'   rÞ  s     r(   r›  z%JM_new_output_fileptr_Output.truncate{[  s   € Ø�x‰x× Ñ Ó"Ð"r)   c                 ód   — t        j                  ||«      }| j                  j                  |«      S r+   )r�   Úraw_to_python_bytesró	  r   )r'   rÞ  Údata_rawÚdata_lengthrm  s        r(   r   z"JM_new_output_fileptr_Output.write~[  s'   € Ü×(Ñ(¨°;Ó?ˆØ�x‰x�~‰~˜dÓ#Ð#r)   )	r.   r/   r0   rŠ   rÅ  r™  r›  r   rã  rN  s   @r(   rì  rì  k[  s   ø„ ô$ò.òò#ö$r)   rì  c                 óL  — | j                   €t        «       | _         t        | j                   «      }|dkD  r>| j                   |dz
     }t        |«      }t	        j
                  || j                  «      }n| j                  }| j                   j                  t        |«      «       |S )zs
    Every scissor of a clip is a sub rectangle of the preceding clip scissor
    if the clip level is larger.
    r   r   )	r  r¡   r6   rí  r�   rÒ  r   ri   rT  )rw  Únum_scissorsÚlast_scissorr¶  s       r(   rR  rR  ƒ[  s„   € ð
 ‡|�|ÐÜ“vˆŒÜ�s—|‘|Ó$€LØ�aÒØ—|‘| L°¡NÑ3ˆÜ! ,Ó/ˆÜ×)Ñ)¨'°3·<±<Ó@‰à—,‘,ˆØ‡L�L×Ñœ¨Ó0Ô1Ø€Nr)   c                   ój   ‡ — e Zd ZdZˆ fd„ZeZeZe	Z
eZeZeZeZeZeZeZeZeZeZeZeZeZe Z!e"Z#ˆ xZ$S )r§  z?
    LINEART device for Python method Page.get_cdrawings()
    c                 ó,  •— t         ‰| �  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                   | j                   | j                   | j                  «        | j                  «        | j                  «        | j                  «        | j!                  «        | j#                  «        | j%                  «        | j'                  «        || _        d| _        d| _        || _        || _        d | _        d| _        d | _        d| _        t;        j<                  «       | _        t;        j<                  «       | _         t;        j<                  «       | _!        t;        jD                  «       | _#        t;        jD                  «       | _$        d| _%        t;        jL                  «       | _        d| _'        d| _(        d| _)        y ©Nr   rZ   )*r¶   rŠ   r|  r}  Úuse_virtual_clip_pathÚuse_virtual_clip_image_maskÚuse_virtual_clip_stroke_pathÚuse_virtual_clip_stroke_textÚuse_virtual_clip_textr~  r  r€  r�  r‚  rƒ  Úuse_virtual_pop_clipÚuse_virtual_begin_groupÚuse_virtual_end_groupr„  r…  rì  rý  r  r¬  r«  r  rÖ  r   r  r�   r_  r¨  rË  r@  r  r1  r2  r0  rU  rE  rõ  r  )r'   rì  r¬  r«  rÛ  s       €r(   rŠ   z%JM_new_lineart_device_Device.__init__š[  s‹  ø€ ä‰ÑÔð 	×"Ñ"Ô$Ø×$Ñ$Ô&Ø×"Ñ"Ô$Ø×(Ñ(Ô*Ø×)Ñ)Ô+Ø×)Ñ)Ô+Ø×"Ñ"Ô$à×"Ò"Ø×$Ò$Ø×$Ò$à×#Ñ#Ô%Ø×#Ñ#Ô%Ø×(Ñ(Ô*à×!Ñ!Ô#à×$Ñ$Ô&Ø×"Ñ"Ô$à×$Ñ$Ô&Ø×"Ñ"Ô$àˆŒØˆŒ
ØˆŒ
ØˆŒ
ØˆŒàˆŒØˆŒØˆŒàˆŒÜ—>‘>Ó#ˆŒÜ—>‘>Ó#ˆŒÜ—>‘>Ó#ˆŒÜŸ™›ˆŒÜŸ-™-›/ˆŒØˆŒÜŸ™›ˆŒØˆŒØˆŒØˆ�r)   )%r.   r/   r0   rN  rŠ   r"  rˆ  rO  r‰  r^  Úclip_image_maskrS  Ú	clip_pathrV  Úclip_stroke_pathr\  Ú	clip_textrY  Úclip_stroke_textrq  rŠ  r‹  rŒ  r�  rŽ  r�  r`  Úpop_cliprk  Úbegin_grouprm  Ú	end_grouprd  r†  rf  r‡  rã  rN  s   @r(   r§  r§  •[  sl   ø„ ñô1ðj /€IØ0€KØ4€OØ.€IØ5ÐØ.€IØ5Ðà+€IØ+€KØ+€Kà+€JØ+€JØ+€Oà-€Hà0€KØ.€Ià0€KØ.„Ir)   r§  c                   óJ   ‡ — e Zd ZdZˆ fd„ZeZeZe	Z
eZeZeZeZeZeZeZˆ xZS )r.  zB
    Trace TEXT device for Python method Page.get_texttrace()
    c                 ó2  •— t         ‰| �  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        | j                  «        || _        d| _        d| _        d| _        d | _        d| _        t#        «       | _        t'        «       | _        d| _        t-        j.                  «       | _        t-        j.                  «       | _        t-        j.                  «       | _        t-        j6                  «       | _        t-        j:                  «       | _        d| _        d| _         d| _!        d| _"        y r¥  )#r¶   rŠ   r|  r}  r~  r  r€  r�  r‚  rƒ  r„  r…  rì  rý  r  r¬  r«  r4   rÍ  r¡   r  r  r�   r_  r¨  rË  r@  r  r1  rU  r   rE  rõ  r  rÖ  )r'   rì  rÛ  s     €r(   rŠ   z JM_new_texttrace_device.__init__í[  s)  ø€ Ü‰ÑÔØ×"Ñ"Ô$Ø×$Ñ$Ô&Ø×"Ñ"Ô$Ø×$Ñ$Ô&Ø×$Ñ$Ô&Ø×#Ñ#Ô%Ø×#Ñ#Ô%Ø×(Ñ(Ô*à×$Ñ$Ô&Ø×"Ñ"Ô$àˆŒàˆŒ
ØˆŒ
ØˆŒ
ØˆŒàˆŒ
ä›ˆŒÜ›ˆŒØˆŒÜ—>‘>Ó#ˆŒÜ—>‘>Ó#ˆŒÜ—>‘>Ó#ˆŒÜŸ™›ˆŒÜŸ™›ˆŒØˆŒØˆŒØˆŒØˆ�r)   )r.   r/   r0   rN  rŠ   rq  rˆ  rr  r‰  r$  rŠ  ro  r‹  r'  rŒ  r�  rŽ  r�  rd  r†  rf  r‡  rã  rN  s   @r(   r.  r.  è[  sB   ø„ ñô"ðH "€IØ"€KØ$€IØ(€KØ(€KØ"€JØ"€JØ'€Oà(€KØ$„Ir)   r.  rL  c                 óô   — | j                  «       }dd l}|j                  d«      }|j                  d|z  «      }|j                  d«      }d}d|z  }|dk(  r|}	|	S |dk(  r|}	|	S |d	k(  r|}	|	S |d
k(  r|}	|	S |}	|	S )Nr   a^  
            <!DOCTYPE html>
            <html>
            <head>
            <style>
            body{background-color:gray}
            div{position:relative;background-color:white;margin:1em auto}
            p{position:absolute;margin:0}
            img{position:absolute}
            </style>
            </head>
            <body>
            zP
            <?xml version="1.0"?>
            <document name="%s">
            aÏ  
            <?xml version="1.0"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <style>
            body{background-color:gray}
            div{background-color:white;margin:1em;padding:1em}
            p{white-space:pre-wrap}
            </style>
            </head>
            <body>
            rZ   z{"document": "%s", "pages": [
rB  rX  rŒ  Úxhtml)r¿  ÚtextwrapÚdedent)
rL  rd   r5  rº  rB  rŒ  r¹  r   rX  r  s
             r(   ÚConversionHeaderr¼  \  sÆ   € Ø	�‰‹	€AÛØ�?‰?ð ó €Dð �/‰/ð ð ñ	ó €Cð �O‰Oð ó €Eð €DØ,¨xÑ7€DØˆF‚{Øˆð €Hð 
ˆfŠØˆð €Hð 
ˆeŠØˆð €Hð 
ˆgŠØˆð €Hð ˆà€Hr)   c                 ó†   — | j                  «       }d}d}d}d}|}|dk(  r|}|S |dk(  r|}|S |dk(  r|}|S |dk(  r|}|S |}|S )	NrZ   z]
}z</body>
</html>
z</document>
rB  rX  rŒ  r¹  )r¿  )rL  r5  r   rX  rB  rŒ  r¹  r  s           r(   ÚConversionTrailerr¾  T\  s„   € Ø	�‰‹	€AØ€DØ€DØ€DØ
€CØ€EØˆF‚{Øˆð €Hð 
ˆfŠØˆð €Hð 
ˆeŠØˆð €Hð 
ˆgŠØˆð €Hð ˆà€Hr)   c                 ó¢   — t        | «       | j                  j                  st        d«      ‚| j                  }|dk7  r| j                  d«       |S )z�Prepare for annotation insertion on the page.

    Returns:
        Old page rotation value. Temporarily sets rotation to 0 when required.
    rÊ  r   )rS  rÖ   rÌ  r²   r=  r£  )rÅ   rá  s     r(   rß  rß  i\  sI   € ô �ÔØ�;‰;×ÒÜ˜Ó%Ð%Ø—=‘=€LØ�qÒØ×Ñ˜!ÔØÐr)   c                 ó˜   — t        | t        «      sJ ‚t        |t        «      sJ ‚| |_        || j                  t        |«      <   d|_        y)zuClean up after annotation insertion.

    Set ownership flag and store annotation in page annotation dictionary.
    TN)r<   rÁ   rÑ   rÖ   r%  r&  rÞ   )rÅ   rÎ   s     r(   rà  rà  x\  sF   € ô �tœTÔ"Ð"Ð"Ü�uœeÔ$Ð$Ð$Ø€E„LØ"'€D×Ñ”R˜“YÑØ€E…Mr)   c                 ó4  — t        | t        «      sJ ‚| dk(  s
| dk(  s| dk(  rt        d«      S | t        d«      k(  s| t        d«      k(  s| t        d«      k(  rt        d«      S | t        d«      k\  r(| t        d	«      k  r| t        d«      z
  t        d
«      z   S | S )Nr-  i(   i)   r    Úr$   Ú	rð  ÚZr    )r<   r3   rn
  rƒ  s    r(   ÚcanonrÅ  …\  s‰   € Ü�aœÔÐÐð 	ˆD‚y�A˜’K 1¨¢;Ü�3‹xˆØŒC�‹I‚~˜œc $›iš¨1´°D³	ª>Ü�3‹xˆØŒC�‹H‚}˜œc #›hšØ”3�s“8‰|œc #›hÑ&Ð&Ø€Hr)   c                 ót   — t        | t        «      sJ ‚t        j                  | «      \  }}t	        |«      }||fS r+   )r<   rÙ   r�   rg  rÅ  )r_  rC   r©  s      r(   ÚchartocanonrÇ  ’\  s8   € Ü�aœÔÐÐÜ×Ñ˜qÓ!�D€A€qÜˆa‹€AØˆaˆ4€Kr)   c                 óî  — t        j                  | t        d«      «      }t        j                  t        j                  |t        d«      «      t        d«      «      r*t	        t        j                  |t        d«      «      |«      syt        j                  | t        d«      «      }|j
                  s	 yt        j                  |«      rt	        ||«      S t        t        j                  |d«      ||«      syy)Nrð  rÿ  r³  rñ  r   rï  r   )	r�   ró   rô   rÛ  Ústring_in_names_listr»   r
  Údest_is_valid_pagerŠ  )r�  rÂ  Úpage_object_numsÚ
names_listr�  s        r(   Údest_is_validrÍ  ™\  sÑ   € Ü×Ñ˜Aœx¨›}Ó-€Aä×ÑÜ×"Ñ" A¤x°£}Ó5Ü˜Ó ôô )Ü×"Ñ" A¤x°£}Ó5Øôð
 ä×Ñ˜Aœx¨Ó/Ó0€AØ�<Š<Øð ô 
×	Ñ	˜aÔ	 Ü# Q¨
Ó3Ð3ÜÜ×Ñ  AÓ&ØØôð
 Ør)   c                 ón   — t        j                  | «      }|dk(  ryt        |«      D ]  }||   |k(  sŒ y yr  )r�   rî   r8  )rü   rË  rµ  ÚnumrL  s        r(   rÊ  rÊ  µ\  s@   € Ü
×
Ñ
˜3Ó
€Cà
ˆa‚xØÜ�9ÖˆØ˜AÑ #Ó%Ùð ð r)   c                 ó’   — t        | t        «      sJ ‚t        t        | «      «      D ]  }t	        | |d  |«      }|€Œ||z  }||fc S  y)NrŒ	  )r<   rÙ   r8  r6   Úmatch_string)r_  rü  rL  rƒ  s       r(   r#  r#  À\  sR   € Ü�aœÔÐÐÜ”3�q“6Ž]ˆÜ˜1˜Q˜R˜5 &Ó)ˆØ‰?Ø�1‰HˆCØ�c�6ŠMð	 ð
 r)   c                  óŠ  — ddl } t        t        | j                  dz  «      «      j	                  dd«      ›dt        t        | j                  dz  «      dz  «      j	                  dd«      ›d�} | j
                  d | j                  «       «      }| j                  dkD  r
|d	|z   z  }|S | j                  dk  r
|d
|z   z  }|S 	 |S )z'
    "Now" timestamp in PDF Format
    r   Ni  r   rx   r×   rß  zD:%Y%m%d%H%M%Sró  r—	  )ÚtimerÙ   rÙ  ÚaltzoneÚrjustÚstrftimeÚ	localtime)rÓ  ÚtzÚtstamps      r(   rÄ  rÄ  Ê\  sÅ   € ó äŒC�—‘ Ñ$Ó%Ó&×,Ñ,¨Q°Õ4ÜŒS�—‘ Ñ#Ó$ rÑ)Ó+×1Ñ1°!°SÕ9ð
€Bð ˆT�]‰]Ð+¨^¨T¯^©^Ó-=Ó>€FØ‡|�|�aÒØ�#˜‘(Ñˆð
 €Mð	 
�‰˜Ò	Ø�#˜‘(Ñˆð €Mð 	Ø€Mr)   c                   ó   — e Zd ZdZd„ Zy)ÚElementPositionzDConvert a dictionary with element position information to an object.c                  ó   — y r+   r,   r-   s    r(   rŠ   zElementPosition.__init__à\  r~  r)   Nri  r,   r)   r(   rÛ  rÛ  Ý\  s
   „ ÙNór)   rÛ  c                  ó   — t        «       S r+   )rÛ  r,   r)   r(   Úmake_story_elposrÞ  ä\  s   € ÜÓÐr)   r‚  rÐ  rï  c                 óÀ  — |€| j                   }t        |«      }|€|j                  }|€|j                  }|j                  |_        |j                  |_        |j                  s|j                  rg S | j                  dd|¬«      d   }g }|D ]k  }t        |d   «      }|j                  s|j                  rŒ*|d   D ]:  }t        |d   «      }|j                  s|j                  rŒ*|j                  |«       Œ< Œm |g k(  r|S |j                  d„ ¬«       |j                  d«      }	|	j
                  |j                  z
  d	|	j                  z  k  rVt        |j                  |	j
                  |	j                  «      }
|
j                  s1|
j                  s%|j                  d|
«       n|j                  d|	«       |g k(  r|S |j                  «       }|j                  |j                  z
  d	|j                  z  k  rVt        |j                  |j                  |j                  «      }
|
j                  s|
j                  s|j                  |
«       |S |j                  |«       |S )
aÃ  Return rectangles of text lines between two points.

    Notes:
        The default of 'start' is top-left of 'clip'. The default of 'stop'
        is bottom-reight of 'clip'.

    Args:
        start: start point_like
        stop: end point_like, must be 'below' start
        clip: consider this rect_like only, default is page rectangle
    Returns:
        List of line bbox intersections with the area established by the
        parameters.
    r4   r   )r¬  rï  rž  r  rä  c                 ó   — | j                   S r+   )rù  )r  s    r(   rL	  z)get_highlight_selection.<locals>.<lambda>]  s   €  §¢r)   rn	  r!  )rä   r  r×  rØ  r  rú  rù  r�  rœ  râ  ri   r¹  r»  rÅ  r  Úinsert)rÅ   r‚  rÐ  rï  rž  rä  r{
  r  rm   Úbboxfr  Úbboxls               r(   rï  rï  è\  sÿ  € ð  €|Ø�y‰yˆÜ�‹:€DØ€}Ø—‘ˆØ€|Ø�w‰wˆØ�g‰g€D„GØ�f‰f€D„GØ‡}‚}˜×(Ò(Øˆ	ð �]‰]Ø�a˜dð ó àñ€Fð €EÛˆÜ�A�f‘I‹ˆØ×Ò˜tŸ}š}ØØ�g”JˆDÜ˜˜V™Ó%ˆDØ×Ò 4§=¢=ØØ�L‰L˜Õñ	 ð	 ð �‚{Øˆà	‡J�JÑ'€JÔ(ð �I‰I�a‹L€EØ‡x�x�%—'‘'Ñ˜S 5§<¡<Ñ/Ò/Ü�—‘˜%Ÿ(™( E§H¡HÓ-ˆØ—
’
˜aŸmšmØ�L‰L˜˜AÕà�‰�Q˜Ôà�‚{Øˆð �I‰I‹K€EØ‡v�v�—‘Ñ˜C %§,¡,Ñ.Ò.Ü�—‘˜4Ÿ6™6 5§8¡8Ó,ˆØ—
’
˜aŸmšmØ�L‰L˜ŒOð €Lð 	�‰�UÔà€Lr)   c                 óh   — ddl }	 t        |j                  | «      «      }|S # t        $ r d}Y |S w xY w)z+Convenience function accessing unicodedata.r   Nr£	  )Úunicodedatarn
  Úlookupre   )r   rå  r·	  s      r(   r•
  r•
  1]  sA   € ãðÜ�+×$Ñ$ TÓ*Ó+ˆð €Jøô ò Ø‰Ø€Jðúó   †" ¢1°1c                 óÊ   — |j                   |j                   z
  }|j                  |j                  z
  }t        j                  || j                   z  || j                  z  z   «      S r+   ©r  r  r�   Úfz_abs©rX  r    r{
  ÚdxÚdys        r(   Úhdistrî  ;]  óH   € Ø	
�‰ˆq�s‰s‰€BØ	
�‰ˆq�s‰s‰€BÜ�<‰<˜˜SŸU™U™
 R¨#¯%©%¡ZÑ/Ó0Ð0r)   rE  Úrowsc                 ó  — t        | «      } | j                  s| j                  rt        d«      ‚| j                  }| j
                  |z  }| j                  |z  }|d|df}d|d|f}t        ||j                  |z   |j                  |z   «      }|g}	t        d|«      D ]  }
||z  }|	j                  |«       Œ |	g}t        d|«      D ]8  }
||
dz
     }	g }|	D ]  }|j                  ||z   «       Œ |j                  |«       Œ: |S )a†  Return a list of (rows x cols) equal sized rectangles.

    Notes:
        A utility to fill a given area with table cells of equal size.
    Args:
        rect: rect_like to use as the table area
        rows: number of rows
        cols: number of columns
    Returns:
        A list with <rows> items, where each item is a list of <cols>
        PyMuPDF Rect objects of equal sizes.
    r\  r   r   )r  r�  rœ  r²   r×  rÅ  rJ  r  r  r8  ri   )rä   rE  rð  r×  rÅ  rJ  Údelta_hÚdelta_vr  ÚrowrL  ÚrectsÚnrows                r(   Ú
make_tabler÷  A]  s  € ô �‹:€DØ‡}‚}˜×(Ò(ÜÐ<Ó=Ð=Ø	�‰€Bà�[‰[˜4Ñ€FØ�J‰J˜Ñ€EØ�a˜ Ð"€GØ�&˜!˜VÐ$€GäˆR�—‘˜‘˜rŸt™t f™}Ó-€Að ˆ#€CÜ�1�dŽ^ˆØ	ˆW‰ˆØ�
‰
�1�ð ð
 ˆE€EÜ�1�dŽ^ˆØ�A˜‘E‰lˆØˆÛˆAØ�K‰K˜˜G™Õ$ð à�‰�TÕð ð €Lr)   c                 óÊ  — t        j                  | j                  «      }t        j                  |«      }t        j                  d«      }t        j
                  t        j                  |«      t        d«      t        d«      «      }t        j                  ||«      }t        j                  |«      st        j                  ||d«      }t        j                  |«      }d}t        j                  |«      }t        |«      D ]4  }	t        j                  t        j                  ||	«      «      }
||
k(  sŒ2d} n |s,t        j                  |t        j                   ||d«      «       yy)zL
    Ensure that widgets with /AA/C JavaScript are in array AcroForm/CO
    rÙ  r  r  r   r   r   N)r�   rì   r³   r{  r!  r  r   rô   ró   rv  r„  r‰  rî   r8  rŠ  rx  rv  )rÎ   r  rF  Ú
PDFNAME_COr²  rÙ  rC   rŽ  rý   rL  r¬  s              r(   r¼  r¼  l]  s$  € ô ×#Ñ# E§J¡JÓ/€IÜ
×
&Ñ
& yÓ
1€CÜ×#Ñ# DÓ)€JÜ×ÑÜ×Ñ˜cÓ"Ü�VÓÜ�ZÓ ó€Dô 
×	Ñ	˜D *Ó	-€BÜ×Ñ˜bÔ!Ü×%Ñ% d¨J¸Ó:ˆÜ×Ñ˜BÓ€AØ€EÜ×Ñ˜IÓ&€DÜ�1ŽXˆÜ× Ñ ¤×!4Ñ!4°R¸Ó!;Ó<ˆØ�5‹=ØˆEÙð	 ñ
 Ü×Ñ˜R¤×!7Ñ!7¸¸TÀ1Ó!EÕFð r)   r+  c                 óš   ‡‡‡— d„ Šd„ Šˆˆˆfd„} |«       \  }}	}
}| � ‰| «      \  }}	|� ‰|«      \  }
}|�|}|�|}	|�|}
|�|}||	|
|fS )aß  
    Helper for initialising rectangle classes.
    
    2022-09-02: This is quite different from PyMuPDF's util_make_rect(), which
    uses `goto` in ways that don't easily translate to Python.

    Returns (x0, y0, x1, y1) derived from <args>, then override with p0, p1,
    x0, y0, x1, y1 if they are not None.

    Accepts following forms for <args>:
        () returns all zeros.
        (top-left, bottom-right)
        (top-left, x1, y1)
        (x0, y0, bottom-right)
        (x0, y0, x1, y1)
        (rect)

    Where top-left and bottom-right are (x, y) or something with .x, .y
    members; rect is something with .x0, .y0, .x1, and .y1 members.

    2023-11-18: we now override with p0, p1, x0, y0, x1, y1 if not None.
    c                 óî   — t        | t        t        f«      rt        | «      dk(  r
| d   | d   fS t        | t        t
        j                  t
        j                  f«      r| j                  | j                  fS y)Nr   r   r   rŒ	  )
r<   r¡   r¢   r6   rÖ  r�   r  rÀ  r  r  )rþ  s    r(   Úget_xyzutil_make_rect.<locals>.get_xyŸ]  sZ   € Ü�sœT¤5˜MÔ*¬s°C«y¸Aª~Ø�q‘6˜3˜q™6�>Ð!Ü�sœU¤E§M¡M´5·>±>ÐBÔCØ—5‘5˜#Ÿ%™%�<ÐØr)   c                 óp  — t        | t        «      r| S t        | t        «      r| j                  | j                  fS t        | t
        t        t        j                  t        j                  f«      r.| j                  | j                  | j                  | j                  fS t        | t        t        f«      s| f} | S r+   )r<   r¢   rÖ  r  r  r  rÒ  r�   rU  Úfz_rectrø  rú  r÷  rù  r¡   rÂ  s    r(   Ú
make_tuplez"util_make_rect.<locals>.make_tuple¥]  s€   € Ü�qœ%Ô ØˆHÜ�qœ%Ô Ø—3‘3˜Ÿ™�8ˆOÜ˜œT¤5¬%¯,©,¼¿¹ÐFÔGØ—4‘4˜Ÿ™˜qŸt™t Q§T¡TÐ)Ð)Ü˜1œt¤U˜mÔ,Ø�ˆAØˆr)   c                  ó:  •— t        ‰«      dk(  ryt        ‰«      dk(  rÉ‰d   } t        | t        t        f«      r,t        | «      dk(  r| \  }}g |¢|¢­}t        |«      dk(  sJ ‚|S t        | t        t        f«      rGt        | «      dk(  r9| \  }}} ‰|«      } ‰|«      } ‰|«      }g |¢|¢|¢­}t        |«      dk(  sJ ‚|S  ‰| «      }t        |«      dk(  sJ d| ›d|›�«       ‚|S t        ‰«      dk(  r) ‰‰d   «       ‰‰d   «      z   }t        |«      dk(  sJ ‚|S t        ‰«      dk(  rB ‰‰d   «      \  }}||fd	k7  r||‰d   ‰d   fS  ‰‰d   «      \  }	}
|	|
fd	k7  r,‰d   ‰d   |	|
fS t        ‰«      dk(  r‰d   ‰d   ‰d   ‰d   fS t	        d
‰› �«      ‚)Nr   r|  r   r   r8  r   zarg=z ret=rŒ	  ry  )r6   r<   r¡   r¢   re   )rþ  r÷  rø  rE   r    r{
  r©  rø  rú  r÷  rù  rä  rü  rÿ  s              €€€r(   Úhandle_argsz#util_make_rect.<locals>.handle_args¯]  së  ø€ Üˆt‹9˜Š>ØÜ�‹Y˜!Š^Ø�q‘'ˆCÜ˜3¤¤u Ô.´3¸³9À²>Ø‘��BØ�r�h˜B‘h�Ü˜3“x 1’}Ð$�}Ø�
Ü˜3¤¤u Ô.´3¸³9À²>Ø‘��1�aÙ˜q“M�Ù˜q“M�Ù˜q“M�Ø �q�j˜1�j˜q‘j�Ü˜3“x 1’}Ð$�}Ø�
Ù˜cÓ"ˆCÜ�s“8˜q’=Ð2 T S F¨&¨C¨6Ð"2Ó2�=ØˆJÜ�‹Y˜!Š^Ù˜$˜q™'Ó"¡V¨T°!©WÓ%5Ñ5ˆCÜ�s“8˜q’=Ð �=ØˆJÜ�‹Y˜!Š^Ù˜T !™WÓ%‰FˆB�Ø�Bˆx˜<Ò'Ø˜2˜t A™w¨¨Q©Ð/Ð/Ù˜T !™WÓ%‰FˆB�Ø�Bˆx˜<Ò'Ø˜A‘w  Q¡¨¨RÐ/Ð/Ü�‹Y˜!Š^Ø˜‘7˜D ™G T¨!¡W¨d°1©gÐ5Ð5ÜÐ.¨t¨fÐ5Ó6Ð6r)   r,   )r[  r÷  rø  rú  r÷  rù  rä  r  Úret_x0Úret_y0Úret_x1Úret_y1rü  rÿ  s         `     @@r(   r-  r-  ˆ]  sz   ú€ ò.ò	ö"7ñF &1£]Ñ"€FˆF�F˜FØ	€~©°«™˜ Ø	€~©°«™˜ Ø	€~ ˜Ø	€~ ˜Ø	€~ ˜Ø	€~ ˜Ø�6˜6 6Ð)Ð)r)   c           
      ó†   — t        || |||||dœŽ\  }}}	}
d„ } ||d«      } ||d«      } ||	d«      }	 ||
d«      }
|||	|
fS )Nr+  c                 ó~   — |rt        t        j                  | «      «      S t        t        j                  | «      «      S r+   )r3   rì
  r&  Úfloor)r  r&  s     r(   Úconvertz util_make_irect.<locals>.convertÞ]  s+   € ÙÜ”t—y‘y “|Ó$Ð$ä”t—z‘z !“}Ó%Ð%r)   FT)r-  )r[  r÷  rø  rú  r÷  rù  rä  r    r{
  r©  rõ  r	  s               r(   rV  rV  Ü]  se   € Ü $¨2°"¸ÀÀrÈbÒQ�J€A€qˆ!ˆQò&ñ
 	��5Ó€AÙ��5Ó€AÙ��4Ó€AÙ��4Ó€AØˆa��Aˆ:Ðr)   c                 óP   — t        t        j                  t        | «      «      «      S r+   )r4  r�   rÓ  rí  rÂ  s    r(   rl  rl  ê]  s   € ÜœE×/Ñ/´ÀÓ0EÓFÓGÐGr)   c                 óœ   — t         rt        j                  | |«      S t        t	        j
                  t        | «      t        |«      «      «      S r+   )r  r   rx  rT  r�   r–  rí  rÀ  )rä   rÆ  s     r(   rx  rx  î]  s<   € ÝÜ×(Ñ(¨$°Ó7Ð7Üœ5×2Ñ2´?À4Ó3HÔJ[Ð\bÓJcÓdÓeÐer)   c                 ód   — t        t        j                  t        | «      t        |«      «      «      S r+   )rT  r�   rÒ  rí  ©rè  ré  s     r(   rP  rP  ô]  s-   € ÜÜ×#Ñ#Ü Ó#Ü Ó#óóð r)   c                 óR   — t        j                  t        | «      t        |«      «      S r+   )r�   Úfz_is_point_inside_rectr÷  rí  )r�  r  s     r(   r%  r%  ý]  s%   € Ü×(Ñ(Ü  Ó#Ü Ó"óð r)   c                 ód   — t        t        j                  t        | «      t	        |«      «      «      S r+   )rT  r�   r5  rí  r÷  )r  r�  s     r(   rL  rL  ^  s-   € ÜÜ×*Ñ*Ü Ó"Ü  Ó#óóð r)   c                 óZ   — t        | «      }t        |«      }t        j                  ||«      S r+   )r÷  r&  r�   Úfz_is_point_inside_quad)r¦  rã   r�  r*  s       r(   rï  rï  ^  s)   € Ü˜Ó€AÜ˜Ó€AÜ×(Ñ(¨¨AÓ.Ð.r)   c                 ód   — t        t        j                  t        | «      t	        |«      «      «      S r+   )r›  r�   r  r÷  rÀ  )r  rÆ  s     r(   rà  rà  ^  s-   € ÜÜ×$Ñ$Ü  Ó'Ü! &Ó)óóð r)   c                 ód   — t        t        j                  t        | «      t        |«      «      «      S r+   )rT  r�   r�  rí  r  s     r(   rN  rN  ^  s-   € ÜÜ×ÑÜ Ó#Ü Ó#óóð r)   c                 ód   — t        t        j                  t        | «      t        |«      «      «      S r+   )r^  r�   r  rÀ  )r  r%  s     r(   r(  r(  $^  s+   € ÜÜ�O‰OÜ! "Ó%Ü! "Ó%óóð r)   c                 ó4  — 	 t'        | «      }|j                  }||j                  z  |j                  |j                  z  z
  }|t         j"                  j$                   k  s|t         j"                  j$                  kD  �rt        j                  «       }d|z  }|j                  |z  |_        |j                   |z  |_        |j                   |z  |_	        ||z  |_
        |j                   |j                  z  |j                  |j                  z  z
  }|j                   |j                  z  |j                  |j                  z  z
  |_        ||_        d|j                  |j                  |j                  |j                  |j                  |j                  ffS y)Nr   r   )r   r,   )r<   r¢   r¡   r�   r_  r  rb  r    r{
  r©  rõ  rM  r¸  r·   r  rÙ  r*
  Ú
float_infoÚepsilonrÀ  )rÆ  rE   rÆ  r    Údetr½
  Úrdets          r(   r#  r#  -^  s3  € Øô( ˜FÓ
#€CØ�‰€AØ
ˆc�e‰e‰)�c—e‘e˜cŸe™e‘mÑ
#€CØ
Œc�n‰n×$Ñ$Ð$Ò$¨¬c¯n©n×.DÑ.DÓ(DÜ�n‰nÓˆØ�3‰wˆØ—‘˜‘ˆŒØ—‘�˜‘ˆŒØ—‘�˜‘ˆŒØ�D‘ˆŒØ�U‰UˆF�S—U‘U‰N˜SŸU™U S§U¡U™]Ñ*ˆØ—‘�˜Ÿ™‘ §¡¨¯©¡Ñ.ˆŒØˆŒØ�3—5‘5˜#Ÿ%™% §¡¨¯©¨s¯u©u°c·e±eÐ<Ð<Ð<àr)   c                 óü  — t        j                  |«      }d}d}|t        | «      k  rÏt        j                  | |d  «      \  }}||z  }|t         j                  k(  rt        j
                  |«      }n>|t         j                  k(  rt        j                  |«      }nt        j                  |«      }|dk  rd}t        j                  ||«      }	t        j                  ||	d«      }
||
z  }|t        | «      k  rŒÏ||z  }|S )Nr   rÀ  )r�   rÔ  r6   rg  ÚPDF_SIMPLE_ENCODING_GREEKÚfz_iso8859_7_from_unicodeÚPDF_SIMPLE_ENCODING_CYRILLICÚfz_windows_1251_from_unicodeÚfz_windows_1252_from_unicoder  r  )r   ræ   rç   rØ  rH  r   rO  r5  r©  r—  r¼  rE   s               r(   rÈ  rÈ  T^  sî   € Ü×#Ñ# HÓ-€DØ	€AØ
€CØ
”�D“	Š/Ü×"Ñ" 4¨¨ :Ó.‰ˆˆ1Øˆq‰ˆØ”u×6Ñ6Ò6Ü×/Ñ/°Ó2‰AØœ×;Ñ;Ò;Ü×2Ñ2°1Ó5‰Aä×2Ñ2°1Ó5ˆAØˆqŠ5ØˆAÜ×%Ñ% d¨AÓ.ˆÜ×#Ñ# D¨!¨QÓ/ˆØ	ˆR‰ˆð ”�D“	‹/ð ˆh‰,€CØ€Jr)   c                 ór  — t        | «      }t        |«      }t        |«      }t        j                  t        j                  |j                  |j                  z
  |j
                  |j
                  z
  «      «      }t        j                  dddd|j                   |j
                   «      }t        j                  |j                  |j
                   |j
                  |j                  dd«      }t        j                  ||«      }t        j                  ||«      }t        j                  |«      }|j
                  S )Nr   r   )	r÷  r�   r	  ri  r  r  r  r  r  )	rÓ  r¦  rã   r©  r�  r*  r_  r  r%  s	            r(   r  r  j^  sâ   € ä˜Ó€AÜ˜Ó€AÜ˜Ó€AÜ×!Ñ!¤%×"5Ñ"5°a·c±c¸A¿C¹C±iÀÇÁÀqÇsÁsÁÓ"KÓL€AÜ	×	Ñ	˜a  A q¨1¯3©3¨$°·±°Ó	5€BÜ	×	Ñ	˜aŸc™c A§C¡C 4¨¯©¨a¯c©c°1°aÓ	8€BÜ	�‰˜˜RÓ	 €BÜ× Ñ   BÓ'€AÜ×!Ñ! !Ó$€AØ�3‰3€Jr)   c                 ó   — t        | «      }t        |«      }t        j                  t        j                  |j                  |j                  z
  |j
                  |j
                  z
  «      «      }t        j                  dddd|j                   |j
                   «      }t        j                  |j                  |j
                   |j
                  |j                  dd«      }t        t        j                  ||«      «      S )z‡
    Return the matrix that maps two points C, P to the x-axis such that
    C -> (0,0) and the image of P have the same distance.
    r   r   )	r÷  r�   r	  ri  r  r  r  r^  r  )rÓ  r¦  r©  r�  r_  r  r%  s          r(   r  r  x^  s·   € ô
 	˜Ó€AÜ˜Ó€Aô 	×!Ñ!¤%×"5Ñ"5°a·c±c¸A¿C¹C±iÀÇÁÀqÇsÁsÁÓ"KÓL€Aä	×	Ñ	˜a  A q¨1¯3©3¨$°·±°Ó	5€BÜ	×	Ñ	˜aŸc™c A§C¡C 4¨¯©¨a¯c©c°1°aÓ	8€BÜœUŸ_™_¨R°Ó4Ó5Ð5r)   c                 ó¾  — d}d}|}t        | |d  «      \  }}||z  }t        ||d  «      \  }}||z  }||k(  rž|}|t        d«      k(  r'	 t        | |d  «      \  }}||z  }|t        d«      k7  rnŒ&t        | |d  «      \  }}||z  }|t        d«      k(  r'	 t        ||d  «      \  }}||z  }|t        d«      k7  rnŒ&t        ||d  «      \  }}||z  }||k(  rŒž|dk7  rd S |S )Nr   r    )rÇ  rn
  )	Úh0r  r¶  rC   rM  rò  ÚhcÚdelta_nÚncs	            r(   rÑ  rÑ  ˆ^  s-  € Ø	€AØ	€AØ	€AÜ˜b  ˜fÓ%�K€GˆRØˆ�L€AÜ˜b  ˜fÓ%�K€GˆRØˆ�L€AØ
�Š(ØˆØ”�S“Š>ØÜ)¨"¨Q¨R¨&Ó1‘�˜Ø�W‘�Øœ˜S›’>Øð	 ô & b¨¨ fÓ-‰KˆG�RØ�‰LˆAØ”�S“Š>ØÜ)¨"¨Q¨R¨&Ó1‘�˜Ø�W‘�Øœ˜S›’>Øð	 ô & b¨¨ fÓ-‰KˆG�RØ�‰LˆAð' �‹(ð( ˜’7ˆ4Ð! Ð!r)   c                 ó  — | sJ ‚t        |t        j                  «      sJ ‚t        |t        j                  «      sJ ‚|j                  j
                  | j                  z  }|j                  j
                  | j                  z  }t        ||«      }| j                  dkD  �r?| j                  | j                  dz
     }t        |«      }	 t        |j                  j                  |j                  |j                  «      |k  rßt!        |j                  j                  |j                  |j                  «      |k  r§t        |j                  j                  |j"                  |j$                  «      |k  rot!        |j                  j                  |j"                  |j$                  «      |k  r7|j"                  |_        |j                  |_        | j                  d   |k(  sJ ‚y | j                  j'                  |«       | xj                  dz  c_	        y r-  )r<   r�   r2  r3  r»   r¦  r  r  r'  r6   r	  r&  rî  rX  r	  r  Úvdistr
  r”  ri   )r%  rm   rs
  r  r  Úch_quadrú  rƒ  s           r(   r$  r$  §^  sy  € Ù€Kˆ4Ü�dœE×-Ñ-Ô.Ð.Ð.Ü�bœ%×+Ñ+Ô,Ð,Ð,Ø�M‰M×Ñ §¡Ñ+€EØ�M‰M×Ñ §¡Ñ+€EÜ˜4 Ó$€GØ‡x�x�!ƒ|à�z‰z˜$Ÿ(™( Q™,Ñ'ˆÜ˜dÓ#ˆØÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÒJÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÒJÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÒJÜ˜$Ÿ/™/×-Ñ-¨s¯v©v°w·z±zÓBÀUÒJà—Z‘ZˆCŒFØ—Z‘ZˆCŒFØ—:‘:˜b‘> SÒ(Ð(Ð(ØØ‡J�J×Ñ�gÔØ‡H‚H��M†Hr)   c                 ó  — t         rt        j                  | |||||||«      S t        d«      t        d«      t        d«      t        d«      t        d«      t        d«      t        d«      t        d«      t        d	«      g	}t	        j
                  ||«      }	t	        j                  | d
«      }
t	        j                  |
t        d«      t        d«      «       t        t        |«      «      D ]`  }t	        j                  |	||   «      }|j                  sŒ)t	        j                  |
||   t	        j                  |j                  |«      «       Œb |�rât	        j                  |	t        d«      «      }t	        j                  |«      }|dkD  �r¨t	        j                   |
t        d«      |«      }t        |«      D �]y  }t	        j"                  ||«      }|j                  rt	        j$                  |«      sŒ<t	        j&                  |d«      j                  rŒ]t	        j                  |t        d«      «      }t	        j(                  |t        d«      «      rŒœt	        j(                  |t        d«      «      rŒ¼t	        j(                  |t        d«      «      rŒÜt	        j*                  |t        d«      «       t	        j*                  |t        d«      «       t	        j                  |j                  |«      }t	        j,                  | t	        j.                  |«      d«      }t	        j0                  ||«       �Œ| |dk7  r t	        j2                  |
t        d«      |«       t	        j4                  | |
«      }t	        j6                  | ||«       y)z¹
    Deep-copies a source page to the target.
    Modified version of function of pdfmerge.c: we also copy annotations, but
    we skip some subtypes. In addition we rotate output.
    rÿ  r!  r›  rÈ  rÉ  rÊ  rË  r   ÚUserUnitr8  r  rÁ   r„  r   r  rs  rÀ
  rƒ  r'  r¦  r…  N)r  r   rÌ  rô   r�   r)  r?  r:  r8  r6   r*  r»   r¬  r³   ró   r‰  r„  rŠ  rg  rë   rÛ  r-  rv  rî   rx  r5  r…  rW  )rÍ  rÎ  Ú	page_fromÚpage_torE  rg  Úcopy_annotsrÒ  Úknown_page_objsÚpage_refrƒ  rL  rü   r  rC   r  r�  râ  r  rÎ   r   s                        r(   rÌ  rÌ  À^  sÎ  € õ ä×Ñ ¨'°9¸gÀvÈuÐVaÐclÓmÐmô 	�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�ÓÜ�Óð

€Oô ×(Ñ(¨°)Ó<€Hô ×"Ñ" 7¨AÓ.€IÜ	×Ñ�y¤(¨6Ó"2´H¸VÓ4DÔEô ”C˜Ó(Ö)ˆÜ×,Ñ,¨h¸ÈÑ8JÓKˆØ�>‹>ä×Ñ 	¨?¸1Ñ+=¼u×?\Ñ?\Ð]f×]kÑ]kÐmpÓ?qÕrð	 *ò Ü×'Ñ'¨´8¸HÓ3EÓFˆ
Ü×Ñ Ó,ˆØˆq‹5Ü×1Ñ1°9¼hÀxÓ>PÐRSÓTˆJÜ˜1—X�Ü×'Ñ'¨°QÓ7�Ø—|’|¬5×+<Ñ+<¸QÔ+?ØÜ×&Ñ&¨¨5Ó1×<Ò<ØÜ×,Ñ,¨a´¸)Ó1DÓE�Ü×$Ñ$ g¬x¸Ó/?Ô@ØÜ×$Ñ$ g¬x¸Ó/@ÔAØÜ×$Ñ$ W¬h°xÓ.@ÔAØÜ×"Ñ" A¤x°Ó'8Ô9Ü×"Ñ" A¤x°£}Ô5Ü×6Ñ6¸	¿¹ÈÓJ�Ü×.Ñ.°¼×9IÑ9IÈ6Ó9RÐTUÓV�Ü×$Ñ$ j°%Ö8ð# ð( �‚|Ü×Ñ 	¬8°HÓ+=¸vÔFä
×
Ñ
 ¨Ó
3€Cô 
×Ñ˜7 G¨SÕ1r)   c                 ó:   — t        | «      \  }}t        dd||«      S )z‰Return a Rect for the paper size indicated in string 's'. Must conform to the argument of method 'PaperSize', which will be invoked.
    r‹  )Ú
paper_sizer  )r_  rJ  rÅ  s      r(   Ú
paper_rectr4  _  s"   € ô ˜q“M�M€Eˆ6Ü��S˜% Ó(Ð(r)   c                 óØ   — | j                  «       }d}|j                  d«      rd}|dd }|j                  d«      r|dd }t        «       j                  |d«      }|dk(  r|S |d   |d	   fS )
zÑReturn a tuple (width, height) for a given paper format string.

    Notes:
        'A4-L' will return (842, 595), the values for A4 landscape.
        Suffix '-P' and no suffix return the portrait tuple.
    r�  z-lr  NrÁ  z-prq  r   r   )r¿  rÉ  Úpaper_sizesr7   )r_  r¦  r¸  r’   s       r(   r3  r3  _  sy   € ð �7‰7‹9€DØ€AØ‡}�}�TÔØˆØ�C�RˆyˆØ‡}�}�TÔØ�C�RˆyˆÜ	‹×	Ñ	˜4 Ó	*€BØˆC‚xØˆ	Øˆq‰E�2�a‘5ˆ>Ðr)   c                  óð   — 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"“i d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“¥dEdFdGdHdIdJdKdLdMdNdOœ
¥S )Pa6  Known paper formats @ 72 dpi as a dictionary. Key is the format string
    like "a4" for ISO-A4. Value is the tuple (width, height).

    Information taken from the following web sites:
    www.din-formate.de
    www.din-formate.info/amerikanische-formate.html
    www.directtools.de/wissen/normen/iso.htm
    Úa0)éP	  i*  Úa1)é”  r9  Úa10)rð  r  Úa2)é§  r;  Úa3)r#
  r>  Úa4)r"
  r#
  Úa5)é¤  r"
  Úa6)é*  rB  Úa7)r`  rD  Úa8)é“   r`  Úa9)r  rG  Úb0)é  i¨  Úb1)éÔ  rJ  Úb10)r  r+  Úb2)é‰  rL  Úb3)éé  rO  Úb4)éÅ  rQ  Úb5)éó  rS  Úb6)éb  rU  r¢  )r‰  rW  Úb8)r@  r‰  Úb9)r+  r@  Úc0)é'
  i]  Úc1)é-  r[  Úc10)r÷  r  Úc2)é  r]  Úc3)é–  r`  Úc4)é‰  rb  Úc5)éË  rd  Úc6)éC  rf  Úc7)rv  rh  Úc8)r/  rv  Úc9)r  r/  zcard-4x6)i   i°  )r¡  iø  )i)  i¬  )i
  iô  )iŒ  rÅ  )rÆ  iÈ  )rÅ  ið  )rÅ  i¨  )rÅ  rÆ  )i  i  )i`  i  )
zcard-5x7Ú
commercialÚ	executiveÚinvoiceÚledgerÚlegalzlegal-13ÚletterÚmonarchztabloid-extrar,   r,   r)   r(   r6  r6  "_  sÍ  € ð-
Øˆlð-
àˆlð-
ð 	ˆyð-
ð 	ˆlð	-
ð
 	ˆkð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆlð-
ð 	ˆlð-
ð 	ˆyð-
ð 	ˆlð-
ð  	ˆlð!-
ð" 	ˆkñ#-
ð$ 	ˆjð%-
ð& 	ˆjð'-
ð( 	ˆjð)-
ð* 	ˆjð+-
ð, 	ˆjð--
ð. 	ˆlð/-
ð0 	ˆlð1-
ð2 	ˆyð3-
ð4 	ˆlð5-
ð6 	ˆkð7-
ð8 	ˆjð9-
ð: 	ˆjð;-
ð< 	ˆjð=-
ð> 	ˆjð?-
ð@ 	ˆjðA-
ðB 	ˆjðC-
ðD 	�JñE-
ðF Ø ØØØØØØØØ$òY-
ð -
r)   c                 ó.   — t        j                  | |«      S r+   )r�   rA  )r  rü  s     r(   rA  rA  Z_  s   € Ü×$Ñ$ S¨&Ó1Ð1r)   c                 ó   — J d«       ‚)zH
    Returns description of mupdf.PdfObj (wrapper for pdf_obj) <o>.
    zuse mupdf.pdf_debug_obj() ?)r�   rv  r‰  r8  rŠ  Úpdfobj_stringr+  Úarray_get_boolrg  rh  rj  ró   Úpdf_is_embedded_fileÚembedded_file_namer°  r
  rõ   Úpdf_is_jpx_imager¨  rf  rÜ  r
  rÜ  r  r
  rÀ  )r�  ri	  rE   r  rL  Úoor  r¥   s           r(   ru  ru  ^_  s   € ð ,Ð+Ó+ˆ1r)   c                 óÞ  — |j                   d   sy| j                  }| j                  «       }|D �cg c]A  }|d   |j                  k(  r-|d   j	                  d«      r|d   j	                  d«      r|d   ‘ŒC }}|g k(  ryt        |«      }t        t        |j                  d	«      d
z  «      «      }|D ]4  }t        j                  |||«      rŒt        d|j                  |fz  «       Œ6 yc c}w )aÞ  Repair character spacing for mono fonts.

    Notes:
        Some mono-spaced fonts are displayed with a too large character
        distance, e.g. "a b c" instead of "abc". This utility adds an entry
        "/W[0 65535 w]" to the descendent font(s) of font. The float w is
        taken to be the width of 0x20 (space).
        This should enforce viewers to use 'w' as the character width.

    Args:
        page: pymupdf.Page object.
        font: pymupdf.Font object.
    r|
  Nr   r8  r•  r   rr  r   rä  iè  z$Cannot set width for '%s' in xref %i)r¬  rÖ   r  r   r2   r¸  r3   r  rŽ
  rø   Úset_font_widthr&   )rÅ   rH  r  r¨  r¸  r0  rJ  rý   s           r(   rB  rB  �_  sè   € ð �:‰:�fÒØØ
�+‰+€CØ�~‰~Ó€Hñ óáˆAØˆa‰D�D—I‘IÒ ! A¡$§/¡/°#Ô"6¸1¸Q¹4¿?¹?È:Ô;Vð 	
ˆ!‹Øð 
ð ð
 �‚{ØÜ�‹J€EÜ”�t×)Ñ)¨"Ó-°Ñ4Ó6Ó7€EÛˆÜ×#Ñ# C¨¨uÕ5ÜÐ6¸$¿)¹)ÀTÐ9JÑJÕKñ ùòs   ±AC*Úsrgbc                 óF   — t        | «      }|d   dz  |d   dz  |d   dz  fS )a  Convert sRGB color code to a PDF color triple.

    There is **no error checking** for performance reasons!

    Args:
        srgb: (int) RRGGBB (red, green, blue), each color in range(255).
    Returns:
        Tuple (red, green, blue) each item in interval 0 <= item <= 1.
    r   g     ào@r   r   )ró  )r}  r5  s     r(   ÚsRGB_to_pdfr  °_  s3   € ô 	�DÓ€AØˆQ‰4�%‰<˜˜1™ ™ q¨¡t¨e¡|Ð3Ð3r)   c                 óR   — | dz  } | dz	  }| |dz  z
  dz	  }| |dz  z
  |dz  z
  }|||fS )aI  Convert sRGB color code to an RGB color triple.

    There is **no error checking** for performance reasons!

    Args:
        srgb: (int) SSRRGGBB (red, green, blue), each color in range(255).
        With MuPDF < 1.26, `s` is always 0.
    Returns:
        Tuple (red, green, blue) each item in interval 0 <= item <= 255.
    r•  r½	  r   r,   )r}  r  r—  r{
  s       r(   ró  ró  ¾_  sM   € ð 	ˆHÑ€DØ�‰
€AØ	��b‘Ñ	˜aÑ€AØ��R‘Ñ˜A ™FÑ#€AØˆq�!ˆ9Ðr)   c                 óà   — |rt        j                  |«      nd}t        j                  | «      }t        d|d«      D ]0  }t        j                  t        j                  ||«      «      |k(  sŒ0 y y)Nr   r   r   )r�   r‰  rð   r8  rŠ  )r�  rÌ  rC   Ústr_rL  s        r(   rÉ  rÉ  Ð_  s`   € Ù,6Œ×Ñ˜ZÔ(¸A€AÜ×#Ñ# QÓ'€DÜ�1�a˜Ž^ˆÜ×#Ñ#¤U×%8Ñ%8¸*ÀaÓ%HÓIÈTÓQÙð ð r)   c                 óL  — d}d}|}d}|j                   �r‹t        | ||||«      }	t        ||||«      �s)|	dk(  rÆt        j                  |t        d«      «      }
|
j                   s,|j                   rŒt        j                  |t        d«      «       nl|j                   rAt        j                  |t        d«      |
«       t        j                  |
t        d«      |«       nt        j                  |
t        d«      «       |
}n”t        j                  |t        d«      «       t        j                  |t        d«      «       t        j                  |t        d«      «      }n6|r|j                   s|}|}t        j                  |t        d«      «      }|dz  }|j                   r�Œ‹|||fS )z'
    Returns (count, first, prev).
    Nr   rñ  ÚPrevrï  rð  r   )r»   Ústrip_outlinesrÍ  r�   ró   rô   r-  r:  )r  ÚoutlinesrÂ  rË  rÌ  r2  rö  Úcurrentr¨  r'  r*  s              r(   Ústrip_outlinerˆ  Ù_  sk  € ð €EØ€EØ€GØ€DØ
×
Ó
ô ˜C ¨*Ð6FÈ
ÓSˆä˜W jÐ2BÀJÕOØ�QŠwô ×)Ñ)¨'´8¸FÓ3CÓD�Ø—’à—’Ü×*Ñ*¨4´¸&Ó1AÕBØ—_’_Ü×&Ñ& t¬X°fÓ-=¸tÔDÜ×&Ñ& t¬X°fÓ-=¸tÕDä×&Ñ& t¬X°fÓ-=Ô>Ø‘ô ×"Ñ" 7¬H°VÓ,<Ô=Ü×"Ñ" 7¬H°S«MÔ:Ü×,Ñ,¨W´h¸vÓ6FÓG‘ñ  × 0Ò 0Ø�ØˆDÜ×(Ñ(¨´(¸6Ó2BÓCˆGØ�Q‰JˆEð? ×
Ô
ðB �%˜ÐÐr)   c                 óÄ  — |j                   syt        j                  |t        d«      «      }|j                   sd}nt	        | ||||«      \  }}}|dk(  r_t        j
                  |t        d«      «       t        j
                  |t        d«      «       t        j
                  |t        d«      «       |S t        j                  t        j                  |t        d«      «      «      }t        j                  |t        d«      |«       t        j                  |t        d«      «       t        j                  |t        d«      t        j                  |dkD  r|n| «      «       |S )Nr   r,  ÚLastrî  )	r»   r�   ró   rô   rˆ  r-  rõ   r:  r  )	r  r†  rÂ  rË  rÌ  r2  r'  rr	  Ú	old_counts	            r(   r…  r…  `  s"  € Ø×ÒØä×Ñ˜x¬°'Ó):Ó;€EØ×ÒØ‰ä'¨¨U°JÐ@PÐR\Ó]‰ˆˆE�4à	ˆQ‚wÜ×Ñ˜8¤X¨gÓ%6Ô7Ü×Ñ˜8¤X¨fÓ%5Ô6Ü×Ñ˜8¤X¨gÓ%6Ô7ð €Iô	 ×$Ñ$¤U×%7Ñ%7¸Ä(È7ÓBSÓ%TÓUˆ	Ü×Ñ˜8¤X¨gÓ%6¸Ô>Ü×Ñ˜8¤X¨fÓ%5°tÔ<Ü×Ñ˜8¤X¨gÓ%6¼×8IÑ8IÐPYÐ\]ÒP]É"ÐdfÐcfÓ8gÔhØ€Ir)   rs
  c                 óh   — ddl }	 |j                  t        | «      «      }|S # t        $ r d}Y |S w xY w)z5
    Convenience function accessing unicodedata.
    r   Nz.notdef)rå  r   r¾	  r²   )rs
  rå  r   s      r(   r¯
  r¯
  !`  sB   € ó ðØ×Ñ¤ B£Ó(ˆð €Køô ò Ø‰Ø€Kðúrç  c                 óÊ   — |j                   |j                   z
  }|j                  |j                  z
  }t        j                  || j                  z  || j                   z  z   «      S r+   ré  rë  s        r(   r)  r)  -`  rï  r)   r,   Úsingle)	Úpagefn_argsÚpagefn_kwargsÚinitfnÚinitfn_argsÚinitfn_kwargsrc  r«  ÚconcurrencyÚ_statsc       	         óh  — |
rt        j                   «       }|dk(  r`|r ||i |¤Ž t        «       }t        | «      }|€t        t	        |«      «      }|D ]$  }||   } ||g|¢­i |¤Ž}|j                  |«       Œ& �nddlm} |€q|
rt        j                   «       }t        | «      5 }t	        |«      }t        t        |«      «      }ddd«       |
r&t        j                   «       z
  }t        |d›d�«       |
rt        j                   «       }|dk(  r|j                  | ||||||||	|
«
      }n+|dk(  r|j                  | ||||||||	|
«
      }nJ d	|›d
�«       ‚|
r&t        j                   «       z
  }t        |d›d�«       |
r&t        j                   «       z
  }t        |d›d�«       |S # 1 sw Y   ŒäxY w)a˜  
    Returns list of results from `pagefn()`, optionally using concurrency for
    speed.
    
    Args:
        path:
            Path of document.
        pagefn:
            Function to call for each page; is passed (page, *pagefn_args,
            **pagefn_kwargs). Return value is added to list that we return. If
            `method` is not 'single', must be a top-level function - nested
            functions don't work with concurrency.
        pagefn_args
        pagefn_kwargs:
            Additional args to pass to `pagefn`. Must be picklable.
        initfn:
            If true, called once in each worker process; is passed
            (*initfn_args, **initfn_kwargs).
        initfn_args
        initfn_kwargs:
            Args to pass to initfn. Must be picklable.
        pages:
            List of page numbers to process, or None to include all pages.
        method:
            'single'
                Do not use concurrency.
            'mp'
                Operate concurrently using Python's `multiprocessing` module.
            'fork'
                 Operate concurrently using custom implementation with
                 `os.fork()`. Does not work on Windows.
        concurrency:
            Number of worker processes to use when operating concurrently. If
            None, we use the number of available CPUs.
        _stats:
            Internal, may change or be removed. If true, we output simple
            timing diagnostics.
    
    Note: We require a file path rather than a Document, because Document
    instances do not work properly after a fork - internal file descriptor
    offsets are shared between the parent and child processes.
    rŽ  Nr   )Ú_apply_pagesz.2fzs: count pages.rl  ÚforkzUnrecognised method=r   zs: work.z	s: total.)rÓ  r¡   r°   r8  r6   ri   rZ   r—  r&   Ú_multiprocessingÚ_fork)r	   r<  r�  r�  r‘  r’  r“  rc  r«  r”  r•  rx	  rE   r¸   rÇ  rÅ   r  r—  r5  Ú	num_pagess                       r(   Úapply_pagesrœ  3`  sÉ  € ñp Ü�Y‰Y‹[ˆà�ÒÙÙ�KÐ1 =Ò1Ü‹fˆÜ˜D“>ˆØˆ=Üœ#˜h›-Ó(ˆEÛˆCØ˜C‘=ˆDÙ�tÐ;˜kÒ;¨]Ñ;ˆAØ�J‰J�q�Mò õ 	#àˆ=ÙÜ—I‘I“K�Ü˜$” 8Ü ›M�	ÜœU 9Ó-Ó.�÷  ñ Ü—I‘I“K !‘O�Ü�q˜�g˜_Ð-Ô.áÜ—	‘	“ˆAà�TŠ>Ø×/Ñ/ØØØØØ!ØØØ!ØØó‰Cð �vÒØ×$Ñ$ØØØØØ!ØØØ!ØØó‰Cð 1Ð- f Y¨aÐ0Ó0�1áÜ—	‘	“˜a‘ˆAÜ�1�S�'˜Ð"Ô#áÜ�I‰I‹K˜"ÑˆÜˆq�ˆg�YÐÔ Ø€J÷a  �ús   Â% F(Æ(F1)
rc  r«  r”  rt  rï  r¬  ru  r¹  ré  r•  c       
   	      ód   — t        ||||||	¬«      }t        | t        j                  |||||
¬«      S )ag  
    Returns list of results from `Page.get_text()`, optionally using
    concurrency for speed.
    
    Args:
        path:
            Path of document.
        pages:
            List of page numbers to process, or None to include all pages.
        method:
            'single'
                Do not use concurrency.
            'mp'
                Operate concurrently using Python's `multiprocessing` module.
            'fork'
                 Operate concurrently using custom implementation with
                 `os.fork`. Does not work on Windows.
        concurrency:
            Number of worker processes to use when operating concurrently. If
            None, we use the number of available CPUs.
        option
        clip
        flags
        textpage
        sort
        delimiters:
            Passed to internal calls to `Page.get_text()`.
    )rt  rï  r¬  ru  r¹  ré  )r�  rc  r«  r”  r•  )r4   rœ  rÁ   râ  )r	   rc  r«  r”  rt  rï  r¬  ru  r¹  ré  r•  Ú	args_dicts               r(   râ  râ  µ`  sI   € ôX ØØØØØØ!ô€Iô ØÜ�M‰MØ#ØØØ#Øôð r)   c                   ó´  — e Zd ZdZd„ Zed„ «       Zed„ «       Zed-d„«       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zed„ «       Zed„ «       Zed.d„«       Zed/d„«       Zed/d„«       Zed„ «       Zed-d„«       Zed„ «       Z ed„ «       Z!ed/d „«       Z"ed!„ «       Z#ed"„ «       Z$ed.d#„«       Z%ed/d$„«       Z&ed/d%„«       Z'ed/d&„«       Z(ed'„ «       Z)ed(„ «       Z*ed)„ «       Z+ed*„ «       Z,ed/d+„«       Z-d,Z. e/«       Z0y)0rø   zU
    We use @staticmethod to avoid the need to create an instance of this class.
    c                 ó˜   — t        | t        j                  «      rt        t	        | «      «      S t        t        j
                  «       «      S r+   )r<   r�   rÂ   r^  r  r_  rÄ   s    r(   Ú_derotate_matrixzTOOLS._derotate_matrixú`  s3   € Ü�dœEŸM™MÔ*Ü$Ô%<¸TÓ%BÓCÐCä$¤U§^¡^Ó%5Ó6Ð6r)   c                 ó®  — t        | |«      }t        | j                  «      |_        | j                  |_        | j                  |_        | |_        |j                  sd |_        |j                  sd |_        |j                  sd |_        |j                  sd |_	        |j                  sd |_
        |j                  sd |_        |j                  sd |_        |S r+   )r  r  rä   rý   rÖ   r³  r]
  r�  r‚  rƒ  r„  r…  r†  )rÎ   r)  rÿ   s      r(   r(  zTOOLS._fill_widget a  s´   € ä& u¨fÓ5ˆä˜5Ÿ:™:Ó&ˆŒØ—j‘jˆŒØŸ™ˆŒØˆŒØ�}Š}Ø ˆFŒMØ×#Ò#Ø#'ˆFÔ Ø×#Ò#Ø#'ˆFÔ Ø×#Ò#Ø#'ˆFÔ Ø×!Ò!Ø!%ˆFÔØ×!Ò!Ø!%ˆFÔØ×"Ò"Ø"&ˆFÔØˆ
r)   c                 óx   — t        | j                  «      } t        | j                  «       «      }t	        |«      }|S r+   )rÉ   r³   r  rü   r
  )rÅ   r  r  s      r(   r€  zTOOLS._get_all_contentsa  s/   € ä˜DŸI™IÓ&ˆÜ˜tŸx™x›zÓ*ˆÜ! 3Ó'ˆØˆr)   c                 óŠ   — t        | d¬«      }t        |«      }t        |j                  «       |j	                  «       ||«      }|S )zDAdd bytes as a new /Contents object for a page, and return its xref.r   r  )rÉ   r  r‘  r  rü   )rÅ   r}  r”  r˜  Úcontbufrý   s         r(   rÝ  zTOOLS._insert_contentsa  s;   € ô ˜t¨aÔ0ˆÜ$ WÓ-ˆÜ! '§+¡+£-°·±³ÀÈÓQˆàˆr)   c                 ó˜  — | j                   d   }| j                  d   }|sd}dj                  t        t        |«      «      dz   }|r|}n| j                  d   }|sd}dj                  t        t        |«      «      dz   }|}	|}
t        t        |	|
«      «      }| }|	|z  }|
|z  }d	| j                  cxk  rd
k  rn nd}nd}||||||||fS )as  Get common parameters for making annot line end symbols.

        Returns:
            m: matrix that maps p1, p2 to points L, P on the x-axis
            im: its inverse
            L, P: transformed p1, p2
            w: line width
            scol: stroke color string
            fcol: fill color store_shrink
            opacity: opacity string (gs command)
        rJ  rU  rl  r    z RG
rè   r  z rg
r   r   r¶  rZ   )ru  rú   rÆ  rÇ  rÙ   rb  r  rB  )rÎ   r÷  rø  rD  r   ÚscÚscolr  rI  Únp1Únp2rm  rÐ  r
  rÑ  rB  s                   r(   Ú_le_annot_parmszTOOLS._le_annot_parms(a  sÞ   € ð �L‰L˜Ñ!ˆØ�\‰\˜(Ñ#ˆÙØˆBØ�x‰xœœC ›Ó%¨Ñ/ˆÙØ‰Bà—‘˜fÑ%ˆBÙØˆBØ�x‰xœœC ›Ó%¨Ñ/ˆàˆØˆÜ”? 3¨Ó,Ó-ˆØˆRˆØ�!‰GˆØ�!‰GˆØ�—‘Ô! Õ!Ø‰GàˆGØ�"�a˜˜A˜t T¨7Ð2Ð2r)   c                 óR  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r|n|}|d| dz  fz   |z  }|d|dz  fz   |z  }d||j                  |j                  fz  }|d|j                  |j                  fz  z  }|t        |	«      dz   z  }||
dz   z  }|S )	zaMake stream commands for butt line end symbol. "lr" denotes left (False) or right point.
        r   r   r   r¢  ú
q
%s%f %f m
ú%f %f l
rû  ús
Q
©rø   r«  rÔ  r  r  r£   )rÎ   r÷  rø  r	  rD  rm  rÐ  r
  rÑ  r   r¨  rI  rB  rŽ  rõ  rÿ  rt	  Úbotr  s                      r(   rÐ  zTOOLS._le_buttNa  sÒ   € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙ‰A˜ˆØ�A˜�r˜"‘u�:‰~ Ñ#ˆØ�A�q˜‘t�9‰} Ñ"ˆØ 7¨C¯E©E°3·5±5Ð"9Ñ9ˆØ
ˆk˜SŸU™U C§E¡E˜NÑ*Ñ*ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r)   c                 óœ  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r
||dz  dfz
  n	||dz  dfz   }t        ||«      | | ||fz   }d|z   t         j	                  |j
                  |z  |j                  |z  |j                  |z  |j                  |z  «      z   }|t        |	«      dz   z  }||
|z   dz   z  }|S )zcMake stream commands for circle line end symbol. "lr" denotes left (False) or right point.
        ç      @r   r¢  r   zq
rû  úb
Q
)
rø   r«  rÔ  r  Ú_oval_stringr×  r¥  rØ  r'  r£   )rÎ   r÷  rø  r	  rD  rm  rÐ  r
  rÑ  r   r¨  rI  rB  rŽ  rõ  rÿ  r  r  s                     r(   rÌ  zTOOLS._le_circle^a  sí   € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙˆA��2‘�q�	ŠM Q¨!¨B©$°¨¡]ˆÜ��A‹J˜1˜"˜q˜b ! Q˜Ñ'ˆØ�W‰_œu×1Ñ1°!·$±$¸±)¸Q¿T¹TÀB¹YÈÏÉÈrÉ	ÐST×SWÑSWÐZ\ÑS\Ó]Ñ]ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r)   c                 óø  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r
||dz  dfz   n	||dz  dfz
  }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d||j                  |j                  fz  }|d|j                  |j                  fz  z  }|d|j                  |j                  fz  z  }|t        |	«      d	z   z  }||
|z   d
z   z  }|S )ziMake stream commands for closed arrow line end symbol. "lr" denotes left (False) or right point.
        r³  r   r¢  r   rÁ  r   r­  r®  rû  r´  r°  ©rÎ   r÷  rø  r	  rD  rm  rÐ  r
  rÑ  r   r¨  rI  rB  rŽ  rõ  rk  r  s                    r(   rÏ  zTOOLS._le_closedarrowla  s=  € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙ ˆQ�!�B‘$˜�Š] a¨1¨R©4°¨)¡mˆÙ "ˆR�2�a‘4˜!˜�*Š_¨¨a°©c°A°2¨Y©ˆÙ!ˆR�2�a‘4˜�)Š^ r¨Q¨q©S°!¨H¡}ˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ 7¨B¯D©D°"·$±$Ð"7Ñ7ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r)   c                 óD  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r
||dz  dfz
  n	||dz  dfz   }t        ||«      | | ||fz   }|j                  |j
                  |j                  z
  dz  z   |z  }d||j                  |j                  fz  }|j                  |j                  |j                  z
  dz  z   |z  }|d|j                  |j                  fz  z  }|j                  |j                  |j                  z
  dz  z   |z  }|d|j                  |j                  fz  z  }|j                  |j
                  |j                  z
  dz  z   |z  }|d|j                  |j                  fz  z  }|t        |	«      dz   z  }||
|z   d	z   z  }|S )
zdMake stream commands for diamond line end symbol. "lr" denotes left (False) or right point.
        r³  r   r¢  r   r#  úq
%s%f %f m
r®  rû  r´  )rø   r«  rÔ  r  r×  r'  r  r  r¥  rØ  r£   ©rÎ   r÷  rø  r	  rD  rm  rÐ  r
  rÑ  r   r¨  rI  rB  rŽ  rõ  rÿ  r  r�  r  s                      r(   rÍ  zTOOLS._le_diamond€a  s£  € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙˆA��2‘�q�	ŠM Q¨!¨B©$°¨¡]ˆÜ��A‹J˜1˜"˜q˜b ! Q˜Ñ'ˆà�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ ¨!¯#©#¨q¯s©sÐ 3Ñ3ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ
ˆk˜qŸs™s A§C¡C˜jÑ(Ñ(ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ
ˆk˜qŸs™s A§C¡C˜jÑ(Ñ(ˆØ�T‰T�Q—T‘T˜AŸD™D‘[ CÑ'Ñ'¨2Ñ-ˆØ
ˆk˜qŸs™s A§C¡C˜jÑ(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r)   c                 óò  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r
||dz  dfz   n	||dz  dfz
  }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d||j                  |j                  fz  }|d|j                  |j                  fz  z  }|d|j                  |j                  fz  z  }|t        |	«      d	z   z  }||
d
z   z  }|S )zgMake stream commands for open arrow line end symbol. "lr" denotes left (False) or right point.
        r³  r   r¢  r   rÁ  r   r­  r®  rû  úS
Q
r°  r·  s                    r(   rÎ  zTOOLS._le_openarrow–a  s8  € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙ ˆQ�!�B‘$˜�Š] a¨1¨R©4°¨)¡mˆÙ "ˆR�2�a‘4˜!˜�*Š_¨¨a°©c°A°2¨Y©ˆÙ!ˆR�2�a‘4˜�)Š^ r¨Q¨q©S°!¨H¡}ˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ 7¨B¯D©D°"·$±$Ð"7Ñ7ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r)   c                 óø  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r
|d|z  dfz
  n	|d|z  dfz   }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d||j                  |j                  fz  }|d|j                  |j                  fz  z  }|d|j                  |j                  fz  z  }|t        |	«      dz   z  }||
|z   d	z   z  }|S )
zoMake stream commands for right closed arrow line end symbol. "lr" denotes left (False) or right point.
        r³  r   r   r   rÁ  r­  r®  rû  r´  r°  r·  s                    r(   rÒ  zTOOLS._le_rclosedarrowªa  s=  € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙˆQ�!�A‘#�q�Š\ Q¨!¨A©#¨q¨¡\ˆÙ!ˆR�1�Q‘3˜˜�)Š^ r¨R°©T°A°2¨J¡ˆÙ ˆR�1�Q‘3˜�(Š] b¨B¨q©D°!¨9¡nˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ 7¨B¯D©D°"·$±$Ð"7Ñ7ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r)   c                 óø  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r
||dz  dfz
  n	||dz  dfz   }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d||j                  |j                  fz  }|d|j                  |j                  fz  z  }|d|j                  |j                  fz  z  }|t        |	«      d	z   z  }||
|z   d
z   z  }|S )zmMake stream commands for right open arrow line end symbol. "lr" denotes left (False) or right point.
        r³  r   g      @r   r   rÁ  r­  r®  rû  r¼  r°  r·  s                    r(   rÑ  zTOOLS._le_ropenarrow¾a  s=  € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙ ˆQ�!�B‘$˜�Š] a¨1¨R©4°¨)¡mˆÙ!ˆR�1�Q‘3˜˜�)Š^ r¨R°©T°A°2¨J¡ˆÙ ˆR�1�Q‘3˜�(Š] b¨B¨q©D°!¨9¡nˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ 7¨B¯D©D°"·$±$Ð"7Ñ7ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
ˆk˜RŸT™T 2§4¡4˜LÑ(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r)   c                 óê  — t         j                  | |||«      \  }}}}}	}
}}dt        d|	«      z  dz  }|r|n|}t        |j                  |z
  |j
                  d|	z  z
  |j                  |z   |j
                  d|	z  z   «      }|j                  |z  }|j                  |z  }d||j                  |j
                  fz  }|d|j                  |j
                  fz  z  }|t        |	«      dz   z  }||
dz   z  }|S )	zbMake stream commands for slash line end symbol. "lr" denotes left (False) or right point.
        g(µ¦yò?r   rŒ  r   r­  r®  rû  r¯  )	rø   r«  rÔ  r  r  r  r×  rØ  r£   )rÎ   r÷  rø  r	  rD  rm  rÐ  r
  rÑ  r   r¨  rI  rB  Úrwrÿ  r  rt	  r±  r  s                      r(   rÓ  zTOOLS._le_slashÒa  sö   € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØ”c˜!˜Q“iÑ #Ñ%ˆÙ‰A˜ˆÜ�—‘�r‘˜1Ÿ3™3  Q¡™;¨¯©¨b©°!·#±#¸¸A¹±+Ó>ˆØ�d‰d�R‰iˆØ�d‰d�R‰iˆØ 7¨C¯E©E°3·5±5Ð"9Ñ9ˆØ
ˆk˜SŸU™U C§E¡E˜NÑ*Ñ*ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r)   c                 ó\  — t         j                  | |||«      \  }}}}}	}
}}d}|t        d|	«      z  }|r
||dz  dfz
  n	||dz  dfz   }t        ||«      | | ||fz   }|j                  |z  }d||j
                  |j                  fz  }|j                  |z  }|d|j
                  |j                  fz  z  }|j                  |z  }|d|j
                  |j                  fz  z  }|j                  |z  }|d|j
                  |j                  fz  z  }|t        |	«      dz   z  }||
|z   dz   z  }|S )	zcMake stream commands for square line end symbol. "lr" denotes left (False) or right point.
        r³  r   r¢  r   r¹  r®  rû  r´  )rø   r«  rÔ  r  r×  r  r  r¥  rØ  r'  r£   rº  s                      r(   rË  zTOOLS._le_squareâa  sG  € ô /4×.CÑ.CÀEÈ2ÈrÐS]Ó.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ”C˜˜1“IÑˆÙˆA��2‘�q�	ŠM Q¨!¨B©$°¨¡]ˆÜ��A‹J˜1˜"˜q˜b ! Q˜Ñ'ˆà�D‰D�2‰IˆØ ¨!¯#©#¨q¯s©sÐ 3Ñ3ˆØ�D‰D�2‰IˆØ
ˆk˜qŸs™s A§C¡C˜jÑ(Ñ(ˆØ�D‰D�2‰IˆØ
ˆk˜qŸs™s A§C¡C˜jÑ(Ñ(ˆØ�D‰D�2‰IˆØ
ˆk˜qŸs™s A§C¡C˜jÑ(Ñ(ˆØ
Œi˜‹l˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r)   c                 ó¶  — d„ }d}| || z
  dz  z   }| || z
  dz  z   }|||z
  dz  z   }|||z
  dz  z   }	|| |z
  |z  z   }
|| |z
  |z  z   }|||z
  |z  z   }|||z
  |z  z   }|||z
  |z  z   }|	||	z
  |z  z   }|	||	z
  |z  z   }|||z
  |z  z   }d|j                   |j                  fz  }| ||
||«      z  }| ||||«      z  }| ||||	«      z  }| ||||«      z  }|S )zQReturn /AP string defining an oval within a 4-polygon provided as points
        c                 ó”   — d}|| j                   | j                  |j                   |j                  |j                   |j                  fz  S )Nz%f %f %f %f %f %f c
r»  )r�  r*  r  r¸  s       r(   Úbezierz"TOOLS._oval_string.<locals>.bezierüa  s7   € Ø'ˆAØ˜Ÿ™˜QŸS™S !§#¡# q§s¡s¨A¯C©C°·±Ð5Ñ5Ð5r)   r–  r#  z%f %f m
r»  )r÷  rø  rk  rl  rÄ  r—  r’  Úmor‘  ÚmuÚol1Úol2Úor1Úor2Úur1Úur2Úul1Úul2r  s                      r(   rµ  zTOOLS._oval_stringøa  sU  € ò	6ð ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆà˜BŸD™D "§$¡$˜<Ñ'ˆØ
‰f�S˜#˜rÓ"Ñ"ˆØ
‰f�S˜#˜rÓ"Ñ"ˆØ
‰f�S˜#˜rÓ"Ñ"ˆØ
‰f�S˜#˜rÓ"Ñ"ˆØˆ	r)   c                 óª  — t         r t        j                  | j                  «      }nd„ } || «      }|syd}d}d}|j	                  «       }t        |«      D ]ë  \  }}|dk(  r2||dz
     dd  }t        ||dz
     «      }d	x||<   x||dz
  <   ||dz
  <   Œ=|d
k(  r t        ||dz
     «      g}d	x||<   ||dz
  <   Œb|dk(  r<||dz
  | D �	cg c]  }	t        |	«      ‘Œ }}	d	x||<   x||dz
  <   x||dz
  <   ||dz
  <   Œ£|dk(  sŒ©||dz
  | D �	cg c]  }	t        |	«      ‘Œ }}	d	x||<   x||dz
  <   x||dz
  <   x||dz
  <   ||dz
  <   Œí |||f}|S c c}	w c c}	w )Nc                 óú  — | j                   }t        |t        j                  «      sJ ‚t        j                  |«      }t        j
                  |«      }	 t        j                  |t        d«      «      }|j                  sHt        j                  |«      }t        j                  |t        d«      t        d«      t        d«      «      }t        j                  |«      }|S # t        $ r t        r
t        «        Y y w xY w)Nr%  r  r  )r³   r<   r�   rÓ   rì   r{  r*  rô   r»   r   r  rð   re   r÷   rt   )rÎ   r  Úthis_annot_objrF  r·  rä  r)  s          r(   ÚTools__parse_daz(TOOLS._parse_da.<locals>.Tools__parse_dab  sÐ   € Ø"ŸZ™Z�
Ü! *¬e¯n©nÔ=Ð=Ð=Ü!&×!4Ñ!4°jÓ!A�Ü×2Ñ2°NÓC�ðÜ×7Ñ7¸ÌÐRVËÓX�BØŸ=š=Ü"'×"3Ñ"3°CÓ"8˜Ü"×0Ñ0°Ü (¨Ó 0Ü (¨Ó 4Ü (¨£ó"˜ô
 #×5Ñ5°bÓ9�Fð �øô !ò Ý+´Ô0@Ùðús   ÁBC ÃC:Ã9C:)r  rZ   r   rm  r·  rl  r–  r   r   rZ   r—  r˜  r   r�  r8  )r  r   ÚTools_parse_dar³   r5   rã  r\  )
rÎ   rÿ   rÒ  rH  rä  rK  r™  rL  rA   r¸  s
             r(   rù   zTOOLS._parse_dab  sÇ  € õ Ü×&Ñ&¨¯
©
Ó3‰Còñ& " %Ó(ˆCáØ ØˆØˆØˆØ�i‰i‹kˆÜ  –~‰GˆAˆtØ�tŠ|Ø˜1˜q™5‘z ! "�~�Ü˜c ! a¡%™jÓ)�Ø/1Ð1��A‘Ð1˜˜Q˜q™S™ C¨¨!©¡HØØ�sŠ{Ü˜c ! a¡%™jÓ)Ð+�Ø$&Ð&��A‘˜˜Q˜q™S™ØØ�tŠ|Ø),¨Q°©U°1©Ó6© A”u˜Q•x¨�Ð6Ø:<Ð<��A‘Ð<˜˜Q˜q™S™Ð< C¨¨!©¡H¨s°1°Q±3©xØØ�s‹{Ø),¨Q°©U°1©Ó6© A”u˜Q•x¨�Ð6ØEGÐG��A‘ÐG˜˜Q˜q™S™ÐG C¨¨!©¡HÐG¨s°1°Q±3©x¸#¸aÀ¹c¹(Øð# &ð& �D˜%Ð ˆØˆ
ùò 7ùò 7s   ÃEÄ	Ec                 óˆ   — | }t        j                  |«      }t        j                  |«      }t        j                  ||«       y r+   )r�   rì   r{  Úpdf_field_reset)rÎ   r  rÑ  rF  s       r(   r¸  zTOOLS._reset_widgetLb  s7   € àˆ
Ü×,Ñ,¨ZÓ8ˆÜ×*Ñ*¨>Ó:ˆÜ×Ñ˜c >Õ2r)   c                 ó    — | j                  d¬«      }|j                  st        t        j                  «       «      S t        t        |«      «      S rº  )rø  r»   r^  r�   r_  r•  )rÅ   r˜  s     r(   r‰  zTOOLS._rotate_matrixSb  s>   € à—.‘.¨%�.Ó0ˆØ×!Ò!Ü$¤U§^¡^Ó%5Ó6Ð6Ü Ô!6°wÓ!?Ó@Ð@r)   c                 ó   — t        | |«       y r+   )re  )rÎ   r)  s     r(   r½  zTOOLS._save_widgetZb  s   € ä  ¨Õ/r)   c                 ó  — t         r!t        j                  | j                  |«       y 	 | j                  }t	        |t
        j                  «      sJ ‚t        j                  t        j                  |«      t        d«      |«       t        j                  t        j                  |«      t        d«      «       t        j                  t        j                  |«      t        d«      «       y # t        $ r t        r
t        «        Y y w xY w)Nr%  r  r®  )r  r   ÚTools_update_dar³   r<   r�   rÓ   rm  rì   rô   r-  re   r÷   rt   )rÎ   r)  r  s      r(   Ú
_update_dazTOOLS._update_da^b  s¿   € ÝÜ×!Ñ! 5§:¡:¨vÕ6ðØ"ŸZ™Z�
Ü! *¬e¯n©nÔ=Ð=Ð=Ü×.Ñ.¬u×/BÑ/BÀ:Ó/NÔPXÐY]ÓP^Ð`fÔgÜ×"Ñ"¤5×#6Ñ#6°zÓ#BÄHÈTÃNÔSÜ×"Ñ"¤5×#6Ñ#6°zÓ#BÄHÈTÃNÔSð øô ò Ý'¬NÔ,<Ùðús   ©B?C) Ã)DÄDc                  ó    — t         dz  a t         S r@  )ÚTOOLS_JM_UNIQUE_IDr,   r)   r(   r  zTOOLS.gen_idmb  s   € ô 	˜aÑÐÜ!Ð!r)   c                  ó,   — t        j                  «        y)z(
        Empty the glyph cache.
        N)r�   Úfz_purge_glyph_cacher,   r)   r(   Úglyph_cache_emptyzTOOLS.glyph_cache_emptysb  s   € ô
 	×"Ñ"Õ$r)   c                 ó   — t        | |«      S )z5
        Metadata of an image binary stream.
        )rC  )r   rA  s     r(   rÊ  zTOOLS.image_profilezb  s   € ô
   ¨
Ó3Ð3r)   Nc                 ó(   — | �t        | «      at        S )z;
        Set MuPDF error display to True or False.
        )r%  rí  ©rv  s    r(   Úmupdf_display_errorszTOOLS.mupdf_display_errors�b  s   € ð ˆ>Ü#'¨£8Ð Ü#Ð#r)   c                 ó(   — | �t        | «      at        S )z>
        Set MuPDF warnings display to True or False.
        )r%  rß  râ  s    r(   Úmupdf_display_warningszTOOLS.mupdf_display_warnings‹b  s   € ð ˆ>Ü%)¨"£XÐ"Ü%Ð%r)   c                  ó"   — t         j                  S )z"Get version of MuPDF binary build.)r�   Ú
FZ_VERSIONr,   r)   r(   rì  zTOOLS.mupdf_version•b  s   € ô ×ÑÐr)   c                 ó„   — t        j                  «        dj                  t        «      }| rt        j                  «        |S )zN
        Get the MuPDF warnings/errors with optional reset (default).
        r$   )r�   Úfz_flush_warningsrÆ  r©  rø   Úreset_mupdf_warnings)r	  rE   s     r(   rK  zTOOLS.mupdf_warningsšb  s3   € ô 	×ÑÔ!Ø�i‰iÔ0Ó1ˆÙÜ×&Ñ&Ô(Øˆ
r)   c                  ó   — t        «       ay r+   )r¡   r©  r,   r)   r(   rê  zTOOLS.reset_mupdf_warnings¦b  s   € ô #'£&Ñr)   c                 ó.   — t        j                  | «       y)z*
        Set anti-aliasing level.
        N)r�   Úfz_set_aa_level)r   s    r(   Úset_aa_levelzTOOLS.set_aa_level«b  s   € ô
 	×Ñ˜eÕ$r)   c                 óR   — | €t         S t        | «      dz   }|dkD  rd}| d d a t         S )Nr   r¦  )rô  r6   )rö  ræ  s     r(   Úset_annot_stemzTOOLS.set_annot_stem²b  s:   € ð ˆ<Ü#Ð#Ü�4‹y˜1‰}ˆØ�"Š9ØˆDØ  ˜9ÐÜÐr)   c                 ó¤  — t        | d¬«      }|j                  syt        j                  ||«      }t        j                  |t        d«      «      }t        j                  |«      rìt        j                  |«      }t        |«      D ]É  }t        j                  ||«      }t        j                  |d«      }	t        j                  |	t        j                  d«      «       t        j                  |	t        j                  d«      «       t        j                  |	t        j                  |«      «       t        j                  |t        d«      |	«       ŒË y)	Nr   r  Fr‹	  r   r  r�	  T)r½   r»   r�   rw  ró   rô   rv  r‰  r8  rŠ  r7  rx  r  r:  )
r  rý   rJ  rF  rH  ÚdfontsrC   rL  ÚdfontÚwarrays
             r(   r|  zTOOLS.set_font_width½b  sþ   € ä˜s¨QÔ/ˆØ�~Š~ØÜ×$Ñ$ S¨$Ó/ˆÜ×#Ñ# D¬(Ð3DÓ*EÓFˆÜ×Ñ˜fÔ%Ü×#Ñ# FÓ+ˆAÜ˜1–X�Ü×+Ñ+¨F°AÓ6�Ü×,Ñ,¨S°!Ó4�Ü×$Ñ$ V¬U×->Ñ->¸qÓ-AÔBÜ×$Ñ$ V¬U×->Ñ->¸uÓ-EÔFÜ×$Ñ$ V¬U×->Ñ->¸uÓ-EÔFÜ×"Ñ" 5¬(°3«-¸Õ@ð ð r)   c                 ó.   — t        j                  | «       y)z6
        Set the graphics minimum line width.
        N)r�   Úfz_set_graphics_min_line_width)Úmin_line_widths    r(   Úset_graphics_min_line_widthz!TOOLS.set_graphics_min_line_widthÏb  s   € ô
 	×,Ñ,¨^Õ<r)   c                 ó¾   — | r6t         j                  rt        j                  «        yt        dt        «       yt         j                  rt        j
                  «        yy)z!Set ICC color handling on or off.zMuPDF built w/o ICC supportN)r�   rf  Úfz_enable_iccrž  r;  Úfz_disable_iccrâ  s    r(   Úset_icczTOOLS.set_iccÖb  sB   € ñ Ü×"Ò"Ü×#Ñ#Õ%äÐ6Ô7GÕHÜ× Ò Ü× Ñ Õ"ð !r)   c                 óN   — | �t        | «      t        _        t        j                  S )z!Set / unset MuPDF device caching.)r%  rp  r†   râ  s    r(   Úset_low_memoryzTOOLS.set_low_memoryáb  s!   € ð ˆ>Ü)-¨b«ŒHÔ&Ü×)Ñ)Ð)r)   c                 ó    — | �=t        | «      t        _        t        r#t	        j
                  t        j                  «       t        j                  S )z Set / unset small glyph heights.)r%  rp  r‡   r  r   Úset_small_glyph_heightsrâ  s    r(   r   zTOOLS.set_small_glyph_heightsèb  s8   € ð ˆ>Ü+/°«8ŒHÔ(ÝÜ×-Ñ-¬h×.JÑ.JÔKÜ×+Ñ+Ð+r)   c                 ó    — | �=t        | «      t        _        t        r#t	        j
                  t        j                  «       t        j                  S )zK
        Set / unset returning fontnames with their subset prefix.
        )r%  rp  rˆ   r  r   Úset_subset_fontnamesrâ  s    r(   r  zTOOLS.set_subset_fontnamesñb  s8   € ð
 ˆ>Ü(,¨R«ŒHÔ%ÝÜ×*Ñ*¬8×+DÑ+DÔEÜ×(Ñ(Ð(r)   c                  óŠ   — t        t        j                  «       t        j                  «       t        j                  «       ¬«      S )z,
        Show anti-aliasing values.
        )rZ  r   Úgraphics_min_line_width)r4   r�   Úfz_graphics_aa_levelÚfz_text_aa_levelÚfz_graphics_min_line_widthr,   r)   r(   Úshow_aa_levelzTOOLS.show_aa_levelüb  s5   € ô
 Ü ×5Ñ5Ó7Ü×-Ñ-Ó/Ü*/×*JÑ*JÓ*Lôð 	r)   c                   ó   — y)z)
        MuPDF store size limit.
        Nr,   r,   r)   r(   Ústore_maxsizezTOOLS.store_maxsizec  ó   € ð r)   c                 ót   — | dk\  rt        j                  «        y| dkD  rt        j                  d| z
  «       yy)z7
        Free 'percent' of current store size.
        ri  r   N)r�   Úfz_empty_storeÚfz_shrink_store)Úpercents    r(   rk  zTOOLS.store_shrinkc  s8   € ð
 �cŠ>Ü× Ñ Ô"ØØ�QŠ;Ü×!Ñ! 3¨¡=Õ1ð r)   c                   ó   — y)z+
        MuPDF current store size.
        Nr,   r,   r)   r(   Ú
store_sizezTOOLS.store_sizec  r  r)   c                 ó    — | �=t        | «      t        _        t        r#t	        j
                  t        j                  «       t        j                  S )zA
        Set ascender / descender corrections on or off.
        )r%  rp  r‰   r  r   Úset_skip_quad_correctionsrâ  s    r(   Úunset_quad_correctionszTOOLS.unset_quad_corrections#c  s8   € ð
 ˆ>Ü-1°"«XŒHÔ*ÝÜ×/Ñ/´×0NÑ0NÔOÜ×-Ñ-Ð-r)   r“  r  r  r+   )1r.   r/   r0   rN  r¡  r&  r(  r€  rÝ  r«  rÐ  rÌ  rÏ  rÍ  rÎ  rÒ  rÑ  rÓ  rË  rµ  rù   r¸  r‰  r½  rÚ  r  rß  rÊ  rã  rå  rì  rK  rê  rî  rð  r|  rø  rü  rþ  r   r  r  r
  rk  r  r  rô  r{  Úfitz_configr,   r)   r(   rø   rø   õ`  s1  „ ñò7ð ñó ðð. ñó ðð òó ðð ñ#3ó ð#3ðJ ñó ðð ñó ðð ñó ðð& ñó ðð* ñó ðð& ñó ðð& ñó ðð& ñó ðð ñó ðð* ñó ðð8 ñ4ó ð4ðl ñ3ó ð3ð ñAó ðAð ñ0ó ð0òð ñ"ó ð"ð
 ñ%ó ð%ð ò4ó ð4ð ò$ó ð$ð ò&ó ð&ð ñ ó ð ð ò	ó ð	ð ñ)ó ð)ð ñ%ó ð%ð ò ó ð ð ñó ðð" ñ=ó ð=ð ò#ó ð#ð ò*ó ð*ð ò,ó ð,ð ò)ó ð)ð ñó ðð ñó ðð ñ2ó ð2ð ñó ðð ò.ó ð.ð Ðá Ó"�Kr)   rø   c                  ó€   — t        j                  «        t        j                  d «       t        j                  d «       y r+   )r�   ré  Úfz_set_warning_callbackÚfz_set_error_callbackr,   r)   r(   Ú_atexitr  Kc  s*   € ä	×ÑÔÜ	×!Ñ! $Ô'Ü	×Ñ Õ%r)   ©Ú	_wxcolorsr¥	  c                  ó   — t         S )z�
    Returns dict mapping from name to (red, green, blue).
        name: lower-case name.
        red, green, blue: float in range 0..1.
    )Úpdfcolorr,   r)   r(   Úcolors_pdf_dictr  ec  s	   € ô €Or)   c                  ó   — t         S )z�
    Returns list of (name, red, green, blue) tuples:
        name: upper-case name.
        red, green, blue: integers in range 0..255.
    r  r,   r)   r(   Úcolors_wx_listr   nc  s
   € ô Ðr)   c                 ó2  — ddl }t        dt        ›�«       t        j                  j                  t        › d�«      }|› d�}|j                  «       dk(  r|› d�}n|}t        d«       t        d	|›�«       t        d
|›�«       t        j                  j                  |«      sJ d|›d�«       ‚t        j                  j                  |«      sJ d|›d�«       ‚|j                  «       dk7  �r)| �r&t        d|›dt        › d�«       t        j                  d«      dd }dj                  |«      }d|› d�}t        d|›d�«       t        j                  |«      D ]º  }t        j                  ||«      }|sŒ|› d|j                  d«      › �}	t        j                  j                  |	«      st        j                  j!                  |	«      r$t        d|	›d�«       t        j"                  |	«       t        d|	› d|› �«       t        j$                  ||	«       Œ¼ ||fS )aù  
    Allows PyMuPDF installation to be used to compile and link programmes that
    use the MuPDF C/C++ API.
    
    Args:
        make_links:
            If true, then on non-windows we also create softlinks to any shared
            libraries that are supplied with a version suffix; this allows them
            to be used in a link command.

            For example we create links such as:

            site-packages/pymupdf/
                libmupdf.so -> libmupdf.so.26.7
                libmupdfcpp.so -> libmupdfcpp.so.26.7
    
    Returns: (mupdf_include, mupdf_lib).
        mupdf_include:
            Path of MuPDF include directory within PyMuPDF install.
        mupdf_lib
            Path of MuPDF library directory within PyMuPDF install.
    r   Nzmupdf_version=z/..z/mupdf-devel/includeÚWindowsz/mupdf-devel/libzWithin installed PyMuPDF:z    mupdf_include=z    mupdf_lib=zNot a directory: mupdf_include=r   zNot a directory: mupdf_lib=zCreating symlinks in mupdf_lib=z for MuPDF-z .so files.r   r   z[.]z^(lib[^.]+[.]so)[.]Ú$zmupdf_lib_regex=r"  zRemoving existing link pfrom=zCreating symlink: z -> )rµ  r&   rì  rb   r	   ÚnormpathÚ__file__Úsystemr_  r5   rÆ  r`  r`  r  ra  Úislinkr  r'  Úsymlink)
Ú
make_linksrµ  r�  Úmupdf_includeÚ	mupdf_libÚregex_suffixÚmupdf_lib_regexÚleafrm  Úpfroms
             r(   Ú_mupdf_develr0  wc  sõ  € ó. äˆ>Œ=Ð
ÐÔä
�‰×ÑœH˜: SÐ)Ó*€Aà�cÐ-Ð.€Mà‡�Ó˜IÒ%à�cÐ)Ð*‰	ð ˆ	ÜÐ
#Ô%ÜÐ
ˆ}ÐÐÔ Üˆ/ˆyˆlÐÔä�7‰7�=‰=˜Ô'ÐNÐ+K¸]Ð<LÈAÐ)NÓNÐ'Ü�7‰7�=‰=˜Ô#ÐFÐ'C¸¸ÀAÐ%FÓFÐ#à‡�Ó˜IÓ%ª*ô 	Ð. I <¨{¼=¸/ÈÐUÔVÜ$×*Ñ*¨3Ó/°°!Ð4ˆØ—z‘z ,Ó/ˆØ/°¨~¸QÐ?ˆÜÐˆÐ  Ð"Ô#Ü—J‘J˜yÖ)ˆDÜ—‘˜¨$Ó/ˆAÚØ$˜+ Q q§w¡w¨q£z lÐ3�ô —7‘7—>‘> %Ô(¬B¯G©G¯N©N¸5Ô,AÜÐ8°%°¸Ð;Ô<Ü—I‘I˜eÔ$ÜÐ(¨¨¨t°D°6Ð:Ô;Ü—
‘
˜4 Õ'ð *ð ˜)Ð#Ð#r)   )rá  )Úfind_tablesc                   ó   — e Zd Zy)ÚFitzDeprecationNr$  r,   r)   r(   r3  r3  Õc  s   „ Ør)   r3  c                  ó  — t        j                  dt        ¬«       dþd„} | t         _        dÿd„} |t        dd«        |t        d«        |t        dd	«        |t        d
«        |t        d«        |t        dd«        |t        d«        |t        dd«        |t        d«        |t        d«        |t        d«        |t        d«        |t        d«        |t        d«        |t        dd«        |t        d«        |t        d«        |t        dd«        |t
        d«        |t
        dd«        |t        d«        |t        d«        |t        dd «        |t        d!«        |t        d"«        |t        d#d$«        |t        d%d&«        |t        d'd(«        |t        d)d*«        |t        d+d,«        |t        d-d.«        |t        d/d0«        |t        d1d2«        |t        d3«        |t        d4«        |t        d5«        |t        d6«        |t        d7«        |t        d8d9«        |t        d:d;«        |t        d<d=«        |t        d>«        |t        d?«        |t        d@dA«        |t        dBdC«        |t        dDdE«        |t        dF«        |t        dG«        |t        dHdI«        |t        dJ«        |t        dKdL«        |t        dMdN«        |t        dO«        |t        dP«        |t        dQ«        |t        dR«        |t        dS«        |t        dT«        |t        dU«        |t        dV«        |t        dW«        |t        dX«        |t        dYdZ«        |t        d[«        |t        d\d]«        |t        d^d_«        |t        d`da«        |t        db«        |t        dc«        |t        dd«        |t        de«        |t        dfdg«        |t        dh«        |t        di«        |t        dj«        |t        dkdl«        |t        dm«        |t        dn«        |t        do«        |t        dp«        |t        dqdr«        |t        ds«        |t        dsdt«        |t        du«        |t        dv«        |t        dw«        |t        dx«        |t        dy«        |t        d«        |t        d«        |t        dz«        |t        d{d|«        |t        d}d~«        |t        dd€«        |t        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�«        |t        dy«        |t        d‘«        |t        d’«        |t        d“«        |t        d”«        |t        d•«        |t        d–«        |t        d—«        |t        d˜«        |t        d™«        |t        dš«        |t        d›«        |t        dœ«        |t        d�«        |t        dž«        |t        dŸ«        |t        d «        |t        d¡«        |t        d¢«        |t        d£«        |t        d¤d¥«        |t        d¦d§«        |t        d¨«        |t        d©«        |t        dª«        |t        d««        |t        d¬«        |t        d­«        |t        d®«        |t        d¯«        |t        d°«        |t        d±«        |t        d²«        |t        d³«        |t        d´«        |t        dµ«        |t        d¶«        |t        d·«        |t        d¸«        |t        d¹«        |t        dº«        |t        d»d¼«        |t        d½«        |t        d¾d¿«        |t        dÀ«        |t        dÁdÂ«        |t        dÃ«        |t        d«        |t        dÄdÅ«        |t        d
«        |t        dÆ«        |t        dÇ«        |t        d«        |t        dd«        |t        dÈ«        |t        dÉ«        |t        dÊ«        |t        dË«        |t        dÌ«        |t        dÍdÎ«        |t        dÏ«        |t        dÐ«        |t        dÑdÒ«        |t        dÓdÔ«        |t        dÕ«        |t        dÖ«        |t        d×«        |t        dØ«        |t        dÙdÚ«        |t        dÛdÜ«        |t        dÝ«        |t        dÞdß«        |t        dà«        |t        dá«        |t        dâ«        |t        dã«        |t        dä«        |t        dådæ«        |t        dç«        |t        dèdé«        |t        dêdë«        |t        dìdí«        |t        dîdï«        |t        dîdð«        |t        dñ«        |t        dòdó«        |t        dô«        |t        dõ«        |t        d«        |t        dö«        |t        d÷dø«        |t        d÷dù«        |t        d÷dú«        |t        dû«        |t        dw«        |t        dü«        |t        ds«        |t        dsdt«        |t        du«        |t        dv«        |t        dw«        |t        dx«        |t        dý«        |t        dã«        |t         d¬«        |t         d­«        |t         d®«        |t         d¯«        |t         d°«        |t         d±«        |t         d²«        |t         d³«        |t         d´«        |t         dµ«        |t         d¶«        |t         dË«        |t         dÌ«       y (   NÚonce©Úcategoryc                 óÄ   — t        j                  | ||||¬«      }|j                  d«      }|dk  rt        |«       y ||d  j	                  «       d   dd  }t        |«       y )N)rm   r3  r   r8  )ÚwarningsÚformatwarningr“   r&   rÈ  )rÕ  Úcatrd   rf   r_   rm   r   r_  s           r(   Úshowthisz!restore_aliases.<locals>.showthisÛc  sa   € Ü×%Ñ% c¨3°¸&ÀtÔLˆØ�I‰IÐ'Ó(ˆØˆqŠ5Ü�ŒIØØ�A�Bˆx×"Ñ"Ó$ QÑ'¨¨Ð+ˆÜˆD�	r)   c                 óx  ‡ ‡‡‡— ‰ €t         j                  t           Š ‰s0dŠd}‰D ]'  }|dk(  rd}Œ|r‰|j                  «       z  Šd}Œ#‰|z  ŠŒ) t	        ‰ ‰«      Št	        ‰ ‰d«      rJ d‰ › d‰› �«       ‚t        ‰«      r-ˆ ˆˆˆfd„}t        ‰ ‰|«       d	‰› d
‰j                  › �|_        yt        ‰ ‰‰«       y)a¹  
        Adds an alias for a class_ or module item clled <class_>.<new>.

        class_:
            Class/module to modify; use None for the current module.
        new_name:
            String name of existing item, e.g. name of method.
        legacy_name:
            Name of legacy object to create in <class_>. If None, we generate
            from <item> by removing underscores and capitalising the next
            letter.
        NrZ   Frí  Tzclass z already has c            	      ó^   •— t        j                  d‰›d‰› d‰› d�t        ¬«        ‰| i |¤ŽS )Nz"legacy_name=z" removed from z after v1.19.0 - use "z".r6  )r9  r  r3  )rä  rå  Úclass_Úlegacy_nameÚnew_nameÚ
new_objects     €€€€r(   Údeprecated_functionz<restore_aliases.<locals>._alias.<locals>.deprecated_functiond  s@   ø€ Ü—‘Ø(˜K˜>¨¸¸Ð@VÐW_ÐV`Ð`bÐcÜ!0õñ " DÐ3¨FÑ3Ð3r)   z;*** Deprecated and removed in version after v1.19.0 - use "z". ***
)r*
  Úmodulesr.   r 	  rØ   r¦  r)  rN  )r?  rA  r@  Úcapitalise_nextr©  rC  rB  s   ```   @r(   Ú_aliaszrestore_aliases.<locals>._aliasæc  sà   û€ ð ˆ>Ü—[‘[¤Ñ*ˆFÙØˆKØ#ˆOÛ�Ø˜’8Ø&*‘OÙ$Ø 1§7¡7£9Ñ,�KØ&+‘Oà 1Ñ$‘Kð ô ˜f hÓ/ˆ
Ü˜F K°Ô6Ðc¸&ÀÀÈÐVaÐUbÐ8cÓcÐ6Ü�ZÔ ÷4ô �V˜[Ð*=Ô>àQÐRZÐQ[Ð[cØ!×)Ñ)Ð*ð,ð  Õ'ô
 �V˜[¨*Õ5r)   r¯  ÚfileGetrÎ  rÞ  ÚsoundGetrâ  rè  rø  ÚgetTextPager  rG  ÚsetBlendModerR  r`  rc  rq  r„  r†  r‰  ÚsetOCr�  rŸ  r  ÚfileUpdrÃ  rÄ  r  ÚconvertToPDFr²  rÍ  rÎ  ÚdeletePageRangerÆ  ÚembeddedFileAddrÈ  ÚembeddedFileCountrË  ÚembeddedFileDelrÍ  ÚembeddedFileGetrÓ  ÚembeddedFileInforÓ  ÚembeddedFileNamesrÖ  ÚembeddedFileUpdræ  rñ  r	  r  r2  rO  ÚgetOCGsrc  ÚgetPageFontListrf  ÚgetPageImageListrs  rw  ry  ÚgetPageXObjectListr~  ÚgetSigFlagsr»  ÚgetToCr�  r¨  r¡  Ú	insertPDFrº  rª  Ú	isFormPDFrÌ  ÚisPDFrÆ  rÉ  rý  rç  r  r'  r
  r§  r>  rÂ  rE  ÚpageCropBoxr[  rg  Ú
PDFCatalogr   Ú
PDFTrailerrg  ÚpreviousLocationr‚  r	  r  r	  r	  ÚsetToCr†	  ri  r	  rý	  ÚisStreamrW  rh  r	  rþ	  r
  ÚmetadataXMLre  ÚgetRectArear4  r5  r�  rœ  r�  r.  r1  Ú	preRotater6  ÚpreScaler8  ÚpreShearr<  ÚpreTranslaterÄ  Ú	getPDFnowrR  Ú	getPDFstrr$  ÚgetTextlengthrÊ  ÚImagePropertiesr4  Ú	PaperRectr3  Ú	PaperSizer6  r	  r  râ  rå  ré  rì  rò  rõ  r÷  rû  rý  rÿ  r  r  r	  r  r  r  r  r  rD  rÈ  rT  ÚCropBoxPositionrW  r	  rg  rY  rt  ry  r{  r~  r€  r‚  r„  r.  rŒ  r�  r“  r˜  r›  rž  r	  r³  ÚgetDisplayListrÂ  r  ÚgetFontListr  rÉ  ÚgetImageListr\  r  ÚgetSVGimager$  r(  r;  r_  rß  r  r0  rO  Ú
_isWrappedr  rš  rX  r›  r{  ÚMediaBoxSizer-  r�  r?  r	  r—  Ú
setCropBoxrÞ  ÚsetMediaBoxr£  rQ  ÚshowPDFpagerX  r¶  rP  r¿  rZ  rG  Ú
copyPixmapr,  r1  ÚinvertIRectrW  ÚpillowWriterZ  Ú
pillowDatar  Ú
writeImageÚwritePNGrˆ  rÅ  ÚsetResolutionrŽ  r�  rŸ  r   ÚgetImageDataÚ
getPNGDataÚ
getPNGdatar¢  r  r6  rŒ	  r+   )r9  Úfilterwarningsr3  ÚshowwarningrÑ   r¬  r°   rÒ  rÀ
  rb  r<  rÁ   rÄ  r…  r  r¾  r}  )r<  rF  s     r(   Úrestore_aliasesr‡  Øc  s‹	  € Ü×Ñ˜V¬oÕ>óð $„HÔó)6ñV ŒE�:¨IÔ6Ù
ŒE�<Ô Ù
ŒE�;¨JÔ7Ù
ŒE�:ÔÙ
ŒE�=Ô!Ù
ŒE�>¨MÔ:Ù
ŒE�;ÔÙ
ŒE�?¨NÔ;Ù
ŒE�<Ô Ù
ŒE�<Ô Ù
ŒE�;ÔÙ
ŒE�:ÔÙ
ŒE�?Ô#Ù
ŒE�:ÔÙ
ŒE�8˜WÔ%Ù
ŒE�=Ô!Ù
ŒE�:ÔÙ
ŒE�=¨IÔ6Ù
ŒK˜Ô&Ù
ŒK˜¨MÔ:Ù
ŒH�oÔ&Ù
ŒHÐ*Ô+Ù
ŒHÐ&¨NÔ;Ù
ŒH�kÔ"Ù
ŒH�mÔ$Ù
ŒH�nÐ,=Ô>Ù
ŒH�mÐ,=Ô>Ù
ŒH�oÐ,?Ô@Ù
ŒH�mÐ,=Ô>Ù
ŒH�mÐ,=Ô>Ù
ŒH�nÐ,>Ô?Ù
ŒH�oÐ,?Ô@Ù
ŒH�mÐ,=Ô>Ù
ŒH�nÔ%Ù
ŒH�oÔ&Ù
ŒH�oÔ&Ù
ŒH�oÔ&Ù
ŒHÐ'Ô(Ù
ŒH�j¨IÔ6Ù
ŒHÐ&Ð,=Ô>Ù
ŒHÐ'Ð,>Ô?Ù
ŒHÐ'Ô(Ù
ŒH�oÔ&Ù
ŒHÐ)Ð,@ÔAÙ
ŒH�n¨MÔ:Ù
ŒH�i Ô*Ù
ŒHÐ(Ô)Ù
ŒH�mÔ$Ù
ŒH�l¨KÔ8Ù
ŒH�jÔ!Ù
ŒH�m¨KÔ8Ù
ŒH�h Ô(Ù
ŒH�oÔ&Ù
ŒH�mÔ$Ù
ŒH�oÔ&Ù
ŒH�kÔ"Ù
ŒH�oÔ&Ù
ŒH�kÔ"Ù
ŒH�lÔ#Ù
ŒH�jÔ!Ù
ŒH�oÔ&Ù
ŒH�lÔ#Ù
ŒH�n¨MÔ:Ù
ŒH�kÔ"Ù
ŒH�m¨LÔ9Ù
ŒH�m¨LÔ9Ù
ŒH�oÐ,>Ô?Ù
ŒH�nÔ%Ù
ŒHÐ'Ô(Ù
ŒH�nÔ%Ù
ŒH�nÔ%Ù
ŒH�i Ô*Ù
ŒHÐ(Ô)Ù
ŒH�oÔ&Ù
ŒH�oÔ&Ù
ŒHÐ&¨JÔ7Ù
ŒH�mÔ$Ù
ŒH�mÔ$Ù
ŒH�mÔ$Ù
ŒHÐ'Ô(Ù
ŒHÐ)¨MÔ:Ù
ŒE�:ÔÙ
ŒE�:¨MÔ:Ù
ŒE�?Ô#Ù
ŒE�>Ô"Ù
ŒE�:ÔÙ
ŒE�=Ô!Ù
ŒD�-Ô Ù
ŒD�,ÔÙ
ŒD�,ÔÙ
ŒFÐ$Ô%Ù
ŒF�K¨KÔ8Ù
ŒF�J¨JÔ7Ù
ŒF�J¨JÔ7Ù
ŒF�N¨NÔ;Ù
ˆD�-¨KÔ8Ù
ˆD�-¨KÔ8Ù
ˆDÐ#Ô$Ù
ˆDÐ#¨OÔ<Ù
ˆD�/Ð,=Ô>Ù
ˆD�,¨KÔ8Ù
ˆD�,¨KÔ8Ù
ˆD�-Ô Ù
ˆD�.Ô!Ù
ŒG�]Ô#Ù
ŒG�YÔÙ
ŒDÐ#Ô$Ù
ŒDÐ$Ô%Ù
ŒDÐ"Ô#Ù
ŒDÐ&Ô'Ù
ŒDÐ'Ô(Ù
ŒD�/Ô"Ù
ŒDÐ"Ô#Ù
ŒDÐ%Ô&Ù
ŒDÐ&Ô'Ù
ŒDÐ"Ô#Ù
ŒDÐ$Ô%Ù
ŒDÐ&Ô'Ù
ŒDÐ#Ô$Ù
ŒDÐ'Ô(Ù
ŒDÐ"Ô#Ù
ŒDÐ'Ô(Ù
ŒD�,ÔÙ
ŒDÐ"Ô#Ù
ŒD�)¨IÔ6Ù
ŒDÐ$Ð,=Ô>Ù
ŒD�.Ô!Ù
ŒD�-Ô Ù
ŒD�/Ô"Ù
ŒDÐ%Ô&Ù
ŒD�-Ô Ù
ŒD�-Ô Ù
ŒD�,ÔÙ
ŒD�+ÔÙ
ŒD�+ÔÙ
ŒD�/Ô"Ù
ŒD�+ÔÙ
ŒD�+ÔÙ
ŒD�-Ô Ù
ŒD�/Ô"Ù
ŒD�-Ô Ù
ŒD�-Ô Ù
ŒD�,ÔÙ
ŒD�.Ô!Ù
ŒD�.Ô!Ù
ŒDÐ#Ð,<Ô=Ù
ŒD�.Ô!Ù
ŒD�+¨MÔ:Ù
ŒDÐ"Ô#Ù
ŒD�,¨NÔ;Ù
ŒD�+ÔÙ
ŒD�,ÔÙ
ŒD�/¨MÔ:Ù
ŒD�*ÔÙ
ŒDÐ#Ô$Ù
ŒDÐ"Ô#Ù
ŒD�-Ô Ù
ŒD�.¨MÔ:Ù
ŒD�-Ô Ù
ŒD�.Ô!Ù
ŒD�-Ô Ù
ŒD�-Ô Ù
ŒDÐ"Ô#Ù
ŒD�,¨LÔ9Ù
ŒD�,ÔÙ
ŒD�,ÔÙ
ŒD�*¨JÔ7Ù
ŒD�/¨NÔ;Ù
ŒD�+ÔÙ
ŒD�/Ô"Ù
ŒDÐ#Ô$Ù
ŒD�,ÔÙ
ŒD�-¨LÔ9Ù
ŒD�.¨MÔ:Ù
ŒD�.Ô!Ù
ŒD�/¨MÔ:Ù
ŒDÐ)Ô*Ù
ŒD�-Ô Ù
ŒD�/Ô"Ù
ŒD�,ÔÙ
ŒF�LÔ!Ù
ŒF�F¨LÔ9Ù
ŒF�LÔ!Ù
ŒF�N¨MÔ:Ù
ŒF�J¨MÔ:Ù
ŒF�M¨LÔ9Ù
ŒF�F¨LÔ9Ù
ŒF�F¨JÔ7Ù
ŒF�KÔ Ù
ŒF�I¨OÔ<Ù
ŒF�LÔ!Ù
ŒF�KÔ Ù
ŒF�JÔÙ
ŒF�KÔ Ù
ŒF�I¨NÔ;Ù
ŒF�I¨LÔ9Ù
ŒF�I¨LÔ9Ù
ŒD�+ÔÙ
ŒD�*ÔÙ
ŒDÐ"Ô#Ù
ŒD�*ÔÙ
ŒD�*¨MÔ:Ù
ŒD�/Ô"Ù
ŒD�.Ô!Ù
ŒD�*ÔÙ
ŒD�-Ô Ù
ŒJ˜Ô'Ù
ŒJ˜Ô%Ù
ŒE�=Ô!Ù
ŒE�=Ô!Ù
ŒE�<Ô Ù
ŒE�;ÔÙ
ŒE�;ÔÙ
ŒE�?Ô#Ù
ŒE�;ÔÙ
ŒE�;ÔÙ
ŒE�=Ô!Ù
ŒE�?Ô#Ù
ŒE�=Ô!Ù
ŒE�=Ô!Ù
ŒEÐ#Õ$r)   zPyMuPDF z : Python bindings for the MuPDF z* library (rebased implementation).
Python z running on rŸ  l        z-bit).
)rZ   r   rM
  r  )r   r   r   r   r   N)Ústrictr+   )r&
  rê  r   )r
  )rÅ   rÁ   rÎ   rÑ   rÀ  Nr  )rY  r   r   )rÅ   rÁ   rH  r  rÀ  N(Á  rN  Úatexitr  r4
  r`   rM  rì
  rb   r]  r·  r`  rš	  r*
  rh  rÓ  r(
  r9  rò  rc  rZ   r   rF   r{   r7   r´  rU   rX   r¡   rK   rN   rL   rP   rR   rV   rY   r&   rp   rt   r¸  r  r¾	  r
  r}   r   r÷   r  rƒ   rp  rŽ   r%  Ú	importlibÚ	machineryÚSourceFileLoaderÚload_moduler¢
  r£
  r�   re   r9   r�   Úreinit_singlethreadedr”   Ú_buildr•   r–   r—   r˜   r™   rš   r›   rœ   rç  rì  Úpymupdf_dater¢   r5   rI  ÚFZ_VERSION_MAJORÚFZ_VERSION_MINORÚFZ_VERSION_PATCHr3
  ÚVersionFitzÚVersionBindÚVersionDater£   Úformat_gr-
  r¶  r  rL  rû  rL  r.
  r4   r/
  r\  r#  r,
  r3   r0
  ÚSequencer$  rÙ   r"  rÁ   rÖ  r¨   r©   rª   r«   r¹   r½   rÆ   rÉ   rÏ   ro  rÑ   r(  rx  r…  rœ  r¬  ÚFzDocument_insert_pdfr®  r°   r8   r;
  r  r­  rÀ
  rb  rA  rr  rØ
  r'  r¿  r<  r|  rÄ  r…  r  r}  rJ  rñ  r¾  rÒ  rD  r.   Ú_selfr 
  r@   r•  Ú_valuer2   r)  Ú
getmembersÚPDF_SIGNATURE_SHOW_LABELSÚPDF_SIGNATURE_SHOW_DNÚPDF_SIGNATURE_SHOW_DATEÚPDF_SIGNATURE_SHOW_TEXT_NAMEÚPDF_SIGNATURE_SHOW_GRAPHIC_NAMEÚPDF_SIGNATURE_SHOW_LOGOÚ PDF_SIGNATURE_DEFAULT_APPEARANCEÚUCDN_EAST_ASIAN_HÚPDF_TX_FIELD_IS_MULTILINEÚUCDN_SCRIPT_ADLAMr1
  ÚAnyTypeÚBase14_fontnamesr[
  r¸  r¿  r-  r8  rç  rè  rô  r©  rí  rß  ÚFZ_RECOMPRESS_NEVERÚFZ_RECOMPRESS_SAMEÚFZ_RECOMPRESS_LOSSLESSr~  ÚFZ_RECOMPRESS_J2Krw  ry  ÚFZ_SUBSAMPLE_BICUBICÚ	PDF_OC_ONÚPDF_OC_TOGGLEÚ
PDF_OC_OFFru	  rN  rT  rS  rd  rQ  rb  rc  ÚLINK_FLAG_R_VALIDÚLINK_FLAG_B_VALIDÚLINK_FLAG_FIT_HÚLINK_FLAG_FIT_VÚLINK_FLAG_R_IS_ZOOMrc  rd  ÚSTAMP_ApprovedÚ
STAMP_AsIsÚSTAMP_ConfidentialÚSTAMP_DepartmentalÚSTAMP_ExperimentalÚSTAMP_ExpiredÚSTAMP_FinalÚSTAMP_ForCommentÚSTAMP_ForPublicReleaseÚSTAMP_NotApprovedÚSTAMP_NotForPublicReleaseÚ
STAMP_SoldÚSTAMP_TopSecretÚSTAMP_Draftr1  r2  r3  r4  ÚTEXT_FONT_SUPERSCRIPTr*  r+  r,  r-  ÚTEXT_OUTPUT_TEXTÚTEXT_OUTPUT_HTMLÚTEXT_OUTPUT_JSONÚTEXT_OUTPUT_XMLÚTEXT_OUTPUT_XHTMLÚFZ_STEXT_PRESERVE_LIGATURESr	  ÚFZ_STEXT_PRESERVE_WHITESPACEr	  ÚFZ_STEXT_PRESERVE_IMAGESrÇ  ÚFZ_STEXT_INHIBIT_SPACESÚTEXT_INHIBIT_SPACESÚFZ_STEXT_DEHYPHENATEr	  ÚFZ_STEXT_PRESERVE_SPANSÚTEXT_PRESERVE_SPANSÚFZ_STEXT_MEDIABOX_CLIPr	  Ú$FZ_STEXT_USE_CID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_CID_FOR_UNKNOWN_UNICODEÚFZ_STEXT_COLLECT_STRUCTUREÚTEXT_COLLECT_STRUCTUREÚFZ_STEXT_ACCURATE_BBOXESÚTEXT_ACCURATE_BBOXESÚFZ_STEXT_COLLECT_VECTORSÚTEXT_COLLECT_VECTORSÚFZ_STEXT_IGNORE_ACTUALTEXTÚTEXT_IGNORE_ACTUALTEXTÚFZ_STEXT_SEGMENTÚTEXT_SEGMENTÚFZ_STEXT_PARAGRAPH_BREAKÚTEXT_PARAGRAPH_BREAKÚFZ_STEXT_TABLE_HUNTÚTEXT_TABLE_HUNTÚFZ_STEXT_COLLECT_STYLESÚTEXT_COLLECT_STYLESÚ$FZ_STEXT_USE_GID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_GID_FOR_UNKNOWN_UNICODErê  ÚTEXT_CLIP_RECTÚFZ_STEXT_ACCURATE_ASCENDERSÚTEXT_ACCURATE_ASCENDERSÚFZ_STEXT_ACCURATE_SIDE_BEARINGSÚTEXT_ACCURATE_SIDE_BEARINGSÚTEXT_STEXT_SEGMENTÚTEXT_CID_FOR_UNKNOWN_UNICODEÚTEXTFLAGS_WORDSÚTEXTFLAGS_BLOCKSÚTEXTFLAGS_DICTÚTEXTFLAGS_RAWDICTÚTEXTFLAGS_SEARCHÚTEXTFLAGS_HTMLÚTEXTFLAGS_XHTMLÚTEXTFLAGS_XMLÚTEXTFLAGS_TEXTÚTEXT_ENCODING_LATINÚTEXT_ENCODING_GREEKÚTEXT_ENCODING_CYRILLICrÜ  rŒ  rˆ  rŠ  ÚPDF_BM_ColorÚPDF_BM_ColorBurnÚPDF_BM_ColorDodgeÚPDF_BM_DarkenÚPDF_BM_DifferenceÚPDF_BM_ExclusionÚPDF_BM_HardLightÚ
PDF_BM_HueÚPDF_BM_LightenÚPDF_BM_LuminosityÚPDF_BM_MultiplyÚPDF_BM_NormalÚPDF_BM_OverlayÚPDF_BM_SaturationÚPDF_BM_ScreenÚPDF_BM_SoftLightrO  rÍ   r   r  rü  r½  r¼  r¾  rö   Údictkey_ascrž  r­  rÀ  rµ  r¡  rš  ró  r²  r  r  rï  Ú
dictkey_dar  r¢  Údictkey_descr¸  Údictkey_effectrÞ  r¡  r
  r�  rŸ  r   Údictkey_glyphr±  r	  r@  rÎ  r£  r¹  r¯  r  r  r¬  rœ  r!  r¤  rî  r¢  r	  r  r  rò   r  rß  rá  r°  r·  rï   r³  r´  rY
  r¼  r½  rG  rX
  r®  r�  r©	  r+  r*  r®  r�  r\  r¹  r»  r¿  r¾  r>  rÆ  r  r&  r
  r   r  rÏ  r/  r·  rM  r£  rï  rñ   rû  rˆ  rr  r�  rP  r  r�  rè  rs  r�  r.  r'  rE  r  r'  r  rX  rá  rª  rR  rC  rj  r  rÙ  rÛ  r
  rÜ  r‡  rˆ  r”  r“  r‡  r6  r7  ræ  rç  rž  r«  r  r±  rµ   r½  r´  r³  r  r@  r  r  r\
  r  rl  rv  r  rÝ  r  r5  r  r  rÃ  r2  r7  r8  rC  r  r{  r‘  r6  r   rŠ  rÅ  r˜  rí  r´  r¶  r‚  rÀ  ry  r¯  rA  rà  râ  r   rç  rê  ré  r�  r
  r-  r‡  r"  r³  r÷  r~  r  r4  r^  r›  r6  rT  r&  r  rí  rŽ  rè	  r•  rû  r,  r:  ra  r
  r!	  rP  rÐ  re  r  r‹  rí   r  rÔ  r  r  r�  r  r  r!  r  r‘  ÚMSG_BAD_DOCUMENTÚMSG_BAD_FILETYPEÚMSG_BAD_LOCATIONrˆ  rá	  rû  r:  r(  r…	  r�  r«
  ru  ÚMSG_COLOR_COUNT_FAILEDr5  rÏ  rx  r~  r·  rë	  r×  r]  rŸ  r;  rž  râ  r]  r5  r(  rð  r%  rÏ  rS  rñ  rð  r±  rI  rô   r,  rž  r�  r)  r   rÎ  rR  rE  rÆ  r$  rÊ  rÔ  r×  rÛ  rÞ  rã  rç  rë  rï  rñ  ró  rö  rù  rþ  rü  r  r  r"  r$  r'  ÚFzPathWalker2r)  r  rO  rS  rV  rY  r\  r^  r`  rd  rf  rk  rm  ro  rr  rq  r	  ÚPdfFilterOptions2rw  Ú	FzDevice2rä  Ú	FzOutput2rì  rR  r§  r.  r¼  r¾  rß  rà  rÅ  rÇ  rÍ  rÊ  r#  rÄ  r¹  rÛ  rÞ  rï  r•
  rî  r÷  r¼  r-  rV  rl  rx  rP  r%  rL  rï  rà  rN  r(  r#  rÈ  r  r  rÑ  r$  rÌ  r4  r3  r6  rA  ru  rB  r  ró  rÉ  rˆ  r…  r  rF  rQ  rU  r¯
  r)  rœ  râ  rø   r  r  r  Úregisterr  r  r   r  r—  r{
  r  r   r0  rá  Úrecover_bbox_quadÚrecover_char_quadÚrecover_line_quadÚrecover_quadÚrecover_span_quadÚtabler1  ÚDeprecationWarningr3  r‡  Ú__version__r+
  rµ  Úmaxsize)rL  s   0r(   Ú<module>r!     s  ðñó Û Û Û Û 	Û Û 	Û Û Û 	Û Û 
Û Û Û Û Û Û å ð  ØØØØØØØØØôsñl  2§:¡:§>¡>Ð2CÓ#DÈcÏjÉjÔY€ñ ˜rŸz™zŸ~™~¨mÓ<ÀcÇjÁjÔQ€
ñ ‹v€ØÐ òò!òð ØØØØØØØØôð> ØØØØØØØØôô<.ô.2ò ñ ˜×*Ñ*¨\Ñ9¹CÀ»FÑBÓCÐ òò$ñ  #Ð$@À!ÓDÐ ñ Ð/°Ó6€÷'ñ 'ñ ‹:€ð �j‰j�n‰n˜mÓ,€ØÐáˆHˆ:�_ [ OÐ3XÐ	YÔZÙˆHˆ:�^ B§J¡J¨|Ñ$<Ð#=Ð	>Ô?Ø�bÒÜãØ×)Ñ)×:Ñ:ØØó÷ ‘+“-ð 	ð ×Ñ×!Ñ!×'Ñ'�EðÝñ ˆuÐ-Ô.Ø#ˆ×#Ñ#Ô%Ø€E×ÑÔ!òõ #Ý &Ý $Ý #Ý #Ý )Ý  Ý &à× Ñ €ð €ñ °-×2EÑ2EÀcÔ2JÓKÑ2J¨Q™g a�jÐ2JÑKÓLÐ à˜u×5Ñ5°u×7MÑ7MÈu×OeÑOeÐfÒfð UØ
CÐ/BÐ.Dð  ESÈ%×J`ÑJ`Ðbg×bxÑbxÐz÷  {Qñ  {Qð  JRð  ITð  	UóUÐfð
 ˜M¨4Ð
0€Ø€Ø€Ø€ð
 !ô 2ð$ €ð0Ø×"Ñ"€Jð
 �?‰?˜:Ñ&€Ø
�/‰/˜$Ñ
€Ø�?‰?˜5Ñ!€Ø	�‰�c˜4�iÑ	 €Ø	�‰˜Ÿ™Ñ	)€Ø	�‰˜Ñ	€à€Ø€à€Ø€
Ø€	Ø€	ò4ô$4ò.0ô0ò*ð  €	÷
W<ñ W<÷t*c'ñ c'÷Lb	ñ b	÷Jñ ÷BOñ O÷.+ñ +ñZ Ø"'×"=Ñ"=Ð÷xRñ xRðte €÷)&ñ )&÷X|"ñ |"÷~ñ ÷tñ t÷noñ oôd:�Vô :ñ. Ó€÷e,ñ e,÷NQñ Qõh
 ÷Oñ Oðf ØØØØØô;÷|X:1ñ X:1÷vtq'ñ q'ðh 
÷xñ x÷veXñ eX÷P\ñ \÷~[ñ [÷|hBñ hB÷VZñ Z÷z
añ a÷Hzñ zð@ Ø�KŠK˜Ñ!€EØØ"Ÿ^š^×1Ò1Ö3‰MˆE�6Ø×ÒÐ 8Õ9Ø×#Ò#Ð$4Ô5àñ ˜E 5¨&Õ1ñ 4ð2 )*Ø×-Ò-ñ).à×)Ò)ñ)*ð ×+Ò+ñ),ð ×0Ò0ñ	)1ð
 ×3Ò3ñ)4ð ×+Ò+ñ),Ð$ð ×"Ò" aÒ'Ð'Ð'ð %¨×(GÒ(GÒGÐGÐGØ × 7Ò 7Ò7Ð7Ð7Øˆu�fà
�*Š*€ðÐ ð" €Û	€AØ!"€O�A—G’G“IÒð 
à%€�Ñ Ø-€�Ñ Ø*€�Ñ Ø1€�Ñ Ø#€�Ñ Ø+€�Ñ Ø(€�Ñ Ø/€�Ñ Ø'€�Ñ Ø&€�Ñ Ø(€�Ñ Ø,€�Ñ Ø"€�Ñ Ø(€�Ñ à
€Ø€ð €Ø€àÐ ØÐ ØÐ ØÐ ð ×/Ò/Ð Ø×-Ò-Ð Ø×5Ò5Ð Ø×-Ò-Ð Ø×+Ò+Ð Ø×+Ò+Ð Ø×1Ò1Ð Ø×1Ò1Ð ð
 €	Ø€Ø€
ð
 €	Ø€	Ø€Ø€Ø€
Ø€
ØÐ ØÐ ØÐ ØÐ Ø€Ø€ØÐ àÐ ØÐ à€Ø€
ØÐ ØÐ ØÐ Ø€Ø€ØÐ ØÐ ØÐ ØÐ Ø€
Ø€Ø€à€ØÐ ØÐ ØÐ àÐ ØÐ ØÐ ØÐ Ø€àÐ ØÐ ØÐ Ø€ØÐ à×;Ò;Ð Ø ×=Ò=Ð Ø×5Ò5Ð Ø×3Ò3Ð Ø×-Ò-Ð Ø×3Ò3Ð Ø×1Ò1Ð Ø#(×#MÒ#MÐ  Ø×9Ò9Ð Ø×5Ò5Ð Ø×5Ò5Ð Ø×9Ò9Ñ Ø×%Ò%�à˜'Ò!Ø ×9Ò9ÑØ×/Ò/�OØ×7Ò7ÑØ',×'QÒ'QÑ$Ø×-Ò-�NØ#×?Ò?ÑØ"'×"GÒ"GÑñ "Ñ Ø?Ñ àØ
!ñ"à
"ñ#ð ñð +ñ	+�ð Ø
!ñ"à
"ñ#ð ñð +ñ	+Ñ ð Ø
!ñ"à
"ñ#ð ñð ñ	ð
 +ñ+�ñ #Ñ àØ
"ñ#à
ñð ñð +ñ	+Ñ ð Ø
!ñ"à
"ñ#ð ñð ñ	ð
 +ñ+�ð Ø
!ñ"à
"ñ#ð ñð ñ	ð
 +ñ+�ð Ø
!ñ"à
"ñ#ð ñð +ñ	+�ð Ø
!ñ"à
"ñ#ð ñð +ñ	+�ð Ñ ØÑ ØÑ àÑ ð 
�Ø
�Ø
�ð �ØÑ Ø Ñ Ø�Ø Ñ ØÑ ØÑ Ø�
Ø�Ø Ñ Ø�Ø�Ø�Ø Ñ Ø�ØÑ ñ DÙYñ lÙeÙ}ÙZÙgñ
�
ô	‘Lõ 	ô	™õ 	ô	‘]õ 	ñ 	‘6Ó�Ù	‘GÓ	�Ù	‘GÓ	�ð
 �Ø�Ø�Ø�Ø�Ø�Ø�	Ø�Ø�Ø!Ñ Ø�Ø%Ñ Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø!Ñ Ø�Ø�Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø�Ø�Ø�ðß:Ô:à/™?×/Ò/Ó1ÑÙ!×&Ò&Ö(‰Ù,7¹©NÑ™QÑ Ò)ð )á™ðA
�ðHA
�óN	ô"ô!3ôH'ôUôôTô<ô
Uô ôTôôô:6ô$ô
ôCôLñI�—‘ñ I Eõ IñI�—‘ñ I Uõ Iôô/ô*2ô %ôPô.3=ôl
ô2ô>ô&&ô<
ôôVôrô84ônô$%ôPô ô.0ôj/ôdô(ô&ô"ôJNô0ôIô ô$ô ô*ô.ô6(ôôô(ôô"ñJ% §¢ñ %Àcõ %ñP7˜%×+Ò+ñ 7°E·L²Lñ 7ÐZ]õ 7ôtô(ô0ôô2/ôô ;ô|4)ônô,ô"^ôB)ôXô ôB
 ôô>ôð. �
ôô)ôXôD$ôNô<KôZ7ô:ô0\ô(\ô|(%ôT
Hô*ô.+ôB>ôô:3ôl? ôD*ô*ô6ô
ô*ô,.ô
ôôô2	ôô*ôZô.(6ôVBôB"ô(ôô	ô"ô*ôZô,6ô.ôHô"ô0FôR&#ôR<ô8#:ôL-ô`3ô<'ôBô*"ôDô8ô ô2ô0 ôF(ôñ &Ñ Ù)�Ù?Ñ Ù(Ñ Ù%�Ù(Ñ Ù0Ñ Ù!Ñ Ù!Ñ Ù'Ñ Ù%Ñ Ù%�Ù�Ù%�Ù#�Ù*�Ù!�Ù�Ù-Ñ Ù/Ñ Ù&�Ù$�Ù�Ù�Ù(�Ù.�Ù,Ñ ð 'Ñ ÙÑ ôö	ðP�&õ Pñ�Dñ  Cñ ¨Eõ ñ�xð  sñ ¨tõ ñ	˜&Ÿ*š*ñ 	¨õ 	ñ	�&—*’*ñ 	¡õ 	ñH�6—:’:õ Hñ
�—’ñ 
¡õ 
ñ
-�—’ñ 
-¡õ 
-ð.�—‘˜d E¨5°$Ð6Ñ7ñ .¸Cñ .ÀCõ .ô$ô.ñ
#˜ñ 
#¨¯©õ 
#ôô2.ôbôð"�3ñ " §¡¨T°5¸$Ð->Ñ ?ñ "Éñ "ÐY\ñ "Ðadõ "ñJ2�3ñ 2˜3õ 2öjCSðN %)¸TÐRVôBØñBØ!ñBØ3:ðBØIOñBàõBòJ'<˜#ñ '<¨ñ '<Àñ '<ÐUXñ '<Ð`eõ '<ñT'�zñ ' dõ 'ô,DôNJô1ôôôôôôXôô$ôN.ôbôUôpô8ôôNôöpˆU× Ò õ pôf!ôH4ônô*ô(ôôôôôôô$ôô
!ô
ñ+�Zñ + Zñ +°Fõ +ö ˜u×6Ò6õ ö. §¢õ .ö>$ 5§?¢?õ $ô0ö$P/ 5§?¢?õ P/öf3%˜eŸošoõ 3%ól3˜ð 3 võ 3ñl˜õ ñ*˜6ñ  cõ ö
ô
ôôô8ôñ�Sõ ö&‘fõ ôóF¨ñ FÀñ FÐYbñ FÐmqõ FðR ñ ¨õ ô1ò(�Yñ (°Cñ (À#ñ (ÈTõ (ôVGð8 # t°¸À$È4÷ Q*ðh  $¨°¸$À4ÈD÷ ôHôfôôôô/ôôôô$ôNô,ô6ô "ô>ô2D2ñN)�#ñ )˜$õ )ñ�#ñ ˜%õ ô(6
ôp2ö/ödLñ@4�cñ 4˜eõ 4ñ�cñ ˜eõ ô$ô)ôXð, Ñ ØÑ ØÑ Ø !Ñ ñ	˜cñ 	 cõ 	ô1ñ Ù“fØÙÙ“fØÙØØ÷ðJ ÙØàØØØØØà÷=÷@|#ô |#ñ@ Ø!€E×!Ò!Ñ"2Ô3Ø€E×Ò¡Ô/ô(&ð €‡‚‘Ô ÷ Ð Ù×Ò�	ñ ‹6�Ü�M�D‰!‰Q‘Ù¡™e¡Q¡s¡U©A©c©EÐ2�H‰T�ZŠZ‹\Òð ôôöI$÷^ Ð ñ
 $×5Ò5Ñ Ù#×5Ò5Ñ Ù#×5Ò5Ñ Ù#×0Ò0�Ù#×5Ò5Ñ ç Ñ Ù€Õ ö	Ñ(õ 	ôU%ðn ð �á
�;�-Ñ?À¸}ñ MØ×"Ò" 1Ñ%Ð& a¨×(8Ò(8¸Ñ(;Ð'<¹LÈÏÊÈÑVXÐ_b×_jÒ_jÑmrÒ_rÑY[ÐxzÐX{ñ  |Dð	Eñ øðU\ ò ÞðüòH LøðN ò 0Ø˜Ñ" ZÑ/ƒJð0ûñL] ò ØÔðúsM   ÇAN É"ANË AN æ7AAN, ÁN	ANÁNANÁNAN)ÁN(AN)ÁN,	AN9ÁN8AN9