§
    ¨éUgY  ã                   ó`  — d Z ddlmZ ddlZddlZddlmZmZm	Z	 ddl
mZmZ ddlmZ ddlmZmZmZ ddlmZmZ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  ddl!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5  G d„ d¦  «        Z6d„ Z7ej8         9                    de5¦  «        d„ ¦   «         Z:d„ Z;d„ Z<d„ Z=ej8         9                    de5¦  «        d„ ¦   «         Z>d„ Z?d„ Z@d „ ZAd!„ ZBd"„ ZCd#„ ZDd$„ ZEd%„ ZFej8         9                    d& ed'¦  «        d'g¦  «        ej8         9                    d(ed)fed*fg¦  «        d+„ ¦   «         ¦   «         ZGej8         9                    d,d-eHfd.eIfd/„ eIfg¦  «        ej8         9                    d0eeg¦  «        d1„ ¦   «         ¦   «         ZJej8         9                    d2dd)g¦  «        d3„ ¦   «         ZKd4„ ZLd5„ ZMej8         9                    g d6¢d7d*d7 ejN        g d8¢¦  «        gd7d)d7 ejN        g d9¢¦  «        gd7d*d: ejN        g d;¢¦  «        gd7d)d: ejN        g d<¢¦  «        gd7d*d= ejN        d7d*g¦  «        gd7d)d= ejN        g d>¢¦  «        gd7d*d* ejN        d7d*g¦  «        gd7d)d* ejN        d7d)g¦  «        gd*d*d: ejN        d*g¦  «        gd*d)d7 ejN        d*d)g¦  «        gd*d)d: ejN        d*d)g¦  «        gg¦  «        d?„ ¦   «         ZOej8         9                    d@eeg¦  «        dA„ ¦   «         ZPej8         9                    d@eeg¦  «        dB„ ¦   «         ZQej8         9                    d@eeg¦  «        ej8         9                    dCeeeg¦  «        dD„ ¦   «         ¦   «         ZRdE„ ZSej8         9                    dFedGfedHfg¦  «        dI„ ¦   «         ZTdS )Jz'
Testing Recursive feature elimination
é    )Ú
attrgetterN)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)ÚBaseEstimatorÚClassifierMixin)ÚTransformedTargetRegressor)ÚCCAÚPLSCanonicalÚPLSRegression)Ú	load_irisÚmake_classificationÚmake_friedman1)ÚRandomForestClassifier)ÚRFEÚRFECV)ÚSimpleImputer)ÚLinearRegressionÚLogisticRegression)Ú
get_scorerÚmake_scorerÚzero_one_loss)Ú
GroupKFoldÚcross_val_score)Úmake_pipeline)ÚStandardScaler)ÚSVCÚSVRÚ	LinearSVR)Úcheck_random_state)Úignore_warnings)ÚCSR_CONTAINERSc                   óN   — e Zd ZdZdd„Zd„ Zd„ ZeZeZeZ	dd„Z
dd	„Zd
„ Zd„ ZdS )ÚMockClassifierz@
    Dummy classifier to test recursive feature elimination
    r   c                 ó   — || _         d S ©N©Ú	foo_param)Úselfr(   s     úg/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/feature_selection/tests/test_rfe.pyÚ__init__zMockClassifier.__init__"   s   € Ø"ˆŒˆˆó    c                 óª   — t          |¦  «        t          |¦  «        k    sJ ‚t          j        |j        d         t          j        ¬¦  «        | _        | S )Né   )Údtype)ÚlenÚnpÚonesÚshapeÚfloat64Úcoef_©r)   ÚXÚys      r*   ÚfitzMockClassifier.fit%   sB   € Ý�1‰vŒv�˜Q™œÒÐÐÐÝ”W˜QœW QœZ­r¬zÐ:Ñ:Ô:ˆŒ
Øˆr,   c                 ó   — |j         d         S )Nr   )r3   )r)   ÚTs     r*   ÚpredictzMockClassifier.predict*   s   € ØŒw�qŒzÐr,   Nc                 ó   — dS )Ng        © r6   s      r*   ÚscorezMockClassifier.score1   ó   € Øˆsr,   Tc                 ó   — d| j         iS )Nr(   r'   )r)   Údeeps     r*   Ú
get_paramszMockClassifier.get_params4   s   € Ø˜Tœ^Ð,Ð,r,   c                 ó   — | S r&   r>   )r)   Úparamss     r*   Ú
set_paramszMockClassifier.set_params7   s   € Øˆr,   c                 ó
   — ddiS )NÚ	allow_nanTr>   )r)   s    r*   Ú
_more_tagszMockClassifier._more_tags:   s   € Ø˜TÐ"Ð"r,   )r   )NN)T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   r9   r<   Úpredict_probaÚdecision_functionÚ	transformr?   rC   rF   rI   r>   r,   r*   r$   r$      s¨   € € € € € ðð ð#ð #ð #ð #ðð ð ð
ð ð ð €MØÐØ€Iðð ð ð ð-ð -ð -ð -ðð ð ð#ð #ð #ð #ð #r,   r$   c                  óf  — t          d¦  «        } t          ¦   «         }t          j        |j        |                      t          |j        ¦  «        df¬¦  «        f         }|j        }t          d| d¬¦  «        }t          |dd¬	¦  «        }| 
                    ||¦  «         t          |j        ¦  «        |j        d
         k    sJ ‚t          d¬¦  «        }t          |dd¬	¦  «        }| 
                    ||¦  «         t          |                     ¦   «         |                     ¦   «         ¦  «         d S )Nr   é   ©Úsizeé   é   )Ún_estimatorsÚrandom_stateÚ	max_depthé   çš™™™™™¹?©Ú	estimatorÚn_features_to_selectÚstepr.   Úlinear©Úkernel)r    r   r1   Úc_ÚdataÚnormalr0   Útargetr   r   r9   Úranking_r3   r   r   Úget_support)Ú	generatorÚirisr7   r8   ÚclfÚrfeÚclf_svcÚrfe_svcs           r*   Útest_rfe_features_importancero   >   s  € Ý" 1Ñ%Ô%€IÝ‰;Œ;€Dõ 	ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AØŒ€Aå
 ¨b¸yÐTUÐ
VÑ
VÔ
V€CÝ
˜°!¸#Ð
>Ñ
>Ô
>€CØ‡G‚GˆAˆq�M„M€MÝˆsŒ|ÑÔ ¤¨¤
Ò*Ð*Ð*Ð*å˜Ð"Ñ"Ô"€GÝ˜G¸!À#ÐFÑFÔF€GØ‡K‚K��1ÑÔÐõ �s—’Ñ(Ô(¨'×*=Ò*=Ñ*?Ô*?Ñ@Ô@Ð@Ð@Ð@r,   Úcsr_containerc                 ó6  — t          d¦  «        }t          ¦   «         }t          j        |j        |                     t          |j        ¦  «        df¬¦  «        f         } | |¦  «        }|j        }t          d¬¦  «        }t          |dd¬¦  «        }| 
                    ||¦  «         |                     |¦  «        }| 
                    ||¦  «         t          |j        ¦  «        |j        d	         k    sJ ‚t          d¬¦  «        }	t          |	dd¬¦  «        }
|
 
                    ||¦  «         |
                     |¦  «        }|j        |j        j        k    sJ ‚t          |d d
…         |j        d d
…         ¦  «         t          |                     |¦  «        |                     |j        ¦  «        ¦  «         |                     ||¦  «        |                     |j        |j        ¦  «        k    sJ ‚t          ||                     ¦   «         ¦  «         d S )Nr   rR   rS   r`   ra   rZ   r[   r\   r.   é
   )r    r   r1   rc   rd   re   r0   rf   r   r   r9   rP   rg   r3   r   r<   r?   Útoarray)rp   ri   rj   r7   ÚX_sparser8   rk   rl   ÚX_rÚ
