§
    èƒñjN  ã                  óŒ  — U d 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ZddlZddlmZ ddlmZmZmZmZmZmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlm Z  erddl!Z"	 ddl#mZ$ de_        erddl%Z&n# e'$ r dZ$de_        Y nw xY wd9d:d„Z(	 	 	 	 	 	 d;d<d-„Z)	 	 d=d>d2„Z*i Z+d3e,d4<    e)¦   «          d?d6„Z- G d7„ d8¦  «        Z.dS )@z Schemdraw Drawing class é    )Úannotations)ÚAnyÚMutableMappingÚUnionÚOptionalÚTYPE_CHECKING)ÚChainMapNé   )Údefault_canvas)ÚBBoxÚBackendsÚImageFormatÚ	LinestyleÚXYÚ	ImageType)ÚElementÚ	Container)ÚSegmentType)ÚPoint)ÚFigure)Údrawing_stackÚ
matplotlibÚsvgÚbackendr   ÚreturnÚNonec                óV   — | dk    rt           €t          d¦  «        ‚| t          _        dS )z6 Change default backend, either 'matplotlib' or 'svg' r   NzCould not import Matplotlib.)Ú	mplFigureÚ
ValueErrorr   )r   s    úR/data/share/cad/hardware/.venv/lib/python3.11/site-packages/schemdraw/schemdraw.pyÚuser!      s0   € à�,ÒÐÝÐÝÐ;Ñ<Ô<Ð<Ø$+…NÔ!Ð!Ð!ó    ç      @ç      à?çš™™™™™¹?ç      ,@ú
sans-serifÚblackç       @ú-ÚunitÚfloatÚinches_per_unitÚlblofstÚfontsizeÚfontÚstrÚcolorÚlwÚlsr   ÚfillúOptional[str]ÚbgcolorÚmarginÚmathfontc                ó  — | t           d<   |t           d<   |t           d<   |t           d<   |t           d<   |t           d<   |t           d<   |t           d<   |t           d	<   |
t           d
<   |	r
|	t           d<   |r|t           d<   dS dS )aò   Set global schemdraw style configuration

        Args:
            unit: Full length of a 2-terminal element. Inner zig-zag portion
                of a resistor is 1.0 units.
            inches_per_unit: Inches per drawing unit for setting drawing scale
            lblofst: Default offset between element and its label
            fontsize: Default font size for text labels
            font: Default font family for text labels
            color: Default color name or RGB (0-1) tuple
            lw: Default line width for elements
            ls: Default line style
            fill: Deault fill color for closed elements
            margin: White space around the drawing in drawing units
            mathont: Font for math delimited by $..$
    r+   r-   r.   r/   r0   r2   r3   r4   r5   r8   r7   r9   N©Úschemdrawstyle)r+   r-   r.   r/   r0   r2   r3   r4   r5   r7   r8   r9   s               r    Úconfigr=   &   s�   € ð, "…N�6ÑØ(7…NÐ$Ñ%Ø '…N�9ÑØ!)…N�:ÑØ!…N�6ÑØ#…N�7ÑØ…N�4ÑØ…N�4ÑØ!…N�6ÑØ%…N�8ÑØð ,Ø$+��yÑ!Øð .Ø%-��zÑ"Ð"Ð"ð.ð .r"   TÚdwgbboxÚboolÚelmbboxc                ó.   — | t           d<   |t           d<   dS )z4 Debug - draw element and/or drawing bounding boxes r>   r@   Nr;   )r>   r@   s     r    ÚdebugrB   L   s   € ð !(…N�9ÑØ '…N�9ÑÐÐr"   zdict[str, Any]r<   Údefaultc                ó†  — | dk    rt          d¬¦  «         d$S | dk    rdt          d<   dt          d<   d$S | dk    rd	t          d<   d
