
    Mh[                        S SK rS SKrS SKJr  S SKJr  S SKrS SK	J
r  S SKJr  \R                  R                  SSSS/SS//S	S
/S	S/S	S/S.4SSS/S\R                   /SS/// SQ/ SQ/ SQS.4/5      S 5       r\R                  R                  SSSS/SS//SS
/SS/SS/S.4SSS/S\R                   /SS/\R                   S/// SQ/ SQ/ SQS.4/5      S 5       r\R                  R                  SSSS/S
S	/SS	/SS	/S.4SSS\R                   // SQ/ SQ/ SQS.4/5      S 5       r\R                  R                  SSSSS \R                   /\R(                  " S!S!/SS /S"94SSSS \R                   /\R(                  " / S#QSS \R                   /S"94/5      S$ 5       r\R                  R                  S%S\R(                  " S&S'/SS /S(S)94S\R(                  " / S*QSS \R                   /S(S)94/5      S+ 5       r\R                  R                  S,S-5      S. 5       r\R                  R                  S/\R0                  " S S05      \" S15      \R4                  R7                  S2S3/S4S5/S69/5      S7 5       r\R                  R                  SSSS/SS//S	S
/SS/SS/S.4SSS/S\R                   /SS/// SQ/ S8Q/ S9QS.4/5      S: 5       r\R                  R<                  \R                  R                  S;\R>                  " S<5      \R>                  " S=5      4\R@                  " S>5      \R@                  " S?5      4\RB                  " S<5      \RB                  " S=5      4/5      \R                  R                  S@SSAS!/4S/ SBQ4/5      SC 5       5       5       r"\R                  R                  SD\RF                  " SSSS \R                   // SEQSF.SG/ SHQ0SS \R                   /SISJ9\RF                  " SSSS \R                   // SEQSF.SG/ SKQ0SSLSJ9\RF                  " S/ SMQ/ SEQSF.SG/ SHQ0SSNSJ9\RF                  " S/ SMQ/ SEQSF.SG/ SHQ0SSOSJ9/5      SP 5       r$\R                  R                  SQSS/SS //5      \R                  R                  SRS/SS //5      \R                  R                  SSSS/5      ST 5       5       5       r%SU r&SV r'\R                  R                  SW\(" SX5      5      \R                  R                  SYSSZS[S\S]S^S_S`SaSbSaScSdSe\RF                  " Sf\R                  RS                  \SgSh9Si9SjSkSl/5      \R                  R                  SmSS/5      Sn 5       5       5       r*\R                  R                  SmSS/5      \R                  R                  SY\+S/5      So 5       5       r,\R                  R                  Sp/ SqQ5      Sr 5       r-Ss r.\R                  R                  StSuSv/5      Sw 5       r/Sx r0Sy r1g)z    N)pa_version_under10p1)na_value_for_dtype)get_groupby_method_argszdropna, tuples, outputsTAB      *@Q^@     ^@      ?cdeF)r   皙(@r	   )r         m@r
   )r         (@r   c                    / SQSUSSS// SQ/ SQ/n[         R                  " U/ SQS	9nUR                  S
S/U S9R                  5       n[         R                  R                  U[        S5      S9nU (       d!  UR                  SS[        R                  /SS9n[         R                  " X'S9n[        R                  " Xh5        g )Nr   r      r   r   r   r   r   r   r   r   r	   {      r   r   r   r   r   abr   r   r   columnsr   r   dropnaabnamesr   levelindexpd	DataFramegroupbysum
MultiIndexfrom_tupleslist
set_levelsnpnantmassert_frame_equal)	r    tuplesoutputsnulls_fixturedf_listdfgroupedmiexpecteds	            Z/var/www/html/env/lib/python3.13/site-packages/pandas/tests/groupby/test_groupby_dropna.py:test_groupby_dropna_multi_index_dataframe_nan_in_one_groupr>      s    0 		mT5"-"	G 
g'@	ABjj#sFj3779G		"	"6d	"	<B ]]Cbff-S]9||G.H',    r   )r   g*@r	   r   )r   g     @m@r
   r   )r   r   r   r   c           	         / SQSUSSS// SQUSSSS	/SUSSS	//n[         R                  " U/ S
QS9nUR                  SS/U S9R                  5       n[         R                  R                  U[        S5      S9nU (       d5  UR                  SS[        R                  /SS[        R                  //5      n[         R                  " X(S9n	[        R                  " Xy5        g )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r"   r&   r(   )
r    r5   r6   r7   nulls_fixture2r8   r9   r:   r;   r<   s
             r=   ;test_groupby_dropna_multi_index_dataframe_nan_in_two_groupsrB   8   s    0 		mT5"-"	aC(	naC(G 
g'@	ABjj#sFj3779G		"	"6d	"	<B ]]S#rvv.c2660BCD||G.H',r?   zdropna, idx, outputs)r   r   r   )r	   r   r   )r
   r   r   )r   r   r   c           	         / SQ/ SQ/ SQ/ SQ/n[         R                  " U/ SQS9nUR                  SU S9R                  5       n[         R                  " U[         R                  " US	SS
9S9n[
        R                  " XV5        g )N)r   r   r   r   )Nr   r   r   )r   r	   r   r   )r   r   r   r   )r   r   r   r   r   r   r   objectdtypenamer&   )r)   r*   r+   r,   Indexr3   r4   )r    idxr6   r8   r9   r:   r<   s          r=   *test_groupby_dropna_normal_index_dataframerJ   d   sp    $ 		G 
g';	<BjjVj,002G||G288Cxc+RSH',r?   zdropna, idx, expectedr   r      r&   )rK   rK   rK   c                     [         R                  " / SQUS9nUR                  SU S9R                  5       n[        R
                  " XB5        g )N)r      rK   rK   r&   r   )r%   r    )r)   Seriesr+   r,   r3   assert_series_equal)r    rI   r<   serresults        r=    test_groupby_dropna_series_levelrR      s=     ))L
,C[[q[0446F6,r?   zdropna, expected     @j@     u@	Max Speedr'   rG   )rS   rT         4@c                     [         R                  " / SQ/ SQSS9nUR                  SSS[        R                  /U S9R                  5       n[        R                  " X15        g )N)g     `x@rT   g      >@rW   )FalconrY   ParrotrZ   rU   rV   r   r   r   )r)   rN   r+   r1   r2   meanr3   rO   )r    r<   rP   rQ   s       r=   test_groupby_dropna_series_byr\      sS     ))"6C [[#sC0[@EEGF6,r?   r    )FTc                     [         R                  " / SQ/ SQS.5      nUR                  SU S9nUR                  R                  U :X  d   eg )Nr   r   r   Nr   rM   rK   Nr   r   r   r   )r)   r*   r+   _grouperr    )r    r9   gbs      r=   test_grouper_dropna_propagationrc      sA     
O/B	CB	C	'B;;'''r?   r'      abcd)r   rM   )Rr   numcolr"   c                 ,   SSSSU (       a  [         R                  OS/0n[        R                  " / SQ/ SQS.US9nUR	                  SU S	9nUR                  [        5      n[        R                  " X!S9n[        R                  " XV5        US/   R                  [        5      n[        R                  " X!S9n[        R                  " XV5        US   R                  [        5      n[        R                  " US   USS
9n[        R                  " XV5        g )Nr   rM   r   r^   r_   r`   r&   r   r   rV   )r1   r2   r)   r*   r+   	transformlenr3   r4   rN   rO   )r    r'   expected_datar9   rb   rQ   r<   s          r=   +test_groupby_dataframe_slice_then_transformrm      s     1afBFF!<=M	O/B%	PB	C	'B\\#F||M7H&+Y  %F||M7H&+Ws#Fyys+5sCH6,r?   )r   r   r
   )r   r   r   c                    / SQ/ SQ/ SQ/ SQ/n[         R                  " U/ SQS9nSSS	S
.nUR                  SS/U S9R                  U5      n[         R                  R                  U[        S5      S9nU (       d!  UR                  SS[        R                  /SS9n[         R                  " X'S9n[        R                  " Xh5        g )Nr   )r   Nr   r   r   r   r   r   r   r,   maxminr   r   r   r   r!   r"   r   r   r$   r&   )r)   r*   r+   aggr-   r.   r/   r0   r1   r2   r3   r4   )	r    r5   r6   r8   r9   agg_dictr:   r;   r<   s	            r=   -test_groupby_dropna_multi_index_dataframe_aggrs      s    , 	$"	G 
g'@	ABU3Hjj#sFj377AG		"	"6d	"	<B ]]Cbff-S]9||G.H',r?   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rK      c           	      B   [         R                  " / SQUUUUUU/S.5      nU (       a  X#/nOX#[        R                  /nUR	                  SU S9R                  SS05      n[         R                  " SU0[         R                  " USS9S9n	[        R                  " X5        g )	N)r   rM   rK   rd      rt   )valuesdtrx   r   rw   r,   rG   r&   )	r)   r*   r1   r2   r+   rq   rH   r3   r4   )
r    rw   	datetime1	datetime2unique_nulls_fixtureunique_nulls_fixture2r9   indexesr:   r<   s
             r=   &test_groupby_dropna_datetime_like_datar      s     
($%
	

B (0jjfj-118U2CDG||Xv.bhhwT6RSH',r?   z#dropna, data, selected_data, levels)
   r         )groupsrw   rw   )r   r   r   r   dropna_false_has_nan)id)r   r   r   dropna_true_has_nan)r   r   r   r   dropna_false_no_nandropna_true_no_nanc                    [         R                  " U5      nUR                  SU S9nSn[        R                  " [
        US9   UR                  S 5      nS S S 5        [        [        US   US   5      5      n[         R                  R                  USS /S9n	U (       d  U(       a  U	R                  USS9n	[         R                  " X)S	9n
[        R                  " WU
5        g ! , (       d  f       N= f)
Nr   r   z7DataFrameGroupBy.apply operated on the grouping columnsmatchc                 V    [         R                  " S[        [        U 5      5      05      $ )Nrw   )r)   r*   rangerk   )grps    r=   <lambda>@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>I  s    bllHeCHo3N&Or?   rw   r"   r$   r&   )r)   r*   r+   r3   assert_produces_warningDeprecationWarningapplytuplezipr-   r.   r0   r4   )r    dataselected_datalevelsr9   rb   msgrQ   	mi_tuplesr;   r<   s              r=   .test_groupby_apply_with_dropna_for_multi_indexr     s    L 
d	B	HV	,B
CC		#	#$6c	BOP 
C c$x.-*ABCI		"	"9Xt4D	"	EB f]]6]2||M4H&(+ 
C	Bs   C""
C0input_indexkeysseriesc                 r   [         R                  " S[        R                  /SS/SS/S.5      nUR	                  U5      nU(       a  US   nOU SS/:X  a  US/:X  a  US/   nU b  UR	                  U 5      nUR                  USS	9nU(       a  US   nUR                  5       n[        R                  " Xd5        g )
Nr   rM   rK   r   r   r   r   r   r   Fr   )	r)   r*   r1   r2   	set_indexr+   r,   r3   assert_equal)r   r   r   objr<   rb   rQ   s          r=   )test_groupby_dropna_with_multiindex_inputr   V  s    
 ,,RVVQQ	
C }}T"HC=	c
	"tu}SE?mmK(	T%	(BWVVXFOOF%r?   c            
         S[         R                  SS[         R                  // SQS.n [        R                  " U 5      nUR	                  SSS9nUR
                  n[         R                  nS[         R                  " SS	/US
9S[         R                  " S/US
9[         R                  [         R                  " SS/US
90n[        UR                  5       UR                  5       5       H  u  pg[        R                  " Xg5        M     [         R                  " [        UR                  5       5      S	   5      (       d   e[        UR                  5       5      SS	 SS/:X  d   eg )Ng1g2)r   r   rM   rK   rd   )groupr   r   Fr   r   rM   rF   rK   r   rd   )r1   r2   r)   r*   r+   indicesintparrayr   rw   r3   assert_numpy_array_equalisnanr/   r   )r   r9   r:   rQ   rF   r<   result_valuesexpected_valuess           r=   test_groupby_nan_includedr   t  s   BFFD$7oND	d	Bjjj/G__FGGEbhh1vU+bhhs%(
!Qu-H
 +.fmmox?P*Q&
##MC +R88D'*++++q#d|333r?   c                      [         R                  " [        R                  SS/// SQS9n U R	                  SS/5      n U R                  SS/SS9R                  5       nU n[        R                  " X5        g )	Nr   r   r   r   r   r   Fr   )	r)   r*   r1   r2   r   r+   firstr3   r4   )r9   rQ   r<   s      r=   &test_groupby_drop_nan_with_multi_indexr     sc    	1~&	@B	sCj	!BZZc
5Z1779FH&+r?   sequence_indexQ   rF   UInt8Int8UInt16Int16UInt32Int32UInt64Int64Float32Float64categorystringstring[pyarrow]zpyarrow is not installed)reason)marksdatetime64[ns]	period[d]zSparse[float]test_seriesc           	      Z   SR                  [        S5       Vs/ s H  nSSSS.U SU-  -  S-     PM     sn5      nUS;   a  SS[        R                  S	.nO/US
;   a  SS[        R                  S	.nOSS[        R
                  S	.n[        R                  " [        R                  " U Vs/ s H  ovU   PM	     snUS9/ SQS.5      nUR                  SSSUSS9n	U(       a  U	S   n	U	R                  5       n
0 n[        U5       H  u  pUR                  US5      U-   X'   M     US:X  aA  [        R                  " U Vs/ s H  oU   PM	     snUS   R                  R                  SS9nO[        U[         5      (       aR  UR#                  S5      (       a<  [        R$                  " [        R&                  " U Vs/ s H  ovU   PM	     snUS9SS9nO)[        R$                  " U Vs/ s H  ovU   PM	     snUSS9n[        R                  " UR)                  5       USS S9nU(       d  UR+                  5       nU(       d@  UR-                  5       nUb-  UR#                  S5      (       a  US   R/                  U5      US'   [0        R2                  " X5        g s  snf s  snf s  snf s  snf s  snf )N rd   xyz)r   r   rM   rK   )r   r   )r   r   r   )r   r   z
2016-01-01z
2017-01-01r   rM   r   )r   r   rM   rK   )keyr   r   F)r    sortas_indexobservedr   r   r   ry   SparserE   )r'   rG   rF   )joinr   r)   NAr1   r2   r*   rN   r+   r,   	enumerategetCategoricalIndexcat
categories
isinstancestr
startswithrH   r   rw   to_framereset_indexastyper3   r   )r   rF   r   r   ksequenceuniqueslabelr9   rb   rQ   summedrI   r   r'   r<   s                   r=   test_no_sort_keep_nar     sc   F wwINqRASSS	!.QT":Q">	?RH
 --#BEE2	1	1$<beeD/	99(C(en(C5Q	

B 
E%ehQV	WBWVVXF F)


5!,s2 *
##!'(AQZ(uIMM$$

 
E3		E$4$4X$>$>HH&9&en&9Ge
 f=fU%.f=UQVWyyCtLH$$&'')!1!1(!;!;&uo44U;HUOOOF%_ 	S D  ) : >s   J*J=J9J#%J(c                    [         R                  " SSS/05      n[         R                  " X#/US9nU(       a  US   OUnUR                  USU S9nUR	                  5       n	[         R
                  " [        UR                  5      /5      n
[         R                  " SS/0U
S9nU(       a  [        R                  " XS   5        g [        R                  " X5        g )	Nr   r   rM   r   F)r    r   rK   r&   )r)   r*   rN   r+   r,   rH   r   rF   r3   rO   r4   )r   rF   r7   rA   r   r9   r   r   rb   rQ   r'   r<   s               r=   test_null_is_null_for_dtyper     s     
sQFm	$BYY6eDF "S'bC	VE	5BVVXFHH(678E||S1#Je4H
v}5
f/r?   
index_kind)r   singlemultic                    [         R                  " [         R                  R                  S5      R	                  / SQSS9S 5      n[
        R                  " [
        R                  " U/ SQS9[        S5      S.5      nUR                  5       n[
        R                  " U/ S	QS9R                  S
5      US'   US:X  a  S/nOfUS:X  a&  S/nUR                  S5      nUR                  S5      nO:SS/nUS   US'   UR                  SS/5      nUS   US'   UR                  SS/5      n[        X5      n	[        X5      n
U S:X  a,  US:X  a&  U	S   R                  US94n	U
S   R                  US94n
UR                  USXUS9nU(       d7  U S;   a1  [        R                   " ["        SS9   [%        X5      " U	6   S S S 5        g UR                  XUSS9n[%        X5      " U
6 R'                  5       nUS   R(                  R+                  S
/5      US'   US:X  a"  US   R(                  R+                  S
/5      US'   U(       a,  US:X  a  UR                  SS/5      nOBUR                  S5      nO0US:w  a*  U S:w  a$  UR                  SS9nUS:X  a  UR                  SS9nU S;   a  US:w  a  US   R,                  R/                  5       nUS:X  aB  U Vs/ s H  oS
:X  a  [         R0                  OUPM     nn[
        R                  " U/ SQS9US'   O;U Vs/ s H*  oS:X  a   [         R0                  [         R0                  4OUPM,     nnX]S'   U S:X  a,  UR3                  SS0S9nU(       a  US   R3                  S 5      nU(       d  US:X  d  U S:X  a  S nO[4        nSn[6        R8                  " UUS9   [%        X5      " U	6 nS S S 5        [6        R:                  " WU5        g ! , (       d  f       g = fs  snf s  snf ! , (       d  f       NA= f)NrM   r   rM   N   sizer   rM   rK   r   r   r   r   )r   rM   rK   rd   rd   r   r   r   x2corrwithr   r   Fr    r   r   r   )idxminidxmaxz(empty group due to unobserved categoriesr   T)r   r   r   r   r   )r   r   r   )rd   rd   z*A grouping .* was excluded from the result)r1   appendrandomdefault_rngchoicer)   r*   Categoricalr   copyfillnar   r   dropr+   pytestraises
ValueErrorgetattrr   r   remove_categoriesrw   tolistr2   renameFutureWarningr3   r   r   )reduction_funcr   r   r   r   rw   r9   	df_filledr   argsargs_filled	gb_keepna	gb_filledr<   r   warnr   rQ   s                     r=   test_categorical_reducersr    s    YYryy,,Q/66|"6MtTF	nnV	:rK
B
 	I^^F|DKKANIcNWu	x	u\\#'',	T{c74\\3+&#C.	$''d4	">6D).DK#
g(=QT*,"1~**4*8:

UX8  I *>>]]H
 I.5
 	!!$t!TIy1;?KKMHSM%%77<HSMW!$++==qcB ))3+6H))#.H	w	>V#;===- }}T}2H--*2G#%%,,.!7=>v!QbffA-vF>NN6iHHSMFLMfv+rvvrvv&1<fFM"SM??Av;?7'..t4H:(Nf,D
6C		#	#D	43T: 
5 OOFH%[
 
 	* ? N 
5	4s$   %O
!O(1O-(O2
O%2
P c                 ,   US:X  a/  SnU R                  [        R                  R                  USS95        [        R
                  " [        R                  R                  S5      R                  / SQSS9S 5      n[        R                  " [        R                  " U/ S	QS
9[        S5      S.5      n[        X5      nXwS   R                  5          S   n	US:X  a  [        [        [!        U	5      5      5      n
OUS:X  aw  U(       a3  U(       a  US   R#                  SS9S-
  nOCUS   R#                  SS9S-
  nO-UR$                  S U	R&                  S    S   R#                  5       n[!        U	5      U/-  n
O[)        X5      " U6 n
[        R                  " SU
05      nUR+                  SSX#US9nUR+                  SSX#S9nSnUS:X  a2  [,        R.                  " [0        US9   [)        US5      " U6 nS S S 5        O[)        X5      " U6 n[)        X5      " U6 n[3        XwS   R                  5          R&                  R5                  5       UR6                  R9                  5       5       H8  u  nnUR:                  S:X  a  UUR$                  U'   M'  UUR$                  US4'   M:     US:X  a0  UUS   R=                  5       UR?                  W5      -  ==   S-  ss'   US;  a  URA                  S5      n[,        RB                  " WU5        g ! , (       d  f       GN= f)Nr   zBGH#49651 fillna may incorrectly reorders results when dropna=FalseF)r   strictrM   r   r   r   r   r   r   r   r   r   cumcountngroupr   r   r   r   T)r    r   r   zLThe default fill_method='ffill' in DataFrameGroupBy.pct_change is deprecated
pct_changer   )rankdiffr  shiftint64)"applymarkerr   markxfailr1   r   r   r   r   r)   r*   r   r   r   isnullr/   rk   nuniqueilocr'   r  r+   r3   r   r  r   r  rw   ravelndimnotnullger   r   )requesttransformation_funcr   r   r   r   rw   r9   r
  null_group_valuesnull_group_datana_groupnull_group_resultr  	gb_dropnarQ   r<   r  values                      r=   test_categorical_transformersr+  M  s    h&RFKK--S-GHYYryy,,Q/66|"6MtTF	nnV	:rK
B ##6;D c7>>+,S1j(uS):%;<=		(c7??%?81< c7??%?81<ww;!2!8!8!;<SAIIKH/0H:=!"3I4Pc?%;<

EH(  I 

3th
JI
XCl*''SAY5t<F BA 8$?y6=H
c7>>""))+->-E-E-K-K-Me ==A"'HMM$%*HMM$'" h&C"X[[%::;q@;"II??7+OOFH%% BAs   L
Lmethodheadtailc                 B   [         R                  R                  S5      R                  / SQS5      n[        R
                  " [        R                  " U/ SQS9[        [        U5      5      S.5      nUR                  SSXUS	9n[        X`5      " 5       nU S
:X  a  US S S2   nUS:H  US:H  R                  5       S:*  -  US:H  US:H  R                  5       S:*  -  -  US :H  US :H  R                  5       S:*  -  -  nU S
:X  a  US S S2   nXX   n	[        R                  " Xy5        g )NrM   r   r   r   r   r   r   Fr   r.  r   rv   )r1   r   r   r   r)   r*   r   r   rk   r+   r  cumsumr3   r4   )
r,  r   r   r   rw   r9   rb   rQ   maskr<   s
             r=   test_categorical_head_tailr3    s#    YY""1%,,\2>F	nnV	:s6{AST
B 
Ch	WBR "F" A+6Q;..0A5	6aKVq[002a78	: dN$668A=>	@ 	 DbDzxH&+r?   c                  x   [         R                  R                  S5      R                  / SQS5      n [        R
                  " [        R                  " U / SQS9[        [        U 5      5      S.5      nUR                  SSSS	9nUR                  S
 5      nUR                  5       n[        R                  " X45        g )NrM   r   r   r   r   r   r   Fr    r   c                 "    U R                  5       $ Nr,   r   s    r=   r   &test_categorical_agg.<locals>.<lambda>  s
    aeegr?   )r1   r   r   r   r)   r*   r   r   rk   r+   rq   r,   r3   r4   rw   r9   rb   rQ   r<   s        r=   test_categorical_aggr<    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6BVV%&FvvxH&+r?   c                  z   [         R                  R                  S5      R                  / SQS5      n [        R
                  " [        R                  " U / SQS9[        [        U 5      5      S.5      nUR                  SSSS	9nUR                  S
 5      nUR                  S5      n[        R                  " X45        g )NrM   r   r   r   r   r   r   Fr5  c                 "    U R                  5       $ r7  r8  r9  s    r=   r   ,test_categorical_transform.<locals>.<lambda>  s
    AEEGr?   r,   )r1   r   r   r   r)   r*   r   r   rk   r+   rj   r3   r4   r;  s        r=   test_categorical_transformr@    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6B\\+,F||E"H&+r?   )2numpyr1   r   pandas.compat.pyarrowr   pandas.core.dtypes.missingr   pandasr)   pandas._testing_testingr3   pandas.tests.groupbyr   r  parametrizer2   r>   rB   rJ   rN   rR   r\   rc   
RangeIndexr/   r-   from_productrm   rs   arm_slow	Timestamp	TimedeltaPeriodr   paramr   r   r   r   r   skipifr   rD   r   r  r+  r3  r<  r@   r?   r=   <module>rR     sP     6 9   8  3Z#s$.e}D#;G	
 3Z#rvvc
3))&	
&-'&-0  3Z#s$.e}D#;G	
 3Z#rvvc
RVVSMB..+	
&-'&-2 	Sz&$udm3PT+VW#rvv))&	
--  	S#rvv&		1a&c
(KL#sBFF#IIiS"&&'9:	

-
- 	ryy%SzLMII*3RVV2D;W	
	-	- =1( 2( 
aV
""FJ#7u~"N--(  3Z#s$.e}C:F	
 3Z#rvvc
3))%	
&-'&-. 	l	#R\\,%?@	i	 ",,y"9:	<	 "))L"9: )TB7OeZ=P+QR- S -: )S#rvv.:JK|$#rvv%	
 	S#rvv.:JKy!$	
 	+7GH|$$	
 	+7GH|$#	
/"F,G"F,( usCj(AB3%#s!45D%=1& 2 6 C&64$, )5;7++$$$-G % 	
 	/8 u65& 79 8<5&p u664.10 2 70" 'CDP& EP&f9&x FF#34, 5,2	,	,r?   