clf_sparseÚ
rfe_sparseÚ
X_r_sparses               r*   Útest_rfery   S   sÚ  € å" 1Ñ%Ô%€IÝ‰;Œ;€Dõ 	ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AØˆ}˜QÑÔ€HØŒ€Aõ �XÐ
Ñ
Ô
€CÝ
˜°!¸#Ð
>Ñ
>Ô
>€CØ‡G‚GˆAˆq�M„M€MØ
�-Š-˜Ñ
Ô
€CØ‡G‚GˆC��O„O€OÝˆsŒ|ÑÔ ¤¨¤
Ò*Ð*Ð*Ð*õ ˜HÐ%Ñ%Ô%€JÝ˜zÀÈÐLÑLÔL€JØ‡N‚N�8˜QÑÔÐØ×%Ò% hÑ/Ô/€JàŒ9˜œ	œÒ'Ð'Ð'Ð'Ý˜c # 2 #œh¨¬	°#°2°#¬Ñ7Ô7Ð7å˜cŸkšk¨!™nœn¨c¯kªk¸$¼)Ñ.DÔ.DÑEÔEÐEØ�9Š9�Q˜‰?Œ?˜cŸiši¨¬	°4´;Ñ?Ô?Ò?Ð?Ð?Ð?Ý˜c :×#5Ò#5Ñ#7Ô#7Ñ8Ô8Ð8Ð8Ð8r,   c                  óŽ  —  G d„ dt           t          ¦  «        } t          d¬¦  «        \  }}t          j        t
          d¬¦  «        5  t           | ¦   «         ¬¦  «                             ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5  t           | ¦   «         ¬¦  «                             ||d	¬
¦  «                             ||¦  «         d d d ¦  «         n# 1 swxY w Y   t           | ¦   «         ¬¦  «                             ||d	¬
¦  «                             ||d	¬
¦  «         d S )Nc                   ó   — e Zd Zdd„Zdd„ZdS )ú0test_RFE_fit_score_params.<locals>.TestEstimatorNc                 óœ   — |€t          d¦  «        ‚t          d¬¦  «                             ||¦  «        | _        | j        j        | _        | S )Núfit: prop cannot be Noner`   ra   )Ú
ValueErrorr   r9   Úsvc_r5   ©r)   r7   r8   Úprops       r*   r9   z4test_RFE_fit_score_params.<locals>.TestEstimator.fitw   sH   € Øˆ|Ý Ð!;Ñ<Ô<Ð<Ý 8Ð,Ñ,Ô,×0Ò0°°AÑ6Ô6ˆDŒIØœœˆDŒJØˆKr,   c                 óZ   — |€t          d¦  «        ‚| j                             ||¦  «        S )Núscore: prop cannot be None)r   r€   r?   r�   s       r*   r?   z6test_RFE_fit_score_params.<locals>.TestEstimator.score~   s,   € Øˆ|Ý Ð!=Ñ>Ô>Ð>Ø”9—?’? 1 aÑ(Ô(Ð(r,   r&   )rJ   rK   rL   r9   r?   r>   r,   r*   ÚTestEstimatorr|   v   s<   € € € € € ð	ð 	ð 	ð 	ð	)ð 	)ð 	)ð 	)ð 	)ð 	)r,   r…   T©Ú
return_X_yr~   ©Úmatch©r]   r„   Úfoo)r‚   )	r   r   r   ÚpytestÚraisesr   r   r9   r?   )r…   r7   r8   s      r*   Útest_RFE_fit_score_paramsrŽ   s   s×  € ð)ð )ð )ð )ð )�¥ñ )ô )ð )õ  Ð%Ñ%Ô%�D€A€qÝ	Œ•zÐ)CÐ	DÑ	DÔ	Dð 1ð 1Ý�m�m‘o”oÐ&Ñ&Ô&×*Ò*¨1¨aÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1å	Œ•zÐ)EÐ	FÑ	FÔ	Fð Ið IÝ�m�m‘o”oÐ&Ñ&Ô&×*Ò*¨1¨a°eÐ*Ñ<Ô<×BÒBÀ1ÀaÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iõ �-�-‘/”/Ð"Ñ"Ô"×&Ò& q¨!°%Ð&Ñ8Ô8×>Ò>¸qÀ!È%Ð>ÑPÔPÐPÐPÐPs%   Á-BÂBÂBÂ'AC6Ã6C:Ã=C:c                  óø  — t          d¦  «        } t          ¦   «         }t          j        |j        |                      t          |j        ¦  «        df¬¦  «        f         }|j        }t          d¬¦  «        }t          |dd¬¦  «        }| 
                    ||¦  «         t          |d	d¬¦  «        }| 
                    ||¦  «         t          |j        |j        ¦  «         t          |j        |j        ¦  «         d S )
Nr   rR   rS   r`   ra   rZ   r[   r\   gš™™™™™Ù?)r    r   r1   rc   rd   re   r0   rf   r   r   r9   r   rg   Úsupport_)ri   rj   r7   r8   rk   Úrfe_numÚrfe_percs          r*   Útest_rfe_percent_n_featuresr“   Œ   sä   € å" 1Ñ%Ô%€IÝ‰;Œ;€Dõ 	ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AØŒ€Aå
�XÐ
Ñ
Ô
€CÝ˜C°a¸cÐBÑBÔB€GØ‡K‚K��1ÑÔÐå˜S°sÀÐEÑEÔE€HØ‡L‚L��AÑÔÐå�xÔ(¨'Ô*:Ñ;Ô;Ð;Ý�xÔ(¨'Ô*:Ñ;Ô;Ð;Ð;Ð;r,   c                  ó
  — t          d¦  «        } t          ¦   «         }t          j        |j        |                      t          |j        ¦  «        df¬¦  «        f         }|j        }t          ¦   «         }t          |dd¬¦  «        }| 
                    ||¦  «         |                     |¦  «        }| 
                    ||¦  «         t          |j        ¦  «        |j        d         k    sJ ‚|j        |j        j        k    sJ ‚d S )Nr   rR   rS   rZ   r[   r\   r.   )r    r   r1   rc   rd   re   r0   rf   r$   r   r9   rP   rg   r3   )ri   rj   r7   r8   rk   rl   ru   s          r*   Útest_rfe_mockclassifierr•       sä   € Ý" 1Ñ%Ô%€IÝ‰;Œ;€Dõ 	ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AØŒ€Aõ Ñ
