
    ^jD                     	   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mZ d dl	m
Z d dlZ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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&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z-  eej\                        Z/ e'dgd      d        Z0 e'dgd      d        Z1 e'dgd      d        Z2 e'dgd      d        Z3 e'dgd      d        Z4d Z5ejl                  jo                  de8e9dfe8d d gdfe:ddfe:dd fe:d!d"fe:d#d$ff      d%        Z; e'd&gd      d'        Z< e'd(gd      d)        Z= e'd*gdd+,      d-        Z> e'd.gd      d/        Z?d0 Z@d1 ZAejl                  jo                  d2d3d4gd5d6g7      d8        ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHejl                  jo                  d?g d@      ejl                  jo                  dAg dB      dC               ZI e'dDgd      dE        ZJ e'dFgd      dG        ZK e'dHgd      dI        ZLdJ ZM e'dKgd      dL        ZNdM ZO e'dNgd      dO        ZPejl                  jo                  dPg dQ      dR        ZQdS ZRdT ZSe)dU        ZTe)dV        ZUejl                  jo                  dWg dX      dY        ZV e'dZgd[      d\        ZW e'd]gd[      d^        ZXd_ ZYd` ZZ e&       da        Z[ e'dbgd      dc        Z\ejl                  jo                  ddg de      df        Z]dg Z^dh Z_di Z`dj Za e&       dk        Zbdl Zcdm Zddn Zeejl                  jo                  dodpdqgg      dr        Zfds Zgejl                  j                  e/j                  dtk(  duv      dw        Zjejl                  j                  e/j                  dtk(  duv      dx        Zke)dy        Zldz Zmd{ Znd| Zod} Zp e&       d~        Zq e&g dX      d        Zr e&g dX      d        Zsd Ztd Zud Zvd Zw e'dgd      d        Zx e'dgd      d        Zyd Zzd Z{ e'dgdd      d        Z| e'dgdd      d        Z}d Z~d Z e'dgg dd      d        Zd Z e'dgddg d      d        Zejl                  jo                  dg ddfdgdfdgdfdgdfg      d        Zd Z e'dgddg d      d        Z e'dgd      d        Zy)    )datetimeN)assert_almost_equal)parse)
MouseEvent)RendererAgg)Figure)FontPropertiesfontManagerget_font)GridSpec)check_figures_equalimage_comparison)needs_usetex)Text
Annotation
OffsetFromfont_stylesmpl20)stylec                    	
 	
fd} ddl m	m
 t        j                  ddt
        d       t        j                         \  }} | dd	d	d
      }|j                  ddd|      }|j                         dk(  sJ |j                         d	k(  sJ |j                         d	k(  sJ |j                         d	k(  sJ |j                         d	k(  sJ  | dd	d	ddd
      }|j                  ddd|        | ddd	ddd
      }|j                  ddd|        | dd	d	ddd
      }|j                  ddd|        | dd	d	ddd
      }|j                  d d!d|       |j                  g        |j                  g        y )"Nc                  ^     di | } |t        j                               } |      S )N)	directory)fname )mplget_data_path)kwproppathr	   findfonts      e/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_text.pyfind_matplotlib_fontz.test_font_styles.<locals>.find_matplotlib_font    s0    ##(9(9(;<D))    r   )r	   r    ignorez>findfont: Font family \[u?'Foo'\] not found. Falling back to .zmatplotlib.font_manager)modulez
sans-serifnormal   )familyr   variantsizezNormal Font)皙?r+   axes fraction)xycoordsfontpropertiesDejaVu SansFooboldi  )r(   r   r)   weightstretchr*   z	Bold Font)r+   皙?
sans serifitalici  zBold Italic Font)r+   333333?   z
Light Font)r+   皙?d   zCondensed Font)r+         ?)matplotlib.font_managerr	   r    warningsfilterwarningsUserWarningpltsubplotsannotateget_fontnameget_fontstyleget_fontvariant
get_weightget_stretch
set_xticks
set_yticks)r"   figaxnormal_fonta	bold_fontbold_italic_font
light_fontcondensed_fontr	   r    s            @@r!   test_font_stylesrR      s   *
 AI(	* llnGC&	K
 	 "	 	 	$A
 >>},,,??((((***<<>X%%%==?h&&&$I KK  	  " , KK '	  ) &J KK !	  # *N KK %	  ' MM"MM"r#   	multilinec                     t        j                          t        j                  ddd      } | j                  d       t        j                  dddddd	       t        j                  ddd
ddd	       t        j                  dddddd	       t        j
                  dd       t        j                  dd       | j                  g        | j                  g        y )N   zmultiline
text alignmentr4   r;   zTpTpTp
$M$
TpTpTp   centertopr*   havazTpTpTp
$M^{M^{M^{M}}}$
TpTpTp皙?zTpTpTp
$M_{q_{q_{q}}}$
TpTpTpr   )	r@   figuresubplot	set_titletextxlimylimrH   rI   rK   s    r!   test_multilinerd   v   s    JJL	Q1	BLL,-HHS'bX%I HHS3" HHS3" HHQNHHQMM"MM"r#   
multiline2c            	         t        j                         \  } }|j                  dd       |j                  dd       |j	                  ddd       g d}| j
                  j                         fd	}d
}t        |      D ]*  \  }}|j                  d|z  dz   d||d      } |||       , |j                  dddd       |j	                  ddd       t        |      D ]*  \  }}|j                  d|z  dz   d||d      } |||       , |j                  dddd       |j	                  ddd       t        |      D ]*  \  }}|j                  d|z  dz   d||d      } |||       , |j                  dddd       |j	                  ddd       t        |      D ]+  \  }}|j                  d|z  dz   d||dd      } |||       - |j                  dddd       y )Nr   gffffff?   r;   C2r7   )color	linewidth)Linez2 Lineg
 2 Lgz$\sum_i x $zhi $\sum_i x $
testztest
 $\sum_i x $z$\sum_i x $
 $\sum_i x $c                    t        j                  dddd| j                        }|j                  |j	                        j                  | j                  j                               j                         | j                  |       y )Nr   r   rU   F)clip_on	transform)	mpatches	Rectangle	transAxes
set_boundsget_window_extenttransformedinvertedbounds	add_patch)rK   ttrrenderers      r!   draw_boxz!test_multiline2.<locals>.draw_box   se    vq!U)+7	  *[..01V	 	Qr#   leftr4   r+   bottom)horizontalalignmentverticalalignmentg333333?zBottom alignri   g?rX   z	Top aligng?baselinezBaseline alignrV   )r   r   rotationzBot align, rot20)	r@   rA   set_xlimset_ylimaxhlinecanvasget_renderer	enumerater`   )	rJ   rK   stsr|   horalnnstry   r{   s	           @r!   test_multiline2r      s   llnGCKK3KK1JJs$#J.ACzz&&(H EC. BWWS2X^S"%'/  1R GGCnDG1JJs$#J.C. BWWS2X^S"%',  .R GGCkG.JJs$#J.C. BWWS2X^S"%'1  3R GGC&dG3JJs$#J.C. BWWS2X^S"%'/"  >R GGC(G5r#   zantialiased.pngc                  Z   dt         j                  d<   t        j                  d      } | j	                  dddddd	
       | j	                  dddddd	
       d	t         j                  d<   | j	                  dddddd
       | j	                  dddddd
       dt         j                  d<   y )NFtext.antialiased)g      @      ?figsizer7   r   antialiasedrW   T)r   r   r         ?z
