Ë
    ¨ehe› ã                   óJ  — d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlZdd	lmZmZmZmZmZ dd
l m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddlm?Z? ddl@mAZA  ej„                  eC«      ZDd<d„ZEd„ ZFd„ ZGd=d„ZHd=d„ZId=d„ZJeKj™                  dddd d!d"œ«      ZMd#„ ZNd$„ ZO G d%„ d&«      ZPe G d'„ d(«      «       ZQ G d)„ d*«      ZR G d+„ d,e«      ZS G d-„ d.«      ZTd/„ ZU G d0„ d1«      ZV G d2„ d3eAj®                  «      ZX G d4„ d5e&«      ZY G d6„ d7«      ZZ G d8„ d9e$«      Z[e%Z\e#jº                   G d:„ d;e#«      «       Z^y)>uO   
A PDF Matplotlib backend.

Author: Jouni K SeppÃ¤nen <jks@iki.fi> and others.
é    N)Útimezone)Údatetime)ÚEnum)Útotal_ordering)ÚBytesIO)ÚImage)Ú_apiÚ_text_helpersÚ
_type1fontÚcbookÚdviread)ÚGcf)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚGraphicsContextBaseÚRendererBase)ÚMixedModeRenderer)ÚFigure)Úget_fontÚfontManager)ÚAFM)ÚFT2FontÚ	FaceFlagsÚKerningÚ	LoadFlagsÚ
StyleFlags)ÚAffine2DÚBboxBase)ÚPath)ÚUTC)Ú_pathé   )Ú_backend_pdf_psc                 ó"  — d}d}g }t        | «      D ]H  \  }}t        |«      }||z   |k  r	||dz   z  }Œ"|j                  dj                  | || «      «       |}|}ŒJ |j                  dj                  | |d «      «       dj                  |«      S )z­
    Make one string from sequence of strings, with whitespace in between.

    The whitespace is chosen to form lines of at most *linelen* characters,
    if possible.
    r   r#   ó    Nó   
)Ú	enumerateÚlenÚappendÚjoin)ÚstringsÚlinelenÚcurrposÚlastiÚresultÚiÚsÚlengths           ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/backends/backend_pdf.pyÚ_fillr5   _   s¡   € ð €GØ€EØ€FÜ˜'Ó"ò ‰ˆˆ1Ü�Q“ˆØ�VÑ˜gÒ%Ø�v ‘zÑ!‰Gà�M‰M˜$Ÿ)™) G¨E°!Ð$4Ó5Ô6ØˆEØ‰Gðð ‡M�M�$—)‘)˜G E F˜OÓ,Ô-Ø�:‰:�fÓÐó    c           
      óô  — t        j                  d«      }|rDt        j                  t	        |«      t
        j                  «      }|j                  t        ¬«      }nt        j                  «       }dt        j                  › d�d| › dt        j                  › �|dœ|¥}|j                  «       D ��ci c]  \  }}|€Œ	||“Œ }}}d„ }d	|_        d
„ }d|_        d„ }	d|	_        |||||||||	dœ	}
|D ]j  }||
vr&t        j                  d|›dt!        |
«      ›d�«       Œ- |
|   ||   «      rŒ<t        j                  d|› d||   ›d|
|   j                  › d�«       Œl d|v rt#        |d   «      |d<   |S c c}}w )aÓ  
    Create a PDF infoDict based on user-supplied metadata.

    A default ``Creator``, ``Producer``, and ``CreationDate`` are added, though
    the user metadata may override it. The date may be the current time, or a
    time set by the ``SOURCE_DATE_EPOCH`` environment variable.

    Metadata is verified to have the correct keys and their expected types. Any
    unknown keys/types will raise a warning.

    Parameters
    ----------
    backend : str
        The name of the backend to use in the Producer value.

    metadata : dict[str, Union[str, datetime, Name]]
        A dictionary of metadata supplied by the user with information
        following the PDF specification, also defined in
        `~.backend_pdf.PdfPages` below.

        If any value is *None*, then the key will be removed. This can be used
        to remove any pre-defined values.

    Returns
    -------
    dict[str, Union[str, datetime, Name]]
        A validated dictionary of metadata.
    ÚSOURCE_DATE_EPOCH)ÚtzinfozMatplotlib vz, https://matplotlib.orgzMatplotlib z
 backend v)ÚCreatorÚProducerÚCreationDatec                 ó"   — t        | t        «      S ©N)Ú
isinstanceÚstr©Úxs    r4   Úis_string_likez-_create_pdf_info_dict.<locals>.is_string_like¤   s   € Ü˜!œSÓ!Ð!r6   zan instance of strc                 ó"   — t        | t        «      S r>   )r?   r   rA   s    r4   Úis_datez&_create_pdf_info_dict.<locals>.is_date¨   s   € Ü˜!œXÓ&Ð&r6   z an instance of datetime.datetimec                 óF   — t        | t        «      r| j                  dv S | dv S )N)s   Trues   Falses   Unknown)ÚTrueÚFalseÚUnknown©r?   ÚNameÚnamerA   s    r4   Úcheck_trappedz,_create_pdf_info_dict.<locals>.check_trapped¬   s(   € Ü�aœÔØ—6‘6Ð<Ð<Ð<àÐ4Ð4Ð4r6   z#one of {"True", "False", "Unknown"})	ÚTitleÚAuthorÚSubjectÚKeywordsr:   r;   r<   ÚModDateÚTrappedzUnknown infodict keyword: z. Must be one of ú.zBad value for infodict keyword z. Got z which is not rS   )ÚosÚgetenvr   ÚfromtimestampÚintr   ÚutcÚreplacer!   ÚtodayÚmplÚ__version__ÚitemsÚtext_for_warningr	   Úwarn_externalÚsetrK   )ÚbackendÚmetadataÚsource_date_epochÚsource_dateÚinfoÚkÚvrC   rE   rM   Úkeywordss              r4   Ú_create_pdf_info_dictrj   u   sÆ  € ô@ Ÿ	™	Ð"5Ó6ÐÙÜ×,Ñ,¬SÐ1BÓ-CÄXÇ\Á\ÓRˆØ!×)Ñ)´Ð)Ó5‰ä—n‘nÓ&ˆð "¤#§/¡/Ð!2Ð2JÐKØ! ' ¨*´S·_±_Ð4EÐFØ#ñð ð	€Dð  $Ÿz™z›|×=‘V�a˜¨q©}ˆAˆq‰DÐ=€DÑ=ò"à&:€NÔ#ò'àA€GÔò5ð
 &K€MÔ"ð  Ø Ø!Ø"Ø!Ø"ØØØ ñ
€Hð ò CˆØ�HÑÜ×ÑÐ!;¸A¸5ð A1Ü14°X³Ð0AÀð Dõ Eà�˜!‘˜T !™WÕ%Ü×ÑÐ!@ÀÀð D&Ø&*¨1¡g [°Ø"*¨1¡+×">Ñ">Ð!?¸qð Bõ CðCð �DÑÜ˜t I™Ó/ˆˆY‰à€KùóO >s   Â1
E4Â<E4c                 ó2  — | j                  d«      }| j                  «       }|�|j                  }n1t        j                  rt        j
                  }nt        j                  }|dk(  r|dz  }|S |dk  r|d| dz  | dz  fz  z  }|S |d|dz  |dz  fz  z  }|S )zX
    Convert a datetime to a PDF string representing it.

    Used for PDF and PGF.
    zD:%Y%m%d%H%M%Sr   ÚZz+%02d'%02d'i  z-%02d'%02d')ÚstrftimeÚ	utcoffsetÚsecondsÚtimeÚdaylightÚaltzoner   )ÚdÚrÚzs      r4   Ú_datetime_to_pdfrv   Ì   s¯   € ð 	
�
‰
Ð#Ó$€AØ	�‰‹€AØ€}Ø�I‰I‰ä�=Š=Ü—‘‰Aä—‘ˆAØˆA‚vØ	ˆS‰ˆð
 €Hð	 
ˆQŠØ	ˆ] ˜r d™l¨a¨R°4©KÐ8Ñ8Ñ8ˆð €Hð 	
ˆ]˜a 4™i¨¨T©Ð2Ñ2Ñ2ˆØ€Hr6   c                 ó  — t        j                  | «      }t        j                  |«      }t        j                  |«      }| ||z  z   }|||z  z   }| ||z  z   ||z  z   }	|||z  z
  ||z  z   }
| ||z  z   }|||z  z
  }| |f||f|	|
f||ffS )zR
    Calculate the coordinates of rectangle when rotated by angle around x, y
    )ÚmathÚradiansÚsinÚcos)rB   ÚyÚwidthÚheightÚangleÚ	sin_angleÚ	cos_angleÚaÚbÚcrs   ÚeÚfs                r4   Ú!_calculate_quad_point_coordinatesr‡   ä   s»   € ô
 �L‰L˜%˜Ó €EÜ—‘˜“€IÜ—‘˜“€IØ	ˆF�YÑÑ€AØ	ˆF�YÑÑ€AØ	ˆE�IÑÑ ¨Ñ 2Ñ2€AØ	ˆE�IÑÑ ¨Ñ 2Ñ2€AØ	ˆE�IÑÑ€AØ	ˆE�IÑÑ€AØ�ˆF�Q˜�F˜Q ˜F Q¨ FÐ+Ð+r6   c                 ó6  — t        | ||||«      }|dz  rdnd}t        d„ |D «       «      |z
  }t        d„ |D «       «      |z
  }t        d„ |D «       «      |z   }	t        d„ |D «       «      |z   }
t        t        j
                  j                  |«      «      |||	|
ffS )zg
    Get the coordinates of rotated rectangle and rectangle that covers the
    rotated rectangle.
    éZ   gñhãˆµøä>r   c              3   ó&   K  — | ]	  }|d    –— Œ y­w©r   N© ©Ú.0rh   s     r4   ú	<genexpr>z,_get_coordinates_of_block.<locals>.<genexpr>  ó   è ø€ Ò'˜��!•Ñ'ùó   ‚c              3   ó&   K  — | ]	  }|d    –— Œ y­w©r#   NrŒ   r�   s     r4   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r�   r‘   c              3   ó&   K  — | ]	  }|d    –— Œ y­wr‹   rŒ   r�   s     r4   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r�   r‘   c              3   ó&   K  — | ]	  }|d    –— Œ y­wr“   rŒ   r�   s     r4   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r�   r‘   )r‡   ÚminÚmaxÚtupleÚ	itertoolsÚchainÚfrom_iterable)rB   r|   r}   r~   r   ÚverticesÚpadÚmin_xÚmin_yÚmax_xÚmax_ys              r4   Ú_get_coordinates_of_blockr¢   õ   sª   € ô 1°°A°uØ17¸ó@€Hð ˜R’Z‰' Q€CÜÑ'˜hÔ'Ó'¨#Ñ-€EÜÑ'˜hÔ'Ó'¨#Ñ-€EÜÑ'˜hÔ'Ó'¨#Ñ-€EÜÑ'˜hÔ'Ó'¨#Ñ-€EÜ”)—/‘/×/Ñ/°Ó9Ó:Ø�E˜5 %Ð(ð*ð *r6   c                 óª   — t        |||||«      \  }}t        d«      t        d«      |g d¢t        d«      | j                  «       dœdœ}|dz  r||d<   |S )	z=
    Create a link annotation object for embedding URLs.
    ÚAnnotÚLink©r   r   r   ÚURI)ÚSr§   )ÚTypeÚSubtypeÚRectÚBorderÚAr‰   Ú
QuadPoints)r¢   rK   Úget_url)	ÚgcrB   r|   r}   r~   r   Ú
quadpointsÚrectÚlink_annotations	            r4   Ú_get_link_annotationr´     sd   € ô 1°°A°u¸fÀeÓLÑ€J�ä�W“Ü˜“<ØÚä�e“Ø—:‘:“<ñ
ñ	€Oð ˆr‚zà(2ˆ˜Ñ%ØÐr6   z\\z\(z\)z\nz\r)ú\ú(ú)ú
úc                 ó,  — t        | d«      r| j                  «       S t        | t        t        j
                  f«      rEt	        j                  | «      st        d«      ‚d| z  }|j                  d«      j                  d«      S t        | t        «      rddg|    S t        | t        t        j                  f«      rd| z  S t        | t        «      rPt        | j                  «       r| j                  d	«      «      S t        j                   | j                  d
«      z   «      S t        | t"        «      r9d| j%                  d«      j'                  t(        «      j                  d«      z   dz   S t        | t*        «      rWt-        dg| j/                  «       D ��cg c]-  \  }}t1        |«      j                  «       dz   t        |«      z   ‘Œ/ c}}¢d‘«      S t        | t2        t4        f«      r't-        dg| D �cg c]  }t        |«      ‘Œ c}¢d‘«      S | €yt        | t6        «      rt        t9        | «      «      S t        | t:        «      r,t-        | j<                  D �cg c]  }t        |«      ‘Œ c}«      S t?        dtA        | «      › d�«      ‚c c}}w c c}w c c}w )z!Map Python objects to PDF syntax.ÚpdfReprz%Can only output finite numbers in PDFs   %.10fó   0ó   .s   falses   trues   %dÚasciizUTF-16BEó   (zlatin-1ó   )s   <<r&   s   >>ó   [ó   ]s   nullz$Don't know a PDF representation for z objects)!Úhasattrr»   r?   ÚfloatÚnpÚfloatingÚisfiniteÚ
ValueErrorÚrstripÚboolrX   Úintegerr@   ÚisasciiÚencodeÚcodecsÚBOM_UTF16_BEÚbytesÚdecodeÚ	translateÚ_str_escapesÚdictr5   r^   rK   Úlistr˜   r   rv   r   ÚboundsÚ	TypeErrorÚtype)Úobjrt   rg   rh   Úvals        r4   r»   r»   +  sW  € ô ˆs�IÔØ�{‰{‹}Ðô
 
�Cœ%¤§¡Ð-Ô	.Ü�{‰{˜3ÔÜÐDÓEÐEØ�s‰NˆØ�x‰x˜‹~×$Ñ$ TÓ*Ð*ô 
�CœÔ	Ø˜'Ð" 3Ñ'Ð'ô 
�Cœ#œrŸz™zÐ*Ô	+Ø�s‰{Ðô 
�CœÔ	Ü¨c¯k©k¬m�s—z‘z 'Ó*ó Jð 	JÜ"×/Ñ/°#·*±*¸ZÓ2HÑHóJð 	Jô 
�CœÔ	àØ�J‰J�yÓ!×+Ñ+¬LÓ9×@Ñ@ÀÓKñLàñð	ô 
�CœÔ	ÜØð
à@CÇ	Á	Ã×L¹¸¸1Œd�1‹g�o‰oÓ $Ñ&¬°«Ó3ÓLð
ð ð
ó ð 	ô 
�Cœ$¤˜Ô	'Ü�dÐA°cÖ:¨sœg c�lÒ:ÐA¸DÐAÓBÐBð 
ˆØô 
�CœÔ	"ÜÔ'¨Ó,Ó-Ð-ô 
�CœÔ	"Ü¨c¯j©jÖ9 s”g˜c•lÒ9Ó:Ð:ô Ð>¼tÀC»y¸kð J"ð "ó #ð 	#ùó+ Mùò ;ùò :s   Æ2JÇ/J
ÉJc                 ó>   — | dk(  r|dk  S | dk(  r|dk  S t        «       ‚)a  
    Returns True if the font is able to provide codepoint *glyph* in a PDF.

    For a Type 3 font, this method returns True only for single-byte
    characters. For Type 42 fonts this method return True if the character is
    from the Basic Multilingual Plane.
    é   éÿ   é*   éÿÿ  )ÚNotImplementedError)ÚfonttypeÚglyphs     r4   Ú_font_supports_glyphrã   t  s/   € ð �1‚}Ø˜‰|ÐØ�2‚~Ø˜‰~ÐÜ
Ó
Ðr6   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)Ú	ReferencezV
    PDF reference object.

    Use PdfFile.reserveObject() to create References.
    c                 ó   — || _         y r>   ©Úid©Úselfrè   s     r4   Ú__init__zReference.__init__Š  s	   € Øˆ�r6   c                 ó    — d| j                   z  S )Nz<Reference %d>rç   ©rê   s    r4   Ú__repr__zReference.__repr__�  s   € Ø $§'¡'Ñ)Ð)r6   c                 ó    — d| j                   z  S )Ns   %d 0 Rrç   rí   s    r4   r»   zReference.pdfRepr�  s   € Ø˜4Ÿ7™7Ñ"Ð"r6   c                 óx   — |j                   } |d| j                  z  «        |t        |«      «        |d«       y )Nó	   %d 0 obj
s   
endobj
)Úwriterè   r»   )rê   ÚcontentsÚfilerò   s       r4   rò   zReference.write“  s1   € Ø—
‘
ˆÙˆm˜dŸg™gÑ%Ô&ÙŒg�hÓÔ ÙˆmÕr6   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rë   rî   r»   rò   rŒ   r6   r4   rå   rå   ƒ  s   „ ñòò*ò#ór6   rå   c                   ó¼   — e Zd ZdZdZh  ed«      £h  e ed«       ed«      dz   «      £z
  D � �ci c]  }|d|z  “Œ
 c}} Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zyc c}} w )rK   zPDF name object.©rL   é   ú!ú~r#   z#%02xc                 óè   — t        |t        «      r|j                  | _        y t        |t        «      r|j	                  d«      }|j                  | j                  «      j                  d«      | _        y )Nr¾   )r?   rK   rL   rÐ   rÑ   rÒ   Ú_hexifyrÍ   )rê   rL   s     r4   rë   zName.__init__¡  sN   € Ü�dœDÔ!ØŸ	™	ˆD�Iä˜$¤Ô&Ø—{‘{ 7Ó+�ØŸ™ t§|¡|Ó4×;Ñ;¸GÓDˆD�Ir6   c                 ó    — d| j                   z  S )Nz	<Name %s>rú   rí   s    r4   rî   zName.__repr__©  s   € Ø˜TŸY™YÑ&Ð&r6   c                 ó>   — d| j                   j                  d«      z   S )Nú/r¾   )rL   rÑ   rí   s    r4   Ú__str__zName.__str__¬  s   € Ø�T—Y‘Y×%Ñ% gÓ.Ñ.Ð.r6   c                 óX   — t        |t        «      xr | j                  |j                  k(  S r>   rJ   ©rê   Úothers     r4   Ú__eq__zName.__eq__¯  s!   € Ü˜%¤Ó&ÒB¨4¯9©9¸¿
¹
Ñ+BÐBr6   c                 óX   — t        |t        «      xr | j                  |j                  k  S r>   rJ   r  s     r4   Ú__lt__zName.__lt__²  s!   € Ü˜%¤Ó&ÒA¨4¯9©9°u·z±zÑ+AÐAr6   c                 ó,   — t        | j                  «      S r>   )ÚhashrL   rí   s    r4   Ú__hash__zName.__hash__µ  s   € Ü�D—I‘I‹Ðr6   c                 ó    — d| j                   z   S )Nó   /rú   rí   s    r4   r»   zName.pdfRepr¸  s   € Ø�d—i‘iÑÐr6   N)rõ   rö   r÷   rø   Ú	__slots__ÚrangeÚordrÿ   rë   rî   r  r  r	  r  r»   ©rŽ   r„   s   00r4   rK   rK   š  s~   „ áØ€Ià%™% ›*˜Ð(H©%±°C³¹#¸c»(ÀQ¹,Ó*GÐ(HÑH÷JØð �'˜A‘+‰~ó J€GòEò'ò/òCòBòó ùó5Js   ±ArK   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚVerbatimzEStore verbatim PDF command content for later inclusion in the stream.c                 ó   — || _         y r>   ©Ú_x)rê   rB   s     r4   rë   zVerbatim.__init__¾  s	   € Øˆ�r6   c                 ó   — | j                   S r>   r  rí   s    r4   r»   zVerbatim.pdfReprÁ  s   € Ø�w‰wˆr6   N)rõ   rö   r÷   rø   rë   r»   rŒ   r6   r4   r  r  ¼  s   „ ÙOòór6   r  c                   óº   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'„ Z)e*d(„ «       Z+y))*ÚOpz'PDF operators (not an exhaustive list).ó   bó   Bó   fó   hó   só   Só   ns   BTs   ETó   cs   reó   ló   ms   cms   Doó   Gó   gs   RGs   rgs   CSs   css   SCNs   scnó   dó   jó   Js   gsó   qó   Qs   Tds   Tfs   Tms   Tjs   TJó   wó   Ws   shc                 ó   — | j                   S r>   )Úvaluerí   s    r4   r»   z
Op.pdfReprî  s   € Ø�z‰zÐr6   c                 ón   — |r|r| j                   S | j                  S |r| j                  S | j                  S )zú
        Return the PDF operator to paint a path.

        Parameters
        ----------
        fill : bool
            Fill the path with the fill color.
        stroke : bool
            Stroke the outline of the path with the line color.
        )Úfill_strokeÚstrokeÚfillÚendpath)Úclsr3  r2  s      r4   Ú
