Ë
    *Rði7  ã                   ó6  — 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lmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! ddl"m#Z# dd	l$m%Z%m&Z& dd
l'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl6m8Z9 ddl6m:Z: ddl6m;Z< ddl6m=Z> ddl6m?Z?m@Z@mAZAmBZBmCZC ddl6mDZE ddl6mFZG ddl6mHZI ddl6mJZK ddl6mLZLmMZM ddlNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd ddlemfZfmgZg ddlmhZhmiZimjZjmkZkmlZlmmZmmnZn  ejÞ                  ep«      Zq e@d «      Zr eMd«      Zs G d„ d«      Ztde eeuef   euevee   f   de^fd „Zwd!e deZf   d"eud#e eexexexf   eudf   d$eyd%eydebfd&„Zz G d'„ d(et«      Z{y))é    N)Úmd5)ÚBytesIOÚFileIOÚIOBase)ÚPath)ÚTracebackType)ÚIOÚAnyÚCallableÚDequeÚDictÚIterableÚListÚOptionalÚPatternÚTupleÚTypeÚUnionÚcasté   )Ú
Encryption)Ú
PageObjectÚ_VirtualList)Ú	PdfReader)Ú_alg33Ú_alg34Ú_alg35)ÚStrByteTypeÚ
StreamTypeÚ_get_max_pdf_version_headerÚb_Údeprecate_with_replacementÚdeprecation_bookmarkÚdeprecation_with_replacementÚlogger_warning)ÚAnnotationDictionaryAttributes)ÚCatalogAttributes)ÚCatalogDictionary)ÚCore)ÚEncryptionDictAttributes)ÚFieldDictionaryAttributesÚ	FieldFlagÚ"FileSpecificationDictionaryEntriesÚGoToActionArgumentsÚInteractiveFormDictEntries)ÚPageAttributes)ÚPagesAttributes)ÚStreamAttributes)ÚTrailerKeys)ÚTypFitArgumentsÚUserAccessPermissions)ÚPAGE_FITÚAnnotationBuilderÚArrayObjectÚBooleanObjectÚByteStringObjectÚContentStreamÚDecodedStreamObjectÚDestinationÚDictionaryObjectÚFitÚFloatObjectÚIndirectObjectÚ
NameObjectÚ
NullObjectÚNumberObjectÚ	PdfObjectÚRectangleObjectÚStreamObjectÚTextStringObjectÚ
TreeObjectÚcreate_string_objectÚ
hex_to_rgb)Ú	PageRangeÚPageRangeSpec)ÚBorderArrayTypeÚFitTypeÚ
LayoutTypeÚOutlineItemTypeÚOutlineTypeÚPagemodeTypeÚZoomArgTypeiüÿÿc                   óú  — e Zd ZdZd½deddfd„Zd¾d„Zdeee	      dee	   d	ee
   ddfd
„Zedefd„«       Zej                  deddfd„«       Zdedefd„Z	 	 d¿dedeef   dee   defd„Zdeeef   defd„Z	 dÀdedeeegdf   dee   defd„ZdÁd„Z	 dÀdedee   defd„Z	 dÀdedee   defd„Z	 	 dÂdededee   defd„Z 	 	 dÂdededee   defd„Z!	 d¿dee   dee   defd „Z"dedefd!„Z#defd"„Z$defd#„Z%ede&e   fd$„«       Z'	 d¿d%ee(   d&ee(   defd'„Z)	 d¿d%ee(   d&ee(   defd(„Z*	 	 	 dÃd%ee+jX                     d&ee+jX                     dedefd)„Z-	 	 	 dÃd%ee+jX                     d&ee+jX                     dedefd*„Z.edede/e0e1f   fd+„«       Z2e2j                  d,edee/ef   ddfd-„«       Z2d.eddfd/„Z3d.eddfd0„Z4d1ed2eeef   ddfd3„Z5d4ed5eeef   ddfd6„Z6	 dÄd7e7d8eeegdf      ddfd9„Z8	 dÄd7e7d8eeegdf      ddfd:„Z9e:fded;e;eef   d<e<ddfd=„Z=e:fded;e;eef   d<e<ddfd>„Z>d7e7ddfd?„Z?d7e7ddfd@„Z@	 dÄd7e7d8eeegdf      ddfdA„ZA	 dÄd7e7d8eeegdf      ddfdB„ZBdddCeCddfdDee   dEee   dFeDdGeEdHee   dIee   ddfdJ„ZFdKeGddfdL„ZHdKeeIef   deJeDeKf   fdM„ZLdKeGde&e   fdN„ZMdKeGdOe&e   defdP„ZNdKeGddfdQ„ZOdRe;eef   ddfdS„ZPdRe;eef   ddfdT„ZQdUeeReSeTeUeeVeeWe0eXf
   ddfdV„ZYd2edefdW„ZZdedefdX„Z[dedefdY„Z\de]fdZ„Z^deRfd[„Z_edeRfd\„«       Z`de]fd]„ZadeRfd^„ZbdeRfd_„Zc	 	 	 	 dÅd`edee]f   daede]ef   dbede]ef   d,edee]f   def
dc„Zd	 dÄd,eee]f   daede]ef   defdd„Ze	 dÄd,edaee]   defde„Zf egdf¬g«      	 	 d¿dfehdaede]ef   dbede]ef   defdh„«       Zi egdf¬g«      	 dÄdfehdaee]   defdi„«       Zj egdf¬g«      	 dÄdfehdaee]   defdj„«       Zkddddkdkeldfdlededeeef   daede]ef   dbede]ef   dmeeeJe(e(e(f   ef      dneDdoeDdpemdqee   defdr„Zn	 	 	 	 	 dÆdledqedaede]ef   dmeeJe(e(e(f      dneDdoeDdpeodsepdefdt„Zq	 	 	 	 	 dÆdledqedaede]ef   dmeeJe(e(e(f      dneDdoeDdpeodsepdefdu„ZrdÁdv„Zsdle0dweeeRf   ddfdx„Zt	 	 d¿d`ee   d,ee   defdy„Zud,e/defdz„Zv	 	 d¿dledee   dqee   defd{„Zwdledqedefd|„ZxdÁd}„ZydÁd~„ZzdÇdeDddfd€„Z{	 dÇd�eDddfd‚„Z|dÇdeDddfdƒ„Z}	 dÇd�eDddfd„„Z~	 	 d¿ded…ed†ed‡eeR   dqee   ddfdˆ„Z€	 dÄdqed…ed†ed‡eeR   ddf
d‰„Z�	 	 dÈdqed`ed†ed‡eeR   dpeodsepddfdŠ„Z‚	 	 dÈdqed`ed†ed‡eeR   dpeodsepddfd‹„ZƒdŒZ„dee…   fd�„Z†dee…   fdŽ„Z‡d�eeVe…f   ddfd�„Zˆd�e…ddfd‘„Z‰d�e…ddfd’„ZŠedee…   fd“„«       Z‹e‹j                  d�e…ddfd”„«       Z‹edee…   fd•„«       ZŒeŒj                  d�e…ddfd–„«       ZŒd—Z�deeŽ   fd˜„Z�deeŽ   fd™„Z�dšeŽddfd›„Z‘dšeŽddfdœ„Z’edeeŽ   fd�„«       Z“e“j                  dšeŽddfdž„«       Z“edeeŽ   fdŸ„«       Z”e”j                  dšeŽddfd „«       Z”ded¡e;eef   ddfd¢„Z•deeef   defd£„Z–deeIee7f   deJe—ee˜   f   fd¤„Z™	 	 	 	 dÉdeee7eIf   dfeedešeJeef   eJeeef   e&e   f   d¥edešeJeef   eJeeef   e&e   f   d¦eDd§eee&e   eJed¨f   f      ddfd©„Z› egdfd¦¬ª«      	 	 	 	 dÊd«ee   deeIee7f   dfee   d¥eeœ   d¦eDd§eee&e   eJed¨f   f      ddfd¬„«       Z�d­eTd¥e;eef   d7e7defd®„Zžd¯eeŸef   d¥e;eef   d7e7ddfd°„Z dedeeeeXf   d¥e;eef   d7e7dee   fd±„Z¡d²eee&eT   f   ded¥e;eef   d7e7de&e/   f
d³„Z¢d´ed¥e;eef   d7e7de&e/   fdµ„Z£d,e/de]fd¶„Z¤	 dÄd·e&e/   daee]ef   dbede]ef   ddfd¸„Z¥dÁd¹„Z¦	 dÄdfe;eef   dUee§   dee&e      fdº„Z¨ egdf¬g«      	 dÄdfe;eef   dUee§   dee&e      fd»„«       Z©	 dÄd7ede7ef   ddfd¼„Zªy)ËÚ	PdfWriterz�
    This class supports writing PDF files out, given pages produced by another
    class (typically :class:`PdfReader<PyPDF2.PdfReader>`).
    ÚfileobjÚreturnNc           	      óˆ  — d| _         g | _        i | _        i | _        t	        «       }|j                  t        t        j                  «      t        d«      t        t        j                  «      t        d«      t        t        j                  «      t        «       i«       | j                  |«      | _        t	        «       }|j                  t        d«      t        t         j"                  dj%                  d«      z   «      i«       | j                  |«      | _        t	        «       | _        | j(                  j                  t        t        j                  «      t        t*        j,                  «      t        t*        j.                  «      | j                  i«       | j                  | j(                  «      | _        || _        d| _        y )Ns   %PDF-1.3z/Pagesr   z	/ProducerÚPyPDF2zutf-16beF)Ú_headerÚ_objectsÚ_idnum_hashÚ_id_translatedr>   ÚupdaterB   ÚPAÚTYPEÚCOUNTrD   ÚKIDSr8   Ú_add_objectÚ_pagesrJ   ÚcodecsÚBOM_UTF16_BEÚencodeÚ_infoÚ_root_objectÚCOÚCATALOGÚPAGESÚ_rootrW   Úwith_as_usage)ÚselfrW   ÚpagesÚinfos       úI/var/www/html/Extract/venv/lib/python3.12/site-packages/PyPDF2/_writer.pyÚ__init__zPdfWriter.__init__‹   sR  € Ø"ˆŒØ)+ˆŒØ8:ˆÔØ9;ˆÔô !Ó"ˆØ�‰äœ2Ÿ7™7Ó#¤Z°Ó%9Üœ2Ÿ8™8Ó$¤l°1£oÜœ2Ÿ7™7Ó#¤[£]ðô	
ð ×&Ñ& uÓ-ˆŒô  Ó!ˆØ�‰ä˜;Ó'Ô)=Ü×'Ñ'¨(¯/©/¸*Ó*EÑEó*ðô	
ð ×%Ñ% dÓ+ˆŒ
ô -Ó.ˆÔØ×Ñ× Ñ äœ2Ÿ7™7Ó#¤Z´·
±
Ó%;Üœ2Ÿ8™8Ó$ d§k¡kðô	
ð ×%Ñ% d×&7Ñ&7Ó8ˆŒ
ØˆŒØ"ˆÕó    c                 ó   — d| _         | S )z+Store that writer is initialized by 'with'.T)ro   ©rp   s    rs   Ú	__enter__zPdfWriter.__enter__³   s   € à!ˆÔØˆru   Úexc_typeÚexcÚ	tracebackc                 óT   — | j                   r| j                  | j                   «       yy)zWrite data to the fileobj.N)rW   Úwrite)rp   ry   rz   r{   s       rs   Ú__exit__zPdfWriter.__exit__¸   s    € ð �<Š<Ø�J‰J�t—|‘|Õ$ð ru   c                 ó   — | j                   S )zì
        Header of the PDF document that is written.

        This should be something like b'%PDF-1.5'. It is recommended to set the
        lowest version that supports all features which are used within the
        PDF file.
        ©r[   rw   s    rs   Ú
pdf_headerzPdfWriter.pdf_headerÂ   s   € ð �|‰|Ðru   Ú
new_headerc                 ó   — || _         y ©Nr€   )rp   r‚   s     rs   r�   zPdfWriter.pdf_headerÍ   s	   € à!ˆ�ru   Úobjc                 óü   — t        |d«      r%|j                  j                  | k(  r|j                  S | j                  j	                  |«       t        t        | j                  «      d| «      |_        |j                  S )NÚindirect_referencer   )Úhasattrr‡   Úpdfr\   ÚappendrA   Úlen©rp   r…   s     rs   rd   zPdfWriter._add_objectÑ   se   € Ü�3Ð,Ô-°#×2HÑ2H×2LÑ2LÐPTÒ2TØ×)Ñ)Ð)Ø�‰×Ñ˜SÔ!Ü!/´°D·M±MÓ0BÀAÀtÓ!LˆÔØ×%Ñ%Ð%ru   r‡   Úidoc                 ó  — |�)|�t        d«      ‚|}t        j                  dt        «       |€J ‚t	        |t
        «      r| j                  |dz
     S |j                  | k7  rt        d«      ‚| j                  |j                  dz
     S )NzGPlease only set 'indirect_reference'. The 'ido' argument is deprecated.zGThe parameter 'ido' is depreciated and will be removed in PyPDF2 4.0.0.r   zpdf must be self)	Ú
ValueErrorÚwarningsÚwarnÚDeprecationWarningÚ
isinstanceÚintr\   r‰   Úidnum)rp   r‡   r�   s      rs   Ú
get_objectzPdfWriter.get_objectØ   sž   € ð
 ˆ?Ø!Ð-Ü Ø]óð ð &)Ð"Ü—‘Ø]Ü&ôð
 Ð*ð	
Ø*äÐ(¬#Ô.Ø—=‘=Ð!3°aÑ!7Ñ8Ð8Ø×!Ñ! TÒ)ÜÐ/Ó0Ð0Ø�}‰}Ð/×5Ñ5¸Ñ9Ñ:Ð:ru   c                 ó>   — t        ddd«       | j                  |«      S )zU
        .. deprecated:: 1.28.0

            Use :meth:`get_object` instead.
        Ú	getObjectr–   ú3.0.0)r$   r–   )rp   r�   s     rs   r˜   zPdfWriter.getObjectñ   s   € ô 	% [°,ÀÔHØ�‰˜sÓ#Ð#ru   ÚpageÚactionÚexcluded_keysc                 óÞ  — t        t        |t        j                     «      t        j
                  k(  sJ ‚|}t        |«      }|t        j                  dgz  }	 | j                  t        |j                  j                  «         |j                  j                  = t        d|j                  | d|«      «      }|j                  �Q|j                  j                  }t!        |t        «      r|j#                  «       }t%        | j                  |«      | _        | j&                  |t)        t        j                  «      <   t        t*        | j-                  | j&                  «      «      }|j                  €J ‚ ||t        j.                     |j                  «       t        t0        |t        j2                     «      }t5        |dz   «      |t)        t        j2                  «      <   |S # t        $ r Y �ŒRw xY w)Nz/StructParentsr   Fr   )r   Ústrr`   ra   rk   ÚPAGEÚlistÚPARENTr^   Úidr‡   r‰   r•   Ú	ExceptionÚcloner�   r“   rh   r    re   rB   r>   r–   rc   r”   rb   rD   )rp   rš   r›   rœ   Úpage_orgÚotherrq   Ú
page_counts           rs   Ú	_add_pagezPdfWriter._add_pageü   s  € ô ”C˜œbŸg™g™Ó'¬2¯7©7Ò2Ð2Ð2ØˆÜ˜]Ó+ˆØœ"Ÿ)™)Ð%5Ð6Ñ6ˆð	Ø×#Ñ#¤B x×'BÑ'B×'FÑ'FÓ$GÑHØ×+Ñ+×1Ñ1ðô
 �L (§.¡.°°u¸mÓ"LÓMˆà�<‰<Ð#Ø—L‘L×+Ñ+ˆEÜ˜%¤Ô%ØŸ™›�Ü9¸$¿/¹/È5ÓQˆDŒOØ&*§k¡kˆŒZœŸ	™	Ó"Ñ#ÜÔ% t§¡°t·{±{Ó'CÓDˆØ×&Ñ&Ð2Ð2Ð2Ùˆu”R—W‘W‰~˜t×6Ñ6Ô7Üœ#˜u¤R§X¡X™Ó/ˆ
Ü&2°:À±>Ó&BˆŒjœŸ™Ó"Ñ#Øˆøô ò 	Úð	ús   ÁAG Ç	G,Ç+G,c                 óÔ  — 	 | j                   }t        j                  |vrR| j                   j                  t	        t        j                  «      t        t        | j                  «      d| «      i«       t	        t        j                  «      }t        d«      | j                   t        j                     |<   y # t        $ r)}t        j                  dt        |«      «       Y d }~y d }~ww xY w)Nr   Tz&set_need_appearances_writer() catch : )rj   r(   Ú	ACRO_FORMr_   rB   rA   r‹   r\   r/   ÚNeedAppearancesr9   r£   ÚloggerÚerrorÚrepr)rp   ÚcatalogÚneed_appearancesrz   s       rs   Úset_need_appearances_writerz%PdfWriter.set_need_appearances_writer  sÀ   € ð	NØ×'Ñ'ˆGä ×*Ñ*°'Ñ9Ø×!Ñ!×(Ñ(ä"Ô#4×#>Ñ#>Ó?ÄÜ §¡Ó.°°4óBðôô  *Ô*D×*TÑ*TÓUÐÜO\Ð]aÓObˆD×ÑÔ/×9Ñ9Ñ:Ð;KÒLøÜò 	NÜ�L‰LÐAÄ4ÈÃ9×MÑMûð	Nús   ‚B2B5 Â5	C'Â>C"Ã"C'c                 óD   — | j                  |t        j                  |«      S )ar  
        Add a page to this PDF file.
        Recommended for advanced usage including the adequate excluded_keys

        The page is usually acquired from a :class:`PdfReader<PyPDF2.PdfReader>`
        instance.

        :param PageObject page: The page to add to the document. Should be
            an instance of :class:`PageObject<PyPDF2._page.PageObject>`
        )r¨   r    rŠ   ©rp   rš   rœ   s      rs   Úadd_pagezPdfWriter.add_page2  s   € ð �~‰~˜d¤D§K¡K°Ó?Ð?ru   c                 ó@   — t        ddd«       | j                  ||«      S )zS
        .. deprecated:: 1.28.0

            Use :meth:`add_page` instead.
        ÚaddPager´   r™   )r$   r´   r³   s      rs   r¶   zPdfWriter.addPageC  s!   € ô 	% Y°
¸GÔDØ�}‰}˜T =Ó1Ð1ru   Úindexc                 ó.   ‡— | j                  |ˆfd„«      S )a  
        Insert a page in this PDF file. The page is usually acquired from a
        :class:`PdfReader<PyPDF2.PdfReader>` instance.

        :param PageObject page: The page to add to the document.
        :param int index: Position at which the page will be inserted.
        c                 ó(   •— | j                  ‰|«      S r„   )Úinsert)ÚlÚpr·   s     €rs   ú<lambda>z'PdfWriter.insert_page.<locals>.<lambda>]  s   ø€ °·±¸%ÀÓ1C€ ru   )r¨   ©rp   rš   r·   rœ   s     ` rs   Úinsert_pagezPdfWriter.insert_pageP  s   ø€ ð �~‰~˜dÓ$CÓDÐDru   c                 óB   — t        ddd«       | j                  |||«      S )zV
        .. deprecated:: 1.28.0

            Use :meth:`insert_page` instead.
        Ú