Ô
€CÝ
˜°!¸#Ð
>Ñ
>Ô
>€CØ‡G‚GˆAˆq�M„M€MØ
�-Š-˜Ñ
Ô
€CØ‡G‚GˆC��O„O€OÝˆsŒ|ÑÔ ¤¨¤
Ò*Ð*Ð*Ð*ØŒ9˜œ	œÒ'Ð'Ð'Ð'Ð'Ð'r,   c                 óN	  — t          d¦  «        }t          ¦   «         }t          j        |j        |                     t          |j        ¦  «        df¬¦  «        f         }t          |j        ¦  «        }t          t          d¬¦  «        d¬¦  «        }|                     ||¦  «         |j                             ¦   «         D ]-}t          |j        |         ¦  «        |j        d         k    sJ ‚Œ.t          |j        ¦  «        |j        d         k    sJ ‚|                     |¦  «        }t#          ||j        ¦  «         t          t          d¬¦  «        d¬¦  «        } | |¦  «        }	|                     |	|¦  «         |                     |	¦  «        }
t#          |
                     ¦   «         |j        ¦  «         t'          t(          d¬	¦  «        }t          t          d¬¦  «        d|¬
¦  «        } t+          |j        ¦  «        ||¦  «         |                     |¦  «        }t#          ||j        ¦  «         t-          d¦  «        }t          t          d¬¦  «        d|¬
¦  «        }|                     ||¦  «         |                     |¦  «        }t#          ||j        ¦  «         d„ }t          t          d¬¦  «        d|¬
¦  «        }|                     ||¦  «         |j        dk    sJ ‚t          t          d¬¦  «        d¬¦  «        }|                     ||¦  «         |j                             ¦   «         D ]"}t          |j        |         ¦  «        dk    sJ ‚Œ#t          |j        ¦  «        |j        d         k    sJ ‚|                     |¦  «        }t#          ||j        ¦  «         t          t          d¬¦  «        d¬¦  «        } | |¦  «        }	|                     |	|¦  «         |                     |	¦  «        }
t#          |
                     ¦   «         |j        ¦  «         t          t          d¬¦  «        d¬¦  «        } | |¦  «        }	|                     |	|¦  «         |                     |	¦  «        }
