+
     ]iD  c                   s   ^ RI t^ RIt^ RIHt ^ RIHt ^ RIHt	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RIHtHtHt  ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )    N)_api)AxesCircle)Path)	FormatterNullLocatorFixedLocatorNullFormatter)Affine2DBboxTransformTo	Transformc                   s   a a ] tR t^t oRt ! R R]4      t^KtR tV 3R lt	R t
R tRR ltR	 tR
 tRR ltR tR tR tR tR t]tR t]t]t]tR t]tR tR tR tR tR t R t!R t"R t#R t$R t%Rt&Vt'V ;t(# )GeoAxesz2An abstract base class for geographic projections.c                   s8   a  ] tR t^t o RtRR ltRR ltRtV tR# )GeoAxes.ThetaFormatterzs
Used to format the theta tick labels.  Converts the native
unit of radians into degrees and adds a degree symbol.
c                s    Wn         R # N	_round_to)selfZround_to   &&A/usr/lib64/python3.14/site-packages/matplotlib/projections/geo.py__init__ZGeoAxes.ThetaFormatter.__init__   s    %N    Nc                s    \        \        P                  ! V4      V P                  ,          4      V P                  ,          pVR  R2# )z0.0ft   °)Zroundnprad2degr   )r   xZposdegreess   &&& r   __call__ZGeoAxes.ThetaFormatter.__call__   s5    BJJqMDNN:;dnnLGd^?33r   r   )      ?r   )	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classdictcell____classdict__   @r   ThetaFormatterr      s     		&	4 	4r   r'   c                s    \         P                  ! V R R7      V n        \         P                  ! V R R7      V n        V P
                  R,          P                  V P                  4       R# )F)cleargeoN)maxisZXAxisxaxisZYAxisyaxisspinesZregister_axisr      &r   
