§
    ‚Øj´É  ã                   ó`  — 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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 d dlmZmZmZ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m"Z" d dl#m$Z$m%Z%  ej&        e'¦  «        Z(d„ Z) e
j*        d¦  «        Z+d„ Z,d„ Z-d„ Z.d„ Z/ G d„ d¦  «        Z0ej1         2                    d¦  «         G d„ de0¦  «        ¦   «         Z3d„ Z4d„ Z5ddddœZ6d„ Z7d„ Z8 G d„ d e¦  «        Z9 G d!„ d"e¦  «        Z:eZ;d#Z<ej=         G d$„ d%e¦  «        ¦   «         Z>dS )&é    N)ÚBytesIO)ÚImage)ÚcbookÚfont_manager)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚRendererBase)ÚMixedModeRenderer)Úrgb2hex)ÚUTC)ÚPath)Ú_path)ÚAffine2DÚAffine2DBasec                 óŠ   — |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } | S )Nú&ú&amp;ú<ú&lt;ú>ú&gt;©Úreplace©Úss    ú”/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/matplotlib/backends/backend_svg.pyÚ_escape_cdatar   E   s@   € Ø	�	Š	�#�wÑÔ€AØ	�	Š	�#�vÑÔ€AØ	�	Š	�#�vÑÔ€AØ€Hó    z-(?=-)c                 óV   — t          | ¦  «        } t                               d| ¦  «        S )Nz- )r   Ú_escape_xml_commentÚsubr   s    r   Ú_escape_commentr#   O   s%   € Ý�aÑÔ€AÝ×"Ò" 4¨Ñ+Ô+Ð+r   c                 óâ   — |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       d	d
¦  «        } | S )Nr   r   ú'z&apos;ú"z&quot;r   r   r   r   r   r   s    r   Ú_escape_attribr'   T   sf   € Ø	�	Š	�#�wÑÔ€AØ	�	Š	�#�xÑ Ô €AØ	�	Š	�#�xÑ Ô €AØ	�	Š	�#�vÑÔ€AØ	�	Š	�#�vÑÔ€AØ€Hr   c                 ó�   — d| vrdt          | ¦  «        z   dz   n-d| vrdt          | ¦  «        z   dz   ndt          | ¦  «        z   dz   S )Nr&   r%   )r   r'   r   s    r   Ú_quote_escape_attribr)   ]   s\   € Ø,/°q¨L¨LˆC•- Ñ"Ô"Ñ" SÑ(Ð(Ø,/°q¨L¨LˆC•- Ñ"Ô"Ñ" SÑ(Ð(Ø•. Ñ#Ô#Ñ# cÑ)ð+r   c                 óV   — | d›                      d¦  «                              d¦  «        S )zˆ
    Create a short string representation of a float, which is %f
    formatting with trailing zeros and the decimal point removed.
    ÚfÚ0ú.)Úrstrip)Úxs    r   Ú_short_float_fmtr0   c   s(   € ð
 ˆ8ˆ8�?Š?˜3ÑÔ×&Ò& sÑ+Ô+Ð+r   c                   óP   — e Zd ZdZd„ Zdd„Zdd„Zd„ Zd„ Zdd	„Z	d
„ Z
dd„Zd„ ZdS )Ú
_XMLWriterzM
    Parameters
    ----------
    file : writable text file-like object
    c                 óŽ   — |j         | _        t          |d¦  «        r|j        | _        d| _        g | _        g | _        d| _        d S )NÚflushr   z@                                                                )ÚwriteÚ_XMLWriter__writeÚhasattrr4   Ú_XMLWriter__openÚ_XMLWriter__tagsÚ_XMLWriter__dataÚ_XMLWriter__indentation)ÚselfÚfiles     r   Ú__init__z_XMLWriter.__init__r   sI   € Ø”zˆŒÝ�4˜Ñ!Ô!ð 	$ØœˆDŒJØˆŒØˆŒØˆŒØ%ˆÔÐÐr   Tc                 ó  — | j         r4|r|                      d¦  «         n|                      d¦  «         d| _         | j        rEd                     | j        ¦  «        }|                      t	          |¦  «        ¦  «         g | _        d S d S )Nú>
r   r   Ú )r8   r6   r:   Újoinr   )r<   ÚindentÚdatas      r   Ú__flushz_XMLWriter.__flush{   sŽ   € àŒ;ð 	Øð "Ø—’˜UÑ#Ô#Ð#Ð#à—’˜SÑ!Ô!Ð!ØˆDŒKØŒ;ð 	Ø—7’7˜4œ;Ñ'Ô'ˆDØ�LŠL� tÑ,Ô,Ñ-Ô-Ð-ØˆDŒKˆKˆKð	ð 	r   Nc                 ó  — |€i }|                       ¦   «          t          |¦  «        }g | _        | j                             |¦  «         |                      | j        dt          | j        ¦  «        dz
  …         ¦  «         |                      d|› �¦  «         i |¥|¥                     ¦   «         D ]@\  }}|r9t          |¦  «        }t          |¦  «        }|                      d|› d|› �¦  «         ŒAd| _
        t          | j        ¦  «        dz
  S )a&  
        Open a new element.  Attributes can be given as keyword
        arguments, or as a string/string dictionary. The method returns
        an opaque identifier that can be passed to the :meth:`close`
        method, to close all open elements up to and including this one.

        Parameters
        ----------
        tag
            Element tag.
        attrib
            Attribute dictionary.  Alternatively, attributes can be given as
            keyword arguments.

        Returns
        -------
        An element identifier.
        Né   r   ú ú=)Ú_XMLWriter__flushr   r:   r9   Úappendr6   r;   ÚlenÚitemsr)   r8   )r<   ÚtagÚattribÚextraÚkÚvs         r   Ústartz_XMLWriter.startˆ   s  € ð& ˆ>ØˆFØ�Š‰ŒˆÝ˜CÑ Ô ˆØˆŒØŒ×Ò˜3ÑÔÐØ�Š�TÔ'Ð(=­¨T¬[Ñ)9Ô)9¸AÑ)=Ð(=Ô>Ñ?Ô?Ð?Ø�Š�Y˜�Y�YÑÔÐØ'�vÐ' Ð'×-Ò-Ñ/Ô/ð 	*ð 	*‰DˆAˆqØð *Ý! !Ñ$Ô$�Ý(¨Ñ+Ô+�Ø—’˜[ ˜[˜[ Q˜[˜[Ñ)Ô)Ð)øØˆŒÝ�4”;ÑÔ !Ñ#Ð#r   c                 óâ   — |                       ¦   «          |                      | j        dt          | j        ¦  «        …         ¦  «         |                      dt          |¦  «        › d�¦  «         dS )zŒ
        Add a comment to the output stream.

        Parameters
        ----------
        comment : str
            Comment text.
        Nz<!-- z -->
)rJ   r6   r;   rL   r9   r#   )r<   Úcomments     r   rU   z_XMLWriter.comment«   sg   € ð 	�Š‰ŒˆØ�Š�TÔ'Ð(9­¨T¬[Ñ)9Ô)9Ð(9Ô:Ñ;Ô;Ð;Ø�ŠÐ=�_¨WÑ5Ô5Ð=Ð=Ð=Ñ>Ô>Ð>Ð>Ð>r   c                 ó:   — | j                              |¦  «         dS )z�
        Add character data to the output stream.

        Parameters
        ----------
        text : str
            Character data.
        N)r:   rK   )r<   Útexts     r   rD   z_XMLWriter.data¸   s    € ð 	Œ×Ò˜4Ñ Ô Ð Ð Ð r   c                 ó  — |rO| j         sJ d|› d�¦   «         ‚t          |¦  «        | j         d         k    sJ d| j         d         › d|› �¦   «         ‚n| j         s
J d¦   «         ‚| j                              ¦   «         }| j        r|                      |¦  «         n%| j        rd| _        |                      d¦  «         d	S |r4|                      | j        d	t          | j         ¦  «        …         ¦  «         |                      d
|› d�¦  «         d	S )a<  
        Close the current element (opened by the most recent call to
        :meth:`start`).

        Parameters
        ----------
        tag
            Element tag.  If given, the tag must match the start tag.  If
            omitted, the current element is closed.
        indent : bool, default: True
        zunbalanced end(ú)éÿÿÿÿzexpected end(z), got zunbalanced end()r   z/>
Nz</r@   )	r9   r   Úpopr:   rJ   r8   r6   r;   rL   )r<   rN   rC   s      r   Úendz_XMLWriter.endÃ   s3  € ð ð 	3Ø”;Ð8Ð8Ð 8°#Ð 8Ð 8Ð 8Ñ8Ô8�;Ý  Ñ%Ô%¨¬°R¬Ò8Ð8Ð8Ø= ¤¨B¤Ð=Ð=¸Ð=Ð=ñ 9Ô8Ð8Ð8ð ”;Ð2Ð2Ð 2Ñ2Ô2�;ØŒk�oŠoÑÔˆØŒ;ð 	Ø�LŠL˜Ñ Ô Ð Ð ØŒ[ð 	ØˆDŒKØ�LŠL˜Ñ Ô Ð ØˆFØð 	@Ø�LŠL˜Ô+Ð,=­S°´Ñ-=Ô-=Ð,=Ô>Ñ?Ô?Ð?Ø�Š�]˜#�]�]�]Ñ#Ô#Ð#Ð#Ð#r   c                 ó’   — t          | j        ¦  «        |k    r.|                      ¦   «          t          | j        ¦  «        |k    °,dS dS )zï
        Close open elements, up to (and including) the element identified
        by the given identifier.

        Parameters
        ----------
        id
            Element identifier, as returned by the :meth:`start` method.
        N)rL   r9   r\   )r<   Úids     r   Úclosez_XMLWriter.closeà   sI   € õ �$”+ÑÔ Ò#Ð#Ø�HŠH‰JŒJˆJõ �$”+ÑÔ Ò#Ð#Ð#Ð#Ð#Ð#r   c                 ó†   — |€i } | j         ||fi |¤Ž |r|                      |¦  «         |                      d¬¦  «         dS )z³
        Add an entire element.  This is the same as calling :meth:`start`,
        :meth:`data`, and :meth:`end` in sequence. The *text* argument can be
        omitted.
        NF)rC   )rS   rD   r\   )r<   rN   rW   rO   rP   s        r   Úelementz_XMLWriter.elementí   s[   € ð ˆ>ØˆFØˆŒ
�3˜Ð(Ð( %Ð(Ð(Ð(Øð 	Ø�IŠI�d‰OŒOˆOØ�Š˜ˆÑÔÐÐÐr   c                 ó   — dS )zFlush the output stream.N© ©r<   s    r   r4   z_XMLWriter.flushú   s   € àˆr   )T©N©NT)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r>   rJ   rS   rU   rD   r\   r_   ra   r4   rc   r   r   r2   r2   k   sº   € € € € € ðð ð&ð &ð &ðð ð ð ð!$ð !$ð !$ð !$ðF?ð ?ð ?ð	!ð 	!ð 	!ð$ð $ð $ð $ð:ð ð ðð ð ð ðð ð ð ð r   r2   z3.11c                   ó   — e Zd ZdZdS )Ú	XMLWriterz2
    An XML writer class.

    :meta private:
    N)rg   rh   ri   rj   rc   r   r   rl   rl   ÿ   s   € € € € € ðð ð ð r   rl   c           
      ó€  — g }| D ]¥\  }}|dk    r|dk    s|dk    s|dk    r|dk    s|dk    r|dk    rŒ0|dk    r)t          |t          ¦  «        r|                     ¦   «         }|                     d	                     |d
                     d„ |D ¦   «         ¦  «        ¦  «        ¦  «         Œ¦d
                     |¦  «        S )NÚscale)rG   )rG   rG   Ú	translate)r   r   Úrotate)r   Úmatrixz{}({})rH   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S re   ©r0   )Ú.0r/   s     r   ú	<genexpr>z&_generate_transform.<locals>.<genexpr>  s+   è è € Ð>Ð>°1Õ+¨AÑ.Ô.Ð>Ð>Ð>Ð>Ð>Ð>r   )Ú
isinstancer   Ú	to_valuesrK   ÚformatrB   )Útransform_listÚpartsÚtypeÚvalues       r   Ú_generate_transformr}     sè   € Ø€EØ%ð Að A‰ˆˆeØ�GŠOˆO ¨$¢ °%¸6²/°/Ø˜;Ò&Ð&¨5°Fª?¨?Ø˜8Ò#Ð#¨°ª¨ØØ�8ÒÐ¥
¨5µ,Ñ ?Ô ?ÐØ—O’OÑ%Ô%ˆEØ�Š�X—_’_Ø�#—(’(Ð>Ð>¸Ð>Ñ>Ô>Ñ>Ô>ñ@ô @ñ 	Aô 	Að 	Að 	Aà�8Š8�E‰?Œ?Ðr   c                 ód   — d                      d„ |                      ¦   «         D ¦   «         ¦  «        S )Nz; c              3   ó*   K  — | ]\  }}|› d |› �V — ŒdS )z: Nrc   ©rt   rQ   rR   s      r   ru   z _generate_css.<locals>.<genexpr>  s0   è è € Ð<Ð<¡T Q¨˜�[�[˜Q�[�[Ð<Ð<Ð<Ð<Ð<Ð<r   )rB   rM   ©rO   s    r   Ú_generate_cssr‚     s+   € Ø�9Š9Ð<Ð<¨V¯\ª\©^¬^Ð<Ñ<Ô<Ñ<Ô<Ð<r   ÚsquareÚbuttÚround)Ú
projectingr„   r…   c                 óv   — t          | t          ¦  «        s#t          d|› dt          | ¦  «        › d�¦  «        ‚d S )NúInvalid type for z metadata. Expected str, not r-   )rv   ÚstrÚ	TypeErrorr{   )ÚinfoÚkeys     r   Ú_check_is_strr�     sY   € Ý�d�CÑ Ô ð *Ýð )¨Cð )ð )Ý ™:œ:ð)ð )ð )ñ *ô *ð 	*ð*ð *r   c           	      óî   — t          j        | ¦  «        r?| D ]:}t          |t          ¦  «        s#t	          d|› dt          |¦  «        › d�¦  «        ‚Œ;d S t	          d|› dt          | ¦  «        › d�¦  «        ‚)Nrˆ   z) metadata. Expected iterable of str, not r-   z0 metadata. Expected str or iterable of str, not )ÚnpÚiterablerv   r‰   rŠ   r{   )ÚinfosrŒ   r‹   s      r   Ú_check_is_iterable_of_strr’   #  sÏ   € Ý	„{�5ÑÔð @Øð 	Gð 	GˆDÝ˜d¥CÑ(Ô(ð GÝð !F°Cð !Fð !FÝ8<¸T¹
¼
ð!Fð !Fð !Fñ Gô Gð GðGð	Gð 	Gõ
 ð ?¨Cð ?ð ?Ý04°U±´ð?ð ?ð ?ñ @ô @ð 	@r   c                   ó  ‡ — e Zd Zd'ddœˆ fd„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd(d„Zd„ Zd„ Z	 	 d)d„Zd(d„Z	 d(d„Zddœˆ fd„
Zd„ Zd„ Zd„ Zd„ Zd(d„Zd„ Zd„ Zd(d „Zd(d!„Zd*d#„Z d$„ Z!d%„ Z"d&„ Z#ˆ xZ$S )+ÚRendererSVGNéH   )Úmetadatac                ó  •— || _         || _        t          |¦  «        | _        || _        |€(t          |dd¦  «        }t          |t          ¦  «        sd}|| _        i | _	        t          j        ¦   «         | _        i | _        i | _        i | _        d| _        i | _        d| _        d| _        t)          ¦   «                              ¦   «          t-          ¦   «         | _        t1          |¦  «        }t1          |¦  «        }|                     t4          ¦  «         | j                             d|› d�|› d�d|› d|› �d	d
t8          j        d         ddi¬¦  «        | _        |                      |¦  «         |                       ¦   «          d S )NÚnamerA   r   FÚsvgÚptz0 0 rH   zhttp://www.w3.org/2000/svgz1.1zsvg.idzxmlns:xlinkzhttp://www.w3.org/1999/xlink)ÚwidthÚheightÚviewBoxÚxmlnsÚversionr^   rO   )!r›   rœ   r2   ÚwriterÚ	image_dpiÚgetattrrv   r‰   ÚbasenameÚ_groupdÚ	itertoolsÚcountÚ_image_counterÚ_clip_path_idsÚ_clipdÚ_markersÚ_path_collection_idÚ_hatchdÚ_has_gouraudÚ_n_gradientsÚsuperr>   ÚdictÚ
_glyph_mapr0   r5   Ú	svgPrologrS   ÚmplÚrcParamsÚ	_start_idÚ_write_metadataÚ_write_default_style)
r<   r›   rœ   Ú	svgwriterr£   r¡   r–   Ú
str_heightÚ	str_widthÚ	__class__s
            €r   r>   zRendererSVG.__init__/  sŠ  ø€ àˆŒ
ØˆŒÝ  Ñ+Ô+ˆŒØ"ˆŒàÐÝ˜y¨&°"Ñ5Ô5ˆHÝ˜h­Ñ,Ô,ð Ø�Ø ˆŒàˆŒÝ'œoÑ/Ô/ˆÔØ ˆÔØˆŒØˆŒØ#$ˆÔ ØˆŒØ!ˆÔØˆÔå‰Œ×ÒÑÔÐÝ™&œ&ˆŒÝ% fÑ-Ô-ˆ
Ý$ UÑ+Ô+ˆ	Ø�Š�	Ñ"Ô"Ð"Øœ×*Ò*ØØÐ"Ð"Ð"Ø Ð$Ð$Ð$Ø3˜9Ð3Ð3 zÐ3Ð3Ø.ØÝŒ|˜HÔ%Ø!Ð#AÐBð +ñ Dô DˆŒð 	×Ò˜XÑ&Ô&Ð&Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#r   c                 óf   — || j         vrt          | j         ¦  «        | j         |<   | j         |         S )a–  
        Returns a stable and unique identifier for the *clippath* argument
        object within the current rendering context.

        This allows plots that include custom clip paths to produce identical
        SVG output on each render, provided that the :rc:`svg.hashsalt` config
        setting and the ``SOURCE_DATE_EPOCH`` build-time environment variable
        are set to fixed values.
        )r¨   rL   )r<   Úclippaths     r   Ú_get_clippath_idzRendererSVG._get_clippath_idW  s8   € ð ˜4Ô.Ð.Ð.Ý,/°Ô0CÑ,DÔ,DˆDÔ Ñ)ØÔ" 8Ô,Ð,r   c                 óÆ   — |                       ¦   «          |                      ¦   «          | j                             | j        ¦  «         | j                             ¦   «          d S re   )Ú_write_clipsÚ_write_hatchesr    r_   rµ   r4   rd   s    r   ÚfinalizezRendererSVG.finalizee  sX   € Ø×ÒÑÔÐØ×ÒÑÔÐØŒ×Ò˜$œ.Ñ)Ô)Ð)ØŒ×ÒÑÔÐÐÐr   c                 óò	  ‡— |€i }dddt           j        › d�dœ|¥}| j        Šd|v r/|d         }t          |d¦  «         ‰                     d|¬¦  «         |                     d	d ¦  «        }|��Ct          |t          ¦  «        r|g}�nt          |t          j        t          j	        f¦  «        r| 
                    ¦   «         g}nÔt          j        |¦  «        r g }|D ]š}t          |t          ¦  «        r|                     |¦  «         Œ-t          |t          j        t          j	        f¦  «        r(|                     | 
                    ¦   «         ¦  «         Œ{t          d
t          |¦  «        › d�¦  «        ‚n t          dt          |¦  «        › d�¦  «        ‚d                     |¦  «        |d	<   nºd	|vr¶t#          j        d¦  «        }|rmt          j                             t)          |¦  «        t          j        j        ¦  «        }|                     t0          ¬¦  «         
                    ¦   «         |d	<   n3t          j                             ¦   «          
                    ¦   «         |d	<   d }ˆfd„}|                     dd ¦  «        }|�$ ||¦  «        }‰                     dd|i¬¦  «         dD ]a}	|                     |	d ¦  «        }
|
�G ||¦  «        }t          |
|	¦  «         ‰                     d|	                     ¦   «         › �|
¬¦  «         ŒbdD ]è}	|                     |	d ¦  «        }|€Œt          |t          ¦  «        r|g}t9          ||	¦  «          ||¦  «        }‰                     d|	                     ¦   «         › �¦  «         |D ]C}‰                     d¦  «         ‰                     d|¬¦  «         ‰                     d¦  «         ŒD‰                     d|	                     ¦   «         › �¦  «         Œé|                     dd ¦  «        }|�£t          |t          ¦  «        r|g}t9          |d¦  «          ||¦  «        }‰                     d¦  «         ‰                     d¦  «         |D ]}‰                     d|¬¦  «         Œ‰                     d¦  «         ‰                     d¦  «         |�‰                     |¦  «         |r%tA          dd                     |¦  «        z   ¦  «        ‚d S ) Nzimage/svg+xmlz&http://purl.org/dc/dcmitype/StillImagezMatplotlib vz, https://matplotlib.org/)ÚFormatÚTypeÚCreatorÚTitleÚtitle)rW   ÚDatezQInvalid type for Date metadata. Expected iterable of str, date, or datetime, not r-   z[Invalid type for Date metadata. Expected str, date, datetime, or iterable of the same, not ú/ÚSOURCE_DATE_EPOCH)Útzinfoc                 óš   •— | �| S ‰                      d¦  «        } ‰                      dddddœ¬¦  «         ‰                      d¦  «         | S )	Nr–   zrdf:RDFz http://purl.org/dc/elements/1.1/zhttp://creativecommons.org/ns#z+http://www.w3.org/1999/02/22-rdf-syntax-ns#)zxmlns:dczxmlns:ccz	xmlns:rdfr�   zcc:Work)rS   )Úmidr    s    €r   Úensure_metadataz4RendererSVG._write_metadata.<locals>.ensure_metadata£  sd   ø€ ØˆØ�
Ø—,’,˜zÑ*Ô*ˆCØ�LŠL˜Ø>Ø<ØJð,ð ,ˆLñ ô ð ð
 �LŠL˜Ñ#Ô#Ð#ØˆJr   rÅ   zdc:typezrdf:resourcer�   )	rÇ   ÚCoveragerÉ   ÚDescriptionrÄ   Ú
IdentifierÚLanguageÚRelationÚSourcezdc:)rÆ   ÚContributorÚ	PublisherÚRightszcc:Agentzdc:titleÚKeywordsz
dc:subjectzrdf:Bagzrdf:liz.Unknown metadata key(s) passed to SVG writer: ú,)!r³   Ú__version__r    r�   ra   Úgetrv   r‰   ÚdatetimeÚdateÚ	isoformatr�   r�   rK   rŠ   r{   rB   ÚosÚgetenvÚfromtimestampÚintÚtimezoneÚutcr   r   Útodayr[   Úlowerr’   rS   r\   r_   Ú
ValueError)r<   r–   rÈ   rÞ   ÚdatesÚdrÎ   rÏ   ÚurirŒ   r‹   ÚagentsÚagentÚkeywordsÚkeywordr    s                  @r   r¶   zRendererSVG._write_metadatak  si  ø€ ð ÐØˆHà%Ø<àI�sœÐIÐIÐIð	
ð 
ð
 ð
ˆð ”ˆà�hÐÐØ˜WÔ%ˆEÝ˜% Ñ)Ô)Ð)Ø�NŠN˜7¨ˆNÑ/Ô/Ð/ð �|Š|˜F DÑ)Ô)ˆØÑÝ˜$¥Ñ$Ô$ð CØ˜�‘Ý˜D¥8Ô#4µh´mÐ"DÑEÔEð CØŸšÑ)Ô)Ð*��Ý”˜TÑ"Ô"ð CØ�Øð 	/ð 	/�AÝ! !¥SÑ)Ô)ð /ØŸš Q™œ˜˜Ý# A­Ô(9½8¼=Ð'IÑJÔJð /ØŸš Q§[¢[¡]¤]Ñ3Ô3Ð3Ð3å'ð.å#'¨¡7¤7ð.ð .ð .ñ/ô /ð /ð	/õ  ð !Bå48¸±J´Jð!Bð !Bð !Bñ Cô Cð Cð  #Ÿxšx¨™œˆH�VÑÐØ˜8Ð#Ð#õ ”9Ð0Ñ1Ô1ˆDØð IÝÔ(×6Ò6µs¸4±y´yÅ(ÔBSÔBWÑXÔX�Ø#'§<¢<µs <Ñ#;Ô#;×#EÒ#EÑ#GÔ#G�˜Ñ Ð å#+Ô#4×#:Ò#:Ñ#<Ô#<×#FÒ#FÑ#HÔ#H�˜Ñ àˆð
	ð 
	ð 
	ð 
	ð 
	ð �lŠl˜6 4Ñ(Ô(ˆØˆ?Ø!�/ #Ñ&Ô&ˆCØ�NŠN˜9¨n¸cÐ-BˆNÑCÔCÐCðDð 	?ð 	?ˆCà—<’<  TÑ*Ô*ˆDØÐØ%�o cÑ*Ô*�Ý˜d CÑ(Ô(Ð(Ø—’Ð2 S§Y¢Y¡[¤[Ð2Ð2¸�Ñ>Ô>Ð>øð Eð 	,ð 	,ˆCØ—\’\ # tÑ,Ô,ˆFØˆ~Øå˜&¥#Ñ&Ô&ð "Ø ˜�å% f¨cÑ2Ô2Ð2à!�/ #Ñ&Ô&ˆCØ�LŠLÐ,˜sŸyšy™{œ{Ð,Ð,Ñ-Ô-Ð-Øð 'ð '�Ø—’˜ZÑ(Ô(Ð(Ø—’˜z°�Ñ6Ô6Ð6Ø—
’
˜:Ñ&Ô&Ð&Ð&Ø�JŠJÐ*˜SŸYšY™[œ[Ð*Ð*Ñ+Ô+Ð+Ð+ð —<’< 
¨DÑ1Ô1ˆØÐÝ˜(¥CÑ(Ô(ð &Ø$˜:�Ý% h°
Ñ;Ô;Ð;à!�/ #Ñ&Ô&ˆCØ�LŠL˜Ñ&Ô&Ð&Ø�LŠL˜Ñ#Ô#Ð#Ø#ð 7ð 7�Ø—’˜x¨g�Ñ6Ô6Ð6Ð6Ø�JŠJ�yÑ!Ô!Ð!Ø�JŠJ�|Ñ$Ô$Ð$àˆ?Ø�LŠL˜ÑÔÐàð 	1ÝÐMØ ŸXšX hÑ/Ô/ñ0ñ 1ô 1ð 1ð	1ð 	1r   c                 óÂ   — | j         }t          dddœ¦  «        }|                     d¦  «         |                     ddd|z  ¬¦  «         |                     d¦  «         d S )	Nr…   r„   )ústroke-linejoinústroke-linecapÚdefsÚstyleztext/cssz*{%s})r{   rW   )r    r‚   rS   ra   r\   )r<   r    Údefault_styles      r   r·   z RendererSVG._write_default_styleæ  sq   € Ø”ˆÝ%Ø&Ø$ð'&ð '&ñ 'ô 'ˆð 	�Š�VÑÔÐØ�Š�w Z°gÀÑ6MˆÑNÔNÐNØ�
Š
�6ÑÔÐÐÐr   c                 óŠ  — t           j        d         }|€ t          t          j        ¦   «         ¦  «        }t          j        ¦   «         }|                     |                     d¦  «        ¦  «         |                     t          |¦  «                             d¦  «        ¦  «         |› | 	                    ¦   «         d d…         › �S )Nzsvg.hashsaltÚutf8é
   )
r³   r´   r‰   ÚuuidÚuuid4ÚhashlibÚsha256ÚupdateÚencodeÚ	hexdigest)r<   r{   ÚcontentÚsaltÚms        r   Ú_make_idzRendererSVG._make_idï  s™   € ÝŒ|˜NÔ+ˆØˆ<Ý•t”z‘|”|Ñ$Ô$ˆDÝŒNÑÔˆØ	�Š�—’˜VÑ$Ô$Ñ%Ô%Ð%Ø	�Š•�W‘”×$Ò$ VÑ,Ô,Ñ-Ô-Ð-ØÐ,˜Ÿš™œ c r cÔ*Ð,Ð,Ð,r   c                 ó~   — |t          ¦   «                              dd¦  «                             d| j        ¦  «        z   S )NrG   rZ   r   )r   rn   ro   rœ   )r<   Ú	transforms     r   Ú_make_flip_transformz RendererSVG._make_flip_transformø  s3   € Ø�8™:œ:×+Ò+¨A¨rÑ2Ô2×<Ò<¸QÀÄÑLÔLÑLÐLr   c                 ó~  — |�t          |¦  «        }|                     ¦   «         }|�t          |¦  «        }|                     ¦   «         }|                     ¦   «         |||f}| j                             |¦  «        }|€9|                      d|¦  «        }|                     ¦   «         |||f|f| j        |<   n|\  }}|S )z,
        Create a new hatch pattern
        NÚh)ÚtupleÚget_hatch_colorÚget_hatch_linewidthÚ	get_hatchr¬   rÜ   r  Úget_hatch_path)r<   ÚgcÚrgbFaceÚedgeÚlwÚdictkeyÚoidÚ_s           r   Ú
_get_hatchzRendererSVG._get_hatchû  sÂ   € ð ÐÝ˜G‘n”nˆGØ×!Ò!Ñ#Ô#ˆØÐÝ˜‘;”;ˆDØ×#Ò#Ñ%Ô%ˆØ—<’<‘>”> 7¨D°"Ð5ˆØŒl×Ò˜wÑ'Ô'ˆØˆ;Ø—-’-  WÑ-Ô-ˆCØ&(×&7Ò&7Ñ&9Ô&9¸7ÀDÈ"Ð%MÈsÐ$SˆDŒL˜Ñ!Ð!à‰FˆAˆsØˆ
r   c                 óÆ  — t          | j        ¦  «        sd S d}| j        }|                     d¦  «         | j                             ¦   «         D �]|\  \  }}}}}|                     d|dddt          |¦  «        t          |¦  «        ¬¦  «         |                      |t          ¦   «                              |¦  «                             dd¦  «         	                    d	|¦  «        d
¬¦  «        }|€d}	nt          |¦  «        }	|                     dddt          |dz   ¦  «        t          |dz   ¦  «        |	¬¦  «         t          |¦  «        t          |¦  «        t          |¦  «        dddœ}
|d         dk     rt          |d         ¦  «        |
d<   |                     d|t          |
¦  «        ¬¦  «         |                     d¦  «         �Œ~|                     d¦  «         d S )Nr•   ró   ÚpatternÚuserSpaceOnUser,   )r^   ÚpatternUnitsr/   Úyr›   rœ   ç      ð?ç      ð¿r   F©ÚsimplifyÚnoneÚrectrG   )r/   r  r›   rœ   Úfillr„   Úmiter)r!  Ústrokeústroke-widthrò   rñ   é   ústroke-opacityÚpath)rê   rô   )rL   r¬   r    rS   Úvaluesr‰   Ú_convert_pathr   rn   ro   r   ra   r‚   r\   )r<   Ú
HATCH_SIZEr    r'  Úfacer#  r  r  Ú	path_datar!  Úhatch_styles              r   rÁ   zRendererSVG._write_hatches  sø  € Ý�4”<Ñ Ô ð 	ØˆFØˆ
Ø”ˆØ�Š�VÑÔÐØ-1¬\×-@Ò-@Ñ-BÔ-Bð #	"ñ #	"Ñ)Ñ$ˆT�4˜  cØ�LŠLØØØ-Ø˜¥C¨
¡O¤OÝ˜:‘”ð ñ (ô (ð (ð ×*Ò*ØÝ‘
”
ß’�zÑ"Ô"§5¢5¨¨dÑ#3Ô#3·I²I¸aÀÑ4LÔ4LØð	 +ñ  ô  ˆIð
 ˆ|Ø��å˜t‘}”}�Ø�NŠNØØ˜¥C¨
°1©Ñ$5Ô$5Ý˜: a™<Ñ(Ô(Øð	 ñ ô ð õ $ F™OœOÝ% f™oœoÝ$'¨¡G¤GØ&,Ø'.ðð ˆKð �aŒy˜1Š}ˆ}Ý03°F¸1´I±´�Ð,Ñ-Ø�NŠNØØÝ# KÑ0Ô0ð ñ ô ð ð
 �JŠJ�yÑ!Ô!Ð!Ñ!Ø�
Š
�6ÑÔÐÐÐr   c                 óÞ  — i }|                      ¦   «         }|                     ¦   «         �Yd|                      ||¦  «        › d�|d<   |�9t          |¦  «        dk    r&|d         dk    r|st	          |d         ¦  «        |d<   nn|€d	|d<   nft          |dd…         ¦  «        d
k    rt          |¦  «        |d<   t          |¦  «        dk    r&|d         dk    r|st	          |d         ¦  «        |d<   |r<|                     ¦   «         dk    r$t	          |                     ¦   «         ¦  «        |d<   |                     ¦   «         \  }}|�Ad 	                    d„ |D ¦   «         ¦  «        |d<   t	          t          |¦  «        ¦  «        |d<   |                     ¦   «         }|rÍ|                     ¦   «         }t          |¦  «        |d<   |s$|d         dk    rt	          |d         ¦  «        |d<   |dk    rt	          |¦  «        |d<   |                     ¦   «         dk    r|                     ¦   «         |d<   |                     ¦   «         dk    r"t          |                     ¦   «                  |d<   |S )z=Generate a style string from the GraphicsContext and rgbFace.Núurl(#rY   r!  é   r%  r  úfill-opacityr  )r   r   r   ÚopacityrÚ   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S re   rs   )rt   Úvals     r   ru   z.RendererSVG._get_style_dict.<locals>.<genexpr>T  s<   è è € ð 26ð 26Ø*-Õ  Ñ%Ô%ð26ð 26ð 26ð 26ð 26ð 26r   zstroke-dasharrayzstroke-dashoffsetr#  r&  r$  r…   rñ   r„   rò   )Úget_forced_alphar  r  rL   r0   r	  r   Ú	get_alphaÚ
get_dashesrB   ÚfloatÚget_linewidthÚget_rgbÚget_joinstyleÚget_capstyleÚ_capstyle_d)	r<   r  r  rO   Úforced_alphaÚoffsetÚseqÚ	linewidthÚrgbs	            r   Ú_get_style_dictzRendererSVG._get_style_dict:  s€  € àˆà×*Ò*Ñ,Ô,ˆà�<Š<‰>Œ>Ð%ØD T§_¢_°R¸Ñ%AÔ%AÐDÐDÐDˆF�6‰NØÐ#­¨G©¬¸Ò(9Ð(9¸gÀa¼jÈCÒ>OÐ>OØ(ð ?På)9¸'À!¼*Ñ)EÔ)E��~Ñ&øàˆØ!'��v‘�å˜  ! œÑ%Ô%¨Ò2Ð2Ý%,¨WÑ%5Ô%5�F˜6‘NÝ˜‘L”L AÒ%Ð%¨'°!¬*¸Ò*;Ð*;Ø ,ð +<å-=¸gÀa¼jÑ-IÔ-I�F˜>Ñ*àð 	A˜BŸLšL™NœN¨cÒ1Ð1Ý 0°·²±´Ñ @Ô @ˆF�9Ñà—m’m‘o”o‰ˆ�Øˆ?Ø),¯ªð 26ð 26Ø14ð26ñ 26ô 26ñ *6ô *6ˆFÐ%Ñ&å*:½5À¹=¼=Ñ*IÔ*IˆFÐ&Ñ'à×$Ò$Ñ&Ô&ˆ	Øð 
	JØ—*’*‘,”,ˆCÝ& s™|œ|ˆF�8ÑØð D C¨¤F¨c¢M MÝ+;¸CÀ¼FÑ+CÔ+C�Ð'Ñ(Ø˜CÒÐÝ)9¸)Ñ)DÔ)D��~Ñ&Ø×ÒÑ!Ô! WÒ,Ð,Ø,.×,<Ò,<Ñ,>Ô,>�Ð(Ñ)Ø�ŠÑ Ô  FÒ*Ð*Ý+6°r·²Ñ7HÔ7HÔ+I�Ð'Ñ(àˆr   c                 óH   — t          |                      ||¦  «        ¦  «        S re   )r‚   rC  )r<   r  r  s      r   Ú
_get_stylezRendererSVG._get_styleg  s    € Ý˜T×1Ò1°"°gÑ>Ô>Ñ?Ô?Ð?r   c                 óÒ  — |                      ¦   «         }|                     ¦   «         \  }}|�:|                      |¦  «        }|                      |¦  «        t	          |¦  «        f}n$|� |j        \  }}}}	| j        ||	z   z
  }||||	f}ni S | j                             |¦  «        }
|
€4|  	                    d|¦  «        }|�||f|f| j        |<   n||f| j        |<   n|
\  }}dd|› d�iS )NÚpz	clip-pathr/  rY   )
Úget_clip_rectangleÚget_clip_pathr  r¾   r‰   Úboundsrœ   r©   rÜ   r  )r<   r  Úcliprectr½   Úclippath_transr  r/   r  Úwr  Úclipr  r  s                r   Ú_get_clip_attrszRendererSVG._get_clip_attrsj  s  € Ø×(Ò(Ñ*Ô*ˆØ#%×#3Ò#3Ñ#5Ô#5Ñ ˆ�.ØÐØ!×6Ò6°~ÑFÔFˆNØ×,Ò,¨XÑ6Ô6½¸NÑ8KÔ8KÐLˆGˆGØÐ!Ø!œ‰JˆAˆq�!�QØ”˜Q˜q™SÑ!ˆAØ˜!˜Q �lˆGˆGàˆIØŒ{�Š˜wÑ'Ô'ˆØˆ<Ø—-’-  WÑ-Ô-ˆCØÐ#Ø)1°>Ð(BÀCÐ'H�”˜GÑ$Ð$à(/° ~�”˜GÑ$Ð$à‰FˆAˆsØ˜^ S˜^˜^˜^Ð,Ð,r   c           
      ód  — t          | j        ¦  «        sd S | j        }|                     d¦  «         | j                             ¦   «         D ]Î\  }}|                     d|¬¦  «         t          |¦  «        dk    r5|\  }}|                      ||d¬¦  «        }|                     d|¬¦  «         nU|\  }}}	}
|                     d	t          |¦  «        t          |¦  «        t          |	¦  «        t          |
¦  «        ¬
¦  «         |                     d¦  «         ŒÏ|                     d¦  «         d S )Nró   ÚclipPath©r^   é   Fr  r'  ©rê   r   ©r/   r  r›   rœ   )	rL   r©   r    rS   r(  r)  ra   r0   r\   )r<   r    rN  r  r½   rL  r,  r/   r  rM  r  s              r   rÀ   zRendererSVG._write_clips�  sB  € Ý�4”;ÑÔð 	ØˆFØ”ˆØ�Š�VÑÔÐØœ×+Ò+Ñ-Ô-ð 	#ð 	#‰IˆD�#Ø�LŠL˜¨ˆLÑ,Ô,Ð,Ý�4‰yŒy˜AŠ~ˆ~Ø+/Ñ(�˜.Ø ×.Ò.Ø˜n°uð /ñ >ô >�	à—’˜v¨�Ñ3Ô3Ð3Ð3à!‘
��1�a˜Ø—’ØÝ& qÑ)Ô)Ý& qÑ)Ô)Ý*¨1Ñ-Ô-Ý+¨AÑ.Ô.ð ñ 0ô 0ð 0ð �JŠJ�zÑ"Ô"Ð"Ð"Ø�
Š
�6ÑÔÐÐÐr   c                 óì   — |r| j                              d|¬¦  «         d S | j                             |d¦  «        dz   | j        |<   | j                              d|› d| j        |         d›�¬¦  «         d S )NÚgrR  r   rG   r  rê   )r    rS   r¤   rÜ   )r<   r   Úgids      r   Ú
open_groupzRendererSVG.open_group˜  s†   € àð 	BØŒK×Ò˜c cÐÑ*Ô*Ð*Ð*Ð*à"œl×.Ò.¨q°!Ñ4Ô4°qÑ8ˆDŒL˜‰OØŒK×Ò˜c¨Ð&@Ð&@¨T¬\¸!¬_Ð&@Ð&@Ð&@ÐÑAÔAÐAÐAÐAr   c                 ó:   — | j                              d¦  «         d S )NrW  )r    r\   )r<   r   s     r   Úclose_groupzRendererSVG.close_group   s   € àŒ�Š˜ÑÔÐÐÐr   c                 ó(   — t           j        d          S )Nzimage.composite_image)r³   r´   rd   s    r   Úoption_image_nocompositez$RendererSVG.option_image_nocomposite¤  s   € å”<Ð 7Ô8Ð8Ð8r   c           
      óŒ   — |rdd| j         | j        f}nd }t          j        |||||dg d¢d¦  «                             d¦  «        S )Ng        é   )ó   Mó   Ló   Qó   Có   zFÚascii)r›   rœ   r   Úconvert_to_stringÚdecode)r<   r'  r  rN  r  Úsketchs         r   r)  zRendererSVG._convert_path¨  s\   € àð 	Ø˜˜dœj¨$¬+Ð6ˆDˆDàˆDÝÔ&Ø�)˜T 8¨V°QØ*Ð*Ð*¨Eñ3ô 3ç39²6¸'±?´?ð	Cr   c           	      ó4  — |                       |¦  «        }|d u o|                     ¦   «         d u }|j        o|}|                      |||||                     ¦   «         ¬¦  «        }|                     ¦   «         �0| j                             d|                     ¦   «         ddœ¦  «          | j        j        dd|i|  	                    |¦  «        ¤d|  
                    ||¦  «        i¤Ž |                     ¦   «         �| j                             d¦  «         d S d S )	N)rN  r  rh  ÚaÚ_blank©ú
xlink:hrefÚtargetr'  rê   rô   )r'  )r  r  Úshould_simplifyr)  Úget_sketch_paramsÚget_urlr    rS   ra   rO  rE  r\   )	r<   r  r'  r  r  Útrans_and_fliprN  r  r,  s	            r   Ú	draw_pathzRendererSVG.draw_path²  s>  € à×2Ò2°9Ñ=Ô=ˆØ˜4�Ð? B×$5Ò$5Ñ$7Ô$7¸4Ð$?ˆØÔ'Ð0¨DˆØ×&Ò&Ø�. t°hØ×'Ò'Ñ)Ô)ð 'ñ +ô +ˆ	ð �:Š:‰<Œ<Ð#ØŒK×Ò˜c°"·*²*±,´,È(Ð#SÐ#SÑTÔTÐTØˆŒÔð 	@ð 	@ ið 	@°4×3GÒ3GÈÑ3KÔ3Kð 	@ð 	@Ø"&§/¢/°"°gÑ">Ô">ð	@ð 	@ð 	@ð 	@à�:Š:‰<Œ<Ð#ØŒK�OŠO˜CÑ Ô Ð Ð Ð ð $Ð#r   c                 ó&  — t          |j        ¦  «        sd S | j        }|                      ||t	          ¦   «                              dd¦  «        z   d¬¦  «        }|                      ||¦  «        }	|t          |	¦  «        f}
| j         	                    |
¦  «        }t          d„ |	 
                    ¦   «         D ¦   «         ¦  «        }	|€c|                      d|
¦  «        }|                     d¦  «         |                     d|||	¬	¦  «         |                     d¦  «         || j        |
<    |j        di |                      |¦  «        ¤Ž |                     ¦   «         �0| j                             d|                     ¦   «         ddœ¦  «         |                      |¦  «        }dd|› �i}dd| j        dz  | j        dz  f}|                     ||d¬¦  «        D ]u\  }}t          |¦  «        ra|dd …         \  }}t+          |¦  «        |d<   t+          |¦  «        |d<   |                      ||¦  «        |d<   |                     d|¬¦  «         Œv|                     ¦   «         �| j                             d¦  «         |                     d
¦  «         d S )Nr  r  Fr  c                 óD   — i | ]\  }}|                      d ¦  «        ¯||“ŒS )r#  )Ú
startswithr€   s      r   ú
<dictcomp>z,RendererSVG.draw_markers.<locals>.<dictcomp>Ñ  s>   € ð 9ð 9ð 9©¨¨1Ø!"§¢¨hÑ!7Ô!7ð9˜q !ð 9ð 9ð 9r   r  ró   r'  )r^   rê   rô   rW  rj  rk  rl  rm  ú#r   r•   )rN  r  éþÿÿÿr/   r  rô   Úuser�   ©rW  )rL   Úverticesr    r)  r   rn   rC  r‚   rª   rÜ   rM   r  rS   ra   r\   rO  rq  r  r›   rœ   Úiter_segmentsr0   rE  )r<   r  Úmarker_pathÚmarker_transr'  Útransr  r    r,  rô   r  r  rr  rO   rN  r|  Úcoder/   r  s                      r   Údraw_markerszRendererSVG.draw_markersÂ  sž  € õ �4”=Ñ!Ô!ð 	ØˆFà”ˆØ×&Ò&ØØ�8™:œ:×+Ò+¨C°Ñ6Ô6Ñ6Øð 'ñ ô ˆ	ð ×$Ò$ R¨Ñ1Ô1ˆØ�m¨EÑ2Ô2Ð3ˆØŒm×Ò Ñ(Ô(ˆÝð 9ð 9°·²±´ð 9ñ 9ô 9ñ :ô :ˆð ˆ;Ø—-’-  WÑ-Ô-ˆCØ�LŠL˜Ñ Ô Ð Ø�NŠN˜6 c¨Y¸eˆNÑDÔDÐDØ�JŠJ�vÑÔÐØ%(ˆDŒM˜'Ñ"àˆŒÐ5Ð5˜D×0Ò0°Ñ4Ô4Ð5Ð5Ð5Ø�:Š:‰<Œ<Ð#ØŒK×Ò˜c°"·*²*±,´,È(Ð#SÐ#SÑTÔTÐTØ×2Ò2°5Ñ9Ô9ˆØ 	 C 	 	Ð*ˆØ�1�d”j ‘m T¤[°¡^Ð4ˆØ"×0Ò0Ø T°Eð 1ñ ;ô ;ð 	5ð 	5‰NˆH�då�8‰}Œ}ð 5Ø   ”}‘��1Ý.¨qÑ1Ô1��s‘Ý.¨qÑ1Ô1��s‘Ø"&§/¢/°"°gÑ">Ô">��w‘Ø—’˜u¨V�Ñ4Ô4Ð4øØ�:Š:‰<Œ<Ð#ØŒK�OŠO˜CÑ Ô Ð Ø�
Š
�3‰Œˆˆˆr   ©Úhatchcolorsc                óf  •— |€g }t          |¦  «        dk    rt          |d         j        ¦  «        nd}|                      |||||¦  «        }|d|z  z   dz   |dz   |z  k     }|s/t          ¦   «                              |||||||||	|
||||¬¦  «        S | j        }g }|                     d¦  «         t          |                      |||¦  «        ¦  «        D ]²\  }\  }}t          | 
                    ¦   «         ¦  «                             dd¦  «        }|                      ||d	¬
¦  «        }d                     | j        ||                      d|¦  «        ¦  «        }|                     d||¬¦  «         |                     |¦  «         Œ³|                     d¦  «         |                      |||||||	|
||||¬¦  «        D ]á\  }}}}}|                     ¦   «         }|�|                     d|ddœ¬¦  «         |                      |¦  «        }|r |j        di |¤Ž d|› �t-          |¦  «        t-          | j        |z
  ¦  «        |                      ||¦  «        dœ} |                     d| ¬¦  «         |r|                     d¦  «         |�|                     d¦  «         Œâ| xj        dz  c_        d S )Nr   é	   r%  é   rƒ  ró   r  r  Fr  zC{:x}_{:x}_{}rA   r'  )r^   rê   rj  rk  rl  r�   rW  rx  )rm  r/   r  rô   rz  rG   r{  )rL   r|  Ú_iter_collection_uses_per_pathr¯   Údraw_path_collectionr    rS   Ú	enumerateÚ_iter_collection_raw_pathsr   Ú
get_matrixrn   r)  rx   r«   r  ra   rK   r\   Ú_iter_collectionrq  rO  r0   rœ   rE  )"r<   r  Úmaster_transformÚpathsÚall_transformsÚoffsetsÚoffset_transÚ
facecolorsÚ
edgecolorsÚ
linewidthsÚ
linestylesÚantialiasedsÚurlsÚoffset_positionr„  Úlen_pathÚuses_per_pathÚshould_do_optimizationr    Ú
path_codesÚir'  r  rê   r  ÚxoÚyoÚpath_idÚgc0r  ÚurlÚ
clip_attrsrO   r»   s"                                    €r   r‰  z RendererSVG.draw_path_collectioní  s.  ø€ ð ÐØˆKõ .1°©Z¬Z¸!ª^¨^•3�u˜Q”xÔ(Ñ)Ô)Ð)ÀˆØ×;Ò;Ø�> 7¨J¸
ñDô Dˆð �q˜=Ñ(Ñ(¨1Ñ,°¸1±ÀÑ/MÒMð 	à%ð 	:Ý‘7”7×/Ò/ØÐ$ e¨^Ø˜ z°:Ø˜J¨°dØ¨[ð	 0ñ :ô :ð :ð ”ˆØˆ
Ø�Š�VÑÔÐÝ$-¨d×.MÒ.MØ  %¨ñ/9ô /9ñ %:ô %:ð 	#ð 	#Ñ ˆAÑ ��iå  ×!5Ò!5Ñ!7Ô!7Ñ8Ô8×>Ò>¸sÀDÑIÔIˆIØ×"Ò" 4¨¸UÐ"ÑCÔCˆAØ!×(Ò(ØÔ(¨!¨T¯]ª]¸2¸qÑ-AÔ-AñCô CˆCà�NŠN˜6 c¨QˆNÑ/Ô/Ð/Ø×Ò˜cÑ"Ô"Ð"Ð"Ø�
Š
�6ÑÔÐà-1×-BÒ-BØ�J ¨Ø˜J¨
°JØ˜d OÀð .Cñ .Nô .Nð 	 ð 	 Ñ)ˆB��G˜S 'ð —+’+‘-”-ˆCØˆØ—’˜S¸ÀxÐ)PÐ)P�ÑQÔQÐQØ×-Ò-¨cÑ2Ô2ˆJØð 0Ø�”Ð/Ð/ JÐ/Ð/Ð/à+ '˜m˜mÝ% bÑ)Ô)Ý% d¤k°BÑ&6Ñ7Ô7ØŸš¨¨gÑ6Ô6ð	ð ˆFð �NŠN˜5¨ˆNÑ0Ô0Ð0Øð  Ø—
’
˜3‘”�ØˆØ—
’
˜3‘”�øàÐ Ô  AÑ%Ð Ô Ð Ð r   c                 ó2  — t          j        |d¬¦  «        }|d         dk    rd S | j        }|                     d¦  «         t	          d¦  «        D �]r}||         \  }}||dz   dz           \  }}	||dz   dz           \  }
}||         }||
k    r|}|}n@|	|k    r|}|	}n5|	|z
  ||
z
  z  }|	||z  z
  }d|z   }|||z  z
  }| |z   ||z
  z  }||z  |z   }|                     d	d
| j        d›d|d›�dt          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¬¦  «         |                     ddt          t          |¦  «        t          |d         ¦  «        dœ¦  «        ¬¦  «         |                     ddt          t          |¦  «        ddœ¦  «        ¬¦  «         | 
                    d	¦  «         �Œt| 
                    d¦  «         dt          |¦  «        › dt          |¦  «        › dt          |¦  «        › dt          |	¦  «        › dt          |
¦  «        › dt          |¦  «        › d�}|                     d|t          |¦  «        dddœ¬¦  «         |                     ddddd d!œ¬¦  «         |                     d|d"| j        d›d#�dd$œ¬¦  «         |                     d|d"| j        d›d%�d&dd'œ¬¦  «         |                     d|d"| j        d›d(�d&dd'œ¬¦  «         | 
                    d¦  «         | xj        dz  c_        d S ))Nr   )ÚaxisrZ   ró   r%  rG   rS  r  ÚlinearGradientÚGRr/   r  rê   r  )r^   ÚgradientUnitsÚx1Úy1Úx2Úy2ÚstopÚ1)z
stop-colorzstop-opacity)r?  rô   r,   zM rÚ   z L rH   z Zr'  Ú
crispEdges)rê   r!  r1  úshape-renderingr�   rW  r  zurl(#colorMat))r#  r$  r±  Úfilterzurl(#GRz_0))rê   r!  r±  z_1)zurl(#colorAdd))rê   r!  r²  r±  z_2))r�   Úaverager    rS   Úranger®   r0   ra   r‚   r   r\   )r<   Útransformed_pointsÚcolorsÚ	avg_colorr    rž  rª  r«  r¬  r­  Úx3Úy3Ú
rgba_colorÚxbÚybÚm1Úb1Úm2Úb2Údpaths                       r   Ú_draw_gouraud_trianglez"RendererSVG._draw_gouraud_triangle)  s`  € õ ”J˜v¨AÐ.Ñ.Ô.ˆ	Ø�RŒ=˜AÒÐàˆFà”ˆØ�Š�VÑÔÐÝ�q‘”ð &	)ñ &	)ˆAØ'¨Ô*‰FˆB�Ø'¨¨Q©°!©Ô4‰FˆB�Ø'¨¨Q©°!©Ô4‰FˆB�Ø œˆJà�RŠxˆxØ�Ø��Ø�r’�Ø�Ø��à˜2‘g " r¡'Ñ*�Ø˜2 ™7‘^�Ø˜R‘x�[�Ø˜2 ™7‘^�Ø�c˜B‘h 2¨¡7Ñ+�Ø˜"‘W˜r‘\�à�LŠLØ Ø3˜Ô)Ð3Ð3Ð3¨aÐ3Ð3Ð3Ø.Ý# BÑ'Ô'Õ,<¸RÑ,@Ô,@Ý# BÑ'Ô'Õ,<¸RÑ,@Ô,@ð ñ Bô Bð Bð �NŠNØØÝ#Ý")¨)Ñ"4Ô"4Ý$4°ZÀ´^Ñ$DÔ$Dð%Fð %Fñ Gô Gð ñ Hô Hð Hð �NŠNØØÝ#µ7¸:Ñ3FÔ3FØ47ð%9ð %9ñ :ô :ð ñ ;ô ;ð ;ð �JŠJÐ'Ñ(Ô(Ð(Ñ(à�
Š
�6ÑÔÐðEÕ& rÑ*Ô*ð Eð EÕ-=¸bÑ-AÔ-Að Eð EÝ'¨Ñ+Ô+ðEð EÝ.>¸rÑ.BÔ.BðEð Eå% bÑ)Ô)ðEð Eå,<¸RÑ,@Ô,@ðEð Eð Eˆð 	�ŠØØÝ# IÑ.Ô.Ø$'Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�ŠØØ"(Ø(+Ø+7Ø"2ð4ð 4ð 	ñ 	5ô 	5ð 	5ð 	�ŠØØØ> dÔ&7Ð>Ð>Ð>Ð>Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�ŠØØØ> dÔ&7Ð>Ð>Ð>Ð>Ø.Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�ŠØØØ> dÔ&7Ð>Ð>Ð>Ð>Ø.Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�
Š
�3‰ŒˆàÐÔ˜QÑÐÔÐÐr   c                 ó„  — | j         } |j        di |                      |¦  «        ¤Ž |                     ¦   «         }|                      |¦  «        }| j        s”d| _        |                     dd¬¦  «         |                     dddid	d
dd¬¦  «         |                     d¦  «         |                     dd¬¦  «         |                     ddd¬¦  «         |                     d¦  «         t          ||¦  «        D ].\  }}|  	                    | 
                    |¦  «        |¦  «         Œ/|                     d¦  «         d S )NrW  Tr²  ÚcolorAddrR  ÚfeCompositeÚinÚSourceGraphicÚBackgroundImageÚ
