§
    �Øj4¢  ã                   óú   — 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mZmZ ddl	m
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d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z e!dk    r e ¦   «          dS dS )!é    N)ÚDictÚListÚSeté   )Úpymupdfc                 ó6   — d| › d�                      dd¦  «        S )Nú éK   ú-)Úcenter)Úxs    ú…/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/pymupdf/__main__.pyÚmycenterr      s    € Ø�ˆHˆHˆH×Ò˜R Ñ%Ô%Ð%ó    c                 ó  — |d         }|d         }|dk    r|                       |¦  «        S d„ }t          j        | |¦  «        }t          j        | |¦  «        }	 |j        |j        k    r%|j        |j        cxk    rdk    rn n|j        dk    s<t          j        d|› d|› d�¦  «         t          j        |¦  «         d} ||¦  «        S t          j        |¦  «        }|                     |j        ¦  «         dx}} ||¦  «        S )zReturn image for a given XREF.r   r   c                 óh   — | j         j        dk    r| S t          j        t          j        | ¦  «        }|S )Né   )Ú
colorspaceÚnr   ÚPixmapÚcsRGB)ÚpixÚtpixs     r   Úgetimagezrecoverpix.<locals>.getimage   s/   € ØŒ>Ô˜qÒ Ð ØˆJÝŒ~�gœm¨SÑ1Ô1ˆØˆr   zWarning: unsupported /SMask z for ú:N)	Úextract_imager   r   ÚirectÚalphar   ÚmessageÚ	set_alphaÚsamples)ÚdocÚitemr   Úsr   Úpix1Úpix2r   s           r   Ú
recoverpixr'      s.  € àˆQŒ€AØˆQŒ€AØˆA‚v€vØ× Ò  Ñ#Ô#Ð#ðð ð õ Œ>˜#˜qÑ!Ô!€DÝŒ>˜#˜qÑ!Ô!€Dðð
 ŒJ˜$œ*Ò$Ð$¨¬°t´zÐ)FÐ)FÒ)FÐ)FÀQÒ)FÐ)FÐ)FÐ)FÐ)FÈ4Ì6ÐUVÊ;È;ÝŒÐC°qÐCÐC¸qÐCÐCÐCÑDÔDÐDÝŒ˜ÑÔÐØˆØˆx˜‰~Œ~Ðå
Œ.˜Ñ
Ô
€CØ‡M‚M�$”,ÑÔÐØÐ€Dˆ4ð ˆ8�C‰=Œ=Ðr   FTc                 ób  — t          j        | ¦  «        }|j        s|du rt          j        d¦  «         d}|j        s|S |rQ|                     |¦  «        }|st          j        d¦  «         |du r!d}|dk    rd}t          j        d|› �¦  «         nt          j        d	|j        › d
�¦  «         |S )z!Open and authenticate a document.Tz$this command supports PDF files onlyéÿÿÿÿzauthentication unsuccessfulÚuseré   Úownerzauthenticated as ú'z' requires a password)	r   ÚopenÚis_pdfÚsysÚexitÚ
needs_passÚauthenticater   Úname)ÚfilenameÚpasswordÚshowÚpdfr"   ÚrcÚ
auth_levels          r   Ú	open_filer;   9   sÕ   € å
Œ,�xÑ
 Ô
 €CØŒ:ð 9˜# ˜+˜+ÝŒÐ7Ñ8Ô8Ð8Ø	€BØŒ>ð Øˆ
Øð 
6Ø×Ò˜hÑ'Ô'ˆØð 	4ÝŒHÐ2Ñ3Ô3Ð3Ø�4ˆ<ˆ<ØˆJØ�AŠvˆvØ$�
ÝŒOÐ<°
Ð<Ð<Ñ=Ô=Ð=øåŒÐ4�S”XÐ4Ð4Ð4Ñ5Ô5Ð5Ø€Jr   c                 óò   — t          d„ |                      ¦   «         D ¦   «         ¦  «        dz   }|                      ¦   «         D ]3\  }}|                     |¦  «        › d|› �}t	          j        |¦  «         Œ4dS )zPrint a Python dictionary.c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Úlen)Ú.0Úks     r   ú
<listcomp>zprint_dict.<locals>.<listcomp>Q   s   € Ð)Ð)Ð)˜�S�‰VŒVÐ)Ð)Ð)r   r   ú: N)ÚmaxÚkeysÚitemsÚrjustr   r   )r#   ÚlrA   ÚvÚmsgs        r   Ú
print_dictrK   O   s€   € åÐ)Ð)˜TŸYšY™[œ[Ð)Ñ)Ô)Ñ*Ô*¨QÑ.€AØ—
’
‘”ð ð ‰ˆˆ1Ø—’˜‘”Ð"Ð"˜qÐ"Ð"ˆÝŒ˜ÑÔÐÐðð r   c                 óð  — t          j        |d›d�¦  «         |                      |¦  «        }t          j        |¦  «         |                      |¦  «        r‹|                     ¦   «         }	 |                     d¦  «        dz   }||         }|                     d¦  «        rd}n# t          $ r d}Y nw xY wt          j        d|› d�¦  «         t          j        d	¦  «         t          j        d
¦  «         dS )z�Print an object given by XREF number.

    Simulate the PDF source in "pretty" format.
    For a stream also print its size.
    Údz 0 objz/Lengthr   z0 RÚunknownz
stream
...z bytesÚ	endstreamÚendobjN)r   r   Úxref_objectÚxref_is_streamÚsplitÚindexÚendswithÚ	Exception)r"   ÚxrefÚxref_strÚtempÚidxÚsizes         r   Ú
print_xrefr\   W   s
  € õ „O�tÐ%Ð%Ð%Ð%Ñ&Ô&Ð&Ø�Š˜tÑ$Ô$€HÝ„O�HÑÔÐØ
×Ò˜$ÑÔð 
%Ø�~Š~ÑÔˆð	Ø—*’*˜YÑ'Ô'¨!Ñ+ˆCØ˜”9ˆDØ�}Š}˜UÑ#Ô#ð !Ø �øøÝð 	ð 	ð 	ØˆDˆDˆDð	øøøåŒÐ2 dÐ2Ð2Ð2Ñ3Ô3Ð3ÝŒ˜Ñ$Ô$Ð$Ý„O�HÑÔÐÐÐs   Á,7B$ Â$B3Â2B3Úpagec           	      óÚ  — t          |dz
  ¦  «        }|                      d|¦  «                             dd¦  «        } |                      d¦  «        }g }t          |¦  «        D �]†\  }}|dz   }|                     ¦   «         r^t          |¦  «        }	d|	cxk    r|k     r&n n#|                     t          |¦  «        ¦  «         nt          j        d|› d|d›�¦  «         Œ}	 |                     d	¦  «        \  }
}t          |
¦  «        }
t          |¦  «        }n+# t          $ r t          j        d|› d
|d›�¦  «         Y nw xY wd|
cxk    r|k     rn nd|cxk    r|k     sn t          j        d|› d
|d›�¦  «         |
|k    r|                     |
¦  «         �Œ7|
|k     r%|t          t          |
|dz   ¦  «        ¦  «        z  }�Œb|t          t          |
|dz
  d¦  «        ¦  «        z  }�Œˆ|S )aK  Transform a page / xref specification into a list of integers.

    Args
    ----
        rlist: (str) the specification
        limit: maximum number, i.e. number of pages, number of objects
        what: a string to be used in error messages
    Returns
    -------
        A list of integers representing the specification.
    r   ÚNr	   Ú ú,zbad z specification at item rM   r   z range specification at item r)   )ÚstrÚreplacerS   Ú	enumerateÚ	isdecimalÚintÚappendr0   r1   rV   ÚlistÚrange)ÚrlistÚlimitÚwhatr_   Ú	rlist_arrÚout_listÚseqr#   r   ÚiÚi1Úi2s               r   Úget_listrs   n   s)  € õ 	ˆE�A‰I‰Œ€AØ�MŠM˜#˜qÑ!Ô!×)Ò)¨#¨rÑ2Ô2€EØ—’˜CÑ Ô €IØ€HÝ˜yÑ)Ô)ð 4ñ 4‰	ˆˆTØ�!‰GˆØ�>Š>ÑÔð 	Ý�D‘	”	ˆAØ�Aˆ~ˆ~Š~ˆ~˜Š~ˆ~ˆ~ˆ~ˆ~Ø—’¥ D¡	¤	Ñ*Ô*Ð*Ð*å”ÐB ÐBÐB¸QÐBÐBÐBÑCÔCÐCØð	FØ—Z’Z ‘_”_‰FˆB�Ý�R‘”ˆBÝ�R‘”ˆBˆBøÝð 	Fð 	Fð 	FÝŒHÐD˜DÐDÐD¸qÐDÐDÐDÑEÔEÐEÐEÐEð	Føøøð �R��’�˜%’���� A¨ O O¢O O¨e¢O O O OÝŒHÐD˜DÐDÐD¸qÐDÐDÐDÑEÔEÐEà�Š8ˆ8Ø�OŠO˜BÑÔÐÙà�Š7ˆ7Ø��U 2 r¨A¡vÑ.Ô.Ñ/Ô/Ñ/ˆH‰Hà��U 2 r¨A¡v¨rÑ2Ô2Ñ3Ô3Ñ3ˆH‰Hà€Os   Ã!6DÄ%E Ä?E c                 óø  — t          | j        | j        d¦  «        }t          j                             | j        ¦  «        dz  }d}|dk    r|dz  }d}t          |d¦  «        }|j        }t          j	        d| j        |j
        |                     ¦   «         dz
  |||d         |d	         fz  ¦  «         |j        }|d
