Ë
    ¨ehÅD  ã                   ó  — d dl Zd dlZd dlmZ d dlmZ d dlmZ	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZmZ d dlmZmZmZ  G d„ d	e«      Z G d
„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    N)Ú_api)ÚAxes©ÚCircle)ÚPath)Ú	FormatterÚNullLocatorÚFixedLocatorÚNullFormatter)ÚAffine2DÚBboxTransformToÚ	Transformc                   óä   ‡ — e Zd ZdZ G d„ de«      ZdZd„ Zˆ fd„Zd„ Z	d„ Z
dd	„Zd
„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ ZeZeZeZd„ ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$ˆ xZ%S )ÚGeoAxesz2An abstract base class for geographic projections.c                   ó    — e Zd ZdZdd„Zdd„Zy)úGeoAxes.ThetaFormatterz‹
        Used to format the theta tick labels.  Converts the native
        unit of radians into degrees and adds a degree symbol.
        c                 ó   — || _         y ©N)Ú	_round_to)ÚselfÚround_tos     úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/projections/geo.pyÚ__init__zGeoAxes.ThetaFormatter.__init__   s	   € Ø%ˆD�Nó    Nc                 ó~   — t        t        j                  |«      | j                  z  «      | j                  z  }|d›d�S )Nz0.0fõ   Â°)ÚroundÚnpÚrad2degr   )r   ÚxÚposÚdegreess       r   Ú__call__zGeoAxes.ThetaFormatter.__call__   s5   € ÜœBŸJ™J q›M¨D¯N©NÑ:Ó;¸d¿n¹nÑLˆGØ˜d�^ ?Ð3Ð3r   )ç      ð?r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   © r   r   ÚThetaFormatterr      s   „ ñ	ó	&ô	4r   r*   éK   c                 óÄ   — t        j                  | d¬«      | _        t        j                  | d¬«      | _        | j
                  d   j                  | j                  «       y )NF)ÚclearÚgeo)ÚmaxisÚXAxisÚxaxisÚYAxisÚyaxisÚspinesÚregister_axis©r   s    r   Ú
_init_axiszGeoAxes._init_axis    sA   € Ü—[‘[ ¨UÔ3ˆŒ
Ü—[‘[ ¨UÔ3ˆŒ
Ø�‰�EÑ×(Ñ(¨¯©Õ4r   c                 óØ  •— t         ‰| �  «        | j                  d«       | j                  d«       | j	                  d«       | j
                  j                  t        «       «       | j                  j                  t        «       «       | j
                  j                  d«       | j                  j                  d«       | j                  j                  d¬«       | j                  t        j                  d   «       t        j                  | t         j"                   t         j"                  «       t        j$                  | t         j"                   dz  t         j"                  dz  «       y )	Né   é   r+   ÚnoneT)Úlabel1Onz	axes.gridç       @)Úsuperr-   Úset_longitude_gridÚset_latitude_gridÚset_longitude_grid_endsr1   Úset_minor_locatorr	   r3   Úset_ticks_positionÚset_tick_paramsÚgridÚmplÚrcParamsr   Úset_xlimr   ÚpiÚset_ylim©r   Ú	__class__s    €r   r-   zGeoAxes.clear%   sê   ø€ ä‰‰Œà×Ñ Ô#Ø×Ñ˜rÔ"Ø×$Ñ$ RÔ(Ø�
‰
×$Ñ$¤[£]Ô3Ø�
‰
×$Ñ$¤[£]Ô3Ø�
‰
×%Ñ% fÔ-Ø�
‰
×%Ñ% fÔ-Ø�
‰
×"Ñ"¨DÐ"Ô1ð 	�	‰	”#—,‘,˜{Ñ+Ô,ä�‰�dœRŸU™U˜F¤B§E¡EÔ*Ü�‰�dœRŸU™U˜F S™L¬"¯%©%°#©+Õ6r   c                 ó®  — | j                  | j                  «      | _        | j                  «       | _        t        | j                  «      | _        | j                  | j                  z   | j                  z   | _        t        «       j                  d| j                  dz  «      j                  d| j                   «      | _        | j                  | j                  z   | _        t        «       j                  dd«      | j                  z   t        «       j                  dd«      z   | _        t        «       j                  dd«      | j                  z   t        «       j                  dd«      z   | _        t        «       j                  t"        j$                  dz  d«      j                  t"        j$                   d«      }t        «       j                  dd«      }|| j                  z   | _        || j                  z   || j                  z   | j                  z   z   }|t        «       j                  dd«      z   | _        |t        «       j                  dd«      z   | _        y )	Né   é   r   é   éüÿÿÿgš™™™™™ñ?iøÿÿÿé   )Ú_get_core_transformÚ
RESOLUTIONÚtransProjectionÚ_get_affine_transformÚtransAffiner   ÚbboxÚ	transAxesÚ	transDatar   ÚscaleÚ_longitude_capÚ	translateÚ_xaxis_pretransformÚ_xaxis_transformÚ_xaxis_text1_transformÚ_xaxis_text2_transformr   rI   Ú_yaxis_transformÚ_yaxis_text1_transformÚ_yaxis_text2_transform)r   Úyaxis_stretchÚyaxis_spaceÚyaxis_text_bases       r   Ú_set_lim_and_transformszGeoAxes._set_lim_and_transforms9   s  € à#×7Ñ7¸¿¹ÓHˆÔà×5Ñ5Ó7ˆÔä(¨¯©Ó3ˆŒð
 × Ñ Ø×Ññà�N‰Nñð 	Œô ‹Jß‰U�1�d×)Ñ)¨AÑ-Ó.ß‰Y�q˜4×.Ñ.Ð.Ó/ð 	Ô ð
 ×$Ñ$Ø�N‰Nñð 	Ôô ‹J×Ñ˜Q Ó"Ø�N‰Nñä‹J× Ñ   AÓ&ñ'ð 	Ô#ô
 ‹J×Ñ˜Q Ó"Ø�N‰Nñä‹J× Ñ   BÓ'ñ(ð 	Ô#ô !›