$\sqrt{x}$ffffff?znot antialiased)r   rcParamsr@   r]   r`   rJ   s    r!   test_antialiasingr      s    ',CLL#$
**\
*CHHS$8'T  ;HHS$8'T  ; (,CLL#$HHS$)x'U  <HHS$8'U  < (-CLL#$r#   ztext_contains.pngc                     t        j                  d      } t        j                         }t        d| j                  dddd       }t        j                  ddd      }t        j                  ddd      }t        j                  ||      \  }}t        j                  dd	d
ddd      }| j                  j                          t        |j                  |j                        D ]  \  }}t        j                         j                  j                  ||g      \  |_        |_        |j#                  |      \  }}	|rdnd}
|j$                  j'                         }|j)                  ||d|
       |j$                  j+                  |        y )N      r   button_press_eventr;   rU   r   r      r9   zhello worldrW   )rZ   fontsizer   yellowredor   )r@   r]   axesr   r   nplinspacemeshgridr`   drawzipflatgcarr   ro   xycontainsviewLimfrozenplotset)rJ   rK   meventxsystxtr   r   r   _ri   vls               r!   test_containsr      s6   
**V
$C	B,cjj#sAtLF	T4	$B	T4	$B[[R FB
((S-HrBHC JJOOBGGRWW% 1 WWY00::Aq6B&(ll6*!$% ZZ 
1c'


rr#   c                  $   t        j                         \  } }|j                  dddddi      }| j                  j	                          t        d| j                  g|j                  j                  d       }|j                  |      d	i fk(  sJ y )
Nhello)r9   r9   )333333?r   
arrowstylez->)xyxytext
arrowpropsr   )r;   r   F)	r@   rA   rB   r   r   r   	transDataro   r   )rJ   rK   annevents       r!   test_annotation_containsr      s     llnGC
++HX<:N  PCJJOOcjjM+-<<+A+A(+KME<<5"+---r#   zerr, xycoords, matchz<xycoords callable must return a BboxBase or Transform, not az,'xycoords' must be an instance of str, tuplefooz'foo' is not a valid coordinatezfoo barz#'foo bar' is not a valid coordinatez
offset fooz'xycoords cannot be an offset coordinatezaxes fooz'foo' is not a recognized unitc                     t        j                         \  }}t        j                  | |      5  |j	                  ddd|       |j
                  j                          d d d        y # 1 sw Y   y xY w)Nmatchr   rm   r;   r;   )r   r-   )r@   rA   pytestraisesrB   r   r   )errr-   r   rJ   rK   s        r!   test_annotate_errorsr      sX     llnGC	s%	( 
D&hG

  s   0A((A1titlesc                      t        j                          t        j                  ddd      } | j                  dd       | j                  dd       | j	                  g        | j                  g        y )NrU   z
left titler}   loczright titleright)r@   r]   r^   r_   rH   rI   rc   s    r!   test_titlesr     sW     JJL	Q1	BLL6L*LLGL,MM"MM"r#   text_alignmentc                     t        j                          t        j                  ddd      } d}dD ]J  }dD ]C  }| j                  |d|dz   ||t	        ddd	      
       | j                  |dd||       |dz  }E L | j                  ddgddg       | j                  ddgddg       | j                  dd       | j                  dd       | j                  g        | j                  g        y )NrU   r+   )r   r   )rX   r~   r   rW   r;   z Tjroundwheat)boxstyle	facecoloralpha)r[   r   bboxg      ?z$\sum_{i=0}^{j}$)r[   r   r         ?)
r@   r]   r^   r`   dictr   r   r   rH   rI   )rK   r   r   	alignments       r!   test_alignmentr     s    JJL	Q1	BA @ 	IGG3	E)i(7gSI  K GG3+	H  NHA	 GGQFS#JGGQFS#JKK1KK3MM"MM"r#   zrotation_anchor.pngT)baseline_imagesr   remove_textc                     t        j                         \  } }|j                  ddgd       |j                  ddd       |j	                  ddd       d}t        |      D ]$  }|j                  dddd	| d
||z  dz  dd       & y )Nr   rU   )lwr;   z.5)rj   ri      pPCr:   h  anchorcenter_baseline)ri   r*   r   rotation_moder   )r@   rA   r   axvliner   ranger`   )rJ   rK   Nrz   s       r!   test_rotation_mode_anchorr   /  s     llnGCGGQFqGJJrRtJ,JJrRtJ,	A1X 5
BasG#1S"3 	 	55r#   zaxes_titles.pngc                      t        j                          t        j                  ddd      } | j                  dddd       | j                  dddd       | j                  d	d	dd       y )
NrU   rW   rV   i  )r   r   
fontweightr}      i  r   )r@   r]   r^   r_   rc   s    r!   test_axes_titlesr   ?  s[     JJL	Q1	BLLx"LELLVbSLALLgsLCr#   c                     t        j                         \  } }|j                  dddd      }| j                  j	                          |j                  | j                  j                        }d}|j                  ||f       | j                  j	                          |j                  | j                  j                        }t        |j                  |j                        D ]  \  }}||z   |k(  rJ  |j                  dddd      }| j                  j	                          |j                  | j                  j                        }d}||f|_
        | j                  j	                          |j                  | j                  j                        }t        |j                  |j                        D ]  \  }}||z   |k(  rJ  y )Ntestrm   figure pixels)r   