paint_pathzOp.paint_pathñ  s4   € ñ ÙØ—‘Ð&à—z‘zÐ!áØ—x‘x�à—{‘{Ð"r6   N),rõ   rö   r÷   rø   Úclose_fill_stroker1  r3  Ú	closepathÚclose_stroker2  r4  Ú
begin_textÚend_textÚcurvetoÚ	rectangleÚlinetoÚmovetoÚconcat_matrixÚuse_xobjectÚsetgray_strokeÚsetgray_nonstrokeÚsetrgb_strokeÚsetrgb_nonstrokeÚsetcolorspace_strokeÚsetcolorspace_nonstrokeÚsetcolor_strokeÚsetcolor_nonstrokeÚsetdashÚsetlinejoinÚ
setlinecapÚ	setgstateÚgsaveÚgrestoreÚtextposÚ
selectfontÚ
textmatrixÚshowÚshowkernÚsetlinewidthÚclipÚshadingr»   Úclassmethodr6  rŒ   r6   r4   r  r  Å  sÝ   „ Ù1àÐØ€KØ€DØ€IØ€LØ€FØ€GØ€JØ€HØ€GØ€IØ€FØ€FØ€MØ€KØ€NØÐØ€MØÐØ ÐØ#ÐØ€OØÐØ€GØ€KØ€JØ€IØ€EØ€HØ€GØ€JØ€JØ€DØ€HØ€LØ€DØ€Gòð ñ#ó ñ#r6   r  c                   ó4   — e Zd ZdZdZd	d„Zd„ Zd„ Zd„ Zd„ Z	y)
ÚStreamz«
    PDF stream object.

    This has no pdfRepr method. Instead, call begin(), then output the
    contents of the stream by calling write(), and finally call end().
    )rè   r)   ÚpdfFilerô   ÚcompressobjÚextraÚposNc                 ó^  — || _         || _        || _        |j                  | _        d| _        |€t        «       | _        n|j                  «       | _        |�'| j                  j                  t        d«      |dœ«       | j                  j                  | j                   «       t        j                  d   r-|s+t        j
                  t        j                  d   «      | _        | j                  €t        «       | _        y| j!                  «        | j                  j#                  «       | _        y)a@  
        Parameters
        ----------
        id : int
            Object id of the stream.
        len : Reference or None
            An unused Reference object for the length of the stream;
            None means to use a memory buffer so the length can be inlined.
        file : PdfFile
            The underlying object to write the stream to.
        extra : dict from Name to anything, or None
            Extra key-value pairs to include in the stream header.
        png : dict or None
            If the data is already png encoded, the decode parameters.
        NÚFlateDecode)ÚFilterÚDecodeParmsúpdf.compression)rè   r)   r[  Úfhrô   r\  rÔ   r]  ÚcopyÚupdaterK   Ú
recordXrefr\   ÚrcParamsÚzlibr   Ú_writeHeaderÚtellr^  )rê   rè   r)   rô   r]  Úpngs         r4   rë   zStream.__init__  så   € ð  ˆŒØˆŒØˆŒØ—G‘GˆŒ	ØˆÔØˆ=Ü›ˆD�JàŸ™›ˆDŒJØˆ?Ø�J‰J×Ñ¬d°=Ó.AØ.1ñ3ô 4ð 	�‰×Ñ §¡Ô(Ü�<‰<Ð)Ò*±3Ü#×/Ñ/Ü—‘Ð.Ñ/ó 1ˆDÔà�8‰8ÐÜ›	ˆD�Ià×ÑÔØ—y‘y—~‘~Ó'ˆD�Hr6   c                 ó  — | j                   j                  } |d| j                  z  «       | j                  }| j                  |d<   t
        j                  d   rt        d«      |d<    |t        |«      «        |d«       y )Nrñ   ÚLengthrc  r`  ra  s   
stream
)	rô   rò   rè   r]  r)   r\   rh  rK   r»   )rê   rò   rÔ   s      r4   rj  zStream._writeHeader9  se   € Ø—	‘	—‘ˆÙˆm˜dŸg™gÑ%Ô&Ø�z‰zˆØŸ™ˆˆX‰Ü�<‰<Ð)Ò*Ü! -Ó0ˆD�‰NáŒg�d‹mÔÙˆmÕr6   c                 ó$  — | j                  «        | j                  €Œ| j                  j                  «       }t        |«      | _        | j                  j
                  | _        | j                  «        | j                  j                  |«       | j                  j                  d«       y| j                  j                  «       | j                  z
  }| j                  j                  d«       | j                  j                  | j                  |«       y)zFinalize stream.Ns   
endstream
endobj
)Ú_flushr)   rô   Úgetvaluer[  rd  rj  rò   rk  r^  ÚwriteObject)rê   ró   r3   s      r4   Úendz
Stream.endD  s²   € ð 	�‰ŒØ�8‰8ÐØ—y‘y×)Ñ)Ó+ˆHÜ˜8“}ˆDŒHØŸ™Ÿ™ˆDŒIØ×ÑÔØ�I‰I�O‰O˜HÔ%Ø�I‰I�O‰OÐ4Õ5à—Y‘Y—^‘^Ó%¨¯©Ñ0ˆFØ�I‰I�O‰OÐ4Ô5Ø�L‰L×$Ñ$ T§X¡X¨vÕ6r6   c                 óÀ   — | j                   €| j                  j                  |«       y| j                   j                  |«      }| j                  j                  |«       y)zWrite some data on the stream.N)r\  rô   rò   Úcompress)rê   ÚdataÚ
compresseds      r4   rò   zStream.writeT  sF   € ð ×ÑÐ#Ø�I‰I�O‰O˜DÕ!à×)Ñ)×2Ñ2°4Ó8ˆJØ�I‰I�O‰O˜JÕ'r6   c                 ó–   — | j                   �=| j                   j                  «       }| j                  j                  |«       d| _         yy)zFlush the compression object.N)r\  Úflushrô   rò   )rê   rw  s     r4   rp  zStream._flush]  sA   € ð ×ÑÐ'Ø×)Ñ)×/Ñ/Ó1ˆJØ�I‰I�O‰O˜JÔ'Ø#ˆDÕð (r6   ©NN)
rõ   rö   r÷   rø   r  rë   rj  rs  rò   rp  rŒ   r6   r4   rZ  rZ  	  s)   „ ñð P€Ió%(òN	ò7ò (ó$r6   rZ  c                 óN  — t        | d¬«      }d|j                  z  }i }|D �]   }|j                  |t        j                  «      }t        j                  |j                  dg|j                  ¢«      |z  dz   j                  t        «      }|j                  «       \  }}	|dz  j                  t        «      }t        j                  |	dk(  «      \  }
|
dd d…   }t        j                  t        h |£h |
dz
  £z  h |
dz   £z  «      t        «      }|||   ||dz
     ||dz      z   dz  j                  t        «      k(  j                  d¬	«         }|j                  |fd
v r|d d …dfxx   dz  cc<   ||z  dz   j                  t        «      }||dz
     ||dz      z   dz  j                  t        «      ||<   dj!                  t#        t$        |«      «      j'                  d«      dz   t)        j*                  t-        ||	«      d d dd dg d¢d«      z   dz   ||j/                  |«      <   �Œ |S )Nr#   )Úhinting_factoréè  r   g      à?é@   rÜ   é   ©Úaxis))úDejaVuSerif-ItalicéM   )r‚  é‡   ú r¾   s    d1
Féÿÿÿÿ)r$  r#  r6   r"  r  Tr  )r   Úunits_per_EMÚ
load_glyphr   ÚNO_SCALErÅ   ÚarrayÚhoriAdvanceÚbboxÚastyperX   Úget_pathÚnonzeroÚsortedÚallÚpostscript_namer+   Úmapr@   rÍ   r"   Úconvert_to_stringr    Úget_glyph_name)Ú	font_pathÚ	glyph_idsÚfontÚconvÚprocsÚglyph_idÚgÚd1rh   r„   ÚquadsÚquads_onÚquads_mid_onÚimplicits                 r4   Ú_get_pdf_charprocsr¢  f  s4  € Ü�I¨aÔ0€DØ�$×#Ñ#Ñ#€DØ€EØó &ˆØ�O‰O˜H¤i×&8Ñ&8Ó9ˆô �h‰h˜Ÿ™ qÐ2¨1¯6©6Ð2Ó3°dÑ:¸RÑ?×GÑGÌÓLˆØ�}‰}‹‰ˆˆ1Ø�‰V�O‰OœCÓ ˆô —‘˜A ™FÓ#‰ˆØ˜˜˜A˜‘;ˆÜ—x‘xÜ�;�X�;  E¨A¡I Ñ/°.°U¸Q±Y°.Ñ@ÓAÄ3óHˆàØˆ|‰_Ø�L 1Ñ$Ñ%¨¨,¸Ñ*:Ñ(;Ñ;¸qÑ@×HÑHÌÓMñNç‰S�aˆS‹[ñˆð × Ñ  (Ð+ð 0
ñ 
ð Ša�ˆd‹G�q‰L‹GØ�‰X˜‰]×"Ñ"¤3Ó'ˆàˆx˜!‰|‰_˜q ¨A¡™Ñ.°!Ñ3·V±V¼C³[ð 	
ˆ(‰ð �H‰H”Sœ˜b“\Ó"×)Ñ)¨'Ó2°XÑ=Ü×%Ñ%Ü�Q˜“
˜D $¨¨t°Râ-¨tó5ñ5ð
 ñð 	ˆd×!Ñ! (Ó+Ó,ðA&ðN €Lr6   c                   ó�  ‡ — e Zd ZdZd5ˆ fd„	Zd„ Zg d¢fd„Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd6d„Zd„ Zddœd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z  ej>                  d«       e d „ «      «      Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd5d'„Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-e.d7d-„«       Z/d8d.„Z0d9d/„Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6ˆ xZ7S ):ÚPdfFilezPDF file object.Nc                 óò  •— t         ‰	| �  «        t        j                  d«      | _        g d¢g| _        d| _        d| _        d| _        t        j                  |dd¬«      \  }}|s	 |j                  «       | _        |}d| _        || _        d| _        |j!                  d	«       |j!                  d
«       | j#                  d«      | _        | j#                  d«      | _        g | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        t7        d«      | j&                  dœ}| j9                  | j$                  |«       t;        d|xs i «      | _        i | _        d„ t        j                  d«      D «       | _         i | _!        i | _"        tG        jH                  «       | _%        i | _&        d„ t        j                  d«      D «       | _'        i | _(        d„ t        j                  d«      D «       | _)        g | _*        i | _+        d„ t        j                  d«      D «       | _,        g | _-        i | _.        d„ t        j                  d«      D «       | _/        i | _0        i | _1        g | _2        g | _3        g | _4        djk                  «       D �cg c]  }t7        |«      ‘Œ }}| j*                  | j2                  | j,                  | j.                  | j0                  |dœ}| j9                  | j4                  |«       y# t        $ r t        «       }|| _        Y �Œëw xY wc c}w )aã  
        Parameters
        ----------
        filename : str or path-like or file-like
            Output target; if a string, a file will be opened for writing.

        metadata : dict from strings to strings and dates
            Information dictionary object (see PDF reference section 10.2.1
            'Document Information Dictionary'), e.g.:
            ``{'Creator': 'My software', 'Author': 'Me', 'Title': 'Awesome'}``.

            The standard keys are 'Title', 'Author', 'Subject', 'Keywords',
            'Creator', 'Producer', 'CreationDate', 'ModDate', and
            'Trapped'. Values have been predefined for 'Creator', 'Producer'
            and 'CreationDate'. They can be removed by setting them to `None`.
        r#   )r   rß   úthe zero objectFNr   ÚwbT)Úreturn_openeds	   %PDF-1.4
s   %¬Ü «º
ÚrootÚpagesÚfontszextended graphics statesztiling patternszGouraud triangleszexternal objectsÚ	resourcesÚCatalog)r©   ÚPagesÚpdfc              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚFN©rK   ©rŽ   r1   s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>Ó  ó   è ø€ Ò"M°Q¤4¨!¨A¨3¨§=Ñ"Mùó   ‚c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)r­   Nr²  r³  s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>Ú  s   è ø€ Ò K°1¤¨¨!¨ g§Ñ Kùrµ  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚSMNr²  r³  s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>Ü  s   è ø€ ÒJ°!œt b¨¨ HŸ~ÑJùrµ  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚHNr²  r³  s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>ß  r´  rµ  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚINr²  r³  s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>ã  s   è ø€ ÒE¨Qœ4 ! A 3 Ÿ=ÑEùrµ  úPDF Text ImageB ImageC ImageI)ÚFontÚXObjectÚ	ExtGStateÚPatternÚShadingÚProcSet)6Úsuperrë   r™   ÚcountÚ_object_seqÚ	xrefTableÚpassed_in_file_objectÚoriginal_file_likeÚ	tell_baser   Úto_filehandlerk  ÚOSErrorr   rd  Úcurrentstreamrò   ÚreserveObjectÚ
rootObjectÚpagesObjectÚpageListÚ
fontObjectÚ_extGStateObjectÚhatchObjectÚgouraudObjectÚXObjectObjectÚresourceObjectrK   rr  rj   ÚinfoDictÚ	fontNamesÚ_internal_font_seqÚdviFontInfoÚtype1Descriptorsr$   ÚCharacterTrackerÚ_character_trackerÚalphaStatesÚ_alpha_state_seqÚ_soft_mask_statesÚ_soft_mask_seqÚ_soft_mask_groupsÚ_hatch_patternsÚ_hatch_pattern_seqÚgouraudTrianglesÚ_imagesÚ
_image_seqÚmarkersÚmulti_byte_charprocsÚpathsÚ_annotationsÚpageAnnotationsÚsplit)
rê   Úfilenamerc   rd  Úopenedr©  rB   Úprocsetsr¬  Ú	__class__s
            €r4   rë   zPdfFile.__init__—  s  ø€ ô" 	‰ÑÔä$Ÿ?™?¨1Ó-ˆÔÚ7Ð8ˆŒØ%*ˆÔ"Ø"&ˆÔØˆŒÜ×(Ñ(¨°4ÀtÔL‰
ˆˆFÙð2Ø!)§¡£�”ð
 �Ø-1�Ô*àˆŒØ!ˆÔØ
�‰�Ôð 	�‰Ð(Ô)à×,Ñ,¨VÓ4ˆŒØ×-Ñ-¨gÓ6ˆÔØˆŒØ×,Ñ,¨WÓ5ˆŒØ $× 2Ñ 2Ð3MÓ NˆÔØ×-Ñ-Ð.?Ó@ˆÔØ!×/Ñ/Ð0CÓDˆÔØ!×/Ñ/Ð0BÓCˆÔØ"×0Ñ0°Ó=ˆÔä˜Y›Ø×)Ñ)ñ+ˆà×Ñ˜Ÿ™¨$Ô/ä-¨e°X²^ÀÓDˆŒàˆŒÙ"M¼)¿/¹/È!Ó:LÔ"MˆÔØˆÔà "ˆÔÜ"1×"BÑ"BÓ"DˆÔàˆÔÙ K¼	¿¹ÈÓ8JÔ KˆÔØ!#ˆÔÙJ´y·±ÀqÓ7IÔJˆÔØ!#ˆÔØ!ˆÔÙ"M¼)¿/¹/È!Ó:LÔ"MˆÔØ "ˆÔàˆŒÙE´)·/±/À!Ó2DÔEˆŒàˆŒØ$&ˆÔ!àˆŒ
ð
 ˆÔð  "ˆÔð &E×%JÑ%JÓ%LÖM ”D˜•GÐMˆÐMð
 "Ÿ_™_Ø $× 2Ñ 2Ø"&×"7Ñ"7Ø $× 0Ñ 0Ø $× 2Ñ 2Ø (ñ*ˆ	ð 	×Ñ˜×,Ñ,¨iÕ8øôW ò 3Ü“Y�Ø*2�×'ð3üò@ Ns   Á'M Ë'M4ÍM1Í0M1c                 ó  — | j                  «        ||c| _        | _        | j                  d«      }| j                  d«      }t	        d«      | j
                  | j                  ddd|z  d|z  g||dœ}| j                  d«      }| j                  ||«       | j                  j                  |«       | j                  j                  || j                  f«       | j                  |j                  | j                  d«      «       | j                  t	        d	«      t        j                   «       | j                  t	        d	«      t        j"                  «       | j                  t$        j&                  d
   t        j(                  «       g | _        y )Nzpage contentsÚannotationsÚPager   éH   )r©   ÚParentÚ	ResourcesÚMediaBoxÚContentsÚAnnotsÚpagezlength of content streamÚ	DeviceRGBÚround)Ú	endStreamr}   r~   rÎ  rK   rÐ  r×  rr  rÑ  r*   rì  rí  ÚbeginStreamrè   Úoutputr  rF  rG  ÚGraphicsContextPdfÚ
joinstylesrK  )rê   r}   r~   ÚcontentObjectÚannotsObjectÚthePageÚ
pageObjects          r4   ÚnewPagezPdfFile.newPage   sK  € Ø�‰Ôà"'¨ÐˆŒ
�D”KØ×*Ñ*¨?Ó;ˆØ×)Ñ)¨-Ó8ˆÜ ›<Ø!×-Ñ-Ø $× 3Ñ 3Ø ! 1 b¨5¡j°"°v±+Ð>Ø,Ø)ñˆð ×'Ñ'¨Ó/ˆ
Ø×Ñ˜ WÔ-Ø�‰×Ñ˜ZÔ(Ø×Ñ× Ñ  ,°×0DÑ0DÐ!EÔFà×Ñ˜×)Ñ)Ø×+Ñ+Ð,FÓGô	Ið 	�‰”D˜Ó%¤r×'>Ñ'>Ô?Ø�‰”D˜Ó%¤r×'AÑ'AÔBØ�‰Ô&×1Ñ1°'Ñ:¼B¿N¹NÔKð  "ˆÕr6   ©éœÿÿÿr
  r   r   c                 ól   — t        d«      t        d«      ||dœ}| j                  j                  |«       y )Nr¤   ÚText)r©   rª   rú  r«   )rK   rí  r*   )rê   ÚtextÚpositionRectÚtheNotes       r4   ÚnewTextnotezPdfFile.newTextnote  s3   € ä ›=Ü" 6›lØ#Ø'ñˆð
 	×Ñ×#Ñ# GÕ,r6   c                 ó¨   ‡— ˆfd„Št        t        |j                  «       «      «      t        j                  dz   dz  z  } ‰|d«      }|d d dz   |z   S )Nc                 óz   •— | |k  rt         j                  |    S  ‰| |z  |«      t         j                  | |z     z   S r>   )ÚstringÚascii_uppercase)ÚnÚbaseÚtoStrs     €r4   r  z,PdfFile._get_subsetted_psname.<locals>.toStr'  sD   ø€ Ø�4ŠxÜ×-Ñ-¨aÑ0Ð0ñ ˜!˜t™) TÓ*¬V×-CÑ-CÀAÈÁHÑ-MÑMðr6   r#   r  é   é   ú+)r  Ú	frozensetÚkeysÚsysÚmaxsize)rê   Úps_nameÚcharmapÚhashedÚprefixr  s        @r4   Ú_get_subsetted_psnamezPdfFile._get_subsetted_psname&  sU   ø€ ô	ô ”i §¡£Ó/Ó0´S·[±[À1±_ÈÑ4IÑJˆÙ�v˜rÓ"ˆð �b�qˆz˜CÑ 'Ñ)Ð)r6   c           
      ó¸  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  j                  «       D ���ci c]	  \  }}}||“Œ }}}}| j                  j                  «       D ]  }|d   ||d   <   Œ | j                  j                  «       D ]
  \  }}|||<   Œ | j                  D ]  \	  }}}}}	}
}}}|||<   Œ | j                  | j                  |«       | j                  «        | j!                  «        | j#                  «        | j                  | j$                  t'        d«      | j(                  t+        | j(                  «      dœ«       | j-                  «        | j/                  «        | j1                  «        yc c}}}w )z>Write out the various deferred objects and the pdf end matter.r#   r   r®  )r©   ÚKidsÚCountN)rÿ  Ú_write_annotationsÚ
writeFontsÚwriteExtGSTatesÚ_write_soft_mask_groupsÚwriteHatchesÚwriteGouraudTrianglesrç  Úvaluesré  rê  r^   rë  rr  rÖ  ÚwriteImagesÚwriteMarkersÚwritePathCollectionTemplatesrÐ  rK   rÑ  r)   ÚwriteInfoDictÚ	writeXrefÚwriteTrailer)rê   ÚimagerL   ÚobÚxobjectsÚtupr/  ÚpathÚtransr+   ÚcapÚpaddingÚfilledÚstrokeds                 r4   ÚfinalizezPdfFile.finalize6  sµ  € ð 	�‰ÔØ×ÑÔ!Ø�‰ÔØ×ÑÔØ×$Ñ$Ô&Ø×ÑÔØ×"Ñ"Ô$à,0¯L©L×,?Ñ,?Ó,A÷Cð CÙ(˜  bˆD�"‰HðCˆò Cà—<‘<×&Ñ&Ó(ò 	&ˆCØ" 1™vˆH�S˜‘VÒð	&à×4Ñ4×:Ñ:Ó<ò 	#‰KˆD�%Ø"ˆH�TŠNð	#ð —:‘:ò	 ÑFˆD�$˜˜r 4¨¨g°v¸wàˆH�TŠNð	 ð 	×Ñ˜×+Ñ+¨XÔ6Ø×ÑÔØ×ÑÔØ×)Ñ)Ô+Ø×Ñ˜×)Ñ)Ü"& w£-Ø"&§-¡-Ü#& t§}¡}Ó#5ñ7ô	8ð 	×ÑÔð 	�‰ÔØ×ÑÕùô+Cs   ÂGc                 ó$  — | j                  «        | j                  r| j                  j                  «        y| j                  �3| j                  j                  | j                  j                  «       «       | j                  j                  «        y)z)Flush all buffers and free all resources.N)rÿ  rÈ  rd  ry  rÉ  rò   rq  Úcloserí   s    r4   r@  zPdfFile.closeW  s^   € ð 	�‰ÔØ×%Ò%Ø�G‰G�M‰M�Oà×&Ñ&Ð2Ø×'Ñ'×-Ñ-¨d¯g©g×.>Ñ.>Ó.@ÔAØ�G‰G�M‰M�Or6   c                 óŠ   — | j                   €| j                  j                  |«       y | j                   j                  |«       y r>   )rÍ  rd  rò   )rê   rv  s     r4   rò   zPdfFile.writeb  s2   € Ø×ÑÐ%Ø�G‰G�M‰M˜$Õà×Ñ×$Ñ$ TÕ*r6   c           
      ó’   — | j                  t        |D �cg c]  }t        |«      ‘Œ c}«      «       | j                  d«       y c c}w )Nr'   )rò   r5   r»   )rê   rv  rB   s      r4   r  zPdfFile.outputh  s3   € Ø�
‰
”5¨dÖ3¨œ' !�*Ò3Ó4Ô5Ø�
‰
�5Õùò 4s   •Ac                 óH   — | j                   �J ‚t        ||| ||«      | _         y r>   )rÍ  rZ  )rê   rè   r)   r]  rl  s        r4   r   zPdfFile.beginStreaml  s)   € Ø×!Ñ!Ð)Ð)Ð)Ü# B¨¨T°5¸#Ó>ˆÕr6   c                 ó`   — | j                   �"| j                   j                  «        d | _         y y r>   )rÍ  rs  rí   s    r4   rÿ  zPdfFile.endStreamp  s-   € Ø×ÑÐ)Ø×Ñ×"Ñ"Ô$Ø!%ˆDÕð *r6   ©r]  c                ó”   — | j                  |j                  d |«       | j                  j                  |«       | j	                  «        y r>   )r   rè   rÍ  rò   rÿ  )rê   Úrefrv  r]  s       r4   ÚoutputStreamzPdfFile.outputStreamu  s6   € Ø×Ñ˜Ÿ™  uÔ-Ø×Ñ× Ñ  Ô&Ø�‰Õr6   c                 óP   — | j                   D ]  \  }}| j                  ||«       Œ y r>   )rì  rr  )rê   r  rô  s      r4   r'  zPdfFile._write_annotationsz  s,   € Ø)-×):Ñ):ò 	8Ñ%ˆL˜+Ø×Ñ˜\¨;Õ7ñ	8r6   c                 ó¢  — t        |t        «      r|g}nOt        j                  d   r't	        j
                  |dt        j                  ¬«      }nt	        j
                  |«      }d}|D ]d  }| j                  j                  |«      }|s|}|�Œ%t        | j                  «      }|| j                  |<   t        j                  d||«       |rŒc|}Œf |S )z¼
        Select a font based on fontprop and return a name suitable for
        Op.selectfont. If fontprop is a string, it will be interpreted
        as the filename of the font.
        úpdf.use14corefontsÚafm)ÚfontextÚ	directoryNzAssigning font %s = %r)r?   r@   r\   rh  Ú_fontManagerÚ_find_fonts_by_propsÚRendererPdfÚ_afm_font_dirrÙ  ÚgetÚnextrÚ  Ú_logÚdebug)rê   ÚfontpropÚ	filenamesÚfirst_FxÚfnameÚFxs         r4   ÚfontNamezPdfFile.fontName~  sÄ   € ô �h¤Ô$Ø!˜