×(Ñ(¬¯©°©°AÓ6×@Ñ@Ä"Ç%Á%ÀÈÓKˆÜ“j×&Ñ& q¨#Ó.ˆàØ�N‰Nñð 	Ôð Ø× Ñ ñ!àØ×Ññà�^‰^ññð 	ð Ü‹J× Ñ   QÓ'ñ(ð 	Ô#ð Ü‹J× Ñ   AÓ&ñ'ð 	Õ#r   c                 ó  — | j                  d«      }|j                  t        j                  df«      \  }}|j                  dt        j                  dz  f«      \  }}t	        «       j                  d|z  d|z  «      j                  dd«      S )NrN   r   rO   ç      à?)rS   Ú	transformr   rI   r   r[   r]   )r   rk   ÚxscaleÚ_Úyscales        r   rV   zGeoAxes._get_affine_transforml   sx   € Ø×,Ñ,¨QÓ/ˆ	Ø×'Ñ'¬¯©°¨
Ó3‰	ˆ�Ø×'Ñ'¨¬B¯E©E°!©G¨Ó5‰	ˆˆ6Ü‹zß‰U�3˜‘<  v¡Ó.ß‰Y�s˜CÓ ð	!r   c                 óL   — t        j                  g d¢|¬«       | j                  S ©N)Útick1Útick2rE   )Úwhich)r   Úcheck_in_listr_   ©r   rs   s     r   Úget_xaxis_transformzGeoAxes.get_xaxis_transformt   ó   € Ü×ÑÒ5¸UÕCØ×$Ñ$Ð$r   c                 ó    — | j                   ddfS )NÚbottomÚcenter)r`   ©r   Úpads     r   Úget_xaxis_text1_transformz!GeoAxes.get_xaxis_text1_transformx   s   € Ø×*Ñ*¨H°hÐ>Ð>r   c                 ó    — | j                   ddfS )NÚtoprz   )ra   r{   s     r   Úget_xaxis_text2_transformz!GeoAxes.get_xaxis_text2_transform{   s   € Ø×*Ñ*¨E°8Ð;Ð;r   c                 óL   — t        j                  g d¢|¬«       | j                  S rp   )r   rt   rb   ru   s     r   Úget_yaxis_transformzGeoAxes.get_yaxis_transform~   rw   r   c                 ó    — | j                   ddfS )Nrz   Úright)rc   r{   s     r   Úget_yaxis_text1_transformz!GeoAxes.get_yaxis_text1_transform‚   s   € Ø×*Ñ*¨H°gÐ=Ð=r   c                 ó    — | j                   ddfS )Nrz   Úleft)rd   r{   s     r   Úget_yaxis_text2_transformz!GeoAxes.get_yaxis_text2_transform…   s   € Ø×*Ñ*¨H°fÐ<Ð<r   c                 ó   — t        dd«      S )N©rj   rj   rj   r   r6   s    r   Ú_gen_axes_patchzGeoAxes._gen_axes_patchˆ   s   € Ü�j #Ó&Ð&r   c                 óH   — dt         j                  j                  | dd«      iS )Nr.   rŠ   rj   )ÚmspinesÚSpineÚcircular_spiner6   s    r   Ú_gen_axes_spineszGeoAxes._gen_axes_spines‹   s    € Ø”w—}‘}×3Ñ3°D¸*ÀcÓJÐKÐKr   c                 ó    — |d   dk7  rt         ‚y )Nr   Úlinear)ÚNotImplementedError©r   ÚargsÚkwargss      r   Ú
set_yscalezGeoAxes.set_yscaleŽ   s   € Ø�‰7�hÒÜ%Ð%ð r   c                 ó   — t        d«      ‚©z-Not supported. Please consider using Cartopy.zaChanging axes limits of a geographic projection is not supported.  Please consider using Cartopy.©Ú	TypeErrorr”   s      r   rH   zGeoAxes.set_xlim”   ó   € äð Ió Jð 	Jr   c                 ó   — t        d«      ‚r™   rš   r6   s    r   Úinvert_xaxiszGeoAxes.invert_xaxis�   rœ   r   c                 ó�   — t        j                  ||g«      \  }}|dk\  rdnd}|dk\  rdnd}dt        |«      |t        |«      |fz  S )z1Return a format string formatting the coordinate.ç        ÚNÚSÚEÚWu   %fÂ°%s, %fÂ°%s)r   r   Úabs)r   ÚlonÚlatÚnsÚews        r   Úformat_coordzGeoAxes.format_coord¤   sS   € ä—:‘:˜s C˜jÓ)‰ˆˆSØ˜3’J‰S CˆØ˜3’J‰S CˆØ:Ü�s“8˜R¤ S£¨2Ð.ñ/ð 	0r   c                 óú   — t        j                  d|z   d|«      }| j                  j                  t	        t        j
                  |«      «      «       | j                  j                  | j                  |«      «       y)zH
        Set the number of degrees between each longitude grid.
        iLÿÿÿé´   N)r   Úaranger1   Úset_major_locatorr
   Údeg2radÚset_major_formatterr*   ©r   r"   rE   s      r   r?   zGeoAxes.set_longitude_grid¬   sW   € ô
 �y‰y˜ ™¨¨gÓ6ˆØ�
‰
×$Ñ$¤\´"·*±*¸TÓ2BÓ%CÔDØ�
‰
×&Ñ& t×':Ñ':¸7Ó'CÕDr   c                 óú   — t        j                  d|z   d|«      }| j                  j                  t	        t        j
                  |«      «      «       | j                  j                  | j                  |«      «       y)zG
        Set the number of degrees between each latitude grid.
        i¦ÿÿÿéZ   N)r   r­   r3   r®   r
   r¯   r°   r*   r±   s      r   r@   zGeoAxes.set_latitude_gridµ   sW   € ô
 �y‰y˜˜w™¨¨GÓ4ˆØ�
‰
×$Ñ$¤\´"·*±*¸TÓ2BÓ%CÔDØ�
‰
×&Ñ& t×':Ñ':¸7Ó'CÕDr   c                 óÜ   — t        j                  |«      | _        | j                  j	                  «       j                  d| j                  dz  «      j                  d| j                   «       y)zS
        Set the latitude(s) at which to stop drawing the longitude grids.
        r$   r=   r    N)r   r¯   r\   r^   r-   r[   r]   )r   r"   s     r   rA   zGeoAxes.set_longitude_grid_ends¾   sQ   € ô !Ÿj™j¨Ó1ˆÔØ× Ñ ß‰U‹Wß‰U�3˜×+Ñ+¨cÑ1Ó2ß‰Y�s˜T×0Ñ0Ð0Õ1r   c                  ó   — y)z+Return the aspect ratio of the data itself.r$   r)   r6   s    r   Úget_data_ratiozGeoAxes.get_data_ratioÈ   s   € àr   c                  ó   — y)z—
        Return whether this Axes supports the zoom box button functionality.

        This Axes object does not support interactive zoom box.
        Fr)   r6   s    r   Úcan_zoomzGeoAxes.can_zoomÎ   ó   € ð r   c                  ó   — y)z—
        Return whether this Axes supports the pan/zoom button functionality.

        This Axes object does not support interactive pan/zoom.
        Fr)   r6   s    r   Úcan_panzGeoAxes.can_panÖ   r¹   r   c                  ó   — y r   r)   )r   r    ÚyÚbuttons       r   Ú	start_panzGeoAxes.start_panÞ   ó   € Ør   c                  ó   — y r   r)   r6   s    r   Úend_panzGeoAxes.end_paná   rÀ   r   c                  ó   — y r   r)   )r   r¾   Úkeyr    r½   s        r   Údrag_panzGeoAxes.drag_panä   rÀ   r   )rE   )&r%   r&   r'   r(   r   r*   rT   r7   r-   rh   rV   rv   r}   r€   r‚   r…   rˆ   r‹   r�   r—   Ú
set_xscalerH   rJ   Ú
set_xboundÚ
set_yboundrž   Úinvert_yaxisrª   r?   r@   rA   r¶   r¸   r»   r¿   rÂ   rÅ   Ú__classcell__©rL   s   @r   r   r      s»   ø„ Ù<ô
4˜ô 
4ð €Jò5ô
7ò(1'òf!ó%ò?ò<ó%ò>ò=ò'òLò&ð €JòJð
 €HØ€JØ€JòJð
  €Lò0òEòEò2òòòòòör   r   c                   ó2   ‡ — e Zd ZdxZZˆ fd„Zd„ Zd„ Zˆ xZS )Ú_GeoTransformrO   c                 ó0   •— t         ‰| �  «        || _        y)zÁ
        Create a new geographical transform.

        Resolution is the number of steps to interpolate between each input
        line segment to approximate its path in curved space.
        N)r>   r   Ú_resolution)r   Ú
resolutionrL   s     €r   r   z_GeoTransform.__init__ì   s   ø€ ô 	‰ÑÔØ%ˆÕr   c                 óL   — t        | «      j                  › d| j                  › d�S )Nú(ú))Útyper%   rÏ   r6   s    r   Ú__str__z_GeoTransform.__str__ö   s'   € Ü�t“*×%Ñ%Ð& a¨×(8Ñ(8Ð'9¸Ð;Ð;r   c                 ó–   — |j                  | j                  «      }t        | j                  |j                  «      |j
                  «      S r   )ÚinterpolatedrÏ   r   rk   ÚverticesÚcodes)r   ÚpathÚipaths      r   Útransform_path_non_affinez'_GeoTransform.transform_path_non_affineù   s6   € à×!Ñ! $×"2Ñ"2Ó3ˆÜ�D—N‘N 5§>¡>Ó2°E·K±KÓ@Ð@r   )	r%   r&   r'   Ú
input_dimsÚoutput_dimsr   rÕ   rÜ   rÊ   rË   s   @r   rÍ   rÍ   è   s   ø„ à Ð €J�ô&ò<öAr   rÍ   c                   óT   ‡ — e Zd ZdZ G d„ de«      Z G d„ de«      Zˆ fd„Zd„ Zˆ xZ	S )Ú
AitoffAxesÚaitoffc                   ó   — e Zd ZdZd„ Zd„ Zy)úAitoffAxes.AitoffTransformzThe base Aitoff transform.c                 óŠ  — |j                   \  }}|dz  }t        j                  |«      }t        j                  |t        j                  |«      z  «      }t        j                  |t        j
                  z  «      }|t        j                  |«      z  |z  }t        j                  |«      |z  }	t        j                  ||	g«      S )Nr=   )ÚTr   ÚcosÚarccosÚsincrI   ÚsinÚcolumn_stack)
r   ÚvaluesÚ	longitudeÚlatitudeÚ	half_longÚcos_latitudeÚalphaÚ
sinc_alphar    r½   s
             r   Útransform_non_affinez/AitoffAxes.AitoffTransform.transform_non_affine  s™   € à"(§(¡(ÑˆI�xð " C™ˆIÜŸ6™6 (Ó+ˆLä—I‘I˜l¬R¯V©V°IÓ->Ñ>Ó?ˆEÜŸ™ ¬¯©¡Ó/ˆJà¤§¡ yÓ 1Ñ1°ZÑ?ˆAÜ—‘�xÓ  :Ñ-ˆAÜ—?‘? A q 6Ó*Ð*r   c                 ó@   — t         j                  | j                  «      S r   )rà   ÚInvertedAitoffTransformrÏ   r6   s    r   Úinvertedz#AitoffAxes.AitoffTransform.inverted  ó   € ä×5Ñ5°d×6FÑ6FÓGÐGr   N©r%   r&   r'   r(   rò   rõ   r)   r   r   ÚAitoffTransformrã     s   „ Ù(ò	+ó	Hr   rø   c                   ó   — e Zd Zd„ Zd„ Zy)ú"AitoffAxes.InvertedAitoffTransformc                 óJ   — t        j                  |t         j                  «      S r   )r   Ú	full_likeÚnan)r   rë   s     r   rò   z7AitoffAxes.InvertedAitoffTransform.transform_non_affine  s   € ô —<‘< ¬¯©Ó/Ð/r   c                 ó@   — t         j                  | j                  «      S r   )rà   rø   rÏ   r6   s    r   rõ   z+AitoffAxes.InvertedAitoffTransform.inverted  ó   € ä×-Ñ-¨d×.>Ñ.>Ó?Ð?r   N©r%   r&   r'   rò   rõ   r)   r   r   rô   rú     s   „ ò	0ó
	@r   rô   c                 óœ   •— t         j                  dz  | _        t        ‰| �  |i |¤Ž | j                  ddd¬«       | j                  «        y ©Nr=   rj   ÚboxÚC©Ú
adjustableÚanchor©r   rI   r\   r>   r   Ú
set_aspectr-   ©r   r•   r–   rL   s      €r   r   zAitoffAxes.__init__#  ó@   ø€ Ü Ÿe™e c™kˆÔÜ‰Ñ˜$Ð) &Ò)Ø�‰˜¨°cˆÔ:Ø�
‰
�r   c                 ó$   — | j                  |«      S r   )rø   ©r   rÐ   s     r   rS   zAitoffAxes._get_core_transform)  ó   € Ø×#Ñ# JÓ/Ð/r   )
r%   r&   r'   ÚnamerÍ   rø   rô   r   rS   rÊ   rË   s   @r   rà   rà   ÿ   s.   ø„ Ø€DôH˜-ô Hô,	@ -ô 	@ôö0r   rà   c                   óT   ‡ — e Zd ZdZ G d„ de«      Z G d„ de«      Zˆ fd„Zd„ Zˆ xZ	S )Ú
HammerAxesÚhammerc                   ó   — e Zd ZdZd„ Zd„ Zy)úHammerAxes.HammerTransformzThe base Hammer transform.c                 ó€  — |j                   \  }}|dz  }t        j                  |«      }t        j                  d«      }t        j                  d|t        j                  |«      z  z   «      }d|z  |t        j                  |«      z  z  |z  }|t        j                  |«      z  |z  }	t        j
                  ||	g«      S )Nr=   r$   )rå   r   ræ   Úsqrtré   rê   )
r   rë   rì   rí   rî   rï   Úsqrt2rð   r    r½   s
             r   rò   z/HammerAxes.HammerTransform.transform_non_affine3  s¡   € à"(§(¡(ÑˆI�xØ! C™ˆIÜŸ6™6 (Ó+ˆLÜ—G‘G˜C“LˆEÜ—G‘G˜C ,´·±¸	Ó1BÑ"BÑBÓCˆEØ�u‘ ´·±°yÓ0AÑ!AÑBÀUÑJˆAØœŸ™ Ó)Ñ)¨UÑ2ˆAÜ—?‘? A q 6Ó*Ð*r   c                 ó@   — t         j                  | j                  «      S r   )r  ÚInvertedHammerTransformrÏ   r6   s    r   rõ   z#HammerAxes.HammerTransform.inverted>  rö   r   Nr÷   r)   r   r   ÚHammerTransformr  0  s   „ Ù(ò		+ó	Hr   r  c                   ó   — e Zd Zd„ Zd„ Zy)ú"HammerAxes.InvertedHammerTransformc                 ó   — |j                   \  }}t        j                  d|dz  dz  z
  |dz  dz  z
  «      }dt        j                  ||z  dd|dz  z  dz
  z  z  «      z  }t        j                  ||z  «      }t        j
                  ||g«      S )NrN   rP   rO   )rå   r   r  ÚarctanÚarcsinrê   )r   rë   r    r½   Úzrì   rí   s          r   rò   z7HammerAxes.InvertedHammerTransform.transform_non_affineD  s‰   € à—8‘8‰DˆAˆqÜ—‘˜˜Q ™U q™LÑ(¨A°©E°a©<Ñ7Ó8ˆAØœBŸI™I q¨1¡u°°a¸!¸q¹&±jÀ1±nÑ1EÑ&FÓGÑGˆIÜ—y‘y  1¡“~ˆHÜ—?‘? I¨xÐ#8Ó9Ð9r   c                 ó@   — t         j                  | j                  «      S r   )r  r  rÏ   r6   s    r   rõ   z+HammerAxes.InvertedHammerTransform.invertedL  rÿ   r   Nr   r)   r   r   r  r  B  s   „ ò	:ó	@r   r  c                 óœ   •— t         j                  dz  | _        t        ‰| �  |i |¤Ž | j                  ddd¬«       | j                  «        y r  r  r
  s      €r   r   zHammerAxes.__init__P  r  r   c                 ó$   — | j                  |«      S r   )r  r  s     r   rS   zHammerAxes._get_core_transformV  r  r   )
r%   r&   r'   r  rÍ   r  r  r   rS   rÊ   rË   s   @r   r  r  -  s.   ø„ Ø€DôH˜-ô Hô$@ -ô @ôö0r   r  c                   óT   ‡ — e Zd ZdZ G d„ de«      Z G d„ de«      Zˆ fd„Zd„ Zˆ xZ	S )ÚMollweideAxesÚ	mollweidec                   ó   — e Zd ZdZd„ Zd„ Zy)ú MollweideAxes.MollweideTransformzThe base Mollweide transform.c                 ó  ‡— ˆfd„}|j                   \  }}t        j                  dz  t        j                  |«      z
  }|dk  }| }t        j                  |j
                  t        ¬«      }|j                  «       rŠt        j                  t        j                  ||   «      z  Šd||   z  }	 ||	«      \  }
}t        j                  |«      r1|	|xx   |
|   z  cc<    ||	«      \  }
}t        j                  |«      rŒ1|	dz  ||<   |j                  «       rV||   }ddt        j                  z  |dz  z  dz  z  }t        j                  dz  |z
  t        j                  ||   «      z  ||<   t        j                  |j
                  t        ¬«      }dt        j                  d«      z  t        j                  z  |z  t        j                  |«      z  |d d …d	f<   t        j                  d«      t        j                  |«      z  |d d …d
f<   |S )Nc                 ó¢   •— | t        j                  | «      z   ‰z
   dt        j                  | «      z   z  }|t        j                  |«      dkD  fS )NrN   gü©ñÒMbP?)r   ré   ræ   r¥   )ÚthetaÚdeltaÚpi_sin_ls     €r   Údz@MollweideAxes.MollweideTransform.transform_non_affine.<locals>.db  sJ   ø€ Ø ¤2§6¡6¨%£=Ñ0°8Ñ;Ð<Ø¤§¡ u£Ñ-ñ/�àœbŸf™f U›m¨eÑ3Ð3Ð3r   rO   gƒÀÊ¡E¶?)Údtyper=   rj   é   gUUUUUUÕ?r   rN   )rå   r   rI   r¥   ÚemptyÚshapeÚfloatÚanyré   Úsignr  ræ   )r   rë   r.  rì   rí   ÚclatÚihighÚilowÚauxr+  r,  Úlarge_deltaÚeÚxyr-  s                 @r   rò   z5MollweideAxes.MollweideTransform.transform_non_affine`  s¬  ø€ ô4ð
 #)§(¡(ÑˆI�xä—5‘5˜‘7œRŸV™V HÓ-Ñ-ˆDØ˜5‘LˆEØ�6ˆDÜ—(‘(˜8Ÿ>™>´Ô7ˆCà�x‰xŒzÜŸ5™5¤2§6¡6¨(°4©.Ó#9Ñ9�Ø˜h t™nÑ,�Ù%& u£XÑ"��{Ü—f‘f˜[Ô)Ø˜+Ó&¨%°Ñ*<Ñ<Ó&Ù)*¨5«Ñ&�E˜;ô —f‘f˜[Õ)ð " A™I��D‘	à�y‰yŒ{Ø˜‘K�Ø˜1œrŸu™u™9 q¨!¡tÑ+°Ñ7Ñ7�Ü Ÿe™e A™g¨™k¬R¯W©W°X¸e±_Ó-EÑE��E‘