arithmeticr¯  )rO   Úin2ÚoperatorÚk2Úk3ÚcolorMatÚfeColorMatrixrq   z61 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
1 1 1 1 0 
0 0 0 0 1 )r{   r(  r{  )r    rS   rO  Úfrozenr  r­   ra   r\   ÚziprÂ  r  )	r<   r  Útriangles_arrayÚcolors_arrayr  r    rr  Úpointsr¶  s	            r   Údraw_gouraud_trianglesz"RendererSVG.draw_gouraud_triangles‘  s…  € à”ˆØˆŒÐ5Ð5˜D×0Ò0°Ñ4Ô4Ð5Ð5Ð5Ø×$Ò$Ñ&Ô&ˆ	Ø×2Ò2°9Ñ=Ô=ˆàÔ ð 	!Ø $ˆDÔØ�LŠLØØð ñ ô ð ð �NŠNØØ˜oÐ.Ø%Ø%Ø˜3ð ñ  ô  ð  ð �JŠJ�xÑ Ô Ð à�LŠLØØð ñ ô ð ð �NŠNØØØSð ñ Uô Uð Uð �JŠJ�xÑ Ô Ð å! /°<Ñ@Ô@ð 	Rð 	R‰NˆF�FØ×'Ò'¨×(@Ò(@ÀÑ(HÔ(HÈ&ÑQÔQÐQÐQØ�
Š
�3‰Œˆˆˆr   c                 ó   — dS rf   rc   rd   s    r   Úoption_scale_imagezRendererSVG.option_scale_image²  ó   € àˆtr   c                 ó   — | j         dz  S )Nç      R@)r¡   rd   s    r   Úget_image_magnificationz#RendererSVG.get_image_magnification¶  s   € ØŒ~ Ñ$Ð$r   c                 ól  — |j         d d…         \  }}|dk    s|dk    rd S |                      |¦  «        }|r | j        j        d i |¤Ž |                     ¦   «         }	|	�| j                             d|	ddœ¬¦  «         i }
|                     ¦   «         }t          j        d         r¡t          ¦   «         }t          j
        |¦  «                             |d	¬