insertPager¿   r™   )r$   r¿   r¾   s       rs   rÁ   zPdfWriter.insertPage_  s%   € ô 	% \°=À'ÔJØ×Ñ  e¨]Ó;Ð;ru   Úpage_numberÚ
pageNumberc                 ó,  — |�|�t        d«      ‚t        ddd«       |}|€|€t        d«      ‚t        t        t        t
        f   | j                  | j                  «      «      }t        t        |t        j                     |   j                  «       «      S )zÜ
        Retrieve a page by number from this PDF file.

        :param int page_number: The page number to retrieve
            (pages begin at zero)
        :return: the page at the index given by *page_number*
        z)Please only use the page_number parameterzget_page(pageNumber)zget_page(page_number)ú4.0.0zPlease specify the page_number)r�   r"   r   r   rž   r
   r–   re   r   r`   rc   )rp   rÂ   rÃ   rq   s       rs   Úget_pagezPdfWriter.get_pagem  sŽ   € ð Ð!ØÐ&Ü Ð!LÓMÐMÜ&Ø&Ð(?Àôð %ˆKØÐ :Ð#5ÜÐ=Ó>Ð>Ü”Tœ#œs˜(‘^ T§_¡_°T·[±[Ó%AÓBˆä”J ¤b§g¡g¡¨{Ñ ;× FÑ FÓ HÓIÐIru   c                 ó>   — t        ddd«       | j                  |«      S )zd
        .. deprecated:: 1.28.0

            Use :code:`writer.pages[page_number]` instead.
        ÚgetPagezwriter.pages[page_number]r™   )r$   rÆ   )rp   rÃ   s     rs   rÈ   zPdfWriter.getPage„  s    € ô 	% YÐ0KÈWÔUØ�}‰}˜ZÓ(Ð(ru   c                 óœ   — t        t        t        t        f   | j	                  | j
                  «      «      }t        |t        d«         «      S )Nz/Count)r   r   rž   r
   r–   re   r”   rB   )rp   rq   s     rs   Ú_get_num_pageszPdfWriter._get_num_pages�  s8   € Ü”Tœ#œs˜(‘^ T§_¡_°T·[±[Ó%AÓBˆÜ�5œ HÓ-Ñ.Ó/Ð/ru   c                 ó<   — t        ddd«       | j                  «       S )z\
        .. deprecated:: 1.28.0

            Use :code:`len(writer.pages)` instead.
        ÚgetNumPageszlen(writer.pages)r™   )r$   rÊ   rw   s    rs   rÌ   zPdfWriter.getNumPages‘  s    € ô 	% ]Ð4GÈÔQØ×"Ñ"Ó$Ð$ru   c                 óB   — t        | j                  | j                  «      S )zNProperty that emulates a list of :class:`PageObject<PyPDF2._page.PageObject>`.)r   rÊ   rÆ   rw   s    rs   rq   zPdfWriter.pagesš  s   € ô ˜D×/Ñ/°·±Ó?Ð?ru   ÚwidthÚheightc                 óV   — t        j                  | ||«      }| j                  |«       |S )a  
        Append a blank page to this PDF file and returns it. If no page size
        is specified, use the size of the last page.

        :param float width: The width of the new page expressed in default user
            space units.
        :param float height: The height of the new page expressed in default
            user space units.
        :return: the newly appended page
        :raises PageSizeNotDefinedError: if width and height are not defined
            and previous page does not exist.
        )r   Úcreate_blank_pager´   )rp   rÎ   rÏ   rš   s       rs   Úadd_blank_pagezPdfWriter.add_blank_pageŸ  s)   € ô ×+Ñ+¨D°%¸Ó@ˆØ�‰�dÔØˆru   c                 ó@   — t        ddd«       | j                  ||«      S )zY
        .. deprecated:: 1.28.0

            Use :meth:`add_blank_page` instead.
        ÚaddBlankPagerÒ   r™   )r$   rÒ   )rp   rÎ   rÏ   s      rs   rÔ   zPdfWriter.addBlankPage²  s$   € ô 	% ^Ð5EÀwÔOØ×"Ñ" 5¨&Ó1Ð1ru   c                 ó  — |�|€Q| j                  «       dz
  |k\  r;| j                  |   }|j                  j                  }|j                  j                  }t        j                  | ||«      }| j                  ||«       |S )a8  
        Insert a blank page to this PDF file and returns it. If no page size
        is specified, use the size of the last page.

        :param float width: The width of the new page expressed in default user
            space units.
        :param float height: The height of the new page expressed in default
            user space units.
        :param int index: Position to add the page.
        :return: the newly appended page
        :raises PageSizeNotDefinedError: if width and height are not defined
            and previous page does not exist.
        r   )rÊ   rq   ÚmediaboxrÎ   rÏ   r   rÑ   r¿   )rp   rÎ   rÏ   r·   Úoldpagerš   s         rs   Úinsert_blank_pagezPdfWriter.insert_blank_page½  s{   € ð& ˆ=˜F˜N°×0CÑ0CÓ0EÈÑ0IÈeÒ/SØ—j‘j Ñ'ˆGØ×$Ñ$×*Ñ*ˆEØ×%Ñ%×,Ñ,ˆFÜ×+Ñ+¨D°%¸Ó@ˆØ×Ñ˜˜uÔ%Øˆru   c                 óB   — t        ddd«       | j                  |||«      S )zZ
        .. deprecated:: 1.28.0

            Use :meth:`insertBlankPage` instead.
        ÚinsertBlankPagerØ   r™   )r$   rØ   )rp   rÎ   rÏ   r·   s       rs   rÚ   zPdfWriter.insertBlankPageØ  s'   € ô 	%Ð%6Ð8KÈWÔUØ×%Ñ% e¨V°UÓ;Ð;ru   c                 óX  — d| j                   vry| j                   d   }t        |t        t        f«      rt	        t        |«      «      S t        |t
        «      r0	 |dd \  }}|dd }t        |t        |«      «      }t        d||«      S y# t        $ r}t        d|› d|› �«      ‚d}~ww xY w)a�  
        Property to access the opening destination ("/OpenAction" entry in the
        PDF catalog).
        it returns `None` if the entry does not exist is not set.

        :param destination:.
        the property can be set to a Destination, a Page or an string(NamedDest) or
            None (to remove "/OpenAction")

        (value stored in "/OpenAction" entry in the Pdf Catalog)
        ú/OpenActionNr   é   Ú
OpenActionzInvalid Destination ú: )
rj   r“   rž   ÚbytesrJ   r8   r?   Útupler=   r£   )rp   Úoarš   ÚtypÚarrayÚfitrz   s          rs   Úopen_destinationzPdfWriter.open_destinationæ  s½   € ð  × 1Ñ 1Ñ1ØØ×Ñ˜}Ñ-ˆÜ�bœ3¤˜,Ô'Ü'¬¨B«Ó0Ð0Ü˜œKÔ(ðDØ˜q ˜G‘	��cØ˜1˜2˜�Ü˜#œu U›|Ó,�Ü" <°°sÓ;Ð;ð øô ò DÜÐ"6°r°d¸"¸S¸EÐ BÓCÐCûðDús   Á.B
 Â
	B)ÂB$Â$B)Údestc                 óÒ  — |€	 | j                   d= y t        |t        «      r"t	        |«      | j                   t        d«      <   y t        |t        «      r#|j                  | j                   t        d«      <   y t        |t        «      rRt        d|j                  �|j                  n	t        «       t        «      j                  | j                   t        d«      <   y y # t        $ r Y y w xY w)NrÜ   ÚOpening)rj   ÚKeyErrorr“   rž   rH   rB   r=   Ú
dest_arrayr   r‡   rC   r6   ©rp   rç   s     rs   ræ   zPdfWriter.open_destination  sÌ   € àˆ<ðØ×%Ñ% mÑ4ô ˜œcÔ"Ü;KÈDÓ;QˆD×Ñœj¨Ó7Ò8Ü˜œkÔ*Ø;?¿?¹?ˆD×Ñœj¨Ó7Ò8Ü˜œjÔ)Ü;FØà×*Ñ*Ð6ð ×'Ò'ä“\Üó<÷ ‰jð ×Ñœj¨Ó7Ò8ð *øô ò Ùðús   „C Ã	C&Ã%C&Ú
javascriptc           
      óì  — d| j                   vr.t        «       | j                   t        t        j                  «      <   t        t        | j                   t        j                     «      }d|vr*t        t        d«      t        «       i«      |t        d«      <   t        t        t        t        |d   «      d   «      }t        «       }|j                  t        t        j                  «      t        d«      t        d«      t        d«      t        d«      t        |› «      i«       |j                  t        t        t        j                  «       «      «      «       |j                  | j!                  |«      «       y)a  
        Add Javascript which will launch upon opening this PDF.

        :param str javascript: Your Javascript.

        >>> output.add_js("this.print({bUI:true,bSilent:false,bShrinkToFit:true});")
        # Example: This will launch the print window when the PDF is opened.
        z/Namesz/JavaScriptz/Actionú/Sz/JSN)rj   r>   rB   ÚCAÚNAMESr   r8   r_   r`   ra   rH   rŠ   rJ   rž   ÚuuidÚuuid4rd   )rp   rí   ÚnamesÚjs_listÚjss        rs   Úadd_jszPdfWriter.add_js  s  € ð ˜4×,Ñ,Ñ,Ü6FÓ6HˆD×Ñœj¬¯©Ó2Ñ3ÜÔ% t×'8Ñ'8¼¿¹Ñ'BÓCˆØ Ñ%Ü/?Ü˜HÓ%¤{£}Ð5ó0ˆE”*˜]Ó+Ñ,ô ÜœÔ.°°mÑ0DÓEÀhÑOó