ä—‘˜&Ÿ,™,¬eÔ4ˆBØœbŸg™g c›lÑ*¬R¯U©UÑ2°iÑ?Ä"Ç&Á&ÈÃ+ÑMˆBŠq�!ˆt‰HÜ—w‘w˜s“|¤b§f¡f¨S£kÑ1ˆBŠq�!ˆt‰HàˆIr   c                 ó@   — t         j                  | j                  «      S r   )r%  ÚInvertedMollweideTransformrÏ   r6   s    r   rõ   z)MollweideAxes.MollweideTransform.inverted‚  s   € ä ×;Ñ;¸D×<LÑ<LÓMÐMr   Nr÷   r)   r   r   ÚMollweideTransformr(  ]  s   „ Ù+ò 	óD	Nr   r?  c                   ó   — e Zd Zd„ Zd„ Zy)ú(MollweideAxes.InvertedMollweideTransformc                 ó¬  — |j                   \  }}t        j                  |t        j                  d«      z  «      }t        j                  dt        j                  d«      z  z  |z  t        j
                  |«      z  }t        j                  d|z  t        j                  d|z  «      z   t        j                  z  «      }t        j                  ||g«      S )NrO   )rå   r   r  r  rI   ræ   ré   rê   )r   rë   r    r½   r+  rì   rí   s          r   rò   z=MollweideAxes.InvertedMollweideTransform.transform_non_affineˆ  s˜   € à—8‘8‰DˆAˆqô —I‘I˜a¤"§'¡'¨!£*™nÓ-ˆEÜŸ™ !¤b§g¡g¨a£j¡.Ñ1°QÑ6¼¿¹À»ÑFˆIÜ—y‘y ! e¡)¬b¯f©f°Q¸±YÓ.?Ñ"?Ä2Ç5Á5Ñ!HÓIˆHÜ—?‘? I¨xÐ#8Ó9Ð9r   c                 ó@   — t         j                  | j                  «      S r   )r%  r?  rÏ   r6   s    r   rõ   z1MollweideAxes.InvertedMollweideTransform.inverted’  s   € ä ×3Ñ3°D×4DÑ4DÓEÐEr   Nr   r)   r   r   r>  rA  †  s   „ ò	:ó	Fr   r>  c                 óœ   •— t         j                  dz  | _        t        ‰| �  |i |¤Ž | j                  ddd¬«       | j                  «        y r  r  r
  s      €r   r   zMollweideAxes.__init__–  r  r   c                 ó$   — | j                  |«      S r   )r?  r  s     r   rS   z!MollweideAxes._get_core_transformœ  s   € Ø×&Ñ& zÓ2Ð2r   )