t#          |
                     ¦   «         |j        ¦  «         d S )Nr   rR   rS   r`   ra   r.   ©r]   r_   F)Úgreater_is_better)r]   r_   ÚscoringÚaccuracyc                 ó   — dS )Ng      ð?r>   )r]   r7   r8   s      r*   Útest_scorerztest_rfecv.<locals>.test_scorerß   r@   r,   rV   çš™™™™™É?)r    r   r1   rc   rd   re   r0   Úlistrf   r   r   r9   Úcv_results_Úkeysr3   rg   rP   r   rs   r   r   r!   r   Ún_features_)rp   ri   rj   r7   r8   ÚrfecvÚkeyru   Úrfecv_sparsert   rx   r™   Úscorerrœ   s                 r*   Ú
test_rfecvr¦   ²   s^  € å" 1Ñ%Ô%€IÝ‰;Œ;€Dõ 	ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AÝˆTŒ[ÑÔ€Aõ �C xÐ0Ñ0Ô0°qÐ9Ñ9Ô9€EØ	‡I‚Iˆa��O„O€Oð Ô ×%Ò%Ñ'Ô'ð 9ð 9ˆÝ�5Ô$ SÔ)Ñ*Ô*¨a¬g°a¬jÒ8Ð8Ð8Ð8Ð8åˆuŒ~ÑÔ !¤'¨!¤*Ò,Ð,Ð,Ð,Ø
�/Š/˜!Ñ
Ô
€Cõ �s˜DœIÑ&Ô&Ð&õ ¥3¨hÐ#7Ñ#7Ô#7¸aÐ@Ñ@Ô@€LØˆ}˜QÑÔ€HØ×Ò�X˜qÑ!Ô!Ð!Ø×'Ò'¨Ñ1Ô1€JÝ�z×)Ò)Ñ+Ô+¨T¬YÑ7Ô7Ð7õ �-¸5ÐAÑAÔA€GÝ�C xÐ0Ñ0Ô0°qÀ'ÐJÑJÔJ€EØ…O�E”IÑÔ˜q !Ñ$Ô$Ð$Ø
�/Š/˜!Ñ
Ô
€CÝ�s˜DœIÑ&Ô&Ð&õ ˜
Ñ#Ô#€FÝ�C xÐ0Ñ0Ô0°qÀ&ÐIÑIÔI€EØ	‡I‚Iˆa��O„O€OØ
�/Š/˜!Ñ
Ô
€CÝ�s˜DœIÑ&Ô&Ð&ðð ð õ �C xÐ0Ñ0Ô0°qÀ+ÐNÑNÔN€EØ	‡I‚Iˆa��O„O€Oð Ô Ò!Ð!Ð!Ð!õ �C xÐ0Ñ0Ô0°qÐ9Ñ9Ô9€EØ	‡I‚Iˆa��O„O€OàÔ ×%Ò%Ñ'Ô'ð 0ð 0ˆÝ�5Ô$ SÔ)Ñ*Ô*¨aÒ/Ð/Ð/Ð/Ð/åˆuŒ~ÑÔ !¤'¨!¤*Ò,Ð,Ð,Ð,Ø
�/Š/˜!Ñ
Ô
€CÝ�s˜DœIÑ&Ô&Ð&å¥3¨hÐ#7Ñ#7Ô#7¸aÐ@Ñ@Ô@€LØˆ}˜QÑÔ€HØ×Ò�X˜qÑ!Ô!Ð!Ø×'Ò'¨Ñ1Ô1€JÝ�z×)Ò)Ñ+Ô+¨T¬YÑ7Ô7Ð7õ ¥3¨hÐ#7Ñ#7Ô#7¸cÐBÑBÔB€LØˆ}˜QÑÔ€HØ×Ò�X˜qÑ!Ô!Ð!Ø×'Ò'¨Ñ1Ô1€JÝ�z×)Ò)Ñ+Ô+¨T¬YÑ7Ô7Ð7Ð7Ð7r,   c                  ó(  — t          d¦  «        } t          ¦   «         }t          j        |j        |                      t          |j        ¦  «        df¬¦  «        f         }t          |j        ¦  «        }t          t          ¦   «         d¬¦  «        }|                     ||¦  «         |j                             ¦   «         D ]-}t          |j        |         ¦  «        |j        d         k    sJ ‚Œ.t          |j        ¦  «        |j        d         k    sJ ‚d S )Nr   rR   rS   r.   r—   )r    r   r1   rc   rd   re   r0   rž   rf   r   r$   r9   rŸ   r    r3   rg   )ri   rj   r7   r8   r¢   r£   s         r*   Útest_rfecv_mockclassifierr¨     sô   € Ý" 1Ñ%Ô%€IÝ‰;Œ;€DÝ
ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AÝˆTŒ[ÑÔ€Aõ �NÑ,Ô,°1Ð5Ñ5Ô5€EØ	‡I‚Iˆa��O„O€Oð Ô ×%Ò%Ñ'Ô'ð 9ð 9ˆÝ�5Ô$ SÔ)Ñ*Ô*¨a¬g°a¬jÒ8Ð8Ð8Ð8Ð8åˆuŒ~ÑÔ !¤'¨!¤*Ò,Ð,Ð,Ð,Ð,Ð,r,   c                  ó  — dd l } ddlm}  |¦   «         | _        t	          d¦  «        }t          ¦   «         }t          j        |j        | 	                    t          |j        ¦  «        df¬¦  «        f         }t          |j        ¦  «        }t          t          d¬¦  «        dd¬¦  «        }|                     ||¦  «         | j        }|                     d¦  «         t          |                     ¦   «         ¦  «        dk    sJ ‚d S )	Nr   )ÚStringIOrR   rS   r`   ra   r.   )r]   r_   Úverbose)ÚsysÚiorª   Ústdoutr    r   r1   rc   rd   re   r0   rž   rf   r   r   r9   ÚseekÚreadline)r¬   rª   ri   rj   r7   r8   r¢   Úverbose_outputs           r*   Útest_rfecv_verbose_outputr²     sö   € à€J€J€JØÐÐÐÐÐà�‘”€C„Jå" 1Ñ%Ô%€IÝ‰;Œ;€DÝ
ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AÝˆTŒ[ÑÔ€Aå�C xÐ0Ñ0Ô0°qÀ!ÐDÑDÔD€EØ	‡I‚Iˆa��O„O€Oà”Z€NØ×Ò˜ÑÔÐÝˆ~×&Ò&Ñ(Ô(Ñ)Ô)¨AÒ-Ð-Ð-Ð-Ð-Ð-r,   c                 ó   — t          | ¦  «        }t          ¦   «         }t          j        |j        |                     t          |j        ¦  «        df¬¦  «        f         }t          |j        ¦  «        }ddgddgddgfD ]Ï\  }}t          t          ¦   «         ||¬¦  «        }|                     ||¦  «         t          j        |j        d         |z
  |z  ¦  «        dz   }|j                             ¦   «         D ]"}	t          |j        |	         ¦  «        |k    sJ ‚Œ#t          |j        ¦  «        |j        d         k    sJ ‚|j        |k    sJ ‚ŒÐd S )NrR   rS   rV   r.   é   ©r]   r_   Úmin_features_to_select)r    r   r1   rc   rd   re   r0   rž   rf   r   r$   r9   Úceilr3   rŸ   r    rg   r¡   )