textcoords   )r@   rA   rB   r   r   rt   r{   set_positionr   minxyann)rJ   rK   r   init_pos	shift_valpost_posrM   bs           r!   test_set_positionr   I  s   llnGC ++v/  CCJJOO$$SZZ%8%89HIi+,JJOO$$SZZ%8%89HHLL(,,/ "19}!!!" ++v/  CCJJOO$$SZZ%8%89HII&CIJJOO$$SZZ%8%89HHLL(,,/ "19}!!!"r#   c                  f   t        j                         } | j                  ddd      }|j                  d       |j	                         }|j
                  |j                  z
  }|j                  d       |j	                         }|j
                  |j                  z
  }|j                  d       |j	                         }|j                  }|j                  ||z
        dk(  sJ |j                  |      dk(  sJ |j                  |d|z  z         dk(  sJ |j                  |d	|z  z         d
k(  sJ |j                  ||dz  z         dk(  sJ |j                  ||dz  z   |dz  z         dk(  sJ |j                  ||dz  z   |dz  z         dk(  sJ |j                  ||dz  z   |dz  z         dk(  sJ y )Nr+   ? imiiiimmmmr   gV-?gx&1?rU      r      r   
   )r@   r]   r`   set_textrt   x1x0_char_index_at)rJ   r`   r   size_isize_morigins         r!   test_char_index_atr  i  s   
**,C88Cb!DMM#!!#DWWtwwFMM#!!#DWWtwwFMM*!!#DWWFv/1444v&!+++vf45:::vf45:::vq01Q666vq06!8;<AAAvq06!8;<AAAvq06"9<=BBBr#   r`   r  Oemptyz	non-empty)idsc                    t        j                         \  }}|j                  dd| dd      }|j                  j	                          |j
                  }|j                         }|j                  |dz        }t        j                  j                  |j                         |j                         dz  d       |j
                  |k(  sJ y )	Nr;   r}   r~   )rZ   r[   r  dpi皙?rtol)r@   rA   r`   r   r   r  rt   r   testingassert_allclose
get_points)r`   rJ   rK   t1r  bbox1bbox2s          r!   test_non_default_dpir     s    llnGC	c4Fx	8BJJOO
''C  "E  S2X .EJJu//153C3C3E3J$(  * 77c>>r#   c                      t        d      j                         dk(  sJ t        d      j                         dk(  sJ y )N
horizontalr           verticalg     V@r   get_rotationr   r#   r!   test_get_rotation_stringr(    s:    &335;;;$113s:::r#   c                  P    dD ]!  } t        |       j                         | k(  r!J  y )N)g      .@g333330@gYS@r#  r&  r  s    r!   test_get_rotation_floatr+    s-     4Q,,.!3334r#   c                  b    dD ]*  } t        |       j                         t        |       k(  r*J  y )N)C      )   r#  )r   r'  floatr*  s    r!   test_get_rotation_intr1    s1     ;Q,,.%(:::;r#   c                  x    t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)N
hozirontalr#  r   r   
ValueErrorr   r   r#   r!   test_get_rotation_raisesr6    s+    	z	" $l#$ $ $s   09c                  B    t        d       j                         dk(  sJ y )Nr#  r$  r&  r   r#   r!   test_get_rotation_noner8    s    ++-444r#   c                  |    t        g dg d      D ])  \  } }t        t        |       j                         |       + y )N)g     v@g     w@g	@)r$  g      1@gfffff&f@r#  )r   r   r   r'  )r  js     r!   test_get_rotation_mod360r;    s8    +-=> @1D!,99;Q?@r#   rZ   )rW   r   r}   r[   )rW   rX   r~   r   r   c                    t        j                         \  }}t        d||       } |j                  dddi|} |j                  dddi|}|j                  j                          t        |j                  |j                  j                        j                         |j                  |j                  j                        j                                y )Nr   )r   r[   rZ   )r;   r;   r   r   r   default)
r@   rA   r   r`   r   r   r   rt   r{   r  )rZ   r[   rJ   rK   r   t0r  s          r!   %test_null_rotation_with_rotation_moder?    s     llnGC	qRB	'B		>x	>2	>B		?y	?B	?BJJOO,,SZZ-@-@ALLN,,SZZ-@-@ALLNPr#   text_bboxclipc                      t        j                  ddddd       t        j                  dddd	      } | j                  d
di       y )Nr  r4   zIs bbox clipped?rz   T)backgroundcolorrn   r;   zIs fancy bbox clipped?rn   r   zround, pad=0.1)r@   r`   set_bbox)ts    r!   test_bbox_clippingrF    s>    HHS#)3Mc3TBAJJ
,-.r#   z!annotation_negative_ax_coords.pngc            	      |   t        j                         \  } }|j                  dddgdddgdd       |j                  dddgdddgddd	
       |j                  dddgdddgdd       |j                  dddgdddgddd	
       |j                  dddgdddgdd       |j                  dddgdddgddd	
       y )N+ ptsr   rV   zaxes points    r   r   r   r-   r   - ptsirX   r   r   r   r-   r   r[   + fracr   r  r,   - frac皙+ pixels      zaxes pixels- pixelsir@   rA   rB   rJ   rK   s     r!   "test_annotation_negative_ax_coordsrV    s   llnGCKKBxM8mb  B KKCy]9}r   KKd|$</B  H KKe}%=?R  
 KK
Ry]9}r  C KK
Szm:  r#   z"annotation_negative_fig_coords.pngc            	      |   t        j                         \  } }|j                  dddgdddgdd       |j                  ddd	gddd	gddd
       |j                  dddgdddgdd       |j                  dddgdddgddd
       |j                  dddgdddgdd       |j                  dddgdddgddd
       y )NrH  r     zfigure pointsrI  rJ  rK  i6  rX   rL  rM  r  r;   zfigure fractionrN  rO  g?rP  2   r   rS  i   rT  rU  s     r!   #test_annotation_negative_fig_coordsr\    s   llnGCKKCy_9  E KKSzo:"   KKc{/@#;):R  I KKt}1B4=+<r  
 KK