r%   r&   r'   r  rÍ   r?  r>  r   rS   rÊ   rË   s   @r   r%  r%  Z  s/   ø„ Ø€Dô'N˜]ô 'NôRF ]ô Fô ö3r   r%  c                   ól   ‡ — e Zd ZdZ G d„ de«      Z G d„ de«      Zdddœˆ fd„
Zˆ fd	„Zd
„ Z	d„ Z
ˆ xZS )ÚLambertAxesÚlambertc                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)úLambertAxes.LambertTransformzThe base Lambert transform.c                 óL   — t         j                  | |«       || _        || _        y)zÔ
            Create a new Lambert transform.  Resolution is the number of steps
            to interpolate between each input line segment to approximate its
            path in curved Lambert space.
            N©rÍ   r   Ú_center_longitudeÚ_center_latitude©r   Úcenter_longitudeÚcenter_latituderÐ   s       r   r   z%LambertAxes.LambertTransform.__init__¦  s$   € ô ×"Ñ" 4¨Ô4Ø%5ˆDÔ"Ø$3ˆDÕ!r   c                 óp  — |j                   \  }}| j                  }| j                  }t        j                  |«      }t        j
                  |«      }||z
  }t        j                  |«      }	t        j                  dt        j
                  |«      |z  z   t        j                  |«      |z  |	z  z   d«      }