k    r9|                     ¦   «         }d}|dk    rd}t          j	        d|› d|› d�¦  «         |                     ¦   «         }|d
k    rt          j	        d|d›d�¦  «         t          j	        ¦   «          | j        rXt          j	        t!          d¦  «        ¦  «         |                     ¦   «         }t%          ||¦  «         t          j	        ¦   «          | j        rHt          j	        t!          d¦  «        ¦  «         t'          |j        ¦  «         t          j	        ¦   «          | j        rrt          j	        t!          d¦  «        ¦  «         t+          | j        |                     ¦   «         d¬¦  «        }	|	D ]%}t%          ||¦  «         t          j	        ¦   «          Œ&| j        r™t          j	        t!          d¦  «        ¦  «         t+          | j        |j
        dz   ¦  «        }
|
D ]X}|dz
  }|                     |¦  «        }t          j	        d|d›d�¦  «         t%          ||¦  «         t          j	        ¦   «          ŒY| j        rZt          j	        t!          d¦  «        ¦  «         t          j	        |                     ¦   «         ¦  «         t          j	        ¦   «          |                     ¦   «          d S )NTi   ÚKBiè  ÚMBr   z7'%s', pages: %i, objects: %i, %g %s, %s, encryption: %sÚformatÚ
encryptionr   r`   é   znot zdocument contains z root form fields and is ÚsignedrM   ú embedded fileszPDF catalogzPDF metadatazobject informationrW   )rl   zpage informationzPage r   zPDF trailer)r;   Úinputr6   ÚosÚpathÚgetsizeÚroundÚmetadatar   r   Ú
page_countÚxref_lengthÚis_form_pdfÚget_sigflagsÚembfile_countÚcatalogr   Úpdf_catalogr\   rK   Úxrefsrs   ÚpagesÚ	page_xrefÚtrailerÚpdf_trailerÚclose)Úargsr"   r[   ÚflagÚmetar   r$   Úsign_strrW   ÚxreflÚpagelÚpnos               r   r7   r7   �   sU  € Ý
�D”J ¤¨tÑ
4Ô
4€CÝŒ7�?Š?˜4œ:Ñ&Ô&¨Ñ-€DØ€DØˆd‚{€{Ø�‰ˆØˆÝ��q‰>Œ>€DØŒ<€DÝ„OØAàŒJØŒNØ�OŠOÑÔ Ñ!ØØØ�ŒNØ�Ôð
ñ		
ñô ð ð 	Œ€AØˆ1‚u€uØ×ÒÑÔˆØˆØ�Š6ˆ6ØˆHÝŒÐY¨QÐYÐYÈÐYÐYÐYÑZÔZÐZØ×ÒÑÔ€AØˆ1‚u€uÝŒÐA¨QÐAÐAÐAÐAÑBÔBÐBÝ„OÑÔÐØ„|ð ÝŒ� Ñ/Ô/Ñ0Ô0Ð0Ø�ŠÑ Ô ˆÝ�3˜ÑÔÐÝŒÑÔÐØ„}ð ÝŒ� Ñ0Ô0Ñ1Ô1Ð1Ý�3”<Ñ Ô Ð ÝŒÑÔÐØ„zð ÝŒ�Ð!5Ñ6Ô6Ñ7Ô7Ð7Ý˜œ S§_¢_Ñ%6Ô%6¸VÐDÑDÔDˆØð 	ð 	ˆDÝ�s˜DÑ!Ô!Ð!ÝŒOÑÔÐÐØ„zð ÝŒ�Ð!3Ñ4Ô4Ñ5Ô5Ð5Ý˜œ S¤^°aÑ%7Ñ8Ô8ˆØð 	ð 	ˆCØ�a‘ˆAØ—=’= Ñ#Ô#ˆDÝŒOÐ, CÐ,Ð,Ð,Ð,Ñ-Ô-Ð-Ý�s˜DÑ!Ô!Ð!ÝŒOÑÔÐÐØ„|ð ÝŒ� Ñ/Ô/Ñ0Ô0Ð0ÝŒ˜ŸšÑ)Ô)Ñ*Ô*Ð*ÝŒÑÔÐØ‡I‚I�K„K€K€K€Kr   c                 óÄ  — t          | j        | j        d¬¦  «        }| j        }d                     |¦  «        }| j        sT|                     | j        | j        | j	        | j
        | j        | j        | j        || j        | j        | j        ¬¦  «         d S t#          | j        |j        dz   ¦  «        }t'          j        ¦   «         }|D ]}|dz
  }|                     |||¬¦  «         Œ |                     | j        | j        | j	        | j
        | j        | j        | j        || j        | j        | j        ¬¦  «         |                     ¦   «          |                     ¦   «          d S )NT©r8   ©ÚkeepÚnonezrc4-40zrc4-128zaes-128zaes-256)
ÚgarbageÚdeflateÚprettyÚcleanÚasciiÚlinearrx   Úowner_pwÚuser_pwÚpermissionsr   ©Ú	from_pageÚto_page)r;   r|   r6   rx   rT   rŠ   ÚsaveÚoutputr›   Úcompressr�   ÚsanitizerŸ   r    r,   r*   Ú
permissionrs   r‚   r   r.   Ú
insert_pdfrŽ   )r�   r"   rx   ÚencryptrŠ   Úoutdocr•   r   s           r   rž   rž   Ü   sh  € Ý
�D”J ¤°4Ð
8Ñ
8Ô
8€CØ”€JØI×OÒOØñô €Gð Œ:ð Ø�ŠØŒKØ”LØ”MØ”;Ø”-Ø”*Ø”;ØØ”ZØ”IØœð 	ñ 	
ô 	
ð 	
ð 	ˆõ �T”Z ¤°!Ñ!3Ñ4Ô4€EÝŒ\‰^Œ^€FØð 7ð 7ˆØ�!‰GˆØ×Ò˜#¨°AÐÑ6Ô6Ð6Ð6Ø
‡K‚KØŒØ”Ø”ØŒ{ØŒmØŒjØŒ{ØØ”Ø”	Ø”Oð ñ ô ð ð ‡I‚I�K„K€KØ
‡L‚L�N„N€NØ
€Fr   c                 ó~  — | j         }t          j        ¦   «         }|D ]î}|                     d¦  «        }t	          |¦  «        dk    r|d         nd}t          |d         |d¬¦  «        }d                     |dd…         ¦  «        }|r4t          d                     |dd…         ¦  «        |j        dz   ¦  «        }nt          d|j        dz   ¦  «        }|D ] }	| 
                    ||	dz
  |	dz
  ¬¦  «         Œ!|                     ¦   «          Œï|                     | j        d	d¬
¦  «         |                     ¦   «          dS )z&Join pages from several PDF documents.ra   r   Nr   Tr—   r+   r¤   r   )r›   rœ   )r|   r   r.   rS   r?   r;   Újoinrs   r‚   ri   r¬   rŽ   r§   r¨   )
r�   Údoc_listr"   Úsrc_itemÚsrc_listr6   ÚsrcrŠ   Ú	page_listrp   s
             r   Údoc_joinr¶     s:  € àŒz€HÝ
Œ,‰.Œ.€CØð ð ˆØ—>’> #Ñ&Ô&ˆÝ"% h¡-¤-°!Ò"3Ð"3�8˜A”;�;¸ˆÝ˜ œ X°4Ð8Ñ8Ô8ˆØ—’˜ ! " "œÑ&Ô&ˆØð 	5Ý  §¢¨(°1°2°2¬,Ñ!7Ô!7¸¼È!Ñ9KÑLÔLˆIˆIå˜a ¤°!Ñ!3Ñ4Ô4ˆIØð 	@ð 	@ˆAØ�NŠN˜3¨!¨a©%¸¸Q¹ˆNÑ?Ô?Ð?Ð?Ø�	Š	‰Œˆˆà‡H‚HˆTŒ[ !¨T€HÑ2Ô2Ð2Ø‡I‚I�K„K€K€K€Kr   c           	      óX  — t          | j        | j        d¬¦  «        }|                     ¦   «         s+| j        r| j        | j        k    rt          j        d¦  «         t          | j        | j        ¦  «        }| j	        rt          | j	        ¦  «        nt          ¦   «         }t          |                     ¦   «         ¦  «        }|r||k    st          j        d¦  «         n|}|st          j        d¦  «         |t          |                     ¦   «         ¦  «        z  }|r$t          j        dt          |¦  «        › �¦  «         |D ]x}|                     |¦  «        }|                     |¦  «        }|                     |||d         |d         |d	         ¬
¦  «         t!          j        d|› d|j	        › d�¦  «         Œy|                     ¦   «          | j        r-| j        | j        k    r|                     | j        d¬¦  «         n|                     ¦   «          |                     ¦   «          dS )z!Copy embedded files between PDFs.Tr—   úcannot save PDF incrementallyz%not all names are contained in sourceznothing to copyz0following names already exist in receiving PDF: r5   Ú	ufilenameÚdesc©r5   r¹   rº   zcopied entry 'z' from 'r-   ry   ©r›   N)r;   r|   r6   Úcan_save_incrementallyr¨   r0   r1   ÚsourceÚ	pwdsourcer4   ÚsetÚembfile_namesrb   Úembfile_infoÚembfile_getÚembfile_addr   r   rŽ   r§   ÚsaveIncr)	r�   r"   r´   ÚnamesÚ	src_namesÚ	intersectr#   ÚinfoÚbuffs	            r   Úembedded_copyrË      s  € å
�D”J ¤°4Ð
8Ñ
8Ô
8€CØ×%Ò%Ñ'Ô'ð 2ØŒKð2Øœ;¨$¬*Ò4Ð4åŒÐ0Ñ1Ô1Ð1Ý
�D”K ¤Ñ
0Ô
0€CØ"œiÐ2�C�”	‰NŒNˆN­S©U¬U€EÝ�C×%Ò%Ñ'Ô'Ñ(Ô(€IØð Ø˜	Ò!Ð!ÝŒHÐ<Ñ=Ô=Ð=øàˆØð $ÝŒÐ"Ñ#Ô#Ð#Ø�˜C×-Ò-Ñ/Ô/Ñ0Ô0Ñ0€IØð VÝŒÐTÅCÈ	ÁNÄNÐTÐTÑUÔUÐUàð 
Dð 
DˆØ×Ò Ñ%Ô%ˆØ�Š˜tÑ$Ô$ˆØ�ŠØØØ˜*Ô%Ø˜;Ô'Ø�f”ð 	ñ 	
ô 	
ð 	
õ 	ŒÐB¨ÐBÐB°s´xÐBÐBÐBÑCÔCÐCÐCØ‡I‚I�K„K€KØ„{ð �t”{ d¤jÒ0Ð0Ø�Š�” aˆÑ(Ô(Ð(Ð(à�Š‰ŒˆØ‡I‚I�K„K€K€K€Kr   c                 ó:  — t          | j        | j        d¬¦  «        }|                     ¦   «         s+| j        r| j        | j        k    rt          j        d¦  «         	 |                     | j        ¦  «         nG# t          t          j        j        f$ r)}t          j        d| j        ›d|› �¦  «         Y d}~nd}~ww xY w| j        r| j        | j        k    r|                     ¦   «          n|                     | j        d¬¦  «         |                     ¦   «          dS )	zDelete an embedded file entry.Tr—   r¸   úno such embedded file rC   Nr   r¼   )r;   r|   r6   r½   r¨   r0   r1   Úembfile_delr4   Ú
ValueErrorr   ÚmupdfÚFzErrorBaserÅ   r§   rŽ   )r�   r"   Úes      r   Úembedded_delrÓ   H  s  € å
�D”J ¤°4Ð
8Ñ
8Ô
8€CØ×%Ò%Ñ'Ô'ð 2ØŒKð2Øœ;¨$¬*Ò4Ð4åŒÐ0Ñ1Ô1Ð1ð>Ø�Š˜œ	Ñ"Ô"Ð"Ð"øÝ�œÔ1Ð2ð >ð >ð >ÝŒÐ<¨$¬)Ð<Ð<¸Ð<Ð<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð>øøøàŒ;ð )˜$œ+¨¬Ò3Ð3Ø�Š‰Œˆˆà�Š�” aˆÑ(Ô(Ð(Ø‡I‚I�K„K€K€K€Ks   ÁA8 Á8B<ÂB7Â7B<c                 ó   — t          | j        | j        d¬¦  «        }	 |                     | j        ¦  «        }|                     | j        ¦  «        }nG# t          t          j        j	        f$ r)}t          j        d| j        ›d|› �¦  «         Y d}~nd}~ww xY w| j        r| j        n|d         }| j        s¦| j        sŸt          j                             |¦  «        rt          j        d|› �¦  «         t          j                             |¦  «        }|                     t          j        ¦   «         t          j        z   ¦  «        st          j        d|› �¦  «         t+          |d	¦  «        5 }|                     |¦  «         ddd¦  «         n# 1 swxY w Y   t          j        d
| j        › d|› d�¦  «         |                     ¦   «          dS )z&Retrieve contents of an embedded file.Tr—   rÍ   rC   Nr5   z6refusing to overwrite existing file with stored name: z9refusing to write stored name outside current directory: Úwbzsaved entry 'z' as 'r-   )r;   r|   r6   rÃ   r4   rÂ   rÏ   r   rÐ   rÑ   r0   r1   r¨   Úunsafer}   r~   ÚexistsÚabspathÚ
startswithÚgetcwdÚsepr.   Úwriter   rŽ   )r�   r"   ÚstreamrM   rÒ   r5   Úfilename_absr¨   s           r   Úembedded_getrß   [  sû  € å
�D”J ¤°4Ð
8Ñ
8Ô
8€Cð>Ø—’ ¤Ñ+Ô+ˆØ×Ò˜TœYÑ'Ô'ˆˆøÝ�œÔ1Ð2ð >ð >ð >ÝŒÐ<¨$¬)Ð<Ð<¸Ð<Ð<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð>øøøà"œkÐ<ˆtŒ{ˆ{¨q°¬}€HØŒ;ð ]˜tœ{ð ]ÝŒ7�>Š>˜(Ñ#Ô#ð 	ZÝŒHÐXÈhÐXÐXÑYÔYÐYÝ”w—’ xÑ0Ô0ˆØ×&Ò&¥r¤y¡{¤{µR´VÑ';Ñ<Ô<ð 	]ÝŒHÐ[ÐQYÐ[Ð[Ñ\Ô\Ð\Ý	ˆh˜Ñ	Ô	ð  Ø�Š�VÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å„OÐ@ D¤IÐ@Ð@°XÐ@Ð@Ð@ÑAÔAÐAØ‡I‚I�K„K€K€K€Ks)   ž4A ÁBÁ.BÂBÅ-FÆFÆFc                 óÄ  — t          | j        | j        d¬¦  «        }|                     ¦   «         s+| j        �| j        | j        k    rt          j        d¦  «         	 |                     | j        ¦  «         t          j        d| j        › d�¦  «         n# t          $ r Y nw xY wt          j                             | j        ¦  «        r$t          j                             | j        ¦  «        st          j        d| j        › d�¦  «         t          | j        d	¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   | j        }|}| j        s|}n| j        }|                     | j        ||||¬
¦  «         | j        r| j        | j        k    r|                     ¦   «          n|                     | j        d¬¦  «         |                     ¦   «          dS )zInsert a new embedded file.Tr—   Nr¸   zentry 'z' already existszno such file 'r-   Úrbr»   ry   r¼   )r;   r|   r6   r½   r¨   r0   r1   rÎ   r4   rV   r}   r~   r×   Úisfiler.   Úreadrº   rÄ   rÅ   r§   rŽ   ©r�   r"   ÚfrÝ   r5   r¹   rº   s          r   Úembedded_addræ   p  s  € å
�D”J ¤°4Ð
8Ñ
8Ô
8€CØ×%Ò%Ñ'Ô'ð 2ØŒÐ˜tœ{¨d¬jÒ8Ð8åŒÐ0Ñ1Ô1Ð1ðØ�Š˜œ	Ñ"Ô"Ð"ÝŒÐ6˜4œ9Ð6Ð6Ð6Ñ7Ô7Ð7Ð7øÝð ð ð Øˆðøøøõ Œ7�>Š>˜$œ)Ñ$Ô$ð 0­B¬G¯NªN¸4¼9Ñ,EÔ,Eð 0ÝŒÐ. $¤)Ð.Ð.Ð.Ñ/Ô/Ð/Ý	ˆdŒi˜Ñ	Ô	ð  !Ø—’‘”ˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àŒy€HØ€IØŒ9ð ØˆˆàŒyˆØ‡O‚OØŒ	�6 H¸	Èð ñ ô ð ð Œ;ð )˜$œ+¨¬Ò3Ð3Ø�Š‰Œˆˆà�Š�” aˆÑ(Ô(Ð(Ø‡I‚I�K„K€K€K€Ks$   Á7B Â
B"Â!B"ÄE Å EÅEc                 óî  — t          | j        | j        d¬¦  «        }|                     ¦   «         s+| j        �| j        | j        k    rt          j        d¦  «         	 |                     | j        ¦  «         n-# t          $ r  t          j        d| j        › d�¦  «         Y nw xY w| j
        �Št          j
                             | j
        ¦  «        rft          j
                             | j
        ¦  «        rBt          | j
        d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   nd}| j        r| j        }nd}| j        r| j        }n| j        r| j        }nd}| j        r| j        }nd}|                     | j        ||||¬¦  «         | j        �| j        | j        k    r|                     ¦   «          n|                     | j        d	¬
¦  «         |                     ¦   «          dS )z0Update contents or metadata of an embedded file.Tr—   Nr¸   úno such embedded file 'r-   rá   r»   ry   r¼   )r;   r|   r6   r½   r¨   r0   r1   rÂ   r4   rV   r~   r}   r×   râ   r.   rã   r5   r¹   rº   Úembfile_updrÅ   r§   rŽ   rä   s          r   Úembedded_updrê   ’  s:  € å
�D”J ¤°4Ð
8Ñ
8Ô
8€CØ×%Ò%Ñ'Ô'ð 2ØŒÐ˜tœ{¨d¬jÒ8Ð8åŒÐ0Ñ1Ô1Ð1ð9Ø×Ò˜œÑ#Ô#Ð#Ð#øÝð 9ð 9ð 9ÝŒÐ7¨4¬9Ð7Ð7Ð7Ñ8Ô8Ð8Ð8Ð8ð9øøøð 	Œ	ÐÝŒG�NŠN˜4œ9Ñ%Ô%ð 	åŒG�NŠN˜4œ9Ñ%Ô%ð 	õ �$”)˜TÑ"Ô"ð 	 aØ—V’V‘X”XˆFð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øð ˆà„}ð Ø”=ˆˆàˆà„~ð Ø”Nˆ	ˆ	Ø	Œð Ø”Mˆ	ˆ	àˆ	à„yð ØŒyˆˆàˆà‡O‚OØŒ	�6 H¸	Èð ñ ô ð ð „{Ð˜dœk¨T¬ZÒ7Ð7Ø�Š‰Œˆˆà�Š�” aˆÑ(Ô(Ð(Ø‡I‚I�K„K€K€K€Ks$   ÁA8 Á8'B"Â!B"Ä	D*Ä*D.Ä1D.c                 ó
  — t          | j        | j        d¬¦  «        }|                     ¦   «         }| j        �É| j        |vrt          j        d| j        › d�¦  «         n¢t          j        ¦   «          d}t          |¦  «        dk    rd}t          j        d	t          |¦  «        d
›d|› d�¦  «         t          j        ¦   «          t          |                     | j        ¦  «        ¦  «         t          j        ¦   «          dS |st          j        d|j        › d�¦  «         dS t          |¦  «        dk    rd|j        › dt          |¦  «        d
›d�}nd|j        › d�}t          j        |¦  «         t          j        ¦   «          |D ]h}| j        st          j        |¦  «         Œ|                     |¦  «        }t          |                     |¦  «        ¦  «         t          j        ¦   «          Œi|                     ¦   «          dS )zList embedded files.Tr—   Nrè   r-   r`   r   r$   zprinting 1 of rM   z embedded filer   z' contains no embedded filesz' contains the following r{   z&' contains the following embedded file)r;   r|   r6   rÁ   r4   r0   r1   r   r   r?   rK   rÂ   ÚdetailrŽ   )r�   r"   rÆ   ÚpluralrJ   r4   Ú_s          r   Úembedded_listrï   Ä  s   € å
�D”J ¤°4Ð
8Ñ
8Ô
8€CØ×ÒÑÔ€EØ„yÐØŒ9˜EÐ!Ð!ÝŒHÐ;¨t¬yÐ;Ð;Ð;Ñ<Ô<Ð<Ð<åŒOÑÔÐØˆFÝ�5‰zŒz˜AŠ~ˆ~Ø�ÝŒOÐR­S°©Z¬ZÐRÐRÐRÈÐRÐRÐRÑSÔSÐSÝŒOÑÔÐÝ�s×'Ò'¨¬	Ñ2Ô2Ñ3Ô3Ð3ÝŒOÑÔÐØˆFØð ÝŒÐB˜CœHÐBÐBÐBÑCÔCÐCØˆå
ˆ5�z„z�A‚~€~ØR�#”(ÐRÐRµS¸±Z´ZÐRÐRÐRÐRˆˆàB�#”(ÐBÐBÐBˆÝ„O�CÑÔÐÝ„OÑÔÐØð ð ˆØŒ{ð 	ÝŒO˜DÑ!Ô!Ð!ØØ×Ò˜TÑ"Ô"ˆÝ�3×#Ò# DÑ)Ô)Ñ*Ô*Ð*ÝŒÑÔÐÐØ‡I‚I�K„K€K€K€Kr   c           
      ó  — | j         s| j        st          j        d¦  «         t	          | j        | j        d¬¦  «        }| j        rt          | j        |j	        dz   ¦  «        }nt          d|j	        dz   ¦  «        }| j        s*t          j                             t          j        ¦  «        }n]| j        }t          j                             |¦  «        rt          j                             |¦  «        st          j        d|› d�¦  «         t%          ¦   «         }t%          ¦   «         }|D �]f}| j         �r|                     |dz
  ¦  «        }|D ]ñ}|d         }	|	|vrã|                     |	¦  «         |                     |	¦  «        \  }
}}}|dk    s|sŒF|
}|                     d	d
¦  «        }|                     dd
¦  «        }|                     dd
¦  «        }t          j                             ||› d
|	› d|› �¦  «        }t1          |d¦  «        5 }|                     |¦  «         ddd¦  «         n# 1 swxY w Y   d}Œò| j        �rG|                     |dz
  ¦  «        }|D �]+}|d         }	|	|v�r|                     |	¦  «         t7          ||¦  «        }t9          |¦  «        t:          u ru|d         }|d         }t          j                             |d|	d›d|› �¦  «        }t1          |d¦  «        5 }|                     |¦  «         ddd¦  «         n# 1 swxY w Y   ŒÀt          j                             |d|	d›d�¦  «        }|j        j        dk     r|ntA          j!        t@          j"        |¦  «        }| #                    |¦  «         �Œ-�Œh| j         r)tA          j$        dtK          |¦  «        d›d|› d�¦  «         | j        r)tA          j$        dtK          |¦  «        d›d|› d�¦  «         | &                    ¦   «          dS )z)Extract images and / or fonts from a PDF.z"neither fonts nor images requestedTr—   r   zoutput directory z does not existr   zn/aú/r   ú\r	   ú.rÕ   NÚextÚimagezimg-rM   z.pngr   zsaved z fonts to 'r-   z images to ')'ÚfontsÚimagesr0   r1   r;   r|   r6   rŠ   rs   r‚   ri   r¨   r}   r~   rØ   Úcurdirr×   ÚisdirrÀ   Úget_page_fontsÚaddÚextract_fontrc   r°   r.   rÜ   Úget_page_imagesr'   ÚtypeÚdictr   r   r   r   r   r§   r   r?   rŽ   )r�   r"   rŠ   Úout_dirÚ