ˆô ÓˆØ
�	‰	äœ2Ÿ7™7Ó#¤Z°	Ó%:Ü˜4Ó ¤*¨]Ó";Ü˜5Ó!Ô#3°z°lÓ#Dðô	
ð 	�‰Ô+¬C´·
±
³Ó,=Ó>Ô?Ø�‰�t×'Ñ'¨Ó+Õ,ru   c                 ó>   — t        ddd«       | j                  |«      S )zQ
        .. deprecated:: 1.28.0

            Use :meth:`add_js` instead.
        ÚaddJSr÷   r™   )r$   r÷   )rp   rí   s     rs   rù   zPdfWriter.addJS;  s   € ô 	% W¨h¸Ô@Ø�{‰{˜:Ó&Ð&ru   ÚfilenameÚdatac           	      ó   — t        «       }|j                  |«       |j                  t        t        j
                  «      t        d«      i«       t        «       }|j                  t        d«      |i«       t        «       }|j                  t        t        j
                  «      t        d«      t        t        j                  «      t        |«      t        t        j                  «      |i«       t        «       }|j                  t        t        j                  «      t        t        |«      |g«      i«       t        «       }|j                  t        d«      |i«       | j                  j                  t        t        j                  «      |i«       y)a  
        Embed a file inside the PDF.

        :param str filename: The filename to display.
        :param str data: The data in the file.

        Reference:
        https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
        Section 7.11.3
        z/EmbeddedFileú/Fz	/Filespecz/EmbeddedFilesN)r<   Úset_datar_   rB   r`   ra   r>   r-   ÚFrJ   ÚEFrð   rñ   r8   rj   )rp   rú   rû   Ú
file_entryÚef_entryÚfilespecÚembedded_files_names_dictionaryÚembedded_files_dictionarys           rs   Úadd_attachmentzPdfWriter.add_attachmentD  s@  € ô8 )Ó*ˆ
Ø×Ñ˜DÔ!Ø×Ñœ:¤b§g¡gÓ.´
¸?Ó0KÐLÔMô $Ó%ˆØ�‰œ DÓ)¨:Ð6Ô7ä#Ó%ˆØ�‰äœ2Ÿ7™7Ó#¤Z°Ó%<ÜÔ=×?Ñ?Ó@ÔBVØóCô Ô=×@Ñ@ÓAÀ8ðô	
ô* +;Ó*<Ð'Ø'×.Ñ.äœ2Ÿ8™8Ó$¤kÜ)¨(Ó3°XÐ>ó'ðô	
ô %5Ó$6Ð!Ø!×(Ñ(ÜÐ(Ó)Ð+JÐKô	
ð 	×Ñ× Ñ ¤*¬R¯X©XÓ"6Ð8QÐ!RÕSru   ÚfnameÚfdatac                 ó@   — t        ddd«       | j                  ||«      S )zY
        .. deprecated:: 1.28.0

            Use :meth:`add_attachment` instead.
        ÚaddAttachmentr  r™   )r$   r  )rp   r  r  s      rs   r
  zPdfWriter.addAttachment–  s$   € ô 	% _Ð6FÈÔPØ×"Ñ" 5¨%Ó0Ð0ru   ÚreaderÚafter_page_appendc                 ó¶   — t        |j                  «      }t        |«      D ]6  }|j                  |   }| j                  |«      }t	        |«      sŒ/ ||«       Œ8 y)aÆ  
        Copy pages from reader to writer. Includes an optional callback parameter
        which is invoked after pages are appended to the writer.

        :param PdfReader reader: a PdfReader object from which to copy page
            annotations to this writer object.  The writer's annots
            will then be updated
        :param Callable[[PageObject], None] after_page_append:
            Callback function that is invoked after each page is appended to
            the writer. Signature includes a reference to the appended page
            (delegates to append_pages_from_reader). The single parameter of the
            callback is a reference to the page just appended to the document.
        N)r‹   rq   Úranger´   Úcallable)rp   r  r  Úreader_num_pagesÚreader_page_numberÚreader_pageÚwriter_pages          rs   Úappend_pages_from_readerz"PdfWriter.append_pages_from_reader¡  sW   € ô& ˜vŸ|™|Ó,Ðä"'Ð(8Ó"9ò 	/ÐØ Ÿ,™,Ð'9Ñ:ˆKØŸ-™-¨Ó4ˆKäÐ)Õ*Ù! +Õ.ñ	/ru   c                 óB   — t        ddd«       | j                  ||«       y)zc
        .. deprecated:: 1.28.0

            Use :meth:`append_pages_from_reader` instead.
        ÚappendPagesFromReaderr  r™   N)r$   r  ©rp   r  r  s      rs   r  zPdfWriter.appendPagesFromReader½  s'   € ô 	%Ø#Ð%?Àô	
ð 	×%Ñ% fÐ.?Õ@ru   ÚfieldsÚflagsc           	      óì  — | j                  «        t        j                  |vrt        dt        «       yt        t        |t        j                     «      «      D �]˜  }|t        j                     |   j                  «       }i }t        j                  |v r|t        j                     }|D �]D  }|j                  t        j                  «      |k(  rÅ|j                  t        j                  «      dk(  r6|j                  t        t        j                   «      t        ||   «      i«       |j                  t        t        j"                  «      t%        ||   «      i«       |sŒ·|j                  t        t        j&                  «      t)        |«      i«       Œë|j                  t        j                  «      |k(  s�Œ|j                  t        t        j"                  «      t%        ||   «      i«       �ŒG �Œ› y)a•  
        Update the form field values for a given page from a fields dictionary.

        Copy field texts and values from fields to page.
        If the field links to a parent object, add the information to the parent.

        :param PageObject page: Page reference from PDF writer where the
            annotations and field data will be updated.
        :param dict fields: a Python dictionary of field names (/T) and text
            values (/V)
        :param int flags: An integer (0 to 7). The first bit sets ReadOnly, the
            second bit sets Required, the third bit sets NoExport. See
            PDF Reference Table 8.70 for details.
        z No fields to update on this pageNz/Btn)r±   ÚPGÚANNOTSr%   Ú__name__r  r‹   r–   r¡   Úgetr+   ÚTÚFTr_   rB   r&   ÚASÚVrH   ÚFfrD   )rp   rš   r  r  ÚjÚwriter_annotÚwriter_parent_annotÚfields           rs   Úupdate_page_form_field_valuesz'PdfWriter.update_page_form_field_valuesÌ  s®  € ð( 	×(Ñ(Ô*ä�9‰9˜DÑ ÜÐ=¼xÔHØÜ”s˜4¤§	¡	™?Ó+Ó,ó &	ˆAØ¤§	¡	™?¨1Ñ-×8Ñ8Ó:ˆLà"$ÐÜ�y‰y˜LÑ(Ø&2´2·9±9Ñ&=Ð#Øó  �Ø×#Ñ#Ô$=×$?Ñ$?Ó@ÀEÒIØ#×'Ñ'Ô(A×(DÑ(DÓEÈÒOØ$×+Ñ+ä *Ü$B×$EÑ$Eó!"ä#-¨f°U©mÓ#<ðôð !×'Ñ'ä&Ô'@×'BÑ'BÓCÔEUØ & u¡óFðôò Ø$×+Ñ+ä *Ô+D×+GÑ+GÓ HÌ,Ø$)óK"ðõð )×,Ñ,Ô-F×-HÑ-HÓIÈUÔRØ'×.Ñ.ä&Ô'@×'BÑ'BÓCÔEUØ & u¡óFðöò5 ñ&	ru   c                 óB   — t        ddd«       | j                  |||«      S )zh
        .. deprecated:: 1.28.0

            Use :meth:`update_page_form_field_values` instead.
        ÚupdatePageFormFieldValuesr(  r™   )r$   r(  )rp   rš   r  r  s       rs   r*  z#PdfWriter.updatePageFormFieldValues  s+   € ô 	%Ø'Ð)HÈ'ô	
ð ×1Ñ1°$¸ÀÓFÐFru   c                 ód   — t        t        |j                  t        j                     «      | _        y)zŠ
        Copy the reader document root to the writer.

        :param reader:  PdfReader from the document root should be copied.
        N)r   r>   ÚtrailerÚTKÚROOTrj   ©rp   r  s     rs   Úclone_reader_document_rootz$PdfWriter.clone_reader_document_root  s!   € ô !Ô!1°6·>±>Ä"Ç'Á'Ñ3JÓKˆÕru   c                 ó@   — t        ddd«       | j                  |«       y)ze
        .. deprecated:: 1.28.0

            Use :meth:`clone_reader_document_root` instead.
        ÚcloneReaderDocumentRootr0  r™   N)r$   r0  r/  s     rs   r2  z!PdfWriter.cloneReaderDocumentRoot%  s$   € ô 	%Ø%Ð'CÀWô	
ð 	×'Ñ'¨Õ/ru   c                 óJ   — | j                  |«       | j                  ||«       y)a)  
        Create a copy (clone) of a document from a PDF file reader

        :param reader: PDF file reader instance from which the clone
            should be created.
        :param Callable[[PageObject], None] after_page_append:
            Callback function that is invoked after each page is appended to
            the writer. Signature includes a reference to the appended page
            (delegates to append_pages_from_reader). The single parameter of the
            callback is a reference to the page just appended to the document.
        N)r0  r  r  s      rs   Úclone_document_from_readerz$PdfWriter.clone_document_from_reader0  s#   € ð" 	×'Ñ'¨Ô/Ø×%Ñ% fÐ.?Õ@ru   c                 óB   — t        ddd«       | j                  ||«       y)ze
        .. deprecated:: 1.28.0

            Use :meth:`clone_document_from_reader` instead.
        ÚcloneDocumentFromReaderr4  r™   N)r$   r4  r  s      rs   r6  z!PdfWriter.cloneDocumentFromReaderD  s'   € ô 	%Ø%Ð'CÀWô	
ð 	×'Ñ'¨Ð0AÕBru   TÚuser_passwordÚowner_passwordÚ
use_128bitÚpermissions_flagÚuser_pwdÚ	owner_pwdc           	      óR  — |�$|�t        d«      ‚t        j                  d«       |}|€t        d«      ‚|�4|�t        d«      ‚d}d}t        j                  |› d|› d	�t        ¬
«       |}|€|}|rd}	d}
t	        d«      }nd}	d}
t	        d«      }|}t        t        |||
|«      «      }t        t        t        t        j                  «       «      j                  d«      «      j                  «       «      }t        t        t        t        j                  «       «      j                  d«      «      j                  «       «      }t        ||f«      | _        |
dk(  rt        ||||«      \  }}n|
dk(  sJ ‚t!        ||
||||d«      \  }}t#        «       }t%        d«      |t%        t&        j(                  «      <   t+        |	«      |t%        d«      <   |	dk(  r(t+        |dz  «      |t%        t&        j,                  «      <   t+        |
«      |t%        t.        j0                  «      <   t        |«      |t%        t.        j2                  «      <   t        |«      |t%        t.        j4                  «      <   t+        |«      |t%        t.        j6                  «      <   | j9                  |«      | _        || _        y)a  
        Encrypt this PDF file with the PDF Standard encryption handler.

        :param str user_password: The "user password", which allows for opening
            and reading the PDF file with the restrictions provided.
        :param str owner_password: The "owner password", which allows for
            opening the PDF files without any restrictions.  By default,
            the owner password is the same as the user password.
        :param bool use_128bit: flag as to whether to use 128bit
            encryption.  When false, 40bit encryption will be used.  By default,
            this flag is on.
        :param unsigned int permissions_flag: permissions as described in
            TABLE 3.20 of the PDF 1.7 specification. A bit value of 1 means the
            permission is grantend. Hence an integer value of -1 will set all
            flags.
            Bit position 3 is for printing, 4 is for modifying content, 5 and 6
            control annotations, 9 for form fields, 10 for extraction of
            text and graphics.
        NzGPlease only set 'user_password'. The 'user_pwd' argument is deprecated.z|Please use 'user_password' instead of 'user_pwd'. The 'user_pwd' argument is deprecated and will be removed in PyPDF2 4.0.0.zuser_password may not be NonezIThe argument owner_pwd of encrypt is deprecated. Use owner_password only.r<  r8  úG is deprecated as an argument and will be removed in PyPDF2 4.0.0. Use ú instead©ÚmessageÚcategoryrÝ   é   g      0@r   g      @Úutf8Fz	/Standardú/Vé   )r�   r�   r‘   r’   r”   r:   r   r   r®   Útimerh   ÚdigestÚrandomr8   Ú_IDr   r   r>   rB   ÚSAÚFILTERrD   ÚLENGTHÚEDÚRÚOÚUÚPrd   Ú_encryptÚ_encrypt_key)rp   r7  r8  r9  r:  r;  r<  Úold_termÚnew_termr"  ÚrevÚkeylenrR  rP  ÚID_1ÚID_2rQ  ÚkeyÚencrypts                      rs   r\  zPdfWriter.encryptS  sn  € ð8 ÐØÐ(Ü ð=óð ô
 —‘ð7ôð
 !)�ØÐ äÐ<Ó=Ð=àÐ ØÐ)Ü Ø_óð ð '�Ø+�Ü—‘à#˜*ð %8Ø8@°zÀðKô 0õð "+�àÐ!Ø*ˆNÙØˆAØˆCÜ˜“\‰FàˆAØˆCÜ˜“[ˆFØˆÜœV N°MÀ3ÈÓOÓPˆÜ¤¤T¬$¯)©)«+Ó%6×$>Ñ$>¸vÓ$FÓ G× NÑ NÓ PÓQˆÜ¤¤T¬&¯-©-«/Ó%:×$BÑ$BÀ6Ó$JÓ K× RÑ RÓ TÓUˆÜ  d˜|Ó,ˆŒØ�!Š8Ü˜M¨1¨a°Ó6‰FˆA‰sà˜!’8ˆO�8Ü˜M¨3°¸¸1¸dÀEÓJ‰FˆAˆsÜ"Ó$ˆÜ)3°KÓ)@ˆ”
œ2Ÿ9™9Ó%Ñ&Ü$0°£Oˆ”
˜4Ó Ñ!Ø�Š6Ü-9¸&À1¹*Ó-EˆG”JœrŸy™yÓ)Ñ*Ü$0°Ó$5ˆ”
œ2Ÿ4™4Ó Ñ!Ü$4°QÓ$7ˆ”
œ2Ÿ4™4Ó Ñ!Ü$4°QÓ$7ˆ”
œ2Ÿ4™4Ó Ñ!Ü$0°£Oˆ”
œ2Ÿ4™4Ó Ñ!Ø×(Ñ(¨Ó1ˆŒØˆÕru   Ústreamc                 ó¦  — t        |d«      r,d|j                  vrt        d|j                  › d�t        «       | j
                  s | j                  | j                  «      | _        | j                  | j
                  «       | j                  |«      }| j                  ||«      }| j                  |«       |j                  t        d|› d�«      «       y )NÚmodeÚbzFile <zH> to write to is not in binary mode. It may not be written to correctly.z
startxref
z
%%EOF
)rˆ   r_  r%   Únamer  rn   rd   rj   Ú_sweep_indirect_referencesÚ_write_headerÚ_write_xref_tableÚ_write_trailerr}   r!   )rp   r]  Úobject_positionsÚxref_locations       rs   Úwrite_streamzPdfWriter.write_stream±  s¸   € Ü�6˜6Ô" s°&·+±+Ñ'=ÜØ˜Ÿ™˜ð &6ð 6äôð �zŠzØ×)Ñ)¨$×*;Ñ*;Ó<ˆDŒJð 	×'Ñ'¨¯
©
Ô3à×-Ñ-¨fÓ5ÐØ×.Ñ.¨vÐ7GÓHˆØ×Ñ˜FÔ#Ø�‰”R˜-¨ °iÐ@ÓAÕBru   c                 óæ   — d}|dk(  rt        d|› d�«      ‚t        |t        t        f«      rt	        |d«      }d| _        d}| j                  |«       | j
                  r|j                  «        ||fS )ae  
        Write the collection of pages added to this object out as a PDF file.

        :param stream: An object to write the file to.  The object can support
            the write method and the tell method, similar to a file object, or
            be a file path, just like the fileobj, just named it stream to keep
            existing workflow.
        FÚ zOutput(stream=z) is empty.ÚwbT)r�   r“   rž   r   r   ro   rh  Úclose)rp   r]  Úmy_files      rs   r}   zPdfWriter.writeË  su   € ð ˆà�RŠ<Ü˜~¨f¨X°[ÐAÓBÐBä�fœs¤D˜kÔ*Ü˜F DÓ)ˆFØ!%ˆDÔØˆGà×Ñ˜&Ô!à×ÒØ�L‰LŒNà˜ˆÐru   c           	      óH  — g }|j                  | j                  dz   «       |j                  d«       t        | j                  «      D �]W  \  }}| j                  |   }|€Œ|dz   }|j	                  |j                  «       «       |j                  t        t        |«      «      dz   «       d }t        | d«      rÄ|| j                  j                  k7  r«t        j                  d|dz   «      d d }t        j                  dd«      d d	 }| j                  |z   |z   }t        |«      t        | j                  «      d
z   k(  sJ ‚t        |«      j!                  «       }	|	d t#        dt        | j                  «      d
z   «       }|j%                  ||«       |j                  d«       �ŒZ |S )Nó   
s   %âãÏÓ
r   s    0 obj
rS  z<irC  r   rÝ   é   é   s   
endobj
)r}   r�   Ú	enumerater\   rŠ   Útellr!   rž   rˆ   rS  r•   ÚstructÚpackrT  r‹   r   rH  ÚminÚwrite_to_stream)
rp   r]  rf  Úir…   r•   r[  Úpack1Úpack2Úmd5_hashs
             rs   rc  zPdfWriter._write_headerå  sp  € ØÐØ�‰�T—_‘_ uÑ,Ô-Ø�‰Ð+Ô,Ü §¡Ó.ó 	,‰FˆAˆsØ—-‘- Ñ"ˆCà‰Ø˜A™�Ø ×'Ñ'¨¯©«Ô6Ø—‘œR¤ E£
›^¨kÑ9Ô:Ø�Ü˜4 Ô,°¸$¿-¹-×:MÑ:MÒ1MÜ"ŸK™K¨¨a°!©eÓ4°R°aÐ8�EÜ"ŸK™K¨¨aÓ0°°!Ð4�EØ×+Ñ+¨eÑ3°eÑ;�CÜ˜s›8¬¨D×,=Ñ,=Ó(>ÀÑ(BÒCÐCÐCÜ" 3›xŸ™Ó0�HØ"Ð#H¤S¨¬S°×1BÑ1BÓ-CÀaÑ-GÓ%HÐI�CØ×#Ñ# F¨CÔ0Ø—‘˜]Ö+ð!	,ð"  Ðru   rf  c           	      óF  — |j                  «       }|j                  d«       |j                  t        dt        | j                  «      dz   › d�«      «       |j                  t        dd›ddd	›d
�«      «       |D ]$  }|j                  t        |d›ddd	›d�«      «       Œ& |S )Ns   xref
z0 r   ú
r   z0>10ú iÿÿ  z0>5z f 
z n 
)rs  r}   r!   r‹   r\   )rp   r]  rf  rg  Úoffsets        rs   rd  zPdfWriter._write_xref_tableü  s›   € ØŸ™›ˆØ�‰�YÔØ�‰”R˜"œS §¡Ó/°!Ñ3Ð4°BÐ7Ó8Ô9Ø�‰”R˜1˜T˜( ! E¨# ;¨eÐ4Ó5Ô6Ø&ò 	<ˆFØ�L‰Lœ˜v d˜m¨1¨Q¨s¨G°5Ð9Ó:Õ;ð	<àÐru   c           	      óD  — |j                  d«       t        «       }|j                  t        t        j
                  «      t        t        | j                  «      dz   «      t        t        j                  «      | j                  t        t        j                  «      | j                  i«       t        | d«      r&| j                  |t        t        j                  «      <   t        | d«      r&| j                   |t        t        j"                  «      <   |j%                  |d «       y )Ns   trailer
r   rJ  rS  )r}   r>   r_   rB   r-  ÚSIZErD   r‹   r\   r.  rn   ÚINFOri   rˆ   rJ  ÚIDrS  ÚENCRYPTrw  )rp   r]  r,  s      rs   re  zPdfWriter._write_trailer  sÀ   € Ø�‰�\Ô"Ü"Ó$ˆØ�‰äœ2Ÿ7™7Ó#¤\´#°d·m±mÓ2DÀqÑ2HÓ%IÜœ2Ÿ7™7Ó# T§Z¡ZÜœ2Ÿ7™7Ó# T§Z¡Zðô	
ô �4˜ÔØ)-¯©ˆG”JœrŸu™uÓ%Ñ&Ü�4˜Ô$Ø.2¯m©mˆG”JœrŸz™zÓ*Ñ+Ø×Ñ ¨Õ-ru   Úinfosc                 óÌ   — i }t        |j                  «       «      D ]  \  }}t        |«      |t        |«      <   Œ | j	                  | j
                  «      j                  |«       y)z¯
        Add custom metadata to the output.

        :param dict infos: a Python dictionary where each key is a field
            and each value is your new metadata.
        N)r    ÚitemsrJ   rB   r–   ri   r_   )rp   r…  Úargsr[  Úvalues        rs   Úadd_metadatazPdfWriter.add_metadata  sW   € ð ˆÜ˜uŸ{™{›}Ó-ò 	@‰JˆC�Ü$8¸Ó$?ˆD”˜C“Ò!ð	@à�‰˜Ÿ
™
Ó#×*Ñ*¨4Õ0ru   c                 ó@   — t        ddd«       | j                  |«       y)zW
        .. deprecated:: 1.28.0

            Use :meth:`add_metadata` instead.
        ÚaddMetadatarŠ  r™   N)r$   rŠ  )rp   r…  s     rs   rŒ  zPdfWriter.addMetadata!  s   € ô 	% ]°NÀGÔLØ×Ñ˜%Õ ru   Úrootc                 ó  — t        j                  «       }g }d }g }d }|j                  ||||f«       t        |«      �rÄ|j	                  «       \  }}}}t        |t        t        f«      r6|j                  «       D ]"  \  }}	|j                  |	|||�||gz   ng f«       Œ$ nzt        |t        «      rj|j                  | k7  r[| j                  |«      }t        |«      |vr=|j                  t        |«      «       |j                  |j                  «       d d g f«       t        |t        t        f«      rÅt        |t        «      r | j                  | j                  |«      «      }g }
||   |k7  r5|j!                  «       g|D �cg c]  }|j!                  «       ‘Œ c}z   }
|||<   |
D ]Q  }| j"                  j	                  |d «      }|€Œ"|j                  «       }|€Œ5|| j"                  |j!                  «       <   ŒS t        |«      r�ŒÃy y c c}w r„   )ÚcollectionsÚdequerŠ   r‹   Úpopr“   r8   r>   r‡  rA   r‰   Ú_resolve_indirect_objectrž   r–   rG   rd   Ú
hash_valuer]   )rp   r�  ÚstackÚ
discoveredÚparentÚgrant_parentsÚ	key_or_idrû   r[  r‰  Úupdate_hashesÚgrant_parentÚold_hashr‡   Úindirect_reference_objs                  rs   rb  z$PdfWriter._sweep_indirect_references*  s  € ô, ×ÑÓð 	ð ˆ
ØˆØ)+ˆØˆ	ð 	�‰�d˜F I¨}Ð=Ô>ä�%�jØ5:·Y±Y³[Ñ2ˆD�&˜) ]ô ˜$¤Ô.>Ð ?Ô@Ø"&§*¡*£,ò ‘J�C˜Ø—L‘Là!Ø ØØ8>Ð8J˜M¨V¨HÒ4ÐPRð	õñô ˜D¤.Ô1Ø—8‘8˜tÒ#Ø×8Ñ8¸Ó>�Dä˜4“y¨
Ñ2Ø"×)Ñ)¬#¨d«)Ô4ØŸ™ d§o¡oÓ&7¸¸tÀRÐ%HÔIô ˜&Ô#3´[Ð"AÔBÜ˜d¤LÔ1ð  ×8Ñ8¸×9IÑ9IÈ$Ó9OÓP�Dà "�ð ˜)Ñ$¨Ò,Ø%+×%6Ñ%6Ó%8Ð$9ØFSö=Ø6B˜×/Ñ/Õ1ò=ñ %�Mð )-�F˜9Ñ%ð !.ò 	3�HØ)-×)9Ñ)9×)=Ñ)=¸hÈÓ)MÐ&à)Ñ5Ø1C×1NÑ1NÓ1PÐ.à1Ñ=ð !3ð !×,Ñ,Ø 6× AÑ AÓ Còð	3ôO �%�jˆjùòB=s   Å=Hc                 ó¨  — t        |j                  d«      rL|j                  j                  j                  r,t	        d|j                  j                  j
                  › �«      ‚|j                  | k(  r|S |j                  j                  |«      }|€5t        d|j                  j                  › d|› d�t        «       t        «       }|j                  «       }|| j                  v r| j                  |   S |j                  | k(  r%t        |j                  d| «      | j                  |<   n| j                  |«      | j                  |<   | j                  |   S )zÄ
        Resolves indirect object to this pdf indirect objects.

        If it is a new object then it is added to self._objects
        and new idnum is given and generation is always 0.
        r]  zI/O operation on closed file: zUnable to resolve [rß   z], returning NullObject insteadr   )rˆ   r‰   r]  Úclosedr�   ra  r–   r%   Ú	__class__r  rC   r“  r]   rA   r•   rd   )rp   rû   Úreal_objr“  s       rs   r’  z"PdfWriter._resolve_indirect_object{  s.  € ô �4—8‘8˜XÔ&¨4¯8©8¯?©?×+AÒ+AÜÐ=¸d¿h¹h¿o¹o×>RÑ>RÐ=SÐTÓUÐUà�8‰8�tÒØˆKð —8‘8×&Ñ& tÓ,ˆàÐÜØ% d§n¡n×&=Ñ&=Ð%>¸bÀÀð G/ð /äôô
 "“|ˆHà×(Ñ(Ó*ˆ
ð ˜×)Ñ)Ñ)Ø×#Ñ# JÑ/Ð/à�8‰8�tÒÜ+9¸$¿*¹*ÀaÈÓ+NˆD×Ñ˜ZÒ(ð ,0×+;Ñ+;¸HÓ+EˆD×Ñ˜ZÑ(à×Ñ 
Ñ+Ð+ru   c                 ó†   — | j                   j                  |«      dz   }t        |d| «      }|j                  «       |k(  sJ ‚|S ©Nr   r   )r\   r·   rA   r–   )rp   r…   r•   Úrefs       rs   Úget_referencezPdfWriter.get_reference¡  sC   € Ø—‘×#Ñ# CÓ(¨1Ñ,ˆÜ˜U A tÓ,ˆØ�~‰~Ó 3Ò&Ð&Ð&Øˆ
ru   c                 ó>   — t        ddd«       | j                  |«      S )zX
        .. deprecated:: 1.28.0

            Use :meth:`get_reference` instead.
        ÚgetReferencer¤  r™   )r$   r¤  rŒ   s     rs   r¦  zPdfWriter.getReference§  s!   € ô 	% ^°_ÀgÔNØ×!Ñ! #Ó&Ð&ru   c                 ó¼  — t         j                  | j                  v rmt        t        | j                  t         j                     «      }| j
                  j                  |«      dz   }t        |d| «      }|j                  «       |k(  sJ ‚|S t	        «       }|j                  i «       | j                  |«      }|| j                  t        t         j                  «      <   |S r¢  )rk   ÚOUTLINESrj   r   rI   r\   r·   rA   r–   r_   rd   rB   )rp   Úoutliner•   Úoutline_refs       rs   Úget_outline_rootzPdfWriter.get_outline_root°  s·   € Ü�;‰;˜$×+Ñ+Ñ+äœ: t×'8Ñ'8¼¿¹Ñ'EÓFˆGØ—M‘M×'Ñ'¨Ó0°1Ñ4ˆEÜ(¨°°4Ó8ˆKØ×)Ñ)Ó+¨wÒ6Ð6Ð6ð ˆô !“lˆGØ�N‰N˜2ÔØ×*Ñ*¨7Ó3ˆKØ9DˆD×Ñœj¬¯©Ó5Ñ6àˆru   c                 óø   — t         j                  | j                  v r-t        t        | j                  t         j                     «      }|S t	        «       }|| j                  t        t         j                  «      <   |S )u¥   
        the list of threads see Â§8.3.2 from PDF 1.7 spec

                :return: an Array (possibly empty) of Dictionaries with "/F" and "/I" properties
        )rk   ÚTHREADSrj   r   r8   rB   )rp   Úthreadss     rs   Úget_threads_rootzPdfWriter.get_threads_root¿  s_   € ô �:‰:˜×*Ñ*Ñ*äœ;¨×(9Ñ(9¼"¿*¹*Ñ(EÓFˆGð ˆô "“mˆGØ8?ˆD×Ñœj¬¯©Ó4Ñ5Øˆru   c                 ó"   — | j                  «       S )u´   
        Read-only property for the list of threads see Â§8.3.2 from PDF 1.7 spec

        :return: an Array (possibly empty) of Dictionaries with "/F" and "/I" properties
        )r¯  rw   s    rs   r®  zPdfWriter.threadsÍ  s   € ð ×$Ñ$Ó&Ð&ru   c                 ó<   — t        ddd«       | j                  «       S )z[
        .. deprecated:: 1.28.0

            Use :meth:`get_outline_root` instead.
        ÚgetOutlineRootr«  r™   )r$   r«  rw   s    rs   r²  zPdfWriter.getOutlineRootÖ  s!   € ô 	%Ð%5Ð7IÈ7ÔSØ×$Ñ$Ó&Ð&ru   c                 óz  — t         j                  | j                  v �rt        | j                  t         j                     t        «      �rSt        t        | j                  t         j                     «      }|j                  }t         j                  |v r«t        |t         j                     t        «      rŠt        t        |t         j                     «      }|j                  }t         j                  |v r#t        t        |t         j                     «      }|S t        «       }||t        t         j                  «      <   |S t	        «       }| j                  |«      }||t        t         j                  «      <   t        «       }||t        t         j                  «      <   |S t	        «       }| j                  |«      }|| j                  t        t         j                  «      <   t	        «       }| j                  |«      }||t        t         j                  «      <   t        «       }||t        t         j                  «      <   |S r„   )rð   rñ   rj   r“   r>   r   r‡   ÚDESTSr8   rB   rd   )rp   rô   Ú	names_refÚdestsÚ	dests_refÚnds         rs   Úget_named_dest_rootzPdfWriter.get_named_dest_rootß  s¬  € Ü�8‰8�t×(Ñ(Ò(¬ZØ×ÑœbŸh™hÑ'Ô)9õ.
ô Ô)¨4×+<Ñ+<¼R¿X¹XÑ+FÓGˆEØ×0Ñ0ˆIÜ�x‰x˜5Ñ ¤Z°´b·h±h±ÔAQÔ%RäÔ-¨u´R·X±X©Ó?�Ø!×4Ñ4�	Ü—8‘8˜uÑ$äœk¨5´·±©?Ó;�Bð* ˆ	ô' %›�BØ24�Eœ*¤R§X¡XÓ.Ñ/ð$ ˆ	ô! )Ó*�Ø ×,Ñ,¨UÓ3�	Ø.7�”j¤§¡Ó*Ñ+Ü “]�Ø.0�”j¤§¡Ó*Ñ+ð ˆ	ô %Ó&ˆEØ×(Ñ(¨Ó/ˆIØ6?ˆD×Ñœj¬¯©Ó2Ñ3Ü$Ó&ˆEØ×(Ñ(¨Ó/ˆIØ*3ˆE”*œRŸX™XÓ&Ñ'Ü“ˆBØ*,ˆE”*œRŸX™XÓ&Ñ'àˆ	ru   c                 ó<   — t        ddd«       | j                  «       S )z^
        .. deprecated:: 1.28.0

            Use :meth:`get_named_dest_root` instead.
        ÚgetNamedDestRootr¹  r™   )r$   r¹  rw   s    rs   r»  zPdfWriter.getNamedDestRoot  s"   € ô 	%Ð%7Ð9NÐPWÔXØ×'Ñ'Ó)Ð)ru   Úpage_destinationr–  Úbeforec                 óT  — |�|�t        d«      ‚|�'d}d}t        j                  |› d|› d�t        ¬«       |}|€t        d«      ‚|€| j	                  «       }t        t        |j                  «       «      }| j                  |«      }|�|j                  }|j                  ||| «       |S )Nz[The argument dest of add_outline_item_destination is deprecated. Use page_destination only.rç   r¼  r>  r?  r@  ú page_destination may not be None)r�   r�   r‘   r’   r«  r   rI   r–   rd   r‡   Úinsert_child)rp   r¼  r–  r½  rç   rU  rV  Úpage_destination_refs           rs   Úadd_outline_item_destinationz&PdfWriter.add_outline_item_destination  s×   € ð Ð'¨DÐ,<ÜØmóð ð ÐØˆHØ)ˆHÜ�M‰Mà�jð !4Ø4<°:¸XðGô ,õð  $ÐØÐ#äÐ?Ó@Ð@àˆ>Ø×*Ñ*Ó,ˆFä”j &×"3Ñ"3Ó"5Ó6ˆØ#×/Ñ/Ð0@ÓAÐØÐØ×.Ñ.ˆFØ×ÑÐ0°&¸$Ô?à#Ð#ru   c                 ó@   — t        ddd«       | j                  ||«      S )zf
        .. deprecated:: 2.9.0

            Use :meth:`add_outline_item_destination` instead.
        Úadd_bookmark_destinationrÂ  r™   ©r$   rÂ  ©rp   rç   r–  s      rs   rÄ  z"PdfWriter.add_bookmark_destination0  s)   € ô 	%Ø&Ð(FÈô	
ð ×0Ñ0°°vÓ>Ð>ru   c                 ó@   — t        ddd«       | j                  ||«      S )zg
        .. deprecated:: 1.28.0

            Use :meth:`add_outline_item_destination` instead.
        ÚaddBookmarkDestinationrÂ  r™   rÅ  rÆ  s      rs   rÈ  z PdfWriter.addBookmarkDestination?  s)   € ô 	%Ø$Ð&DÀgô	
ð ×0Ñ0°°vÓ>Ð>ru   Úoutline_item)Úbookmarkc                 ó¾  — t        «       }t        |j                  «       «      D ]  \  }}||t        t	        |«      «      <   Œ |j                  |«       d|v rtt        «       }t        t        |d   «      }t        |j                  «       «      D ]  \  }}||t        t	        |«      «      <   Œ | j                  |«      }	|	|t        d«      <   | j                  |||«      S )Nú/A)
rI   r    r‡  rB   rž   r_   r>   r   rd   rÂ  )
rp   rÉ  r–  r½  Úoutline_item_objectÚkÚvr›   Úa_dictÚ
action_refs
             rs   Úadd_outline_item_dictzPdfWriter.add_outline_item_dictL  sØ   € ô )›lÐÜ˜×+Ñ+Ó-Ó.ò 	8‰DˆAˆqØ67Ð¤
¬3¨q«6Ó 2Ò3ð	8à×"Ñ" <Ô0à�<ÑÜ%Ó'ˆFÜÔ*¨L¸Ñ,>Ó?ˆFÜ˜VŸ\™\›^Ó,ò /‘��1Ø-.�”z¤# a£&Ó)Ò*ð/à×)Ñ)¨&Ó1ˆJØ4>Ð¤
¨4Ó 0Ñ1à×0Ñ0Ð1DÀfÈfÓUÐUru   c                 ó@   — t        ddd«       | j                  ||«      S )z_
        .. deprecated:: 2.9.0

            Use :meth:`add_outline_item_dict` instead.
        Úadd_bookmark_dictrÒ  r™   ©r$   rÒ  ©rp   rÉ  r–  s      rs   rÔ  zPdfWriter.add_bookmark_dictb  s)   € ô 	%ØÐ!8¸'ô	
ð ×)Ñ)¨,¸Ó?Ð?ru   c                 ó@   — t        ddd«       | j                  ||«      S )z`
        .. deprecated:: 1.28.0

            Use :meth:`add_outline_item_dict` instead.
        ÚaddBookmarkDictrÒ  r™   rÕ  rÖ  s      rs   rØ  zPdfWriter.addBookmarkDictp  s)   € ô 	%ØÐ6¸ô	