Úglobal_random_seedri   rj   r7   r8   r_   r¶   r¢   Ú	score_lenr£   s
             r*   Útest_rfecv_cv_results_sizerº   )  sc  € Ý"Ð#5Ñ6Ô6€IÝ‰;Œ;€DÝ
ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AÝˆTŒ[ÑÔ€Að +,¨Q¨°!°Q°¸!¸Q¸Ð(@ð ;ð ;Ñ$ˆÐ$ÝÝ$Ñ&Ô&ØØ#9ð
ñ 
ô 
ˆð
 	�	Š	�!�Q‰Œˆå”G˜QœW QœZÐ*@Ñ@ÀDÑHÑIÔIÈAÑMˆ	àÔ$×)Ò)Ñ+Ô+ð 	<ð 	<ˆCÝ�uÔ(¨Ô-Ñ.Ô.°)Ò;Ð;Ð;Ð;Ð;å�5”>Ñ"Ô" a¤g¨a¤jÒ0Ð0Ð0Ð0ØÔ Ð$:Ò:Ð:Ð:Ð:Ð:ð;ð ;r,   c                  óà   — t          t          d¬¦  «        ¦  «        } | j        dk    sJ ‚t          ¦   «         }t	          | |j        |j        ¦  «        }|                     ¦   «         dk    sJ ‚d S )Nr`   ra   Ú
classifiergffffffæ?)r   r   Ú_estimator_typer   r   rd   rf   Úmin)rl   rj   r?   s      r*   Útest_rfe_estimator_tagsr¿   B  sk   € Ý
�c˜Ð"Ñ"Ô"Ñ
#Ô
#€CØÔ ,Ò.Ð.Ð.Ð.å‰;Œ;€DÝ˜C ¤¨D¬KÑ8Ô8€EØ�9Š9‰;Œ;˜ÒÐÐÐÐÐr,   c                 ó  — d}t          d|| ¬¦  «        \  }}|j        \  }}t          d¬¦  «        }t          |d¬¦  «        }|                     ||¦  «        }|j                             ¦   «         |dz  k    sJ ‚t          |d	¬¦  «        }|                     ||¦  «        }|j                             ¦   «         |dz  k    sJ ‚t          |d
¬¦  «        }|                     ||¦  «        }|j                             ¦   «         |dz  k    sJ ‚d S )Nrr   é2   ©Ú	n_samplesÚ
n_featuresrX   r`   ra   g{®Gáz„?©r_   rV   r�   é   )r   r3   r   r   r9   r�   Úsum)r¸   rÄ   r7   r8   rÃ   r]   ÚselectorÚsels           r*   Útest_rfe_min_steprÊ   K  s)  € Ø€JÝØ Ð:Lðñ ô �D€A€qð œGÑ€IˆzÝ˜8Ð$Ñ$Ô$€Iõ �9 4Ð(Ñ(Ô(€HØ
�,Š,�q˜!Ñ
Ô
€CØŒ<×ÒÑÔ ¨q¡Ò0Ð0Ð0Ð0õ �9 4Ð(Ñ(Ô(€HØ
�,Š,�q˜!Ñ
Ô
€CØŒ<×ÒÑÔ ¨q¡Ò0Ð0Ð0Ð0õ �9 1Ð%Ñ%Ô%€HØ
�,Š,�q˜!Ñ
Ô
€CØŒ<×ÒÑÔ ¨q¡Ò0Ð0Ð0Ð0Ð0Ð0r,   c                 ó4  — d„ }d„ }ddg}ddg}ddg}t          |||¦  «        D ]Þ\  }}}t          | ¦  «        }	|	                     d|f¬¦  «        }
|	                     d¦  «                             ¦   «         }t          t          d¬	¦  «        ||¬
¦  «        }|                     |
|¦  «         t          j	        |j
        ¦  «         ||||¦  «        k    sJ ‚t          j	        |j
        ¦  «         ||||¦  «        k    sJ ‚Œßd}ddg}ddg}t          ||¦  «        D ]ú\  }}t          | ¦  «        }	|	                     d|f¬¦  «        }