font_xrefsÚimage_xrefsr•   Úitemlistr#   rW   Úfontnamerô   rî   Úbufferr4   ÚoutnameÚoutfiler   Úimgdatar&   s                       r   Úextract_objectsr	  é  s‹  € àŒ:ð 7˜dœkð 7ÝŒÐ5Ñ6Ô6Ð6Ý
�D”J ¤°4Ð
8Ñ
8Ô
8€Cà„zð -Ý˜œ S¤^°aÑ%7Ñ8Ô8ˆˆå�a˜œ¨!Ñ+Ñ,Ô,ˆàŒ;ð CÝ”'—/’/¥"¤)Ñ,Ô,ˆˆà”+ˆÝ”—’˜wÑ'Ô'ð 	C­B¬G¯MªM¸'Ñ,BÔ,Bð 	CÝŒHÐA¨ÐAÐAÐAÑBÔBÐBå‘”€JÝ‘%”%€Kàð (+ñ (+ˆØŒ:ñ 	"Ø×)Ò)¨#°©'Ñ2Ô2ˆHØ ð "ð "�Ø˜A”w�Ø˜zÐ)Ð)Ø—N’N 4Ñ(Ô(Ð(Ø/2×/?Ò/?ÀÑ/EÔ/EÑ,�H˜c 1 fØ˜e’|�|¨6�|Ø Ø#�DØŸ<š<¨¨SÑ1Ô1�DØŸ<š<¨¨cÑ2Ô2�DØŸ<š<¨¨SÑ1Ô1�DÝ œgŸlšlØ DÐ!7Ð!7¨4Ð!7Ð!7°#Ð!7Ð!7ñô �Gõ ˜g tÑ,Ô,ð .°ØŸš fÑ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .à!�FøØŒ;ñ 	+Ø×*Ò*¨3°©7Ñ3Ô3ˆHØ ð +ñ +�Ø˜A”w�Ø˜{Ð*Ñ*Ø—O’O DÑ)Ô)Ð)Ý$ S¨$Ñ/Ô/�CÝ˜C‘y”y¥DÐ(Ð(Ø! %œj˜Ø"% g¤,˜Ý"$¤'§,¢,¨wÐ8M¸tÐ8MÐ8MÐ8MÈÐ8MÐ8MÑ"NÔ"N˜Ý! '¨4Ñ0Ô0ð 3°GØ#ŸMšM¨'Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3øõ #%¤'§,¢,¨wÐ8K¸tÐ8KÐ8KÐ8KÐ8KÑ"LÔ"L˜ð  #œ~Ô/°!Ò3Ð3ð  ˜Cå!(¤µ´¸sÑ!CÔ!Cð ð
 Ÿ	š	 'Ñ*Ô*Ð*ùùà„zð KÝŒÐI¥ Z¡¤ÐIÐIÐI¸wÐIÐIÐIÑJÔJÐJØ„{ð MÝŒÐK¥ [Ñ!1Ô!1ÐKÐKÐKÀÐKÐKÐKÑLÔLÐLØ‡I‚I�K„K€K€K€Ks$   ÈH1È1H5È8H5Ë3LÌLÌLc                 ó  — |rdnt          dg¦  «        }|                      d|¬¦  «        }|s|s|                     |¦  «         d S |                     |                     dd¬¦  «        ¦  «         |                     |¦  «         d S )Nó   
é   Útext©ÚflagsÚutf8Úsurrogatepass©Úerrors)ÚbytesÚget_textrÜ   Úencode)	r]   ÚtextoutÚGRIDÚfontsizeÚ
noformfeedÚ
skip_emptyr  Úeopr  s	            r   Úpage_simpler  /  s�   € ØÐ
.ˆ%ˆ%¥5¨"¨¡;¤;€CØ�=Š=˜ uˆ=Ñ-Ô-€DØð Øð 	Ø�MŠM˜#ÑÔÐØˆØ‡M‚M�$—+’+˜f¨_�+Ñ=Ô=Ñ>Ô>Ð>Ø‡M‚M�#ÑÔÐØ
€Fr   c                 ó\  — |rdnt          dg¦  «        }|                      d|¬¦  «        }|g k    r|s|                     |¦  «         d S |                     d„ ¬¦  «         |D ]2}	|                     |	d                              dd	¬
¦  «        ¦  «         Œ3|                     |¦  «         d S )Nr  r  Úblocksr  c                 ó"   — | d         | d         fS )Nry   r   r>   )Úbs    r   ú<lambda>z page_blocksort.<locals>.<lambda>B  s   € ˜q œt Q q¤T˜l€ r   ©Úkeyr   r  r  r  )r  r  rÜ   Úsortr  )
r]   r  r  r  r  r  r  r  r  r!  s
             r   Úpage_blocksortr&  ;  s¾   € ØÐ