ð ×)Ñ)¨,¸Ó?Ð?ru   FÚtitleÚcolorÚboldÚitalicrå   Úpagenumc
           
      ó
  — t        |t        «      r|�|€|}| j                  |||d||||«      S |�|	�t        d«      ‚|€d}
nôt        |t        «      r|}nGt        |t
        «      r|j                  }n*t        |t        «      r	 | j                  |   j                  }€t        d|› �t        «       t        «       }t        t        d|z   dz   «      ||«      }| j!                  t#        t        t$        j&                  «      |j(                  t        t$        j*                  «      t        d«      i«      «      }
t-        |
||||«      }|€| j/                  «       }| j1                  |||«      S # t        $ r t        |«      }Y Œäw xY w)añ  
        Add an outline item (commonly referred to as a "Bookmark") to this PDF file.

        :param str title: Title to use for this outline item.
        :param int page_number: Page number this outline item will point to.
        :param parent: A reference to a parent outline item to create nested
            outline items.
        :param parent: A reference to a parent outline item to create nested
            outline items.
        :param tuple color: Color of the outline item's font as a red, green, blue tuple
            from 0.0 to 1.0 or as a Hex String (#RRGGBB)
        :param bool bold: Outline item font is bold
        :param bool italic: Outline item font is italic
        :param Fit fit: The fit of the destination page.
        NúMThe argument pagenum of add_outline_item is deprecated. Use page_number only.zcan not find reference of page ú/z outline itemú/GoTo)r“   r?   Úadd_outline_itemr�   rA   r   r‡   r”   rq   Ú
IndexErrorrD   r%   r  rC   r=   rB   rd   r>   r.   ÚDrë   ÚSÚ_create_outline_itemr«  rÂ  )rp   rÙ  rÂ   r–  r½  rÚ  rÛ  rÜ  rå   rÝ  rÑ  Úpage_refrç   rÉ  s                 rs   râ  zPdfWriter.add_outline_item~  sš  € ô8 �fœcÔ"Øˆ ;Ð#6Ø!�Ø×(Ñ(Ø�{ F¨D°&¸%ÀÀvóð ð Ð" wÐ':ÜØ_óð ð ÐØ‰Jä˜+¤~Ô6Ø&‘Ü˜K¬Ô4Ø&×9Ñ9‘Ü˜K¬Ô-ð9Ø#Ÿz™z¨+Ñ6×IÑI�Hð ÐÜØ5°k°]ÐCÜôô &›<�ÜÜ˜3 ™;¨Ñ8Ó9ØØóˆDð ×)Ñ)Ü ä"Ô#6×#8Ñ#8Ó9¸4¿?¹?Ü"Ô#6×#8Ñ#8Ó9¼:ÀgÓ;NðóóˆJô ,¨J¸¸uÀfÈdÓSˆàˆ>Ø×*Ñ*Ó,ˆFØ×0Ñ0°¸vÀvÓNÐNøô5 "ò 9Ü+¨KÓ8’Hð9ús   ÂE+ Å+FÆFrˆ  c                 ó`   — t        ddd«       | j                  ||||||t        ||¬«      «      S )zZ
        .. deprecated:: 2.9.0

            Use :meth:`add_outline_item` instead.
        Úadd_bookmarkrâ  r™   ©Úfit_typeÚfit_args©r$   râ  r?   ©	rp   rÙ  rÝ  r–  rÚ  rÛ  rÜ  rå   rˆ  s	            rs   ré  zPdfWriter.add_bookmarkÊ  s@   € ô  	% ^Ð5GÈÔQØ×$Ñ$ØØØØØØÜ˜ tÔ,ó
ð 	
ru   c                 ób   — t        ddd«       | j                  |||d|||t        ||¬«      «      S )z[
        .. deprecated:: 1.28.0

            Use :meth:`add_outline_item` instead.
        ÚaddBookmarkrâ  r™   Nrê  rí  rî  s	            rs   rð  zPdfWriter.addBookmarkå  sC   € ô  	% ]Ð4FÈÔPØ×$Ñ$ØØØØØØØÜ˜ tÔ,ó	