t        j                  d|
z  «      }||z  t        j
                  |«      z  }|t        j                  |«      |z  t        j
                  |«      |z  |	z  z
  z  }t        j                  ||g«      S )NrN   gVçž¯Ò<rO   )	rå   rM  rN  r   ræ   ré   Úmaximumr  rê   )r   rë   rì   rí   Úclongr6  Úcos_latÚsin_latÚ	diff_longÚcos_diff_longÚinner_kÚkr    r½   s                 r   rò   z1LambertAxes.LambertTransform.transform_non_affine°  s  € à"(§(¡(ÑˆI�xØ×*Ñ*ˆEØ×(Ñ(ˆDÜ—f‘f˜XÓ&ˆGÜ—f‘f˜XÓ&ˆGØ! EÑ)ˆIÜŸF™F 9Ó-ˆMä—j‘jØ”B—F‘F˜4“L Ñ(Ñ(¬2¯6©6°$«<¸Ñ+?ÀÑ+MÑMØóˆGô —‘˜˜G™Ó$ˆAØ�G‘œBŸF™F 9Ó-Ñ-ˆAØ”R—V‘V˜D“\ 'Ñ)¬B¯F©F°4«L¸Ñ,@ÀÑ,NÑNÑOˆAä—?‘? A q 6Ó*Ð*r   c                 ól   — t         j                  | j                  | j                  | j                  «      S r   )rG  ÚInvertedLambertTransformrM  rN  rÏ   r6   s    r   rõ   z%LambertAxes.LambertTransform.invertedÃ  s0   € ä×7Ñ7Ø×&Ñ&Ø×%Ñ%Ø× Ñ ó"ð "r   N)r%   r&   r'   r(   r   rò   rõ   r)   r   r   ÚLambertTransformrJ  £  s   „ Ù)ò	4ò	+ó&	"r   r]  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ú$LambertAxes.InvertedLambertTransformc                 óL   — t         j                  | |«       || _        || _        y r   rL  rO  s       r   r   z-LambertAxes.InvertedLambertTransform.__init__Ì  s"   € Ü×"Ñ" 4¨Ô4Ø%5ˆDÔ"Ø$3ˆDÕ!r   c           	      ó–  — |j                   \  }}| j                  }| j                  }t        j                  t        j
                  ||«      d«      }dt        j                  d|z  «      z  }t        j                  |«      }t        j                  |«      }	t        j                  |	t        j                  |«      z  ||z  t        j                  |«      z  |z  z   «      }