.ˆ%ˆ%¥5¨"¨¡;¤;€CØ�]Š]˜8¨5ˆ]Ñ1Ô1€FØ�‚|€|Øð 	Ø�MŠM˜#ÑÔÐØˆØ
‡K‚KÐ*Ð*€KÑ+Ô+Ð+Øð Cð CˆØ�Š�a˜”d—k’k &°�kÑAÔAÑBÔBÐBÐBØ‡M‚M�#ÑÔÐØ
€Fr   c                 óš  ‡‡!— |rdnt          dg¦  «        }dt          t                   dt          dt          fd„}dt          t                   dt          fd„}	d	t          t                   d
t
          j        fˆˆ!fd„}
dt          dt          fd„Š!d„ }|                      d|¬¦  «        d	         } |
|| ¦  «        \  }}}}}|g k    r|s| 	                    |¦  «         d S  |	||¦  «        }| 
                    d„ ¬¦  «         i }|D ]E}|\  }}}} |||¦  «        }|                     |g ¦  «        }|                     |¦  «         |||<   ŒFt          |                     ¦   «         ¦  «        }| 
                    ¦   «          ||z
  }i }|D ]l}||         }t          |¦  «        }|dk     rd||<   Œ%d„ |D ¦   «         }| 
                    ¦   «          t!          j        |¦  «        }||k     r|}|d         ||<   Œm||d         |d         z
  z  |t          |¦  «        z  z  dz  }|d         }| 	                    d¦  «         |D ]t}||k     r | 	                    d¦  «         ||z  }||k     °  |||||         ||         ¦  «        } | 	                    | dz                        dd¬¦  «        ¦  «         ||z   }Œu| 	                    |¦  «         d S )Nr  r  ÚvaluesÚvalueÚreturnc                 ór   — t          j        | |¦  «        }|r| |dz
           S t          d|d›d| › �¦  «        ‚)zôFind the right row coordinate.

        Args:
            values: (list) y-coordinates of rows.
            value: (int) lookup for this value (y-origin of char).
        Returns:
            y-ccordinate of appropriate line for value.
        r   z	Line for Úgz not found in )ÚbisectÚbisect_rightÚRuntimeError)r(  r)  rp   s      r   Úfind_line_indexz$page_layout.<locals>.find_line_indexM  sN   € õ Ô ¨Ñ.Ô.ˆØð 	!Ø˜!˜a™%”=Ð ÝÐF uÐFÐFÐF¸fÐFÐFÑGÔGÐGr   Úrowsc                 óÀ   — t          | ¦  «        } |                      ¦   «          | d         g}| dd …         D ]&}||d         |z   k    r|                     |¦  «         Œ'|S )Nr   r   r)   )rh   r%  rg   )r1  r  ÚnrowsÚhs       r   Úcurate_rowsz page_layout.<locals>.curate_rows\  se   € Ý�D‰zŒzˆØ�	Š	‰ŒˆØ�a”�	ˆØ�a�b�b”ð 	 ð 	 ˆAØ�E˜"”I Ñ$Ò$Ð$Ø—’˜Q‘”�øØˆr   r  r]   c           
      ó\  •— t          ¦   «         }|j        j        }|j        j        }|}|}d}g }| D �]s}	|	d         D �]f}