¦  «         |p'|                      d|                     ¦   «         ¦  «        }dt          j        |                     ¦   «         ¦  «                             d¦  «        z   |
d<   n—| j        €t%          d¦  «        ‚| j        › dt'          | j        ¦  «        › d�}t*                               d|¦  «         t          j
        |¦  «                             |¦  «         |pd|                      d|¦  «        z   }||
d<   ||
d<   |€‘d|z  | j        z  }d|z  | j        z  }| j                             dt3          ddd| ffg¦  «        t5          |¦  «        t5          | j        |z
  |z
   ¦  «        t5          |¦  «        t5          |¦  «        |
¬¦  «         �n|                     ¦   «         }|dk    rt5          |¦  «        |
d<   t;          ¦   «                              d|z  d|z  ¦  «        |z   t;          ¦   «                              ||¦  «                             dd¦  «                             d| j        ¦  «        z   }| j                             dt5          |¦  «        t5          |¦  «        |
t3          d|                      ¦   «         fg¦  «        d¬¦  «         |	�| j         !                    d¦  «         |r| j         !                    d¦  «         d S d S )!NrS  r   rW  rj  rk  rl  r�   zsvg.image_inlineÚpng)rx   Úimagezdata:image/png;base64,
re  rm  zLCannot save image data to filesystem when writing SVG to an in-memory bufferz.imagez.pngz$Writing image file for inclusion: %sÚIm_r^   rÚ  )rn   )rG   rZ   ro   )r  r/   r  r›   rœ   rO   r  r2  rG   rZ   rq   z5image-rendering:crisp-edges;image-rendering:pixelated)r›   rœ   rO   r  rô   r{  )"ÚshaperO  r    rS   rq  Úget_gidr³   r´   r   r   Ú	fromarrayÚsaver  ÚgetvalueÚbase64Ú	b64encoderg  r£   rè   Únextr§   Ú_logr‹   r¡   ra   r}   r0   rœ   r6  r   rn   ro   rÐ  r\   )r<   r  r/   r  Úimr  r  rM  r¤  r£  rO   r  ÚbufÚfilenameÚalphaÚflippeds                   r   Ú
draw_imagezRendererSVG.draw_image¹  sÕ  € ð Œx˜˜˜Œ|‰ˆˆ1à�Š6ˆ6�Q˜!’V�VØˆFà×)Ò)¨"Ñ-Ô-ˆ
Øð 	1ð ˆDŒKÔÐ0Ð0 ZÐ0Ð0Ð0à�jŠj‰lŒlˆØˆ?ØŒK×Ò˜c¸ÈÐ*QÐ*QÐÑRÔRÐRàˆØ�jŠj‰lŒlˆÝŒ<Ð*Ô+ð 	,Ý‘)”)ˆCÝŒO˜BÑÔ×$Ò$ S°Ð$Ñ7Ô7Ð7ØÐ?˜Ÿš w°·²±´Ñ?Ô?ˆCà*ÝÔ  §¢¡¤Ñ0Ô0×7Ò7¸Ñ@Ô@ñAð �<Ñ Ð ð Œ}Ð$Ý ð "Fñ Gô Gð Gàœ-ÐNÐN­t°DÔ4GÑ/HÔ/HÐNÐNÐNˆHÝ�IŠIÐ<¸hÑGÔGÐGÝŒO˜BÑÔ×$Ò$ XÑ.Ô.Ð.ØÐA˜ §¢¨w¸Ñ!AÔ!AÑAˆCØ#+ˆF�<Ñ Øˆˆt‰àÐØ�q‘˜4œ>Ñ)ˆAØ�q‘˜4œ>Ñ)ˆAØŒK×ÒØÝ-Ø&¨°q¸1¸"°gÐ(>ð/@ñ Aô Aå" 1Ñ%Ô%Ý" T¤[°1¡_°qÑ%8Ð#9Ñ:Ô:Ý& qÑ)Ô)Õ2BÀ1Ñ2EÔ2EØð  ñ ô ð ñ ð —L’L‘N”NˆEØ˜Š|ˆ|Ý$4°UÑ$;Ô$;��yÑ!å‘
”
× Ò   Q¡¨¨A©Ñ.Ô.Øñå‘*”*×&Ò& q¨!Ñ,Ô,×2Ò2°1°bÑ9Ô9×CÒCÀAÀtÄ{ÑSÔSñTð ð ŒK×ÒØÝ& qÑ)Ô)Õ2BÀ1Ñ2EÔ2EØÝ-°¸'¿.º.Ñ:JÔ:JÐ/KÐ.LÑMÔMØMð  ñ ô ð ð ˆ?ØŒK�OŠO˜CÑ Ô Ð Øð 	!ØŒK�OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!r   c           	      ó¦  — | j         }|rÇ|                     d¦  «         |                     ¦   «         D ]l\  }\  }}|                      |¦  «        }|                      t          |dz  |¦  «        d¬¦  «        }|                     d||t          dg¦  «        ¬¦  «         Œm|                     d¦  «         | j	         
                    |¦  «         dS dS )	zn
        Emit definitions for not-yet-defined glyphs, and record them as having
        been defined.
        ró   é@   Fr  r'  )rn   )g      �?)r^   rê   r  N)r    rS   rM   Ú_adjust_glyph_reprr)  r   ra   r}   r\   r±   rý   )r<   Úglyph_map_newr    Ú