BxO8o  D KK
Szo:"  r#   c                  ,   t        j                  dd      \  } \  }}t        j                          |j                  rJ |j                  rJ | j                  rJ |j	                  ddd      }|j                  sJ |j                  sJ | j                  sJ |j                  dddg      }|j                  sJ |j                  sJ | j                  sJ t        j                          |j                  rJ |j                  rJ | j                  rJ y )NrU   rg   r;   aardvarkr   )r@   rA   draw_allstaler`   rB   )rJ   ax1ax2txt1ann1s        r!   test_text_stalerf    s    ll1a(OC#sLLNyy=yy=yy=88BJ'D999:::999<<
Bx<0D999:::999LLNyy=yy=yy=yr#   zagg_text_clip.pngc                     t         j                  j                  d       t        j                  d      \  } \  }}t         j                  j                  dd      D ]-  \  }}|j                  ||dd       |j                  ||d       / y )NrU   rg   r  r   TrC  )r   randomseedr@   rA   randr`   )rJ   rb  rc  r   r   s        r!   test_agg_text_cliprk    sm    IINN1ll1oOC#s		r1% 1Aud+Aur#   c                      dt         j                  d<   t         j                  j                  d      } | j	                         }dt         j                  d<   || j	                         k(  sJ y )Nr  z	font.sizelarge)r*   r:   )r   r   font_managerr	   get_size_in_points)fpsz1s     r!   test_text_size_bindingrr    s\     "CLL				(	(g	(	6B



!C #CLL"''))))r#   zfont_scaling.pdfc                     dt         j                  d<   t        j                  d      \  } }|j                  j                  t        j                                |j                  j                  t        j                                |j                  dd       t        t        ddd	            D ]   \  }}|j                  d
|dz  | d|       " y )N*   zpdf.fonttype)g@g(@r   rY  iX  r   +   rg   r+   r   z pt font sizer   )r   r   r@   rA   xaxisset_major_locatorNullLocatoryaxisr   r   r   r`   )rJ   rK   r  fss       r!   test_font_scalingr|  %  s    #%CLL ll;/GCHHs01HHs01KKS5B?+ >2
QrTbT/"=>r#   zspacing1, spacing2))r9   rg   )rg   r9   )rg   rg   c                    d}t        j                         }|j                  j                         }|j	                  dd||       }|j	                  dd||      }|j                  j                          |j                  |      }|j                  |      }|j                  |j                  k(  sJ | |k(  r|j                  |j                  k(  sJ y |j                  |j                  k7  sJ y )Nzline1
line2r   r;   linespacingr{   )	r@   r]   r   r   r`   r   rt   widthheight)	spacing1spacing2text_stringrJ   r{   text1text2box1box2s	            r!   test_two_2line_textsr  1  s     K
**,Czz&&(HHHT3HBEHHT3HBEJJOO""H"5D""H"5D ::###8{{dkk))){{dkk)))r#   c                      t        j                  t              5  t        j                  dddd       d d d        y # 1 sw Y   y xY w)Nr   r;   r   abcr~  )r   r   	TypeErrorr@   r`   r   r#   r!   test_validate_linespacingr  F  s5    	y	! 4b%U34 4 4	   =Ac                      t        j                         \  } }|j                  dt        j                  d       |j                  t        j
                  dd       | j                  j                          y )Nr   naninf)r@   rA   r`   r   r  r  r   r   rU  s     r!   test_nonfinite_posr  K  sG    llnGCGGArvvuGGBFFAuJJOOr#   c                     t        j                         } dt         j                  d<   | j                  d      }dt         j                  d<   | j                  d      }| j                  j                          |df|dffD ]?  \  }}|j                  j                  D ]!  }|j                  j                         |k(  r!J  A y )NFtext.usetexy   Tz   )
r@   r]   r   add_subplotr   r   rw  
majorTickslabel1
get_usetex)rJ   rb  rc  rK   usetexrE  s         r!   test_usetex_is_copiedr  R  s     **,C"'CLL
//#
C"&CLL
//#
CJJOOU|c4[1 3
F$$ 	3A88&&(F222	33r#   c                      t        j                         } | j                  dddd       | j                  j	                          y )Nr;   z	$\frac12$Tr  )r@   r]   r`   r   r   r   s    r!   test_single_artist_usetexr  a  s1    
 **,CHHR\$H/JJOOr#   fmt)pngpdfsvgc                     dt         j                  d<   t        j                         }|j                  dddd       |j	                  t        j                         |        y )NTr  r;   2_2_2Fr  )format)r@   r   r]   r`   savefigioBytesIO)r  rJ   s     r!   test_single_artist_usenotexr  k  sG     #'CLL
**,CHHRWUH+KK

SK)r#   ztext_as_path_opacity.svg_classic_testc                     t        j                          t        j                         j                          t        j                  dddd       t        j                  dddd       t        j                  ddd	dd
       y )Nr   cr   r   r   r;   r   r;   rM   r   r   r   r   r   r   rU   r   ri   )r@   r]   r   set_axis_offr`   r   r#   r!   test_text_as_path_opacityr  w  sU    JJLGGIHHT4N3HHT33'HHT4C|<r#   ztext_as_text_opacity.svgc                  .   dt         j                  d<   t        j                          t        j                         j                          t        j                  dddd       t        j                  dddd	       t        j                  dd
ddd       y )Nnonezsvg.fonttyper   z50% using `color`r  r   r;   z50% using `alpha`r  r   z"50% using `alpha` and 100% `color`r  r  )r   r   r@   r]   r   r  r`   r   r#   r!   test_text_as_text_opacityr    si    #)CLL JJLGGIHHT4,NCHHT3+37HHT4=S!r#   c                  z    t        j                  ddgddg       t        t        j                  dgdd             y )NABrU   rg   r;   Boo)r@   r   reprr`   r   r#   r!   test_text_reprr    s/    HHc3Z!Q 3%e	$%r#   c                     t        j                  dd      \  } }|j                  dd      }|j                  | j                  j                               }| j                          |j                  | j                  j                               }t        j                  |j                         |j                         d      rJ y )NrU   
annotationr   r_  gư>r  )
r@   rA   rB   rt   r   r   tight_layoutr   allcloser  )rJ   rK   anextent1extent2s        r!   test_annotation_updater    s    ll1a GC	\j	1B""3::#:#:#<=G""3::#:#:#<=G{{7--/1C1C1E $& & & &r#   c                 |   | j                         }|j                  t        j                         dd       |j	                  dt        j                         dfddd       |j                         }|j                  t        j                         dd       |j	                  dt        j                         dfd	       y )
NrU   r   r   r;   )datar,   rm   offset points)r-   r   r   )r-   )r  r   r   nowrB   fig_testfig_refrK   s      r!   test_annotation_unitsr    s    				BGGHLLNAs#KKhllnc*5N/  ; 
			BGGHLLNAs#KKhllnc*5NKOr#   zlarge_subscript_title.pngc                  N   d t         j                  d<   t        j                  dddd      \  } }|d   }|j                  d       |j                  d	d
       |j	                  g        |d   }|j                  dd       |j                  dd
       |j	                  g        y )Nzaxes.titleyrU   rg   )	   g      @T)r   constrained_layoutr   z$\sum_{i} x_i$zNew wayr}   r   g)\(?)r   zOld Way)r@   r   rA   r_   set_xticklabels)rJ   axsrK   s      r!   test_large_subscript_titler    s    "&CLL||Aq(tLHC	QBLL"#LLL'r	QBLL"dL+LLL'rr#   zx, rotation, halign))r   r   r}   )r;   _   r}   )r7   r   r   )r7      r}   c                    t        j                  d      }t        dd|      }|j                  |d         }d}|j	                  | d|d||	      }|j
                  j                          |j                         d