ð 		
ru   c                 ó   — t        d«      ‚)NzIThis method is not yet implemented. Use :meth:`add_outline_item` instead.)ÚNotImplementedErrorrw   s    rs   Úadd_outlinezPdfWriter.add_outline  s   € Ü!ØWó
ð 	
ru   Údestinationc                 ó  — | j                  «       }d}|t        |«      k  rJ|||   k  r.|j                  ||«       |j                  |t        |«      «       y |dz  }|t        |«      k  rŒJ|j	                  t        |«      |g«       y )Nr   rÝ   )r¹  r‹   rº   rH   Úextend)rp   rÙ  rô  r¸  rx  s        rs   Úadd_named_destination_arrayz%PdfWriter.add_named_destination_array  s„   € ð ×%Ñ%Ó'ˆØˆØ”#�b“'ŠkØ�r˜!‘uŠ}Ø—	‘	˜!˜[Ô)Ø—	‘	˜!Ô-¨eÓ4Ô5Øà�Q‘�ð ”#�b“'‹kð 	�	‰	Ô# EÓ*¨KÐ8Ô9Øru   c                 ó  — |�|�t        d«      ‚|�'d}d}t        j                  |› d|› d�t        ¬«       |}|€t        d«      ‚| j	                  |j
                  «      }| j                  t        d|d	   «      |«       |S )
Nz[The argument dest of add_named_destination_object is deprecated. Use page_destination only.rç   r¼  r>  r?  r@  r¿  rH   ú/Title)r�   r�   r‘   r’   rd   rë   r÷  r   )rp   r¼  rç   rU  rV  rÁ  s         rs   Úadd_named_destination_objectz&PdfWriter.add_named_destination_object  sµ   € ð
 Ð'¨DÐ,<ÜØmóð ð ÐØˆHØ)ˆHÜ�M‰Mà�jð !4Ø4<°:¸XðGô ,õð  $ÐØÐ#ÜÐ?Ó@Ð@à#×/Ñ/Ð0@×0KÑ0KÓLÐØ×(Ñ(ÜÐ#Ð%5°hÑ%?Ó@ÐBVô	
ð $Ð#ru   c                 ó>   — t        ddd«       | j                  |«      S )zg
        .. deprecated:: 1.28.0

            Use :meth:`add_named_destination_object` instead.
        ÚaddNamedDestinationObjectrú  r™   )r$   rú  rì   s     rs   rü  z#PdfWriter.addNamedDestinationObject3  s'   € ô 	%Ø'Ð)GÈô	
ð ×0Ñ0°Ó6Ð6ru   c           
      ó¢  — |�|�t        d«      ‚|�'d}d}t        j                  |› d|› d�t        ¬«       |}|€t        d«      ‚| j	                  | j
                  «      t        j                     |   }t        «       }|j                  t        t        j                  «      t        |t        t        j                  «      t!        d«      g«      t        t        j"                  «      t        d	«      i«       | j%                  |«      }| j'                  «       }	t)        |t*        «      st+        t-        |«      «      }|	j/                  ||g«       |S )
Nrß  rÝ  rÂ   r>  r?  r@  zpage_number may not be Nonei:  rá  )r�   r�   r‘   r’   r–   re   r`   rc   r>   r_   rB   r.   rä  r8   r4   ÚFIT_HrD   rå  rd   r¹  r“   rH   rž   rö  )
rp   rÙ  rÂ   rÝ  rU  rV  rç  rç   Údest_refr¸  s
             rs   Úadd_named_destinationzPdfWriter.add_named_destination@  sB  € ð Ð" wÐ':ÜØ_óð ð ÐØ ˆHØ$ˆHÜ�M‰Mà�jð !4Ø4<°:¸XðGô ,õð "ˆKØÐÜÐ:Ó;Ð;Ø—?‘? 4§;¡;Ó/´·±Ñ8¸ÑEˆÜÓ!ˆØ�‰äÔ.×0Ñ0Ó1´;Øœz¬/×*?Ñ*?Ó@Ä,ÈsÓBSÐTó4ô Ô.×0Ñ0Ó1´:¸gÓ3Fð	ô	
ð ×#Ñ# DÓ)ˆØ×%Ñ%Ó'ˆÜ˜%Ô!1Ô2Ü$¤S¨£ZÓ0ˆEØ
�	‰	�5˜(Ð#Ô$Øˆru   c                 ó@   — t        ddd«       | j                  ||«      S )z`
        .. deprecated:: 1.28.0

            Use :meth:`add_named_destination` instead.
        ÚaddNamedDestinationr   r™   )r$   r   )rp   rÙ  rÝ  s      rs   r  zPdfWriter.addNamedDestinationi  s)   € ô 	%Ø!Ð#:¸Gô	
ð ×)Ñ)¨%°Ó9Ð9ru   c                 ó,  — t        t        | j                  | j                  «      «      }t        t        |t
        j                     «      }|D ]E  }t        t        | j                  |«      «      }t        j                  |v sŒ5|t        j                  = ŒG y)z.Remove links and annotations from this output.N)	r   r>   r–   re   r8   r`   rc   r  r  )rp   Úpg_dictrq   rš   rç  s        rs   Úremove_linkszPdfWriter.remove_linksv  sn   € äÔ'¨¯©¸¿¹Ó)EÓFˆÜ”[ '¬"¯'©'Ñ"2Ó3ˆØò 	(ˆDÜÔ,¨d¯o©o¸dÓ.CÓDˆHÜ�y‰y˜HÒ$ØœRŸY™YÑ'ñ	(ru   c                 ó<   — t        ddd«       | j                  «       S )zW
        .. deprecated:: 1.28.0

            Use :meth:`remove_links` instead.
        ÚremoveLinksr  r™   )r$   r  rw   s    rs   r  zPdfWriter.removeLinks  s   € ô 	% ]°NÀGÔLØ× Ñ Ó"Ð"ru   Úignore_byte_string_objectc                 óV  — t        t        | j                  | j                  «      «      }t        t        |t
        j                     «      }d}|D �]W  }t        t        | j                  |«      «      }|d   j                  «       }t        |t        «      st        ||«      }g }d}	|j                  D ]Ñ  \  }
}|dv r%|
d   }|r“t        |t        «      sƒt        «       |
d<   nu|dk(  r%|
d   }|rit        |t        «      sYt        «       |
d<   nK|dk(  rFt        t        |
d   «      «      D ],  }|sŒt        |
d   |   t        «      rŒt        «       |
d   |<   Œ. |d	k(  rd
}	|dk(  rd}	|	r||v rŒ¹|dk(  rŒ¿|j                  |
|f«       ŒÓ ||_	        |j                  t        d«      |«       �ŒZ y)zž
        Remove images from this output.

        :param bool ignore_byte_string_object: optional parameter
            to ignore ByteString Objects.
        )s   cmó   wó   Jó   jó   Mó   ds   rió   is   gsó   Wó   bó   só   Só   fó   Fó   nó   mó   ló   có   vó   yó   hó   Bs   Dos   shú	/ContentsF©s   Tjó   'r   ó   "rÝ   ó   TJó   qTó   Qs   reN)r   r>   r–   re   r8   r`   rc   r“   r;   Ú
operationsrH   r  r‹   rŠ   Ú__setitem__rB   )rp   r  r  rq   Újump_operatorsrš   rç  ÚcontentÚ_operationsÚseq_graphicsÚoperandsÚoperatorÚtextrx  s                 rs   Úremove_imageszPdfWriter.remove_imagesˆ  sÆ  € ô Ô'¨¯©¸¿¹Ó)EÓFˆÜ”[ '¬"¯'©'Ñ"2Ó3ˆð
ˆð6 ó '	CˆDÜÔ,¨d¯o©o¸dÓ.CÓDˆHØ˜{Ñ+×6Ñ6Ó8ˆGÜ˜g¤}Ô5Ü'¨°Ó:�àˆKØ ˆLØ&-×&8Ñ&8ò 9Ñ"�˜(Ø˜}Ñ,Ø# A™;�DÙ0¼ØÔ.ô:ô '7Ó&8˜ šØ Ò%Ø# A™;�DÙ0¼ØÔ.ô:ô '7Ó&8˜ šØ Ò&Ü"¤3 x°¡{Ó#3Ó4ò @˜Ú4¼ZØ$ Q™K¨™NÔ,<õ>ô .>Ó-?˜H Q™K¨šNð	@ð ˜tÒ#Ø#'�LØ˜tÒ#Ø#(�LÙ H°Ñ$>ØØ˜uÒ$ØØ×"Ñ" H¨hÐ#7Õ8ð99ð< "-ˆGÔØ× Ñ ¤¨KÓ!8¸'ÖBñO'	Cru   ÚignoreByteStringObjectc                 ó>   — t        ddd«       | j                  |«      S )zX
        .. deprecated:: 1.28.0

            Use :meth:`remove_images` instead.
        ÚremoveImagesr.  r™   )r$   r.  ©rp   r/  s     rs   r1  zPdfWriter.removeImagesÕ  s"   € ô 	% ^°_ÀgÔNØ×!Ñ!Ð"8Ó9Ð9ru   c                 óæ  — t        t        | j                  | j                  «      «      }t        t        t
           |t        j                     «      }|D �]š  }t        t        | j                  |«      «      }|d   j                  «       }t        |t        «      st        ||«      }|j                  D �]  \  }}|dv rK|d   }	|st        |	t        «      sŒ#t        «       |d<   Œ1t        |	t        t        f«      sŒHt        «       |d<   ŒV|dk(  rK|d   }	|st        |	t        «      sŒst        «       |d<   Œ�t        |	t        t        f«      sŒ˜t        «       |d<   Œ¦|dk(  sŒ¬t        t        |d   «      «      D ]Y  }
|s(t        |d   |
   t        «      sŒt        «       |d   |
<   Œ-t        |d   |
   t        t        f«      sŒJt        «       |d   |
<   Œ[ �Œ! |j!                  t#        d«      |«       �Œ� y)zœ
        Remove text from this output.

        :param bool ignore_byte_string_object: optional parameter
            to ignore ByteString Objects.
        r  r  r   r!  rÝ   r"  N)r   r>   r–   re   r   rA   r`   rc   r   r“   r;   r%  rH   r:   r  r‹   r&  rB   )rp   r  r  rq   rš   rç  r(  r+  r,  r-  rx  s              rs   Úremove_textzPdfWriter.remove_textà  sÇ  € ô Ô'¨¯©¸¿¹Ó)EÓFˆÜ”Tœ.Ñ)¨7´2·7±7Ñ+;Ó<ˆØó !	CˆDÜœJ¨¯©¸Ó(=Ó>ˆHØ˜{Ñ+×6Ñ6Ó8ˆGÜ˜g¤}Ô5Ü'¨°Ó:�Ø&-×&8Ñ&8ó DÑ"�˜(Ø˜}Ñ,Ø# A™;�DÙ4Ü% dÔ,<Õ=Ü*:Ó*<˜H QšKä% dÔ-=Ô?OÐ,PÕQÜ*:Ó*<˜H QšKØ Ò%Ø# A™;�DÙ4Ü% dÔ,<Õ=Ü*:Ó*<˜H QšKä% dÔ-=Ô?OÐ,PÕQÜ*:Ó*<˜H QšKØ Ó&Ü"¤3 x°¡{Ó#3Ó4ò D˜Ù8Ü)¨(°1©+°a©.Ô:JÕKÜ1AÓ1C ¨¡¨A¢ä)Ø (¨¡¨A¡Ô1AÔCSÐ0Tõ ô 2BÓ1C ¨¡¨A¢òDð%Dð8 × Ñ ¤¨KÓ!8¸'ÖBñC!	Cru   c                 ó>   — t        ddd«       | j                  |«      S )zV
        .. deprecated:: 1.28.0

            Use :meth:`remove_text` instead.
        Ú
removeTextr4  r™   )r$   r4  r2  s     rs   r6  zPdfWriter.removeText  s"   € ô 	% \°=À'ÔJØ×ÑÐ 6Ó7Ð7ru   ÚuriÚrectÚborderc                 ó|  — |�t        j                  dt        ¬«       |}| j                  | j                  «      t
        j                     |   }t        t        t        t        f   | j                  |«      «      }|�`|dd D �cg c]  }t        |«      ‘Œ }	}t        |«      dk(  rFt        |d   D �cg c]  }t        |«      ‘Œ c}«      }
|	j                  |
«       nt        d«      gdz  }	t!        |t        «      rt        |«      }nt!        |t"        «      rnt#        |«      }t%        «       }|j'                  t        d«      t        d«      t        d«      t)        |«      i«       t%        «       }|j'                  t        t*        j,                  «      t        t.        j0                  «      t        t*        j2                  «      t        d	«      t        t*        j4                  «      |t        t*        j6                  «      |t        d
«      t        d«      t        t*        j8                  «      t        |	«      t        d«      |i«       | j;                  |«      }t.        j0                  |v r#|t.        j0                     j                  |«       yt        |g«      |t        t.        j0                  «      <   yc c}w c c}w )aç  
        Add an URI from a rectangular area to the specified page.
        This uses the basic structure of :meth:`add_link`

        :param int page_number: index of the page on which to place the URI action.
        :param str uri: URI of resource to link to.
        :param Tuple[int, int, int, int] rect: :class:`RectangleObject<PyPDF2.generic.RectangleObject>` or array of four
            integers specifying the clickable rectangular area
            ``[xLL, yLL, xUR, yUR]``, or string in the form ``"[ xLL yLL xUR yUR ]"``.
        :param ArrayObject border: if provided, an array describing border-drawing
            properties. See the PDF spec for details. No border will be
            drawn if this argument is omitted.
        NzoThe 'pagenum' argument of add_uri is deprecated and will be removed in PyPDF2 4.0.0. Use 'page_number' instead.)rB  rC  é   rÝ   rï   z/URIú/Linkz/Hú/IrÌ  )r�   r‘   r’   r–   re   r`   rc   r   r   rž   r
   rB   r‹   r8   rŠ   rD   r“   rF   r>   r_   rH   r&   r   r  r  ÚSubtyperR  ÚRectÚBorderrd   )rp   rÂ   r7  r8  r9  rÝ  Ú	page_linkrç  ÚnÚ
border_arrÚdash_patternÚlnk2ÚlnkÚlnk_refs                 rs   Úadd_urizPdfWriter.add_uri  s-  € ð* ÐÜ�M‰MðFä+õð
 "ˆKØ—O‘O D§K¡KÓ0´·±Ñ9¸+ÑFˆ	ÜœœS¤#˜X™¨¯©¸	Ó(BÓCˆð ÐØ17¸¸°Ö<¨Aœ* Q�-Ð<ˆJÐ<Ü�6‹{˜aÒÜ*À6È!Á9Ö+M¸a¬J°q­MÒ+MÓN�Ø×!Ñ! ,Õ/ä& q›/Ð*¨QÑ.ˆJä�dœCÔ Ü˜dÓ#‰DÜ˜œoÔ.Øä" 4Ó(ˆDäÓ!ˆØ�‰ä˜4Ó ¤*¨VÓ"4Ü˜6Ó"Ô$4°SÓ$9ðô	
ô Ó ˆØ�
‰
äÔ9×>Ñ>Ó?ÄÌBÏIÉIÓAVÜÔ9×AÑAÓBÄJÈwÓDWÜÔ9×;Ñ;Ó<¸iÜÔ9×>Ñ>Ó?ÀÜ˜4Ó ¤*¨TÓ"2ÜÔ9×@Ñ@ÓAÄ;ØóDô ˜4Ó  $ð
ô	
ð ×"Ñ" 3Ó'ˆä�9‰9˜Ñ Ø”R—Y‘YÑ×&Ñ& wÕ/ä.9¸7¸)Ó.DˆH”Z¤§	¡	Ó*Ò+ùòQ =ùâ+Ms   ÂJ4Â2J9c                 óD   — t        ddd«       | j                  ||||«      S )zR
        .. deprecated:: 1.28.0

            Use :meth:`add_uri` instead.
        ÚaddURIrH  r™   )r$   rH  )rp   rÝ  r7  r8  r9  s        rs   rJ  zPdfWriter.addURIb  s%   € ô 	% X¨y¸'ÔBØ�|‰|˜G S¨$°Ó7Ð7ru   c           	      ó’  — t        dd«       t        |t        «      rT|j                  «       dd }t	        |j                  d«      D �cg c]  }t        |«      dkD  sŒt        |«      ‘Œ c}«      }nt        |t        «      rnt	        |«      }t        j                  |||t        ||¬«      ¬«      }| j                  ||¬	«      S c c}w )
NÚadd_linkú+add_annotation(AnnotationBuilder.link(...))r   éÿÿÿÿr~  r   rê  )r8  r9  Útarget_page_indexrå   )rÂ   Ú
annotation)r$   r“   rž   ÚstriprF   Úsplitr‹   Úfloatr7   Úlinkr?   Úadd_annotation)	rp   rÝ  r¼  r8  r9  rå   rˆ  ÚnumrP  s	            rs   rL  zPdfWriter.add_linkq  s¸   € ô 	%ØÐEô	
ô �dœCÔ Ø—:‘:“<  "Ð%ˆDÜ"Ø'+§z¡z°#£ÖG ¼#¸c»(ÀQ»,”�s•ÒGó‰Dô ˜œoÔ.Øä" 4Ó(ˆDä&×+Ñ+ØØØ.Ü˜S¨4Ô0ô	
ˆ
ð ×"Ñ"¨wÀ:Ð"ÓNÐNùò Hs   ÁCÁCc                 óJ   — t        ddd«        | j                  |||||g|¢­Ž S )zS
        .. deprecated:: 1.28.0

            Use :meth:`add_link` instead.
        ÚaddLinkrM  rÅ   )r"   rL  )rp   rÝ  r¼  r8  r9  rå   rˆ  s          rs   rX  zPdfWriter.addLink�  s5   € ô 	#ØÐDÀgô	