glyph_reprr|  Úcodesr,  s          r   Ú_update_glyph_map_defsz"RendererSVG._update_glyph_map_defs   s  € ð
 ”ˆØð 	2Ø�LŠL˜Ñ Ô Ð Ø1>×1DÒ1DÑ1FÔ1Fð Kð KÑ-�
Ñ-˜X uØ!×4Ò4°ZÑ@Ô@�
à ×.Ò.Ý˜ B™¨Ñ.Ô.¸ð /ñ @ô @�	à—’Ø˜z¨YÝ1Ð3GÐ2HÑIÔIð ñ Kô Kð Kð Kð �JŠJ�vÑÔÐØŒO×"Ò" =Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r   c                 ó.   — |                      dd¦  «        S )Nz%20r  r   )r<   ró  s     r   rñ  zRendererSVG._adjust_glyph_repr  s   € Ø×!Ò! %¨Ñ-Ô-Ð-r   c	                 óœ  — | j         }	|	                     |¦  «         | j        }
| j        }t	          |                     ¦   «         ¦  «        }|                     ¦   «         }|�)|                     ¦   «         }|                     ¦   «         }nd x}}i }|dk    r||d<   | 	                    ¦   «         r| 
                    ¦   «         n|                     ¦   «         d         }|dk    rt          |¦  «        |d<   ||j        z  }|	                     dt          |¦  «        t          d||ffd| ffd	|| ffg¦  «        ¬