k(  sJ y )N)   r  r   r  )nrowsncolsr]   rU   rU   z?This is a very long text that should be wrapped multiple times.r   T)wrapr   rZ   z?This is a very long
text that should be
wrapped multiple
times.)r@   r]   r   add_subfigurer`   r   r   _get_wrapped_text)r   r   halignrJ   gssubfigsr`   s           r!   	test_wrapr    s     **X
&C	3	/Br$x(F 	JA;;q#qth6;JDJJOO!!# )1 2 2 2r#   c                      t        j                  d      } d}| j                  dd|dd      }| j                  j	                          |j                         d	k(  sJ y )
N)   r   r   z;This is a very $\overline{\mathrm{long}}$ line of Mathtext.r   r;   (   T)r*   r  z;This is a very $\overline{\mathrm{long}}$
line of Mathtext.r@   r]   r`   r   r   r  )rJ   r  r`   s      r!   test_mathwrapr    s[    
**V
$CFA88AsABT82DJJOO!!# )< = = =r#   c                  x   t        j                  d      } | j                  dd       | j                  j	                         }t        j                  d      }|j                  d       |j                  j	                         }|j
                  |j
                  k(  sJ |j                  |j                  k(  sJ y )N)r  r  r   z.suptitle that is clearly too long in this caseTr  z.suptitle that is clearly
too long in this case)r@   r]   suptitle	_suptitlert   y0y1)fig1window_extent_testfig2window_extent_refs       r!   test_get_window_extent_wrappedr    s     ::f%DMMBMN99;::f%DMMCD88:  $5$8$8888  $5$8$8888r#   c                      t        j                  d      } | j                  dddd      }| j                  j	                          |j                         dk(  sJ y )Nr   r   r   g      #@r   AlonglineoftexttowrapTr  r  rJ   r`   s     r!   test_long_word_wrapr    sM    
**V
$C88C3$8?DJJOO!!#'>>>>r#   c                      t        j                  d      } | j                  dddd      }| j                  j	                          |j                         dk(  sJ y )Nr  r   r   znon wrapped textTr  r  r  s     r!   test_wrap_no_wrapr    sM    
**V
$C88Aq,488DJJOO!!#'9999r#   c                 @   | j                         }|j                  ddg       |j                  ddg       |j                  j                  d   j
                  j                  d       |j                         }|j                  ddg       |j                  ddg       y )Nr   rU   u   €rM   wr  )r  rI   set_yticklabelsrz  r  r  	set_colorr  s      r!   test_buffer_sizer    s    
 
			BMM1a&s|$HH!!++C0				BMM1a&r{#r#   c                      t        j                          t        j                  ddd      } t        j                  ddd      }| j	                         dk(  sJ |j	                         dk(  sJ y)z>Test that kwargs take precedence over fontproperties defaults.valuezTimes New Romang      D@)r.   r*   counts)r*   r.   N)r@   r]   xlabelylabelget_size)r  r  s     r!   $test_fontproperties_kwarg_precedencer    s[    JJLJJw/@tLEJJxd;LME>>t###>>t###r#   c                      t        j                         } t        j                         j	                  d      }| j                  ddd|d      }|j                         }t        |d       y )Nr   r   r   T)ro   transform_rotates_text)r@   r   mtransformsAffine2D
rotate_degr`   r'  r   )rK   ro   r`   results       r!   test_transform_rotates_textr    s\    	B$$&11"5I771a9*.  0D F#r#   c                      t        t        d      d       } t        |       }t               }|j                  |        | d   |d   k(  sJ | d   |d   k(  sJ y )Nr1   )r2   )r.   r   r.   r   )r   r	   r   update)inpcacherE  s      r!   test_update_mutate_inputr    sa    
nF;CIEAHHSM E*:$;;;;v;%-'''r#   r   zinvalid stringZ   c                     t        j                  t        d      5  t        ddd|        d d d        y # 1 sw Y   y xY w)Nz5rotation must be 'vertical', 'horizontal' or a numberr   r   r   r#  r4  r#  s    r!   test_invalid_rotation_valuesr    s:    	J
M - 	Q58,- - -   5>c                      t        j                  t              5  t        j                  dddd       d d d        y # 1 sw Y   y xY w)Nr;   r   foobar)r  )r   r   r5  r@   figtextr   r#   r!   test_invalid_colorr  &  s5    	z	" /BEX./ / /r  )r  rU   r   z1Error messages are incorrect with pyparsing 3.1.0)reasonc                  N   t        j                         \  } }|j                  dddd       | j                  j	                          |j                  dddd       t        j                  t        d      5  | j                  j	                          d d d        y # 1 sw Y   y xY w)Nr   $ \wrong{math} $F)
parse_mathTUnknown symbolr   )r@   rA   r`   r   r   r   r   r5  rU  s     r!   test_parse_mathr  ,  s}     llnGCGGAq%%G8JJOOGGAq%$G7	z)9	: 

  s   7BB$c                     t        j                         \  } }|j                  ddd       t        j                  t
        d      5  | j                  j                          d d d        t        j                  ddi      5  t        j                         \  } }|j                  ddd       | j                  j                          d d d        y # 1 sw Y   nxY w# 1 sw Y   y xY w)Nr   r  r  r   ztext.parse_mathF)
r@   rA   r`   r   r   r5  r   r   r   
rc_contextrU  s     r!   test_parse_math_rcparamsr"  9  s     llnGCGGAq%&	z)9	: 

 
*E2	3 ,,.R
1)*

 	  s   C ACCC#c                     t        j                  t        j                  j                        j
                  d   j                  } | j                          t        j                         }|j                  ddd       |j                  dddd       |j                  dddd       |j                  j                          |j                         }|| v sJ i fd}||_        |j                  j                          g dd	gk(  sJ t        d         t        d	         cxk(  rd
k(  sJ  J | |   j                         }|j                   |j"                  kD  sJ y )N_cacher7   r;   foo
barTr  c                  f    | ^}}}}}j                  |t                     j                  |       y N)
setdefaultr   add)argskwargsr{   r   r   r  r   r   s          r!   callz test_metrics_cache.<locals>.call\  s.     $!QA
a##A&r#   r   barrU   )inspect	signaturer   r`   _get_text_metrics_function
parametersr=  clearr@   r]   r   r   _get_rendererdraw_texlen
cache_infohitsmisses)renderer_cacherJ   r{   r,  infor   s        @r!   test_metrics_cacher;  I  s?    &&++j"7  
**,CHHRZ HHRZH-HHRZH-JJOO  "H~%%%	B' HJJOOR5UEN"""
 r%y>SE^0q00000(#..0D 99t{{"""r#   c                  6   t        j                  t        j                  j                        j
                  d   j                  t        j                          j                          fd}  |         t        j                          t              dk(  sJ y )Nr$  c                     t        j                         \  } }| j                          t              dk(  sJ | j                  j                            }|j                         }|j                  dkD  sJ |j                  |j                  k(  sJ |j                  |j                  kD  sJ t        j                  |        y )NrU   r   )r@   rA   draw_without_renderingr5  r   r   r6  currsizer8  r7  close)rJ   rK   funcr6  r9  s       r!   helperz#test_metrics_cache2.<locals>.helperw  s    ,,.R""$>"a'''cjj5578__&
""Q&&&""j&7&7777!2!2222		#r#   r   )r.  r/  r   r`   r0  r1  r=  gccollectr2  r5  )rB  r9  s    @r!   test_metrics_cache2rE  o  ss    &&++j"7  JJL HJJL~!###r#   c                  0   t        j                         \  } }ddg}ddg}t        d      D cg c]  }|j                  dd||   dd	||   
      ! }}d |D        \  }}| j                  j                          t        |      t        |      k(  sJ y c c}w )Nr  zoffset fontsize)r  r  r  rg   r   r   10r  )r   r   r   r-   r   c              3   <   K   | ]  }|j                           y wr'  )rt   ).0r   s     r!   	<genexpr>z0test_annotate_offset_fontsize.<locals>.<genexpr>  s     %N#c&;&;&=%Ns   )r@   rA   r   rB   r   r   str)rJ   rK   text_coordsxy_textr  annspoints_coordsfontsize_coordss           r!   test_annotate_offset_fontsizerQ    s    llnGC"$56K G
 =B!H	F 89	 KK:&qz!%!'#.q>	  3 FD F
 &O%N"M?JJOO}_!5555Fs   $Bc                     t        ddd      } | j                  t        j                  d   k(  sJ | j	                         t        j                  d   k(  sJ | j                  d       | j                  du sJ | j	                         | j                  k(  sJ | j                  d       | j                  du sJ | j	                         | j                  k(  sJ y )Nr;   r%  r   TF)r   _antialiasedr   r   get_antialiasedset_antialiased)r   s    r!   test_get_set_antialiasedrV    s    