‰IÜ�\‰\Ð.Ò/Ü$×9Ñ9Ø %´;×3LÑ3Lô‰Iô %×9Ñ9¸(ÓCˆIØˆØò 		"ˆEØ—‘×#Ñ# EÓ*ˆBÙØ�Ø‰zÜ˜$×1Ñ1Ó2�Ø(*�—‘˜uÑ%Ü—
‘
Ð3°R¸Ô?ÚØ!‘Hð		"ð ˆr6   c                 óp  — | j                   j                  |j                  «      }|�|j                  S t	        j
                  t	        j                  d«      «      }||j                     }|j                  €/t        dj                  |j                  |j                  «      «      ‚t        | j                  «      }t        j                  d||j                  «       t        j                   |||j                  |j                  |j"                  |j$                  ¬«      | j                   |j                  <   |S )z·
        Given a dvi font object, return a name suitable for Op.selectfont.
        This registers the font information in ``self.dviFontInfo`` if not yet
        registered.
        z
pdftex.mapzNNo usable font file found for {} (TeX: {}); the font may lack a Type-1 versionzAssigning font %s = %s (dvi))ÚdvifontÚpdfnameÚfontfileÚbasefontÚencodingfileÚeffects)rÛ  rS  Útexnamer_  r   Ú
PsfontsMapÚfind_tex_filerï  rÈ   ÚformatÚpsnamerT  rÚ  rU  rV  ÚtypesÚSimpleNamespaceÚencodingrc  )rê   r^  Údvi_infoÚtex_font_mapÚpsfontr_  s         r4   ÚdviFontNamezPdfFile.dviFontName�  sø   € ð ×#Ñ#×'Ñ'¨¯©Ó8ˆØÐØ×#Ñ#Ð#ä×)Ñ)¬'×*?Ñ*?ÀÓ*MÓNˆØ˜gŸo™oÑ.ˆØ�?‰?Ð"Üð5ç‘˜Ÿ™ w§¡Ó7ó9ð 9ô
 �t×.Ñ.Ó/ˆÜ�
‰
Ð1°7¸G¿O¹OÔLÜ,1×,AÑ,AØØØ—_‘_Ø—]‘]ØŸ™Ø—N‘Nô-$ˆ×Ñ˜Ÿ™Ñ)ð ˆr6   c                 óš  — i }t        | j                  j                  «       «      D ];  \  }}|j                  }t        j                  d|«       | j                  |«      ||<   Œ= t        | j                  «      D ]´  }| j                  |   }t        j                  d|«       |j                  d«      r*t        j                  d«       | j                  |«      ||<   Œct        j                  d«       | j                  j                  j                  |«      }|sŒ | j                  ||«      ||<   Œ¶ | j                  | j                  |«       y )Nz"Embedding Type-1 font %s from dvi.zEmbedding font %s.z.afmzWriting AFM font.zWriting TrueType font.)r�  rÛ  r^   r_  rU  rV  Ú_embedTeXFontrÙ  ÚendswithÚ_write_afm_fontrÞ  ÚusedrS  ÚembedTTFrr  rÒ  )rê   r«  Údvinamerf   r[  rï  Úcharss          r4   r(  zPdfFile.writeFonts»  s  € ØˆÜ# D×$4Ñ$4×$:Ñ$:Ó$<Ó=ò 	1‰MˆG�TØ—‘ˆBÜ�J‰JÐ;¸WÔEØ×*Ñ*¨4Ó0ˆE�"ŠIð	1ô ˜tŸ~™~Ó.ò 	?ˆHØ—‘ Ñ)ˆBÜ�J‰JÐ+¨XÔ6Ø× Ñ  Ô(ä—
‘
Ð.Ô/Ø ×0Ñ0°Ó:��b’	ô —
‘
Ð3Ô4Ø×/Ñ/×4Ñ4×8Ñ8¸ÓB�ÚØ $§¡¨h¸Ó >�E˜"’Ið	?ð 	×Ñ˜Ÿ™¨%Õ0r6   c                 ó  — t        |d«      5 }t        |«      }d d d «       j                  «       }t        d«      t        d«      t        |«      t        d«      dœ}| j	                  d«      }| j                  ||«       |S # 1 sw Y   ŒixY w)NÚrbr¾  ÚType1ÚWinAnsiEncoding)r©   rª   ÚBaseFontÚEncodingúfont dictionary)Úopenr   Úget_fontnamerK   rÎ  rr  )rê   rï  rd  r˜  ÚfontnameÚfontdictÚfontdictObjects          r4   rs  zPdfFile._write_afm_fontÐ  sˆ   € Ü�(˜DÓ!ð 	 RÜ�r“7ˆD÷	à×$Ñ$Ó&ˆÜ  ›LÜ# G›}Ü $ X£Ü $Ð%6Ó 7ñ9ˆð ×+Ñ+Ð,=Ó>ˆØ×Ñ˜¨Ô2ØÐ÷	ð 	ús   �BÂB
c                 óÚ  — t         j                  d|j                  j                  |j                  «       | j                  d«      }| j                  ||j                  j                  «       | j                  d«      }t        d«      t        d«      dt        |j                  j                  «      dz
  |dœ}|j                  �?t        d	«      dgt        t        t        j                  |j                  «      «      ¢d
œ|d	<   |j                  €Lt         j                  d|j                   «       t        |j                   «      |d<   | j                  ||«       |S t#        j$                  |j                  «      }|j&                  r|j)                  |j&                  «      }t        |j*                  d   «      |d<   |j&                  j-                  dd«      |j&                  j-                  dd«      f}| j.                  j-                  |j                  |f«      }|€7| j1                  ||j                  «      }|| j.                  |j                  |f<   ||d<   | j                  ||«       |S )Nz#Embedding TeX font %s - fontinfo=%súfont widthsr~  r¾  rz  r   r#   )r©   rª   Ú	FirstCharÚLastCharÚWidthsr}  ©r©   ÚDifferenceszâBecause of TeX configuration (pdftex.map, see updmap option pdftexDownloadBase14) the font %s is not embedded. This is deprecated as of PDF 1.5 and it may cause the consumer application to show something that was not intended.r|  ÚFontNameÚslantç        Úextendç      ð?ÚFontDescriptor)rU  rV  r^  rd  Ú__dict__rÎ  rr  ÚwidthsrK   r)   rb  r“  r   Ú
_parse_encr`  Úwarningra  r   Ú	Type1Fontrc  Ú	transformÚproprS  rÜ  ÚcreateType1Descriptor)rê   ÚfontinfoÚwidthsObjectrƒ  r‚  Út1fontrc  Úfontdescs           r4   rq  zPdfFile._embedTeXFontÜ  sA  € Ü�
‰
Ð8Ø×#Ñ#×+Ñ+¨X×->Ñ->ô	@ð ×)Ñ)¨-Ó8ˆØ×Ñ˜ x×'7Ñ'7×'>Ñ'>Ô?ð ×+Ñ+Ð,=Ó>ˆä˜f›Ü˜g›ØÜ˜X×-Ñ-×4Ñ4Ó5¸Ñ9Ø%ñˆð × Ñ Ð,ä˜ZÓ(àð NÜœD¤'×"4Ñ"4°X×5JÑ5JÓ"KÓLð Nñ$ˆH�ZÑ ð ×ÑÐ$Ü�L‰LðGð ×!Ñ!ô#ô $(¨×(9Ñ(9Ó#:ˆH�ZÑ Ø×Ñ˜^¨XÔ6Ø!Ð!ô ×%Ñ% h×&7Ñ&7Ó8ˆØ×ÒØ×%Ñ% h×&6Ñ&6Ó7ˆFÜ# F§K¡K°
Ñ$;Ó<ˆ�Ñð
 ×#Ñ#×'Ñ'¨°Ó5Ø×#Ñ#×'Ñ'¨°#Ó6ð8ˆà×(Ñ(×,Ñ,¨h×.?Ñ.?ÀÐ-IÓJˆØÐØ×1Ñ1°&¸(×:KÑ:KÓLˆHØBJˆD×!Ñ! 8×#4Ñ#4°gÐ">Ñ?Ø%-ˆÐ!Ñ"à×Ñ˜¨Ô2ØÐr6   c                 óf  — | j                  d«      }| j                  d«      }|j                  d   }|j                  d   }d}|r|dz  }	 	 |dz  }|r|d	z  }	 	 	 t        |«      }t        d
«      t        |j                  d   «      ||j                  ||j
                  |j                  dd||j                  d   ddœ}	| j                  ||	«       | j                  |dj                  |j                  d d «      t        |j                  d   «      t        |j                  d   «      ddœ¬«       |S )Núfont descriptorz	font fileÚItalicAngleÚisFixedPitchr   r#   r  é   r~  r�  r‹  r}  iô  Ú
FamilyNameé2   )r©   r‹  ÚFlagsÚFontBBoxrŸ  ÚAscentÚDescentÚ	CapHeightÚXHeightÚFontFileÚ
FontFamilyÚStemVr6   )ÚLength1ÚLength2ÚLength3rE  )rÎ  r—  r   rK   rŒ  ÚascenderÚ	descenderrr  rH  r+   Úpartsr)   )
rê   r›  r`  ÚfontdescObjectÚfontfileObjectÚitalic_angleÚfixed_pitchÚflagsÚft2fontÚ
descriptors
             r4   r˜  zPdfFile.createType1Descriptor  sQ  € ð ×+Ñ+Ð,=Ó>ˆØ×+Ñ+¨KÓ8ˆà—{‘{ =Ñ1ˆØ—k‘k .Ñ1ˆàˆáØ�V‰OˆEàð Ø�V‰OˆEñ
 Ø�V‰OˆEàð ð ô ˜8Ó$ˆô  Ð 0Ó1Ü §¡¨JÑ 7Ó8Ø Ø"Ÿ<™<Ø'Ø"×+Ñ+Ø"×,Ñ,ØØØ)Ø!Ÿ;™; |Ñ4Øñˆ
ð" 	×Ñ˜¨Ô4à×Ñ˜.¨#¯(©(°6·<±<ÀÀÐ3CÓ*DÜ,/°·±¸Q±Ó,@Ü,/°·±¸Q±Ó,@Ø,-ñ!/ð 	ô 	0ð
 Ðr6   c                 óö   — | j                  |«      }dj                  |j                  j                  «       t        j
                  j                  t        j
                  j                  |«      «      d   |g«      S )Nú-r   )r\  r+   rL   rÑ   rU   r8  ÚsplitextÚbasename)rê   rï  Ú
glyph_namer[  s       r4   Ú_get_xobject_glyph_namezPdfFile._get_xobject_glyph_nameU  s]   € Ø�]‰]˜8Ó$ˆØ�x‰xØ�G‰G�N‰NÓÜ�G‰G×ÑœRŸW™W×-Ñ-¨hÓ7Ó8¸Ñ;Øðó ð 	r6   sO  /CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
   /Ordering (UCS)
   /Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <ffff>
endcodespacerange
%d beginbfrange
%s
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
endc                 ó\  ‡ ‡‡‡‡— t        ‰«      }t        j                  d   Š|j                  dfd„Šˆˆˆˆ fd„}ˆˆˆˆˆ fd„}‰ j	                  |j
                  |j                  «       «      Š‰j                  dd«      Št        ‰«      Š|j                  d«      xs d	d	d
œ}|j                  d«      xs ddi}|j                  }|j                  }	d	}
d}t        j                  |v r|
dz  }
	 |r|
dz  }
n|
dz  }
t        j                  |	v r|
dz  }
	 	 	 t        d«      ‰|
|j                   D �cg c]  } ‰|d¬«      ‘Œ c} ‰|j"                  d¬«       ‰|j$                  d¬«       ‰|d   d¬«       ‰|d   «      |d   d   d	dœ
}‰dk(  r
 ||||«      S ‰dk(  r
 ||||«      S yc c}w )z9Embed the TTF font from the named file into the document.úpdf.fonttypeTc                 óŠ   — | |z  dz  }|rt        |«      S |dk  rt        j                  |«      S t        j                  |«      S )z2Convert font coordinates to PDF glyph coordinates.r}  r   )rþ  rx   ÚfloorÚceil)r3   ÚupeÚnearestr/  s       r4   ÚcvtzPdfFile.embedTTF.<locals>.cvtw  sB   € à˜S‘L 4Ñ'ˆEÙÜ˜U“|Ð#à�qŠyÜ—z‘z %Ó(Ð(ä—y‘y Ó'Ð'r6   c                 ó¾  •‡ ‡— ‰#j                  d«      }‰#j                  d«      }‰#j                  d«      }‰#j                  d«      }g }d\  }}	‰ j                  D �
cg c]  }
 ‰ |
d¬«      ‘Œ }}
t        d«      ‰"||	|t        d	«      |d
   |g d¢|t        d«      |dœ|dœ}ddlmŠ ˆˆ ˆ fd„}t        j                  «       5  t        j                  d«       t        ||	dz   «      D �cg c]
  } ||«      ‘Œ }}ddd«       t        «      |d<   g }g }t        «       }|D ]a  }|}‰ j                  |«      }|j                  |«       ‰ j                  |«      }|dk  r|j                  ||f«       ŒQ|j                  |«       Œc |j                  «        d}|D ]:  \  }}||dz   k7  r|j                  |«       |j                  t        |«      «       |}Œ< t!        ‰!|«      }i }t#        |«      D ]Œ  }||   }i }||v r/t        d«      t        d«      |dœ}||j%                  d«      dz   d }‰#j                  d«      }‰#j'                  |||¬«       ||v r"‰#j)                  ‰!|«      }|‰#j*                  |<   Œˆ|||<   ŒŽ ‰#j-                  ||«       ‰#j-                  ||«       ‰#j-                  ||«       ‰#j-                  ||«       |S c c}