¦  «         |s‡|                     |¦  «        }|                     |||||
d¬¦  «        \  }}}|                      |¦  «         |D ]:\  }}}}|	                     dt          d||ffd	|ffg¦  «        dd|› �i¬¦  «         Œ;nì|dk    r|                     |||
d¬¦  «        }n|                     |||
d¬¦  «        }|\  }}}|                      |¦  «         |D ]O\  }}}}|                      |¦  «        }|	                     dt          d||ffd	|ffg¦  «        dd|› �i¬¦  «         ŒP|D ]C\  }}t/          ||¦  «        }|                      |d¬¦  «        }|	                     d|¬¦  «         ŒD|	                     d¦  «         d S )Nú#000000r!  r%  rG   r2  rW  ro   rp   rn   ©rô   r  T)ÚfeaturesÚlanguageÚ	glyph_mapÚreturn_new_glyphs_onlyrz  rm  rx  )r  rO   ÚTeX)rü  rý  Fr  r'  rT  )r    rU   r±   Ú
_text2pathr   r:  Úget_size_in_pointsÚget_fontfeaturesÚget_languager5  r6  r0   Ú
FONT_SCALErS   r‚   r}   Ú	_get_fontÚget_glyphs_with_fontrõ  ra   Úget_glyphs_texÚget_glyphs_mathtextrñ  r   r)  r\   ) r<   r  r/   r  r   ÚpropÚangleÚismathÚmtextr    rü  Ú	text2pathÚcolorÚfontsizerú  rû  rô   rì  Ú
font_scaleÚfontÚ
glyph_inforò  Úrectsró  Ú	xpositionÚ	ypositionrn   Ú_glyphsÚvertsrô  r'  r,  s                                    r   Ú_draw_text_as_pathzRendererSVG._draw_text_as_path  s   € à”ˆà�Š�qÑÔÐà”Oˆ	à”Oˆ	Ý˜Ÿ
š
™œÑ%Ô%ˆØ×*Ò*Ñ,Ô,ˆØÐØ×-Ò-Ñ/Ô/ˆHØ×)Ò)Ñ+Ô+ˆHˆHà"&Ð&ˆH�xàˆØ�IÒÐØ!ˆE�&‰MØ"$×"5Ò"5Ñ"7Ô"7ÐL�—’‘”�¸R¿ZºZ¹\¼\È!¼_ˆØ�AŠ:ˆ:Ý/°Ñ6Ô6ˆE�)ÑØ 	Ô 4Ñ4ˆ
Ø�ŠØÝ Ñ&Ô&Ý)Ø˜q !˜fÐ%Ø˜U˜F˜9Ð%Ø˜:¨
 {Ð3Ð4ð+ñ ô ð 	ñ 	
ô 	
ð 	
ð ð '	4Ø×&Ò& tÑ,Ô,ˆDØ/8×/MÒ/MØ�a (°XØ#¸Dð 0Nñ 0Bô 0BÑ,ˆJ˜ uð ×'Ò'¨Ñ6Ô6Ð6à;Eð =ð =Ñ7�
˜I y°%Ø—’ØÝ1Ø$ y°)Ð&<Ð=Ø  5 (Ð+ð3ñ ô ð )Ð*:¨jÐ*:Ð*:Ð;ð ñ =ô =ð =ð =ð=ð ˜ŠˆØ#×2Ò2Ø˜! yÈð 3ñ Oô O��ð $×7Ò7Ø˜! yÈð 8ñ Oô O�à/6Ñ,ˆJ˜ uØ×'Ò'¨Ñ6Ô6Ð6à;Eð =ð =Ñ7�
˜I y°%Ø!×4Ò4°ZÑ@Ô@�
Ø—’ØÝ1Ø$ y°)Ð&<Ð=Ø  5 (Ð+ð3ñ ô ð )Ð*:¨jÐ*:Ð*:Ð;ð ñ =ô =ð =ð =ð !&ð 4ð 4‘��uÝ˜E 5Ñ)Ô)�Ø ×.Ò.¨t¸eÐ.ÑDÔD�	Ø—’˜v¨�Ñ3Ô3Ð3Ð3à�
Š
�3‰Œˆˆˆr   c	           
      óò  ‡(‡)— | j         }	t          |                     ¦   «         ¦  «        }