r2z
"Cs||,>???? CLL1C$DDDDt### C$4$4444u$$$ C$4$4444r#   c                     t        ddd      } | j                  du sJ | j                         | j                  k(  sJ t        ddd      }|j                  du sJ |j                         |j                  k(  sJ t        ddd      }|j                  d       |j                         du sJ |j                  du sJ t        dd      }|j                  t        j
                  d   k(  sJ y )Nr%  r   Tr   Fr   )r   rS  rT  rU  r   r   )annotannot2annot3annot4s       r!   test_annotation_antialiasedr]    s    z8>E%%%  "e&8&8888
H%@F%'''!!#v':'::::
H%@F
4 !!#t+++$&&&
H-F#,,/A"BBBBr#   c                 ~   | j                         }|j                  ddgddg      \  }t        j                  ddg      }|j	                  dt        ||      dd       d|d d  |j                         }|j                  ddgddg      \  }t        j                  ddg      }|j	                  d||dd	
       d|d d  y )Nr   rg   r;   r   )r  r   rm   )r   r   r   rU   r  )r   r-   r   r   )r  r   r   arrayrB   r   )r  r  rK   lof_xyan_xys         r!   'test_annotate_and_offsetfrom_copy_inputrc    s     
			B	!Q!Q	 BAHHb"XEKK*Q"6w  E!H				B	!Q!Q	 BAHHb"XEKK%!GKXE!Hr#   )
extensionsc                 z    | j                  dddd       dt        j                  d<   |j                  ddd       y )Nr;   6 inches x 2 inchesFrX  r   r`   r   r   r  r  s     r!   +test_text_antialiased_off_default_vs_manualri    s?    MM#s1).  0 (-CLL#$LLc01r#   c                 z    | j                  dddd       dt        j                  d<   |j                  ddd       y )Nr;   rf  TrX  r   rg  rh  s     r!   *test_text_antialiased_on_default_vs_manualrk    s7    MM#s1tMD'+CLL#$LLc01r#   c                     t        d      } t        ddd      }t        ddd      }|j                  |        t	        ddd	      }|j                  |        |j                  |
      }|j                  |
      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  d|j                  d      \  }}}t        t        j                  |j                              }dD ]d  \  }	}
|j                  |	      x}|j                  d      d   }|j                  j                         }||
    |z  |z  | j                  z  dz  } n# |j                  d|j                  d      \  }}}t!        ||      }|j#                         }|d   dk(  sJ |d   |j                  k(  sJ |d   | k(  sJ |d   |j                  |z
  k(  sJ y )Nr:   r  r8   r   rm   r   )r   r-   r   )r`   r   r   r  r`   F)ismath))zOS/2sTypoDescender)hheadescenthead
unitsPerEmH   lpr$  rU   r   r   rU   r  )r   r   r   
set_figurer   rt   r  r  get_text_width_height_descent_fontpropertiesr   r
   _find_fonts_by_propsget_sfnt_tablero  r  maxr  )r]   r{   r  r`   r   	text_bboxr   dfontnamekeytableunits_per_emr   lp_d
below_linepointss                    r!   &test_text_annotation_get_window_extentr    s   _F3S)H FvHJ&!VqA&DOOF''':D&&&9I::(((;;)*****44
**5 5 :GAq!K44Z5O5OPQDF <	c((..E;..v6|DL!11DDFH#J;-86::EJD< ;;*,,U < <
1dQJ __F$<3$<9??***$<J;&&&$<9++j8888r#   c                     d} t        j                  d      \  }}|j                  ddd      }|j                  dddd	d
d| dd      }t        j                          |j
                  j                  }|j                  |      }|j                  |      }|j                  j                  |      }t        j                  |      }	|j                  |j                  dz   k(  sJ t        |	j                  |j                         |	j                  |j                  k(  sJ t        j                  j                  |	|g      }
t        |j                  |
j                         y )N   r:   r  r   r   )r  r   r   r$        I@r  r  r   blackrg   r$  r   r  	headwidthshrinkr   r   r-   r   r  r  )r@   rA   r`   rB   r   r   r{   rt   arrow_patchr   r  r   r  r  Bboxunion)r  rJ   rK   r   r   r{   r}  r   
arrow_bboxann_txt_bboxexpected_bboxs              r!   1test_text_with_arrow_annotation_get_window_extentr    s:   Ills#GC
''Fa1'
%C
++o 1"c3	  4C HHJzz""H%%x%8I  ( 3D228<J))#.L ::4//// ++Y-=-=>000$$**L*+EFM]%9%9:r#   c                     d} | dz  }t        |       }|j                  d       |j                  d       t        ddd      }t	        dddd	d
dddd      }|j                  |       |j                  |       |j                         }|j                         }|j                  dk(  sJ t        |j                  d|z         |d   dk(  sJ |d   dd|z  z
  k(  sJ y )Nr:   rs  r         @r8   r  r  r  r   r  r   r  r$  r  r  r  g      $@rm   rv  r  )r   set_figwidthset_figheightr   r   rw  r   rt   r  r  r   r  )r  dots_per_pointr]   r{   r  r   r  s          r!   'test_arrow_annotation_get_window_extentr  %  s    
C2XN_F

3S)H 
{</ 12NOJ &!OOH'')D__F::TN%:;$<3$<4!n"44444r#   c                  l   t        d      } | j                  d       | j                  d       t        ddd      }t	        dddd      }|j                  |        |j                  |       |j                         }|j                         }|d	   d
k(  sJ |d   d
k(  sJ |d   dk(  sJ |d   dk(  sJ y )Nr:   r  r  r8   r  r  r   )r   r   r-   rm   r$  ru  r  r  rv  )	r   r  r  r   r   rw  r   rt   r  )r]   r{   r  r   r  s        r!   'test_empty_annotation_get_window_extentr  >  s    _F

3S)H 
{;JJ&!OOH'')D__F$<3$<3$<4$<4r#   zbasictext_wrap.pngc            
         t        j                  d      } t        j                  g d       d}t        j                  dd|ddd	
       t        j                  dd|ddd	
       t        j                  dd|ddd	
       t        j                  dd|ddddd	       t        j                  dd|dddd	       t        j                  dd|ddd	
       y )Nr   r   r   r  r   r  This is a really long string that I'd rather have wrapped so that it doesn't go outside of the figure, but if it's long enough it will go off the top or bottom!r   rU   r}   r   T)rZ   r   r  r   r  r   r  r  obliquerW   rX   )r   r   rZ   r[   r  r  serifr6   )r(   r   rZ   r  r   r@   r]   axisr`   rJ   rE  s     r!   test_basic_wrapr  S  s    