w c c}w # 1 sw Y   �ŒÙxY w)z5The Type 3-specific part of embedding a Truetype fontr…  rž  r~  zcharacter procs)r   rÝ   F©rÆ  r¾  ÚType3r‹  )çü©ñÒMbP?r   r   rË  r   r   r}  r‰  )r©   r|  r†  r‡  r�  rª   rK   r¥  Ú
FontMatrixÚ	CharProcsr}  rˆ  r   )Úcp1252c                 ó¼   •— t        ‰j                  |    «      }‰j                  |t        j                  t        j
                  z  ¬«      j                  } ‰|«      S )N©r·  )r  Údecoding_tableÚ	load_charr   r‰  Ú
NO_HINTINGr‹  )Úcharcoder2   r}   rÎ  rÇ  r˜  s      €€€r4   Úget_char_widthz?PdfFile.embedTTF.<locals>.embedTTFType3.<locals>.get_char_width   sT   ø€ Ü˜×-Ñ-¨hÑ7Ó8�ØŸ™ØœY×/Ñ/´)×2FÑ2FÑFð 'ó HßHSÉð á˜5“zÐ!r6   Úignorer#   NÚMaxWidthrÝ   éþÿÿÿr¿  ÚForm©r©   rª   ÚBBoxó   d1r  ÚcharProcrE  )rÎ  rŒ  rK   Ú	encodingsrÎ  ÚwarningsÚcatch_warningsÚfilterwarningsr  r—   ra   Úget_char_indexr*   r•  ÚaddÚsortr¢  r�  ÚfindrH  r¿  rê  rr  )$r˜  Ú
charactersr¹  rš  r³  rƒ  ÚcharprocsObjectÚdifferencesArrayÚ	firstcharÚlastcharrB   rŒ  r‚  rÕ  rÔ  r’  r—  ÚdifferencesÚmulti_byte_charsr„   ÚccodeÚgindr¾  Úlast_crL   ÚrawcharprocsÚ	charprocsÚcharnameÚstreamÚcharprocDictÚcharprocObjectrÎ  rÇ  rï  r  rê   s$   `                              @€€€€r4   ÚembedTTFType3z'PdfFile.embedTTF.<locals>.embedTTFType3‚  s9  ú€ à×-Ñ-¨mÓ<ˆLØ!×/Ñ/Ð0AÓBˆNØ!×/Ñ/Ð0AÓBˆNØ"×0Ñ0Ð1BÓCˆOØ!ÐØ"(ÑˆI�xØ37·9±9Ö=¨a‘C˜ 5Ö)Ð=ˆDÐ=ô ˜V›Ø#Ø&Ø$Ø"0Ü ›=Ø" :Ñ.Ø Ú6Ø,ä  Ó,Ø#3ñ5ð 'ñˆHõ" )ö"ô
 ×(Ñ(Ó*ñ Hô ×'Ñ'¨Ô1ä*/°	¸8ÀA¹:Ó*FöHØ&ñ )¨Õ2ð H�ð H÷Hô &)¨£[ˆJ�zÑ"ð
 ˆIØˆKÜ"›uÐØò 5�Ø�Ø×*Ñ*¨5Ó1�Ø× Ñ  Ô&Ø!×0Ñ0°Ó6�
Ø˜C’<Ø×&Ñ&¨¨zÐ':Õ;à$×(Ñ(¨Õ4ð5ð ×ÑÔàˆFØ&ò ‘��4Ø˜ ™
’?Ø$×+Ñ+¨AÔ.Ø ×'Ñ'¬¨T«
Ô3Ø‘ð	ô .¨h¸	ÓBˆLØˆIÜ" <Ó0ò 9�Ø% hÑ/�Ø!�ð Ð/Ñ/Ü,0°«OÜ/3°F«|Ø,0ñ$2�Lð $ F§K¡K°Ó$6¸Ñ$:Ð$;Ð<�FØ!%×!3Ñ!3°JÓ!?�Ø×!Ñ! .°&ÀÐ!ÔMð Ð/Ñ/Ø×7Ñ7¸À(ÓK�DØ6D�D×-Ñ-¨dÒ3à*8�I˜hÒ'ð39ð8 ×Ñ˜^¨XÔ6Ø×Ñ˜^¨ZÔ8Ø×Ñ˜\¨6Ô2Ø×Ñ˜_¨iÔ8à!Ð!ùòA >ùò@H÷Hñ Hús$   ÁKÃ'KÃ*KÃ9KËKËKc                 óø	  •— ‰-j                  d«      }‰-j                  d«      }‰-j                  d«      }‰-j                  d«      }‰-j                  d«      }‰-j                  d«      }‰-j                  d«      }	dj                  d	„ |D «       «      }
t        j                  d
‰*|
«       t	        j
                  ‰*|
«      5 }t	        j                  |«      }ddd«       t        j                  d‰*t        j                  ‰*«      j                  j                  «       j                  «       | }t        |«      } t        d«      t        d«      ‰,ddddœ|||dœ}t        d«      t        d«      ‰,t        d«      |g|	dœ}||d<   ‰-j                  ||j                  «       d|j                  «       j                  i¬«       dgdz  }g }d}|D ]‰  }|}| j!                  |«      }| j#                  |t$        j&                  t$        j(                  z  ¬«      }|j+                  | ‰)|j,                  «      f«       |dk  rt/        |«      ||<   t1        ||«      }Œ‹ |j3                  «        |d|dz    }d}g }d}g }|D ]n  \  }}||dz   k7  r7|j+                  |«       |j+                  |g«       |j+                  ||g«       n|d   j+                  |«       ||d   d<   t1        ||«      }|}Œp g }|D ]Q  \  }}|d kD  rŒt5        d |«      }|j+                  d!||d"j                  d#„ t7        ||dz   «      D «       «      fz  «       ŒS ‰-j8                  t;        |«      d$j                  |«      fz  }g } |D ]1  }t=        ‰+|«      rŒ|j!                  |«      }| j+                  |«       Œ3 |j>                  D �!cg c]  }! ‰)|!d%¬&«      ‘Œ }"}!tA        ‰*| «      }#tC        |#«      D ]|  }$|#|$   }%t        d'«      t        d(«      |"d)œ}&|%|%jE                  d*«      d+z   d }%‰-j                  d,«      }'‰-j                  |'|%|&¬«       ‰-jG                  ‰*|$«      }(|'‰-jH                  |(<   Œ~ dj                  |«      jK                  d-«      }‰-j                  ||«       ‰-j                  |	|«       ||d.<   ‰-jM                  ||«       ‰-jM                  ||«       ‰-jM                  ||«       ‰-jM                  ||«       |S # 1 sw Y   �ŒxY wc c}!w )/z6The Type 42-specific part of embedding a Truetype fontrž  zCID font dictionaryzType 0 font dictionaryzCIDToGIDMap streamzfont file streamzType 0 widthszToUnicode mapÚ c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr>   )Úchrr  s     r4   r�   z;PdfFile.embedTTF.<locals>.embedTTFType42.<locals>.<genexpr>ö  s   è ø€ Ò <¨A¤ Q§Ñ <ùs   ‚zSUBSET %s characters: %sNzSUBSET %s %d -> %dr¾  ÚCIDFontType2ÚAdobeÚIdentityr   )ÚRegistryÚOrderingÚ
Supplement)r©   rª   r|  ÚCIDSystemInfor�  ÚWÚCIDToGIDMapÚType0z
Identity-H)r©   rª   r|  r}  ÚDescendantFontsÚ	ToUnicodeÚ	FontFile2r­  rE  ú i   rÐ  r#   rØ  r†  rß   s   <%04x> <%04x> [%s]r&   c              3   ó&   K  — | ]	  }d |z  –— Œ y­w)s   <%04x>NrŒ   )rŽ   rB   s     r4   r�   z;PdfFile.embedTTF.<locals>.embedTTFType42.<locals>.<genexpr>M  s   è ø€ ÒJ°˜y¨1�}ÑJùr‘   r'   FrÉ  r¿  rÙ  rÚ  rÜ  r  rÝ  úutf-16ber×  )'rÎ  r+   rU  rV  r$   Úget_glyphs_subsetÚfont_as_filerU   ÚstatÚst_sizeÚ	getbufferÚnbytesr   rK   rH  rq  râ  rÒ  r   r‰  rÓ  r*   r‹  rú  r—   rä  r–   r  Ú_identityToUnicodeCMapr)   rã   rŒ  r¢  r�  rå  r¿  rê  rÍ   rr  ).r˜  ræ  r¹  r³  ÚcidFontDictObjectÚtype0FontDictObjectÚcidToGidMapObjectr´  ÚwObjectÚtoUnicodeMapObjectÚ
subset_strÚsubsetÚfontdataÚ	full_fontÚcidFontDictÚtype0FontDictÚcid_to_gid_mapr’  Ú	max_ccoder„   rí  rî  râ   Ú
last_ccodeÚwÚ	max_widthÚunicode_groupsr}   Úunicode_bfrangeÚstartrs  Úunicode_cmapr—  rB   rŒ  rð  rò  ró  rô  rõ  rL   rÇ  rï  rá   r  rê   s.                                            €€€€€r4   ÚembedTTFType42z(PdfFile.embedTTF.<locals>.embedTTFType42ì  sL  ø€ à!×/Ñ/Ð0AÓBˆNØ $× 2Ñ 2Ð3HÓ IÐØ"&×"4Ñ"4Ð5MÓ"NÐØ $× 2Ñ 2Ð3GÓ HÐØ!×/Ñ/Ð0BÓCˆNØ×(Ñ(¨Ó9ˆGØ!%×!3Ñ!3°OÓ!DÐàŸ™Ñ <°Ô <Ó<ˆJÜ�J‰JÐ1°8¸ZÔHÜ ×2Ñ2°8¸ZÓHð @ÈFÜ*×7Ñ7¸Ó?�÷@ä�J‰JØ$ hÜ—‘˜Ó!×)Ñ)¨8×+=Ñ+=Ó+?×+FÑ+Fôð ˆIô
 ˜8Ó$ˆDô ˜V›Ü Ó/Ø#à 'Ø *Ø"#ñ"%ð #1ØØ0ñˆKô ˜V›Ü ›=Ø#Ü  Ó.Ø$5Ð#6Ø/ñˆMð '5ˆJ�{Ñ#Ø×ÑØ × 1Ñ 1Ó 3Ø  (×"4Ñ"4Ó"6×"=Ñ"=Ð>ð ô @ð #˜V e™^ˆNØˆFØˆIØò 2�Ø�Ø×*Ñ*¨5Ó1�ØŸ™ uÜ-6×-?Ñ-?Ä)×BVÑBVÑ-Vð 'ó X�à—‘˜u¡c¨%×*;Ñ*;Ó&<Ð=Ô>Ø˜5’=Ü,/°«I�N 5Ñ)Ü  yÓ1‘	ð2ð �K‰KŒMØ+¨N¨Y¸©]Ð;ˆNàˆJØˆAØˆIØˆNØ &ò 	#‘��uØ˜J¨™NÒ*Ø—H‘H˜U”OØ—H‘H˜e˜WÔ%Ø"×)Ñ)¨5°%¨.Õ9à�b‘E—L‘L Ô'Ø,1�N 2Ñ& qÑ)Ü 	¨5Ó1�	Ø"‘
ð	#ð !ˆOØ,ò 	M‘
��sà˜5’=ØÜ˜% “o�à×&Ñ&Ø)Ø˜CØ—Y‘YÑJ´e¸EÀ3ÀqÁ5Ó6IÔJÓJðLñLõMð	Mð !×7Ñ7Ü  Ó0°%·*±*¸_Ó2MÐNñOˆLð ˆIØ#ò +�Ü+¨H°eÕ<Ø$×3Ñ3°EÓ:�DØ×$Ñ$ TÕ*ð+ð
 4=·>±>ÖB¨a‘C˜ 5Ö)ÐBˆDÐBÜ-¨h¸	ÓBˆLÜ" <Ó0ò A�Ø% hÑ/�Ü(,¨Y«Ü+/°«<Ø(,ñ .�ð   §¡¨EÓ 2°QÑ 6Ð 7Ð8�Ø!%×!3Ñ!3°JÓ!?�Ø×!Ñ! .°&ÀÐ!ÔMà×3Ñ3°H¸hÓG�Ø2@�×)Ñ)¨$Ò/ð!Að&  ŸW™W ^Ó4×;Ñ;¸JÓGˆNØ×ÑÐ/°Ô@ð ×ÑÐ0°,Ô?à%.ˆJ�zÑ"ð ×ÑÐ.°Ô<Ø×ÑÐ0°-Ô@Ø×Ñ˜^¨ZÔ8Ø×Ñ˜W aÔ(à&Ð&÷G@ñ @üò@ Cs   Â>S*Î.S7Ó*S4r¾   rZ   Úpcltr   )Ú	capHeightÚxHeightÚpostÚitalicAngle©r   r   Fr#   r¡  é    r~  r�  rÉ  r(  r)  )
r©   r‹  r¤  r¥  r¦  r§  r¨  r©  rŸ  r¬  rÜ   rÞ   N)r   r\   rh  r‡  r#  r’  Úget_charmaprÍ   rK   Úget_sfnt_tableÚ
face_flagsÚstyle_flagsr   ÚFIXED_WIDTHr   ÚITALICrŒ  r°  r±  )rê   rï  ræ  r˜  rö  r&  r'  r*  ÚffÚsfr·  ÚsymbolicrB   r¹  rÇ  rá   r  s   ``            @@@r4   ru  zPdfFile.embedTTFq  sÕ  ü€ ô ˜Ó!ˆÜ—<‘< Ñ/ˆà ×-Ñ-°tó 		(÷h	"÷TO	'ð O	'ðf ×,Ñ,Ø× Ñ Ø×ÑÓó
ˆð —.‘. ¨)Ó4ˆÜ�w“-ˆØ×"Ñ" 6Ó*ÒL¸AÈ!Ñ.LˆØ×"Ñ" 6Ó*ÒE¨}¸fÐ.EˆØ�_‰_ˆØ×ÑˆàˆØˆÜ× Ñ  BÑ&Ø�V‰OˆEØáØ�V‰O‰Eà�V‰OˆEÜ×Ñ Ñ"Ø�V‰OˆEØààô Ð)Ó*ØØØ8<¿	¹	ÖB°1™˜Q¨Ö.ÒBÙ˜$Ÿ-™-°Ô7Ù˜4Ÿ>™>°5Ô9Ù˜T +Ñ.¸Ô>Ù˜4 	™?Ó+Ø Ñ.¨qÑ1Øñˆ
ð �qŠ=Ù   z°:Ó>Ð>Ø˜Š^Ù! $¨
°JÓ?Ð?ð ùò Cs   Ä0F)
c                 ó¾   — | j                   j                  |d«      }|�|d   S t        | j                  «      }|t	        d«      |d   |d   dœf| j                   |<   |S )z?Return name of an ExtGState that sets alpha to the given value.Nr   rÀ  r#   )r©   ÚCAÚca)rß  rS  rT  rà  rK   )rê   ÚalphaÚstaterL   s       r4   Ú
alphaStatezPdfFile.alphaState¯  ss   € ð × Ñ ×$Ñ$ U¨DÓ1ˆØÐØ˜‘8ˆOä�D×)Ñ)Ó*ˆàœD Ó-Ø ™(¨%°©(ñ4ð 5ð 	×Ñ˜Ñð ˆr6   c                 óà  — | j                   j                  |d«      }|�|d   S t        | j                  «      }| j	                  d«      }|t        d«      dt        d«      t        d«      dg|d	œd
œf| j                   |<   | j                  j                  |t        d«      t        d«      dt        d«      t        d«      dœg d¢dd|iig d¢dœt        d«      t        j                  gf«       |S )aA  
        Return an ExtGState that sets the soft mask to the given shading.

        Parameters
        ----------
        smask : Reference
            Reference to a shading in DeviceGray color space, whose luminosity
            is to be used as the alpha channel.

        Returns
        -------
        Name
        Nr   z transparency group for soft maskrÀ  FÚMaskÚ
Luminosityr#   )r©   r¨   ÚBCÚG)r©   ÚAISÚSMaskr¿  rÙ  ÚTransparencyÚ
DeviceGray)r¨   ÚCS)r#   r   r   r#   r   r   rÂ  r¨   )r   r   r#   r#   )r©   rª   ÚFormTypeÚGroupÚMatrixrø  rÛ  )
rá  rS  rT  râ  rÎ  rK   rã  r*   r  rW  )rê   Úsmaskr;  rL   ÚgroupObs        r4   Ú_soft_mask_statezPdfFile._soft_mask_state¼  s  € ð ×&Ñ&×*Ñ*¨5°$Ó7ˆØÐØ˜‘8ˆOä�D×'Ñ'Ó(ˆØ×$Ñ$Ð%GÓHˆàä˜[Ó)Øä  ›LÜ˜lÓ+Ø˜#Ø ñ	ñ	ð)
ˆ×Ñ˜uÑ%ð 	×Ñ×%Ñ%Øä˜Y›Ü ›<Øä˜nÓ-Ü˜|Ó,ñò -Ø'¨#¨u¨Ð6Ú$ñô �#‹YœŸ
™
Ð#ð'
ô 	ð  ˆr6   c                 ó¶   — | j                  | j                  t        g | j                  j	                  «       ¢| j
                  j	                  «       ¢«      «       y r>   )rr  rÓ  rÔ   rß  r-  rá  rí   s    r4   r)  zPdfFile.writeExtGSTatesð  sT   € Ø×ÑØ×!Ñ!Üð Ø×!Ñ!×(Ñ(Ó*ðà×'Ñ'×.Ñ.Ó0ðó õ	
r6   c                 ó¦   — | j                   D ]B  \  }}}| j                  |j                  d |«        | j                  |Ž  | j	                  «        ŒD y r>   )rã  r   rè   r  rÿ  )rê   r5  Ú
attributesÚcontents       r4   r*  zPdfFile._write_soft_mask_groupsù  sL   € Ø'+×'=Ñ'=ò 	Ñ#ˆB�
˜GØ×Ñ˜RŸU™U D¨*Ô5ØˆD�K‰K˜Ñ!Ø�N‰NÕñ	r6   c                 óÜ   — |\  }}}}|�t        |«      }|�t        |«      }||||f}| j                  j                  |d «      }|�|S t        | j                  «      }|| j                  |<   |S r>   )r˜   rä  rS  rT  rå  )rê   Úhatch_styleÚedgeÚfaceÚhatchÚlwÚpatternrL   s           r4   ÚhatchPatternzPdfFile.hatchPatternÿ  s„   € à +Ñˆˆd�E˜2ØÐÜ˜“;ˆDØÐÜ˜“;ˆDØ˜T 5¨"Ð-ˆà×&Ñ&×*Ñ*¨;¸Ó=ˆØÐØˆNä�D×+Ñ+Ó,ˆØ,0ˆ×Ñ˜[Ñ)Øˆr6   ú3.10c                 óŒ   — | j                   j                  «       D �����ci c]  \  }\  }}}}||||f“Œ c}}}}}S c c}}}}}w r>   )rä  r^   )rê   rg   r…   r†   ÚhÚls         r4   ú<lambda>zPdfFile.<lambda>  sJ   € Ø,0×,@Ñ,@×,FÑ,FÓ,H÷Cò CÙ(˜™L˜Q  1 aˆˆAˆq�!ˆ9‰öC€ ùö Cs   ¡=c                 óè  — t        «       }d}| j                  j                  «       D �]§  \  }}| j                  d«      }|||<   ddj	                  «       D �cg c]  }t        |«      ‘Œ c}i}| j                  |j                  d t        d«      ddddd||g|||ddddd| j                  dz  gd	œ	«       |\  }}	}
}| j                  |d   |d   |d
   t        j                  «       |	�M| j                  |	d   |	d   |	d
   t        j                  dd||t        j                  t        j                  «
       | j                  |t        j                  «        | j                  | j!                  t#        j$                  |
«      t'        «       j)                  |«      d¬«      Ž  | j                  t        j*                  «       | j-                  «        �Œª | j/                  | j0                  |«       y c c}w )Nç      R@zhatch patternÚProcsetsr½  rÁ  r#   r   rö  )	r©   ÚPatternTypeÚ	PaintTypeÚ
TilingTyperÛ  ÚXStepÚYSteprø  rI  r  F©Úsimplify)rÔ   rä  r^   rÎ  rî  rK   r   rè   r~   r  r  rD  rE  r=  r3  rU  ÚpathOperationsr    rU  r   Úscaler1  rÿ  rr  rÔ  )rê   Ú	hatchDictÚsidelenrR  rL   r5  rB   ÚresÚ
stroke_rgbÚfill_rgbrU  rV  s               r4   r+  zPdfFile.writeHatches  sÐ  € Ü“Fˆ	ØˆØ!%×!5Ñ!5×!;Ñ!;Ó!=ó  	ÑˆK˜Ø×#Ñ# OÓ4ˆBØ ˆI�d‰OØØ%D×%JÑ%JÓ%LÖM ”D˜•GÒMðOˆCà×ÑØ—‘�tÜ˜i›Ø !°ÀØ˜Q ¨Ð1Ø!¨GØ!à˜q ! Q¨¨4¯;©;¸Ñ+;Ð<ñ>ô?ð /:Ñ+ˆJ˜ %¨Ø�K‰K˜
 1™ z°!¡}°jÀ±mÜ×(Ñ(ô*àÐ#Ø—‘˜H Q™K¨°!©°h¸q±kÜ×/Ñ/Ø˜q '¨7´B·L±LÜŸG™Gô%ð
 �K‰K˜œBŸO™OÔ,àˆD�K‰K˜×,Ñ,Ü—
‘
˜5Ó!Ü“
× Ñ  Ó)Øð -ó  ñ !ð �K‰KœŸ™Ô'à�N‰NÖðA 	ðB 	×Ñ˜×)Ñ)¨9Õ5ùò; Ns   ÁG/c                 ó²   — t        dt        | j                  «      z  «      }| j                  d|› �«      }| j                  j	                  ||||f«       ||fS )aÕ  
        Add a Gouraud triangle shading.

        Parameters
        ----------
        points : np.ndarray
            Triangle vertices, shape (n, 3, 2)
            where n = number of triangles, 3 = vertices, 2 = x, y.
        colors : np.ndarray
            Vertex colors, shape (n, 3, 1) or (n, 3, 4)
            as with points, but last dimension is either (gray,)
            or (r, g, b, alpha).

        Returns
        -------
        Name, Reference
        zGT%dzGouraud triangle )rK   r)   ræ  rÎ  r*   )rê   ÚpointsÚcolorsrL   r5  s        r4   ÚaddGouraudTriangleszPdfFile.addGouraudTriangles:  s\   € ô$ �FœS ×!6Ñ!6Ó7Ñ7Ó8ˆØ×ÑÐ"3°D°6Ð :Ó;ˆØ×Ñ×$Ñ$ d¨B°¸Ð%?Ô@Ø�Rˆxˆr6   c                 óL  — t        «       }| j                  D �]n  \  }}}}|||<   |j                  }|j                  |d   |d   z  df«      }|j                  d   }|dv sJ ‚|j                  |d   |d   z  |f«      }	|dk(  rd}t	        j
                  |d¬«      dz
  }
t	        j                  |d¬«      dz   }d	||
z
  z  }| j                  |j                  d dd
ddt        |dk(  rdnd«      d|
d   |d   |
d   |d   gddg|z  z   dœ«       t	        j                  |d   |d   z  fdddd|ffg¬«      }d|d<   ||
z
  |z  |d<   |	d d …d |…f   dz  |d<   | j                  |j                  «       «       | j                  «        �Œq | j                  | j                  |«       y )Nr   r#   r  ©r#   r¡  r¡  rÜ   r€  rû   l   ÿÿ r-  é   rý  rE  F)ÚShadingTypeÚBitsPerCoordinateÚBitsPerComponentÚBitsPerFlagÚ
ColorSpaceÚ	AntiAliasÚDecode)r·  Úu1)rp  z>u4)r  rq  r}  ©Údtyper·  rp  g     ào@)rÔ   ræ  ÚshapeÚreshaperÅ   r–   r—   r   rè   rK   Úemptyrò   Útobytesrÿ  rr  rÕ  )rê   ÚgouraudDictrL   r5  rp  rq  r€  Úflat_pointsÚcolordimÚflat_colorsÚ
points_minÚ
points_maxÚfactorÚ	streamarrs                 r4   r,  zPdfFile.writeGouraudTrianglesQ  sù  € Ü“fˆØ(,×(=Ñ(=ó '	Ñ$ˆD�"�f˜fØ "ˆK˜ÑØ—L‘LˆEØ Ÿ.™.¨%°©(°U¸1±XÑ*=¸qÐ)AÓBˆKØ—|‘| A‘ˆHØ˜vÑ%Ð%Ð%Ø Ÿ.™.¨%°©(°U¸1±XÑ*=¸xÐ)HÓIˆKØ˜1Š}à�ÜŸ™ °!Ô4¸Ñ?ˆJÜŸ™ °!Ô4¸Ñ?ˆJØ :°
Ñ#:Ñ;ˆFà×ÑØ—‘�tØ !Ø&(Ø%&Ø !Ü#Ø$,°¢M‘[°|ó ð $Ø'¨™]¨J°q©MØ'¨™]¨J°q©Mð;à  !˜f xÑ/ñ0ñôô Ÿ™Ø�q‘˜E !™HÑ$Ð&Ø&Ø.Ø  $¨¨Ð4ð6ô7ˆIð
 "#ˆI�gÑØ#.°Ñ#;¸vÑ"EˆI�hÑØ"-ªa°°(°¨lÑ";¸eÑ"CˆI�hÑà�J‰J�y×(Ñ(Ó*Ô+Ø�N‰NÖðO'	ðP 	×Ñ˜×+Ñ+¨[Õ9r6   c                 óæ   — | j                   j                  t        |«      d«      }|�|d   S t        | j                  «      }| j                  d|› �«      }|||f| j                   t        |«      <   |S )z=Return name of an image XObject representing the given image.Nr#   zimage )rç  rS  rè   rT  rè  rÎ  )rê   r4  ÚentryrL   r5  s        r4   ÚimageObjectzPdfFile.imageObject}  so   € ð —‘× Ñ ¤ E£¨DÓ1ˆØÐØ˜‘8ˆOä�D—O‘OÓ$ˆØ×Ñ &¨¨ Ó0ˆØ#(¨$°Ð"3ˆ�‰”R˜“YÑØˆr6   c                 óB  — |ddd…   }|j                   dk(  r|dfS |dd…dd…dd…f   }t        j                  |d¬«      }|j                  d   dk(  rH|dd…dd…df   d   }t        j                  |d	k(  «      rd}||fS t        j                  |d¬«      }||fS d}||fS )
zç
        Unpack image array *im* into ``(data, alpha)``, which have shape
        ``(height, width, 3)`` (RGB) or ``(height, width, 1)`` (grayscale or
        alpha), except that alpha is None if the image is fully opaque.
        Nr†  r  rÜ   ÚC)Úorderr¡  ).NrÝ   )ÚndimrÅ   rŠ  r€  r‘  )rê   ÚimÚrgbr:  s       r4   Ú_unpackzPdfFile._unpack‰  s¼   € ð ‘�"�‰XˆØ�7‰7�aŠ<Ø�t�8ˆOà’Qš˜2˜A˜2�X‘,ˆCÜ—(‘(˜3 cÔ*ˆCà�x‰x˜‰{˜aÒØš1ša ˜7™ IÑ.�Ü—6‘6˜% 3™,Ô'Ø �Eð
 ˜�:Ðô ŸH™H U°#Ô6�Eð ˜�:Ðð �Ø˜�:Ðr6   c                 óÆ  — t        «       }|j                  |d¬«       |j                  d«       d}dx}}	 t        j                  d|j                  d«      «      \  }}|dv rQ|j                  |«      }t        |«      |k7  rt        d«      ‚|d	k(  rt        |d   «      }n+|d
k(  r|}n#|dk(  r||z  }n|dk(  rn%|j                  |d«       |j                  dd«       Œ¨|||fS )zn
        Write the image *img* into the pdf file using png
        predictors with Flate compression.
        rl  )rg  ru  r6   Ns   !L4s)ó   IHDRó   PLTEó   IDATztruncated datar—  r˜  r™  s   IENDr#   r¡  )	r   ÚsaveÚseekÚstructÚunpackÚreadr)   ÚRuntimeErrorrX   )	rê   ÚimgÚbufferÚpng_dataÚ	bit_depthÚpaletter3   rØ   rv  s	            r4   Ú	_writePngzPdfFile._writePng   sî   € ô
 “ˆØ�‰� ˆÔ&Ø�‰�AŒØˆØ"Ð"ˆ	�GØÜ!Ÿ=™=¨°&·+±+¸a³.ÓA‰LˆF�DØÐ2Ñ2Ø—{‘{ 6Ó*�Ü�t“9 Ò&Ü&Ð'7Ó8Ð8Ø˜7’?Ü # D¨¡G£‘IØ˜W’_Ø"‘GØ˜W’_Ø Ñ$‘HØ˜’Øà—‘˜F AÔ&Ø�K‰K˜˜1Ôð! ð" ˜ GÐ+Ð+r6   c           	      óL  — |j                   \  }}}t        d«      t        d«      ||t        dddœ|   «      ddœ}|r||d<   t        j                  d	   �rK|j                   d
   dk(  r|j	                  d
¬«      }d||dœ}t        j                  |«      }	|	j                  d¬«      }
|dk(  �rÞ|
��Ût        |
«      }t        j                  |
D ���cg c]  \  }}|D ]  }|‘Œ Œ c}}}t        j                  ¬«      }|ddd…   j                  t        j                  «      dz  |ddd…   j                  t        j                  «      dz  z  |ddd…   z  }|dd…dd…df   j                  t        j                  «      dz  |dd…dd…df   j                  t        j                  «      dz  z  |dd…dd…df   z  }t        j                  |«      j                  t        j                  «      }|t        j                  |||¬«         }t        j                  |d¬«      }	|	j!                  |«       | j#                  |	«      \  }}}|�|€t%        d«      ‚|d|dz   }t        d«      t        d«      |dz
  |g|d<   ||d<   d|d<   ||d<   n| j#                  |	«      \  }}}nd}| j'                  || j)                  d«      ||¬ «       |r| j*                  j-                  «       n)| j*                  j-                  |j/                  «       «       | j1                  «        yc c}}}w )!a  
        Write the image *data*, of shape ``(height, width, 1)`` (grayscale) or
        ``(height, width, 3)`` (RGB), as pdf object *id* and with the soft mask
        (alpha channel) *smask*, which should be either None or a ``(height,
        width, 1)`` array.
        r¿  r   rE  rý  ©r#   rÜ   ru  )r©   rª   ÚWidthÚHeightrz  rx  rC  rc  r†  r#   r€  é
   )Ú	PredictorÚColorsÚColumnsrû   )Ú	maxcolorsrÜ   Nr~  r   é   r  )ÚsorterÚP)Úmodezinvalid PNG headerÚIndexedrz  rx  r¬  zlength of image stream)rl  )r€  rK   r\   rh  Úsqueezer   Ú	fromarrayÚ	getcolorsr)   rÅ   rŠ  Úuint8r�  Úuint32ÚargsortÚsearchsortedÚ
putpaletter¥  rŸ  r   rÎ  rÍ  rò   rƒ  rÿ  )rê   rv  rè   rJ  r~   r}   Úcolor_channelsrÙ   rl  r   Ú
img_colorsÚ
num_colorsÚ_ÚcolorÚcompr¤  Ú	palette24Úrgb24ÚindicesÚrgb8r¢  r£  s                         r4   Ú	_writeImgzPdfFile._writeImg½  s  € ð )-¯
©
Ñ%ˆ��~Ü˜I“Ü˜w›-ØØÜ! l°{Ñ"CÀNÑ"SÓTØ#$ñ&ˆñ Ø ˆC�‰LÜ�<‰<Ð)Ó*Ø�z‰z˜"‰~ Ò"Ø—|‘|¨�|Ó,�Ø "¨nÈÑOˆCÜ—/‘/ $Ó'ˆCØŸ™°˜Ó5ˆJØ Ó" zÑ'=ô ! ›_�
ÜŸ(™(¸×#VÐ#V©X¨Q°ÐPUÒ#VÈ¢DÐ#V DÔ#VÜ)+¯©ô3�à% a d¨ d™m×2Ñ2´2·9±9Ó=ÀÑCØ% a d¨ d™m×2Ñ2´2·9±9Ó=ÀÑBñDà$ Q T¨ T™]ñ+�	ð šq¢! Q˜w™-×.Ñ.¬r¯y©yÓ9¸RÑ?Øšq¢! Q˜w™-×.Ñ.¬r¯y©yÓ9¸QÑ>ñ@àša¢ A˜g™ñ'�ô Ÿ*™* YÓ/×6Ñ6´r·x±xÓ@�ØœrŸ™¨y¸%ÈÔPÑQ�Ü—o‘o d°Ô5�Ø—‘˜wÔ'Ø/3¯~©~¸cÓ/BÑ,�˜) WØÐ$¨¨Ü&Ð';Ó<Ð<Ø! / :°¡>Ð2�Ü%)¨)£_´d¸;Ó6GØ%/°!¡^°Wð%>��LÑ!à*3�Ð&Ñ'Ø !��H‘Ø*3�Ð&Ò'à!%§¡°Ó!4‘�˜!™QàˆCØ×ÑØØ×ÑÐ7Ó8ØØð	 	ô 	ñ Ø×Ñ×$Ñ$ XÕ.à×Ñ×$Ñ$ T§\¡\£^Ô4Ø�‰ÕùôG $Ws   ÃLc                 ó  — | j                   j                  «       D ]i  \  }}}| j                  |«      \  }}|�.| j                  d«      }| j	                  ||j
                  «       nd }| j	                  ||j
                  |«       Œk y )NrJ  )rç  r-  r•  rÎ  rÆ  rè   )rê   r   rL   r5  rv  ÚadataÚsmaskObjects          r4   r.  zPdfFile.writeImagesü  sw   € Ø!Ÿ\™\×0Ñ0Ó2ò 	5‰MˆC��rØŸ,™, sÓ+‰KˆD�%ØÐ Ø"×0Ñ0°Ó9�Ø—‘˜u k§n¡nÕ5à"�Ø�N‰N˜4 §¡¨Õ4ñ	5r6   c                 ó¬  — | j                  ||d¬«      }t        |«      t        |«      t        |«      ||f}	| j                  j	                  |	«      }
|
€nt        dt        | j                  «      z  «      }| j                  dt        | j                  «      z  «      }|j                  |«      }||||g| j                  |	<   |S |
d   |k  r||
d<   |
d   }|S )z<Return name of a marker XObject representing the given path.Frf  zM%dz	marker %dr†  r   )	rh  r˜   rÊ   ré  rS  rK   r)   rÎ  Úget_extents)rê   r8  r9  r3  r2  rV  Ú	joinstyleÚcapstyleÚpathopsÚkeyr0   rL   r5  rŒ  s                 r4   ÚmarkerObjectzPdfFile.markerObject  sØ   € ð ×%Ñ% d¨E¸EÐ%ÓBˆÜ�W‹~œt D›z¬4°«<¸ÀHÐMˆØ—‘×!Ñ! #Ó&ˆØˆ>Ü˜¤ D§L¡LÓ 1Ñ1Ó2ˆDØ×#Ñ# K´#°d·l±lÓ2CÑ$CÓDˆBØ×#Ñ# EÓ*ˆDØ!% r¨4°Ð 4ˆD�L‰L˜Ñð
 ˆð �b‰z˜BŠØ��r‘
Ø˜!‘9ˆDØˆr6   c           
      ób  — | j                   j                  «       D �]  \  \  }}}}}\  }}}}	|j                  |	dz  «      }| j                  |j                  d t        d«      t        d«      t        |j                  «      dœ«       | j                  t        j                  |   t        j                  «       | j                  t        j                  |   t        j                  «        | j                  |Ž  | j                  t        j                  ||«      «       | j!                  «        �Œ y )Né   r¿  rÙ  rÚ  )ré  r^   Úpaddedr   rè   rK   rÕ   Úextentsr  r  r  r  rK  Ú	capstylesrL  r6  rÿ  )
rê   rÎ  r3  r2  rÌ  rÍ  rL   r5  rŒ  rV  s
             r4   r/  zPdfFile.writeMarkers#  sò   € à&*§l¡l×&8Ñ&8Ó&:ó	ñ #Ñ9ˆg�t˜V Y°Ù!ˆd�B˜˜bð —;‘;˜r A™vÓ&ˆDØ×ÑØ—‘�tÜ˜i›´T¸&³\Ü˜dŸl™lÓ+ñ-ô.ð �K‰KÔ*×5Ñ5°iÑ@ÜŸ™ô(à�K‰KÔ*×4Ñ4°XÑ>ÄÇÁÔNØˆD�K‰K˜Ñ!Ø�K‰KœŸ™ d¨FÓ3Ô4Ø�N‰NÖñ'	r6   c                 ó  — t        dt        | j                  «      z  «      }| j                  dt        | j                  «      z  «      }| j                  j	                  |||||j                  «       |j                  «       |||f	«       |S )NzP%dzpath %d)rK   r)   rë  rÎ  r*   Úget_joinstyleÚget_capstyle)	rê   r°   r8  r9  r;  r<  r=  rL   r5  s	            r4   ÚpathCollectionObjectzPdfFile.pathCollectionObject9  sx   € Ü�EœC §
¡
›OÑ+Ó,ˆØ×Ñ 	¬C°·
±
«OÑ ;Ó<ˆØ�
‰
×ÑØ�4˜  B×$4Ñ$4Ó$6¸¿¹Ó8IØ�f˜gð'ô	(ð ˆr6   c           
      óô  — | j                   D �]h  \	  }}}}}}}}}	| j                  ||d¬«      }
|j                  |«      }t        j                  t        j
                  |j                  «      «      sg d¢}n&|j                  |«      }t        |j                  «      }| j                  |j                  d t        d«      t        d«      |dœ«       | j                  t        j                  |   t        j                   «       | j                  t        j"                  |   t        j$                  «        | j                  |
Ž  | j                  t        j'                  ||	«      «       | j)                  «        �Œk y )NFrf  ©r   r   r   r   r¿  rÙ  rÚ  )rë  rh  rË  rÅ   r‘  rÇ   rÔ  rÓ  rÕ   r   rè   rK   r  r  r  r  rK  rÕ  rL  r6  rÿ  )rê   rL   r8  r9  r5  rÌ  rÍ  r;  r<  r=  rÎ  rŒ  rÔ  s                r4   r0  z$PdfFile.writePathCollectionTemplatesA  s(  € àŸ™ó	ñ ˆT�4˜  I¨x¸À&ØØ×)Ñ)¨$°ÀÐ)ÓFˆGØ×#Ñ# EÓ*ˆDÜ—6‘6œ"Ÿ+™+ d§l¡lÓ3Ô4Ú&‘à—{‘{ 7Ó+�Ü˜tŸ|™|Ó,�Ø×ÑØ—‘�tÜ˜i›´T¸&³\Ø ñ"ô#ð �K‰KÔ*×5Ñ5°iÑ@ÜŸ™ô(à�K‰KÔ*×4Ñ4°XÑ>ÄÇÁÔNØˆD�K‰K˜Ñ!Ø�K‰KœŸ™ f¨gÓ6Ô7Ø�N‰NÖñ%	r6   c                 ó  — t        t        j                  | ||||dt        j                  j
                  t        j                  j
                  dt        j                  j
                  t        j                  j
                  gd«      «      gS )Nr  r6   T)	r  r"   r”  r  r?  r/  r>  r<  r8  )r8  r–  rV  rg  Úsketchs        r4   rh  zPdfFile.pathOperationsV  sg   € äœ×0Ñ0Ø�)˜T 8¨VØÜ�Y‰Y�_‰_œbŸi™iŸo™o¨s´B·J±J×4DÑ4DÜ�\‰\×Ñð!àóó ð ð 	r6   c                 ó´   — |r-dd| j                   dz  | j                  dz  f}|j                  }nd }d}| j                  |||||¬«      } | j                  |Ž  y )Nr�  rö  F)rg  rÝ  )r}   r~   Úshould_simplifyrh  r  )rê   r8  r–  rV  rÝ  rg  Úcmdss          r4   Ú	writePathzPdfFile.writePath_  sg   € ÙØ˜˜dŸj™j¨2™o¨t¯{©{¸RÑ/?Ð@ˆDØ×+Ñ+‰HàˆDØˆHØ×"Ñ" 4¨°DÀ8Ø*0ð #ó 2ˆàˆ�‰�TÒr6   c                 ó~   — t        | j                  «      }| j                  j                  dd|g«       t	        |«      S )z£
        Reserve an ID for an indirect object.

        The name is used for debugging in case we forget to print out
        the object with writeObject.
        Nr   )rT  rÆ  rÇ  r*   rå   )rê   rL   rè   s      r4   rÎ  zPdfFile.reserveObjectj  s6   € ô �$×"Ñ"Ó#ˆØ�‰×Ñ˜t Q¨˜oÔ.Ü˜‹}Ðr6   c                 ór   — | j                   j                  «       | j                  z
  | j                  |   d<   y ©Nr   )rd  rk  rÊ  rÇ  ré   s     r4   rg  zPdfFile.recordXrefu  s(   € Ø $§¡§¡£°·±Ñ ?ˆ�‰�rÑ˜1Òr6   c                 ó^   — | j                  |j                  «       |j                  || «       y r>   )rg  rè   rò   )rê   Úobjectró   s      r4   rr  zPdfFile.writeObjectx  s    € Ø�‰˜Ÿ	™	Ô"Ø�‰�X˜tÕ$r6   c                 óT  — | j                   j                  «       | j                  z
  | _        | j	                  dt        | j                  «      z  «       t        | j                  «      D ]=  \  }\  }}}|€t        d||fz  «      ‚|dk(  rdnd}d|||fz  }| j	                  |«       Œ? y)zWrite out the xref table.s
   xref
0 %d
NzNo offset for object %d (%s)r¦  r  r!  s   %010d %05d %b 
)	rd  rk  rÊ  Ú	startxrefrò   r)   rÇ  r(   ÚAssertionError)rê   r1   ÚoffsetÚ
generationrL   rÏ  r  s          r4   r2  zPdfFile.writeXref|  s¨   € àŸ™Ÿ™›¨$¯.©.Ñ8ˆŒØ�
‰
�?¤S¨¯©Ó%8Ñ8Ô9Ü-6°t·~±~Ó-Fò 	!Ñ)ˆAÑ)�˜
 DØˆ~Ü$Ø2°a¸°YÑ>ó@ð @ð #Ð&7Ò7‘d¸T�Ø*¨f°jÀ#Ð-FÑF�Ø—
‘
˜4Õ ñ	!r6   c                 ó|   — | j                  d«      | _        | j                  | j                  | j                  «       y)z8Write out the info dictionary, checking it for good formrf   N)rÎ  Ú
infoObjectrr  rØ  rí   s    r4   r1  zPdfFile.writeInfoDict‰  s.   € ð ×,Ñ,¨VÓ4ˆŒØ×Ñ˜Ÿ™¨$¯-©-Õ8r6   c                 óì   — | j                  d«       | j                  t        t        | j                  «      | j                  | j
                  dœ«      «       | j                  d| j                  z  «       y)zWrite out the PDF trailer.s   trailer
)ÚSizeÚRootÚInfos   
startxref
%d
%%%%EOF
N)rò   r»   r)   rÇ  rÏ  rí  rè  rí   s    r4   r3  zPdfFile.writeTrailer�  sZ   € ð 	�
‰
�<Ô Ø�
‰
”7Ü˜Ÿ™Ó(Ø—_‘_Ø—_‘_ñ&ó'ô 	(ð
 	�
‰
Ð0°4·>±>ÑAÕBr6   r>   rz  )NNN©FN)rø  )8rõ   rö   r÷   rø   rë   r  r  r#  r>  r@  rò   r  r   rÿ  rH  r'  r\  ro  r(  rs  rq  r˜  r¿  r  ru  r<  rL  r)  r*  rX  r	   Ú
deprecatedÚpropertyÚhatchPatternsr+  rr  r,  rŽ  r•  r¥  rÆ  r.  rÐ  r/  rÙ  r0  Ústaticmethodrh  rá  rÎ  rg  rr  r2  r1  r3  Ú__classcell__©rò  s   @r4   r¤  r¤  ”  s<  ø„ Ùõg9òR"ò: .@ó -ò*ò òB	ò+òó?ò&ð
 04ô ò
8òò>ò<1ò*
ò8òt=ò~ðÐò*|@ò|	ò2òh
òòð" ,�O�D—O‘O FÓ+©Hñ 6ó -ó €Mò$6òLò.*:òX
òò.,ó:=ò~5òò:ò,òð* òó ðó	ó	ò@ò%ò!ò9ö	Cr6   r¤  c                   ó´   ‡ — e Zd Z ej                  d«      ZdZˆ fd„Zd„ Zdd„Z	d„ Z
dd„Zdd	„Zd
„ Z	 dd„Zd„ Zdd„Zd„ Zddœd„Zd„ Zdd„Zd„ Zd„ Zˆ xZS )rQ  zfonts/pdfcorefontsrK  c                 ól   •— t         ‰| �  ||«       || _        | j                  «       | _        || _        y r>   )rÄ  rë   rô   Únew_gcr°   Ú	image_dpi)rê   rô   rü  r~   r}   rò  s        €r4   rë   zRendererPdf.__init__   s-   ø€ Ü‰Ñ˜ Ô'ØˆŒ	Ø—+‘+“-ˆŒØ"ˆ�r6   c                 óf   —  | j                   j                  | j                  j                  «       Ž  y r>   )rô   r  r°   r>  rí   s    r4   r>  zRendererPdf.finalize¦  s#   € Øˆ�	‰	×Ñ˜$Ÿ'™'×*Ñ*Ó,Ò-r6   Nc                 óè  — t        |dd«      }||_        t        |dd«      }|j                  «       €|j                  dd¬«       |j                  r|j
                  |j
                  f|_        n@|�t        |«      dk  r|j                  d	   d
f|_        n|j                  d	   |d	   f|_        | j                  j                  |«      }|r | j                  j                  |Ž  ||_        ||_        y )NÚ
_fillcolor©r�  r�  r�  Ú_effective_alphas©r�  r�  rÛ  T)ÚisRGBAr¡  rÜ   r�  )Úgetattrrÿ  Úget_rgbÚset_foregroundÚ_forced_alphaÚ_alphar  r)   Ú_rgbr°   Údeltarô   r  )rê   r°   Ú	fillcolorÚ	orig_fillÚorig_alphasr
  s         r4   Úcheck_gczRendererPdf.check_gc©  sÞ   € Ü˜B ¨lÓ;ˆ	Ø!ˆŒä˜bÐ"5°zÓBˆà�:‰:‹<Ðð ×Ñ˜l°4ÐÔ8à×ÒØ$&§I¡I¨r¯y©yÐ#9ˆBÕ ØÐ¤# i£.°1Ò"4Ø$&§G¡G¨A¡J°Ð#4ˆBÕ à$&§G¡G¨A¡J°	¸!±Ð#=ˆBÔ à—‘—‘˜bÓ!ˆÙØˆD�I‰I×Ñ˜eÑ$ð "ˆŒØ*ˆÕr6   c                 ó    — | j                   dz  S )Nr_  )rü  rí   s    r4   Úget_image_magnificationz#RendererPdf.get_image_magnificationÄ  s   € Ø�~‰~˜dÑ"Ð"r6   c                 óò  — |j                   d d \  }}|dk(  s|dk(  ry |€|j                  d«       | j                  |«       d|z  | j                  z  }d|z  | j                  z  }| j                  j                  |«      }|€^| j                  j                  t        j                  |dd|||t        j                  |t        j                  t        j                  «       y |j                  «       j                  «       \  }	}
}}}}| j                  j                  t        j                  dddd||t        j                  |	|
||||t        j                  |t        j                  t        j                  «       y )Nr  r   r�  r_  r#   )r€  Ú	set_alphar  rü  rô   rŽ  r  r  rN  r@  rA  rO  ÚfrozenÚ	to_values)rê   r°   rB   r|   r“  r–  r[  r   ÚimobÚtr1Útr2Útr3Útr4Útr5Útr6s                  r4   Ú
draw_imagezRendererPdf.draw_imageÇ  s8  € ð �x‰x˜˜ˆ|‰ˆˆ1Ø�Š6�Q˜!’VØàÐà�L‰L˜Ôà�‰�bÔà�1‰H�t—~‘~Ñ%ˆØ�1‰H�t—~‘~Ñ%ˆà�y‰y×$Ñ$ RÓ(ˆàÐØ�I‰I×ÑœRŸX™XØ  1 a¨¨A¬r×/?Ñ/?Ø!¤2§>¡>´2·;±;õ@ð ,5×+;Ñ+;Ó+=×+GÑ+GÓ+IÑ(ˆC��c˜3  Sà�I‰I×ÑœRŸX™XØ  1 a¨¨A¬r×/?Ñ/?Ø  # s¨C°°c¼2×;KÑ;KØ!¤2§>¡>´2·;±;õ@r6   c                 ó  — | j                  ||«       | j                  j                  |||d u xr |j                  «       d u |j	                  «       «       | j                  j                  | j                  j                  «       «       y r>   )r  rô   rá  Úget_hatch_pathÚget_sketch_paramsr  r°   Úpaint)rê   r°   r8  r–  ÚrgbFaces        r4   Ú	draw_pathzRendererPdf.draw_pathå  sk   € à�‰�b˜'Ô"Ø�	‰	×ÑØ�)Ø�tˆOÒ; × 1Ñ 1Ó 3°tÐ ;Ø× Ñ Ó"ô	$ð 	�	‰	×Ñ˜Ÿ™Ÿ™›Õ)r6   c                 ó  — d}t        j                  |«      }t        j                  |«      }t        |«      sd}|j                  «        }n-t        j                  |d d …df   |d   k(  «      r	|d   dk7  }nd}t        |«      sd}n[t        j                  t        j                  |	«      dk(  «      rd}n-t        j                  |d d …df   |d   k(  «      r	|d   dk7  }nd}t        |«      dkD  rt        |d   j
                  «      nd}| j                  |||||«      }||z   dz   ||z  k  }|r|s"t        j                  | |||||||||	|
|||«      S t        j                  |	«      }g }t        | j                  |||«      «      D ]9  \  }\  }}| j                  j                  ||||«      }|j                  |«       Œ; | j                  j                  } || j                   j#                  «       Ž  d\  }}| j%                  |||||||	|
|||«      D ]T  \  }}}} }!| j'                  | |!«       ||z
  ||z
  }#}" |d	ddd	|"|#t(        j*                  |t(        j,                  «	       ||}}ŒV  || j                   j/                  «       Ž  y )
NTFrÜ   )r   rÜ   r�  r   rÒ  r,  r#   )rÅ   Úasarrayr)   Ú	get_hatchr‘  rœ   Ú_iter_collection_uses_per_pathr   Údraw_path_collectionr—   r(   Ú_iter_collection_raw_pathsrô   rÙ  r*   r  r°   ÚpushÚ_iter_collectionr  r  r@  rA  Úpop)$rê   r°   Úmaster_transformrë  Úall_transformsÚoffsetsÚoffset_transÚ
facecolorsÚ
edgecolorsÚ
linewidthsÚ
linestylesÚantialiasedsÚurlsÚoffset_positionÚcan_do_optimizationr<  r=  Úlen_pathÚuses_per_pathÚshould_do_optimizationr;  Ú
path_codesr1   r8  r–  rL   r  ÚlastxÚlastyÚxoÚyoÚpath_idÚgc0r!  ÚdxÚdys$                                       r4   r'  z RendererPdf.draw_path_collectionî  s¯  € ð #ÐÜ—Z‘Z 
Ó+ˆ
Ü—Z‘Z 
Ó+ˆ
ä�:ŒØˆFØ&(§l¡l£nÐ"4Ñä�v‰v�j¢ A Ñ&¨*°TÑ*:Ñ:Ô;Ø# DÑ)¨SÑ0‘à&+Ð#ä�:ŒØ‰Gä�v‰v”b—j‘j Ó,°Ñ3Ô4Ø‘Ü—‘˜
¢1 a 4Ñ(¨J°tÑ,<Ñ<Ô=Ø$ TÑ*¨cÑ1‘à&+Ð#ô .1°«Z¸!ª^”3�u˜Q‘x×(Ñ(Ô)ÀˆØ×;Ñ;Ø�> 7¨J¸
óDˆð �}Ñ$ qÑ(¨8°mÑ+CÑCð 	ñ $Ñ-CÜ×4Ñ4Ø�bÐ*¨E°>Ø˜ z°:Ø˜J¨°dØó	!ð !ô —&‘&˜Ó$ˆØˆ
Ü$-¨d×.MÑ.MØ  %¨ó/9ó %:ò 	$Ñ ˆAÑ ��ià—9‘9×1Ñ1Ø�D˜) W¨f°gó?ˆDà×Ñ˜dÕ#ð		$ð —‘×!Ñ!ˆÙ�—‘—‘“ÑØ‰ˆˆuØ-1×-BÑ-BØ�J ¨Ø˜J¨
°JØ˜d Oó.5ò 		"Ñ)ˆB��G˜S 'ð
 �M‰M˜#˜wÔ'Ø˜%‘Z  e¡�ˆBÙ�1�a˜˜A˜r 2¤r×'7Ñ'7¸Ü—>‘>ô#à˜r�5‰Eð		"ñ 	�—‘—‘“Òr6   c                 óæ  — t        |«      }t        |«      }||z  ||z   dz   k  rt        j                  | ||||||«       y | j                  ||«       |j	                  |«      }	|j                  «       }
| j                  j                  }| j                  j                  |||	|
| j                  j                  |j                  «       |j                  «       «      } |t        j                  «       d\  }}|j                  |dd| j                  j                   dz  | j                  j"                  dz  fd¬«      D ]�  \  }}t        |«      sŒ|dd  \  }}d|cxk  r| j                  j                   dz  k  r'n n$d|cxk  r| j                  j"                  dz  k  sn Œd||z
  ||z
  }} |dddd||t        j$                  |t        j&                  «	       ||}}ŒŸ  |t        j(                  «       y )	NrÒ  r,  r   rö  F)rV  rg  rØ  r#   )r)   r   Údraw_markersr  r3  r2  rô   r  rÐ  r°   Ú
_linewidthr×  rØ  r  rN  Úiter_segmentsr}   r~   r@  rA  rO  )rê   r°   Úmarker_pathÚmarker_transr8  r9  r!  Úlen_marker_pathÚusesr3  r2  r  Úmarkerr<  r=  rœ   ÚcoderB   r|   rB  rC  s                        r4   rE  zRendererPdf.draw_markers4  sÈ  € ô
 ˜kÓ*ˆÜ�4‹yˆØ˜TÑ! O°dÑ$:¸QÑ$>Ò>Ü×%Ñ% d¨B°¸\Ø&*¨E°7ô<àà�‰�b˜'Ô"Ø�w‰w�wÓˆØ—‘“ˆà—‘×!Ñ!ˆØ—‘×'Ñ'Ø˜ t¨V°T·W±W×5GÑ5GØ×ÑÓ §¡Ó 1ó3ˆñ 	Œr�x‰xÔØ‰ˆˆuØ"×0Ñ0ØØ˜˜DŸI™IŸO™O¨BÑ.°·	±	×0@Ñ0@ÀÑ0CÐDØð 1ó  ò 	$‰NˆH�dô �8�}Ø  �}‘��1Ø˜QÔ6 $§)¡)§/¡/°BÑ"6Õ6Ø Ô; d§i¡i×&6Ñ&6¸Ñ&;Ô;ØØ˜U™ A¨¡I�B�Ù�q˜!˜Q  2 r¬2×+;Ñ+;ØœrŸ~™~ô/à  !�u‘ð	$ñ 	Œr�{‰{Õr6   c                 ó´  — t        |«      t        |«      k(  sJ ‚t        |«      dk(  ry |j                  dk(  sJ ‚|j                  d   dk(  sJ ‚|j                  d   dk(  sJ ‚|j                  dk(  sJ ‚|j                  d   dk(  sJ ‚|j                  d   dv sJ ‚|j                  }|j                  |d   |d   z  df«      }|j	                  |«      }|j                  |«      }| j
                  j                  ||«      \  }}| j
                  j                  }	|j                  d   dk(  r:|j                  d«       | j                  |«        |	|t        j                  «       y |d   }
t        j                  |
|d d …d d …df   «      r:|j                  |
«       | j                  |«        |	|t        j                  «       y |d d …d d …df   d d …d d …d f   }
| j
                  j                  ||
«      \  }}| j
                  j                  |«      } |	t        j                  |t        j                   |t        j                  t        j"                  «       y )Nr   rÜ   r#   r  rt  r�  )r   r   rÜ   )r)   r’  r€  r�  r–  rô   rr  r  r  r  r  rW  rÅ   ÚallcloserL  rN  rM  rO  )rê   r°   rp  rq  r9  r€  ÚtpointsrL   r¿  r  r:  Úsmask_obÚgstates                r4   Údraw_gouraud_trianglesz"RendererPdf.draw_gouraud_trianglesZ  s  € Ü�6‹{œc &›kÒ)Ð)Ð)Üˆv‹;˜!ÒØØ�{‰{˜aÒÐÐØ�|‰|˜A‰ !Ò#Ð#Ð#Ø�|‰|˜A‰ !Ò#Ð#Ð#Ø�{‰{˜aÒÐÐØ�|‰|˜A‰ !Ò#Ð#Ð#Ø�|‰|˜A‰ &Ñ(Ð(Ð(à—‘ˆØ—‘  q¡¨E°!©HÑ!4°aÐ 8Ó9ˆØ—/‘/ &Ó)ˆØ—/‘/ %Ó(ˆØ—)‘)×/Ñ/°¸Ó@‰ˆˆaØ—‘×!Ñ!ˆà�<‰<˜‰?˜aÒà�L‰L˜ÔØ�M‰M˜"ÔÙ�4œŸ™Ô$Øà�w‘ˆÜ�;‰;�u˜f¢Qª¨1 W™oÔ.à�L‰L˜ÔØ�M‰M˜"ÔÙ�4œŸ™Õ$ð š1ša ˜7‘O¢A¢q¨$ JÑ/ˆEØŸ)™)×7Ñ7¸ÀÓG‰KˆAˆxØ—Y‘Y×/Ñ/°Ó9ˆFÙ”2—8‘8˜V¤R§\¡\ØœŸ™Ü—;‘;õ r6   c           	      óü  — ||cxk(  rdk(  r5n n2| j                   j                  ||z
  ||z
  t        j                  «       y t	        j
                  |«      }| j                   j                  t	        j                  |«      t	        j                  |«      t	        j                  |«       t	        j                  |«      ||t        j                  «       | j                   j                  ddt        j                  «       y rä  )	rô   r  r  rP  rx   ry   r{   rz   rR  )rê   rB   r|   r   ÚoldxÚoldyÚoldangles          r4   Ú_setup_textposzRendererPdf._setup_textpos‚  s¤   € Ø�HÔ! Õ!Ø�I‰I×Ñ˜Q ™X q¨4¡x´·±Õ<ä—L‘L Ó'ˆEØ�I‰I×ÑœTŸX™X e›_¬d¯h©h°u«oÜ"Ÿh™h u›oÐ-¬t¯x©x¸«Ø ¤2§=¡=ô2ð �I‰I×Ñ˜Q ¤2§:¡:Õ.r6   c                 ó  — | j                   j                  j                  |d|«      \  }}}	}
}|j                  «       �9| j                  j
                  d   d   j                  t        ||||||«      «       t        j                  d   }t        j                  |«      }| j                  j                  t        j                  «       | j                  j                  t        j                  |«      t        j                   |«      t        j                   |«       t        j                  |«      ||t        j"                  «       | j%                  ||j&                  «       d}d\  }}g }| j                  j                  t        j(                  «       |
D �]	  \  }}}}}| j                  j*                  j-                  ||«       |j.                  }t1        ||«      s|j                  |||||f«       Œ_| j3                  ||d||«       ||}}||f|k7  rH| j                  j                  | j                  j5                  |«      |t        j6                  «       ||f}| j                  j                  | j9                  t;        |«      |«      t        j<                  «       �Œ | j                  j                  t        j>                  «       |D ],  \  }}}}}| jA                  |||jC                  |«      ||«       Œ. |D ]a  \  }}}}| j                  j                  t        j                  ||||t        jD                  t        jF                  t        jH                  «       Œc | j                  j                  t        jH                  «       y )Nrö  r†  r#   rÁ  rz  r,  r   )%Ú
_text2pathÚmathtext_parserÚparser¯   rô   rì  r*   r´   r\   rh  rx   ry   r  r  rN  r{   rz   r@  r  r	  r:  rÞ  Útrack_glyphrZ  rã   rX  r\  rQ  Úencode_stringrú  rS  r;  Ú_draw_xobject_glyphrâ  r=  r3  rO  )rê   r°   rB   r|   r2   r—  r   r}   r~   ÚdescentÚglyphsÚrectsrá   r‚   Ú	prev_fontrU  rV  Úunsupported_charsr˜  ÚfontsizeÚnumÚoxÚoyr�  s                           r4   Údraw_mathtextzRendererPdf.draw_mathtextŒ  sã  € ð �O‰O×+Ñ+×1Ñ1°!°R¸Ó>ñ 	.ˆˆv�w ¨ð �:‰:‹<Ð#Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜% ¨ó20ô 1ô —<‘< Ñ/ˆô �L‰L˜ÓˆØ�	‰	×ÑœŸ™Ô"Ø�	‰	×ÑœŸ™ !›¤d§h¡h¨q£kÜŸ(™( 1›+˜¤t§x¡x°£{Ø˜Aœr×/Ñ/ô	1ð 	�‰�b˜"Ÿ'™'Ô"Øˆ	Ø‰
ˆˆdØÐà�	‰	×ÑœŸ™Ô'Ø+1ó 	*Ñ'ˆD�(˜C  RØ�I‰I×(Ñ(×4Ñ4°T¸3Ô?Ø—z‘zˆHÜ'¨°#Ô6ð "×(Ñ(¨$°¸"¸bÀ#Ð)FÕGà×#Ñ# B¨¨A¨t°TÔ:Ø �d�Ø˜hÐ'¨9Ò4Ø—I‘I×$Ñ$ T§Y¡Y×%7Ñ%7¸Ó%AÀ8Ü%'§]¡]ô4à (¨(Ð 2�IØ—	‘	× Ñ  ×!3Ñ!3´C¸³H¸hÓ!GÜ!#§¡ö*ð	*ð  	�	‰	×ÑœŸ™Ô%à+<ò 	BÑ'ˆD�(˜B  CØ×$Ñ$Ø�h × 3Ñ 3°CÓ 8¸"¸bõBð	Bð
 &+ò 	AÑ!ˆB��E˜6Ø�I‰I×ÑœRŸX™X r¨2¨u°fÜŸ\™\¬2¯7©7´B·K±KõAð	Að
 	�	‰	×ÑœŸ™Õ%r6   )Úmtextc          
      óÎ  — | j                  «       }|j                  «       }	|j                  ||	«      }
t        j                  |
d«      5 }|\  }d d d «       |j                  «       �M| j                  j                  d   d   j                  t        |||j                  |j                  |«      «       d g }}j                  D ]V  \  }}}}}||k7  r0| j                  j                  |«      }|d||j                  ggz  }|}|d||t        |g«      g||z   ggz  }ŒX d\  }}}	|t!        |«      dz
  k  r¿|||dz    \  }}|d   dk(  r|d   }	n�|d   |d   cxk(  rdk(  r~n n{|d   |d   k(  rp|d	   |d   z
  }t#        |«      d
k  r-|d   dxx   |d   d   z  cc<   |d	xx   |d	   |d   z
  z  cc<   n#|dxx   |dz  |	z  |d   d   gz  cc<   |d	   |d	<   ||dz   = Œ¹|dz  }|t!        |«      dz
  k  rŒ¿t%        «       j'                  |«      j)                  ||«      }| j+                  ||j,                  «       | j                  j/                  t0        j2                  «       d\  }}}}|D ]ê  }|d   dk(  r2| j                  j/                  |d   |d   t0        j4                  «       Œ=|d   dk(  r¥|j7                  |d   |d   f«      \  }}| j9                  |||||«       ||}}t!        |d   «      dk(  r1| j                  j/                  |d   d   t0        j:                  «       Œ¼| j                  j/                  |d   t0        j<                  «       ŒêJ ‚ | j                  j/                  t0        j>                  «       | jA                  «       }|jC                  |«       |jE                  d«       tF        jH                  tF        jJ                  tF        jJ                  tF        jJ                  tF        jL                  g}|jN                  D ]L  \  }}} }!tG        ||g||!z   |g||!z   || z   g||| z   gddgg|«      }"| jQ                  ||"||j,                  «       ŒN y # 1 sw Y   �ŒxY w)Nrö  r†  r#   r˜  r  )r   r   Nr  r   r¡  gš™™™™™¹?rÜ   g     @�@rÛ  ))Úget_texmanagerÚget_size_in_pointsÚmake_dvir   ÚDvir¯   rô   rì  r*   r´   r}   r~   r  ro  ÚsizerÐ   r)   Úabsr   Ú
rotate_degrÒ   r  r	  r  r  r:  rQ  r–  rX  rS  rT  r;  rû  Úcopy_propertiesÚset_linewidthr    ÚMOVETOÚLINETOÚ	CLOSEPOLYÚboxesr"  )#rê   r°   rB   r|   r2   r—  r   rj  Ú
texmanagerre  ÚdvifileÚdvirü  ÚoldfontÚseqÚx1Úy1r^  râ   r}   r_  r1   ÚcurxÚeltÚnxtrê  ÚmytransÚcuryrU  rV  ÚboxgcrÎ  r[  r   r8  s#                                      r4   Údraw_texzRendererPdf.draw_texÂ  sS  € à×(Ñ(Ó*ˆ
Ø×*Ñ*Ó,ˆØ×%Ñ% a¨Ó2ˆÜ�[‰[˜ "Ó%ð 	¨Ø‰EˆD÷	ð �:‰:‹<Ð#Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜$Ÿ*™* d§k¡k°5ó2:ô ;ð ˜R�ˆØ-1¯Y©Yò 	BÑ)ˆB��G˜U EØ˜'Ò!ØŸ)™)×/Ñ/°Ó8�Ø˜ ¨'¯,©,Ð7Ð8Ñ8�Ø!�Ø�V˜R ¤e¨U¨G£nÐ%5°r¸%±xÐ@ÐAÑA‰Cð	Bð 'Ñˆˆ4�Ø”#�c“(˜1‘*ŠnØ˜1˜Q˜q™S�z‰HˆC�Ø�1‰v˜ÒØ˜q™6‘Ø�Q‘˜3˜q™6Ô+ VÕ+°°A±¸#¸a¹&Ò0@Ø˜Q™ # a¡&™�Ü�v“; Ò$Ø˜‘F˜2“J # a¡&¨¡)Ñ+“JØ˜“F˜c !™f S¨¡V™mÑ+”Fà˜“F˜v f™}¨XÑ5°s¸1±v¸a±yÐAÑA“FØ  ™V�C˜‘FØ˜˜!™�HØØ�‰FˆAð ”#�c“(˜1‘*‹nô" “*×'Ñ'¨Ó.×8Ñ8¸¸AÓ>ˆð 	�‰�b˜"Ÿ'™'Ô"Ø�	‰	×ÑœŸ™Ô'Ø!+Ñˆˆd�D˜$Øò 	ˆCØ�1‰v˜ÒØ—	‘	× Ñ   Q¡¨¨Q©´·±Õ?Ø�Q‘˜6Ò!Ø$×.Ñ.°°A±¸¸A¹Ð/?Ó@‘
��dØ×#Ñ# D¨$°°t¸TÔBØ! 4�d�Ü�s˜1‘v“; !Ò#Ø—I‘I×$Ñ$ S¨¡V¨A¡Y´·±Õ8à—I‘I×$Ñ$ S¨¡V¬R¯[©[Õ9à�uð	ð 	�	‰	×ÑœŸ™Ô%ð —‘“ˆØ×Ñ˜bÔ!Ø×Ñ˜AÔÜ—;‘;¤§¡¬T¯[©[¼$¿+¹+Ü—>‘>ð#ˆà ŸJ™Jò 	:‰LˆB��A�qÜ˜"˜b˜ B q¡D¨" :°°1±°b¸±d¨|¸bÀ"ÀQÁ$¸ZØ˜Q˜ð!Ø")ó+ˆDà�N‰N˜5 $¨°·±Õ9ñ	:÷S	ñ 	ús   Á	QÑQ$c                 óR   — |dv r|j                  dd«      S |j                  dd«      S )Nr§  rÎ  rZ   r
  )rÍ   )rê   r2   rá   s      r4   r^  zRendererPdf.encode_string	  s,   € Ø�vÑØ—8‘8˜H iÓ0Ð0Ø�x‰x˜
 IÓ.Ð.r6   c	                 ó°
  — | j                  ||j                  «       |r| j                  ||||||«      S |j                  «       }	t        j
                  d   r| j                  |«      }
d}nJ| j                  |«      }
| j                  j                  j                  |
|«       t        j
                  d   }|j                  «       �c|
j                  |«       |
j                  «       \  }}| j                  j                  d   d   j                  t!        ||||dz  |dz  |«      «       |dvr°| j                  j#                  t$        j&                  | j                  j)                  |«      |	t$        j*                  «       | j-                  |||«       | j                  j#                  | j/                  ||«      t$        j0                  t$        j2                  «       y g }g }d}|
}t5        j6                  ||
t8        j:                  ¬«      D ]ë  }t=        |t?        |j@                  «      «      r–|s|jB                  |k7  r4|j                  |jB                  |jD                  g f«       |jB                  }|jF                  r!|d   d	   j                  |jF                  «       |d   d	   j                  |j@                  «       d
}Œ¸|j                  |jB                  |jD                  |jH                  f«       d}Œí | j                  j#                  t$        jJ                  «       tM        jN                  |«      }| j                  j#                  tM        jP                  |«      tM        jR                  |«      tM        jR                  |«       tM        jP                  |«      ||t$        jT                  «       | j                  j#                  t$        j&                  «       d}|D ]ü  \  }}}| j                  j)                  |jV                  «      }| j                  j#                  ||	t$        j*                  «       | j-                  |dd|dd«       | j                  j#                  tY        jZ                  |t\        «      D ��cg c]@  \  }}|t^        k(  rdta        |«      z  |	z  n | j/                  djc                  |«      |«      ‘ŒB c}}t$        jd                  «       |}Œþ | j                  j#                  t$        j2                  «       |D ]  \  }}}| jg                  ||	||d«       Œ | j                  j#                  t$        jh                  «       y c c}}w )NrK  r#   rÁ  r†  r~  )rÜ   rÞ   T)Ú	kern_moder  Fr   iüÿÿrø  )5r  r	  ri  rm  r\   rh  Ú_get_font_afmÚ_get_font_ttfrô   rÞ  Útrackr¯   Úset_textÚget_width_heightrì  r*   r´   r  r  r:  r\  rQ  rX  r^  rS  r;  r
   Úlayoutr   ÚUNFITTEDrã   r  ÚcharÚ	ft_objectrB   Ú	prev_kernÚ	glyph_idxrN  rx   ry   r{   rz   r@  rZ  r™   ÚgroupbyrØ   rÄ   rT  r+   rT  r_  rO  )rê   r°   rB   r|   r2   r—  r   Úismathrj  re  r˜  rá   r}   r~   Úsinglebyte_chunksÚmultibyte_glyphsÚprev_was_multibyterc  Úitemr‚   Úprev_start_xr’  Ústart_xÚkerns_or_charsÚft_nameÚtpÚgroupr”  s                               r4   Ú	draw_textzRendererPdf.draw_text	  sB  € ð
 	�‰�b˜"Ÿ'™'Ô"ÙØ×%Ñ% b¨!¨Q°°4¸Ó?Ð?à×*Ñ*Ó,ˆä�<‰<Ð,Ò-Ø×%Ñ% dÓ+ˆDØ‰Hà×%Ñ% dÓ+ˆDØ�I‰I×(Ñ(×.Ñ.¨t°QÔ7Ü—|‘| NÑ3ˆHà�:‰:‹<Ð#Ø�M‰M˜!ÔØ ×1Ñ1Ó3‰MˆE�6Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜% "™* f¨r¡k°5ó2:ô ;ð
 ˜7Ñ"Ø�I‰I×ÑœRŸ]™]Ø!ŸY™Y×/Ñ/°Ó5°xÄÇÁôPà×Ñ  1 eÔ,Ø�I‰I×Ñ˜T×/Ñ/°°8Ó<ÜŸW™W¤b§k¡kõ3ð$ !#Ðà!ÐØ!%ÐØˆIÜ%×,Ñ,¨Q°Ä×@PÑ@PÔQò .�Ü'¨´#°d·i±i³.ÔAÙ)¨T¯^©^¸yÒ-HØ)×0Ñ0°$·.±.À$Ç&Á&È"Ð1MÔNØ$(§N¡N˜	Ø—~’~Ø)¨"Ñ-¨aÑ0×7Ñ7¸¿¹ÔGØ% bÑ)¨!Ñ,×3Ñ3°D·I±IÔ>Ø).Ñ&à$×+Ñ+¨T¯^©^¸T¿V¹VÀTÇ^Á^Ð,TÔUØ)-Ñ&ð.ð �I‰I×ÑœRŸX™XÔ&Ü—‘˜UÓ#ˆAØ�I‰I×ÑœTŸX™X a›[¬$¯(©(°1«+Ü"Ÿh™h q›k˜\¬4¯8©8°A«;Ø ¤2×#3Ñ#3ô5ð
 �I‰I×ÑœRŸ]™]Ô+ØˆLØ6Gò 'Ñ2�	˜7 NØŸ)™)×,Ñ,¨Y¯_©_Ó=�Ø—	‘	× Ñ  ¨(´B·M±MÔBØ×#Ñ# G¨Q°°<ÀÀAÔFØ—	‘	× Ñ ô
 '0×&7Ñ&7¸ÌÓ&M÷Oá"˜˜Uð 8:¼U²{�UœT %›[Ñ(¨8Ò3Ø×,Ñ,¨R¯W©W°U«^¸XÓFñGó Oô —K‘Kô!ð  '‘ð'ð �I‰I×ÑœRŸ[™[Ô)à1Aò Ñ-�	˜7 IØ×(Ñ(Ø˜x¨°G¸Qõðð �I‰I×ÑœRŸ[™[Õ)ùóOs   Ñ?AUc                 óJ  — |j                  |«      }| j                  j                  |j                  |«      }| j                  j	                  t
        j                  d|z  ddd|z  ||t
        j                  t        |«      t
        j                  t
        j                  «       y)z<Draw a multibyte character from a Type 3 font as an XObject.rË  r   N)r•  rô   r¿  rZ  r  r  rN  r@  rK   rA  rO  )rê   r˜  re  r”  rB   r|   r¾  rL   s           r4   r_  zRendererPdf._draw_xobject_glyph{	  sx   € à×(Ñ(¨Ó3ˆ
Ø�y‰y×0Ñ0°·±¸ZÓHˆØ�	‰	×ÑÜ�H‰HØ�HÑ˜a  E¨HÑ$4°a¸¼B×<LÑ<LÜ�‹JœŸ™Ü�K‰Kõ		
r6   c                 ó,   — t        | j                  «      S r>   )r  rô   rí   s    r4   rû  zRendererPdf.new_gc†	  s   € ä! $§)¡)Ó,Ð,r6   r>   r¦   rò  )rõ   rö   r÷   r   Ú_get_data_pathrR  Ú_use_afm_rc_namerë   r>  r  r  r  r"  r'  rE  rS  rX  ri  r†  r^  r¡  r_  rû  r÷  rø  s   @r4   rQ  rQ  ›  s€   ø„ à(�E×(Ñ(Ð)=Ó>€MØ+Ðô#ò.ó+ò6#ó@ó<*òDðN "ó$òL& óP/ò4&ðl ;?ô Q:òf/ó
_*òB	
ö-r6   rQ  c            
       óà   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zdddd	œZdddd
œZ	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdefdefde
fdefdefdefdefdefdeff	Zd„ Zˆ fd „Zd!„ Zˆ xZS )"r  c                 óZ   •— t         ‰| �  «        d| _        d| _        || _        d | _        y )Nr   r  )rÄ  rë   rÿ  r  rô   Úparent)rê   rô   rò  s     €r4   rë   zGraphicsContextPdf.__init__�	  s+   ø€ Ü‰ÑÔØ)ˆŒØ!+ˆÔØˆŒ	Øˆ�r6   c                 óN   — t        | j                  «      }|d= |d= t        |«      S )Nrô   r¨  )rÔ   r‘  Úrepr)rê   rs   s     r4   rî   zGraphicsContextPdf.__repr__”	  s'   € Ü�—‘ÓˆØˆfˆIØˆhˆKÜ�A‹wˆr6   c                 óž   — | j                   dkD  xr= | j                  dkD  xr, t        | j                  «      dk  xs | j                  d   dk7  S )zÕ
        Predicate: does the path need to be stroked (its outline drawn)?
        This tests for the various conditions that disable stroking
        the path, in which case it would presumably be filled.
        r   rÜ   r�  )rF  r  r)   r	  rí   s    r4   r2  zGraphicsContextPdf.strokeš	  sK   € ð —‘ !Ñ#ò =¨¯©°a©ò =Ü�T—Y‘Y“ 1Ñ$Ò;¨¯	©	°!©¸Ñ(;ð	>r6   c                 ó”   — t        |«      r|d   }n| j                  }| j                  xs |duxr t        |«      dk  xs |d   dk7  S )z¼
        Predicate: does the path need to be filled?

        An optional argument can be used to specify an alternative
        _fillcolor, as needed by RendererPdf.draw_markers.
        r   NrÜ   r�  )r)   rÿ  Ú_hatch)rê   Úargsrÿ  s      r4   r3  zGraphicsContextPdf.fill¥	  sX   € ô ˆtŒ9Ø˜a™‰JàŸ™ˆJØ—‘ò AØ 4Ð'ò @Ü�j“/ QÑ&Ò>¨*°Q©-¸3Ñ*>ð	Br6   c                 óf   — t         j                  | j                  «       | j                  «       «      S )zo
        Return the appropriate pdf operator to cause the path to be
        stroked, filled, or both.
        )r  r6  r3  r2  rí   s    r4   r   zGraphicsContextPdf.paint´	  s!   € ô
 �}‰}˜TŸY™Y›[¨$¯+©+«-Ó8Ð8r6   r   r#   r  )Úbuttrþ  Ú
projecting)Úmiterrþ  Úbevelc                 ó@   — | j                   |   t        j                  gS r>   )rÕ  r  rL  ©rê   Ústyles     r4   Úcapstyle_cmdzGraphicsContextPdf.capstyle_cmd¾	  s   € Ø—‘˜uÑ%¤r§}¡}Ð5Ð5r6   c                 ó@   — | j                   |   t        j                  gS r>   )r  r  rK  rµ  s     r4   Újoinstyle_cmdz GraphicsContextPdf.joinstyle_cmdÁ	  s   € Ø—‘ Ñ&¬¯©Ð7Ð7r6   c                 ó&   — |t         j                  gS r>   )r  rU  )rê   r}   s     r4   Úlinewidth_cmdz GraphicsContextPdf.linewidth_cmdÄ	  s   € Ø”r—‘Ð'Ð'r6   c                 óP   — |\  }}|€g }d}t        |«      |t        j                  gS rä  )rÕ   r  rJ  )rê   Údashesrê  Údashs       r4   Údash_cmdzGraphicsContextPdf.dash_cmdÇ	  s/   € Ø‰ˆ�Øˆ<ØˆDØˆFÜ�T“
˜F¤B§J¡JÐ/Ð/r6   c                 ó\   — | j                   j                  |«      }|t        j                  gS r>   )rô   r<  r  rM  )rê   r:  ÚforcedÚeffective_alphasrL   s        r4   Ú	alpha_cmdzGraphicsContextPdf.alpha_cmdÎ	  s&   € Ø�y‰y×#Ñ#Ð$4Ó5ˆØ”b—l‘lÐ#Ð#r6   c                 ó6  — |sB| j                   �| j                  | j                   «      S t        d«      t        j                  gS || j                   ||f}| j
                  j                  |«      }t        d«      t        j                  |t        j                  gS )Nrý  rÁ  )rÿ  Úfillcolor_cmdrK   r  rG  rô   rX  rI  )rê   rU  Úhatch_colorÚhatch_linewidthrR  rL   s         r4   Ú	hatch_cmdzGraphicsContextPdf.hatch_cmdÒ	  s„   € ÙØ�‰Ð*Ø×)Ñ)¨$¯/©/Ó:Ð:ä˜[Ó)¬2×+EÑ+EÐFÐFà&¨¯©¸ÀÐPˆKØ—9‘9×)Ñ)¨+Ó6ˆDÜ˜“O¤R×%?Ñ%?Øœ"×/Ñ/ð1ð 1r6   c                 ó²   — t         j                  d   rg S |d   |d   cxk(  r|d   k(  rn n|d   t        j                  gS g |d d ¢t        j                  ‘S ©Nzpdf.inheritcolorr   r#   r  rÜ   )r\   rh  r  rB  rD  ©rê   r”  s     r4   Úrgb_cmdzGraphicsContextPdf.rgb_cmdÞ	  s^   € Ü�<‰<Ð*Ò+ØˆIØˆq‰6�S˜‘VÔ%˜s 1™vÕ%Ø˜‘FœB×-Ñ-Ð.Ð.à/�S˜˜!�WÐ/œb×.Ñ.Ð/Ð/r6   c                 ó¶   — |�t         j                  d   rg S |d   |d   cxk(  r|d   k(  rn n|d   t        j                  gS g |d d ¢t        j                  ‘S rÊ  )r\   rh  r  rC  rE  rË  s     r4   rÅ  z GraphicsContextPdf.fillcolor_cmdæ	  sb   € Øˆ;œ#Ÿ,™,Ð'9Ò:ØˆIØ�‰V�s˜1‘vÔ'  Q¡Õ'Ø˜‘FœB×0Ñ0Ð1Ð1à2�S˜˜!�WÐ2œb×1Ñ1Ð2Ð2r6   c                 ó    — t        | j                  «      }|j                  | «       | j                  |_        || _        t        j
                  gS r>   )r  rô   rs  r¨  r  rN  )rê   r¨  s     r4   r)  zGraphicsContextPdf.pushî	  s<   € Ü# D§I¡IÓ.ˆØ×Ñ˜tÔ$ØŸ™ˆŒØˆŒÜ—‘ˆzÐr6   c                 ó¬   — | j                   €J ‚| j                  | j                   «       | j                   j                   | _         t        j                  gS r>   )r¨  rs  r  rO  rí   s    r4   r+  zGraphicsContextPdf.popõ	  sA   € Ø�{‰{Ð&Ð&Ð&Ø×Ñ˜TŸ[™[Ô)Ø—k‘k×(Ñ(ˆŒÜ—‘ˆ}Ðr6   c                 óî  — g }| j                   | j                  f||fk7  rU| j                  �I|j                  | j	                  «       «       | j                   | j                  f||fk7  r| j                  �ŒI| j                   | j                  f||fk7  s| j                  €×|j                  | j                  «       «       | j                   |k7  r?|j                  |t        j                  t        j                  t        j                  g«       | j                  |k7  r[|j                  «       \  }}|j                  t        j                  ||d¬«      t        j                  t        j                  gz   «       |S )z1Set clip rectangle. Calls `.pop()` and `.push()`.Frf  )Ú	_cliprectÚ	_clippathr¨  rŽ  r+  r)  r  r=  rV  r4  Úget_transformed_path_and_affiner¤  rh  )rê   ÚcliprectÚclippathrà  r8  Úaffines         r4   Úclip_cmdzGraphicsContextPdf.clip_cmdû	  s#  € àˆà—‘ §¡Ð/°H¸hÐ3GÒGØ—K‘KÐ+Ø�K‰K˜Ÿ™›
Ô#ð —‘ §¡Ð/°H¸hÐ3GÒGØ—K‘KÑ+ð �^‰^˜TŸ^™^Ð,°¸8Ð0DÒDØ—‘Ð#Ø�K‰K˜Ÿ	™	›Ô$Ø�~‰~ Ò)Ø—‘˜X¤r§|¡|´R·W±W¼b¿j¹jÐIÔJØ�~‰~ Ò)Ø'×GÑGÓI‘��fØ—‘Ü×*Ñ*¨4°À%Ð*ÓHÜ—W‘WœbŸj™jÐ)ñ*ô+ð ˆr6   )rÑ  rÒ  )r  r  r  )Ú	_capstyle)rÿ  )Ú
_joinstyle)rF  )Ú_dashes)r	  )r­  Ú_hatch_colorÚ_hatch_linewidthc           
      ó~  — g }d}| j                   D ]¸  \  }}d}|D ]6  }t        | |«      }t        ||«      }		 |�|	€||	u}nt        ||	k7  «      }|sŒ6 n |j                  dk(  r|rd}|sŒY|j                  dk(  rd}|D �cg c]  }t        ||«      ‘Œ }	}|j                   || g|	¢­Ž «       |D ]  }t        | |t        ||«      «       Œ Œº |S # t        $ r` t	        j
                  |«      }t	        j
                  |	«      }	|j                  |	j                  k7  xs t	        j                  ||	k7  «      }Y Œèw xY wc c}w )z}
        Copy properties of other into self and return PDF commands
        needed to transform *self* into *other*.
        FrÈ  TrÅ  )Úcommandsr  rÊ   rÈ   rÅ   r$  r€  Úanyrõ   rŽ  Úsetattr)