|	                     d¦  «                             ¦   «         }t          t          d¬	¦  «        |¬¦  «        }|                     |
|¦  «         |j                             ¦   «         D ]X}t          |j        |         ¦  «         ||||¦  «        k    sJ ‚t          |j        |         ¦  «         ||||¦  «        k    sJ ‚ŒYŒûd S )Nc                 ó$   — d| |z   |z
  dz
  |z  z   S ©Nr.   r>   ©rÄ   r^   r_   s      r*   Úformula1z4test_number_of_subsets_of_features.<locals>.formula1l  s"   € Ø�Z $Ñ&Ð)=Ñ=ÀÑAÀdÑJÑKÐKr,   c                 óV   — dt          j        | |z
  t          |¦  «        z  ¦  «        z   S rÍ   )r1   r·   ÚfloatrÎ   s      r*   Úformula2z4test_number_of_subsets_of_features.<locals>.formula2o  s(   € Ø•2”7˜JÐ)=Ñ=ÅÀtÁÄÑLÑMÔMÑMÐMr,   é   r´   rV   éd   rS   r`   ra   r\   r.   rr   r—   )Úzipr    re   ÚrandÚroundr   r   r9   r1   Úmaxrg   r   rŸ   r    r0   )r¸   rÏ   rÒ   Ún_features_listÚn_features_to_select_listÚ	step_listrÄ   r^   r_   ri   r7   r8   rl   r¢   r£   s                  r*   Ú"test_number_of_subsets_of_featuresrÜ   c  s©  € ðLð Lð LðNð Nð Nð ˜2�h€OØ!" A ÐØ�A�€IÝ25ØÐ2°Iñ3ô 3ð Xð XÑ.ˆ
Ð(¨$õ 'Ð'9Ñ:Ô:ˆ	Ø×Ò 3¨
Ð"3ÐÑ4Ô4ˆØ�NŠN˜3ÑÔ×%Ò%Ñ'Ô'ˆÝÝ Ð*Ñ*Ô*Ø!5Øð
ñ 
ô 
ˆð
 	�Š��1‰ŒˆåŒv�c”lÑ#Ô# x x°
Ð<PÐRVÑ'WÔ'WÒWÐWÐWÐWÝŒv�c”lÑ#Ô# x x°
Ð<PÐRVÑ'WÔ'WÒWÐWÐWÐWÐWð ÐØ˜2�h€OØ�A�€IÝ °Ñ;Ô;ð ð Ñˆ
�DÝ&Ð'9Ñ:Ô:ˆ	Ø×Ò 3¨
Ð"3ÐÑ4Ô4ˆØ�NŠN˜3ÑÔ×%Ò%Ñ'Ô'ˆÝ¥¨8Ð 4Ñ 4Ô 4¸4Ð@Ñ@Ô@ˆØ�	Š	�!�Q‰ŒˆàÔ$×)Ò)Ñ+Ô+ð 	ð 	ˆCÝ�uÔ(¨Ô-Ñ.Ô.°(°(ØÐ0°$ñ3ô 3ò ð ð ð õ �uÔ(¨Ô-Ñ.Ô.°(°(ØÐ0°$ñ3ô 3ò ð ð ð ð ð		ðð r,   c                 ó¼  — t          | ¦  «        }t          ¦   «         }t          j        |j        |                     t          |j        ¦  «        df¬¦  «        f         }|j        }t          t          d¬¦  «        ¬¦  «        }| 
                    ||¦  «         |j        }|j        }|                     d¬¦  «         | 
                    ||¦  «         t          |j        |¦  «         |                     ¦   «         |j                             ¦   «         k    sJ ‚|                     ¦   «         D ]-}||         t!          j        |j        |         ¦  «        k    sJ ‚Œ.d S )NrR   rS   r`   ra   rŠ   rV   )Ún_jobs)r    r   r1   rc   rd   re   r0   rf   r   r   r9   rg   rŸ   rF   r   r    rŒ   Úapprox)	r¸   ri   rj   r7   r8   r¢   Úrfecv_rankingÚrfecv_cv_results_r£   s	            r*   Útest_rfe_cv_n_jobsrâ   ¤  sG  € Ý"Ð#5Ñ6Ô6€IÝ‰;Œ;€DÝ
ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AØŒ€Aå�C xÐ0Ñ0Ô0Ð1Ñ1Ô1€EØ	‡I‚Iˆa��O„O€OØ”N€MàÔ)Ðà	×Ò˜AÐÑÔÐØ	‡I‚Iˆa��O„O€OÝ˜eœn¨mÑ<Ô<Ð<à×!Ò!Ñ#Ô# uÔ'8×'=Ò'=Ñ'?Ô'?Ò?Ð?Ð?Ð?Ø ×%Ò%Ñ'Ô'ð Oð OˆØ  Ô%­¬°uÔ7HÈÔ7MÑ)NÔ)NÒNÐNÐNÐNÐNðOð Or,   c            	      ó´  — t          d¦  «        } t          ¦   «         }d}t          j        t          j        d|t          |j        ¦  «        ¦  «        ¦  «        }|j        }|j        dk                         t          ¦  «        }t          t          | ¬¦  «        ddt          d¬¦  «        ¬¦  «        }|                     |||¬	¦  «         |j        dk    sJ ‚d S )
Nr   rZ   ©rX   r.   rš   rV   )Ún_splits)r]   r_   r™   Úcv)Úgroups)r    r   r1   ÚfloorÚlinspacer0   rf   rd   ÚastypeÚintr   r   r   r9   r¡   )ri   rj   Únumber_groupsrç   r7   r8   Ú
est_groupss          r*   Útest_rfe_cv_groupsrî   ¹  sÎ   € Ý" 1Ñ%Ô%€IÝ‰;Œ;€DØ€MÝŒX•b”k ! ]µC¸¼Ñ4DÔ4DÑEÔEÑFÔF€FØŒ	€AØ	Œ�qŠ× Ò ¥Ñ%Ô%€AåÝ(°iÐ@Ñ@Ô@ØØÝ˜qÐ!Ñ!Ô!ð	ñ ô €Jð ‡N‚N�1�a €NÑ'Ô'Ð'ØÔ! AÒ%Ð%Ð%Ð%Ð%Ð%r,   Úimportance_getterzregressor_.coef_zselector, expected_n_featuresrÆ   rZ   c                 ó   — t          ddd¬¦  «        \  }}t          d¬¦  «        }t          |t          j        t          j        ¬¦  «        } ||| ¬¦  «        }|                     ||¦  «        }|j                             ¦   «         |k    sJ ‚d S )NrÁ   rr   r   rÂ   rä   ©Ú	regressorÚfuncÚinverse_func©rï   )	r   r   r	   r1   ÚlogÚexpr9   r�   rÇ   )rï   rÈ   Úexpected_n_featuresr7   r8   r]   Úlog_estimatorrÉ   s           r*   Útest_rfe_wrapped_estimatorrú   Ë  s›   € õ  B°2ÀAÐFÑFÔF�D€A€qÝ qÐ)Ñ)Ô)€Iå.Ø¥"¤&µr´vðñ ô €Mð ˆx˜Ð9JÐKÑKÔK€HØ
�,Š,�q˜!Ñ
Ô
€CØŒ<×ÒÑÔÐ!4Ò4Ð4Ð4Ð4Ð4Ð4r,   zimportance_getter, err_typeÚautoÚrandomc                 ó   — | j         S r&   )Ú
importance)Úxs    r*   ú<lambda>r   ã  s   € �1”<€ r,   ÚSelectorc                 ó8  — t          ddd¬¦  «        \  }}t          ¦   «         }t          |t          j        t          j        ¬¦  «        }t          j        |¦  «        5   ||| ¬¦  «        }|                     ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÁ   rr   é*   rÂ   rñ   rõ   )	r   r   r	   r1   rö   r÷   rŒ   r�   r9   )rï   Úerr_typer  r7   r8   r]   rù   Úmodels           r*   Ú%test_rfe_importance_getter_validationr  Þ  sà   € õ  B°2ÀBÐGÑGÔG�D€A€qÝ‘”€IÝ.Ø¥"¤&µr´vðñ ô €Mõ 
Œ�xÑ	 Ô	 ð ð Ø�˜Ð:KÐLÑLÔLˆØ�	Š	�!�Q‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á$BÂBÂBræ   c                 óL  — t          ¦   «         }|j        }|j        }t          j        |d         d<   t          j        |d         d<   t          ¦   «         }| �t          || ¬¦  «        }nt          |¬¦  «        }| 	                    ||¦  «         | 
                    |¦  «         d S )Nr   r.   )r]   ræ   rŠ   )r   rd   rf   r1   ÚnanÚinfr$   r   r   r9   rP   )ræ   rj   r7   r8   rk   rl   s         r*   Útest_rfe_allow_nan_inf_in_xr
  ó  s–   € å‰;Œ;€DØŒ	€AØŒ€Aõ Œf€A€a„Dˆ�GÝŒf€A€a„Dˆ�Gå