t          d<   d$S | dk    rdt          d<   dt          d<   d$S | dk    rdt          d<   dt          d<   d$S | dk    rdt          d<   dt          d<   d$S | dk    rdt          d<   dt          d<   d$S | dk    rdt          d<   dt          d<   d$S | dk    rdt          d<   dt          d<   d$S | dk    rdt          d<   dt          d<   d$S | d k    rd!t          d<   d"t          d<   d$S t          d#| › �¦  «        ‚)%aÞ   Set schemdraw theme (line color and background color).
        Themes match those in jupyter-themes package
        (https://github.com/dunovank/jupyter-themes).

        Available themes:
            * default (black on white)
            * dark (white on black)
            * solarizedd
            * solarizedl
            * onedork
            * oceans16
            * monokai
            * gruvboxl
            * gruvboxd
            * grade3
            * chesterish
    rC   Úwhite)r7   Údarkr2   r(   r7   Ú
solarizeddz#002b36z#657b83Ú
solarizedlz#eee8d5z#073642Úonedorkz#373e4bz#899ab8Úoceans16z#384151z#CDD2E9Úmonokaiz#232323z#BBBBBBÚgruvboxlz#ebdbb2z#3c3836Úgruvboxdz#1d2021z#d5c4a1Úgrade3z#ffffffz#3f3d46Ú
chesterishz#323A48z#92A2BDzUnknown theme N)r=   r<   r   )Úthemes    r    rP   rP   W   s­  € ð$ �	ÒÐÝ�wÐÑÔÐÐÐØ	�&ŠˆØ")��wÑØ$+��yÑ!Ð!Ð!Ø	�,Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�,Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�)Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�*Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�)Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�*Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�*Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�(Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐØ	�,Ò	Ð	Ø$-��yÑ!Ø"+��wÑÐÐåÐ1¨%Ð1Ð1Ñ2Ô2Ð2r"   c                  óz  — e Zd ZdZ	 	 	 	 	 dXdYd„Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Z	 	 dZd[d„Z	d„ Z
d„ Zd\d „Zd!„ Zd]d^d#„Zd_d%„Zd`d'„Zd(„ Zd)„ Zdad,„Zdbd-„Zdcd0„Zddd1„Zdedfd5„Zdgdhd:„Zdid;„Zddd<„Zddd=„Z	 	 	 	 	 	 djdkdJ„ZdK„ ZdldL„ZdldM„Z	 	 dmdndP„Z dodpdR„Z!dqdrdW„Z"dS )sÚDrawingaM   A schematic drawing

        See `schemdraw.config` method for argument defaults

        Args:
            canvas: Canvas to draw on when using Drawing context manager.
                Can be string 'matplotlib' or 'svg' to create new canvas
                with these backends, or an instance of a matplotlib axis,
                or an instance of xml.etree.ElementTree containing SVG.
                Default is value set by schemdraw.use().
            file: optional filename to save on exiting context manager
                or calling draw method.
            show: Show the drawing after exiting context manager
            transparent: Save to file with a transparent background
            dpi: Dots-per-inch when saving to a raster graphics file

        Attributes:
            here: (xy tuple) Current drawing position. The next element will
                be added at this position unless specified otherwise.
            theta: (float) Current drawing angle, in degrees. The next
                element will be added with this angle unless specified
                otherwise.
    NTFéH   ÚcanvasúPOptional[Union[Backends, xml.etree.ElementTree.Element, matplotlib.pyplot.Axes]]Úfiler6   Úshowr?   ÚtransparentÚdpir,   c                ó
  — || _         || _        || _        ||dœ| _        g | _        i | _        d|v r6|                     d¦  «        | _        t          j        dt          d¬¦  «         t                               ¦   «         | _        | j                             |¦  «         |                     dt                               d¦  «        ¦  «        | _        t!          d¦  «        | _        d| _        g | _        d	| _        d | _        d S )