rê   r  rà  Úfill_performedÚparamsÚcmdÚ	differentÚpÚoursÚtheirss
             r4   r
  zGraphicsContextPdf.delta
  s\  € ð
 ˆØˆØŸ=™=ò 	8‰KˆF�CØˆIØò �Ü˜t QÓ'�Ü  ¨Ó*�ð	9Ø�| v ~Ø$(°Ð$6™	ä$(¨°©Ó$8˜	ò Ùðð" �|‰|˜{Ò*©~Ø �	âØ—<‘< ?Ò2Ø%)�NØ5;Ö<°œ' %¨Õ+Ð<�Ð<Ø—‘™C Ð. vÒ.Ô/Øò 8�AÜ˜D !¤W¨U°AÓ%6Õ7ñ8ð7	8ð: ˆøô' "ò 9ÜŸ:™: dÓ+�DÜŸZ™Z¨Ó/�FØ!%§¡¨v¯|©|Ñ!;ò "8Ü!#§¡¨°©Ó!7ò ð9üò =s   ·CÁ?D:ÃA&D7Ä6D7c                 óœ   •— t         ‰| �  |«       t        |d| j                  «      }t        |d| j                  «      }|| _        || _        y)z5
        Copy properties of other into self.
        rÿ  r  N)rÄ  rs  r  rÿ  r  )rê   r  r  rÂ  rò  s       €r4   rs  z"GraphicsContextPdf.copy_propertiesC
  sL   ø€ ô 	‰Ñ Ô&Ü˜E <°·±ÓAˆ	Ü" 5Ð*=Ø#'×#9Ñ#9ó;Ðà#ˆŒØ!1ˆÕr6   c                 óz   — g }| j                   �,|j                  | j                  «       «       | j                   �Œ,|S )zB
        Make sure every pushed graphics state is popped.
        )r¨  rŽ  r+  )rê   rà  s     r4   r>  zGraphicsContextPdf.finalizeN
  s6   € ð ˆØ�k‰kÐ%Ø�K‰K˜Ÿ™›