Ñ
Ô
€CØ	€~Ý˜c bÐ)Ñ)Ô)ˆˆå˜CÐ Ñ Ô ˆØ‡G‚GˆAˆq�M„M€MØ‡M‚M�!ÑÔÐÐÐr,   c                  ó  — t          t          ¦   «         t          ¦   «         ¦  «        } t          d¬¦  «        \  }}t	          | dd¬¦  «        }|                     ||¦  «         |                     |¦  «        j        d         dk    sJ ‚d S )NTr†   rV   ú$named_steps.logisticregression.coef_)r^   rï   r.   )r   r   r   r   r   r9   rP   r3   )Úpipelinerd   r8   Úsfms       r*   Útest_w_pipeline_2d_coef_r    s�   € Ý�^Ñ-Ô-Õ/AÑ/CÔ/CÑDÔD€Hå 4Ð(Ñ(Ô(�G€Dˆ!Ý
ØØØ@ðñ ô €Cð ‡G‚GˆD�!ÑÔÐØ�=Š=˜ÑÔÔ$ QÔ'¨1Ò,Ð,Ð,Ð,Ð,Ð,r,   c                 ó„  ‡	— t          | ¦  «        }t          ¦   «         }t          j        |j        |                     t          |j        ¦  «        df¬¦  «        f         }|j        }t          t          d¬¦  «        ¬¦  «        Š	‰	 
                    ||¦  «         d„ ‰	j                             ¦   «         D ¦   «         }t          j        ˆ	fd„|D ¦   «         ¦  «        }t          j        |d¬	¦  «        }t          j        |d¬	¦  «        }t!          ‰	j        d
         |¦  «         t!          ‰	j        d         |¦  «         d S )NrR   rS   r`   ra   rŠ   c                 ó   — g | ]}d |v ¯|‘Œ	S )Úsplitr>   )Ú.0r£   s     r*   ú
<listcomp>z+test_rfecv_std_and_mean.<locals>.<listcomp>  s   € ÐLÐLÐL˜#¸WÈ¸^¸^�#¸^¸^¸^r,   c                 ó*   •— g | ]}‰j         |         ‘ŒS r>   )rŸ   )r  r£   r¢   s     €r*   r  z+test_rfecv_std_and_mean.<locals>.<listcomp>  s!   ø€ ÐIÐIÐI°s˜EÔ-¨cÔ2ÐIÐIÐIr,   r   )ÚaxisÚmean_test_scoreÚstd_test_score)r    r   r1   rc   rd   re   r0   rf   r   r   r9   rŸ   r    ÚasarrayÚmeanÚstdr   )
r¸   ri   rj   r7   r8   Ú
split_keysÚ	cv_scoresÚexpected_meanÚexpected_stdr¢   s
            @r*   Útest_rfecv_std_and_meanr     s$  ø€ Ý"Ð#5Ñ6Ô6€IÝ‰;Œ;€DÝ
ŒˆdŒi˜×)Ò)µ°D´I±´ÀÐ/BÐ)ÑCÔCÐCÔD€AØŒ€Aå�C xÐ0Ñ0Ô0Ð1Ñ1Ô1€EØ	‡I‚Iˆa��O„O€OØLÐL Ô!2×!7Ò!7Ñ!9Ô!9ÐLÑLÔL€JÝ”
ÐIÐIÐIÐI¸jÐIÑIÔIÑJÔJ€IÝ”G˜I¨AÐ.Ñ.Ô.€MÝ”6˜)¨!Ð,Ñ,Ô,€Lå�EÔ%Ð&7Ô8¸-ÑHÔHÐHÝ�EÔ%Ð&6Ô7¸ÑFÔFÐFÐFÐFr,   )r¶   rÄ   r_   Úcv_results_n_featuresr.   )r.   rV   r´   rZ   )r.   rV   r´   rZ   rÆ   rV   )r.   rV   rZ   )r.   r´   rÆ   r´   )r.   rV   rÆ   c                 ó>  ‡— t          d||d¬¦  «        \  }}t          t          d¬¦  «        || ¬¦  «        Š‰                     ||¦  «         t	          ‰j        d         |¦  «         t          ˆfd„‰j                             ¦   «         D ¦   «         ¦  «        sJ ‚d S )	NrU   r   )rÃ   rÄ   Ún_informativeÚn_redundantr`   ra   rµ   rÄ   c              3   ón   •K  — | ]/}t          |¦  «        t          ‰j        d          ¦  «        k    V — Œ0dS )rÄ   N)r0   rŸ   )r  Úvaluer¢   s     €r*   ú	<genexpr>z3test_rfecv_cv_results_n_features.<locals>.<genexpr>E  sR   øè è € ð ð àõ 	ˆE‰
Œ
•c˜%Ô+¨LÔ9Ñ:Ô:Ò:ðð ð ð ð ð r,   )r   r   r   r9   r   rŸ   ÚallÚvalues)r¶   rÄ   r_   r!  r7   r8   r¢   s         @r*   Ú test_rfecv_cv_results_n_featuresr*  %  sØ   ø€ õ, Ø ¸:ÐSTðñ ô �D€A€qõ Ý˜XÐ&Ñ&Ô&ØØ5ðñ ô €Eð
 
‡I‚Iˆa��O„O€OÝ�uÔ(¨Ô6Ð8MÑNÔNÐNÝð ð ð ð àÔ&×-Ò-Ñ/Ô/ðñ ô ñ ô ð ð ð ð ð r,   ÚClsRFEc                 óê   — t           j                             d¬¦  «        }t           j                             dd¬¦  «        }t	          d¬¦  «        } | |¦  «        }|                     ||¦  «         d S )N)rr   r´   rS   rV   )rr   rV   rÆ   )rW   )r1   rü   re   Úrandintr   r9   )r+  r7   r8   rk   Úrfe_tests        r*   Útest_multioutputr/  K  sk   € å
Œ	×Ò˜gÐÑ&Ô&€AÝ
Œ	×Ò˜! 'ÐÑ*Ô*€AÝ
 ¨aÐ