N©rX   rY   r   ú-Use of `backend` is deprecated. Use `canvas`.é   ©Ú
stacklevelr+   ©r   r   r   F)ÚoutfilerT   rW   ÚsaveoptsÚelementsÚanchorsÚpopÚwarningsÚwarnÚDeprecationWarningr<   ÚcopyÚ	dwgparamsÚupdateÚgetr+   r   Ú_hereÚ_thetaÚ_stateÚ_interactiveÚfig)ÚselfrT   rV   rW   rX   rY   Úkwargss          r    Ú__init__zDrawing.__init__¥   sñ   € ð ˆŒØˆŒØˆŒ	Ø(3¸CÐ@Ð@ˆŒØ')ˆŒØOQˆŒà˜ÐÐØ Ÿ*š* YÑ/Ô/ˆDŒKÝŒMÐIÝ,¸ð<ñ <ô <ð <õ *8×)<Ò)<Ñ)>Ô)>ˆŒØŒ×Ò˜fÑ%Ô%Ð%Ø—J’J˜v¥~×'9Ò'9¸&Ñ'AÔ'AÑBÔBˆŒ	å˜v™œˆŒ
ØˆŒØ13ˆŒØ!ˆÔØ:>ˆŒˆˆr"   c                ó8   — t          j        d ¦  «         | j        S ©N©r   Úpush_elementrm   ©rr   s    r    ÚherezDrawing.hereÃ   s   € åÔ" 4Ñ(Ô(Ð(ØŒzÐr"   c                ó<   — t          j        d ¦  «         || _        d S rv   rw   ©rr   Úvalues     r    rz   zDrawing.hereÈ   s   € åÔ" 4Ñ(Ô(Ð(ØˆŒ
ˆ
ˆ
r"   c                ó8   — t          j        d ¦  «         | j        S rv   )r   rx   rn   ry   s    r    ÚthetazDrawing.thetaÍ   s   € åÔ" 4Ñ(Ô(Ð(ØŒ{Ðr"   c                ó   — || _         d S rv   )rn   r|   s     r    r   zDrawing.thetaÒ   s   € àˆŒˆˆr"   ç333333Ó?ç      è?ÚcornerradiusÚpadxÚpadyc                ó(   — t          | |||¬¦  «        S )aè   Add a container to the drawing. Use as a context manager,
            such that elemnents inside the `with` are surrounded by
            the container.
            
            >>> with drawing.container():
            >>>    elm.Resistor()
            >>>    ...

            Args:
                cornerradius: radius for box corners
                padx: space between contents and border in x direction
                pady: space between contents and border in y direction
        )rƒ   r„   r…   )r   )rr   rƒ   r„   r…   s       r    Ú	containerzDrawing.containerÖ   s   € õ ˜¨L¸tÈ$ÐOÑOÔOÐOr"   c                ó.   — t          j        | ¦  «         | S rv   )r   Úpush_drawingry   s    r    Ú	__enter__zDrawing.__enter__ç   s   € ÝÔ" 4Ñ(Ô(Ð(Øˆr"   c                óŒ  — t          j        d¦  «         t          j        | ¦  «         | j        � | j        | j        fi | j        ¤Ž | j        s|                      d¬¦  «         | j        rVt          | j
        d¦  «        sC	 t          | j        ¦  «         dS # t          $ r | j                             ¦   «          Y dS w xY wdS dS )z1 Exit context manager - save to file and display NF©rW   Úplot)r   rx   Úpop_drawingra   Úsaverb   rq   ÚdrawrW   ÚhasattrrT   ÚdisplayÚ	NameError)rr   Úexc_typeÚexc_valÚexc_tbs       r    Ú__exit__zDrawing.__exit__ë   sä   € åÔ" 4Ñ(Ô(Ð(ÝÔ! $Ñ'Ô'Ð'àŒ<Ð#ØˆDŒI�d”lÐ4Ð4 d¤mÐ4Ð4Ð4ØŒxð 	"Ø�IŠI˜5ˆIÑ!Ô!Ð!ØŒ9ð 	 �W T¤[°&Ñ9Ô9ð 	 ð Ý˜œÑ!Ô!Ð!Ð!Ð!øÝð  ð  ð  Ø”—’‘”����ð øøøð	 ð 	 ð 	 ð 	 s   ÂB Â#B?Â>B?Únamer1   r   r   c                óÀ   — |t          | ¦  «                             di ¦  «        v r(t          | ¦  «                             d¦  «        |         S t          d|› �¦  «        ‚)z, Allow getting anchor position as attribute rd   z'Drawing' has no attribute )Úvarsrl   ÚAttributeError©rr   r˜   s     r    Ú__getattr__zDrawing.__getattr__ú   sU   € à•4˜‘:”:—>’> )¨RÑ0Ô0Ð0Ð0Ý˜‘:”:—>’> )Ñ,Ô,¨TÔ2Ð2ÝÐA¸4ÐAÐAÑBÔBÐBr"   c                ó   — || j         v S rv   )rc   ©rr   Úelements     r    Ú__contains__zDrawing.__contains__   s   € Ø˜$œ-Ð'Ð'r"   Úinteractivec                ó   — || _         dS )z… Enable interactive mode (matplotlib backend only). Matplotlib
            must also be set to interactive with `plt.ion()`.
        N)rp   )rr   r¢   s     r    r¢   zDrawing.interactive  s   € ð (ˆÔÐÐr"   r   c                ór  — t           j        }t           j         }t           j        }t           j         }| j        D ]l}|                     d¬¦  «        }t	          |j        |¦  «        }t          |j        |¦  «        }t	          |j        |¦  «        }t          |j	        |¦  «        }Œmt          ||||¦  «        S )z Get drawing bounding box T)Ú	transform)ÚmathÚinfrc   Úget_bboxÚminÚxminÚmaxÚxmaxÚyminÚymaxr   )rr   rª   r¬   r­   r®   r    Úbboxs          r    r¨   zDrawing.get_bbox	  s£   € åŒxˆÝ”ˆyˆÝŒxˆÝ”ˆyˆØ”}ð 	(ð 	(ˆGØ×#Ò#¨dÐ#Ñ3Ô3ˆDÝ�t”y $Ñ'Ô'ˆDÝ�t”y $Ñ'Ô'ˆDÝ�t”y $Ñ'Ô'ˆDÝ�t”y $Ñ'Ô'ˆDˆDÝ�D˜$  dÑ+Ô+Ð+r"   úlist[SegmentType]c                ó°   ‡‡— g }| j         D ]IŠt          ‰j        ‰j        ‰j        ¦  «        Š|                     ˆˆfd„‰j        D ¦   «         ¦  «         ŒJ|S )z3 Get flattened list of all segments in the drawing c                ó6   •— g | ]} |j         ‰j        fi ‰¤Ž‘ŒS © )Úxformr¥   )Ú.0Úsr    Úparamss     €€r    ú
<listcomp>z(Drawing.get_segments.<locals>.<listcomp>  s@   ø€ ð 8ð 8ð 8Ø!"ð %˜QœW WÔ%6ÐAÐA¸&ÐAÐAð 8ð 8ð 8r"   )rc   r	   Ú_userparamsÚ	elmparamsÚdefaultsÚextendÚsegments)rr   r½   r    r·   s     @@r    Úget_segmentszDrawing.get_segments  s‚   øø€ àˆØ”}ð 	9ð 	9ˆGå˜gÔ1°7Ô3DÀgÔFVÑWÔWˆFØ�OŠOð 8ð 8ð 8ð 8ð 8Ø&-Ô&6ð8ñ 8ô 8ñ 9ô 9ð 9ð 9àˆr"   c                óx   — |                       d¬¦  «                             d¦  «                             ¦   «         S )z  SVG representation for Jupyter FrŒ   r   )r�   ÚgetimageÚdecodery   s    r    Ú
_repr_svg_zDrawing._repr_svg_!  s0   € à�yŠy˜eˆyÑ$Ô$×-Ò-¨eÑ4Ô4×;Ò;Ñ=Ô=Ð=r"   c                ó˜   — | j         dk    st          | j         d¦  «        r)|                      d¬¦  «                             d¦  «        S dS )z  PNG representation for Jupyter r   r�   FrŒ   ÚpngN)rT   r‘   r�   rÀ   ry   s    r    Ú
_repr_png_zDrawing._repr_png_%  sG   € àŒ;˜,Ò&Ð&­'°$´+¸vÑ*FÔ*FÐ&Ø—9’9 %�9Ñ(Ô(×1Ò1°%Ñ8Ô8Ð8Øˆtr"   r    r   c                ó0   — |                       |¦  «         | S )z( In-place add element, via += operator. ©ÚaddrŸ   s     r    Ú__iadd__zDrawing.__iadd__+  s   € à�Š�ÑÔÐØˆr"   c                ó0  —  |j         | j        | j        fi | j        ¤Ž\  | _        | _        | j                             |¦  «         | j        rÂ| j        €[t          | j         	                    d¦  «        ¬¦  «        | _        d| j        v r%| j         
                    | j        d         ¦  «         |                     | j        ¦  «         | j                             |                      ¦   «         ¦  «         | j                             ¦   «          nd| _        |S )zh Add an element to the drawing.

            Args:
                element: The element to add.
        Nr-   )r-   r7   )Ú_placerm   rn   rj   rc   Úappendrp   rq   r   rl   r7   Ú_drawÚset_bboxr¨   rÀ   rŸ   s     r    rÈ   zDrawing.add0  s  € ð #1 '¤.°´¸T¼[Ð"[Ð"[ÈDÌNÐ"[Ð"[ÑˆŒ