_init_axisZGeoAxes._init_axis    sA    [[U3
[[U3
E((4r   c                s  < \         SV `  4        V P                  ^4       V P                  ^4       V P	                  ^K4       V P
                  P                  \        4       4       V P                  P                  \        4       4       V P
                  P                  R4       V P                  P                  R4       V P                  P                  RR7       V P                  \        P                  R,          4       \        P                  ! V \         P"                  ) \         P"                  4       \        P$                  ! V \         P"                  ) R,          \         P"                  R,          4       R# )i   ZnoneT)Zlabel1Onz	axes.grid       @N)superr(   set_longitude_gridset_latitude_gridset_longitude_grid_endsr+   Zset_minor_locatorr   r,   Zset_ticks_positionZset_tick_paramsgridmplZrcParamsr   set_xlimr   piset_ylimr   	__class__   &r   r(   ZGeoAxes.clear%   s    #r"$$R(

$$[]3

$$[]3

%%f-

%%f-

""D"1 			#,,{+,dRUUFBEE*dRUUFSL"%%#+6r   c                s0   V P                  V P                  4      V n        V P                  4       V n        \        V P                  4      V n        V P                  V P                  ,           V P                  ,           V n        \        4       P                  ^V P                  ^,          4      P                  ^ V P                  ) 4      V n        V P                  V P                  ,           V n        \        4       P                  ^^ 4      V P                  ,           \        4       P                  ^ ^4      ,           V n        \        4       P                  ^^ 4      V P                  ,           \        4       P                  ^ R4      ,           V n        \        4       P                  \"        P$                  ^,          ^4      P                  \"        P$                  ) ^ 4      p\        4       P                  ^R4      pVV P                  ,           V n        VV P                  ,           VV P                  ,           V P                  ,           ,           pV\        4       P                  R^ 4      ,           V n        V\        4       P                  ^^ 4      ,           V n        R# )   g?Nii)_get_core_transform
RESOLUTIONtransProjection_get_affine_transformtransAffiner   Zbbox	transAxes	transDatar
   scale_longitude_cap	translate_xaxis_pretransform_xaxis_transform_xaxis_text1_transform_xaxis_text2_transformr   r9   _yaxis_transform_yaxis_text1_transform_yaxis_text2_transform)r   Zyaxis_stretchZyaxis_spaceZyaxis_text_bases   &   r   _set_lim_and_transformsZGeoAxes._set_lim_and_transforms9   s   #77H557(3
   NN 	 JU1d))A-.Yq4.../ 	 
 $$NN 	 JQ"NNJ  A&' 	#
 JQ"NNJ  B'( 	# !
((A6@@"%%Kj&&q#.NN 	   !^^ 	 J  Q'( 	# J  A&' 	#r   c                s.   V P                  ^4      pVP                  \        P                  ^ 34      w  r#VP                  ^ \        P                  ^,          34      w  r4\	        4       P                  RV,          RV,          4      P                  RR4      # )r>         ?)r?   	transformr   r9   r
   rF   rH   )r   rR   ZxscaleZ_Zyscales   &    r   rB   ZGeoAxes._get_affine_transforml   st    ,,Q/	''
3	''BEE!G5	zU3<v.YsC 	!r   c                N    \         P                  ! . ROVR7       V P                  # tick1)which)rU   Ztick2r6   )r   check_in_listrJ   r   rV   r   r   get_xaxis_transformZGeoAxes.get_xaxis_transformt       5UC$$$r   c                     V P                   R R3# )Zbottomcenter)rK   r   Zpadr   r   get_xaxis_text1_transformZ!GeoAxes.get_xaxis_text1_transformx   s    **Hh>>r   c                r[   )Ztopr\   )rL   r]   r   r   get_xaxis_text2_transformZ!GeoAxes.get_xaxis_text2_transform{   s    **E8;;r   c                rS   rT   )r   rW   rM   rX   r   r   get_yaxis_transformZGeoAxes.get_yaxis_transform~   rZ   r   c                r[   )r\   Zright)rN   r]   r   r   get_yaxis_text1_transformZ!GeoAxes.get_yaxis_text1_transform   s    **Hg==r   c                r[   )r\   Zleft)rO   r]   r   r   get_yaxis_text2_transformZ!GeoAxes.get_yaxis_text2_transform   s    **Hf<<r   c                s    \        RR 4      # )rQ   rQ   rQ   r   r.   r/   r   _gen_axes_patchZGeoAxes._gen_axes_patch   s    j#&&r   c                sH    R \         P                  P                  V RR4      /# )r)   rQ   rc   )mspinesZSpineZcircular_spiner.   r/   r   _gen_axes_spinesZGeoAxes._gen_axes_spines   s     w}}33D*cJKKr   c                s.    V^ ,          R8w  d   \         hR# )r    ZlinearN)ZNotImplementedErrorr   argskwargs   &*,r   
set_yscaleZGeoAxes.set_yscale   s    7h%% r   c                    \        R4      hz-Not supported. Please consider using Cartopy.zaChanging axes limits of a geographic projection is not supported.  Please consider using Cartopy.Z	TypeErrorrg   rj   r   r8   ZGeoAxes.set_xlim        I J 	Jr   c                rl   rm   rn   r.   r/   r   invert_xaxisZGeoAxes.invert_xaxis   ro   r   c                s    \         P                  ! W.4      w  rVR8  d   RMRpVR8  d   RMRpR\        V4      V\        V4      V3,          # )z1Return a format string formatting the coordinate.        ZNZSZEZWu   %f°%s, %f°%s)r   r   abs)r   ZlonZlatZnsZews   &&&  r   format_coordZGeoAxes.format_coord   sO    ::sj)3JSC3JSC:s8RS2./ 	0r   c                s   \         P                  ! RV,           ^V4      pV P                  P                  \	        \         P
                  ! V4      4      4       V P                  P                  V P                  V4      4       R# )z8
Set the number of degrees between each longitude grid.
NiL)r   aranger+   set_major_locatorr   deg2radset_major_formatterr'   r   r   r6      && r   r3   ZGeoAxes.set_longitude_grid   sW    
 yyg6

$$\"**T2B%CD

&&t':':7'CDr   c                s   \         P                  ! RV,           ^ZV4      pV P                  P                  \	        \         P
                  ! V4      4      4       V P                  P                  V P                  V4      4       R# )z7
Set the number of degrees between each latitude grid.
Ni)r   rt   r,   ru   r   rv   rw   r'   rx   ry   r   r4   ZGeoAxes.set_latitude_grid   sW    
 yywG4

$$\"**T2B%CD

&&t':':7'CDr   c                s    \         P                  ! V4      V n        V P                  P	                  4       P                  RV P                  R,          4      P                  RV P                  ) 4       R# )zC
Set the latitude(s) at which to stop drawing the longitude grids.
r   r1   rq   N)r   rv   rG   rI   r(   rF   rH   )r   r   r   r   r5   ZGeoAxes.set_longitude_grid_ends   sQ     !jj1  UWU3++c12YsT0001r   c                    R# )z+Return the aspect ratio of the data itself.r    r.   r/   r   get_data_ratioZGeoAxes.get_data_ratio   s    r   c                rz   )z
Return whether this Axes supports the zoom box button functionality.

This Axes object does not support interactive zoom box.
Fr{   r.   r/   r   can_zoomZGeoAxes.can_zoom        r   c                rz   )z
Return whether this Axes supports the pan/zoom button functionality.

This Axes object does not support interactive pan/zoom.
Fr{   r.   r/   r   can_panZGeoAxes.can_pan   r~   r   c                    R # r   r{   )r   r   ybutton   &&&&r   	start_panZGeoAxes.start_pan       r   c                r   r   r{   r.   r/   r   end_panZGeoAxes.end_pan   r   r   c                r   r   r{   )r   r   Zkeyr   r   s   &&&&&r   drag_panZGeoAxes.drag_pan   r   r   )rG   rI   rK   rL   rJ   rN   rO   rM   rC   rD   rE   rA   r+   r,   )r6   ))r   r   r   r    r!   r   r'   r@   r0   r(   rP   rB   rY   r^   r_   r`   ra   rb   rd   rf   rk   Z
set_xscaler8   r:   Z
set_xboundZ
set_yboundrp   Zinvert_yaxisrs   r3   r4   r5   r|   r}   r   r   r   r   r"   r#   __classcell__r<   r%      @@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                   sF   a a ] tR t^t o^;ttV 3R ltR tR tRt	Vt
V ;t# )_GeoTransformc                s0   < \         SV `  4        Wn        R# )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)r2   r   _resolution)r   
resolutionr<   s   &&r   r   Z_GeoTransform.__init__   s     	%r   c                sL    \        V 4      P                   R V P                   R2# )Z(Z))Ztyper   r   r.   r/   r   __str__Z_GeoTransform.__str__   s'    t*%%&a(8(8'9;;r   c                s    VP                  V P                  4      p\        V P                  VP                  4      VP
                  4      # r   )Zinterpolatedr   r   rR   ZverticesZcodes)r   ZpathZipathry   r   transform_path_non_affineZ'_GeoTransform.transform_path_non_affine   s6    !!$"2"23DNN5>>2EKK@@r   )r   )r   r   r   r    Z
input_dimsZoutput_dimsr   r   r   r"   r#   r   r   r   r   r   r      s%       J&<A Ar   r   c                   sh   a a ] tR t^t oRt ! R R]4      t ! R R]4      tV 3R ltR t	Rt
VtV ;t# )	
AitoffAxesZaitoffc                   0   a  ] tR tRt o RtR tR tRtV tR# )AitoffAxes.AitoffTransformi  zThe base Aitoff transform.c                s   VP                   w  r#VR ,          p\        P                  ! V4      p\        P                  ! V\        P                  ! V4      ,          4      p\        P                  ! V\        P
                  ,          4      pV\        P                  ! V4      ,          V,          p\        P                  ! V4      V,          p	\        P                  ! W.4      # )r1   )Tr   cosZarccosZsincr9   sincolumn_stack)
r   values	longitudelatitude	half_longcos_latitudealphaZ
sinc_alphar   r   
   &&        r   transform_non_affineZ/AitoffAxes.AitoffTransform.transform_non_affine  s    "(((I "CI66(+LIIlRVVI->>?E/Jy 11Z?Ax :-A??A6**r   c                @    \         P                  V P                  4      # r   )r   InvertedAitoffTransformr   r.   r/   r   invertedZ#AitoffAxes.AitoffTransform.inverted      55d6F6FGGr   r{   N	r   r   r   r    r!   r   r   r"   r#   r$   r&   r   AitoffTransformr     s     (	+	H 	Hr   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )"AitoffAxes.InvertedAitoffTransformi  c                sL    \         P                  ! V\         P                  4      # r   )r   Z	full_likeZnan)r   r   r   r   r   Z7AitoffAxes.InvertedAitoffTransform.transform_non_affine  s     <<//r   c                r   r   )r   r   r   r.   r/   r   r   Z+AitoffAxes.InvertedAitoffTransform.inverted      --d.>.>??r   r{   Nr   r   r   r    r   r   r"   r#   r$   r&   r   r   r     s     	0
	@ 	@r   r   c                   < \         P                  R ,          V n        \        SV `  ! V/ VB  V P                  RRRR7       V P                  4        R# r1   rQ   boxCZ
adjustableZanchorNr   r9   rG   r2   r   
set_aspectr(   r   rh   ri   r<      &*,r   r   ZAitoffAxes.__init__#  @     eeck$)&)c:

r   c                $    V P                  V4      # r   )r   r   r   r   r   r?   ZAitoffAxes._get_core_transform)      ##J//r   rG   )r   r   r   r    namer   r   r   r   r?   r"   r#   r   r   r   r   r   r      s5     DH- H,	@- 	@0 0r   r   c                   h   a a ] tR tRt oRt ! R R]4      t ! R R]4      tV 3R ltR t	R	t
VtV ;t# )

HammerAxesi-  Zhammerc                   r   )HammerAxes.HammerTransformi0  zThe base Hammer transform.c                s   VP                   w  r#VR ,          p\        P                  ! V4      p\        P                  ! R 4      p\        P                  ! RV\        P                  ! V4      ,          ,           4      pR V,          V\        P                  ! V4      ,          ,          V,          pV\        P                  ! V4      ,          V,          p	\        P
                  ! W.4      # )r1   r   )r   r   r   sqrtr   r   )
r   r   r   r   r   r   Zsqrt2r   r   r   r   r   r   Z/HammerAxes.HammerTransform.transform_non_affine3  s    "(((I!CI66(+LGGCLEGGC,	1B"BBCEuy0A!ABUJA))U2A??A6**r   c                r   r   )r   InvertedHammerTransformr   r.   r/   r   r   Z#HammerAxes.HammerTransform.inverted>  r   r   r{   Nr   r$   r&   r   HammerTransformr   0  s     (		+	H 	Hr   r   c                   r   )"HammerAxes.InvertedHammerTransformiB  c                s   VP                   w  r#\        P                  ! ^V^,          ^,          ,
          V^,          ^,          ,
          4      p^\        P                  ! WB,          ^^V^,          ,          ^,
          ,          ,          4      ,          p\        P                  ! W4,          4      p\        P
                  ! WV.4      # )r>   )r   r   r   arctanarcsinr   )r   r   r   r   Zzr   r      &&     r   r   Z7HammerAxes.InvertedHammerTransform.transform_non_affineD  s    88DAQUqL(AEa<78ABIIqua!q&j1n1E&FGGIyy~H??I#899r   c                r   r   )r   r   r   r.   r/   r   r   Z+HammerAxes.InvertedHammerTransform.invertedL  r   r   r{   Nr   r$   r&   r   r   r   B  s     	:	@ 	@r   r   c                r   r   r   r   r   r   r   ZHammerAxes.__init__P  r   r   c                r   r   )r   r   r   r   r?   ZHammerAxes._get_core_transformV  r   r   r   )r   r   r   r    r   r   r   r   r   r?   r"   r#   r   r   r   r   r   r   -  s5     DH- H$@- @0 0r   r   c                   r   )
MollweideAxesiZ  Z	mollweidec                   r   ) MollweideAxes.MollweideTransformi]  zThe base Mollweide transform.c                s  a V3R  lpVP                   w  r4\        P                  ^,          \        P                  ! V4      ,
          pVR8  pV( p\        P                  ! VP
                  \        R7      pVP                  4       '       d   \        P                  \        P                  ! WG,          4      ,          oRWG,          ,          p	V! V	4      w  r\        P                  ! V4      '       d'   W;;,          W,          ,          uu&   V! V	4      w  rKB  V	^,          W&   VP                  4       '       d}   WV,          pR^\        P                  ,          V^,          ,          R,          ,          p\        P                  ^,          V,
          \        P                  ! WF,          4      ,          W&   \        P                  ! VP
                  \        R7      pR\        P                  ! R4      ,          \        P                  ,          V,          \        P                  ! V4      ,          VR&   \        P                  ! R4      \        P                  ! V4      ,          VR&   V# )c                 s   < V \         P                  ! V 4      ,           S,
          ) ^\         P                  ! V 4      ,           ,          pV\         P                  ! V4      R8  3# )r>   gMbP?)r   r   r   rr   )thetadeltapi_sin_ls   & r   dZ@MollweideAxes.MollweideTransform.transform_non_affine.<locals>.db  sJ     266%=08;<u-/bffUme333r   gʡE?)Zdtyper1   rQ   gUUUUUU?)NNNr    )r   r>   )r   r   r9   rr   ZemptyZshapeZfloatZanyr   Zsignr   r   )r   r   r   r   r   clatZihighZilowZauxr   r   Zlarge_deltaZeZxyr   s   &&            @r   r   Z5MollweideAxes.MollweideTransform.transform_non_affine`  s   4
 #)((I557RVVH--D5LE6D((8>>7Cxxzz55266(.#99hn,%&uX"ff[))&%*<<&)*5&E;!AI	yy{{K1ruu9q!t+77 eeAgkRWWX_-EE
&,,e4Bbggcl*RUU2i?"&&+MBtHwws|bffSk1BtHIr   c                r   r   )r   InvertedMollweideTransformr   r.   r/   r   r   Z)MollweideAxes.MollweideTransform.inverted  s     ;;D<L<LMMr   r{   Nr   r$   r&   r   MollweideTransformr   ]  s     + 	D	N 	Nr   r   c                   r   )(MollweideAxes.InvertedMollweideTransformi  c                s   VP                   w  r#\        P                  ! V\        P                  ! ^4      ,          4      p\        P                  ^\        P                  ! ^4      ,          ,          V,          \        P
                  ! V4      ,          p\        P                  ! ^V,          \        P                  ! ^V,          4      ,           \        P                  ,          4      p\        P                  ! WV.4      # )   )r   r   r   r   r9   r   r   r   )r   r   r   r   r   r   r   r   r   r   Z=MollweideAxes.InvertedMollweideTransform.transform_non_affine  s    88DA IIa"''!*n-E!bggaj.1Q6FIyy!e)bffQY.?"?255!HIH??I#899r   c                r   r   )r   r   r   r.   r/   r   r   Z1MollweideAxes.InvertedMollweideTransform.inverted  s     33D4D4DEEr   r{   Nr   r$   r&   r   r   r     s     	:	F 	Fr   r   c                r   r   r   r   r   r   r   ZMollweideAxes.__init__  r   r   c                r   r   )r   r   r   r   r?   Z!MollweideAxes._get_core_transform  s    &&z22r   r   )r   r   r   r    r   r   r   r   r   r?   r"   r#   r   r   r   r   r   r   Z  s6     D'N] 'NRF] F 3 3r   r   c                   s   a a ] tR tRt oRt ! R R]4      t ! R R]4      tR^ R^ /V 3R	 lltV 3R
 lt	R t
R tRtVtV ;t# )LambertAxesi  Zlambertc                   s6   a  ] tR tRt o RtR tR tR tRtV t	R# )LambertAxes.LambertTransformi  zThe base Lambert transform.c                sH    \         P                  W4       Wn        W n        R# )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   r   r   r   Z%LambertAxes.LambertTransform.__init__  s     ""44%5"$3!r   c                s   VP                   w  r#V P                  pV P                  p\        P                  ! V4      p\        P
                  ! V4      pW$,
          p\        P                  ! V4      p	\        P                  ! ^\        P
                  ! V4      V,          ,           \        P                  ! V4      V,          V	,          ,           R4      p
\        P                  ! ^V
,          4      pW,          \        P
                  ! V4      ,          pV\        P                  ! V4      V,          \        P
                  ! V4      V,          V	,          ,
          ,          p\        P                  ! W.4      # )r>   gV瞯<)	r   r   r   r   r   r   maximumr   r   )r   r   r   r   clongr   Zcos_latZsin_latZ	diff_longZcos_diff_longZinner_kZkr   r   s   &&            r   r   Z1LambertAxes.LambertTransform.transform_non_affine  s    "(((I**E((DffX&GffX&G!)IFF9-MjjBFF4L((266$<+?+MMG G$ABFF9--ARVVD\')BFF4L,@,NNOA??A6**r   c                l    \         P                  V P                  V P                  V P                  4      # r   )r   InvertedLambertTransformr   r   r   r.   r/   r   r   Z%LambertAxes.LambertTransform.inverted  s0    77&&%%  " "r   r   r   N)
r   r   r   r    r!   r   r   r   r"   r#   r$   r&   r   LambertTransformr     s     )	4	+&	" 	"r   r   c                   s2   a  ] tR tRt o R tR tR tRtV tR# )$LambertAxes.InvertedLambertTransformi  c                sH    \         P                  W4       Wn        W n        R # r   r   r   r   r   r   Z-LambertAxes.InvertedLambertTransform.__init__  s    ""44%5"$3!r   c           	     s   VP                   w  r#V P                  pV P                  p\        P                  ! \        P
                  ! W#4      R 4      p^\        P                  ! RV,          4      ,          p\        P                  ! V4      p\        P                  ! V4      p	\        P                  ! V	\        P                  ! V4      ,          W8,          \        P                  ! V4      ,          V,          ,           4      p
V\        P                  ! W(,          V\        P                  ! V4      ,          V	,          V\        P                  ! V4      ,          V,          ,
          ,          4      ,           p\        P                  ! W.4      # )g&.>rQ   )r   r   r   r   r   Zhypotr   r   r   r   r   )r   r   r   r   r   r   ZpZcZsin_cZcos_cr   r   s   &&          r   r   Z9LambertAxes.InvertedLambertTransform.transform_non_affine  s   88DA**E((D

288A>40ABIIcAg&&AFF1IEFF1IEyyrvvd|!3#$7266$<#71"<"> ?H		Qrvvd|^E1AbffTlN54HHI!K KI ??I#899r   c                r   r   )r   r   r   r   r   r.   r/   r   r   Z-LambertAxes.InvertedLambertTransform.inverted  s0    //&&%%  " "r   r   N)	r   r   r   r    r   r   r   r"   r#   r$   r&   r   r   r     s     	4
	:"	" 	"r   r   r   r   c               s   < \         P                  ^,          V n        Wn        W n        \
        SV `  ! V/ VB  V P                  RRRR7       V P                  4        R# )r   Zequalr   r   r   N)	r   r9   rG   r   r   r2   r   r   r(   )r   r   r   rh   ri   r<   s   &$$*,r   r   ZLambertAxes.__init__  sL     eeai!1 /$)&)E#>

r   c                sj   < \         SV `  4        V P                  P                  \	        4       4       R # r   )r2   r(   r,   rw   r	   r;   r=   r   r(   ZLambertAxes.clear  s     

&&}7r   c                sP    V P                  V P                  V P                  V4      # r   )r   r   r   r   r   r   r?   ZLambertAxes._get_core_transform  s*    $$""!! 	r   c                sT    \        4       P                  R 4      P                  RR4      # )g      ?rQ   )r
   rF   rH   r.   r/   r   rB   Z!LambertAxes._get_affine_transform  s!    zU4[YsC 	!r   )r   r   rG   )r   r   r   r    r   r   r   r   r   r(   r?   rB   r"   r#   r   r   r   r   r   r     sJ     D%"= %"N"= ">q ! 8
! !r   r   ) Znumpyr   Z
matplotlibr7   r   Zmatplotlib.axesr   Zmatplotlib.axisZaxisr*   Zmatplotlib.patchesr   Zmatplotlib.pathr   Zmatplotlib.spinesr-   re   Zmatplotlib.tickerr   r   r   r	   Zmatplotlib.transformsr
   r   r   r   r   r   r   r   r   r{   r   r   <module>r      s          %   #9 9 F FVd VrAI A.+0 +0\*0 *0ZC3G C3L_!' _!r   