0Ñ
0Ô
0€CØˆv�c‰{Œ{€HØ‡L‚L��AÑÔÐÐÐr,   c                 óú   — t          d¬¦  «        \  }}t          j        |d<   t          t	          ¦   «         t          ¦   «         t          ¦   «         ¦  «        } | |d¬¦  «        }|                     ||¦  «         dS )z`Check that RFE works with pipeline that accept nans.

    Non-regression test for gh-21743.
    Tr†   )r   r   r  )r]   rï   N)r   r1   r  r   r   r   r   r9   )r+  r7   r8   ÚpipeÚfss        r*   Útest_pipeline_with_nansr3  T  s€   € õ  Ð%Ñ%Ô%�D€A€qÝŒf€A€d�GåÝ‰ŒÝÑÔÝÑÔñô €Dð 
ˆØØ@ð
ñ 
ô 
€Bð ‡F‚Fˆ1ˆa�L„L€L€L€Lr,   ÚPLSEstimatorc                 óÂ   — t          ddd¬¦  «        \  }} |d¬¦  «        } | |d¬¦  «                             ||¦  «        }|                     ||¦  «        dk    sJ ‚d	S )
z�Check the behaviour of RFE with PLS estimators.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12410
    rÁ   rr   r   rÂ   r.   )Ún_componentsrÅ   g      à?N)r   r9   r?   )r+  r4  r7   r8   r]   rÈ   s         r*   Útest_rfe_plsr7  j  sw   € õ  B°2ÀAÐFÑFÔF�D€A€qØ�¨!Ð,Ñ,Ô,€IØˆv�i aÐ(Ñ(Ô(×,Ò,¨Q°Ñ2Ô2€HØ�>Š>˜!˜QÑÔ #Ò%Ð%Ð%Ð%Ð%Ð%r,   c                  ó´  — t          ¦   «         } t          t          ¦   «         ¬¦  «        }d}d}t          j        t
          |¬¦  «        5 }|                     | j        | j        ¦  «         	                    | j        ¦  «         ddd¦  «         n# 1 swxY w Y   t          |j        j        t
          ¦  «        sJ ‚|t          |j        j        ¦  «        v sJ ‚dS )a  Check that we raise the proper AttributeError when the estimator
    does not implement the `decision_function` method, which is decorated with
    `available_if`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28108
    rŠ   z/This 'RFE' has no attribute 'decision_function'z>'LinearRegression' object has no attribute 'decision_function'rˆ   N)r   r   r   rŒ   r�   ÚAttributeErrorr9   rd   rf   rO   Ú
isinstancer&  Ú	__cause__Ústr)rj   rl   Ú	outer_msgÚ	inner_msgÚ	exec_infos        r*   Ú"test_rfe_estimator_attribute_errorr@  x  s  € õ ‰;Œ;€Dõ Õ(Ñ*Ô*Ð
+Ñ
+Ô
+€CàA€IØP€IÝ	Œ•~¨YÐ	7Ñ	7Ô	7ð E¸9Ø�Š�”	˜4œ;Ñ'Ô'×9Ò9¸$¼)ÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eå�i”oÔ/µÑ@Ô@Ð@Ð@Ð@Ø�˜IœOÔ5Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6s   Á
9BÂBÂBzClsRFE, paramr^   r¶   c                 óø   — t          dd¬¦  «        \  }}t          j        t          |› d�¬¦  «        5   | d	dt	          ¦   «         i|di¤Ž}|                     ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
zÞCheck if the correct warning is raised when trying to initialize a RFE
    object with a n_features_to_select attribute larger than the number of
    features present in the X variable that is passed to the fit method
    rU   r   )rÄ   rX   z=21 > n_features=20rˆ   r]   é   Nr>   )r   rŒ   ÚwarnsÚUserWarningr   r9   )r+  Úparamr7   r8   Úclsrfes        r*   Ú%test_rfe_n_features_to_select_warningrG  Ž  s×   € õ ¨"¸1Ð=Ñ=Ô=�D€A€qå	Œ•k¨EÐ)FÐ)FÐ)FÐ	GÑ	GÔ	Gð ð ð �ÐFÐFÕ"4Ñ"6Ô"6ÐF¸5À"¸+ÐFÐFˆØ�
Š
�1�aÑÔÐð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ³/A/Á/A3Á6A3)UrM   Úoperatorr   Únumpyr1   rŒ   Únumpy.testingr   r   r   Úsklearn.baser   r   Úsklearn.composer	   Úsklearn.cross_decompositionr
   r   r   Úsklearn.datasetsr   r   r   Úsklearn.ensembler   Úsklearn.feature_selectionr   r   Úsklearn.imputer   Úsklearn.linear_modelr   r   Úsklearn.metricsr   r   r   Úsklearn.model_selectionr   r   Úsklearn.pipeliner   Úsklearn.preprocessingr   Úsklearn.svmr   r   r   Úsklearn.utilsr    Úsklearn.utils._testingr!   Úsklearn.utils.fixesr"   r$   ro   ÚmarkÚparametrizery   rŽ   r“   r•   r¦   r¨   r²   rº   r¿   rÊ   rÜ   râ   rî   rú   r   r9  r  r
  r  r   Úarrayr*  r/  r3  r7  r@  rG  r>   r,   r*   ú<module>r^     sÊ  ððð ð  Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ Xà 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø (Ð (Ð (Ð (Ð (Ð (Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø *Ð *Ð *Ð *Ð *Ð *Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø .Ð .Ð .Ð .Ð .Ð .ð#ð #ð #ð #ð #ñ #ô #ð #ðBAð Að Að* „×Ò˜¨.Ñ9Ô9ð9ð 9ñ :Ô9ð9ð>Qð Qð Qð2<ð <ð <ð((ð (ð (ð$ „×Ò˜¨.Ñ9Ô9ðN8ð N8ñ :Ô9ðN8ðb-ð -ð -ð".ð .ð .ð(;ð ;ð ;ð2ð ð ð1ð 1ð 1ð0>ð >ð >ðBOð Oð Oð*&ð &ð &ð$ „×ÒØ˜*˜*Ð%7Ñ8Ô8Ð:LÐMñô ð „×ÒÐ8¸CÀ¸8ÀeÈQÀZÐ:PÑQÔQð5ð 5ñ RÔQñô ð5ð „×ÒØ!à	�ÐØ	�>Ð"Ø	Ð	 Ð0ðñô ð „×Ò˜ c¨5 \Ñ2Ô2ð	ð 	ñ 3Ô2ñô ð	ð „×Ò˜  a˜yÑ)Ô)ðð ñ *Ô)ðð$-ð -ð -ðGð Gð Gð" „×ÒØMÐMÐMà	
ˆAˆq�(�"”(˜<˜<˜<Ñ(Ô(Ð)Ø	
ˆAˆq�(�"”(˜?˜?˜?Ñ+Ô+Ð,Ø	
ˆAˆq�(�"”(˜9˜9˜9Ñ%Ô%Ð&Ø	
ˆAˆq�(�"”(˜9˜9˜9Ñ%Ô%Ð&Ø	
ˆAˆq�(�"”(˜A˜q˜6Ñ"Ô"Ð#Ø	
ˆAˆq�(�"”(˜9˜9˜9Ñ%Ô%Ð&Ø	
ˆAˆq�(�"”(˜A˜q˜6Ñ"Ô"Ð#Ø	
ˆAˆq�(�"”(˜A˜q˜6Ñ"Ô"Ð#Ø	
ˆAˆq�(�"”(˜A˜3‘-”-Ð Ø	
ˆAˆq�(�"”(˜A˜q˜6Ñ"Ô"Ð#Ø	
ˆAˆq�(�"”(˜A˜q˜6Ñ"Ô"Ð#ðñô ð ð ñ!ô ð ð, „×Ò˜ C¨ <Ñ0Ô0ðð ñ 1Ô0ðð „×Ò˜ C¨ <Ñ0Ô0ðð ñ 1Ô0ðð* „×Ò˜ C¨ <Ñ0Ô0Ø„×Ò˜¨#¨|¸]Ð)KÑLÔLð	&ð 	&ñ MÔLñ 1Ô0ð	&ð7ð 7ð 7ð, „×ÒØ�sÐ2Ð3°eÐ=UÐ5VÐWñô ðð ñô ðð ð r,   