�D”KØŒ×Ò˜WÑ%Ô%Ð%àÔð 
	ØŒxÐÝ$Ø$(¤N×$6Ò$6Ð7HÑ$IÔ$IðKñ Kô K�”à ¤Ð.Ð.Ø”H×$Ò$ T¤^°IÔ%>Ñ?Ô?Ð?Ø�MŠM˜$œ(Ñ#Ô#Ð#ØŒH×Ò˜dŸmšm™oœoÑ.Ô.Ð.ØŒH×ÒÑÔÐÐàˆDŒHØˆr"   rc   r   c                ó:   — |D ]}|                       |¦  «         ŒdS )z& Add multiple elements to the drawing NrÇ   )rr   rc   r    s      r    Úadd_elementszDrawing.add_elementsF  s0   € àð 	ð 	ˆGØ�HŠH�WÑÔÐÐð	ð 	r"   c                ó|  — | j                              d¦  «         | j                             ¦   «          | j         D ]}|                     | j        ¦  «         Œ| j         d         j        \  | _        | _        | j                             |  	                    ¦   «         ¦  «         | j         
                    ¦   «          dS )z" Removes previously added element éÿÿÿÿN)rc   re   rq   ÚclearrÍ   Úabsdroprm   rn   rÎ   r¨   rÀ   rŸ   s     r    ÚundozDrawing.undoK  s¢   € àŒ×Ò˜"ÑÔÐØŒ�ŠÑÔÐØ”}ð 	$ð 	$ˆGØ�MŠM˜$œ(Ñ#Ô#Ð#Ð#Ø"&¤-°Ô"3Ô";ÑˆŒ
�D”KØŒ×Ò˜$Ÿ-š-™/œ/Ñ*Ô*Ð*ØŒ×ÒÑÔÐÐÐr"   r   ÚdxÚdyc                ó’   — t          j        d¦  «         t          | j        d         |z   | j        d         |z   f¦  «        | _        dS )z� Move the current drawing position

            Args:
                dx: change in x position
                dy: change in y position
        Nr   r
   )r   rx   r   rm   )rr   rÖ   r×   s      r    ÚmovezDrawing.moveU  sC   € õ 	Ô" 4Ñ(Ô(Ð(Ý˜DœJ qœM¨BÑ.°´