i }i }|
dk    r|
|d<   |                     ¦   «         r|                     ¦   «         n|                     ¦   «         d         }|dk    rt          |¦  «        |d<   |�sði }|                     ¦   «         dk    r|                     ¦   «         |d<   |                     ¦   «         dk    r|                     ¦   «         |d<   |                     ¦   «         }t          j
                             ||¦  «        }|d	k    r|› |d
<   d„ Š)ˆ)fd„Š(ˆ(fd„}t          |                     ¦   «         ¦  «        › d�|d<   d                     t                                ||¦  «        ¦  «        ¦  «        |d<   |                     ¦   «         dk    r|                     ¦   «         |d<   t#          i |¥|¥¦  «        |d<   |�re|dk    s|                     ¦   «         dk    �rF|                     ¦   «         }|                     |                     ¦   «         ¦  «        \  }}| j        |z
  }t/          j        |¦  «        }t/          j        t/          j        |¦  «        t/          j        |¦  «        g¦  «        }t/          j        |||z
  ||z
  g¦  «        }|||d         z  z   }|||d         z  z   }ddddœ}||                     ¦   «                  |d<   t          |¦  «        |d<   t          |¦  «        |d<   t#          i |¥|¥¦  «        |d<   t=          d| ||ffg¦  «        |d<   nt=          d||ffd| ffg¦  «        |d<   |	                     d ||¬!¦  «         d S |	                      |¦  «         | j!        j"         #                    |d"|¦  «        \  }}}}}|	 $                    d#t#          i |¥|¥¦  «        t=          d||ffd| ffg¦  «        ¬$¦  «         |	 $                    d ¦  «         i }|D ]Ü\  }}} }!}"}#t          j%        |¦  «        }$i }|$j&        dk    r