|t        j                  ||z  |t        j                  |«      z  |	z  |t        j                  |«      z  |z  z
  z  «      z   }t        j                  ||
g«      S )Ng•Ö&è.>rO   rj   )rå   rM  rN  r   rS  Úhypotr  ré   ræ   r  rê   )r   rë   r    r½   rT  r6  ÚpÚcÚsin_cÚcos_crí   rì   s               r   rò   z9LambertAxes.InvertedLambertTransform.transform_non_affineÑ  s  € à—8‘8‰DˆAˆqØ×*Ñ*ˆEØ×(Ñ(ˆDÜ—
‘
œ2Ÿ8™8 A q›>¨4Ó0ˆAØ”B—I‘I˜c A™gÓ&Ñ&ˆAÜ—F‘F˜1“IˆEÜ—F‘F˜1“IˆEä—y‘y ¤r§v¡v¨d£|Ñ!3Ø#$ U¡7¬2¯6©6°$«<Ñ#7¸1Ñ"<ñ">ó ?ˆHà¤§	¡	Ø�5‘˜QœrŸv™v d›|™^¨EÑ1°A´b·f±f¸T³l±NÀ5Ñ4HÑHÑIó!Kñ KˆIô —?‘? I¨xÐ#8Ó9Ð9r   c                 ól   — t         j                  | j                  | j                  | j                  «      S r   )rG  r]  rM  rN  rÏ   r6   s    r   rõ   z-LambertAxes.InvertedLambertTransform.invertedâ  s0   € ä×/Ñ/Ø×&Ñ&Ø×%Ñ%Ø× Ñ ó"ð "r   N)r%   r&   r'   r   rò   rõ   r)   r   r   r\  r_  Ê  s   „ ò	4ò
	:ó"	"r   r\  r   )rP  rQ  c                ó¸   •— t         j                  dz  | _        || _        || _        t        ‰| �  |i |¤Ž | j                  ddd¬«       | j                  «        y )NrO   Úequalr  r  r  )	r   rI   r\   rM  rN  r>   r   r	  r-   )r   rP  rQ  r•   r–   rL   s        €r   r   zLambertAxes.__init__é  sP   ø€ Ü Ÿe™e a™iˆÔØ!1ˆÔØ /ˆÔÜ‰Ñ˜$Ð) &Ò)Ø�‰˜¨E¸#ˆÔ>Ø�
‰
�r   c                 óh   •— t         ‰| �  «        | j                  j                  t	        «       «       y r   )r>   r-   r3   r°   r   rK   s    €r   r-   zLambertAxes.clearñ  s    ø€ ä‰‰ŒØ�
‰
×&Ñ&¤}£Õ7r   c                 óP   — | j                  | j                  | j                  |«      S r   )r]  rM  rN  r  s     r   rS   zLambertAxes._get_core_transformö  s*   € Ø×$Ñ$Ø×"Ñ"Ø×!Ñ!Øóð 	r   c                 óT   — t        «       j                  d«      j                  dd«      S )Ng      Ð?rj   )r   r[   r]   r6   s    r   rV   z!LambertAxes._get_affine_transformü  s!   € Ü‹zß‰U�4‹[ß‰Y�s˜CÓ ð	!r   )r%   r&   r'   r  rÍ   r]  r\  r   r-   rS   rV   rÊ   rË   s   @r   rG  rG     s<   ø„ Ø€Dô%"˜=ô %"ôN" =ô "ð> 01À!ö ô8ò
ö!r   rG  ) Únumpyr   Ú
matplotlibrF   r   Úmatplotlib.axesr   Úmatplotlib.axisÚaxisr/   Úmatplotlib.patchesr   Úmatplotlib.pathr   Úmatplotlib.spinesr4   r�   Úmatplotlib.tickerr   r	   r
   r   Úmatplotlib.transformsr   r   r   r   rÍ   rà   r  r%  rG  r)   r   r   ú<module>rw     s�   ðÛ ã Ý Ý  Ý Ý %Ý  Ý #÷9ó 9ç FÑ FôVˆdô VôrA�Iô Aô.+0�ô +0ô\*0�ô *0ôZC3�Gô C3ôL_!�'õ _!r   