**V
$CHH^	*A HHQ1"48HHQ1"48HHQ13T:HHQA)D"HHQ1WHtLHHRA&3T:r#   zfonttext_wrap.pngc            
      |   t        j                  d      } t        j                  g d       d}t        j                  dd|ddd	d
d       t        j                  dd|dd	d
d       t        j                  dd|dddd       t        j                  dd|ddd       t        j                  dd|ddd	dd       y )Nr   r   r  r  r   r  r  r  r}   r   T)r   r(   rZ   r   r  r   r  r5   )r(   rZ   r   r  r  heavyrW   rX   )r2   rZ   r[   r  r  	monospacer   )r(   rZ   r  r   r'   r6   r  )r   r   rZ   r   r  r  r  s     r!   test_font_wrapr  c  s    
**V
$CHH^	*A HHQA7vHHQ1\frMHHQAg(u4HHHQ1[W4@HHRA(vr#   c                      t               } t        j                  ddd      }|D ]  }| j                  |      }|dv rJ  y )Nr   皙v@r+   )rW   r}   r   )r   r   arange_ha_for_angletext_instanceanglesangler   s       r!   test_ha_for_angler  s  sI    FMYYq%%F 8!//6	77778r#   c                      t               } t        j                  ddd      }|D ]  }| j                  |      }|dv rJ  y )Nr   r  r+   )rW   rX   r   )r   r   r  _va_for_angler  s       r!   test_va_for_angler  {  sI    FMYYq%%F :!//6	9999:r#   zxtick_rotation_mode.pngF)r   r   c                  (   t        j                  d      \  } }|j                  g        |j                         }|j	                  t        d      dgdz  d       |j	                  t        d      dgdz  d       t        j                  ddd      }t        |j                         |      D ]  \  }}|j                  |        t        |j                         |      D ]  \  }}|j                  |        t        j                  d	d
dd       y )N)r   rU   r   %   r   xtickr   r   r   {Gz?Gz?r   r9   r}   r   rX   r~   )r@   rA   rI   twinyrH   r   r   r   r   get_xticklabelsset_rotationsubplots_adjustrJ   rK   rc  r  tickr  s         r!   test_xtick_rotation_moder    s    ll7+GCMM"
((*CMM%)eWr\MANN59ugl'NB[[C$F2--/8 !e% !3..0&9 !e% ! T2bAr#   zytick_rotation_mode.pngc                  (   t        j                  d      \  } }|j                  g        |j                         }|j	                  t        d      dgdz  d       |j	                  t        d      dgdz  d       t        j                  ddd      }t        |j                         |      D ]  \  }}|j                  |        t        |j                         |      D ]  \  }}|j                  |        t        j                  d	d
dd       y )N)rU   r   r   r  r   ytickr  r   r   r9   r   r  r  r  )r@   rA   rH   twinxrI   r   r   r   r   get_yticklabelsr  r  r  s         r!   test_ytick_rotation_moder    s    ll7+GCMM"
((*CMM%)eWr\MANN59ugl'NB[[C$F2--/8 !e% !3..0&9 !e% ! SSAr#   c                  2   t        j                         \  } }|j                  d       |j                  dd       |j	                  ddd      }|j                  | j                  j                               }t        j                  |j                        rJ y )NlogrU   r:   r   invalid)r@   rA   
set_yscaler   r`   get_tightbboxr   r   r   isfiniter  )rJ   rK   invalid_textinvalid_bboxs       r!   (test_text_tightbbox_outside_scale_domainr    sw     llnGCMM%KK3771b),L--cjj.E.E.GHL{{<--....r#   c           
      ~    d}d}||z   |z   }| j                  dd|ddd       | j                  dd|dddg d	
       y )Nu   Arabic: رَقْمu   ∏∐∑∫r;   r   rI  rW   rY   r   )cmr10zDejaVu Sans Displayr/   )r*   rZ   r[   r(   )r`   )rJ   r`   
math_signss      r!   _test_complex_shapingr    s^    
	1 	 WJz)DHHS$2(xH@
 HHS$2(xC  Er#   complex)r  r  r  eps)rd  r   c                  F    t        j                  d      } t        |        y )N)r   rg   r   )r@   r]   r  r   s    r!   test_complex_shapingr    s    
**V
$C#r#   c                 (   | j                  ddddd      }|j                         J | j                  dddddd	g
      }|j                         dk(  sJ | j                  ddddd      }|j                  dg       |j                         dk(  sJ y )NrU   r   zDefault: fi ffi fl strI  r   )r   r   r9   zDisabled: fi ffi fl st-liga)r   r   fontfeatures)r  r+   zDiscretionary: fi ffi fl stdlig)r  )r`   get_fontfeaturesset_fontfeaturesr  s     r!   _test_text_featuresr    s    C0' 	 	;A'''C1'&i 	 	)A ;...C6' 	 	;Ax :---r#   features)r   r   rd  c                  F    t        j                  d      } t        |        y )N)r  r   r   )r@   r]   r  r   s    r!   test_text_featuresr    s     **X