|$j&        |d<   |$j'        dk    r
|$j'        |d<   |$j(        d	k    r|$j(        › |d
<   t          |¦  «        › d�|d<   |$j)        ›|d<   |$j*        dk    r
|$j*        |d<   t#          i |¥|¥¦  «        }%| d%k    rd&} | +                    |%g ¦  «         ,                    |"|# | f¦  «         ŒÝ| -                    ¦   «         D ]c\  }%}&|& .                    ¦   «          |&D ]G\  }}}'|	                     d't_          |'¦  «        t          |¦  «        t          |¦  «        |%¬(¦  «         ŒHŒd|	 0                    d ¦  «         |D ]Y\  }}}}|	                     d)t          |¦  «        t          | dz
  ¦  «        t          |¦  «        t          |¦  «        ¬*¦  «         ŒZ|	 0                    d#¦  «         d S )+Nrø  r!  r%  rG   r2  Únormalz
font-stylezfont-varianti�  zfont-weightc                 ó   — | dv rdn| S )N)Úsansz
sans serifz
sans-serifrc   )r˜   s    r   Ú_normalize_sansz7RendererSVG._draw_text_as_text.<locals>._normalize_sans‚  s   € Ø'+Ð/EÐ'EÐ'E�|�|È4ÐOr   c              3   ó¤   •K  —  ‰| ¦  «        } | t           j        v r/t           j                             | ¦  «        D ]} ‰|¦  «        V — Œ| V — d S re   )ÚfmÚfont_family_aliasesÚFontManagerÚ_expand_aliases)Úfnr˜   r  s     €r   Ú_expand_family_entryz<RendererSVG._draw_text_as_text.<locals>._expand_family_entry…  sm   øè è € Ø$�_ RÑ(Ô(�à�Ô/Ð/Ð/õ !#¤× >Ò >¸rÑ BÔ Bð 4ð 4˜Ø-˜o¨dÑ3Ô3Ð3Ð3Ð3Ð3ð �����r   c                 óD   •— ˆfd„|                       ¦   «         D ¦   «         S )Nc                 ój   •— g | ]/} ‰|¦  «        D ]!}|t           j        v r|nt          |¦  «        ‘Œ"Œ0S rc   )r  r  Úrepr)rt   Úentryr˜   r#  s      €r   ú
<listcomp>zQRendererSVG._draw_text_as_text.<locals>._get_all_quoted_names.<locals>.<listcomp>“  si   ø€ ð Að Að AØ!Ø$8Ð$8¸Ñ$?Ô$?ðAð Aà ð !%­Ô(>Ð >Ð >˜˜ÅDÈÁJÄJð Að Að Að Ar   )Ú
get_family)r  r#  s    €r   Ú_get_all_quoted_namesz=RendererSVG._draw_text_as_text.<locals>._get_all_quoted_names‘  s@   ø€ ðAð Að Að AØ%)§_¢_Ñ%6Ô%6ðAñ Aô Að Ar   Úpxz	font-sizez, zfont-familyzfont-stretchrô   r   ÚanchorrS   r\   Úmiddle)ÚleftÚrightÚcenterztext-anchorr/   r  rp   r  ro   rW   r�   r•   rW  rù  é    é    Útspan)r/   r  rô   r   rU  )1r    r   r:  r5  r6  r0   Ú	get_styleÚget_variantÚ
get_weightr  Úweight_dictrÜ   Úget_sizerB   r°   ÚfromkeysÚget_stretchr‚   Úget_rotation_modeÚget_transformr  Úget_unitless_positionrœ   r�   Údeg2radÚarrayÚsinÚcosÚdotÚget_har}   ra   rU   rÿ  Úmathtext_parserÚparserS   ÚttfFontPropertyrô   ÚvariantÚweightr˜   ÚstretchÚ
setdefaultrK   rM   ÚsortÚchrr\   )*r<   r  r/   r  r   r  r	  r
  r  r    r  Ú