Ô#ð �k‰kÑ%àˆr6   )rõ   rö   r÷   rë   rî   r2  r3  r   rÕ  r  r·  r¹  r»  r¿  rÃ  rÈ  rÌ  rÅ  r)  r+  r×  rÞ  r
  rs  r>  r÷  rø  s   @r4   r  r  ‹	  sÏ   ø„ ôòò	>òBò9ð  Q°aÑ8€IØ q°1Ñ5€Jò6ò8ò(ò0ò$ò
1ò0ò3òòòð, 
$ XÐ.Ø	9¸9ÐEØ	˜Ð&Ø	˜-Ð(Ø	˜-Ð(Ø	˜-Ð(Ø	�xÐ Ø	�GÐà	7¸ÐCð€Hò$ôL	2ör6   r  c                   ó‚   — e Zd ZdZ ej
                  ddd¬«      dd„«       Zd„ Zd	„ Zd
„ Z	d„ Z
d„ Zdd„Zd„ Zg d¢fd„Zy)ÚPdfPagesa=  
    A multi-page PDF file.

    Examples
    --------
    >>> import matplotlib.pyplot as plt
    >>> # Initialize:
    >>> with PdfPages('foo.pdf') as pdf:
    ...     # As many times as you like, create a figure fig and save it:
    ...     fig = plt.figure()
    ...     pdf.savefig(fig)
    ...     # When no figure is specified the current figure is saved
    ...     pdf.savefig()

    Notes
    -----
    In reality `PdfPages` is a thin wrapper around `PdfFile`, in order to avoid
    confusion when using `~.pyplot.savefig` and forgetting the format argument.
    rY  Ú
keep_emptyzThis parameter does nothing.)ÚaddendumNc                 ó.   — || _         || _        d| _        y)a„  
        Create a new PdfPages object.

        Parameters
        ----------
        filename : str or path-like or file-like
            Plots using `PdfPages.savefig` will be written to a file at this location.
            The file is opened when a figure is saved for the first time (overwriting
            any older file with the same name).

        metadata : dict, optional
            Information dictionary object (see PDF reference section 10.2.1
            'Document Information Dictionary'), e.g.:
            ``{'Creator': 'My software', 'Author': 'Me', 'Title': 'Awesome'}``.

            The standard keys are 'Title', 'Author', 'Subject', 'Keywords',
            'Creator', 'Producer', 'CreationDate', 'ModDate', and
            'Trapped'. Values have been predefined for 'Creator', 'Producer'
            and 'CreationDate'. They can be removed by setting them to `None`.
        N)Ú	_filenameÚ	_metadataÚ_file)rê   rï  rì  rc   s       r4   rë   zPdfPages.__init__m
  s   € ð. "ˆŒØ!ˆŒØˆ�
r6   c                 ó   — | S r>   rŒ   rí   s    r4   Ú	__enter__zPdfPages.__enter__ˆ
  s   € Øˆr6   c                 ó$   — | j                  «        y r>   )r@  )rê   Úexc_typeÚexc_valÚexc_tbs       r4   Ú__exit__zPdfPages.__exit__‹
  s   € Ø�
‰
�r6   c                 ó~   — | j                   €&t        | j                  | j                  ¬«      | _         | j                   S )N©rc   )rñ  r¤  rï  rð  rí   s    r4   Ú_ensure_filezPdfPages._ensure_fileŽ
  s,   € Ø�:‰:ÐÜ  §¡¸$¿.¹.ÔIˆDŒJØ�z‰zÐr6   c                 ó”   — | j                   �<| j                   j                  «        | j                   j                  «        d| _         yy)z_
        Finalize this object, making the underlying file a complete
        PDF file.
        N)rñ  r>  r@  rí   s    r4   r@  zPdfPages.close“
  s:   € ð
 �:‰:Ð!Ø�J‰J×ÑÔ!Ø�J‰J×ÑÔØˆD�Jð "r6   c                 ó6   — | j                  «       j                  S )z™
        Return a modifiable information dictionary object
        (see PDF reference section 10.2.1 'Document Information
        Dictionary').
        )rû  rØ  rí   s    r4   ÚinfodictzPdfPages.infodict�
  s   € ð × Ñ Ó"×+Ñ+Ð+r6   c                 óô   — t        |t        «      sR|€t        j                  «       }nt        j                  |«      }|€t        d|› �«      ‚|j                  j                  } |j                  | fdddœ|¤Ž y)a5  
        Save a `.Figure` to this file as a new page.

        Any other keyword arguments are passed to `~.Figure.savefig`.

        Parameters
        ----------
        figure : `.Figure` or int, default: the active figure
            The figure, or index of the figure, that is saved to the file.
        Nz