|
d         dk    rŒ|
d         \  }}}}|dk     s||j        j        k    rŒ4||z
  }||k    r|}|
d         D �]}|d         ‰k    rŒ|d         D �]}|d         \  }}}}||z
  }|d	         \  }}t	          t          |¦  «        ¦  «        }|                     |¦  «         |d
         }||k    r|dk    r|}||k     r|}|dk    rs|g k    rm|d         \  }}}}||k    rZ|t          d¦  «        k    r ‰||z   ¦  «        }n.|dk    rt          d¦  «        }n|dk    rt          d¦  «        }n|}||||f|d<   Œè|                     ||||f¦  «         �Œ�Œ�Œh�Œu|||||fS )Nr   ÚlinesÚdir)r   r   ÚbboxÚspansr[   ÚcharsÚoriginÚcr	   r)   é û  rp   éû  rH   éû  )	rÀ   ÚrectÚwidthÚheightrf   r€   rû   Úchrrg   )r  r]   r1  Ú
page_widthÚpage_heightÚ	rowheightÚleftÚrightr;  ÚblockÚlineÚx0Úy0Úx1Úy1rC  Úspanr=  rî   ÚcwidthÚoxÚoyÚchÚold_chÚold_oxÚold_oyÚ
old_cwidthÚligr  Újoinligatures                               €€r   Úprocess_blocksz#page_layout.<locals>.process_blockse  s1  ø€ Ý‰uŒuˆØ”Y”_ˆ
Ø”iÔ&ˆØˆ	ØˆØˆØˆØð )	;ñ )	;ˆEØ˜gœð (;ñ (;�Ø˜”; &Ò(Ð(ØØ!% f¤‘��B˜˜BØ˜’6�6˜R $¤)Ô"2Ò2Ð2Øà˜b™�à˜vÒ%Ð%Ø &�IØ  œMð ;ñ ;�DØ˜F”| xÒ/Ð/Ø Ø! 'œ]ð ;ñ ;˜Ø'(¨¤y™˜˜A˜r 1Ø!# b¡˜Ø!" 8¤™˜˜BÝ ¥ r¡¤™^œ^˜ØŸš ™œ˜Ø˜sœV˜Ø "š9˜9¨¨sª¨Ø#%˜DØ  2š:˜:Ø$&˜Eà! Qš;˜;¨5°Bª;¨;ØAFÀrÄÑ>˜F F¨F°JØ%¨š|˜|Ø#)­S°©[¬[Ò#8Ð#8Ø*6¨,°vÀ±{Ñ*CÔ*C C Cà%'¨3¢Y YÝ*-¨f©+¬+ C CØ%'¨3¢Y YÝ*-¨f©+¬+ C Cà*0 CØ-0°&¸&À*Ð,M  b¡	Ø (ØŸš b¨"¨b°&Ð%9Ñ:Ô:Ð:Ñ:ñ5;ñ;ñ(;ðR �d˜D %¨Ð2Ð2r   rY  c                 ó,  — | dk    rt          d¦  «        S | dk    rt          d¦  «        S | dk    rt          d¦  «        S | dk    rt          d¦  «        S | d	k    rt          d
¦  «        S | dk    rt          d¦  «        S | dk    rt          d¦  «        S | S )zËReturn ligature character for a given pair / triple of characters.

        Args:
            lig: (str) 2/3 characters, e.g. "ff"
        Returns:
            Ligature, e.g. "ff" -> chr(0xFB00)
        Úffr>  Úfiiû  Úfliû  Úffir?  Úfflr@  Úftiû  Ústiû  )rD  )rY  s    r   rZ  z!page_layout.<locals>.joinligature™  sœ   € ð �$Š;ˆ;Ý�v‘;”;ÐØ�DŠ[ˆ[Ý�v‘;”;ÐØ�DŠ[ˆ[Ý�v‘;”;ÐØ�EŠ\ˆ\Ý�v‘;”;ÐØ�EŠ\ˆ\Ý�v‘;”;ÐØ�DŠ[ˆ[Ý�v‘;”;ÐØ�DŠ[ˆ[Ý�v‘;”;ÐØˆ
r   c                 ó®  — d}d}d}d}|t           j        k    rt          d|d›�¦  «        ‚|D ]”}|\  }	}
}}|
| z
  }