¸1´ÀÑ0BÐCÑDÔDˆŒ
ˆ
ˆ
r"   Úrefr   r   úOptional[float]c                óv   — t          j        d¦  «         |j        |z   |j        |z   f| _        |�	|| _        dS dS )zn Move drawing position relative to the reference point. Change drawing
            theta if provided.
        N)r   rx   ÚxÚyrm   rn   )rr   rÚ   rÖ   r×   r   s        r    Ú	move_fromzDrawing.move_from_  sF   € õ 	Ô" 4Ñ(Ô(Ð(Ø”e˜b‘j #¤%¨"¡*Ð-ˆŒ
ØÐØˆDŒKˆKˆKð Ðr"   c                ó$   — | j         | j        |<   dS )z9 Define a Drawing anchor at the current drawing position N)rm   rd   rœ   s     r    Ú
set_anchorzDrawing.set_anchorh  s   € à!œZˆŒ�TÑÐÐr"   c                ó”   — t          j        d¦  «         | j                             t	          | j        ¦  «        | j        f¦  «         dS )z\ Push/save the drawing state.
            Drawing.here and Drawing.theta are saved.
        N)r   rx   ro   rÌ   r   rm   rn   ry   s    r    ÚpushzDrawing.pushl  sB   € õ 	Ô" 4Ñ(Ô(Ð(ØŒ×Ò�E $¤*Ñ-Ô-¨t¬{Ð;Ñ<Ô<Ð<Ð<Ð<r"   c                ó®   — t          j        d¦  «         t          | j        ¦  «        dk    r(| j                             ¦   «         \  | _        | _        dS dS )zm Pop/load the drawing state. Location and angle are returned to
            previously pushed state.
        Nr   )r   rx   Úlenro   re   rm   rn   ry   s    r    re   zDrawing.pops  sP   € õ 	Ô" 4Ñ(Ô(Ð(ÝˆtŒ{ÑÔ˜aÒÐØ&*¤k§o¢oÑ&7Ô&7Ñ#ˆDŒJ˜œ˜˜ð  Ðr"   r+   r-   r/   r0   r2   r3   r4   úOptional[Linestyle]r5   r7   r8   r9   c                ó   — |�|| _         || j        d<   |�
|| j        d<   |�
|| j        d<   |�
|| j        d<   |�
|| j        d<   |�
|| j        d<   |�
|| j        d<   |�
|| j        d	<   |	�
|	| j        d
<   |
�
|
| j        d<   |�|| j        d<   dS dS )a   Set Drawing configuration, overriding schemdraw global config.

            Args:
                unit: Full length of a 2-terminal element. Inner zig-zag portion
                    of a resistor is 1.0 units.
                inches_per_unit: Inches per drawing unit for setting drawing scale
                fontsize: Default font size for text labels
                font: Default font family for text labels
                mathfont: Default font family or filename math text delimited by $..$
                color: Default color name or RGB (0-1) tuple
                lw: Default line width for elements
                ls: Default line style
                fill: Deault fill color for closed elements
                margin: White space around the drawing in drawing units
        Nr+   r-   r0   r/   r2   r3   r4   r5   r7   r8   r9   )r+   rj   )rr   r+   r-   r/   r0   r2   r3   r4   r5   r7   r8   r9   s               r    r=   zDrawing.config{  sÞ   € ð* ÐØˆDŒIØ%)ˆDŒN˜6Ñ"ØÐ&Ø0?ˆDŒNÐ,Ñ-ØÐØ%)ˆDŒN˜6Ñ"ØÐØ)1ˆDŒN˜:Ñ&ØÐØ&+ˆDŒN˜7Ñ#Øˆ>Ø#%ˆDŒN˜4Ñ Øˆ>Ø#%ˆDŒN˜4Ñ ØÐØ%)ˆDŒN˜6Ñ"ØÐØ(/ˆDŒN˜9Ñ%ØÐØ'-ˆDŒN˜8Ñ$ØÐØ)1ˆDŒN˜:Ñ&Ð&Ð&ð  Ðr"   c                óN   — | j         D ]}|                     | j        ¦  «         ŒdS )z# Draw all the elements on self.fig N)rc   rÍ   rq   rŸ   s     r    Ú_drawelementszDrawing._drawelements¨  s4   € à”}ð 	$ð 	$ˆGØ�MŠM˜$œ(Ñ#Ô#Ð#Ð#ð	$ð 	$r"   c           	     óœ  — | j         �|�‚t          || j                             d¦  «        | j        d         | j                             dd¦  «        ¬¦  «        | _         d| j        v r%| j                              | j        d         ¦  «         | j                              |                      ¦   «         ¦  «         |                      ¦   «          dS )z Draw on Matplotlib Axis Nr-   r8   r>   F)Úaxr-   r8   Úshowbboxr7   )rq   r   rj   rl   r7   rÎ   r¨   ré   )rr   rë   s     r    Ú_drawmplzDrawing._drawmpl­  s¾   € àŒ8Ð˜r˜~Ý  BØ15´×1CÒ1CÐDUÑ1VÔ1VØ(,¬°xÔ(@Ø*.¬.×*<Ò*<¸YÈÑ*NÔ*NðPñ Pô PˆDŒHð ˜DœNÐ*Ð*Ø”× Ò  ¤°	Ô!:Ñ;Ô;Ð;ØŒ×Ò˜$Ÿ-š-™/œ/Ñ*Ô*Ð*Ø×ÒÑÔÐÐÐr"   c           
     ó„  — | j         �|�tt          ||                      ¦   «         | j                             d¦  «        | j                             d¦  «        | j                             dd¦  «        ¬¦  «        | _         d| j        v r%| j                              | j        d         ¦  «         |                      ¦   «          dS )z Draw on SVG canvas Nr-   r8   r>   F)r   r¯   r-   r8   rì   r7   )rq   Ú	svgFigurer¨   rj   rl   r7   ré   )rr   r   s     r    Ú_drawsvgzDrawing._drawsvg¹  s³   € àŒ8Ð˜s˜Ý  S¨t¯}ª}©¬Ø15´×1CÒ1CÐDUÑ1VÔ1VØ(,¬×(:Ò(:¸8Ñ(DÔ(DØ*.¬.×*<Ò*<¸YÈÑ*NÔ*NðPñ Pô PˆDŒHð ˜œÐ&Ð&ØŒH×Ò˜Tœ^¨IÔ6Ñ7Ô7Ð7Ø×ÒÑÔÐÐÐr"   r   úOptional[Backends]c                ó  — |rt          j        dt          d¬¦  «         |}t          j        d¦  «         |€| j        }|€t          j        }d| _        |dk    r|                      ¦   «          nWt          |d¦  «        r|                      |¬¦  «         n0|dk    r|  
                    ¦   «          n|  
                    |¦  «         |r| j                             ¦   «          | j        � | j        | j        fi | j        ¤Ž | j        S )	at   Draw the schematic

            Args:
                show: Show the schematic in a GUI popup window (when
                    outside of a Jupyter inline environment)
                canvas: 'matplotlib', 'svg', or Axis instance to draw on
                backend (deprecated): 'matplotlib' or 'svg'

            Returns:
                schemdraw Figure object
        r\   r]   r^   Nr   r�   )rë   r   )rf   rg   rh   r   rx   rT   r   rq   rí   r‘   rð   rW   ra   r�   rb   )rr   rW   rT   r   s       r    r�   zDrawing.drawÄ  s  € ð ð 	ÝŒMÐIÝ,¸ð<ñ <ô <ð <àˆFåÔ" 4Ñ(Ô(Ð(àˆ>Ø”[ˆFØˆ>Ý#Ô2ˆFàˆŒØ�\Ò!Ð!Ø�MŠM‰OŒOˆOˆOÝ�V˜VÑ$Ô$ð 	"Ø�MŠM˜VˆMÑ$Ô$Ð$Ð$Ø�uŠ_ˆ_Ø�MŠM‰OŒOˆOˆOà�MŠM˜&Ñ!Ô!Ð!àð 	àŒH�MŠM‰OŒOˆOàŒ<Ð#ØˆDŒI�d”lÐ4Ð4 d¤mÐ4Ð4Ð4àŒxˆr"   Úfnamec                óz   — | j         €|                      d¬¦  «         | j                              |||¬¦  «         dS )a‘   Save figure to a file

            Args:
                fname: Filename to save. In Matplotlib backend, the file
                    type is automatically determined from extension
                    (png, svg, jpg). SVG backend only supports saving SVG format.
                transparent: Save as transparent background, if available
                dpi: Dots-per-inch for raster formats
        NFrŒ   r[   )rq   r�   r�   )rr   ró   rX   rY   s       r    r�   zDrawing.saveð  s@   € ð Œ8ÐØ�IŠI˜5ˆIÑ!Ô!Ð!ØŒ�Š�e¨¸#ˆÑ>Ô>Ð>Ð>Ð>r"   r   ÚfmtúImageFormat | ImageTypeÚbytesc                óÖ   — | j         dk    r'|                     ¦   «         dk    rt          d¦  «        ‚| j        €|                      d¬¦  «         | j                             |¬¦  «        S )zñ Get image data as bytes array

            Args:
                fmt: Format or file extension of the image type. SVG backend
                    only supports 'svg' format.

            Returns:
                Image data as bytes
        r   z$Format not available in SVG backend.NFrŒ   )Úext)rT   Úlowerr   rq   r�   rÀ   )rr   rõ   s     r    Úget_imagedatazDrawing.get_imagedataþ  sg   € ð Œ;˜%ÒÐ C§I¢I¡K¤K°5Ò$8Ð$8ÝÐCÑDÔDÐDØŒ8ÐØ�IŠI˜5ˆIÑ!Ô!Ð!ØŒx× Ò  SÐ Ñ)Ô)Ð)r"   )NNTFrS   )