ð ˆt�}‰}˜WÐ&6¸¸fÀcÐQÈDÒQÐQru   )z	/NoLayoutz/SinglePagez
/OneColumnz/TwoColumnLeftz/TwoColumnRightz/TwoPageLeftz/TwoPageRightc                 ó\   — 	 t        t        | j                  d   «      S # t        $ r Y y w xY w)Nú/PageLayout)r   rP   rj   rê   rw   s    rs   Ú_get_page_layoutzPdfWriter._get_page_layout­  s1   € ð	Üœ
 D×$5Ñ$5°mÑ$DÓEÐEøÜò 	Ùð	úó   ‚ Ÿ	+ª+c                 ó<   — t        ddd«       | j                  «       S )úY
        .. deprecated:: 1.28.0

            Use :py:attr:`page_layout` instead.
        ÚgetPageLayoutÚpage_layoutr™   )r$   r[  rw   s    rs   r_  zPdfWriter.getPageLayout³  s   € ô 	% _°mÀWÔMØ×$Ñ$Ó&Ð&ru   Úlayoutc                 óþ   — t        |t        «      sG|| j                  vr.t        dddj	                  | j                  «      f› �t
        «       t        |«      }| j                  j                  t        d«      |i«       y)a  
        Set the page layout.

        :param str layout: The page layout to be used.

        .. list-table:: Valid ``layout`` arguments
           :widths: 50 200

           * - /NoLayout
             - Layout explicitly not specified
           * - /SinglePage
             - Show one page at a time
           * - /OneColumn
             - Show one column at a time
           * - /TwoColumnLeft
             - Show pages in two columns, odd-numbered pages on the left
           * - /TwoColumnRight
             - Show pages in two columns, odd-numbered pages on the right
           * - /TwoPageLeft
             - Show two pages at a time, odd-numbered pages on the left
           * - /TwoPageRight
             - Show two pages at a time, odd-numbered pages on the right
        zLayout should be one of: rj  rZ  N)r“   rB   Ú_valid_layoutsr%   Újoinr  rj   r_   ©rp   ra  s     rs   Ú_set_page_layoutzPdfWriter._set_page_layout¼  sp   € ô0 ˜&¤*Ô-Ø˜T×0Ñ0Ñ0ÜØ/°°B·G±G¸D×<OÑ<OÓ4PÐ0PÐ/QÐRÜôô   Ó'ˆFØ×Ñ× Ñ ¤*¨]Ó";¸VÐ!DÕEru   c                 ó&   — | j                  |«       y)a  
        Set the page layout.

        :param str layout: The page layout to be used

        .. list-table:: Valid ``layout`` arguments
           :widths: 50 200

           * - /NoLayout
             - Layout explicitly not specified
           * - /SinglePage
             - Show one page at a time
           * - /OneColumn
             - Show one column at a time
           * - /TwoColumnLeft
             - Show pages in two columns, odd-numbered pages on the left
           * - /TwoColumnRight
             - Show pages in two columns, odd-numbered pages on the right
           * - /TwoPageLeft
             - Show two pages at a time, odd-numbered pages on the left
           * - /TwoPageRight
             - Show two pages at a time, odd-numbered pages on the right
        N©rf  re  s     rs   Úset_page_layoutzPdfWriter.set_page_layoutÝ  s   € ð0 	×Ñ˜fÕ%ru   c                 ó>   — t        ddd«       | j                  |«      S )r^  zwriter.setPageLayout(val)zwriter.page_layout = valr™   )r$   rf  re  s     rs   ÚsetPageLayoutzPdfWriter.setPageLayout÷  s'   € ô 	%Ø'Ð)CÀWô	
ð ×$Ñ$ VÓ,Ð,ru   c                 ó"   — | j                  «       S )aÛ  
        Page layout property.

        .. list-table:: Valid ``layout`` values
           :widths: 50 200

           * - /NoLayout
             - Layout explicitly not specified
           * - /SinglePage
             - Show one page at a time
           * - /OneColumn
             - Show one column at a time
           * - /TwoColumnLeft
             - Show pages in two columns, odd-numbered pages on the left
           * - /TwoColumnRight
             - Show pages in two columns, odd-numbered pages on the right
           * - /TwoPageLeft
             - Show two pages at a time, odd-numbered pages on the left
           * - /TwoPageRight
             - Show two pages at a time, odd-numbered pages on the right
        )r[  rw   s    rs   r`  zPdfWriter.page_layout  s   € ð. ×$Ñ$Ó&Ð&ru   c                 ó&   — | j                  |«       y r„   rh  re  s     rs   r`  zPdfWriter.page_layout  s   € à×Ñ˜fÕ%ru   c                 ó4   — t        ddd«       | j                  S )r^  Ú
pageLayoutr`  r™   ©r$   r`  rw   s    rs   ro  zPdfWriter.pageLayout  s   € ô 	% \°=À'ÔJØ×ÑÐru   c                 ó,   — t        ddd«       || _        y)r^  ro  r`  r™   Nrp  re  s     rs   ro  zPdfWriter.pageLayout)  s   € ô 	% \°=À'ÔJØ!ˆÕru   )z/UseNonez/UseOutlinesz
/UseThumbsz/FullScreenz/UseOCz/UseAttachmentsc                 ó\   — 	 t        t        | j                  d   «      S # t        $ r Y y w xY w)Nú	/PageMode)r   rS   rj   rê   rw   s    rs   Ú_get_page_modezPdfWriter._get_page_mode<  s1   € ð	Üœ d×&7Ñ&7¸Ñ&DÓEÐEøÜò 	Ùð	úr\  c                 ó<   — t        ddd«       | j                  «       S )úW
        .. deprecated:: 1.28.0

            Use :py:attr:`page_mode` instead.
        ÚgetPageModeÚ	page_moder™   )r$   rt  rw   s    rs   rw  zPdfWriter.getPageModeB  s   € ô 	% ]°KÀÔIØ×"Ñ"Ó$Ð$ru   r_  c                 ó   — t        |t        «      r|}nE|| j                  vr,t        ddj	                  | j                  «      › �t
        «       t        |«      }| j                  j                  t        d«      |i«       y)rv  zMode should be one of: z, rs  N)r“   rB   Ú_valid_modesr%   rd  r  rj   r_   )rp   r_  Ú	mode_names      rs   Úset_page_modezPdfWriter.set_page_modeK  so   € ô �dœJÔ'Ø$(‰Ià˜4×,Ñ,Ñ,ÜØ-¨d¯i©i¸×8IÑ8IÓ.JÐ-KÐLÌhôô # 4Ó(ˆIØ×Ñ× Ñ ¤*¨[Ó"9¸9Ð!EÕFru   c                 ó@   — t        ddd«       | j                  |«       y)rv  zwriter.setPageMode(val)zwriter.page_mode = valr™   N)r$   r|  ©rp   r_  s     rs   ÚsetPageModezPdfWriter.setPageMode[  s$   € ô 	%Ø%Ð'?Àô	
ð 	×Ñ˜4Õ ru   c                 ó"   — | j                  «       S )a  
        Page mode property.

        .. list-table:: Valid ``mode`` values
           :widths: 50 200

           * - /UseNone
             - Do not show outline or thumbnails panels
           * - /UseOutlines
             - Show outline (aka bookmarks) panel
           * - /UseThumbs
             - Show page thumbnails panel
           * - /FullScreen
             - Fullscreen view
           * - /UseOC
             - Show Optional Content Group (OCG) panel
           * - /UseAttachments
             - Show attachments panel
        )rt  rw   s    rs   rx  zPdfWriter.page_modef  s   € ð* ×"Ñ"Ó$Ð$ru   c                 ó&   — | j                  |«       y r„   )r|  r~  s     rs   rx  zPdfWriter.page_mode}  s   € à×Ñ˜4Õ ru   c                 ó4   — t        ddd«       | j                  S )rv  ÚpageModerx  r™   ©r$   rx  rw   s    rs   rƒ  zPdfWriter.pageMode�  s   € ô 	% Z°¸gÔFØ�~‰~Ðru   c                 ó,   — t        ddd«       || _        y)rv  rƒ  rx  r™   Nr„  r~  s     rs   rƒ  zPdfWriter.pageMode‹  s   € ô 	% Z°¸gÔFØˆ�ru   rP  c           
      óv  — t        t        t        |«      «      }| j                  | j                  «      d   |   |t        d«      <   | j                  |   }|j                  €t        «       |t        d«      <   |j                  €J ‚|j                  d«      dk(  rtt        d«      |v rgt        t        |t        d«         «      }t        t        d«      |d   t        |d	   t        |«      d
   ¬«      «      }|j                  |t        d«      <   | j                  |«      }|j                  j                  |«       y )Nz/Kidsú/Pú/Annotsú/Subtyper<  ú/Destz	/LinkNamerO  rå   rì  rê  )r   r>   Ú_pdf_objectifyr–   re   rB   rq   Úannotationsr8   r  Údictr=   r?   rë   rd   rŠ   )rp   rÂ   rP  Úto_addrš   Útmprç   Úind_objs           rs   rU  zPdfWriter.add_annotation•  s  € ÜÔ&¬°zÓ(BÓCˆØ#'§?¡?°4·;±;Ó#?ÀÑ#HÈÑ#UˆŒz˜$ÓÑ Ø�z‰z˜+Ñ&ˆØ×ÑÐ#Ü*5«-ˆD”˜IÓ&Ñ'Ø×ÑÐ+Ð+Ð+ð �:‰:�jÓ! WÒ,´¸GÓ1DÈÑ1NÜ”t˜V¤J¨wÓ$7Ñ8Ó9ˆCÜÜ˜;Ó'ØÐ'Ñ(ÜØ  ™Z´$°s³)¸JÑ2GôóˆDð +/¯/©/ˆF”:˜gÓ&Ñ'à×"Ñ" 6Ó*ˆà×Ñ×Ñ Õ(ru   c                 óº  — t        d|j                  «       «      }|j                  dg «      D ]«  }|j                  «       }|j                  dd«      }|j                  dd«      }t        |t        «      rt        |«      |t	        d«      <   Œ_|€Œb|j                  «       }|j                  dd«      }t        |t        «      sŒ•t        |«      |t	        d«      <   Œ­ |S )zŸ
        Perform some clean up in the page.
        Currently: convert NameObject nameddestination to TextStringObject (required for names/dests list)
        r   rˆ  rŠ  NrÌ  ú/D)r   r–   r  r“   rB   rH   )rp   rš   ÚaÚa_objÚdÚacts         rs   Ú
clean_pagezPdfWriter.clean_page®  sÂ   € ô
 �L $§/¡/Ó"3Ó4ˆØ—‘˜) RÓ(ò 
	@ˆAØ—L‘L“NˆEØ—	‘	˜' 4Ó(ˆAØ—)‘)˜D $Ó'ˆCÜ˜!œZÔ(Ü-=¸aÓ-@�”j Ó)Ò*Ø‘Ø—n‘nÓ&�Ø—G‘G˜D $Ó'�Ü˜a¤Õ,Ü,<¸QÓ,?�Cœ
 4Ó(Ò)ð
	@ð ˆru   c                 ó˜  — d }t        |t        t        f«      r2t        |d«      5 }t	        |j                  «       «      }d d d «       ||fS t        |t        «      r�|j                  r|j                  }|j                  j                  «       }|j                  j                  d«       t	        |j                  j                  «       «      }|j                  j                  |«       ||fS t        |d«      r<t        |d«      r0|j                  d«       |j                  «       }t	        |«      }||fS t        d«      ‚# 1 sw Y   |fS xY w)NÚrbr   ÚseekÚreadzÝPdfMerger.merge requires an object that PdfReader can parse. Typically, that is a Path or a string representing a Path, a file object, or an object implementing .seek and .read. Passing a PdfReader directly works as well.)r“   rž   r   r   r   r›  r   Ú_encryptionr]  rs  rš  rˆ   rò  )rp   rW   Úencryption_objÚfr]  Ú	orig_tellÚfilecontents          rs   Ú_create_streamzPdfWriter._create_streamÁ  s/  € ð ˆä�g¤¤T˜{Ô+Ü˜ Ó&ð +¨!Ü  §¡£Ó*�÷+ð, �~Ð%Ð%ô) ˜¤Ô+Ø×"Ò"Ø!(×!4Ñ!4�ØŸ™×+Ñ+Ó-ˆIØ�N‰N×Ñ Ô"Ü˜WŸ^™^×0Ñ0Ó2Ó3ˆFð �N‰N×Ñ 	Ô*ð �~Ð%Ð%ô �W˜fÔ%¬'°'¸6Ô*BØ�L‰L˜ŒOØ!Ÿ,™,›.ˆKÜ˜[Ó)ˆFð �~Ð%Ð%ô &ð>óð ÷!+ð, �~Ð%Ð%ús   ¥D=Ä=E	rq   Úimport_outlineÚexcluded_fields.c                 óè   — |€d}t        |t        t        t        f«      r=t        |t        «      rt        |t        «      s|}|}|}| j                  d|d|||«       y| j                  d|||||«       y)a0  
        Identical to the :meth:`merge()<merge>` method, but assumes you want to
        concatenate all pages onto the end of the file instead of specifying a
        position.

        :param fileobj: A File Object or an object that supports the standard
            read and seek methods similar to a File Object. Could also be a
            string representing a path to a PDF file.

        :param str outline_item: Optionally, you may specify a string to build an outline
            (aka 'bookmark') to identify the
            beginning of the included file.

        :param pages: can be a :class:`PageRange<PyPDF2.pagerange.PageRange>`
            or a ``(start, stop[, step])`` tuple
            or a list of pages to be processed
            to merge only the specified range of pages from the source
            document into the output document.

        :param bool import_outline: You may prevent the source document's
            outline (collection of outline items, previously referred to as
            'bookmarks') from being imported by specifying this as ``False``.

        :param List excluded_fields: provide the list of fields/keys to be ignored
            if "/Annots" is part of the list, the annotation will be ignored
            if "/B" is part of the list, the articles will be ignored
        N© )r“   rá   r    rL   ÚboolÚmerge)rp   rW   rÉ  rq   r¢  r£  s         rs   rŠ   zPdfWriter.appendå  ss   € ðN Ð"Ø ˆOÜ�l¤U¬D´)Ð$<Ô=Ü˜%¤Ô&Ü! .´$Ô7Ø&4�OØ!&�Ø ˆEØ�J‰J�t˜W d¨E°>À?ÕSà�J‰JØ�g˜|¨U°NÀOõru   )rÊ  Úimport_bookmarksÚpositionc           
      óÚ  — t        |t        «      r|}n!| j                  |«      \  }}	t        |d¬«      }|€d}|€)t        t	        dt        |j                  «      «      «      }n t        |t        «      r4t        t	        |j                  t        |j                  «      «      Ž «      }n\t        |t        «      rnKt        |t        «      r t        |«      dk  rt        t	        |Ž «      }nt        |t        «      st        d«      ‚i }