|
|z   }||	k    r|
|z
  |dz  k    rŒ&|	dk    r||
z
  |z  dk    rŒ9|	}|
||z   k     r
||	z  }|}|
}ŒN|	dk    rŒUt          |
|z  ¦  «        t	          |¦  «        z
  }|
|k    r|dk    r|d|z  z  }||	z  }|}|
}Œ•|                     ¦   «         S )	a†  Produce the text of one output line.

        Args:
            left: (float) left most coordinate used on page
            slot: (float) avg width of one character in any font in use.
            minslot: (float) min width for the characters in this line.
            chars: (list[tuple]) characters of this line.
        Returns:
            text: (str) text string for this line
        r`   r   z#program error: minslot too small = r,  gš™™™™™É?r	   gš™™™™™é?r   )r   ÚEPSILONr/  rf   r?   Úrstrip)rH  ÚslotÚminslotÚlcharsr  Úold_charÚold_x1rV  r=  ÚcharrR  rî   rQ  rN  Údeltas                  r   Úmake_textlinez"page_layout.<locals>.make_textline³  sF  € ð ˆØˆØˆØˆØ•g”oÒ%Ð%ÝÐPÀWÐPÐPÐPÑQÔQÐQàð  	ð  	ˆAØ"#ÑˆD�"�a˜Ø�d‘ˆBØ�f‘ˆBð ˜4ÒÐ B¨¡K°6¸C±<Ò$?Ð$?Øð �sŠ{ˆ{ ¨¡¨vÑ5¸Ò;Ð;ØàˆHà�F˜WÑ$Ò$Ð$Ø˜‘�Ø�Ø�Øð
 �sŠ{ˆ{ØÝ˜˜T™	‘N”N¥S¨¡Y¤YÑ.ˆEØ�FŠ{ˆ{˜u qšy˜yØ˜˜e™Ñ#�à�D‰LˆDØˆFØˆFˆFØ�{Š{‰}Œ}Ðr   Úrawdictr  c                 ó   — | d         S )Nr   r>   )r=  s    r   r"  zpage_layout.<locals>.<lambda>õ  s
   € ˜Q˜qœT€ r   r#  r+   r   c                 ó   — g | ]
}|d          ‘ŒS )ry   r>   )r@   r=  s     r   rB   zpage_layout.<locals>.<listcomp>  s   € Ð'Ð'Ð'˜1�!�A”$Ð'Ð'Ð'r   r   r)   g333333ó?ú
r  r  r  )r  r   rf   r   r   r   ÚPagerb   r  rÜ   r%  Úgetrg   rh   rE   r?   Ú
statisticsÚmedianr  )"r]   r  r  r  r  r  r  r  r0  r5  r[  rn  r  r;  r1  rH  rI  rG  r7  r=  rî   rS  Úyri  rE   rg  ÚminslotsrA   ÚccountÚwidthsÚ	this_slotÚrowposr  rZ  s"      `                             @r   Úpage_layoutr}  I  sy  øø€ ØÐ
.ˆ%ˆ%¥5¨"¨¡;¤;€CðH¥¥S¤	ð Hµ#ð H½#ð Hð Hð Hð Hð�#�cœ(ð ­Tð ð ð ð ð23�t¥Dœzð 23µ´ð 23ð 23ð 23ð 23ð 23ð 23ð 23ðh�#ð ¥#ð ð ð ð ð43ð 3ð 3ðl �]Š]˜9¨Eˆ]Ñ2Ô2°8Ô<€FØ*8¨.¸ÀÑ*FÔ*FÑ'€Eˆ4��u˜ià�‚{€{Øð 	Ø�MŠM˜#ÑÔÐØˆàˆ;�t˜TÑ"Ô"€Dð 
‡J‚J�>�>€JÑ"Ô"Ð"ð €EØð ð ˆØ‰ˆˆ1ˆb�!ØˆO˜D "Ñ%Ô%ˆØ—’˜1˜bÑ!Ô!ˆØ�Š�aÑÔÐØˆˆa‰ˆõ �—
’
‘”ÑÔ€DØ‡I‚I�K„K€Kð �4‰<€DØ€HØð  ð  ˆØ�q”ˆÝ�V‘”ˆØ�AŠ:ˆ:ØˆH�Q‰KØØ'Ð' Ð'Ñ'Ô'ˆØ�Š‰ŒˆÝÔ% fÑ-Ô-ˆ	Ø�tÒÐØˆDØ˜Q”iˆ�‰ˆð ˜T "œX¨¨Q¬Ñ/Ñ0°IÅÀDÁ	Ä	Ñ4IÑJÈSÑP€IØ�!ŒW€FØ‡M‚M�%ÑÔÐØð ð ˆØ�qŠjˆjØ�MŠM˜%Ñ Ô Ð Ø�iÑˆFð �qŠjˆjð ˆ}˜T 4¨°!¬°e¸A´hÑ?Ô?ˆØ�Š�t˜d‘{×*Ò*¨6¸/Ð*ÑJÔJÑKÔKÐKØ�Y‘ˆˆà‡M‚M�#ÑÔÐÐÐr   c                 ó˜  — t          | j        | j        d¬¦  «        }t          | j        |j        dz   ¦  «        }| j        }|€,t          j         	                    |j
        ¦  «        \  }}|dz   }t          |d¦  «        5 }t          j        t          j        z  }| j        r|t          j        z  }| j        r|t          j        z  }| j        r|t          j        z  }t&          t(          t*          dœ}|D ]>}	||	dz
           }
 || j                 |