font_styleÚcolor_stylerì  rO   rH  r*  r  ÚaxÚayÚ	angle_radÚdir_vertÚv_offsetÚha_mpl_to_svgr›   rœ   ÚdescentÚglyphsr  Úspansr  r  ÚccodeÚglyph_indexÚnew_xÚnew_yr'  rô   ÚcharsÚtr#  r  s*                                           @@r   Ú_draw_text_as_textzRendererSVG._draw_text_as_textc  sÕ  øø€ ð ”ˆå˜Ÿ
š
™œÑ%Ô%ˆØˆ
ØˆØ�IÒÐØ"'ˆK˜Ñà"$×"5Ò"5Ñ"7Ô"7ÐL�—’‘”�¸R¿ZºZ¹\¼\È!¼_ˆØ�AŠ:ˆ:Ý%5°eÑ%<Ô%<ˆK˜	Ñ"àñ J	ØˆFð �~Š~ÑÔ 8Ò+Ð+Ø+/¯>ª>Ñ+;Ô+;�
˜<Ñ(Ø×ÒÑ!Ô! XÒ-Ð-Ø-1×-=Ò-=Ñ-?Ô-?�
˜>Ñ*Ø—_’_Ñ&Ô&ˆFÝ”^×'Ò'¨°Ñ7Ô7ˆFØ˜Š}ˆ}Ø/5¨K�
˜=Ñ)ðPð Pð Pð
ð 
ð 
ð 
ð 
ðAð Að Að Að Aõ *:¸$¿-º-¹/¼/Ñ)JÔ)JÐ&NÐ&NÐ&NˆJ�{Ñ#à(,¯	ª	Ý—’Ð3Ð3°DÑ9Ô9Ñ:Ô:ñ)ô )ˆJ�}Ñ%ð ×ÒÑ!Ô! XÒ-Ð-Ø-1×-=Ò-=Ñ-?Ô-?�
˜>Ñ*Ý+Ð,I¨zÐ,I¸[Ð,IÑJÔJˆF�7‰Oàñ ,˜% 1š*˜*¨×(?Ò(?Ñ(AÔ(AÀXÒ(MÑ(Mð
 "×/Ò/Ñ1Ô1�	Ø"×,Ò,¨U×-HÒ-HÑ-JÔ-JÑKÔK‘��BØ”[ 2Ñ%�õ
 œJ uÑ-Ô-�	Ýœ8¥R¤V¨IÑ%6Ô%6½¼¸yÑ8IÔ8IÐ$JÑKÔK�Ýœ6 (¨a°"©f¸¸B¹Ð,@ÑAÔA�Ø˜( X¨a¤[Ñ0Ñ0�Ø˜( X¨a¤[Ñ0Ñ0�à)0¸5Ø+3ð!5ð !5�à,9¸%¿,º,¹.¼.Ô,I�
˜=Ñ)å.¨rÑ2Ô2��s‘Ý.¨rÑ2Ô2��s‘Ý"/Ð0M°:Ð0MÀÐ0MÑ"NÔ"N��w‘Ý&9Ø  ¨¨BÐ/Ð0ð;2ñ '3ô '3��{Ñ#Ð#õ ':Ø  1 a &Ð)Ø  ˜yÐ)ð;+ñ ',ô ',��{Ñ#ð �NŠN˜6 1¨VˆNÑ4Ô4Ð4Ð4Ð4ð �NŠN˜1ÑÔÐð ”Ô/×5Ò5°a¸¸TÑBÔBñ 2ˆE�6˜7 F¨Eð
 �LŠL˜Ý,Ð-J°
Ð-J¸kÐ-JÑKÔKÝ#6Ø)¨A¨q¨6Ð2Ø&¨%¨¨	Ð2ð84ñ $5ô $5ð ñ ô ð ð �LŠL˜Ñ Ô Ð ð ˆEØDJð Kð KÑ@��h  {°E¸5ÝÔ*¨4Ñ0Ô0�Ø�
à”; (Ò*Ð*Ø/4¬{�J˜|Ñ,Ø”= HÒ,Ð,Ø16´�J˜~Ñ.Ø”< 3Ò&Ð&Ø38´<Ð0A�J˜}Ñ-Ý-=¸hÑ-GÔ-GÐ*KÐ*KÐ*K�
˜;Ñ'Ø/4¬zÐ,=�
˜=Ñ)Ø”= HÒ,Ð,Ø16´�J˜~Ñ.Ý%Ð&C¨Ð&C°{Ð&CÑDÔD�Ø˜B’;�;Ø �EØ× Ò  ¨Ñ+Ô+×2Ò2°E¸E¸6À5Ð3IÑJÔJÐJÐJà %§¢¡¤ð %ð %‘��uØ—
’
‘”�Ø$ð %ð %‘G�A�q˜!Ø—N’NØÝ˜A™œÝ*¨1Ñ-Ô-Ý*¨1Ñ-Ô-Ø#ð #ñ %ô %ð %ð %ð%ð �JŠJ�vÑÔÐà',ð ð Ñ#��1�e˜VØ—’ØÝ& qÑ)Ô)Ý&¨ r¨!¡tÑ,Ô,Ý*¨5Ñ1Ô1Ý+¨FÑ3Ô3ð ñ ô ð ð ð �JŠJ�s‰OŒOˆOˆOˆOr   Fc	           
      ó  — |                       |¦  «        }	|	r | j        j        di |	¤Ž |                     ¦   «         �0| j                             d|                     ¦   «         ddœ¦  «         t          j        d         dk    r|                      ||||||||¦  «         n|                      ||||||||¦  «         |                     ¦   «         �| j                             d¦  «         |	r| j                             d¦  «         d S d S )NrW  rj  rk  rl  zsvg.fonttyper'  r{  )	rO  r    rS   rq  r³   r´   r  r^  r\   )
r<   r  r/   r  r   r  r	  r
  r  r¤  s
             r   Ú	draw_textzRendererSVG.draw_text  s  € ð ×)Ò)¨"Ñ-Ô-ˆ
Øð 	1ð ˆDŒKÔÐ0Ð0 ZÐ0Ð0Ð0à�:Š:‰<Œ<Ð#ØŒK×Ò˜c°"·*²*±,´,È(Ð#SÐ#SÑTÔTÐTåŒ<˜Ô'¨6Ò1Ð1Ø×#Ò# B¨¨1¨a°°u¸fÀeÑLÔLÐLÐLà×#Ò# B¨¨1¨a°°u¸fÀeÑLÔLÐLà�:Š:‰<Œ<Ð#ØŒK�OŠO˜CÑ Ô Ð àð 	!ØŒK�OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!r   c                 ó   — dS rf   rc   rd   s    r   ÚflipyzRendererSVG.flipy  rØ  r   c                 ó   — | j         | j        fS re   )r›   rœ   rd   s    r   Úget_canvas_width_heightz#RendererSVG.get_canvas_width_height  s   € àŒz˜4œ;Ð&Ð&r   c                 ó:   — | j                              |||¦  «        S re   )rÿ  Úget_text_width_height_descent)r<   r   r  r
  s       r   rf  z)RendererSVG.get_text_width_height_descent   s   € àŒ×<Ò<¸QÀÀfÑMÔMÐMr   )Nr•   re   )NNNN)FN)%rg   rh   ri   r>   r¾   rÂ   r¶   r·   r  r  r  rÁ   rC  rE  rO  rÀ   rY  r[  r]  r)  rs  r‚  r‰  rÂ  rÕ  r×  rÛ  rî  rõ  rñ  r  r^  r`  rb  rd  rf  Ú__classcell__©r»   s   @r   r”   r”   .  s¯  ø€ € € € € ð&$Ø!ð&$ð &$ð &$ð &$ð &$ð &$ð &$ðP-ð -ð -ðð ð ðy1ð y1ð y1ðvð ð ð-ð -ð -ðMð Mð Mðð ð ð&*ð *ð *ðX+ð +ð +ðZ@ð @ð @ð-ð -ð -ð.ð ð ð.Bð Bð Bð Bðð ð ð9ð 9ð 9ð GKØ!ðCð Cð Cð Cð!ð !ð !ð !ð" GKð)ð )ð )ð )ð\ >Bð:&ð :&ð :&ð :&ð :&ð :&ð :&ðxfð fð fðPð ð ðBð ð ð%ð %ð %ðE!ð E!ð E!ð E!ðN2ð 2ð 2ð&.ð .ð .ðKð Kð Kð KðZ\ð \ð \ð \ð|!ð !ð !ð !ð.ð ð ð'ð 'ð 'ðNð Nð Nð Nð Nð Nð Nr   r”   c                   óF   ‡ — e Zd ZdddœZdZdddœd„Zd„ Zd„ Zˆ fd	„Zˆ xZ	S )
ÚFigureCanvasSVGzScalable Vector Graphics)r™   Úsvgzr•   N)Úbbox_inches_restorer–   c                óø  — t          j        |dd¬¦  «        5 }t          j        |¦  «        s t          j        d¦  «        |¦  «        }| j        j        }d| j        _        | j                             ¦   «         \  }}|dz  |dz  }	}t          | j        |||t          ||	|||¬¦  «        |¬¦  «        }
| j         
                    |
¦  «         |
                     ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )a  
        Parameters
        ----------
        filename : str or path-like or file-like
            Output target; if a string, a file will be opened for writing.

        metadata : dict[str, Any], optional
            Metadata in the SVG file defined as key-value pairs of strings,
            datetimes, or lists of strings, e.g., ``{'Creator': 'My software',
            'Contributor': ['Me', 'My Friend'], 'Title': 'Awesome'}``.

            The standard keys and their value types are:

            * *str*: ``'Coverage'``, ``'Description'``, ``'Format'``,
              ``'Identifier'``, ``'Language'``, ``'Relation'``, ``'Source'``,
              ``'Title'``, and ``'Type'``.
            * *str* or *list of str*: ``'Contributor'``, ``'Creator'``,
              ``'Keywords'``, ``'Publisher'``, and ``'Rights'``.
            * *str*, *date*, *datetime*, or *tuple* of same: ``'Date'``. If a
              non-*str*, then it will be formatted as ISO 8601.

            Values have been predefined for ``'Creator'``, ``'Date'``,
            ``'Format'``, and ``'Type'``. They can be removed by setting them
            to `None`.

            Information is encoded as `Dublin Core Metadata`__.

            .. _DC: https://www.dublincore.org/specifications/dublin-core/

            __ DC_
        rM  zutf-8)Úencodingr•   )r¡   r–   )rl  N)r   Úopen_file_cmÚfile_requires_unicodeÚcodecsÚ	getwriterÚfigureÚdpiÚget_size_inchesr   r”   ÚdrawrÂ   )r<   rë  rl  r–   Úfhrt  r›   rœ   rM  r  Úrenderers              r   Ú	print_svgzFigureCanvasSVG.print_svg+  sG  € õ@ Ô ¨#¸Ð@Ñ@Ô@ð 	 ÀBÝÔ.¨rÑ2Ô2ð 3Ø.•VÔ% gÑ.Ô.¨rÑ2Ô2�Ø”+”/ˆCØ ˆDŒKŒOØ œK×7Ò7Ñ9Ô9‰MˆE�6Ø˜2‘:˜v¨™{ˆqˆAÝ(Ø”˜U F¨CÝ˜A˜q "°¸hÐGÑGÔGØ$7ð9ñ 9ô 9ˆHð ŒK×Ò˜XÑ&Ô&Ð&Ø×ÒÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ˜C
C/Ã/C3Ã6C3c                 óò   — t          j        |d¦  «        5 }t          j        d|¬¦  «        5 } | j        |fi |¤Žcd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NÚwbrM  )ÚmodeÚfileobj)r   ro  ÚgzipÚGzipFilery  )r<   rë  Úkwargsrw  Ú
gzipwriters        r   Ú
print_svgzzFigureCanvasSVG.print_svgzY  s  € ÝÔ  ¨4Ñ0Ô0ð 	8°BÝŒm ¨bÐ1Ñ1Ô1ð	8Ø5?Ø!�4”> *Ð7Ð7°Ð7Ð7ð	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s3   –A,­A»A,ÁA	ÁA,ÁA	ÁA,Á,A0Á3A0c                 ó   — dS )Nr™   rc   rd   s    r   Úget_default_filetypez$FigureCanvasSVG.get_default_filetype^  s   € Øˆur   c                 óv   •— | j                              ¦   «          t          ¦   «                              ¦   «         S re   )rs  Údraw_without_renderingr¯   rv  )r<   r»   s    €r   rv  zFigureCanvasSVG.drawa  s)   ø€ ØŒ×*Ò*Ñ,Ô,Ð,Ý‰wŒw�|Š|‰~Œ~Ðr   )
rg   rh   ri   Ú	filetypesÚ	fixed_dpiry  r‚  r„  rv  rg  rh  s   @r   rj  rj  %  sŽ   ø€ € € € € Ø2Ø3ð5ð 5€Ið €Ià9=Èð , ð , ð , ð , ð , ð\8ð 8ð 8ð
ð ð ðð ð ð ð ð ð ð ð r   rj  zœ<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
c                   ó    — e Zd Zej        ZeZdS )Ú_BackendSVGN)rg   rh   ri   r³   rÛ   Úbackend_versionrj  ÚFigureCanvasrc   r   r   rŠ  rŠ  p  s   € € € € € à”o€OØ"€L€L€Lr   rŠ  )?rå  rq  rÝ   r~  rû   Úior   r¥   Úloggingrà   Úrerù   Únumpyr�   ÚPILr   Ú
matplotlibr³   r   r   r  Úmatplotlib.backend_basesr   r   r	   r
   Ú!matplotlib.backends.backend_mixedr   Úmatplotlib.colorsr   Úmatplotlib.datesr   Úmatplotlib.pathr   r   Úmatplotlib.transformsr   r   Ú	getLoggerrg   rè  r   Úcompiler!   r#   r'   r)   r0   r2   Ú_apiÚ
deprecatedrl   r}   r‚   r=  r�   r’   r”   rj  ÚFigureManagerSVGr²   ÚexportrŠ  rc   r   r   ú<module>rŸ     sd  ðØ €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€à Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðBð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bà ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø %Ð %Ð %Ð %Ð %Ð %Ø  Ð  Ð  Ð  Ð  Ð  Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ð €wÔ˜Ñ"Ô"€ðRð ð ð !�b”j Ñ+Ô+Ð ð,ð ,ð ,ð
ð ð ð+ð +ð +ð,ð ,ð ,ðQð Qð Qð Qð Qñ Qô Qð Qðh „×Ò�VÑÔðð ð ð ð �
ñ ô ñ Ôððð ð ð=ð =ð =ð &¨vÀÐHÐH€ð*ð *ð *ð@ð @ð @ðtNð tNð tNð tNð tN�,ñ tNô tNð tNðn>ð >ð >ð >ð >Ð&ñ >ô >ð >ðB %Ð ð€	ð 
„ð#ð #ð #ð #ð #�(ñ #ô #ñ „ð#ð #ð #r   