No figure r¯  )rg  rb   )	r?   r   r   Ú
get_activeÚget_fig_managerrÈ   ÚcanvasÚfigureÚsavefig)rê   r  ÚkwargsÚmanagers       r4   r  zPdfPages.savefig¥
  so   € ô ˜&¤&Ô)Øˆ~ÜŸ.™.Ó*‘ä×-Ñ-¨fÓ5�ØˆÜ  :¨f¨XÐ!6Ó7Ð7Ø—^‘^×*Ñ*ˆFàˆ�‰�tÐC E°5ÑC¸FÓCr6   c                 óH   — t        | j                  «       j                  «      S )z=Return the current number of pages in the multipage pdf file.)r)   rû  rÑ  rí   s    r4   Úget_pagecountzPdfPages.get_pagecount»
  s   € ä�4×$Ñ$Ó&×/Ñ/Ó0Ð0r6   r	  c                 óD   — | j                  «       j                  ||«       y)z÷
        Add a new text note to the page to be saved next. The optional
        positionRect specifies the position of the new note on the
        page. It is outside the page per default to make sure it is
        invisible on printouts.
        N)rû  r  )rê   r  r  s      r4   Úattach_notezPdfPages.attach_note¿
  s   € ð 	×ÑÓ×'Ñ'¨¨lÕ;r6   rz  r>   )rõ   rö   r÷   rø   r	   Údelete_parameterrë   ró  rø  rû  r@  rþ  r  r  r
  rŒ   r6   r4   rë  rë  X
  s`   „ ñð( €T×Ñ˜6 <Ø$BôDòóDðò2òòò
ò,óDò,1ò .@ô <r6   rë  c                   ó>   ‡ — e Zd ZdZddiZd„ Zdddœd„Zˆ fd„Zˆ xZS )	ÚFigureCanvasPdfrö  r¯  zPortable Document Formatc                  ó   — y)Nr¯  rŒ   rí   s    r4   Úget_default_filetypez$FigureCanvasPdf.get_default_filetypeÏ
  s   € Ør6   N)Úbbox_inches_restorerc   c                óÀ  — | j                   j                  }d| j                   _        | j                   j                  «       \  }}t        |t        «      r|j                  «       }nt        ||¬«      }	 |j                  ||«       t        | j                   |||t        ||||«      |¬«      }| j                   j                  |«       |j                  «        t        |t        «      s|j                  «        t        |t        «      r|j                  «        y |j                  «        y # t        |t        «      r|j                  «        w |j                  «        w xY w)Nrö  rú  )r  )r  ÚdpiÚget_size_inchesr?   rë  rû  r¤  r  r   rQ  Údrawr>  rÿ  r@  )	rê   rï  r  rc   r  r}   r~   rô   Úrenderers	            r4   Ú	print_pdfzFigureCanvasPdf.print_pdfÒ
  s  € ð �k‰k�o‰oˆØˆ�‰ŒØŸ™×3Ñ3Ó5‰ˆˆvÜ�h¤Ô)Ø×(Ñ(Ó*‰Dä˜8¨hÔ7ˆDð	Ø�L‰L˜ Ô'Ü(Ø—‘˜U F¨CÜ˜D # v¨uÓ5Ø$7ô9ˆHð �K‰K×Ñ˜XÔ&Ø×ÑÔÜ˜h¬Ô1Ø—‘”ä˜(¤HÔ-Ø—‘Õ à—
‘
•øô ˜(¤HÔ-Ø—‘Õ à—
‘
•ús   Á4BD* Ä*3Ec                 óT   •— | j                   j                  «        t        ‰| �  «       S r>   )r  Údraw_without_renderingrÄ  r  )rê   rò  s    €r4   r  zFigureCanvasPdf.drawì
  s   ø€ Ø�‰×*Ñ*Ô,Ü‰w‰|‹~Ðr6   )	rõ   rö   r÷   Ú	fixed_dpiÚ	filetypesr  r  r  r÷  rø  s   @r4   r  r  É
  s0   ø„ ð €IØÐ2Ð3€Iòð '+°Tô÷4ð r6   r  c                   ó   — e Zd ZeZy)Ú_BackendPdfN)rõ   rö   r÷   r  ÚFigureCanvasrŒ   r6   r4   r  r  ô
  s   „ à"�Lr6   r  )éK   )r   )_rø   rÎ   r   r   Úenumr   Ú	functoolsr   Úior   r™   Úloggingrx   rU   r  rœ  r  rp   ri  rß  ri  ÚnumpyrÅ   ÚPILr   Ú
matplotlibr\   r	   r
   r   r   r   Úmatplotlib._pylab_helpersr   Úmatplotlib.backend_basesr   r   r   r   r   Ú!matplotlib.backends.backend_mixedr   Úmatplotlib.figurer   Úmatplotlib.font_managerr   r   rO  Úmatplotlib._afmr   Úmatplotlib.ft2fontr   r   r   r   r   Úmatplotlib.transformsr   r   Úmatplotlib.pathr    Úmatplotlib.datesr!   r"   rø  r$   Ú	getLoggerrõ   rU  r5   rj   rv   r‡   r¢   r´   r@   Ú	maketransrÓ   r»   rã   rå   rK   r  r  rZ  r¢  r¤  ÚRendererPDFPSBaserQ  r  rë  r  ÚFigureManagerPdfÚexportr  rŒ   r6   r4   ú<module>r5     s¦  ðñó Ý Ý Ý Ý $Ý Û Û Û Û 	Û Û Û 
Û Û Û Û ã Ý ã ß FÕ FÝ )÷õ õ @Ý $ß IÝ ß QÕ Qß 4Ý  Ý  Ý Ý à€w×Ñ˜Ó"€ódò,Tònó0,ó"*ó0ð4 �}‰}Ø
�u 5°¸UñDó E€òF#òR ÷ñ ð. ÷ ð  ó ð ÷Bñ ôA#ˆô A#÷HZ$ñ Z$òz+÷\DCñ DCôN(m-�/×3Ñ3ô m-ô`JÐ,ô J÷Zn<ñ n<ôb%Ð&ô %ðP %Ð ð 
‡�ô#�(ó #ó ñ#r6   