|| j        | j        | j        | j        |¬¦  «         Œ?	 d d d ¦  «         d S # 1 swxY w Y   d S )NFr—   r   z.txtrÕ   ©Úsimpler  Úlayoutr  )r;   r|   r6   rs   rŠ   r‚   r¨   r}   r~   Úsplitextr4   r.   r   ÚTEXT_PRESERVE_LIGATURESÚTEXT_PRESERVE_WHITESPACEÚconvert_whiteÚnoligaturesÚextra_spacesÚTEXT_INHIBIT_SPACESr  r&  r}  ÚmodeÚgridr  r  r  )r�   r"   r”   r¨   r5   rî   r  r  Úfuncr•   r]   s              r   ÚgettextrŒ  *  s¥  € Ý
�D”J ¤°5Ð
9Ñ
9Ô
9€CÝ�T”Z ¤°!Ñ!3Ñ4Ô4€EØŒ[€FØ€~Ý”g×&Ò& s¤xÑ0Ô0‰ˆ�!Ø˜FÑ"ˆÝ	ˆf�dÑ	Ô	ð ˜wÝÔ/µ'Ô2RÑRˆØÔð 	6Ø•WÔ5Ñ5ˆEØÔð 	5Ø•WÔ4Ñ4ˆEØÔð 	1Ø•WÔ0Ñ0ˆEå!Ý$Ý!ð
ð 
ˆð
 ð 
	ð 
	ˆCØ�s˜Q‘w”<ˆDØˆD�”ŒOØØØ”	Ø”Ø”Ø”Øðñ ô ð ð ð
	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á?B2D?Ä?EÅEc                 óV   — t          j        d¦  «         t          j        d¦  «         d S )NzThis is from PyMuPDF message().zThis is from PyMuPDF log().)r   r   Úlog)r�   s    r   Ú	_internalr�  K  s*   € Ý„OÐ5Ñ6Ô6Ð6Ý„KÐ-Ñ.Ô.Ð.Ð.Ð.r   c                  ó   — t          j        dt          d¦  «        ¬¦  «        } |                      dd¬¦  «        }|                     dt          d¦  «        ¬	¦  «        }|                     d