rT   rU   rV   r6   rW   r?   rX   r?   rY   r,   )r�   r‚   r‚   )rƒ   r,   r„   r,   r…   r,   )r˜   r1   r   r   )T)r¢   r?   )r   r   )r   r°   )r    r   )r    r   r   r   )rc   r   r   r   )r   r   r`   )rÖ   r,   r×   r,   r   r   )r   r   N)
rÚ   r   rÖ   r,   r×   r,   r   rÛ   r   r   )r˜   r1   r   r   )NNNNNNNNNNN)r+   rÛ   r-   rÛ   r/   rÛ   r0   r6   r2   r6   r3   rÛ   r4   ræ   r5   r6   r7   r6   r8   rÛ   r9   r6   r   r   rv   )TNN)rW   r?   r   rñ   )TrS   )ró   r1   rX   r?   rY   r,   r   r   )r   )rõ   rö   r   r÷   )#Ú__name__Ú
__module__Ú__qualname__Ú__doc__rt   Úpropertyrz   Úsetterr   r‡   rŠ   r—   r�   r¡   r¢   r¨   r¾   rÂ   rÅ   rÉ   rÈ   rÐ   rÕ   rÙ   rß   rá   rã   re   r=   ré   rí   rð   r�   r�   rû   r³   r"   r    rR   rR   �   s  € € € € € ðð ð2 DHØ'+Ø"Ø%*Ø ð?ð ?ð ?ð ?ð ?ð< ðð ñ „Xðð 
„[ðð ñ „[ðð ðð ñ „Xðð „\ðð ñ „\ðð /1Ø36ðPð Pð Pð Pð Pð"ð ð ð ð  ð  ðCð Cð Cð Cð(ð (ð (ð(ð (ð (ð (ð (ð,ð ,ð ,ð ,ðð ð ð ð>ð >ð >ðð ð ðð ð ð ð
ð ð ð ð,ð ð ð ð
ð ð ð ðEð Eð Eð Eð Eð ð  ð  ð  ð  ð(ð (ð (ð (ð=ð =ð =ð =ð8ð 8ð 8ð 8ð W[ØGKØbfØDHØ)-Ø)-ð+2ð +2ð +2ð +2ð +2ðZ$ð $ð $ð

ð 
ð 
ð 
ð	ð 	ð 	ð 	ð !%Ø8<ð*ð *ð *ð *ð *ðX?ð ?ð ?ð ?ð ?ð*ð *ð *ð *ð *ð *ð *r"   rR   )r   )r   r   r   r   )r#   r$   r%   r&   r'   r(   r)   r*   NNr%   N)r+   r,   r-   r,   r.   r,   r/   r,   r0   r1   r2   r1   r3   r,   r4   r   r5   r6   r7   r6   r8   r,   r9   r6   r   r   )TT)r>   r?   r@   r?   )rC   )/rÿ   Ú
__future__r   Útypingr   r   r   r   r   Úcollectionsr	   rf   r¦   Ú r   Útypesr   r   r   r   r   r   rc   r   r   r½   r   Úutilr   Úbackends.svgr   rï   r   Úxml.etree.ElementTree.ElementÚxmlÚbackends.mplr   Úmatplotlib.pyplot.Axesr   ÚImportErrorr!   r=   rB   r<   Ú__annotations__rP   rR   r³   r"   r    ú<module>r     s]  ðØ Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ  Ð  Ð  Ð  Ð  Ð  Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð àð )Ø(Ð(Ð(Ð(ð*Ø1Ð1Ð1Ð1Ð1Ð1Ø$0€NÔ!Øð &Ø%Ð%Ð%Ð%øøØð *ð *ð *Ø€IØ$)€NÔ!Ð!Ð!ð*øøøð
,ð ,ð ,ð ,ð ,ð 8;Ø36Ø29Ø+.Ø@DØ:>ð#.ð #.ð #.ð #.ð #.ðL Øð(ð (ð (ð (ð (ð "$€Ð #Ð #Ð #Ñ #Ø €�„€ð33ð 33ð 33ð 33ðl*ð *ð *ð *ð *ñ *ô *ð *ð *ð *s   Á#A7 Á7BÂB