|D ]´  }|j                  |   }|j                  €J ‚|€8| j                  |t        |«      dd	gz   «      |
|j                  j                  <   n=| j                  ||t        |«      dd	gz   «      |
|j                  j                  <   |d
z  }||
|j                  j                     _        Œ¶ |j                   |_        |j"                  j%                  «       D ]…  }|j&                  }t        |d   t(        «      rŒ#|d   j                  j                  |
v sŒ?|
|d   j                  j                     j                  |t+        d«      <   | j-                  |d   |«       Œ‡ |�^t/        d| j1                  t3        |«      t        |
j%                  «       «      d   j                  t4        ¬«      j7                  «       «      }n| j9                  «       }t/        d|j:                  t<        j>                     «      }|rVt@        jB                  |v rD| jE                  |jG                  t@        jB                  d«      |
|«      }| jI                  ||d«       d	|vrp|
j%                  «       D ]]  }| jK                  |j                  jG                  d	d«      ||
|«      }t        |«      dkD  r||tM        d	«      <   | jO                  |«       Œ_ d|vr| jQ                  d|
|«       y)ae  
        Merge the pages from the given file into the output file at the
        specified page number.

        :param int position: The *page number* to insert this file. File will
            be inserted after the given number.

        :param fileobj: A File Object or an object that supports the standard
            read and seek methods similar to a File Object. Could also be a
            string representing a path to a PDF file.

        :param str outline_item: Optionally, you may specify a string to build an outline
            (aka 'bookmark') to identify the
            beginning of the included file.

        :param pages: can be a :class:`PageRange<PyPDF2.pagerange.PageRange>`
            or a ``(start, stop[, step])`` tuple
            or a list of pages to be processed
            to merge only the specified range of pages from the source
            document into the output document.

        :param bool import_outline: You may prevent the source document's
            outline (collection of outline items, previously referred to as
            'bookmarks') from being imported by specifying this as ``False``.

        :param List excluded_fields: provide the list of fields/keys to be ignored
            if "/Annots" is part of the list, the annotation will be ignored
            if "/B" is part of the list, the articles will be ignored
        F)ÚstrictNr¥  r   rC  z:"pages" must be a tuple of (start, stop[, step]) or a listú/Brˆ  r   ú/Pagerù  rI   )rå   r>   rj  ))r“   r   r¡  r    r  r‹   rq   rL   Úindicesrá   Ú	TypeErrorr‡   r´   r•   r¿   Úoriginal_pageÚnamed_destinationsÚ_namedDestsÚvaluesrë   rC   rD   r÷  r   râ  rH   r6   r–   r«  r,  r-  r.  rk   r¨  Ú_get_filtered_outliner  Ú_insert_filtered_outlineÚ_insert_filtered_annotationsrB   r—  Úadd_filtered_articles)rp   r©  rW   rÉ  rq   r¢  r£  r  r]  r�  Úsrcpagesrx  Úpgrç   ÚarrÚoutline_item_typÚ_ror©  ÚpagÚlsts                       rs   r§  zPdfWriter.merge	  s¯  € ôN �gœyÔ)Ø‰Fà%)×%8Ñ%8¸Ó%AÑ"ˆF�Nô ˜v¨eÔ4ˆFàÐ"Ø ˆOàˆ=Üœ˜q¤# f§l¡lÓ"3Ó4Ó5‰EÜ˜œyÔ)Üœ §¡¬c°&·,±,Ó.?Ó @ÐAÓB‰EÜ˜œtÔ$ØÜ˜œuÔ%¬#¨e«*¸ª/Üœ ˜Ó'‰EÜ˜E¤5Ô)ÜØLóð ð ˆØò 	EˆAØ—‘˜a‘ˆBØ×(Ñ(Ð4Ð4Ð4ØÐØ8<¿¹Øœ˜_Ó-°°yÐ0AÑAó9�˜×.Ñ.×4Ñ4Ò5ð 9=×8HÑ8HØ˜¤$ Ó"7¸4ÀÐ:KÑ"Kó9�˜×.Ñ.×4Ñ4Ñ5ð ˜A‘�ØBDˆH�R×*Ñ*×0Ñ0Ñ1Õ?ð	Eð ×%Ñ%ð 	Ôð ×&Ñ&×-Ñ-Ó/ò 		FˆDØ—/‘/ˆCä˜$˜w™-¬Ô4ØØ�g‘×1Ñ1×7Ñ7¸8ÒCØ'/Ø˜‘M×4Ñ4×:Ñ:ñ(ç$Ñ$ð ”L “OÑ$ð ×0Ñ0°°h±ÀÕEð		Fð Ð#Ü#ØØ×%Ñ%Ü$ \Ó2Ü˜Ÿ™Ó*Ó+¨AÑ.×AÑAÜ ð &ó ÷ ‘*“,ó Ñð  $×4Ñ4Ó6ÐäÐ% v§~¡~´b·g±gÑ'>Ó?ˆÙœbŸk™k¨SÑ0Ø×0Ñ0Ø—‘œŸ™ TÓ*¨H°fóˆGð ×)Ñ)ØÐ)¨4ôð ˜OÑ+Ø—‘Ó(ò %�Ø×7Ñ7Ø×%Ñ%×)Ñ)¨)°RÓ8¸#¸xÈó�ô �s“8˜a’<Ø14�Cœ
 9Ó-Ñ.Ø—‘ Õ$ð%ð �Ñ&Ø×&Ñ& r¨8°VÔ<àru   Úthreadc           
      ó2  — |j                  | dd¬«      }| j                  j                  |j                  «       t	        d|d   «      }|}d}|��¯| j                  t	        d|d   «      ||«      }|��B|€Lt	        d| j                  t        «       «      j                  «       «      }|}	|j                  |t        d«      <   nat	        d| j                  t        t        d	«      |j                  i«      «      j                  «       «      }
|
j                  |t        d
«      <   |
}||t        d«      <   |j                  |t        d«      <   |d   |t        d«      <   t	        d|j                  «       «      }d|vrt        «       |t        d«      <   t	        d|d   «      j                  |j                  «       t	        d|d
   «      }||k(  r2	j                  |t        d
«      <   |j                  |	t        d	«      <   d}|��Œ¯|j                  €J ‚|j                  S )zE
        clone the thread with only the applicable articles

        T)rý   )Úforce_duplicateÚignore_fieldsr>   rý   Nr   r‡  rE  z/Nú/Tz/Rr¬  r8   )r¤   r®  rŠ   r‡   r   Ú_get_cloned_pagerd   r>   r–   rB   r8   )rp   r¿  rq   r  ÚnthreadÚfirst_articleÚcurrent_articleÚnew_articler½  Ú	new_firstÚnew_article2Úpag_objs               rs   Ú_add_articles_threadzPdfWriter._add_articles_threadœ	  s$  € ð —,‘,Ø $°gð ó 
ˆð 	�‰×Ñ˜G×6Ñ6Ô7ÜÐ/°¸±Ó>ˆØ6CˆØ26ˆØÑ)Ø×'Ñ'Ü�\ ?°4Ñ#8Ó9¸5À&óˆCð ‰ØÐ&Ü"&Ø*Ø×(Ñ(Ô)9Ó);Ó<×GÑGÓIó#�Kð !,�IØ0;×0NÑ0N�GœJ tÓ,Ò-ä#'Ø*Ø×(Ñ(Ü,Ü!+¨DÓ!1°;×3QÑ3QÐ Róó÷ %™*›,ó$�Lð 5A×4SÑ4S�K¤
¨4Ó 0Ñ1Ø".�KØ03�œJ tÓ,Ñ-Ø07×0JÑ0J�œJ tÓ,Ñ-Ø0?ÀÑ0E�œJ tÓ,Ñ-Ü˜|¨S¯^©^Ó-=Ó>�Ø˜wÑ&Ü0;³�GœJ tÓ,Ñ-Ü�] G¨D¡MÓ2×9Ñ9Ø×2Ñ2ôô #Ð#5°ÀtÑ7LÓMˆOØ -Ò/Ø09×0LÑ0L�œJ tÓ,Ñ-Ø.9×.LÑ.L�	œ* TÓ*Ñ+Ø"&�ðI Ò)ðJ ×)Ñ)Ð5Ð5Ð5Ø×)Ñ)Ð)ru   Úfltrc                 óä  — t        |t        «      rt        j                  |«      }n%t        |t        «      st        j                  d«      }|j                  «       D ]’  }|j                  }|j                  dd«      D ]o  }|j                  «       d   }|j                  j                  | j                  t        |«         vsŒE|j                  |d   d   «      sŒ]| j                  |||«       Œq Œ” y)z<
        Add articles matching the defined criteria
        rj  r¬  r¥  rÃ  r=  rù  N)r“   rž   ÚreÚcompiler   r³  r°  r  r–   r‡   r•   r^   r¢   ÚsearchrÌ  )rp   rÍ  rq   r  r¼   Úppr“  Úthrs           rs   r·  zPdfWriter.add_filtered_articlesÕ	  sÎ   € ô �dœCÔ Ü—:‘:˜dÓ#‰DÜ˜D¤'Ô*Ü—:‘:˜b“>ˆDØ—‘“ò 	BˆAØ—‘ˆBØ—V‘V˜D "Ó%ò B�Ø—l‘l“n TÑ*�Ø×)Ñ)×/Ñ/°t×7JÑ7JÜ�v“Jñ8ò à—k‘k # d¡)¨HÑ"5Õ6Ø×-Ñ-¨c°5¸&ÕAñBñ	Bru   c                 óR  — t        |t        «      ry t        |t        «      r|j                  |   j                  }nDt        |t
        «      r"|j                  dd«      dk(  r|j                  }nt        |t        «      r|}	 |j                     j                  S # t        $ r Y y w xY w)Nú/Typerj  r­  )
r“   rC   r”   rq   r‡   r>   r  rA   r•   r£   )rp   rš   rq   r  Ú_is        rs   rÄ  zPdfWriter._get_cloned_pageë	  s“   € ô �dœJÔ'ØÜ�dœCÔ Ø—‘˜dÑ#×6Ñ6‰Bô ˜Ô.Ô/°D·H±H¸WÀbÓ4IÈWÒ4TØ×(Ñ(‰BÜ˜œnÔ-ØˆBð	Ø˜Ÿ™‘?×5Ñ5Ð5øÜò 	Ùð	ús   ÂB Â	B&Â%B&Úannotsc                 óæ  — t        «       }t        |t        «      rt        d|j	                  «       «      }|D �]6  }t        d|j	                  «       «      }|d   dk7  sd|vst        d|d   «      d   dk7  sd|v rþd|vr+|j                  |j                  | «      j                  «       Œr|d   }t        |t        «      rGt        |«      | j                  «       v sŒ£|j                  |j                  | «      j                  «       ŒÎt        d	|«      }| j                  |d
   ||«      }	|	€Œó|j                  | d¬«      }
t        |	g|dd  z   «      |
t        d«      <   |j                  |
j                  «       �ŒAt        d|d   «      d   }t        |t        «      rIt        |«      | j                  «       v s�Œ€|j                  |j                  | «      j                  «       �Œ¬t        d	|«      }| j                  |d
   ||«      }	|	€�ŒÒ|j                  | d¬«      }
t        d|
«      }
t        |	g|dd  z   «      t        d|
d   «      t        d«      <   |j                  |
j                  «       �Œ9 |S )Nr   r>   r‰  r<  rÌ  rï   rá  rŠ  r8   r   )rŠ  )rÂ  r   r’  )r’  )r8   r“   rA   r   r–   rŠ   r¤   r‡   rž   r¹  rÄ  rB   )rp   r×  rš   rq   r  ÚoutlistÚanÚanor•  r¼   Úancs              rs   r¶  z&PdfWriter._insert_filtered_annotations 
  s8  € ô “-ˆÜ�fœnÔ-Ü˜& &×"3Ñ"3Ó"5Ó6ˆFØó &	?ˆBÜÐ)¨2¯=©=«?Ó;ˆCà�J‘ 7Ò*Ø˜s‘?ÜÐ*¨C°©IÓ6°tÑ<ÀÒGØ˜c‘>à #Ñ%Ø—N‘N 3§9¡9¨T£?×#EÑ#EÕFà˜G™�AÜ! !¤SÔ)ä˜q›6 T×%=Ñ%=Ó%?Ò?Ø#ŸN™N¨3¯9©9°T«?×+MÑ+MÕNä  °Ó2˜Ø ×1Ñ1°!°A±$¸¸vÓF˜Ø™=Ø"%§)¡)¨DÀ
 )Ó"K˜CÜ7BÀAÀ3ÈÈ1È2ÈÁ;Ó7O˜C¤
¨7Ó 3Ñ4Ø#ŸN™N¨3×+AÑ+AÖBäÐ+¨S°©YÓ7¸Ñ=�Ü˜a¤Ô%ä˜1“v ×!9Ñ!9Ó!;Ó;ØŸ™ s§y¡y°£×'IÑ'IÖJä˜]¨AÓ.�AØ×-Ñ-¨a°©d°E¸6ÓB�AØ’}Ø!Ÿi™i¨¸G˜iÓD˜Ü"Ð#5°sÓ;˜ô (¨¨¨a°°¨e©Ó4ô Ð/°°T±Ó;Ü& tÓ,ñð  Ÿ™ s×'=Ñ'=Ö>ðM&	?ðN ˆru   Únodec                 ó’  — g }|j                  «       }|j                  dd«      dk(  sd|vr<|j                  dd«      }|�&|j                  «       }|| j                  |||«      z  }|S |�Ý|j                  «       }t        d|j	                  |«      «      }| j                  t        d|d	   «      ||«      }|€
t        «       }||t        d	«      <   d|v r| j                  |d   ||«      |_        ng |_        t        |d	   t        «      rt        |j                  «      d
kD  r|j                  |«       |j                  dd«      }|�ŒÝ|S )zEExtract outline item entries that are part of the specified page set.rÕ  rj  ú	/Outlinesrù  ú/FirstNr=   r   r­  r   ú/Next)r–   r  r´  r   Ú_build_outline_itemrÄ  rC   rB   Úchildsr“   r‹   rŠ   )rp   rÝ  rq   r  Únew_outlineÚorÏ  s          rs   r´  zPdfWriter._get_filtered_outline3
  sM  € ð ˆØ�‰Ó ˆØ�8‰8�G˜RÓ  KÒ/°8À4Ñ3GØ—8‘8˜H dÓ+ˆDØÐØ—‘Ó(�Ø˜t×9Ñ9¸$ÀÀvÓNÑN�ð" Ðð Ð"Ø—‘Ó(�Ü˜¨×(BÑ(BÀ4Ó(HÓI�Ø×)Ñ)¬$¨|¸Q¸w¹ZÓ*HÈ%ÐQWÓX�Ø�9Ü"›�AØ)*�”*˜WÓ%Ñ&Ø˜tÑ#Ø#×9Ñ9¸$¸x¹.È%ÐQWÓX�A•Hà!�A”HÜ! ! G¡*¬jÔ9¼SÀÇÁ»]ÈQÒ=NØ×&Ñ& qÔ)Ø—x‘x ¨Ó.�ð Ñ"ð Ðru   c           
      óh  — t        «       }| j                  |«       t        |d   «      |t        d«      <   t	        |d   t
        «      s]|j                  �9d|j                  v r+|j                  d   j                  | «      |t        d«      <   n|j                  |t        d«      <   |j                  �€t        |j                  j                  dd«      «      |t        d«      <   t        |j                  j                  dt        d«      t        d«      t        d«      g«      «      |t        d«      <   |S )	Nrù  r­  rÌ  rŠ  rý   r   ú/Cg        )rI   rd   rH   rB   r“   rC   rÝ  r¤   rë   rD   r  r8   r@   )rp   rç   Ún_ols      rs   Ú_clone_outlinezPdfWriter._clone_outlineS
  sü   € Ü‹|ˆØ×Ñ˜ÔÜ%5°d¸8±nÓ%EˆŒZ˜Ó!Ñ"Ü˜$˜w™-¬Ô4Ø�y‰yÐ$¨°·±Ñ):Ø)-¯©°4©×)>Ñ)>¸tÓ)D�”Z Ó%Ò&ð -1¯O©O�”Z Ó(Ñ)à�9‰9Ð Ü%1°$·)±)·-±-ÀÀaÓ2HÓ%IˆD”˜DÓ!Ñ"Ü%0Ø—	‘	—‘Øœ; sÓ+¬[¸Ó-=¼{È3Ó?OÐPóó&ˆD”˜DÓ!Ñ"ð
 ˆru   Úoutlinesc                 ó  — |D ]{  }|j                  dd«      dk(  sd|vr|}n@| j                  |«      }t        t        |j	                  «       «      j                  ||| «       | j                  |j                  |d «       Œ} y )NrÕ  rj  rß  rù  )r  ré  r   rI   r–   rÀ  rµ  rã  )rp   rê  r–  r½  rç   Únps         rs   rµ  z"PdfWriter._insert_filtered_outlinej
  s~   € ð ò 	AˆDð �x‰x˜ Ó$¨Ò3°xÀtÑ7KØ‘à×(Ñ(¨Ó.�Ü”Z ×!2Ñ!2Ó!4Ó5×BÑBÀ2ÀvÈtÔTØ×)Ñ)¨$¯+©+°r¸4Õ@ñ	Aru   c                  ó   — y)z"To match the functions from MergerNr¥  rw   s    rs   rl  zPdfWriter.closez
  s   € àru   c                 óL  — |€| j                  «       }nt        d|«      }d}|��|j                  |k(  s|j                  dd «      |k(  r|gS d|v r4| j	                  |t        t
        |d   «      «      }|rd|v r|g|z   S g |z   S d|v r|dz  }t        t        |d   «      }ny |�Œ€y y )NrI   r   rù  rà  rá  r   )r«  r   r‡   r  Úfind_outline_itemrR   rI   )rp   rÉ  r�  rå  rx  Úress         rs   rï  zPdfWriter.find_outline_item
  sÈ   € ð
 ˆ<Ø×%Ñ%Ó'‰Aä�\ 4Ó(ˆAàˆØˆmà×$Ñ$¨Ò4Ø—5‘5˜ 4Ó(¨LÒ8à�s�
à˜q‘=Ø×0Ñ0Ø$¤d¬;¸¸(¹Ó&Dó�Cñ Ø'/°1¡}  ÀÑCÐC¸"ÀÑCÐCØ˜!‰|Ø�Q‘�Üœ Q w¡ZÓ0‘àð# ‹mru   c                 ó&   — | j                  ||«      S )zZ
        .. deprecated:: 2.9.0
            Use :meth:`find_outline_item` instead.
        )rï  )rp   rÉ  r�  s      rs   Úfind_bookmarkzPdfWriter.find_bookmark�
  s   € ð ×%Ñ% l°DÓ9Ð9ru   c                 ó  — |€i | _         yt        |t        «      r	 | j                   t        |«      = yt        |t
        «      r"	 | j                   t        |j                  «      = yt	        d«      ‚# t        $ r Y yw xY w# t        $ r Y yw xY w)a)  
        reset the translation table between reader and the writer object.
        late cloning will create new independent objects

        :param reader: PdfReader or IndirectObject refering a PdfReader object.
                       if set to None or omitted, all tables will be reset.
        Nzinvalid parameter {reader})r^   r“   r   r¢   r£   rA   r‰   r/  s     rs   Úreset_translationzPdfWriter.reset_translation©
  sŽ   € ð ˆ>Ø"$ˆDÕÜ˜¤	Ô*ðØ×'Ñ'¬¨6«