t          d¬¦  «         |                     dd¬¦  «         |                     ddd¬¦  «         |                     ddd¬¦  «         |                     ddd¬¦  «         |                     dt          d¬¦  «         |                     dt          d¬¦  «         |                     t          ¬¦  «         |                     dt          d¦  «        ¬	¦  «        }|                     d
t          d¬¦  «         |                     dt          d ¬¦  «         |                     dd¬¦  «         |                     d!d"d#d$¬%¦  «         |                     d&t          d'¬¦  «         |                     d(t          d)¬¦  «         |                     d*t          d+t          d,¦  «        d-¬.¦  «         |                     d/dd0d1¬2¦  «         |                     d3dd0d4¬2¦  «         |                     d5dd0d6¬2¦  «         |                     d7t          d8d9¬:¦  «         |                     d;dd0d<¬2¦  «         |                     d=dd0d>¬2¦  «         |                     dd?¬¦  «         |                     t          ¬¦  «         |                     d@t          dA¦  «        dB¬C¦  «        }|                     d
dDdE¬F¦  «         |                     dGdHdI¬J¦  «         |                     t          ¬¦  «         |                     dKt          dL¦  «        ¬	¦  «        }|                     d
t          d¬¦  «         |                     dMddN¬¦  «         |                     dOddP¬¦  «         |                     dGdQ¬¦  «         |                     dd¬¦  «         |                     dt          dR¬¦  «         |                     t          ¬¦  «         |                     dSt          dT¦  «        ¬	¦  «        }|                     d
d¬¦  «         |                     dUdV¬¦  «         |                     dWddX¬¦  «         |                     dd¬¦  «         |                     t          ¬¦  «         |                     dYt          dZ¦  «        ¬	¦  «        }|                     d
d¬¦  «         |                     dd¬¦  «         |                     dGd[¬¦  «         |                     dUdHd\¬J¦  «         |                     d]dHd^¬J¦  «         |                     d_d`¬¦  «         |                     t          ¬¦  «         |                     dat          db¦  «        ¬	¦  «        }|                     d
d¬¦  «         |                     dd¬¦  «         |                     dGd[¬¦  «         |                     dUdHdc¬J¦  «         |                     t           ¬¦  «         |                     ddt          de¦  «        df¬C¦  «        }|                     d
d¬¦  «         |                     dUdHdg¬J¦  «         |                     dd¬¦  «         |                     dGdh¬¦  «         |                     d]di¬¦  «         |                     djdk¬¦  «         |                     dldm¬¦  «         |                     d_dn¬¦  «         |                     t"          ¬¦  «         |                     dot          dp¦  «        ¬	¦  «        }	|	                     d
t          d¬¦  «         |	                     dUdHdg¬J¦  «         |	                     dd¬¦  «         |	                     dqd0ddr¬s¦  «         |	                     dGdt¬¦  «         |	                     t$          ¬¦  «         |                     dut          dv¦  «        ¬	¦  «        }
|
                     d
t          dw¬¦  «         |
                     ddx¬¦  «         |
                     dGdy¬¦  «         |
                     dzdHd{¬J¦  «         |
                     d|d}¬¦  «         |
                     dUdDd~¬F¦  «         |
                     t&          ¬¦  «         |                     dt          d€¦  «        ¬	¦  «        }|                     d
t          d�¬¦  «         |                     dd‚¬¦  «         |                     dƒt          d„d…d†¬.¦  «         |                     dt          d‡dˆ¬‰¦  «         |                     dŠdd‹d0¬Œ¦  «         |                     d�ddŽd0¬Œ¦  «         |                     d�dd�d0¬Œ¦  «         |                     d‘dd’d0¬Œ¦  «         |                     d“dd”d0¬Œ¦  «         |                     dGd•¬¦  «         |                     d–t(          d—d˜¬‰¦  «         |                     d™t(          dšd›¬‰¦  «         |                     t*          ¬¦  «         |                     dœt          d�¦  «        ¬	¦  «        }|                     t,          ¬¦  «         |                      ¦   «         }t1          |dž¦  «        s|                      ¦   «          dŸS |                     |¦  «         dŸS ) zDefine command configurations.r   zBasic PyMuPDF Functions)ÚprogÚdescriptionÚSubcommandsz/Enter 'command -h' for subcommand specific help)ÚtitleÚhelpr7   zdisplay PDF information)r’  r|   zPDF filename)rþ   r•  z	-passwordr6   )r•  z-catalogÚ
store_truezshow PDF catalog)Úactionr•  z-trailerzshow PDF trailerz	-metadatazshow PDF metadataz-xrefsz&show selected objects, format: 1,5-7,Nz-pagesz'show selected pages, format: 1,5-7,50-N)r‹  rž   z.optimize PDF, or create sub-PDF if pages givenr¨   zoutput PDF filenamez-encryptionzencryption methodr˜   rš   )r•  ÚchoicesÚdefaultz-ownerzowner passwordz-userzuser passwordz-garbagezgarbage collection levelé   r   )rþ   r•  r˜  r™  z	-compressFzcompress (deflate) output)r—  r™  r•  z-asciizASCII encode binary dataz-linearzformat for fast web displayz-permissionr)   zinteger with permission levels)rþ   r™  r•  z	-sanitizezsanitize / clean contentsz-prettyzprettify PDF structurez/output selected pages pages, format: 1,5-7,50-Nr°   zjoin PDF documentsz3specify each input as 'filename[,password[,pages]]')r’  ÚepilogÚ*zinput filenames)Únargsr•  z-outputTzoutput filename)Úrequiredr•  Úextractz extract images and fonts to diskz-imageszextract imagesz-fontszextract fontsz-folder to receive output, defaults to currentz-consider these pages only, format: 1,5-7,50-Nz
embed-infozlist embedded filesz-namezif given, report only this onez-detailzdetail informationz	embed-addzadd embedded filez-output PDF filename, incremental save if nonezname of new entryz-pathzpath to data for new entryz-desczdescription of new entryz	embed-delzdelete embedded filezname of entry to deletez	embed-updzupdate embedded filez*except '-name' all parameters are optionalzname of entryz-Output PDF filename, incremental save if nonezpath to new data for entryz	-filenameznew filename to store in entryz
-ufilenamez&new unicode filename to store in entryz!new description to store in entryzembed-extractzextract embedded file to diskz-unsafezPallow write to stored name even if an existing file or outside current directory)r™  r—  r•  z'output filename, default is stored namez
embed-copyz copy embedded files between PDFszPDF to receive embedded fileszpassword of inputz2output PDF, incremental save to 'input' if omittedz-sourcezcopy embedded files from herez
-pwdsourcezpassword of 'source' PDFzrestrict copy to these entriesrŒ  z(extract text in various formatting modeszinput document filenamezpassword for input documentz-modez-mode: simple, block sort, or layout (default)r  r�  z select pages, format: 1,5-7,50-Nz1-N)rþ   r•  r™  z-noligaturesz*expand ligature characters (default False))r—  r•  r™  z-convert-whitez6convert whitespace characters to white (default False)z-extra-spacesz%fill gaps with spaces (default False)z-noformfeedz-write linefeeds, no formfeeds (default False)z-skip-emptyz+suppress pages with no text (default False)z3store text in this file (default inputfilename.txt)z-gridz+merge lines if closer than this (default 2)r+   z	-fontsizez4only include text with a larger fontsize (default 3)ry   Úinternalzinternal testingr‹  N)ÚargparseÚArgumentParserr   Úadd_subparsersÚ
add_parserÚadd_argumentrb   Úset_defaultsr7   rf   ri   rž   r¶   r	  rï   ræ   rÓ   rê   rß   rË   ÚfloatrŒ  r�  Ú
parse_argsÚhasattrÚ
print_helpr‹  )ÚparserÚsubpsÚps_showÚps_cleanÚps_joinÚ
ps_extractÚps_embed_addÚps_embed_delÚps_embed_updÚps_embed_extractÚps_embed_copyÚ
ps_gettextÚps_internalr�   s                 r   Úmainr¸  P  s3  € åÔ$ØÝÐ6Ñ7Ô7ðñ ô €Fð ×!Ò!ØÐ"Sð "ñ ô €Eð ×Ò˜vµ8Ð<UÑ3VÔ3VÐÑWÔW€GØ×Ò˜¥s°ÐÑ@Ô@Ð@Ø×Ò˜¨:ÐÑ6Ô6Ð6Ø×Ò˜¨LÐ?QÐÑRÔRÐRØ×Ò˜¨LÐ?QÐÑRÔRÐRØ×Ò˜¨\Ð@SÐÑTÔTÐTØ×ÒØ•sÐ!Ið ñ ô ð ð ×ÒØ•sÐ!Jð ñ ô ð ð ×Ò�dÐÑ#Ô#Ð#ð
 ×ÒØ�XÐ&VÑWÔWð  ñ ô €Hð ×Ò˜'­°.ÐÑAÔAÐAØ×Ò˜(­Ð3HÐÑIÔIÐIØ×Ò˜+¨JÐÑ7Ô7Ð7à×ÒØØ ØKØð	 ñ ô ð ð ×Ò˜(­Ð3CÐÑDÔDÐDØ×Ò˜'­°/ÐÑBÔBÐBà×ÒØÝØ'Ý�a‘”Øð ñ ô ð ð ×ÒØØØØ(ð	 ñ ô ð ð ×ÒØ˜¨uÐ;Uð ñ ô ð ð ×ÒØØØØ*ð	 ñ ô ð ð ×ÒØ�C¨Ð2Rð ñ ô ð ð ×ÒØØØØ(ð	 ñ ô ð ð ×ÒØ˜,°Ð<Tð ñ ô ð ð ×ÒØÐHð ñ ô ð ð ×Ò�uÐÑ%Ô%Ð%ð
 ×ÒØÝÐ1Ñ2Ô2ØDð ñ ô €Gð
 ×Ò˜¨Ð2CÐÑDÔDÐDØ×Ò˜¨TÐ8IÐÑJÔJÐJØ×Ò�hÐÑ'Ô'Ð'ð
 ×!Ò!Ø�xÐ(JÑKÔKð "ñ ô €Jð ×Ò˜G­#°NÐÑCÔCÐCØ×Ò˜I¨lÐAQÐÑRÔRÐRØ×Ò˜H¨\ÀÐÑPÔPÐPØ×ÒØÐGð ñ ô ð ð ×Ò˜K¨jÐÑ9Ô9Ð9Ø×ÒØ•sÐ!Pð ñ ô ð ð ×Ò¥ÐÑ1Ô1Ð1ð
 ×ÒØ¥(Ð+@Ñ"AÔ"Að ñ ô €Gð ×Ò˜ ~ÐÑ6Ô6Ð6Ø×Ò˜Ð'GÐÑHÔHÐHØ×Ò˜¨<Ð>RÐÑSÔSÐSØ×Ò˜¨:ÐÑ6Ô6Ð6Ø×Ò�mÐÑ,Ô,Ð,ð
 ×#Ò#Ø¥Ð*=Ñ!>Ô!>ð $ñ ô €Lð ×Ò˜g¨NÐÑ;Ô;Ð;Ø×Ò˜k°
ÐÑ;Ô;Ð;Ø×ÒØÐGð ñ ô ð ð ×Ò˜g°Ð;NÐÑOÔOÐOØ×Ò˜g°Ð;WÐÑXÔXÐXØ×Ò˜gÐ,FÐÑGÔGÐGØ×Ò¥<ÐÑ0Ô0Ð0ð
 ×#Ò#Ø¥Ð*@Ñ!AÔ!Að $ñ ô €Lð ×Ò˜g¨NÐÑ;Ô;Ð;Ø×Ò˜k°
ÐÑ;Ô;Ð;Ø×ÒØÐGð ñ ô ð ð ×Ò˜g°Ð;TÐÑUÔUÐUØ×Ò¥<ÐÑ0Ô0Ð0ð
 ×#Ò#ØÝÐ3Ñ4Ô4Ø;ð $ñ ô €Lð
 ×Ò˜g¨NÐÑ;Ô;Ð;Ø×Ò˜g°¸?ÐÑKÔKÐKØ×Ò˜k°
ÐÑ;Ô;Ð;Ø×ÒØÐGð ñ ô ð ð ×Ò˜gÐ,HÐÑIÔIÐIØ×Ò˜kÐ0PÐÑQÔQÐQØ×ÒØÐCð ñ ô ð ð ×Ò˜gÐ,OÐÑPÔPÐPØ×Ò¥<ÐÑ0Ô0Ð0ð
 ×'Ò'Ø¥XÐ.MÑ%NÔ%Nð (ñ ô Ðð ×!Ò! 'µ¸.Ð!ÑIÔIÐIØ×!Ò! '°D¸Ð!ÑOÔOÐOØ×!Ò! +°JÐ!Ñ?Ô?Ð?Ø×!Ò! )°UÀ<Ø_ð "ñ ô ð ð ×!Ò!ØÐAð "ñ ô ð ð ×!Ò!¥|Ð!Ñ4Ô4Ð4ð
 ×$Ò$Ø¥(Ð+MÑ"NÔ"Nð %ñ ô €Mð ×Ò˜w­SÐ7VÐÑWÔWÐWØ×Ò˜{Ð1DÐÑEÔEÐEØ×ÒØÐLð ñ ô ð ð ×ÒØ˜DÐ'Fð ñ ô ð ð ×Ò˜|Ð2LÐÑMÔMÐMØ×ÒØ�sÐ!Að ñ ô ð ð ×Ò¥MÐÑ2Ô2Ð2ð
 ×!Ò!Ø�xÐ(RÑSÔSð "ñ ô €Jð ×Ò˜G­#Ð4MÐÑNÔNÐNØ×Ò˜KÐ.KÐÑLÔLÐLØ×ÒØÝØ<Ø.Øð ñ ô ð ð ×ÒØÝØ/Øð	 ñ ô ð ð ×ÒØØØ9Øð	 ñ ô ð ð ×ÒØØØEØð	 ñ ô ð ð ×ÒØØØ4Øð	 ñ ô ð ð ×ÒØØØ<Øð	 ñ ô ð ð ×ÒØØØ:Øð	 ñ ô ð ð ×ÒØØBð ñ ô ð ð ×ÒØÝØ:Øð	 ñ ô ð ð ×ÒØÝØCØð	 ñ ô ð ð ×Ò¥ÐÑ)Ô)Ð)ð
 ×"Ò"Ø¥Ð);Ñ <Ô <ð #ñ ô €Kð ×Ò¥)ÐÑ,Ô,Ð,ð
 ×ÒÑÔ€DÝ�4˜Ñ Ô ð Ø×ÒÑÔÐÐÐà�	Š	�$‰Œˆˆˆr   Ú__main__)FT)r]   )"r¡  r-  r}   r0   ru  Útypingr   r   r   r`   r   r   r'   r;   rK   r\   rs   r7   rž   r¶   rË   rÓ   rß   ræ   rê   rï   r	  r  r&  r}  rŒ  r�  r¸  Ú__name__r>   r   r   ú<module>r¼     sô  ðð €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ð&ð &ð &ð!ð !ð !ðHð ð ð ð,ð ð ðð ð ð.,ð ,ð ,ð ,ð^<ð <ð <ð~,ð ,ð ,ð^ð ð ð*%ð %ð %ðPð ð ð&ð ð ð*ð ð ðD/ð /ð /ðd"ð "ð "ðJCð Cð CðL	ð 	ð 	ðð ð ð^ð ^ð ^ðBð ð ðB/ð /ð /ð
rð rð rðj	 ˆzÒÐØ€D�F„F€F€F€Fð Ðr   