&Cr#   zinput, match)rU   rg   r  zmust be list of tuple)rU   rg   )enr   rg   zstart location must be int)r  rU   r   zend location must be intc                     t        j                  t        |      5  t        ddd|        d d d        y # 1 sw Y   y xY w)Nr   r   r   )language)r   r   r  r   )inputr   s     r!   test_text_language_invalidr    s5     
y	. *Q55)* * *r  c                    | j                  dddd      }|j                         J | j                  dddd      }|j                         J | j                  ddd	d      }|j                         J | j                  dd
dd      }|j                         J d}| j                  dd|d      }|j                         J | j                  dd|dd      }|j                         dk(  sJ | j                  dd|d      }|j                  d       |j                         dk(  sJ | j                  dd
|dz  dg d      }|j                         dk(  sJ d}| j                  dd|d      }|j                         J t        j                  ddi      5  | j                  dd|d      }d d d        |j                         dk(  sJ | j                  dd|dd      }|j                         dk(  sJ | j                  dd
|dz  d      }|j                  d       |j                         dk(  sJ y # 1 sw Y   xY w)Nr   r\   DefaultrI  rv  g?zLang Ar7   zLang Br  Mixedu   бr9   sr)r   r  rur   ))r  r   rU   )r  rU   rg   )r  rg   r  )r  r  r   u   Ŋr   ztext.languager  smn))r  r   rU   )r  rU   rg   )r  rg   r  )r  r  r   )r`   get_languageset_languager@   r!  )rJ   rE  cyrilliclatins       r!   _test_text_languager    sj   CR0A>>###D(R0A>>###CB/A>>###D'B/A>>### Hc8b1A>>###dHrDAA>>t###c8b1ANN4>>t###dHqL2R 	 	TA>>WWWW Ec52.A>>###	$/	0 4HHS$H34>>t###c52>A>>u$$$dEAI3ANNMN>>  B B B B4 4s   H99Ir  c                  F    t        j                  d      } t        |        y )N)r  r  r   )r@   r]   r  r   s    r!   test_text_languager    s     **V
$Cr#   zdraw_text_fallback.pngc                     | j                  d       g d}t        j                  dt        |      f      }|j	                  dd|      }t        |d          t        |d          t        |d	          y )
Nz5matplotlib.backends.backend_agg.RendererAgg.draw_text)rg   r   r  r   r   r  rU   )height_ratiosr   rg   )delattrr@   r]   sum
subfiguresr  r  r  )monkeypatchheightsrJ   r  s       r!   test_draw_text_as_path_fallbackr    sg     OPG
**aW.
/C^^Aq^8F&)$q	"q	"r#   )r   rC  r.  r  r=   numpyr   numpy.testingr   packaging.versionr   parse_version	pyparsingr   
matplotlibr   matplotlib.backend_basesr   matplotlib.backends.backend_aggr   matplotlib.figurer   r<   r	   r
   r   matplotlib.patchespatchesrp   matplotlib.pyplotpyplotr@   matplotlib.gridspecr   matplotlib.transforms
transformsr  matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.textr   r   r   __version__pyparsing_versionrR   rd   r   r   r   r   markparametrizer  printr5  r   r   r   r   r   r   r  r   r(  r+  r1  r6  r8  r;  r?  rF  rV  r\  rf  rk  rr  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  xfailreleaser  r"  r;  rE  rQ  rV  r]  rc  ri  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#   r!   <module>r     s\    	  	   - 4    / 7 $ I I %  ( + O 4 8 8!)"7"78  =/1U 2Up ;-w/ 0. <.0-6 1-6` $%W5- 6-$ &'w7 8<	. /UVAGH9:ABHI=>2  8*G, - #$G4 5. #8"9"$5$5 $%W5D 6D"@C4 "c+0FG H;
4
;
$
5@
 :;  ? @P@ <P ?#73/ 4/ 67wG H6 78H I6. &'w7 8* %&g6> 7> -/KL* M*(4
 3 3    56* 7* -.oF= G= -.oF! G!&& P P ./w? @ 22=9 ?: 
$ 
$$$( &6%=>- ?-/ $,,	9M  OO $,,	9M  OO "# "#J$66 5C$    562 72  562 72$9N ;F52 * '(8; 9; &'w7 88: ,-5PB QB$ ,-5PB QB"	/E$ 9+*FgV W
. :,E9;;
 	+,
*+
	9:
	78	**
%BP :,E9;;
 +,G<# =#r#   