Ñ3ô ˜¤Ô/ðØ×'Ñ'¬¨6¯:©:«Ñ7ô Ð8Ó9Ð9øô ò Ùðûô
 ò Ùðús#   œA0 Á A? Á0	A<Á;A<Á?	BÂ
B)rj  )rX   rV   )NN)r¥  )rX   N)r   r¥  )NNr   r„   )NNNN)NNFFú/Fit)F)Nrõ  )NNTN)NNTr¥  )«r  Ú
__module__Ú__qualname__Ú__doc__r   rt   rx   r   r   ÚBaseExceptionr   r~   Úpropertyrà   r�   ÚsetterrE   rA   rd   r   r”   r–   r˜   r   r   r
   r   rž   r¨   r±   r´   r¶   r¿   rÁ   rÆ   rÈ   rÊ   rÌ   r   rq   rS  rÒ   rÔ   ÚdecimalÚDecimalrØ   rÚ   r=   rH   r:   ræ   r÷   rù   r  r
  r   r  r  ÚOPTIONAL_READ_WRITE_FIELDr   r,   r(  r*  r0  r2  r4  r6  ÚALL_DOCUMENT_PERMISSIONSr¦  r5   r\  r   rh  r   r   r	   r}   rc  rd  re  rŠ  rŒ  r8   r9   r>   r@   rB   rD   rC   rb  r’  r¤  r¦  rI   r«  r¯  r®  r²  r¹  r»  rÂ  rÄ  rÈ  r#   rQ   rÒ  rÔ  rØ  r6   r?   râ  rO   rT   ré  rð  ró  r÷  rú  rü  r   r  r  r  r.  r1  r4  r6  rF   rH  rJ  rL  rX  rc  rP   r[  r_  rf  ri  rk  r`  ro  rz  rS   rt  rw  r|  r  rx  rƒ  rU  r—  r   r   r¡  rL   rŠ   rM   r§  rÌ  r   r·  rÄ  r¶  r´  ré  rµ  rl  rR   rï  rò  rô  r¥  ru   rs   rV   rV   …   sr  „ ññ
&# ð &#°Tó &#óPð
%à˜4 Ñ.Ñ/ð%ð �mÑ$ð%ð ˜MÑ*ð	%ð
 
ó%ð ð˜Eò ó ðð ×Ñð" Uð "¨tò "ó ð"ð&˜yð &¨^ó &ð @DØ(,ñ;à! $¨¨^Ð";Ñ<ð;ð �nÑ%ð;ð 
ó	;ð2	$Ø˜˜nÐ,Ñ-ð	$à	ó	$ð (*ñ	 àð ð ˜#˜~Ð.°Ð4Ñ5ð ð   ‘}ð	 ð
 
ó óDNð. (*ñ@àð@ð   ‘}ð@ð 
ó	@ð( (*ñ2àð2ð   ‘}ð2ð 
ó	2ð  Ø')ñ	EàðEð ðEð   ‘}ð	Eð
 
óEð$ Ø')ñ	<àð<ð ð<ð   ‘}ð	<ð
 
ó<ð NRñJØ# C™=ðJØ=EÀc¹]ðJà	óJð.) #ð )¨*ó )ð0 ó 0ð%˜Só %ð ð@�t˜JÑ'ò @ó ð@ð
 HLñØ˜e‘_ðØ5=¸e±_ðà	óð( HLñ	2Ø˜e‘_ð	2Ø5=¸e±_ð	2à	ó	2ð ,0Ø,0Øñ	à˜Ÿ™Ñ(ðð ˜Ÿ™Ñ)ðð ð	ð
 
óð: ,0Ø,0Øñ	<à˜Ÿ™Ñ(ð<ð ˜Ÿ™Ñ)ð<ð ð	<ð
 
ó<ð ðà	ˆt�[Ð"2Ð4DÐDÑ	Eòó ðð< ×Ñð U¨4°°kÀ:Ð+MÑ%Nð ÐSWò ó ðð& - ð  -¨ó  -ðD' ð '¨ó 'ðPT sð PT°%¸¸U¸
Ñ2Cð PTÈó PTðd	1Øð	1Ø!& s¨E zÑ!2ð	1à	ó	1ð EIñ/àð/ð $ H¨j¨\¸4Ð-?Ñ$@ÑAð/ð 
ó	/ð> EIñAàðAð $ H¨j¨\¸4Ð-?Ñ$@ÑAðAð 
ó	Að& 5ñ	?àð?ð �S˜#�X‘ð?ð ð	?ð
 
ó?ðJ 5ñ	GàðGð �S˜#�X‘ðGð ð	Gð
 
óGð L°ð L¸tó Lð	0¨ið 	0¸Dó 	0ð EIñAàðAð $ H¨j¨\¸4Ð-?Ñ$@ÑAðAð 
ó	Að. EIñCàðCð $ H¨j¨\¸4Ð-?Ñ$@ÑAðCð 
ó	Cð" (,Ø(,ØØ2JØ"&Ø#'ñ\ à ‘}ð\ ð ! ™ð\ ð ð	\ ð
 0ð\ ð ˜3‘-ð\ ð ˜C‘=ð\ ð 
ó\ ð|C :ð C°$ó Cð4˜E $¨Ð"3Ñ4ð ¸¸tÀR¸x¹ó ð4  Jð  °4¸±9ó  ð.¨
ð ÀdÈ3Áið ÐTWó ð. Zð .°Dó .ð 
1 $ s¨C x¡.ð 
1°Tó 
1ð!  c¨3 h¡ð !°Dó !ðO3àØØØØØØØØØØð	ñ
ðO3ð 
óO3ðb$,¨^ð $,Àó $,ðL ð ¨~ó ð' 	ð '¨nó 'ð *ó ð +ó ð ð'˜ò 'ó ð'ð' 
ó 'ð! [ó !ðF* +ó *ð AEØ:>Ø:>Ø48ñ#$à  j°*Ð <Ñ=ð#$ð �d˜J¨Ð6Ñ7ð#$ð �d˜J¨Ð6Ñ7ð	#$ð
 �D˜* jÐ0Ñ1ð#$ð 
ó#$ðP ;?ñ?à�J 
Ð*Ñ+ð?ð �d˜J¨Ð6Ñ7ð?ð 
ó	?ð  @Dñ?Øð?Ø(0°Ñ(<ð?à	ó?ñ  >Ô2ð ;?Ø:>ñ	Và%ðVð �d˜J¨Ð6Ñ7ðVð �d˜J¨Ð6Ñ7ð	Vð
 
òVó 3ðVñ*  >Ô2àLPñ@Ø+ð@Ø5=¸jÑ5Ið@à	ò@ó 3ð@ñ  >Ô2àLPñ@Ø+ð@Ø5=¸jÑ5Ið@à	ò@ó 3ð@ð" ;?Ø:>ØBFØØØØ!%ñJOàðJOð ˜4 ¨^¸SÐ@ÑAðJOð �d˜J¨Ð6Ñ7ð	JOð
 �d˜J¨Ð6Ñ7ðJOð ˜˜e E¨5°%Ð$7Ñ8¸#Ð=Ñ>Ñ?ðJOð ðJOð ðJOð ðJOð ˜#‘ðJOð 
óJOð` ;?Ø6:ØØØñ
àð
ð ð
ð �d˜J¨Ð6Ñ7ð	
ð
 ˜˜e U¨EÐ1Ñ2Ñ3ð
ð ð
ð ð
ð ð
ð ð
ð 
ó
ð> ;?Ø6:ØØØñ
àð
ð ð
ð �d˜J¨Ð6Ñ7ð	
ð
 ˜˜e U¨EÐ1Ñ2Ñ3ð
ð ð
ð ð
ð ð
ð ð
ð 
ó
ó8
ð
Ø%ðØ49¸.È+Ð:UÑ4Vðà	óð" 15Ø$(ñ$à" 9Ñ-ð$ð �yÑ!ð$ð 
ó	$ð<7Øð7à	ó7ð  &*Ø!%ñ	'àð'ð ˜c‘]ð'ð ˜#‘ð	'ð
 
ó'ðR:Øð:Ø#&ð:à	ó:ó(ó#ñKC°tð KCÈó KCð\ .3ñ	:Ø&*ð	:à	ó	:ñ*C°Tð *CÀdó *CðZ .3ñ	8Ø&*ð	8à	ó	8ð  )-Ø!%ñIEàðIEð ðIEð ð	IEð
 ˜Ñ%ðIEð ˜#‘ðIEð 
óIEð` )-ñ8àð8ð ð8ð ð	8ð
 ˜Ñ%ð8ð 
ó8ð( )-ØñOàðOð ðOð ð	Oð
 ˜Ñ%ðOð ðOð ðOð 
óOðH )-ØñRàðRð ðRð ð	Rð
 ˜Ñ%ðRð ðRð ðRð 
óRð&€Nð (¨:Ñ"6ó ð'˜x¨
Ñ3ó 'ðF u¨Z¸Ð-CÑ'Dð FÈó FðB& jð &°Tó &ð4	- Jð 	-°4ó 	-ð ð'˜X jÑ1ò 'ó ð'ð0 ×Ñð& *ð &°ò &ó ð&ð ð ˜H ZÑ0ò  ó ð ð ×Ñð" ð "°ò "ó ð"ð€Lð ¨Ñ 6ó ð%˜X lÑ3ó %ðG ,ð G°4ó Gð 	! ð 	!°ó 	!ð ð%˜8 LÑ1ò %ó ð%ð, ×Ñð!˜lð !¨tò !ó ð!ð ð˜( <Ñ0ò ó ðð ‡_�_ð˜\ð ¨dò ó ðð)¨#ð )¸4ÀÀSÀ¹>ð )Èdó )ð2˜u Z°Ð%?Ñ@ð ÀZó ð&"&Ø˜T ;°	Ð9Ñ:ð"&à	ˆv�x 
Ñ+Ð+Ñ	,ó"&ðR ð Ø#ØGKñ3à�{ I¨tÐ3Ñ4ð3ð Ø��y %¨¨S¨¡/°5¸¸cÀ3¸Ñ3GÈÈcÉÐRñ
ð3ð Ø�)˜U 3¨ 8™_¨e°C¸¸c°MÑ.BÀDÈÁIÐMñ
ð3ð ð3ð " %¨¨S©	°5¸¸c¸±?Ð(BÑ"CÑDð3ð 
ó3ñj  >ÐDTÔUð
 '+Ø)-Ø#ØGIñà˜3‘-ðð �t˜[¨)Ð3Ñ4ðð ˜s‘mð	ð
 ˜Ñ&ðð ðð " %¨¨S©	°5¸¸c¸±?Ð(BÑ"CÑDðð 
òó VððB7*à ð7*ð �C˜�OÑ$ð7*ð ð	7*ð
 
ó7*ðrBà�G˜S�LÑ!ðBð �C˜�OÑ$ðBð ð	Bð
 
óBð,à�D˜#˜~¨z¸:ÐEÑFðð �C˜�OÑ$ðð ð	ð
 
�.Ñ	!óð*1à�n dÐ+;Ñ&<Ð<Ñ=ð1ð ð1ð �C˜�OÑ$ð	1ð
 ð1ð 
ˆkÑ	ó1ðfàðð �C˜�OÑ$ðð ð	ð
 
ˆkÑ	óð@ ;ð °:ó ð6 ;?ñ	Aà�{Ñ#ðAð �j .Ð0Ñ1ðAð �d˜J¨Ð6Ñ7ð	Að
 
óAó ð '+ñà˜3 ˜8‘nðð �{Ñ#ðð 
�$�s‘)Ñ	ó	ñ<  >Ô2ð '+ñ	:à˜3 ˜8‘nð	:ð �{Ñ#ð	:ð 
�$�s‘)Ñ	ò		:ó 3ð	:ð @Dñ:Ø˜D )¨^Ð;Ñ<ð:à	ô:ru   rV   r…   rX   c                 ó  — t        | t        «      r| S t        | t        «      r?t        «       }| j	                  «       D ]   \  }}t        |«      }t        |«      }|||<   Œ" |S t        | t        «      r-t        «       }| D ]  }|j                  t        |«      «       Œ |S t        | t        «      r'| j                  d«      rt        | «      S t        | «      S t        | t        t        f«      rt        | «      S t!        dt#        | «      › d�«      ‚)Nrà  z
type(obj)=z! could not be casted to PdfObject)r“   rE   r�  r>   r‡  rB   r‹  r    r8   rŠ   rž   Ú
startswithrH   r”   rS  r@   rò  Útype)r…   rŽ  r[  r‰  Úname_keyÚcasted_valuerº  Úels           rs   r‹  r‹  Ã
  sø   € Ü�#”yÔ!Øˆ
Ü�#”tÔÜ!Ó#ˆØŸ)™)›+ò 	,‰JˆC�Ü! #“ˆHÜ)¨%Ó0ˆLØ+ˆF�8Òð	,ð ˆÜ	�CœÔ	Ü‹mˆØò 	+ˆBØ�J‰J”~ bÓ)Õ*ð	+àˆ
Ü	�CœÔ	Ø�>‰>˜#ÔÜ˜c“?Ð"ä# CÓ(Ð(Ü	�Cœ#œu˜Ô	&Ü˜3ÓÐä!Øœ˜c›˜Ð#DÐEó
ð 	
ru   rÑ  rÙ  rÚ  rÜ  rÛ  c                 ó   — t        «       }| �| |t        d«      <   |j                  t        d«      t        |«      i«       |rŽt	        |t
        «      rt        |«      }t        j                  d«      }|j                  t        d«      t        |D �cg c]/  }t        t        j                  |«      j                  |«      «      ‘Œ1 c}«      i«       |s|r5d}|r|dz  }|r|dz  }|j                  t        d«      t        |«      i«       |S c c}w )	NrÌ  rù  z1.00000rç  r   r   rÝ   rý   )rI   rB   r_   rJ   r“   rž   rK   rü  rý  r8   r@   ÚquantizerD   )	rÑ  rÙ  rÚ  rÜ  rÛ  rÉ  ÚprecÚcÚformat_flags	            rs   ræ  ræ  ß
  s  € ô “<€LØÐØ)3ˆ”Z Ó%Ñ&Ø×Ñä�xÓ Ô"6°uÓ"=ð	
ôñ
 Ü�eœSÔ!Ü˜uÓ%ˆEÜ�‰˜yÓ)ˆØ×Ñä˜4Ó ¤+ØMRÖSÈ”[¤§¡°Ó!3×!<Ñ!<¸TÓ!BÕCÒSó#ðô	
ñ ‘ØˆÙØ˜1ÑˆKÙØ˜1ÑˆKØ×ÑœZ¨Ó-¬|¸KÓ/HÐIÔJØÐùò Ts   Â4Dc                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )ÚPdfFileWriterrˆ  ÚkwargsrX   Nc                 ó>   •— t        ddd«       t        ‰| �  |i |¤Ž y )Nr  rV   r™   )r$   Úsuperrt   )rp   rˆ  r  rŸ  s      €rs   rt   zPdfFileWriter.__init__  s!   ø€ Ü$ _°kÀ7ÔKÜ‰Ñ˜$Ð) &Ó)ru   )r  rö  r÷  r
   rt   Ú__classcell__)rŸ  s   @rs   r  r    s"   ø„ ð*˜cð *¨Sð *°T÷ *ñ *ru   r  )|rf   r�  rü  ÚloggingrI  rÏ  rt  rG  rò   r�   Úhashlibr   Úior   r   r   Úpathlibr   Útypesr   Útypingr	   r
   r   r   r   r   r   r   r   r   r   r   r   rœ  r   Ú_pager   r   Ú_readerr   Ú	_securityr   r   r   Ú_utilsr   r   r    r!   r"   r#   r$   r%   Ú	constantsr&   r'   rð   r(   r)   rk   r*   rN  r+   r,   r-   r.   r/   r0   r  r1   r`   r2   rK  r3   r-  r4   r5   Úgenericr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Ú	pagerangerL   rM   rN   rO   rP   rQ   rR   rS   rT   Ú	getLoggerr  r¬   rþ  rÿ  rV   rž   r”   r‹  rS  r¦  ræ  r  r¥  ru   rs   ú<module>r     s˜  ðó< Û Û Û Û Û 	Û Û Û Û Ý ß &Ñ &Ý Ý ÷÷ ÷ õ õ  $ß +Ý ß -Ñ -÷	÷ 	ó 	õ 6Ý .Ý (Ý !Ý 5÷õ õ ,Ý ,Ý -Ý (ß =÷÷ ÷ ÷ ÷ ÷ ÷0 0÷÷ ñ ð 
ˆ×	Ñ	˜8Ó	$€ñ & a›LÐ Ù0°ÓAÐ ÷{(:ñ {(:ð|Q
˜˜d 3¨ 8™n¨c°3¸¸S¹	ÐAÑBð 
Àyó 
ð8!Ø�d˜NÐ*Ñ+ð!àð!ð ��u˜e UÐ*Ñ+¨S°$Ð6Ñ7ð!ð ð	!ð
 ð!ð ó!ôH*�Iõ *ru   