Ë
    ÷Q(hVT ã                   ó„  — d dl Z d dl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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 d d
lmZmZ d dlmZm Z m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z< ejz                  j}                  d «      Z? ej€                  «       ZAe?j…                  eAj†                  jˆ                  «      ZEeAjŒ                  eE   eA_F        eAj†                  eE   eA_C         ejŽ                  «       ZHe?j…                  eHj†                  jˆ                  «      ZEeHjŒ                  eE   eH_F        eHj†                  eE   eH_C         eIe2e3z   e4z   e5z   e7z   e8z   «      ZJeJej–                  fz   ZLdZM eN eOj                    eQeOej¤                  j§                  «       «      Ž «      ZTddddejª                  fZV e0ej®                  «      e_W         e0ej°                  «      e_X        dgZYdªdeZfd„Z[deZde\fd„Z]d„ Z^dde^gZ_ejÀ                  jÃ                  dd d!g«      ejÀ                  jÃ                  d"d#d$g«      ejÀ                  jÃ                  deTeYz   «      d%„ «       «       «       ZbejÀ                  jÃ                  d&d'd(g«      ejÀ                  jÃ                  deTeYz   «      ejÀ                  jÃ                  d)g d*¢«      ejÀ                  jÃ                  d+ejÆ                  ejJ                  ejÈ                  ejÊ                  g«      d,„ «       «       «       «       ZfejÀ                  jÃ                  d-ejÆ                  ejJ                  ejÎ                  g«      d.„ «       Zhd/„ ZiejÀ                  jÕ                  d0«      d1„ «       Zkd2„ ZlejÀ                  jÃ                  d3d4d5g«      d6„ «       ZmejÀ                  jÃ                  d3d4d5g«      d7„ «       ZnejÀ                  jÃ                  d8e5«      d9„ «       ZoejÀ                  jÕ                  d0«      ejÀ                  jÃ                  d:e*e(g«      ejÀ                  jÃ                  d8e5«      d;„ «       «       «       ZpejÀ                  jÕ                  d0«      ejÀ                  jÃ                  d8e5«      d<„ «       «       ZqejÀ                  jÃ                  d8e5«      d=„ «       ZrejÀ                  jÃ                  d>e7e2z   e6z   «      d?„ «       ZsejÀ                  jÕ                  d0«      ejÀ                  jÃ                  d8e5«      d@„ «       «       ZtdA„ Zu	 d«dD„ZvejÀ                  jÃ                  dEeM«      ejÀ                  jÃ                  dFe_«      	 	 	 	 	 d¬dH„«       «       Zw	 	 	 	 	 d¬dI„ZxdJ„ ZyejÀ                  jÃ                  dEeM«      ejÀ                  jÃ                  dFe_«      	 	 	 	 	 d­dK„«       «       ZzejÀ                  jÃ                  dEeM«      ejÀ                  jÃ                  dFe_«      ejÀ                  jÃ                  dLg dM¢«      dN„ «       «       «       Z{ejÀ                  jÃ                  dEeM«      ejÀ                  jÃ                  dFe_«      dO„ «       «       Z|dP„ Z}dQ„ Z~dR„ ZejÀ                  jÃ                  d8e5«      dS„ «       Z€ejÀ                  jÃ                  dEg dT¢«      dU„ «       Z�ejÀ                  jÃ                  dEdg e‚ edVdWgeY¢­«      «      dXdYgz   «      dZ„ «       Zƒd[„ Z„	 d¬d\„Z…d]„ Z†	 d®d^„Z‡d_„ Zˆ	 d®d`„Z‰	 d¯da„ZŠdb„ Z‹	 d°dc„ZŒejÀ                  jÕ                  d0«      	 d¬dd„«       Z�de„ ZŽdf„ Z�dg„ Z�ejÀ                  jÃ                  dhg di¢«      ejÀ                  jÃ                  djdkdg«      ejÀ                  jÃ                  d8e5«      d±dl„«       «       «       Z‘dm„ Z’ejÀ                  jÃ                  dhg di¢«      ejÀ                  jÃ                  djdkdg«      ejÀ                  jÃ                  d8e5«      d±dn„«       «       «       Z“ejÀ                  jÃ                  doejÆ                  ejÈ                  ejJ                  ejÊ                  g«      ejÀ                  jÃ                  d8e5«      dp„ «       «       Z”ejÀ                  jÃ                  doejÆ                  ejÈ                  ejJ                  ejÊ                  g«      ejÀ                  jÃ                  dddqg«      ejÀ                  jÃ                  dEdrdsg«      dt„ «       «       «       Z•ejÀ                  jÃ                  doejÆ                  ejÈ                  ejJ                  ejÊ                  g«      ejÀ                  jÃ                  dddqg«      ejÀ                  jÃ                  dEdudvg«      dw„ «       «       «       Z–dx„ Z—ejÀ                  jÃ                  d eN eOej¤                  dv   «      j¡                  ej¤                  ds   «       eOdyge¢«      z
  «      eYz   «      	 	 	 	 d²dz„«       Z˜ e0e™¬{«      ejÀ                  jÃ                  d eN eOej¤                  ds   «       eOd|g«      z
  «      «      	 	 	 	 d³d}„«       «       Zšd~„ Z›ejÀ                  jÃ                  dej¤                  ds   eYz   «      ejÀ                  jÃ                  d8e5«      	 d´d„«       «       Zœd€„ Z�ejÀ                  jÃ                  d8e5«      d�„ «       Zžd‚„ ZŸdƒ„ Z d„„ Z¡ejÀ                  jÃ                  dEeM«      d…„ «       Z¢ejÀ                  jÃ                  dEeM«      d†„ «       Z£d‡„ Z¤ejÀ                  jÃ                  dEeM«      dˆ„ «       Z¥ejÀ                  jÃ                  dEeM«      d‰„ «       Z¦ejÀ                  jÃ                  dŠd‹dŒg«      ejÀ                  jÃ                  dEeM«      d�„ «       «       Z§dŽ„ Z¨ejÀ                  jÃ                  d8e5«      d�„ «       Z©ejÀ                  jÕ                  d�«      d‘„ «       Zªd’„ Z«d“„ Z¬ejÀ                  jÃ                  d”ejz                  �j[                  dGd•¬–«      d|ddsfejz                  �j]                  dGdB«      dWddsfejz                  �j]                  d—dC«      dWddsfejz                  �j]                  dGdC«      dWddufejz                  �j]                  dGdC«      d˜d™dgdCz  idvfejz                  �j]                  dGdC«      dšddsfg«      d›„ «       Z¯ e0e™¬{«      ejÀ                  jÃ                  d eN eOej¤                  ds   «       eOd|g«      z
  «      «      	 	 	 	 dµdœ„«       «       Z°d�„ Z±dž„ Z²ejÀ                  jÃ                  dŸejÆ                  dhdifejJ                  dhdifejÊ                  i fejÈ                  i fe�jf                  dhdife�jh                  d d¡ife�jj                  dhdifg«      d¢„ «       Z¶d£„ Z·d¤„ Z¸d¥„ Z¹ejÀ                  jÃ                  d¦ ejÆ                  dG¬§«       ejÈ                  «       g«      ejÀ                  jÃ                  dEeM«      d¨„ «       «       ZºejÀ                  jÃ                  d¦ ejJ                  dG¬§«       ejÊ                  «       g«      ejÀ                  jÃ                  dEeM«      d©„ «       «       Z»y)¶é    N)Úproduct)Úissparse)Úconfig_contextÚdatasetsÚmetricsÚ	neighbors)Úclone)ÚEfficiencyWarningÚNotFittedError)ÚDistanceMetric)ÚPAIRWISE_BOOLEAN_FUNCTIONSÚpairwise_distances)ÚBOOL_METRICS)Ú!assert_compatible_argkmin_resultsÚ assert_compatible_radius_results)ÚLeaveOneOutÚcross_val_predictÚcross_val_scoreÚtrain_test_split)ÚVALID_METRICS_SPARSEÚKNeighborsRegressor)ÚKNeighborsMixinÚ_check_precomputedÚ_is_sorted_by_dataÚsort_graph_by_row_values)Úmake_pipeline)Úassert_allcloseÚassert_array_equalÚignore_warnings)	ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDIA_CONTAINERSÚDOK_CONTAINERSÚLIL_CONTAINERSÚparse_versionÚ
sp_version)Úcheck_random_state)Ú	ball_treeÚbruteÚkd_treeÚautoé   é   é   é   ÚDM_euclideanÚmetricc                 óJ   — | dd dk(  rt        j                  | dd |¬«      S | S )aˆ  
    Helper function for properly building a type-specialized DistanceMetric instances.

    Constructs a type-specialized DistanceMetric instance from a string
    beginning with "DM_" while allowing a pass-through for other metric-specifying
    strings. This is necessary since we wish to parameterize dtype independent of
    metric, yet DistanceMetric requires it for construction.

    Nr0   ÚDM_©Údtype)r   Ú
get_metric)r3   r7   s     úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/neighbors/tests/test_neighbors.pyÚ_parse_metricr:   e   s0   € ð ˆbˆq€z�UÒÜ×(Ñ(¨°°¨¸5ÔAÐAØ€Mó    Ú
n_featuresc                 ó   — t         j                  j                  d«      }| dk(  r{t        d¬«      t        d¬«      t        d¬«      t        t         j                  ¬«      g}t
        t        d«      k\  r+|j                  t        d|j                  |«      ¬«      «       |S | d	k(  rt        |j                  |«      ¬
«      gS | dk(  rG|j                  ||«      }||j                  z   dt        j                  |«      z  z   }t        |¬«      gS i gS )z/Return list of DistanceMetric kwargs for tests.r.   Ú	minkowskiç      ø?)Úpr/   r0   z
1.8.0.dev0)r@   ÚwÚ
seuclidean)ÚVÚmahalanobis)ÚVI)ÚnpÚrandomÚRandomStateÚdictÚinfr(   r'   ÚappendÚrandÚTÚeye)r3   r<   ÚrngÚminkowski_kwargsÚArE   s         r9   Ú_generate_test_params_forrR   t   sâ   € ô �)‰)×
Ñ
 Ó
"€Cà�ÒÜ  3œK¬°¬´D¸1´I¼tÄbÇfÁf¼~ÐNÐÜœ |Ó4Ò4ð ×#Ñ#¤D¨1°·±¸Ó0DÔ$EÔFØÐà�ÒÜ�s—x‘x 
Ó+Ô,Ð-Ð-à�ÒØ�H‰H�Z Ó,ˆà�—‘‰W�qœ2Ÿ6™6 *Ó-Ñ-Ñ-ˆÜ˜”ˆ}Ðð ˆ4€Kr;   c                 ót   — t        j                  d¬«      5  d| z  }ddd«       |dz  S # 1 sw Y   dz  S xY w)zWeight function to replace lambda d: d ** -2.
    The lambda function is not valid because:
    if d==0 then 0^-2 is not valid.Úignore)Údivideç      ð?Nr/   )rF   Úerrstate)ÚdistÚretvals     r9   Ú_weight_funcrZ   ‘   s=   € ô 
�‰˜HÔ	%ñ Ø�t‘ˆ÷à�1‰9Ð÷à�1‰9Ðús   —*ª7ÚuniformÚdistancez/n_samples, n_features, n_query_pts, n_neighbors)éd   r]   é
   r]   )éè  é   r]   r.   Úquery_is_trainFTc           
      ó�  — t        || «      }t        j                  j                  d«      }|j	                  ||«      j                  | d¬«      }|r|n"|j	                  ||«      j                  | d¬«      }	g }
g }t        D ]«  }t        |t        «      r,| t        j                  k(  rd|v rt        j                  d«       t        j                  |||¬«      }|j                  |«       |
j                  |j!                  |	d¬«      «       |j                  |j!                  |	d¬«      «       Œ­ t#        t%        |«      d	z
  «      D ]  }t        |   }t        |d	z      }|
|   }||   d   ||d	z      d   }}||   d	   ||d	z      d	   }}t'        ||d
|› d�¬«       t'        ||d
|› d|› d�¬«       t)        ||d
|› d|› d�d¬«       Œ� y )Nr   F©ÚcopyÚtreeúCNeither KDTree nor BallTree support 32-bit distance metric objects.©Ún_neighborsÚ	algorithmr3   ©Úreturn_distanceTr.   úThe 'zE' algorithm returns differentindices depending on 'return_distances'.©Úerr_msgú' and 'z&' algorithms return different indices.z(' algorithms return different distances.g�íµ ÷Æ°>)rn   Úatol)r:   rF   rG   rH   rL   ÚastypeÚ
ALGORITHMSÚ
isinstancer   Úfloat32ÚpytestÚskipr   ÚNearestNeighborsÚfitrK   Ú
kneighborsÚrangeÚlenr   r   )Úglobal_dtypeÚ	n_samplesr<   Ún_query_ptsrh   ra   r3   Ú	local_rngÚXÚqueryÚresults_nodistÚresultsri   ÚneighÚiÚnext_algorithmÚindices_no_distÚ	distancesÚnext_distancesÚindicesÚnext_indicess                        r9   Útest_unsupervised_kneighborsrŒ       s  € ô, ˜6 <Ó0€Fô —	‘	×%Ñ% aÓ(€IØ�‰�y *Ó-×4Ñ4°\ÈÐ4ÓN€Añ ñ 	
à�^‰^˜K¨Ó4×;Ñ;¸LÈuÐ;ÓUð 
ð €NØ€Gäò Fˆ	Ü�fœnÔ-°,Ä"Ç*Á*Ò2LØ˜Ñ"Ü—‘ð ôô ×*Ñ*Ø#¨yÀô
ˆð 	�	‰	�!Œà×Ñ˜e×.Ñ.¨uÀeÐ.ÓLÔMØ�‰�u×'Ñ'¨¸tÐ'ÓDÕEðFô ”3�w“< !Ñ#Ó$ò 
ˆÜ˜q‘Mˆ	Ü# A¨¡EÑ*ˆà(¨Ñ+ˆØ$+¨A¡J¨q¡M°7¸1¸q¹5±>À!Ñ3D�>ˆ	Ø '¨¡
¨1¡¨w°q¸1±u©~¸aÑ/@�ˆÜØØà˜	�{ð #;ð ;õ		
ô 	ØØà˜	�{ '¨.Ð)9ð :7ð 7õ		
ô 	ØØà˜	�{ '¨.Ð)9ð :9ð 9ð ö	
ñ/
r;   z"n_samples, n_features, n_query_pts)r]   r]   r^   )r_   r`   r]   zn_neighbors, radius))r.   r]   )é2   iô  )r]   r_   ÚNeighborsMixinSubclassc           
      ó’  — t        || «      }t        |t        «      rFd|j                  v rt	        j
                  d«       d|j                  v rt	        j
                  d«       t        j                  j                  d«      }|j                  ||«      j                  | d¬«      }	|j                  d|¬	«      }
|j                  ||«      j                  | d¬«      }g }t        |t        «      r|n|}t        D ]{  }t        |t        «      r,| t        j                  k(  rd
|v rt	        j
                  d«        ||||¬«      }|j!                  |	|
«       |j#                  |j%                  |«      «       Œ} t'        t)        |«      dz
  «      D ]9  }t        |   }t        |dz      }||   ||dz      }}t+        ||d|› d|› d�¬«       Œ; y )NÚ
ClassifierzGMetrics of type `DistanceMetric` are not yet supported for classifiers.ÚRadiusúVMetrics of type `DistanceMetric` are not yet supported for radius-neighbor estimators.r   Frc   r0   ©Úsizere   rf   ©ri   r3   r.   rl   ro   z*' algorithms return different predictions.rm   )r:   rs   r   Ú__name__ru   rv   rF   rG   rH   rL   rq   ÚrandintÚ
issubclassr   rr   rt   rx   rK   Úpredictrz   r{   r   )r|   r}   r<   r~   r3   rh   ÚradiusrŽ   r   r€   Úyr�   Úpredict_resultsÚ	parameterri   r„   r…   r†   ÚpredictionsÚnext_predictionss                       r9   Ú,test_neigh_predictions_algorithm_agnosticityr    ö   sÌ  € ô> ˜6 <Ó0€FÜ�&œ.Ô)ØÐ1×:Ñ:Ñ:Ü�K‰Kð ôð Ð-×6Ñ6Ñ6Ü�K‰Kð/ôô —	‘	×%Ñ% aÓ(€IØ�‰�y *Ó-×4Ñ4°\ÈÐ4ÓN€AØ×Ñ˜! )ÐÓ,€Aà�N‰N˜;¨
Ó3×:Ñ:¸<ÈeÐ:ÓT€Eà€Oô "Ð"8¼/ÔJ‰ÐPVð ô  ò 
5ˆ	Ü�fœnÔ-°,Ä"Ç*Á*Ò2LØ˜Ñ"Ü—‘ð ôñ ' y¸IÈfÔUˆØ�	‰	�!�QŒà×Ñ˜uŸ}™}¨UÓ3Õ4ð
5ô ”3�Ó'¨!Ñ+Ó,ò 
ˆÜ˜q‘Mˆ	Ü# A¨¡EÑ*ˆà(7¸Ñ(:¸OÈAÐPQÉEÑ<RÐ%ˆäØØà˜	�{ '¨.Ð)9ð :;ð ;ö		
ñ
r;   ÚKNeighborsMixinSubclassc                 óâ  — t         j                  d«      j                  | d¬«      }t         j                  dd¬«      }t	        j
                  d¬«      }|j                  |«       |j                  |«      \  }} |d¬«      }|t	        j                  |«      t	        j                  |«      fD ]@  }|j                  ||«       |j                  |«      \  }	}
t        ||	«       t        ||
«       ŒB y )	N©r^   r0   Frc   r0   r^   r“   r.   ©rh   )rO   Úrandom_samplerq   r—   r   rw   rx   ry   ÚBallTreeÚKDTreer   r   )r|   r¡   r€   r›   Únbrs_fidÚdist1Úind1ÚnbrsÚdataÚdist2Úind2s              r9   Útest_unsupervised_inputsr¯   K  sÏ   € ô 	×Ñ˜'Ó"×)Ñ)¨,¸UÐ)ÓC€AÜ�‰�A˜BˆÓ€AÜ×)Ñ)°aÔ8€HØ‡L�L�„Oà×%Ñ% aÓ(�K€Eˆ4á"¨qÔ1€Dàœ9×-Ñ-¨aÓ0´)×2BÑ2BÀ1Ó2EÐFò 'ˆØ�‰��qÔà—o‘o aÓ(‰ˆˆtä˜˜uÔ%Ü˜4 Õ&ñ'r;   c                  ó0  — dgg} t        j                  «       }t        j                  t        «      5  |j                  | «       d d d «       t        j                  t        «      5  |j                  | «       d d d «       y # 1 sw Y   Œ=xY w# 1 sw Y   y xY w)Nr.   )r   rw   ru   Úraisesr   Úkneighbors_graphÚradius_neighbors_graph)r€   Ú
neighbors_s     r9   Ú!test_not_fitted_error_gets_raisedrµ   h  s|   € Ø
ˆˆ€AÜ×+Ñ+Ó-€JÜ	�‰”~Ó	&ñ 'Ø×#Ñ# AÔ&÷'ä	�‰”~Ó	&ñ -Ø×)Ñ)¨!Ô,÷-ð -÷'ð 'ú÷-ð -ús   ²B Á%BÂ B	ÂBzignore:EfficiencyWarningc                 ó°  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } | ||«      \  }}dD �]a  }t	        j
                  d¬«      }|j                  |«        t        ||«      |«      \  }	}
t	        j
                  ddd¬	«      }|j                  |«        t        ||«      |«      \  }}t        |	|«       t        |
|«       t	        j
                  dd
d¬	«      }|j                  |«        t        ||«      |«      \  }}t        |	|«       t        |
|«        t        ||«      d«      \  }	}
 t        ||«      d«      \  }}t        |	|«       t        |
|«       t        j                  t        «      5   t        ||«      |«       ddd«       �Œd t        j                  |j                  d   «      }|D ]n  } |d¬«      }dx|_        |_        |j                  ||«      j#                  |«      }d|_        |j                  ||«      j#                  |«      }t        ||«       Œp y# 1 sw Y   �ŒxY w)z;Tests unsupervised NearestNeighbors with a distance matrix.é*   ©r^   r1   ©r0   r1   )ry   r0   r¤   r+   Úprecomputedrg   r-   Nr   Ú	euclidean©r3   r.   )rF   rG   rH   r¥   r   rw   rx   Úgetattrr   r   ru   r±   Ú
ValueErrorÚarangeÚshaperš   rh   r™   r3   )Úmake_train_testÚ
estimatorsrO   r€   ÚYÚDXXÚDYXÚmethodÚnbrs_XÚdist_XÚind_XÚnbrs_DÚdist_DÚind_DÚtargetÚEstÚestÚpred_XÚpred_Ds                      r9   Úcheck_precomputedrÒ   q  s4  € ô �)‰)×
Ñ
 Ó
#€CØ×Ñ˜'Ó"€AØ×Ñ˜&Ó!€AÙ˜q !Ó$�H€Cˆðó $'ˆô ×+Ñ+¸Ô:ˆØ�
‰
�1ŒØ/œ ¨Ó/°Ó2‰ˆ�ô ×+Ñ+Ø W°]ô
ˆð 	�
‰
�3ŒØ/œ ¨Ó/°Ó4‰ˆ�Ü˜ Ô'Ü˜5 %Ô(ô ×+Ñ+Ø V°Mô
ˆð 	�
‰
�3ŒØ/œ ¨Ó/°Ó4‰ˆ�Ü˜ Ô'Ü˜5 %Ô(ð 0œ ¨Ó/°Ó5‰ˆ�Ø/œ ¨Ó/°Ó5‰ˆ�Ü˜ Ô'Ü˜5 %Ô(ô �]‰]œ:Ó&ñ 	'Ø#ŒG�F˜FÓ# AÔ&÷	'ñ 	'ðG$'ôL �Y‰Y�q—w‘w˜q‘zÓ"€FØò (ˆÙ˜Ô%ˆØ'(Ð(ˆŒ
�S”_Ø—‘˜˜FÓ#×+Ñ+¨AÓ.ˆØ"ˆŒ
Ø—‘˜˜fÓ%×-Ñ-¨cÓ2ˆÜ˜ Õ'ñ(÷		'ñ 	'ús   ÆIÉI	c                  óž   — d„ } t         j                  t         j                  t         j                  t         j                  g}t        | |«       y )Nc                 óX   — t        j                  | «      t        j                  || «      fS ©N)r   r   )ÚX_trainÚX_tests     r9   rÁ   z/test_precomputed_dense.<locals>.make_train_testª  s*   € ä×&Ñ& wÓ/Ü×&Ñ& v¨wÓ7ð
ð 	
r;   )r   ÚKNeighborsClassifierr   ÚRadiusNeighborsClassifierÚRadiusNeighborsRegressorrÒ   )rÁ   rÂ   s     r9   Útest_precomputed_denserÛ   ©  s@   € ò
ô 	×&Ñ&Ü×%Ñ%Ü×+Ñ+Ü×*Ñ*ð	€Jô �o zÕ2r;   ÚfmtÚcsrÚlilc                 óh   ‡ — ˆ fd„}t         j                  t         j                  g}t        ||«       y )Nc                 óÖ   •— t        j                  d¬«      j                  | «      }|j                  | d¬«      j	                  ‰«      |j                  |d¬«      j	                  ‰«      fS )Nr1   r¤   r\   ©Úmode)r   rw   rx   r²   Úasformat©rÖ   r×   ÚnnrÜ   s      €r9   rÁ   z4test_precomputed_sparse_knn.<locals>.make_train_test»  sd   ø€ Ü×'Ñ'°EÔ:×>Ñ>¸wÓGˆà×Ñ ¨jÐÓ9×BÑBÀ3ÓGØ×Ñ ¨ZÐÓ8×AÑAÀ#ÓFð
ð 	
r;   )r   rØ   r   rÒ   ©rÜ   rÁ   rÂ   s   `  r9   Útest_precomputed_sparse_knnrç   ¹  s/   ø€ ô
ô 	×&Ñ&Ü×%Ñ%ð€Jô �o zÕ2r;   c                 óh   ‡ — ˆ fd„}t         j                  t         j                  g}t        ||«       y )Nc                 óÖ   •— t        j                  d¬«      j                  | «      }|j                  | d¬«      j	                  ‰«      |j                  |d¬«      j	                  ‰«      fS )Nr.   ©rš   r\   rá   )r   rw   rx   r³   rã   rä   s      €r9   rÁ   z7test_precomputed_sparse_radius.<locals>.make_train_testÍ  sd   ø€ Ü×'Ñ'¨qÔ1×5Ñ5°gÓ>ˆà×%Ñ% g°JÐ%Ó?×HÑHÈÓMØ×%Ñ% f°:Ð%Ó>×GÑGÈÓLð
ð 	
r;   )r   rÙ   rÚ   rÒ   ræ   s   `  r9   Útest_precomputed_sparse_radiusrë   Ë  s/   ø€ ô
ô 	×+Ñ+Ü×*Ñ*ð€Jô �o zÕ2r;   Úcsr_containerc                 ó&  —  | t        j                  d«      j                  dd«      «      }t        |«      sJ ‚d|d<   t        |«      rJ ‚ | g d¢g d¢g d¢g d¢g«      }t        |«      sJ ‚g d	¢g d
¢g d¢}}} | |||fd¬«      }t        |«      sJ ‚y )Nr^   r.   r`   ©r   r/   ©r   r.   r/   )r0   r   r   )r0   r1   r   ©r.   r   r/   )r   r1   r/   r/   )r   r.   r.   r.   )r   r/   r/   r1   ©r0   r0   )rÀ   )rF   r¿   Úreshaper   )rì   r€   r¬   rŠ   Úindptrs        r9   Útest_is_sorted_by_datarô   Ý  s›   € ñ 	”b—i‘i “m×+Ñ+¨A¨rÓ2Ó3€AÜ˜aÔ Ð Ð à€A€d�GÜ! !Ô$Ð$Ð$ñ 	’y¢)ªYº	ÐBÓC€AÜ˜aÔ Ð Ð ò )ª,º�6ˆ'€DÙ�t˜W fÐ-°VÔ<€AÜ˜aÔ Ð Ñ r;   Úfunctionc                 ó¼  —  |t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        |«      rJ ‚ | |«      }t        |«      sJ ‚t         j                  j                  d«      j                  dd¬«      }|j                  «       }d||dk(  <    ||«      }t        |«      rJ ‚ | |«      }t        |«      sJ ‚y )Nr·   r^   r/   ©r^   r^   r“   r   r.   )rF   ÚabsrG   rH   Úrandnr   r—   Útoarray)rõ   rì   r€   ÚXtÚmasks        r9   Útest_sort_graph_by_row_valuesrý   ö  sÅ   € ñ
 	”b—f‘fœRŸY™Y×2Ñ2°2Ó6×<Ñ<¸RÀÓDÓEÓF€AÜ! !Ô$Ð$Ð$Ù	�!‹€BÜ˜bÔ!Ð!Ð!ô �9‰9× Ñ  Ó$×,Ñ,¨Q°XÐ,Ó>€DØ	�	‰	‹€AØ€A€dˆa�i�LÙ�aÓ€AÜ! !Ô$Ð$Ð$Ù	�!‹€BÜ˜bÔ!Ð!Ñ!r;   c                 ó  —  | t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        |«      rJ ‚|j                  «       }t        |«      j                  |j                  u sJ ‚|j                  «       }t        |d¬«      j                  |j                  u sJ ‚|j                  «       }t        |d¬«      j                  |j                  usJ ‚|j                  «       }t        |«      j                  |j                  usJ ‚t        |j                  «       d¬«       t        j                  t        d¬«      5  t        |j                  «       d¬«       d d d «       y # 1 sw Y   y xY w)Nr·   r^   Frc   Tz%Use copy=True to allow the conversion©Úmatch)rF   rø   rG   rH   rù   r   rd   r   r¬   r   Útocscru   r±   r¾   )rì   ÚX_r€   s      r9   Ú"test_sort_graph_by_row_values_copyr  
  s1  € ñ 
”r—v‘vœbŸi™i×3Ñ3°BÓ7×=Ñ=¸bÀ"ÓEÓFÓ	G€BÜ! "Ô%Ð%Ð%ð 	�‰‹	€AÜ# AÓ&×+Ñ+¨q¯v©vÑ5Ð5Ð5à
�‰‹	€AÜ# A¨EÔ2×7Ñ7¸1¿6¹6ÑAÐAÐAà
�‰‹	€AÜ# A¨DÔ1×6Ñ6¸a¿f¹fÑDÐDÐDð 	�‰‹	€AÜ˜aÓ ×%Ñ%¨Q¯V©VÑ3Ð3Ð3ô ˜QŸW™W›Y¨TÕ2ô 
�‰”zÐ)PÔ	Qñ 8Ü  §¡£°Õ7÷8÷ 8ñ 8ús   ÅFÆF
c                 ó²  —  | t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        |«      rJ ‚t        j                  t        d¬«      5  t        |d¬«       d d d «       t        j                  t        d¬«      5  t        |dd¬«       d d d «       t        j                  t        d¬«      5  t        |«       d d d «       t        j                  «       5  t        j                  d«       t        |dd	¬«       d d d «       y # 1 sw Y   Œ«xY w# 1 sw Y   Œ…xY w# 1 sw Y   ŒbxY w# 1 sw Y   y xY w)
Nr·   r^   zwas not sorted by row valuesrÿ   Trc   )rd   Úwarn_when_not_sortedÚerrorF)rF   rø   rG   rH   rù   r   ru   Úwarnsr
   r   r   ÚwarningsÚcatch_warningsÚsimplefilter)rì   r€   s     r9   Ú%test_sort_graph_by_row_values_warningr  '  s  € ñ 	”b—f‘fœRŸY™Y×2Ñ2°2Ó6×<Ñ<¸RÀÓDÓEÓF€AÜ! !Ô$Ð$Ð$ô 
�‰Ô'Ð/MÔ	Nñ /Ü  ¨Õ.÷/ä	�‰Ô'Ð/MÔ	Nñ JÜ  ¨ÀDÕI÷Jä	�‰Ô'Ð/MÔ	Nñ Ü˜1Ô÷ô 
×	 Ñ	 Ó	"ñ KÜ×Ñ˜gÔ&Ü  ¨ÀEÕJ÷Kð K÷/ð /ú÷Jð Jú÷ð ú÷Kð Kús0   Á1D)Â"D5ÃEÃ<$EÄ)D2Ä5D>ÅE
ÅEÚsparse_containerc                 ó€  —  | t        j                  t         j                  j                  d«      j	                  dd«      «      «      }t        j                  t        d¬«      5  t        |«       d d d «       t        j                  t        d¬«      5  t        |«       d d d «       y # 1 sw Y   Œ9xY w# 1 sw Y   y xY w)Nr·   r^   zformat is not supportedrÿ   )
rF   rø   rG   rH   rù   ru   r±   Ú	TypeErrorr   r   )r  r€   s     r9   Ú/test_sort_graph_by_row_values_bad_sparse_formatr  ;  s�   € ñ
 	œŸ™¤§	¡	× 5Ñ 5°bÓ 9× ?Ñ ?ÀÀBÓ GÓHÓI€AÜ	�‰”yÐ(AÔ	Bñ $Ü  Ô#÷$ä	�‰”yÐ(AÔ	Bñ Ü˜1Ô÷ð ÷$ð $ú÷ð ús   Á$B(ÂB4Â(B1Â4B=c                 óæ  — t        j                  g d¢g d¢g d¢g«      } | |«      }t        j                  dd¬«      }|j	                  |«       |j                  d d¬«       |j                  t        j                  g d¢g«      d	¬«       t        j                  g d
¢g d¢g d¢g«      } | |«      }|j	                  |«       d}t        j                  t        |¬«      5  |j                  d d¬«       d d d «       t        j                  g d¢g d¢g d¢g«      } | |«      }d}t        j                  t        |¬«      5  |j                  |d¬«       d d d «       y # 1 sw Y   ŒixY w# 1 sw Y   y xY w)N)ç        ç       @rV   )r  r  ç      @)rV   r  r  r.   rº   ©rh   r3   r¤   ©r  r  r  r/   )r  r  r  )r  r  r  zB2 neighbors per samples are required, but some samples have only 1rÿ   )ç      @r  rV   )g       Àr  r  z>Negative values in data passed to precomputed distance matrix.)	rF   Úarrayr   rw   rx   ry   ru   r±   r¾   )rì   rX   Údist_csrr„   Úmsgs        r9   Útest_precomputed_sparse_invalidr  G  s=  € ô �8‰8’_¢o²ÐGÓH€DÙ˜TÓ"€HÜ×&Ñ&°1¸]ÔK€EØ	‡I�IˆhÔØ	×Ñ�T qÐÔ)Ø	×Ñ”R—X‘XšÐ/Ó0¸aÐÔ@ô �8‰8’_¢o²ÐGÓH€DÙ˜TÓ"€HØ	‡I�IˆhÔØ
N€CÜ	�‰”z¨Ô	-ñ .Ø×Ñ˜¨1ÐÔ-÷.ô �8‰8’_Ò&6ºÐHÓI€DÙ˜TÓ"€HØ
J€CÜ	�‰”z¨Ô	-ñ 2Ø×Ñ˜¨qÐÔ1÷2ð 2÷.ð .ú÷2ð 2ús   ÃEÄ>E'ÅE$Å'E0c                  ó�  — t         j                  j                  d«      } | j                  dd«      }t	        |d¬«      }| j                  dd¬«      }t        j                  t        j                  t        j                  t        j                  fD ]4  }t         |«       ||«      }t         |d¬«      ||«      }t        ||«       Œ6 y )	Nr   é   r/   r»   r¼   r0   r“   rº   )rF   rG   rH   rL   r   r—   r   rØ   rÙ   r   rÚ   r   r   )rO   r€   ÚDr›   rÎ   Úmetric_scoreÚprecomp_scores          r9   Ú!test_precomputed_cross_validationr   a  s§   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰��Q‹€AÜ˜1 [Ô1€AØ�‰�A˜BˆÓ€Aä×&Ñ&Ü×+Ñ+Ü×%Ñ%Ü×*Ñ*ð	ò 8ˆô '¡s£u¨a°Ó3ˆÜ'©°=Ô(AÀ1ÀaÓHˆÜ˜<¨Õ7ñ8r;   r  r`   c                 óV  — t         j                  j                  |«      }|j                  ||«      j	                  | d¬«      }|j                  ||«      j	                  | d¬«      }t
        D �]º  }	g }
t        D ]é  }t        j                  |||	¬«      }|j                  |«       |j                  |d¬«      }|j                  |d¬«      \  }}t        |||«      D ].  \  }}}|j                  «       }||   |d d  ||   |d d  ||   |d d  Œ0 |
j                  ||f«       t        t        j                  t!        |«      «      t        j                  t!        |«      «      «       Œë t#        t%        |
«      dz
  «      D ]©  }t        t        j                  t!        |
|   d   «      «      t        j                  t!        |
|dz      d   «      «      «      f t        t        j                  t!        |
|   d   «      «      t        j                  t!        |
|dz      d   «      «      «       Œ« �Œ½ y )NFrc   )rš   ri   r@   rj   Tr.   r   )rF   rG   rH   rL   rq   ÚPrr   r   rw   rx   Úradius_neighborsÚzipÚargsortrK   r   ÚconcatenateÚlistrz   r{   )r|   r}   r<   r~   rš   Úrandom_staterO   r€   Útestr@   rƒ   ri   r„   rª   rX   ÚindÚdr…   Úi1Újs                       r9   Ú"test_unsupervised_radius_neighborsr.  r  s÷  € ô �)‰)×
Ñ
 Ó
-€Cà�‰�˜JÓ'×.Ñ.¨|À%Ð.ÓH€Aà�8‰8�K Ó,×3Ñ3°LÀuÐ3ÓM€Däó ˆØˆä#ò 	SˆIÜ×.Ñ.°fÈ	ÐUVÔWˆEØ�I‰I�aŒLà×)Ñ)¨$ÀÐ)ÓFˆDð ×.Ñ.¨tÀTÐ.ÓJ‰IˆD�#Ü  c¨4Ó0ò ‘��1�bØ—I‘I“K�Ø˜‘t�‘!�Ø˜‘t�‘!�Ø˜1™�‘1‘ð	ð
 �N‰N˜D #˜;Ô'äœBŸN™N¬4°«9Ó5´r·~±~ÄdÈ4ÃjÓ7QÕRð!	Sô$ ”s˜7“| aÑ'Ó(ò 	ˆAÜÜ—‘œt G¨A¡J¨q¡MÓ2Ó3Ü—‘œt G¨A°©E¡N°1Ñ$5Ó6Ó7óñ ô Ü—‘œt G¨A¡J¨q¡MÓ2Ó3Ü—‘œt G¨A°©E¡N°1Ñ$5Ó6Ó7õò	ñ+r;   ri   Úweightsr^   c                 óZ  — t         j                  j                  |«      }d|j                  ||«      j	                  | d¬«      z  dz
  }	|	dz  j                  d¬«      dk  j	                  t        «      }
|
j	                  t        «      }t        j                  |||¬«      }|j                  |	|
«       dd|j                  d|«      z  dz
  z  }|j                  |	d | |z   «      }t        ||
d | «       |j                  |	|«       |j                  |	d | |z   «      }t        ||d | «       y )	Nr/   Frc   r.   ©Úaxisç      à?©rh   r/  ri   çñhãˆµøä>)rF   rG   rH   rL   rq   ÚsumÚintÚstrr   rØ   rx   r™   r   )r|   ri   r/  r}   r<   Ú
n_test_ptsrh   r(  rO   r€   r›   Úy_strÚknnÚepsilonÚy_preds                  r9   Útest_kneighbors_classifierr>  œ  s  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+×2Ñ2°<ÀeÐ2ÓLÑLÈqÑP€AØ
ˆQ‰$�‰˜ˆÓ	˜cÑ	!×)Ñ)¬#Ó.€AØ�H‰H”S‹M€Eä
×
(Ñ
(Ø¨¸Iô€Cð ‡G�GˆAˆq„MØ�a˜#Ÿ(™( 1 jÓ1Ñ1°AÑ5Ñ6€GØ�[‰[˜˜;˜J˜¨'Ñ1Ó2€FÜ�v˜q  *˜~Ô.à‡G�GˆAˆuÔØ�[‰[˜˜;˜J˜¨'Ñ1Ó2€FÜ�v˜u [ jÐ1Õ2r;   c                 óâ  — t         j                  j                  |«      }d|j                  ||«      j	                  | d¬«      z  dz
  }|dz  j                  d¬«      dk  j	                  t        «      }t        j                  |¬«      }	|	j                  ||j	                  t        «      «       dd|j                  d|«      z  dz
  z  }
|	j                  |d | |
z   «      }t        ||d | «       y )	Nr/   Frc   r.   r1  r3  r¤   r5  )rF   rG   rH   rL   rq   r6  r7  r   rØ   rx   Úfloatr™   r   )r|   r}   r<   r9  rh   r(  rO   r€   r›   r;  r<  r=  s               r9   Ú'test_kneighbors_classifier_float_labelsrA  »  sÔ   € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+×2Ñ2°<ÀeÐ2ÓLÑLÈqÑP€AØ
ˆQ‰$�‰˜ˆÓ	˜cÑ	!×)Ñ)¬#Ó.€Aä
×
(Ñ
(°[Ô
A€CØ‡G�GˆAˆq�x‰xœ‹ÔØ�a˜#Ÿ(™( 1 jÓ1Ñ1°AÑ5Ñ6€GØ�[‰[˜˜;˜J˜¨'Ñ1Ó2€FÜ�v˜q  *˜~Õ.r;   c           	      óü  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      j                  | d¬«      }t        j                  g d	¢«      }t        j                  d
d¬«      }|j                  ||«       |j                  |«      }t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      dz  }t        ||«       |j                  ||j                  t        «      «       |j                  |«      }t        ||«       t        j                  ddd¬«      }|j                  ||«       |j                  t        j                  g d¢g d¢g«      «      }t        j                  g d¢g d¢g«      }t        ||«       y )N)r   r/   r   )r   r/   r.   )r/   r   r   )r/   r/   r   )r   r   r/   )r   r   r.   Frc   )r1   r1   r`   r`   r.   r.   r0   r.   )rh   r@   )r.   r/   r   rð   rï   )r/   r.   r   r  r/   r\   )rh   r@   r/  )r/   r/   r/   ©r   r.   r   )r   gš™™™™™Ù?g333333ã?)
rF   r  rq   r   rØ   rx   Úpredict_probar   r8  r   )r|   r€   r›   ÚclsÚy_probÚ	real_probs         r9   Ú(test_kneighbors_classifier_predict_probarH  Ï  s;  € ä
�‰Ú	’Išyª)²YÂ	ÐJó	ç�fˆ\ €fÓ&ð ô 	�‰Ò#Ó$€AÜ
×
(Ñ
(°Q¸!Ô
<€CØ‡G�GˆAˆq„MØ×Ñ˜qÓ!€Fä
�‰âÚÚÚÚÚðó		
ð ñ
	ð ô �y &Ô)à‡G�GˆAˆq�x‰xœ‹}ÔØ×Ñ˜qÓ!€FÜ�y &Ô)ä
×
(Ñ
(°Q¸!ÀZÔ
P€CØ‡G�GˆAˆq„MØ×ÑœrŸx™xª²IÐ(>Ó?Ó@€FÜ—‘š)¢]Ð3Ó4€IÜ�I˜vÕ&r;   c                 óZ  — t         j                  j                  |«      }d|j                  ||«      j	                  | d¬«      z  dz
  }	|	dz  j                  d¬«      |k  j	                  t        «      }
|
j	                  t        «      }t        j                  |||¬«      }|j                  |	|
«       dd|j                  d|«      z  dz
  z  }|j                  |	d | |z   «      }t        ||
d | «       |j                  |	|«       |j                  |	d | |z   «      }t        ||d | «       y )Nr/   Frc   r.   r1  ©rš   r/  ri   r5  )rF   rG   rH   rL   rq   r6  r7  r8  r   rÙ   rx   r™   r   )r|   ri   r/  r}   r<   r9  rš   r(  rO   r€   r›   r:  r„   r<  r=  s                  r9   Ú test_radius_neighbors_classifierrK  ò  s  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+×2Ñ2°<ÀeÐ2ÓLÑLÈqÑP€AØ
ˆQ‰$�‰˜ˆÓ	˜fÑ	$×,Ñ,¬SÓ1€AØ�H‰H”S‹M€Eä×/Ñ/Ø˜w°)ô€Eð 
‡I�Iˆa�„OØ�a˜#Ÿ(™( 1 jÓ1Ñ1°AÑ5Ñ6€GØ�]‰]˜1˜[˜j˜>¨GÑ3Ó4€FÜ�v˜q  *˜~Ô.Ø	‡I�Iˆa�ÔØ�]‰]˜1˜[˜j˜>¨GÑ3Ó4€FÜ�v˜u [ jÐ1Õ2r;   Úoutlier_label)r   éÿÿÿÿNc                 ó$  — t        j                  ddgddgg| ¬«      }t        j                  ddg«      }d}t        j                  ddgddgg| ¬«      }t        j                  ddgd	d	gg| ¬«      }t        j                  }	 |	||||¬
«      }
|
j	                  ||«       t        t        j                  ddg«      |
j                  |«      «       |€4t        j                  t        «      5  |
j                  |«       d d d «       y y # 1 sw Y   y xY w)NrV   r  r6   r.   r/   çš™™™™™¹?ç)\�Âõ(ð?ç®Gáz @çffffffö?©rš   r/  ri   rL  )
rF   r  r   rÙ   rx   r   r™   ru   r±   r¾   )r|   ri   r/  rL  r€   r›   rš   Úz1Úz2ÚrncÚclfs              r9   Ú2test_radius_neighbors_classifier_when_no_neighborsrX    s  € ô 	�‰�3˜�*˜s C˜jÐ)°Ô>€AÜ
�‰�!�Q�Ó€AØ€Fô 
�‰�D˜$�< $¨ Ð.°lÔ	C€Bô 
�‰�D˜$�< # s Ð,°LÔ	A€Bä
×
-Ñ
-€CÙ
ØØØØ#ô	€Cð ‡G�GˆAˆq„MÜ”r—x‘x  A Ó'¨¯©°R«Ô9ØÐÜ�]‰]œ:Ó&ñ 	Ø�K‰K˜ŒO÷	ð 	ð ÷	ð 	ús   Ã*DÄDc                 ó¸	  ‡‡‡‡— t        j                  ddgddgddgddgddgg| ¬«      Št        j                  g d¢«      Šd}t        j                  d	d	gddgg| ¬«      }t        j                  d
d
gd	d	gddgg| ¬«      }t        j                  ddg«      }t        j                  g d¢«      }t        j                  ddg«      }t        j                  |||d¬«      }	|	j	                  ‰‰«       t        ||	j                  |«      «       t        j                  t        d¬«      5  t        ||	j                  |«      «       d d d «       t        j                  t        d¬«      5  t        ||	j                  |«      d   «       d d d «       t        j                  Št        j                  dgdgdgdgdgdgdgdgdgdgg
| ¬«      Št        j                  g d¢«      Šˆˆˆfd„}
t        j                  t        «      5   |
«        d d d «       ˆˆˆfd„}t        j                  t        «      5   |«        d d d «        ‰dd¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |dd d …f   g d ¢«        ‰dd¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |dd d …f   g d!¢«       |	j                  dgdgg«      }t        |ddg«       ˆˆˆfd"„}t        j                  t        «      5   |«        d d d «       ddgddgddgddgddgddgddgddgddgddgg
Š ‰dd¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |d   dd d …f   g d!¢«       |	j                  dgdgg«      }t        |dd d …f   ddg«       ddgddgddgddgddgddgddgddgddgddgg
Š ‰dddg¬«      }	|	j	                  ‰‰«       |	j                  dgdgg«      }t        |d   dd d …f   g d#¢«       t        |d   dd d …f   g d!¢«       |	j                  dgdgg«      }t        |dd d …f   ddg«       ˆˆˆfd$„}t        j                  t        «      5   |«        d d d «       y # 1 sw Y   �ŒNxY w# 1 sw Y   �ŒxY w# 1 sw Y   �Œ¤xY w# 1 sw Y   �Œ�xY w# 1 sw Y   �Œ¯xY w# 1 sw Y   y xY w)%NrV   r  g®Gáz®ï?g\�Âõ(\ï?rQ  r6   )r.   r/   r.   r.   r/   rO  rP  rR  r.   r/   )rM  r.   r/   r   rM  rS  z+Outlier label -1 is not in training classesrÿ   r0   r1   r`   é   é   é   é	   )
r   r/   r/   r.   r.   r.   r0   r0   r0   r0   c                  óB   •—  ‰ddgg¬«      } | j                  ‰‰«       y )Nr.   r`   ©rš   rL  ©rx   ©rW  ÚRNCr€   r›   s    €€€r9   Úcheck_array_exceptionzPtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_array_exceptionX  s    ø€ Ù˜¨A¨3¨%Ô0ˆØ�‰��1�r;   c                  ó>   •—  ‰dd¬«      } | j                  ‰‰«       y )Nr.   Úar_  r`  ra  s    €€€r9   Úcheck_dtype_exceptionzPtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_dtype_exception`  s   ø€ Ù˜¨#Ô.ˆØ�‰��1�r;   Úmost_frequentr_  é   )r   r   r   r.   )r   r.   r   r   c                  óh   •—  ‰dd¬«      } | j                  ‰‰«       | j                  dgdgg«       y )Nr.   r1   r_  rh  )rx   rD  ra  s    €€€r9   Úcheck_warningzHtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_warningv  s2   ø€ Ù˜¨!Ô,ˆØ�‰��1ŒØ×Ñ˜A˜3  ˜+Õ&r;   )r.   r   r   r   c                  óB   •—  ‰dg d¢¬«      } | j                  ‰‰«       y )Nr.   rï   r_  r`  )rW  rb  r€   Úy_multis    €€€r9   Úcheck_exceptionzJtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_exception¨  s   ø€ Ù˜ª)Ô4ˆØ�‰��7Õr;   )rF   r  r   rÙ   rx   r   r™   ru   r  ÚUserWarningr   rD  r±   r  r¾   )r|   ri   r/  rš   rT  rU  Úcorrect_labels1Úcorrect_labels2Úoutlier_probarW  rc  rf  ÚprobaÚpredrj  rm  rb  r€   r›   rl  s                   @@@@r9   Ú1test_radius_neighbors_classifier_outlier_labelingrt  1  sÚ  û€ ô 	�‰Ø
ˆsˆ�c˜3�Z $¨ °°d¨|¸dÀD¸\ÐJØô	€Aô 	�‰’Ó!€AØ€Fô 
�‰�D˜$�< $¨ Ð.°lÔ	C€Bô 
�‰�C˜�:  d˜|¨d°D¨\Ð:À,Ô	O€Bä—h‘h  1˜vÓ&€OÜ—h‘hšzÓ*€OÜ—H‘H˜a ˜VÓ$€Mä
×
-Ñ
-Ø˜w°)È2ô€Cð ‡G�GˆAˆq„MÜ�¨¯©°B«Ô8Ü	�‰”kÐ)VÔ	Wñ =Ü˜?¨C¯K©K¸«OÔ<÷=ä	�‰”kÐ)VÔ	Wñ AÜ˜ s×'8Ñ'8¸Ó'<¸QÑ'?Ô@÷Aô ×
-Ñ
-€CÜ
�‰�1�#˜�s˜Q˜C !  q c¨A¨3°°°a°S¸1¸#À¸sÐCÈ<ÔX€AÜ
�‰Ò/Ó0€Aöô 
�‰”yÓ	!ñ  ÙÔ÷ öô 
�‰”yÓ	!ñ  ÙÔ÷ ñ �Q oÔ
6€CØ‡G�GˆAˆq„MØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q¢˜T‘{¢LÔ1ñ �Q aÔ
(€CØ‡G�GˆAˆq„MØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q¢˜T‘{¢LÔ1Ø�;‰;˜˜˜b˜T�{Ó#€DÜ�t˜a ˜VÔ$ö'ô
 
�‰”kÓ	"ñ ÙŒ÷ð
 
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆð€Gñ �Q aÔ
(€CØ‡G�GˆAˆwÔØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q‘x ¢1 ‘~¢|Ô4Ø�;‰;˜˜˜b˜T�{Ó#€DÜ�t˜Ašq˜D‘z A q 6Ô*ð 
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆð€Gñ �Q q¨! fÔ
-€CØ‡G�GˆAˆwÔØ×Ñ ˜s R D˜kÓ*€EÜ�u˜Q‘x ¢1 ‘~¢|Ô4Ü�u˜Q‘x ¢1 ‘~¢|Ô4Ø�;‰;˜˜˜b˜T�{Ó#€DÜ�t˜Ašq˜D‘z A q 6Ô*öô 
�‰”zÓ	"ñ ÙÔ÷ð ÷=ñ =ú÷Añ Aú÷ ñ  ú÷ ñ  ú÷.ñ ú÷bð úsH   Ä'RÅ&RÇ?R)È/R6ÌSÑ>SÒRÒR&Ò)R3Ò6S ÓSÓSc            	      óæ  — t        j                  ddgddgg«      } t        j                  ddg«      }d}t        j                  ddgddgg«      }t        j                  ddg«      }t        }t        D ]p  }dd|fD ]f  }t	        j
                  |||¬	«      }|j                  | |«       t        j                  d
¬«      5  t        ||j                  |«      «       d d d «       Œh Œr y # 1 sw Y   ŒuxY w)NrV   r  r.   r/   rO  rP  r[   r\   rJ  rT   )Úinvalid)
rF   r  rZ   rr   r   rÙ   rx   rW   r   r™   )	r€   r›   rš   rT  ro  Úweight_funcri   r/  rW  s	            r9   Ú.test_radius_neighbors_classifier_zero_distancerx  °  sö   € ô 	�‰�3˜�*˜s C˜jÐ)Ó*€AÜ
�‰�!�Q�Ó€AØ€Fä	�‰�D˜$�< # s Ð,Ó	-€BÜ—h‘h  1˜vÓ&€Oä€Käò 	Eˆ	Ø! :¨{Ð;ò 	EˆGÜ×5Ñ5Ø w¸)ôˆCð �G‰G�A�qŒMÜ—‘ XÔ.ñ Eô # ?°C·K±KÀ³OÔD÷Eð Eñ	Eñ	E÷Eð Eús   Â>C'Ã'C0c                  ó   — t        j                  ddgddgddgddgg«      } t        j                  g d¢«      }d}t        j                  ddgddgg«      }t        j                  ddg«      }t        j                  ddg«      }t        j                  ddg«      }t        D ]«  }dD ]G  }t        j                  |||¬	«      }	|	j                  | |«       t        ||	j                  |«      «       ŒI t        d
dg||g«      D ]J  \  }}
t        j                  d||¬«      }|j                  | |«       t        |
|j                  |«      «       ŒL Œ­ y )NrV   r  ç      @)rV   r?   r  r  çš™™™™™É?çš™™™™™ñ?g      ô?©r[   r\   rJ  r[   r\   r/   r4  )
rF   r  rr   r   rÚ   rx   r   r™   r$  r   )r€   r›   rš   ÚzÚrnn_correct_labelsÚknn_correct_unifÚknn_correct_distri   r/  ÚrnnÚcorr_labelsr;  s               r9   Ú'test_neighbors_regressors_zero_distancer„  È  sT  € ô 	�‰�3˜�*˜s C˜j¨3°¨*°s¸C°jÐAÓB€AÜ
�‰Ò%Ó&€AØ€FÜ
�‰�3˜�*˜s C˜jÐ)Ó*€AäŸ™ 4¨ +Ó.Ðä—x‘x  s Ó,ÐÜ—x‘x  s Ó,Ðäò 9ˆ	ð /ò 	@ˆGÜ×4Ñ4Ø w¸)ôˆCð �G‰G�A�qŒMÜÐ.°·±¸A³Õ?ð	@ô %(Ø˜
Ð#Ð&6Ð8HÐ%Ió%
ò 	9Ñ ˆG�[ô ×/Ñ/Ø w¸)ôˆCð �G‰G�A�qŒMÜ˜K¨¯©°Q«Õ8ñ	9ñ9r;   c                  ó8  — t        j                  dgdgdgg«      } d}t        D ]t  }t        j                  ||¬«      j                  | «      }|j                  dggd¬«      }|j                  dk(  sJ ‚|j                  t        k(  sJ ‚t        |d	   d	d
g«       Œv y)z²Test whether points lying on boundary are handled consistently

    Also ensures that even with only one query point, an object array
    is returned rather than a 2d array.
    r?   r  g®Gáz@©rš   ri   r  Frj   )r.   r   r.   N)rF   r  rr   r   rw   rx   r#  rÀ   r7   Úobjectr   )r€   rš   ri   r«   rƒ   s        r9   Ú'test_radius_neighbors_boundary_handlingrˆ  é  s    € ô 	�‰�3�%˜#˜  Ð'Ó(€AØ€Fäò /ˆ	Ü×)Ñ)°À9ÔM×QÑQÐRSÓTˆØ×'Ñ'¨#¨¨ÀÐ'ÓGˆØ�}‰} Ò$Ð$Ð$Ø�}‰}¤Ò&Ð&Ð&Ü˜7 1™:¨¨1 vÕ.ñ/r;   c                 ó  —  | t        j                  d«      «      }|j                  g d¢«       t        j                  dddd¬«      j                  |«      }|j                  |d¬	«      \  }}t        j                  |j                  d
   t        ¬«      }t        j                  d
g«      t        j                  d
g«      t        j                  d
g«      t        j                  d
g«      g|d d  t        j                  |j                  d
   t        ¬«      }t        j                  d
g«      t        j                  dg«      t        j                  dg«      t        j                  dg«      g|d d  t        ||«       t        ||«       y )N)r1   r1   )r   r   r   r   r3  r-   é   rº   )rš   ri   Ú	leaf_sizer3   Trj   r   r6   r.   r/   r0   )rF   ÚonesÚsetdiagr   rw   rx   r#  ÚemptyrÀ   r‡  r  r   )rì   r€   r«   Ú
neigh_distÚ	neigh_indÚexpected_distÚexpected_inds          r9   Ú.test_radius_neighbors_returns_array_of_objectsr“  û  s  € ñ 	”b—g‘g˜f“oÓ&€AØ‡I�IŠlÔä×%Ñ%Ø˜f°¸=ôç	�cˆ!ƒfð 	ð !×1Ñ1°!ÀTÐ1ÓJÑ€J�	ä—H‘H˜QŸW™W Q™Z¬vÔ6€MÜŸ™ ! ›¤r§x¡x°°£}´b·h±hÀ¸s³mÄRÇXÁXÈqÈcÃ]ÐS€M‘!ÐÜ—8‘8˜AŸG™G A™J¬fÔ5€LÜ—x‘x  “}¤b§h¡h°¨s£m´R·X±X¸q¸c³]ÄBÇHÁHÈaÈSÃMÐR€L‘€Oä�z =Ô1Ü�y ,Õ/r;   )r*   r,   r+   c                 óZ  — t        j                  ddgg«      }t        j                  ddgddgddgddgg«      }d}t        j                  ddgg«      }t        j                  | ¬«      j	                  |«      }t        j
                  |j                  ||d¬«      «      }t        ||«       y )Nr   r.   rM  r/   ©ri   F)rh   rk   )rF   r  r   rw   rx   Úsortry   r   )ri   Úquery_pointÚequidistant_pointsÚkÚknn_indicesrå   rŠ   s          r9   Útest_query_equidistant_kth_nnr›    sŸ   € ô —(‘(˜Q ˜F˜8Ó$€KÜŸ™ A q 6¨A¨q¨6°B¸°7¸QÀ¸GÐ"DÓEÐð 	
€AÜ—(‘(˜Q ˜F˜8Ó$€KÜ	×	#Ñ	#¨iÔ	8×	<Ñ	<Ð=OÓ	P€BÜ�g‰g�b—m‘m K¸QÐPU�mÓVÓW€GÜ�w Õ,r;   )r,   r*   r+   r»   )r+   r»   )r+   rº   c                 óT  — t        |t        j                  «      }t        |t        «      rt        j                  d«       d}t        j                  j                  d«      }|j                  |df«      }|dk(  r&t        j                  |t        j                  d¬«      }t        j                  | |¬«      }|j                  |«       |j                  |t        j                  d	¬
«      \  }}t!        |«      D ]'  }t#        ||   t        j$                  ||   «      «       Œ) |dk7  rGt        j&                  t(        d¬«      5  |j                  |t        j                  d	d¬«       d d d «       |j                  |t        j                  dd	¬«      }	t+        |	«      sJ ‚y # 1 sw Y   Œ:xY w)Nr’   r^   r·   r1   rº   r\   ©rš   râ   r•   T)r€   rš   Úsort_resultszreturn_distance must be Truerÿ   F)r€   rš   rž  rk   )r€   rš   râ   rž  )r:   rF   Úfloat64rs   r   ru   rv   rG   rH   r¥   r   r³   rJ   rw   rx   r#  rz   r   r–  r±   r¾   r   )
ri   r3   r}   rO   r€   Úmodelrˆ   rŠ   ÚiiÚgraphs
             r9   Ú"test_radius_neighbors_sort_resultsr£  !  sq  € ô  ˜6¤2§:¡:Ó.€FÜ�&œ.Ô)Ü�‰ðô	
ð €IÜ
�)‰)×
Ñ
 Ó
#€CØ×Ñ˜9 a˜.Ó)€Aà�ÒÜ×,Ñ,¨Q´r·v±vÀJÔOˆÜ×&Ñ&°À6ÔJ€EØ	‡I�Iˆa„Lð ×/Ñ/°!¼B¿F¹FÐQUÐ/ÓVÑ€IˆwÜ�IÓò BˆÜ˜9 R™=¬"¯'©'°)¸B±-Ó*@ÕAðBð �ÒÜ�]‰]œ:Ð-KÔLñ 	Ø×"Ñ"ØœBŸF™F°Àuð #ô ÷	ð ×(Ñ(Ø
”B—F‘F ¸$ð )ó €Eô ˜eÔ$Ð$Ñ$÷	ð 	ús   Å$FÆF'c                  óÜ  — t        d«      } d}d}d}| j                  ||«      }| j                  dd||f«      }t        ||d¬«      \  }}}}	d ddt        g}
t        t        |
«      D �]  \  }}
g }t        |«      D ]R  }t        j                  |
|¬«      }|j                  ||d d …|f   «       |j                  |j                  |«      «       ŒT t        j                  |«      j                  }|j                   |	j                   k(  sJ ‚t        j                  |
|¬«      }|j                  ||«       |j                  |«      }|j                   |	j                   k(  sJ ‚t#        ||«       �Œ y )	Nr   r/   é(   r0   ©r(  r[   r\   ©r/  ri   )r)   rL   r—   r   rZ   r   rr   rz   r   rÙ   rx   rK   r™   rF   ÚvstackrM   rÀ   r   )rO   r<   r}   Ún_outputr€   r›   rÖ   r×   Úy_trainÚy_testr/  ri   Ú	y_pred_soÚor‚  Úrnn_moÚ	y_pred_mos                    r9   Ú*test_RadiusNeighborsClassifier_multioutputr°  S  s_  € ä
˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�A�q˜9 hÐ/Ó0€Aä'7¸¸1È1Ô'MÑ$€GˆV�W˜fà�Y 
¬LÐ9€Gä%¤j°'Ó:ó 1Ñˆ	�7àˆ	Ü�x“ò 	2ˆAÜ×5Ñ5Ø¨9ôˆCð �G‰G�G˜W¢Q¨ T™]Ô+Ø×Ñ˜SŸ[™[¨Ó0Õ1ð	2ô —I‘I˜iÓ(×*Ñ*ˆ	Ø�‰ &§,¡,Ò.Ð.Ð.ô ×4Ñ4Ø yô
ˆð 	�
‰
�7˜GÔ$Ø—N‘N 6Ó*ˆ	à�‰ &§,¡,Ò.Ð.Ð.Ü˜9 iÖ0ñ+1r;   c                 ó  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }||dkD  z  }|dz  j	                  d¬«      dk  j                  t        «      }t        D ]—  }t        j                  |d¬«      }	|	j                   ||«      |«       dd|j                  d|«      z  dz
  z  }
t        t         j                  fz   D ]0  } ||d | |
z   «      }|	j                  |«      }t        ||d | «       Œ2 Œ™ y )	Nr/   r.   r{  r1  r3  r-   ©rh   ri   r5  )rF   rG   rH   rL   r6  rq   r7  ÚSPARSE_TYPESr   rØ   rx   Úasarrayr™   r   )r}   r<   r9  rh   r(  rO   r€   r›   Ú	sparsematr;  r<  ÚsparsevÚX_epsr=  s                 r9   Ú!test_kneighbors_classifier_sparser¸  y  s  € ô
 �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AØˆˆS‰�L€AØ
ˆQ‰$�‰˜ˆÓ	˜cÑ	!×)Ñ)¬#Ó.€Aä!ò 7ˆ	Ü×,Ñ,¸ÐPVÔWˆØ�‰‘	˜!“˜aÔ Ø˜!˜cŸh™h q¨*Ó5Ñ5¸Ñ9Ñ:ˆÜ#¤r§z¡z mÑ3ò 	7ˆGÙ˜A˜k˜z˜N¨WÑ4Ó5ˆEØ—[‘[ Ó'ˆFÜ˜v q¨¨* ~Õ6ñ	7ñ	7r;   c                  óÂ  — t        d«      } d}d}d}| j                  ||«      }| j                  dd||f«      }t        ||d¬«      \  }}}}	d ddt        g}
t        t        |
«      D �]v  \  }}
g }g }t        |«      D ]r  }t        j                  |
|¬«      }|j                  ||d d …|f   «       |j                  |j                  |«      «       |j                  |j                  |«      «       Œt t        j                  |«      j                   }|j"                  |	j"                  k(  sJ ‚t%        |«      |k(  sJ ‚t        j                  |
|¬«      }|j                  ||«       |j                  |«      }|j"                  |	j"                  k(  sJ ‚t'        ||«       |j                  |«      }t%        |«      |k(  sJ ‚t)        ||«      D ]  \  }}t'        ||«       Œ �Œy y )	Nr   r`   r�   r0   r¦  r[   r\   r§  )r)   rL   r—   r   rZ   r   rr   rz   r   rØ   rx   rK   r™   rD  rF   r¨  rM   rÀ   r{   r   r$  )rO   r<   r}   r©  r€   r›   rÖ   r×   rª  r«  r/  ri   r¬  Úy_pred_proba_sor­  r;  Úknn_mor¯  Úy_pred_proba_moÚproba_moÚproba_sos                        r9   Ú%test_KNeighborsClassifier_multioutputr¿  �  sÐ  € ä
˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�A�q˜9 hÐ/Ó0€Aä'7¸¸1È1Ô'MÑ$€GˆV�W˜fà�Y 
¬LÐ9€Gä%¤j°'Ó:ó 3Ñˆ	�7àˆ	ØˆÜ�x“ò 	>ˆAÜ×0Ñ0¸ÈIÔVˆCØ�G‰G�G˜W¢Q¨ T™]Ô+Ø×Ñ˜SŸ[™[¨Ó0Ô1Ø×"Ñ" 3×#4Ñ#4°VÓ#<Õ=ð		>ô —I‘I˜iÓ(×*Ñ*ˆ	Ø�‰ &§,¡,Ò.Ð.Ð.Ü�?Ó# xÒ/Ð/Ð/ô ×/Ñ/¸È9ÔUˆØ�
‰
�7˜GÔ$Ø—N‘N 6Ó*ˆ	à�‰ &§,¡,Ò.Ð.Ð.Ü˜9 iÔ0ð !×.Ñ.¨vÓ6ˆÜ�?Ó# xÒ/Ð/Ð/ä"% o°Ó"Gò 	3ÑˆH�hÜ˜x¨Õ2ò	3ñ53r;   c                 ó*  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }|d | }t        }	t        D ]Ž  }
dd|	fD ]„  }t        j                  |||
¬«      }|j                  ||«       dd|j                  d|«      z  dz
  z  }|j                  |d | |z   «      }t        j                  t        ||z
  «      dk  «      rŒ„J ‚ Œ� y ©Nr/   r.   r[   r\   r4  r5  ç333333Ó?)rF   rG   rH   rL   Úsqrtr6  ÚmaxrZ   rr   r   r   rx   r™   Úallrø   )r}   r<   r9  rh   r(  rO   r€   r›   Úy_targetrw  ri   r/  r;  r<  r=  s                  r9   Útest_kneighbors_regressorrÇ  ¹  s  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€Aà��*ˆ~€Hä€Käò 8ˆ	Ø! :¨{Ð;ò 	8ˆGÜ×/Ñ/Ø'°ÀIôˆCð �G‰G�A�qŒMØ˜a #§(¡(¨1¨jÓ"9Ñ9¸AÑ=Ñ>ˆGØ—[‘[  ; J °'Ñ!9Ó:ˆFÜ—6‘6œ#˜f xÑ/Ó0°3Ñ6Õ7Ð7Ð7ñ	8ñ8r;   c            
      óf  — t        d«      } d}d}d}| j                  ||«      }| j                  ||«      }t        ||d¬«      \  }}}}	t        t        d dg«      D ]Ï  \  }
}t        j                  ||
¬«      }|j                  ||«       |j                  |d¬	«      }t        j                  |D �cg c]  }t        j                  ||   d¬
«      ‘Œ c}«      }|j                  |«      }|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        ||«       ŒÑ y c c}w ©Nr   r`   r¥  r1   r¦  r[   r§  Frj   r1  )r)   rL   r   r   rr   r   r   rx   ry   rF   r  Úmeanr™   rÀ   r   )rO   r<   r}   r©  r€   r›   rÖ   r×   rª  r«  ri   r/  r;  Ú	neigh_idxÚidxÚ
y_pred_idxr=  s                    r9   Ú3test_KNeighborsRegressor_multioutput_uniform_weightrÎ  Ñ  s  € ä
˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�˜HÓ%€Aä'7¸¸1È1Ô'MÑ$€GˆV�W˜fÜ%¤j°4¸Ð2CÓDò ,Ñˆ	�7Ü×+Ñ+°GÀyÔQˆØ�‰�˜Ô!à—N‘N 6¸5�NÓAˆ	Ü—X‘XÈ	ÖRÀœrŸw™w w¨s¡|¸!Ö<ÒRÓSˆ
à—‘˜VÓ$ˆà�|‰|˜vŸ|™|Ò+Ð+Ð+Ø×Ñ 6§<¡<Ò/Ð/Ð/Ü˜ 
Õ+ñ,ùò
 Ss   Â0!D.
c                 óÂ  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }t        j                  ||g«      j                  }|d | }ddt        g}	t        t        |	«      D ]¬  \  }
}	t        j                  ||	|
¬«      }|j                  ||«       dd|j                  d|«      z  dz
  z  }|j                  |d | |z   «      }|j                   |j                   k(  sJ ‚t        j"                  t        j$                  ||z
  «      dk  «      rŒ¬J ‚ y rÁ  )rF   rG   rH   rL   rÃ  r6  rÄ  r¨  rM   rZ   r   rr   r   r   rx   r™   rÀ   rÅ  rø   )r}   r<   r9  rh   r(  rO   r€   r›   rÆ  r/  ri   r;  r<  r=  s                 r9   Ú%test_kneighbors_regressor_multioutputrÐ  ê  s>  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€AÜ
�	‰	�1�a�&Ó×Ñ€Aà��*ˆ~€Hà˜*¤lÐ3€GÜ%¤j°'Ó:ò 	7Ñˆ	�7Ü×+Ñ+Ø#¨WÀ	ô
ˆð 	�‰��1ŒØ˜!˜cŸh™h q¨*Ó5Ñ5¸Ñ9Ñ:ˆØ—‘˜Q˜{ 
˜^¨gÑ5Ó6ˆØ�|‰|˜xŸ~™~Ò-Ð-Ð-ä�v‰v”b—f‘f˜V hÑ.Ó/°#Ñ5Õ6Ð6Ð6ñ	7r;   c                 óÂ  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }|d | }t        }	t        D ]‘  }
dd|	fD ]‡  }t        j                  |||
¬«      }|j                  ||«       dd|j                  d|«      z  dz
  z  }|j                  |d | |z   «      }t        j                  t        ||z
  «      |dz  k  «      rŒ‡J ‚ Œ“ dD ]¸  }t        j                  ||d¬«      }|j                  ||«       t        j                  d|fd	«      }d
}t!        j"                  t$        t'        j(                  |«      ¬«      5  |j                  |«      }d d d «       t        j                  t        j*                  «      «      rŒ¸J ‚ y # 1 sw Y   Œ6xY w)Nr/   r.   r[   r\   rJ  r5  r}  r-   g      ð¿zNOne or more samples have no neighbors within specified radius; predicting NaN.rÿ   )rF   rG   rH   rL   rÃ  r6  rÄ  rZ   rr   r   rÚ   rx   r™   rÅ  rø   Úfullru   r  rn  ÚreÚescapeÚisnan)r}   r<   r9  rš   r(  rO   r€   r›   rÆ  rw  ri   r/  r„   r<  r=  Ú
X_test_nanÚempty_warning_msgrs  s                     r9   Útest_radius_neighbors_regressorrØ    s¿  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€Aà��*ˆ~€Hä€Käò ?ˆ	Ø! :¨{Ð;ò 	?ˆGÜ×6Ñ6Ø w¸)ôˆEð �I‰I�a˜ŒOØ˜a #§(¡(¨1¨jÓ"9Ñ9¸AÑ=Ñ>ˆGØ—]‘] 1 [ j >°GÑ#;Ó<ˆFÜ—6‘6œ#˜f xÑ/Ó0°6¸A±:Ñ=Õ>Ð>Ð>ñ	?ð?ð +ò &ˆÜ×2Ñ2Ø 7°fô
ˆð 	�	‰	�!�QŒÜ—W‘W˜a ˜_¨dÓ3ˆ
ð7ð 	ô �\‰\œ+¬R¯Y©YÐ7HÓ-IÔJñ 	-Ø—=‘= Ó,ˆD÷	-ä�v‰v”b—h‘h˜t“nÕ%Ð%Ð%ñ&÷	-ð 	-ús   ÆGÇG	c            
      ó�  — t        d«      } d}d}d}| j                  ||«      }| j                  ||«      }t        ||d¬«      \  }}}}	t        t        d dg«      D ]ä  \  }
}t        j                  ||
¬«      }|j                  ||«       |j                  |d¬	«      }t        j                  |D �cg c]  }t        j                  ||   d¬
«      ‘Œ c}«      }t        j                  |«      }|j                  |«      }|j                  |	j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        ||«       Œæ y c c}w rÉ  )r)   rL   r   r   rr   r   rÚ   rx   r#  rF   r  rÊ  r™   rÀ   r   )rO   r<   r}   r©  r€   r›   rÖ   r×   rª  r«  ri   r/  r‚  rË  rÌ  rÍ  r=  s                    r9   Ú=test_RadiusNeighborsRegressor_multioutput_with_uniform_weightrÚ  *  s+  € ô ˜QÓ
€CØ€JØ€IØ€Hà�‰�˜JÓ'€AØ�‰�˜HÓ%€AÜ'7¸¸1È1Ô'MÑ$€GˆV�W˜fä%¤j°4¸Ð2CÓDò ,Ñˆ	�7Ü×0Ñ0¸ÈIÔVˆØ�‰�˜Ô!à×(Ñ(¨ÀÐ(ÓGˆ	Ü—X‘XÈ	ÖRÀœrŸw™w w¨s¡|¸!Ö<ÒRÓSˆ
ä—X‘X˜jÓ)ˆ
Ø—‘˜VÓ$ˆà×Ñ 6§<¡<Ò/Ð/Ð/Ø�|‰|˜vŸ|™|Ò+Ð+Ð+Ü˜ 
Õ+ñ,ùò
 Ss   Â0!E
c                 óÀ  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }t        j                  |dz  j                  d«      «      }||j                  «       z  }t        j                  ||g«      j                  }|d | }ddt        g}t        t        |«      D ]«  \  }	}t        j                  ||	¬«      }
|
j                  ||«       dd|j                  d|«      z  dz
  z  }|
j                  |d | |z   «      }|j                   |j                   k(  sJ ‚t        j"                  t        j$                  ||z
  «      dk  «      rŒ«J ‚ y )Nr/   r.   r[   r\   r§  r5  rÂ  )rF   rG   rH   rL   rÃ  r6  rÄ  r¨  rM   rZ   r   rr   r   rÚ   rx   r™   rÀ   rÅ  rø   )r}   r<   r9  r(  rO   r€   r›   rÆ  r/  ri   r‚  r<  r=  s                r9   Ú)test_RadiusNeighborsRegressor_multioutputrÜ  E  s7  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AÜ
�‰��A‘—
‘
˜1“Ó€AØˆ�‰‹�L€AÜ
�	‰	�1�a�&Ó×Ñ€Aà��*ˆ~€HØ˜*¤lÐ3€Gä%¤j°'Ó:ò 7Ñˆ	�7Ü×0Ñ0¸ÈIÔVˆØ�‰��1ŒØ˜!˜cŸh™h q¨*Ó5Ñ5¸Ñ9Ñ:ˆØ—‘˜Q˜{ 
˜^¨gÑ5Ó6ˆà�|‰|˜xŸ~™~Ò-Ð-Ð-Ü�v‰v”b—f‘f˜V hÑ.Ó/°#Ñ5Õ6Ð6Ð6ñ7r;   c                 ó‚  — t         j                  j                  |«      }d|j                  | |«      z  dz
  }|dz  j	                  d¬«      dk  j                  t        «      }t        D �]G  }t        j                  |d¬«      }	|	j                   ||«      |«       t        j                  |d¬«      }
|
j                  t        |d	¬
«      |«       t        D ]Ø  } ||«      }t        j                  |	j                  |«      j                  «       |k(  «      dkD  sJ ‚ |t        |d	¬
«      «      }|t         t"        z   v r8d}t%        j&                  t(        |¬«      5  |
j                  |«       d d d «       ŒŸt        j                  |
j                  |«      j                  «       |k(  «      dkD  rŒØJ ‚ �ŒJ y # 1 sw Y   ŒèxY w)Nr/   r.   r1  g      Ð?r-   r²  rº   r  r»   r¼   çffffffî?z3not supported due to its handling of explicit zerosrÿ   )rF   rG   rH   rL   r6  rq   r7  r³  r   r   rx   r   ÚSPARSE_OR_DENSErÊ  r™   Úroundr%   r    ru   r±   r  )r}   r<   r9  rh   r(  rO   r€   r›   rµ  r;  Úknn_prer¶  ÚX2ÚX2_prer  s                  r9   Ú test_kneighbors_regressor_sparserä  \  s‡  € ô �)‰)×
Ñ
 Ó
-€CØ	ˆC�H‰H�Y 
Ó+Ñ+¨aÑ/€AØ
ˆQ‰$�‰˜ˆÓ	˜dÑ	"×*Ñ*¬3Ó/€Aä!ó Lˆ	Ü×+Ñ+¸ÈvÔVˆØ�‰‘	˜!“˜aÔ ä×/Ñ/Ø#¨Mô
ˆð 	�‰Ô& q°Ô=¸qÔAä&ò 
	LˆGÙ˜“ˆBÜ—7‘7˜3Ÿ;™; r›?×0Ñ0Ó2°aÑ7Ó8¸4Ò?Ð?Ð?áÔ/°¸+ÔFÓGˆFØœ.¬>Ñ9Ñ9ØK�Ü—]‘]¤9°CÔ8ñ ,Ø—O‘O FÔ+÷,ð ,ô —w‘w˜wŸ™¨vÓ6×<Ñ<Ó>À!ÑCÓDÀtÓKÐKÐKò
	LñL÷ ,ð ,ús   ÅF5Æ5F>c                  ó^  — t         D �]£  } t        j                  d| ¬«      }|j                  t        j
                  t        j                  «       t        |j                  t        j
                  «      t        j                  «       |j                  d| ¬«       |j                  t        j
                  t        j                  «       t        j                  |j                  t        j
                  «      t        j                  k(  «      dkD  sJ ‚t        j                  d| ¬«      }|j                  t        j
                  t        j                  «       t        j                  |j                  t        j
                  «      j                  «       t        j                  k(  «      dkD  r�Œ¤J ‚ y )Nr.   r²  r]  rÞ  r`   )rr   r   rØ   rx   Úirisr¬   rÍ   r   r™   Ú
set_paramsrF   rÊ  r   rà  )ri   rW  Úrgss      r9   Útest_neighbors_irisré  |  s	  € ô
  ó Mˆ	Ü×,Ñ,¸ÀiÔPˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü˜3Ÿ;™;¤t§y¡yÓ1´4·;±;Ô?à�‰ 1°	ˆÔ:Ø�‰”—	‘	œ4Ÿ;™;Ô'Ü�w‰w�s—{‘{¤4§9¡9Ó-´·±Ñ<Ó=ÀÒDÐDÐDä×+Ñ+¸ÀYÔOˆØ�‰”—	‘	œ4Ÿ;™;Ô'Ü�w‰w�s—{‘{¤4§9¡9Ó-×3Ñ3Ó5¼¿¹ÑDÓEÈÔLÐLÐLñMr;   c                  ó:  — t         j                  j                  d«      } t         j                  }| j                  \  }}t        |dz  «      }t        j                  d|«      }t        j                  ||«      }| |   ||   | |   ||   f\  }}}	}
t        j                  dd¬«      }|j                  ||«      j                  |	|
«      }|j                  |j                  t        d¬«      |«      j                  |	j                  t        d¬«      |
«      }||k(  sJ ‚y )	NÚuint8gš™™™™™é?r   r.   r+   r²  Frc   )Údigitsr¬   rq   rÍ   rÀ   r7  rF   r¿   r   rØ   rx   Úscorer@  )r€   rÃ   r}   r<   Útrain_test_boundaryÚtrainr)  rÖ   ÚY_trainr×   ÚY_testrW  Úscore_uint8Úscore_floats                 r9   Útest_neighbors_digitsrô  �  s   € ô
 	�‰×Ñ˜7Ó#€AÜ�‰€AØŸg™gÑ€Y�
Ü˜i¨#™oÓ.ÐÜ�I‰I�aÐ,Ó-€EÜ�9‰9Ð(¨)Ó4€DØ)*¨5©°1°U±8¸Q¸t¹WÀaÈÁgÐ)MÑ&€Wˆg�v˜vä
×
(Ñ
(°QÀ'Ô
J€CØ—'‘'˜' 7Ó+×1Ñ1°&¸&ÓA€KØ—'‘'˜'Ÿ.™.¬°U˜.Ó;¸WÓE×KÑKØ�‰”e %ˆÓ(¨&ó€Kð ˜+Ò%Ð%Ñ%r;   c                  óÂ  — t        j                  ddgddgddgg«      } t        j                  | ddd¬«      }t	        |j                  «       t        j                  |j                  d   «      «       t        j                  | dd	¬
«      }t        |j                  «       g d¢g d¢g d¢g«       t        j                  | ddd¬«      }t	        |j                  «       g d¢g d¢g d¢g«       t        j                  | dd	¬
«      }t        |j                  «       g d¢g d¢g d¢g«       t        j                  | ddd¬«      }t        |j                  «       g d¢g d¢g d¢g«       y )Nr   r.   rP  rV   r/   ÚconnectivityT©râ   Úinclude_selfr\   rá   ©r  rP  r  )rP  r  r  ©r  çÊäzºƒö?r  ©rV   rV   r  ©r  rV   rV   )r  rP  ç½Üí›wã@©rP  r  rû  )rþ  rû  r  r0   )r.   r.   r.   )	rF   r  r   r²   r   rú   rN   rÀ   r   ©r€   rQ   s     r9   Útest_kneighbors_graphr  ¤  s  € ä
�‰�1�a�&˜4 ˜+¨¨1 vÐ.Ó/€Aô 	×"Ñ" 1 a¨nÈ4ÔP€AÜ�q—y‘y“{¤B§F¡F¨1¯7©7°1©:Ó$6Ô7ä×"Ñ" 1 a¨jÔ9€AÜØ	�	‰	‹Ò'Ò)9Ò;RÐSôô
 	×"Ñ" 1 a¨nÈ4ÔP€AÜ�q—y‘y“{¢_²oÂÐ$WÔXä×"Ñ" 1 a¨jÔ9€AÜØ	�	‰	‹â#Ú#Ú)ð	
ôô 	×"Ñ" 1 a¨nÈ4ÔP€AÜ�A—I‘I“K¢)ªYº	Ð!BÕCr;   rh   )r.   r/   r0   râ   rö  c                 ó  — t         j                  j                  |«      }|j                  dd«      } ||«      }t	        t        j                  || |¬«      j                  «       t        j                  || |¬«      j                  «       «       y ©Nr^   rá   )rF   rG   rH   rù   r   r   r²   rú   ©rh   râ   rì   ÚseedrO   r€   ÚXcsrs          r9   Útest_kneighbors_graph_sparser  Ä  sp   € ô �)‰)×
Ñ
 Ó
%€CØ�	‰	�"�bÓ€AÙ˜Ó€DäÜ×"Ñ" 1 k¸Ô=×EÑEÓGÜ×"Ñ" 4¨¸4Ô@×HÑHÓJõr;   c                  ó.  — t        j                  ddgddgddgg«      } t        j                  | ddd¬	«      }t	        |j                  «       g d
¢g d¢g d¢g«       t        j                  | dd¬«      }t        |j                  «       g d¢g d¢g d¢g«       y )Nr   r.   rP  rV   r/   r?   rö  Tr÷  rü  )rV   rV   rV   rý  r\   rá   rù  rÿ  rú  )rF   r  r   r³   r   rú   r   r   s     r9   Útest_radius_neighbors_graphr	  Ô  s‚   € ä
�‰�1�a�&˜4 ˜+¨¨1 vÐ.Ó/€Aä×(Ñ(¨¨C°nÐSWÔX€AÜ�q—y‘y“{¢_²oÂÐ$WÔXä×(Ñ(¨¨C°jÔA€AÜØ	�	‰	‹Ò&Ò(?ÒAWÐXõr;   c                 ó  — t         j                  j                  |«      }|j                  dd«      } ||«      }t	        t        j                  || |¬«      j                  «       t        j                  || |¬«      j                  «       «       y r  )rF   rG   rH   rù   r   r   r³   rú   r  s          r9   Ú"test_radius_neighbors_graph_sparser  á  sp   € ô �)‰)×
Ñ
 Ó
%€CØ�	‰	�"�bÓ€AÙ˜Ó€DäÜ×(Ñ(¨¨K¸dÔC×KÑKÓMÜ×(Ñ(¨¨{ÀÔF×NÑNÓPõr;   Ú	Estimatorc                 ó   — t         j                  d«      } ||«      }t         j                  d«      }t        j                  d«      } | dd¬«      }d}t	        j
                  t        |¬«      5  |j                  |«       d	d	d	«       d
}t	        j
                  t        |¬«      5  t        |j                  ||«      «       d	d	d	«        | dd¬«      }|j                  ||«       d}t	        j
                  t        |¬«      5  |j                  |«       d	d	d	«        | «       }t        j                  d«      }t	        j
                  t        |¬«      5  |j                  t        j                  d«      t        j                  d«      «       d	d	d	«       d}t	        j
                  t        |¬«      5  |j                  |d	d	…d	d	…d	f   |«       d	d	d	«       |j                  ||«       t        j                  d«      }t	        j
                  t        |¬«      5  |j                  g g«       d	d	d	«       y	# 1 sw Y   �Œ¶xY w# 1 sw Y   �Œ‚xY w# 1 sw Y   �Œ<xY w# 1 sw Y   ŒÐxY w# 1 sw Y   ŒšxY w# 1 sw Y   y	xY w)z`Additional parameter validation for *Neighbors* estimators not covered by common
    validation.©r^   r/   r£   r^   r*   Ú	haversiner•   zinstance is not fitted yetrÿ   Nz.Metric 'haversine' not valid for sparse input.r+   ©r3   ri   z-Haversine distance only valid in 2 dimensionszFound array with 0 sample(s)rî   r   zFound array with dim 3zFound array with 0 feature(s))rO   r¥   rF   rŒ  ru   r±   r¾   r™   r   rx   rÓ  rÔ  )r  rì   r€   ÚXsparseÚX3r›   r«   r  s           r9   Ú"test_neighbors_validate_parametersr  ñ  sñ  € ô 	×Ñ˜'Ó"€AÙ˜AÓ€GÜ	×	Ñ	˜7Ó	#€BÜ
�‰�‹€Aá˜{°;Ô?€DØ
&€CÜ	�‰”z¨Ô	-ñ Ø�‰�QŒ÷à
:€CÜ	�‰”z¨Ô	-ñ .Ü˜Ÿ™ ¨!Ó,Ô-÷.ñ ˜K°7Ô;€DØ‡H�HˆR�„OØ
9€CÜ	�‰”z¨Ô	-ñ Ø�‰�RÔ÷ñ ‹;€DÜ
�)‰)Ð2Ó
3€CÜ	�‰”z¨Ô	-ñ .Ø�‰”—‘˜“¤"§'¡'¨!£*Ô-÷.ð #€CÜ	�‰”z¨Ô	-ñ #Ø�‰�’1’a˜�:‘ Ô"÷#à‡H�HˆQ�„Nä
�)‰)Ð3Ó
4€CÜ	�‰”z¨Ô	-ñ Ø�‰�b�TÔ÷ð ÷/ñ ú÷.ñ .ú÷ñ ú÷
.ð .ú÷#ð #ú÷
ð úsH   Á/H5Â&IÄIÅ9IÆ2I(ÈI4È5H?ÉIÉIÉI%É(I1É4I=r]   r-   r+   c                 ó  — t         j                  d|f«      }t        j                  d«      } | d|¬«      }d}t	        j
                  t        |¬«      5  |j                  ||«       ddd«       |j                  dk(  sJ ‚y# 1 sw Y   ŒxY w)z¸
    Validation of all classes extending NeighborsBase with
    Minkowski semi-metrics (i.e. when 0 < p < 1). That proper
    Warning is raised for `algorithm="auto"` and "brute".
    r^   rO  )r@   ri   zwMind that for 0 < p < 1, Minkowski metrics are not distance metrics. Continuing the execution with `algorithm='brute'`.rÿ   Nr+   )	rO   r¥   rF   rŒ  ru   r  rn  rx   Ú_fit_method©r  r<   ri   r€   r›   r   r  s          r9   Ú-test_neighbors_minkowski_semimetric_algo_warnr     s…   € ô" 	×Ñ˜2˜zÐ*Ó+€AÜ
�‰�‹€Aá˜ yÔ1€Eð	Gð ô 
�‰”k¨Ô	-ñ Ø�	‰	�!�QŒ÷ð ×Ñ Ò'Ð'Ñ'÷ð ús   ÁBÂB
r,   r*   c                 óü   — t         j                  d«      }t        j                  d«      } | |d¬«      }d|› d�}t	        j
                  t        |¬«      5  |j                  ||«       ddd«       y# 1 sw Y   yxY w)	zECheck that we raise a proper error if `algorithm!='brute'` and `p<1`.r  r^   rO  )ri   r@   zalgorithm="zv" does not support 0 < p < 1 for the Minkowski metric. To resolve this problem either set p >= 1 or algorithm="brute".rÿ   N)rO   r¥   rF   rŒ  ru   r±   r¾   rx   r  s          r9   Ú.test_neighbors_minkowski_semimetric_algo_errorr  ?  su   € ô 	×Ñ˜'Ó"€AÜ
�‰�‹€Aá 	¨SÔ1€Eà
�i�[ð !+ð 	+ð ô
 
�‰”z¨Ô	-ñ Ø�	‰	�!�QŒ÷÷ ñ ús   ÁA2Á2A;c                  ó„  — t         j                  d«      } t        j                  «       j	                  | «      }d}t        j                  t        |¬«      5  |j                  | d¬«       ddd«       t        j                  t        |¬«      5  |j                  | d¬«       ddd«       y# 1 sw Y   ŒAxY w# 1 sw Y   yxY w)z'Validate parameter of NearestNeighbors.r  zUUnsupported mode, must be one of "connectivity", or "distance" but got "blah" insteadrÿ   Úblahrá   N)
rO   r¥   r   rw   rx   ru   r±   r¾   r²   r³   )r€   r«   r  s      r9   Ú&test_nearest_neighbors_validate_paramsr  Z  s¨   € ä×Ñ˜'Ó"€Aä×%Ñ%Ó'×+Ñ+¨AÓ.€Dð	ð ô 
�‰”z¨Ô	-ñ .Ø×Ñ˜a fÐÔ-÷.ä	�‰”z¨Ô	-ñ 4Ø×#Ñ# A¨FÐ#Ô3÷4ð 4÷.ð .ú÷4ð 4ús   ÁB*ÂB6Â*B3Â6B?Úpyfuncc           	      óÖ  — t         j                  j                  |«      }t        || «      }g d¢}|j	                  ||«      j                  | d¬«      }	|j	                  ||«      j                  | d¬«      }
t        ||«      }|D �]Õ  }t        |t        «      rdn |t        j                  d   vxs
 d|v xr d|v }i }|j                  dd«      }|D �]  }t        |t        «      r,| t         j                  k(  rd	|v rt        j                  d
«       t        j                  |||||¬«      }|r9|dk(  r4t        j                   t"        «      5  |j%                  |	«       d d d «       Œ•|dk(  rDt'        d d«      }t        j(                  |	d d …|f   «      }	t        j(                  |
d d …|f   «      }
|j%                  |	«       |j+                  |
d¬«      ||<   �Œ |d   \  }}|d   \  }}| t         j,                  k(  rdnd}t/        |||¬«       t1        ||«       |r�Œš|d   \  }}t/        |||¬«       t1        ||«       t/        |||¬«       t1        ||«       �ŒØ y # 1 sw Y   �ŒxY w)N)r+   r*   r,   Frc   r,   r>   rA   r@   r/   re   rf   ©rh   ri   r3   r@   Úmetric_paramsr  Trj   r+   r*   gH¯¼šò×z>g-Cëâ6?)Úrtol)rF   rG   rH   r:   rL   rq   rR   rs   r   r   ÚVALID_METRICSÚpoprt   ru   rv   rw   r±   r¾   rx   ÚsliceÚascontiguousarrayry   rŸ  r   r   )r|   Úglobal_random_seedr3   r}   r<   r~   rh   rO   Ú
algorithmsrÖ   r×   Úmetric_params_listr   Úexclude_kd_treerƒ   r@   ri   r„   Ú
feature_slÚ	brute_dstÚ	brute_idxÚball_tree_dstÚball_tree_idxr!  Úkd_tree_dstÚkd_tree_idxs                             r9   Útest_neighbors_metricsr1  i  st  € ô& �)‰)×
Ñ
Ð 2Ó
3€Cä˜6 <Ó0€Fò 3€JØ�h‰h�y *Ó-×4Ñ4°\ÈÐ4ÓN€GØ�X‰X�k :Ó.×5Ñ5°lÈÐ5ÓO€Fä2°6¸:ÓFÐà+ó 7;ˆô ˜&¤.Ô1ñ àœy×6Ñ6°yÑAÐAò @Ø˜vÐ%Ò>¨#°Ð*>ð	 	ð ˆØ×Ñ˜c 1Ó%ˆØ#ó 	PˆIÜ˜&¤.Ô1°lÄbÇjÁjÒ6PØ˜YÑ&Ü—K‘Kð$ôô ×.Ñ.Ø'Ø#ØØØ+ôˆEñ  9°	Ò#9Ü—]‘]¤:Ó.ñ 'Ø—I‘I˜gÔ&÷'àð ˜Ò$Ü" 4¨›^�
Ü×.Ñ.¨w²q¸*°}Ñ/EÓF�Ü×-Ñ-¨f²Q¸
°]Ñ.CÓD�à�I‰I�gÔØ!&×!1Ñ!1°&È$Ð!1Ó!OˆG�IÓð7	Pð:  ' wÑ/Ñˆ	�9Ø'.¨{Ñ';Ñ$ˆ�}ð $¤r§z¡zÒ1‰t°tˆä˜	 =°tÕ<Ü˜9 mÔ4ãØ'.¨yÑ'9Ñ$ˆK˜Ü˜I {¸Õ>Ü˜y¨+Ô6ä˜M¨;¸TÕBÜ˜}¨kÖ:ño7;÷4'ñ 'ús   ÅIÉI()Úcategoryrº   c                 ó  — t         j                  j                  |«      }|j                  ||«      j	                  |d¬«      }|j                  ||«      j	                  |d¬«      }	| dk(  rDt        d d«      }
t        j                  |d d …|
f   «      }t        j                  |	d d …|
f   «      }	| t        v r
|dkD  }|	dkD  }	t        | |«      }|D ]£  }|j                  dd«      }t        j                  |d| ||¬«      }|j                  |«       t        d¬	«      5  |j                  |	d
¬«      \  }}d d d «       t        d
¬	«      5  |j                  |	d
¬«      \  }}d d d «       t        «       Œ¥ y # 1 sw Y   ŒExY w# 1 sw Y   Œ&xY w)NFrc   r  r/   r3  r@   r+   r  ©Úenable_cython_pairwise_distTrj   )rF   rG   rH   rL   rq   r$  r%  r   rR   r#  r   rw   rx   r   ry   r   )r3   r|   r&  r}   r<   r~   rh   rO   rÖ   r×   r*  r(  r   r@   r„   Úlegacy_brute_dstÚlegacy_brute_idxÚpdr_brute_dstÚpdr_brute_idxs                      r9   Útest_kneighbors_brute_backendr:  Ä  s§  € ô �)‰)×
Ñ
Ð 2Ó
3€Cà�h‰h�y *Ó-×4Ñ4°\ÈÐ4ÓN€GØ�X‰X�k :Ó.×5Ñ5°lÈÐ5ÓO€Fð �ÒÜ˜4 “^ˆ
Ü×&Ñ& wªq°*¨}Ñ'=Ó>ˆÜ×%Ñ% fªQ°
¨]Ñ&;Ó<ˆàÔ+Ñ+Ø˜C‘-ˆØ˜#‘ˆä2°6¸:ÓFÐà+ò 
ˆØ×Ñ˜c 1Ó%ˆä×*Ñ*Ø#ØØØØ'ô
ˆð 	�	‰	�'Ôä¸Ô>ñ 	à16×1AÑ1AØ¨ð 2Bó 2Ñ.ÐÐ.÷	ô
 ¸Ô=ñ 	à+0×+;Ñ+;Ø¨ð ,<ó ,Ñ(ˆM˜=÷	ô 	*Ø˜mÐ-=¸}õ	
ñ1
÷	ð 	ú÷
	ð 	ús   ÄE6ÅFÅ6E?	ÆF	c                  ót  — d„ } t         j                  j                  d«      j                  dd«      }t	        j
                  dd| ¬«      }t	        j
                  dd| ¬«      }|j                  |«       |j                  |«       |j                  |«      \  }}|j                  |«      \  }}t        ||«       y )	Nc                 ód   — t        j                  t        j                  | dz  |dz  z   «      «      S )Nr/   )rF   rÃ  r6  )Úx1Úx2s     r9   Úcustom_metricz+test_callable_metric.<locals>.custom_metric   s&   € Ü�w‰w”r—v‘v˜b !™e b¨!¡e™mÓ,Ó-Ð-r;   r·   r  r/   r0   r-   rg   r+   )	rF   rG   rH   rL   r   rw   rx   ry   r   )r?  r€   Únbrs1Únbrs2r©   rª   r­   r®   s           r9   Útest_callable_metricrB  ÿ  s¤   € ò.ô 	�	‰	×Ñ˜bÓ!×&Ñ& r¨1Ó-€AÜ×&Ñ&Ø °ô€Eô ×&Ñ&Ø °ô€Eð 
‡I�Iˆa„LØ	‡I�Iˆa„Là×"Ñ" 1Ó%�K€Eˆ4Ø×"Ñ" 1Ó%�K€Eˆ4ä�E˜5Õ!r;   c                 ó(  — t        || «      }t        j                  ||«      j                  | d¬«      } ||«      }t	        ||«      }|dk(  r“t        j                  d«      }t        j                  d«      }	t        j                  |d¬«      }
t        j                  |	|d¬«      }t        j                  dd¬	«      }|j                  |
«       |j                  |«       y |D ]®  }t        j                  dd
||¬«      }|dk(  r(t        d d«      }t        j                  |d d …|f   «      }|j                  |«       |j                  |«       |t        d   v sŒwt        j                  dd
|¬«      j                  |«      }|j                  |«       Œ° y )NFrc   rº   r¸   r¹   r»   r¼   r0   r  r-   ©rh   ri   r3   r   r  r/   r+   rg   )r:   rO   rL   rq   rR   r¥   r   r   r   rw   rx   ry   r$  rF   r%  r   )r|   r3   rì   r}   r<   r€   r  r(  ÚX_precomputedÚY_precomputedrÄ   rÅ   Únb_pr   rå   r*  s                   r9   Ú*test_valid_brute_metric_for_auto_algorithmrH    st  € ô ˜6 <Ó0€Fä�‰�˜JÓ'×.Ñ.¨|À%Ð.ÓH€AÙ˜Ó€Dä2°6¸:ÓFÐà�ÒÜ×)Ñ)¨'Ó2ˆÜ×)Ñ)¨&Ó1ˆÜ×(Ñ(¨¸{ÔKˆÜ×(Ñ(Ø˜=°ô
ˆô ×)Ñ)°aÀÔNˆØ�‰�ŒØ�‰˜Õð 0ò 	$ˆMÜ×+Ñ+ØØ ØØ+ô	ˆBð ˜Ò$Ü" 4¨›^�
Ü×(Ñ(¨ª1¨j¨=Ñ)9Ó:�à�F‰F�1ŒIØ�M‰M˜!ÔàÔ-¨gÑ6Ò6Ü×/Ñ/Ø !¨V¸Fôç‘#�d“)ð ð —‘˜dÕ#ñ'	$r;   c                  ó  — t         j                  dd«      } t         j                  ddd«      }t        j                  ddi¬«      }t        j                  t        «      5  |j                  | |«       d d d «       y # 1 sw Y   y xY w)Nr`   r   r/   r@   r0   )r   )	rO   rL   r—   r   rØ   ru   r  ÚSyntaxWarningrx   )r€   r›   rÏ   s      r9   Útest_metric_params_interfacerK  D  se   € Ü�‰��A‹€AÜ�‰�A�q˜!Ó€AÜ
×
(Ñ
(¸¸Q°xÔ
@€CÜ	�‰”mÓ	$ñ Ø�‰��1Œ÷÷ ñ ús   ÁA;Á;Bc                 ó¨  — t         j                  j                  d«      }|j                  dd«      }|j	                  ddd«      }t        j                  dd¬«      }t        j                  dd¬«      }||fD ]M  }|j                  ||«       t        j                  t        «      5  |j                   | |«      «       d d d «       ŒO y # 1 sw Y   ŒZxY w)Nr   r`   r/   r.   r,   r•  r*   )rF   rG   rH   rL   r—   r   rØ   r   rx   ru   r±   r¾   r™   )rì   rO   r€   r›   r@  rA  r   s          r9   Ú test_predict_sparse_ball_kd_treerM  L  s²   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰��A‹€AØ�‰�A�q˜!Ó€AÜ×*Ñ*¨1¸	ÔB€EÜ×)Ñ)¨!°{ÔC€EØ˜�ò ,ˆØ�	‰	�!�QŒÜ�]‰]œ:Ó&ñ 	,Ø�M‰M™-¨Ó*Ô+÷	,ð 	,ñ,÷	,ð 	,ús   Â%CÃC	c                  ó|  — t         j                  j                  d«      } | j                  dd«      }t	        |«      j                  «       }t        j                  |«       |d   }dD ]y  }t        j                  |d|dd¬«      j                  «       }t        j                  d|¬	«      j                  |«      }t        ||j                  |«      j                  «       «       Œ{ dD ]y  }t        j                  |||dd¬«      j                  «       }t        j                  ||¬
«      j                  |«      }t        ||j                  |«      j                  «       «       Œ{ t        j                  dd¬	«      }|j                  |«       t        j                  t         «      5  t        j                  |dd¬«       d d d «       t        j                  |d¬«      }|j                  |«       t        j                  t         «      5  t        j                  ||d¬«       d d d «       y # 1 sw Y   ŒlxY w# 1 sw Y   y xY w)Nr   r`   rh  )Ú	manhattanÚ	chebyshevr0   rö  T)r3   râ   rø  r  )r3   rš   rO  r»   r¼   )rš   r3   )rF   rG   rH   rL   r   Úflattenr–  r   r²   rú   rw   rx   r   r³   ru   r±   r¾   )rO   r€   Ú
dist_arrayrš   r3   Ú
nbrs_graphr@  ÚX_nbrss           r9   Útest_non_euclidean_kneighborsrU  Y  sé  € Ü
�)‰)×
Ñ
 Ó
"€CØ�‰��A‹€Aô $ AÓ&×.Ñ.Ó0€JÜ‡G�GˆJÔØ˜‰^€Fð -ò LˆÜ×/Ñ/Øˆq˜ nÀ4ô
ç
‰'‹)ð 	ô ×*Ñ*°qÀÔH×LÑLÈQÓOˆÜ˜: u×'=Ñ'=¸aÓ'@×'HÑ'HÓ'JÕKðLð -ò RˆÜ×5Ñ5Øˆv˜f¨>Èô
ç
‰'‹)ð 	ô ×*Ñ*°&ÀÔH×LÑLÈQÓOˆÜ˜: u×'CÑ'CÀAÓ'F×'NÑ'NÓ'PÕQðRô ×'Ñ'°A¸kÔJ€FØ
‡J�Jˆq„MÜ	�‰”zÓ	"ñ BÜ×"Ñ" 6¨1°[ÕA÷Bä×'Ñ'¨v¸kÔJ€FØ
‡J�Jˆq„MÜ	�‰”zÓ	"ñ MÜ×(Ñ(¨°ÀÕL÷Mð M÷	Bð Bú÷Mð Mús   Æ"H&ÈH2È&H/È2H;c                 óH   — t        | «      D ]  \  }}t        |||   «       Œ y rÕ   )Ú	enumerater   )ÚnparrayÚ
list_checkr*  Úeles       r9   Úcheck_object_arraysr[  }  s(   € Ü˜gÓ&ò 1‰ˆˆSÜ˜3 
¨3¡Õ0ñ1r;   c            	      óÂ  — t         D �]U  } t        j                  d| ¬«      }dgdgg}|j                  |«       dgdgg}|j	                  |«      \  }}t        |dgdgg«       t        |dgdgg«       |j                  dgdggd¬«      \  }}t        |dgddgg«       t        |dgddgg«       t        |j                  |«      j                  «       ddgddgg«       t        |j                  dgdggd	¬
«      j                  «       t        j                  ddgddgg«      «       |j                  dgdggd¬«      }t        |j                  «       ddgddgg«       �ŒX y )Nr.   r²  r   r/   r?   rê   r  rV   r\   rá   )rr   r   rw   rx   ry   r   r#  r[  r²   rú   rF   r  r³   )ri   rå   r€   Ú	test_datarX   r*  rO   s          r9   Ú.test_k_and_radius_neighbors_train_is_not_queryr^  ‚  s~  € ô  ó <ˆ	Ü×'Ñ'°AÀÔKˆàˆS�1�#ˆJˆØ
�‰ˆqŒ	Ø�S˜1˜#�Jˆ	ð —M‘M )Ó,‰	ˆˆcÜ˜4 1 #¨ s Ô,Ü˜3 !  q c 
Ô+Ø×'Ñ'¨!¨¨q¨c¨
¸3Ð'Ó?‰	ˆˆcÜ˜D A 3¨¨A¨ -Ô0Ü˜C 1 #¨¨1 v Ô/ô 	Ø×Ñ 	Ó*×2Ñ2Ó4¸¸S°zÀCÈÀ:Ð6Nô	
ô 	Ø×Ñ !  q c 
°ÐÓ<×DÑDÓFÜ�H‰H�s˜C�j 3¨ *Ð-Ó.ô	
ð ×'Ñ'¨!¨¨q¨c¨
¸3Ð'Ó?ˆÜ˜3Ÿ;™;›=¨A¨q¨6°A°q°6Ð*:Ö;ñ1<r;   c           	      ó  — t        j                  d| ¬«      }dgdgg}|j                  |«       |j                  «       \  }}t	        |dgdgg«       t	        |dgdgg«       |j                  d d¬«      \  }}t        |dgdgg«       t        |dgdgg«       |j                  d d¬«      }|j                  d «      }||fD ]R  }t	        |j                  «       ddgddgg«       t	        |j                  ddg«       t	        |j                  ddg«       ŒT ddgddgddgg}t        j                  d| ¬«      }|j                  |«       t	        |j                  «       j                  «       t        j                  g d¢g d¢g d	¢g«      «       y )
Nr.   r²  r   r?   rê   r/   rý  )rV   r  rV   )rV   rV   r   )r   rw   rx   ry   r   r#  r[  r³   r²   rú   r¬   rŠ   rF   r  )ri   rå   r€   rX   r*  rO   Úkngr¢  s           r9   Ú"test_k_and_radius_neighbors_X_Nonera     s€  € ô 
×	#Ñ	#°¸YÔ	G€Bà
ˆˆqˆcˆ
€AØ‡F�Fˆ1„Ià—‘“�I€Dˆ#Ü�t˜q˜c A 3˜ZÔ(Ü�s˜a˜S 1 #˜JÔ'Ø×#Ñ# D°Ð#Ó5�I€Dˆ#Ü˜ ˜s Q C˜jÔ)Ü˜˜q˜c A 3˜ZÔ(ð ×
#Ñ
# D°Ð
#Ó
5€CØ
×
Ñ
˜dÓ
#€CØ�s�ò 2ˆÜ˜5Ÿ=™=›?¨a°¨V°a¸°VÐ,<Ô=Ü˜5Ÿ:™:¨¨1 vÔ.Ü˜5Ÿ=™=¨1¨a¨&Õ1ð2ð
 ˆQˆ�!�Q�˜!˜Q˜Ð €AÜ	×	#Ñ	#°¸YÔ	G€BØ‡F�Fˆ1„IÜØ
×ÑÓ×%Ñ%Ó'Ü
�‰’/¢?²MÐBÓCõr;   c           	      óÞ  — t        j                  d| ¬«      }dgdgdgg}|j                  |«       |j                  |d¬«      }t	        |j                  «       t        j                  g d¢g d¢g d¢g«      «       t	        |j                  g d¢«       t	        |j                  g d¢«       |j                  dgdggd	¬
«      \  }}t        |ddgddgg«       t        |ddgddgg«       |j                  |d	¬
«      }t	        |j                  «       t        j                  g d¢g d¢g d¢g«      «       |j                  dgdggd	d¬«      }|j                  «        t	        |j                  «       g d¢g d¢g«       t	        |j                  g d¢«       t	        |j                  g d¢«       t        j                  d«      }t        j                  dd¬«      }|j                  |«       |j                  «       \  }}t	        |t        j                   d«      «       t	        |dgdgdgg«       |j                  d¬«      }t	        |j                  «       t        j                   d«      «       t	        |j                  t        j                   d«      «       t	        |j                  g d¢«       t	        |j                  «       j                  «       t        j                  g d¢g d¢g d¢g«      «       y )Nr.   r²  r   r0   r\   rá   r  rï   r?   rê   rü  )r  r  rV   r�  rC  )r.   r   r   )r   r.   r   r.   )r   r.   r.   r   )r0   r.   r+   rñ   )r.   r   r.   )r  rV   r  )rV   r  r  )r   rw   rx   r²   r   rú   rF   r  r¬   rŠ   r#  r[  r³   Úsort_indicesrŒ  ry   Úzeros)ri   rå   Ú
duplicatesr`  rX   r*  rO   r€   s           r9   Ú&test_k_and_radius_neighbors_duplicatesrf  À  sV  € ô 
×	#Ñ	#°¸YÔ	G€BØ�#˜�s˜Q˜C�€Jà‡F�Fˆ:Ôð ×
Ñ
˜j¨zÐ
Ó
:€CÜØ�‰‹”r—x‘x¢²/Â?Ð SÓTôô �C—H‘HšoÔ.Ü�C—K‘K¢Ô+à×#Ñ# a S¨1¨# J°sÐ#Ó;�I€Dˆ#Ü˜  1˜v¨¨1 vÐ.Ô/Ü˜˜q !˜f q¨! fÐ-Ô.à
×
#Ñ
# J°sÐ
#Ó
;€CÜØ�‰‹”r—x‘x¢²/Â?Ð SÓTôð ×
#Ñ
# a S¨1¨# J°sÀÐ
#Ó
L€CØ×ÑÔÜ�C—K‘K“M¢IªyÐ#9Ô:Ü�C—K‘K¢Ô.Ü�C—H‘HšlÔ+ô 	�‰�‹€AÜ	×	#Ñ	#°¸WÔ	E€BØ‡F�Fˆ1„IØ—‘“�I€Dˆ#Ü�Dœ"Ÿ(™( 6Ó*Ô+Ü�C˜1˜# ˜s Q C˜Ô)ð ×
Ñ
 :Ð
Ó
.€CÜ�C—K‘K“M¤2§8¡8¨FÓ#3Ô4Ü�C—H‘HœbŸh™h q›kÔ*Ü�C—K‘K¢Ô+ÜØ
×ÑÓ×%Ñ%Ó'Ü
�‰’/¢?²OÐDÓEõr;   c                  óÔ  — ddgddgg} t        j                  | dd¬«      j                  «       }t        j                  | dd¬«      j                  «       }t        |d	d
gd
d	gg«       t        |d
d	gd	d
gg«       t        j                  | dd¬«      j                  «       }t        j                  | dd¬«      j                  «       }t        |d	d	gd	d	gg«       t        |d
d	gd	d
gg«       y )Nr/   r0   r1   r`   r.   T)rø  FrV   r  r  )r   r²   rú   r   r³   )r€   r`  Úkng_not_selfrO   Úrng_not_selfs        r9   Ú!test_include_self_neighbors_graphrj  ò  sê   € à
ˆQˆ�!�Q�Ð€AÜ
×
$Ñ
$ Q¨¸Ô
=×
EÑ
EÓ
G€CÜ×-Ñ-¨a°ÀÔG×OÑOÓQ€LÜ�s˜c 3˜Z¨#¨s¨Ð4Ô5Ü�| s¨C j°3¸°*Ð%=Ô>ä
×
*Ñ
*¨1¨cÀÔ
E×
MÑ
MÓ
O€CÜ×3Ñ3Ø	ˆ3˜Uôç�gƒið ô �s˜c 3˜Z¨#¨s¨Ð4Ô5Ü�| s¨C j°3¸°*Ð%=Õ>r;   c                 óp  — t        j                  dddd¬«      \  }}t        ||«      \  }}}}t        j                  d| ¬«      }|j                  ||«       |j                  |«      }|j                  |«      \  }}	|j                  |d¬«      j                  «       }
|j                  d¬	«       |j                  ||«       |j                  |«      }|j                  |«      \  }}|j                  |d¬«      j                  «       }t        ||«       t        ||«       t        |	|«       t        |
|«       y )
NrŠ  r`   r   ©r}   r<   Ún_redundantr(  r0   r²  r\   rá   ©Ún_jobs)r   Úmake_classificationr   r   rØ   rx   r™   ry   r²   rú   rç  r   r   )ri   r€   r›   rÖ   r×   rª  r«  rW  rX   r*  r¢  Ú
y_parallelÚdist_parallelÚind_parallelÚgraph_parallels                  r9   Útest_same_knn_parallelru    s  € ä×'Ñ'Ø °Àô�D€A€qô (8¸¸1Ó'=Ñ$€GˆV�W˜fä
×
(Ñ
(°QÀ)Ô
L€CØ‡G�GˆG�WÔØ�‰�FÓ€AØ—‘˜vÓ&�I€Dˆ#Ø× Ñ  ¨jÐ Ó9×AÑAÓC€Eà‡N�N˜!€NÔØ‡G�GˆG�WÔØ—‘˜VÓ$€JØ"%§.¡.°Ó"8Ñ€M�<Ø×)Ñ)¨&°zÐ)ÓB×JÑJÓL€Nä�q˜*Ô%Ü�D˜-Ô(Ü�s˜LÔ)Ü�E˜>Õ*r;   c                 óº  — t        j                  dddd¬«      \  }}t        ||«      \  }}}}t        j                  d| ¬«      }|j                  ||«       |j                  |«      }|j                  |«      \  }}	|j                  |d¬«      j                  «       }
|j                  d	¬
«       |j                  ||«       |j                  |«      }|j                  |«      \  }}|j                  |d¬«      j                  «       }t        ||«       t        t        |«      «      D ]&  }t        ||   ||   «       t        |	|   ||   «       Œ( t        |
|«       y )NrŠ  r`   r   rl  r^   r†  r\   rá   r0   rn  )r   rp  r   r   rÙ   rx   r™   r#  r³   rú   rç  r   rz   r{   r   )ri   r€   r›   rÖ   r×   rª  r«  rW  rX   r*  r¢  rq  rr  rs  rt  r…   s                   r9   Ú#test_same_radius_neighbors_parallelrw    sF  € ä×'Ñ'Ø °Àô�D€A€qô (8¸¸1Ó'=Ñ$€GˆV�W˜fä
×
-Ñ
-°RÀ9Ô
M€CØ‡G�GˆG�WÔØ�‰�FÓ€AØ×$Ñ$ VÓ,�I€Dˆ#Ø×&Ñ& v°JÐ&Ó?×GÑGÓI€Eà‡N�N˜!€NÔØ‡G�GˆG�WÔØ—‘˜VÓ$€JØ"%×"6Ñ"6°vÓ">Ñ€M�<Ø×/Ñ/°¸ZÐ/ÓH×PÑPÓR€Nä�q˜*Ô%Ü”3�t“9Óò 4ˆÜ˜˜Q™ ¨qÑ!1Ô2Ü˜3˜q™6 <°¡?Õ3ð4ô �E˜>Õ*r;   ÚbackendÚ	threadingÚlokyc                 óp  — t        j                  | «      5  t        j                  dddd¬«      \  }}t	        ||«      \  }}}}t        j                  d|d¬«      }|j                  ||«       |j                  |«       |j                  |«       |j                  |d¬	«       d d d «       y # 1 sw Y   y xY w)
NrŠ  r`   r   rl  r0   r/   )rh   ri   ro  r\   rá   )ÚjoblibÚparallel_backendr   rp  r   r   rØ   rx   r™   ry   r²   )	rx  ri   r€   r›   rÖ   r×   rª  r«  rW  s	            r9   Útest_knn_forcing_backendr~  5  s­   € ô
 
×	 Ñ	  Ó	)ñ 6Ü×+Ñ+Ø Q°AÀAô
‰ˆˆ1ô ,<¸A¸qÓ+AÑ(ˆ�˜ &ä×,Ñ,Ø Y°qô
ˆð 	�‰�˜Ô!Ø�‰�FÔØ�‰�vÔØ×Ñ˜V¨*ÐÔ5÷6÷ 6ñ 6ús   –BB,Â,B5c                  óæ   — t        j                  d¬«      } d}t        j                  |«      }dd | D �cg c]  }|‘Œ }}| j	                  ||«      j                  |«      }t        ||«       y c c}w )Nr.   r¤   rh  ÚABCDEFGHIJKLMNOPQRSTU)r   rØ   rF   rN   rx   r™   r   )Ú
classifierÚCLASSESr€   Úchr›   Úresults         r9   Útest_dtype_convertr…  I  sh   € Ü×/Ñ/¸AÔ>€JØ€GÜ
�‰ˆw‹€AØ-¨h¨wÐ7Ö8�ŠÐ8€AÐ8à�^‰^˜A˜qÓ!×)Ñ)¨!Ó,€FÜ�v˜qÕ!ùò 	9s   µ	A.c                 ó
  — d„ } | g d¢g d¢g d¢g«      } | g d¢g d¢g«      }t        j                  dd|¬	«      j                  |«      }|j                  |d
¬«      }t	        j
                  ddgddgg«      }t        ||«       y )Nc                 ó    — t        | «      rt        |«      sJ ‚| j                  |j                  «      j                  «       j	                  «       S rÕ   )r   ÚdotrM   rú   Úitem)Úxr›   s     r9   Úsparse_metricz2test_sparse_metric_callable.<locals>.sparse_metricU  s9   € Ü˜Œ{œx¨œ{Ð*Ð*Ø�u‰u�Q—S‘S‹z×!Ñ!Ó#×(Ñ(Ó*Ð*r;   )r.   r.   r.   r.   r.   )r.   r   r.   r   r.   )r   r   r.   r   r   )r.   r.   r   r.   r.   )r.   r   r   r.   r.   r+   r/   )ri   rh   r3   Frj   r.   )r   rw   rx   ry   rF   r  r   )rì   r‹  r€   rÃ   rå   ÚNÚgold_standard_nns          r9   Útest_sparse_metric_callablerŽ  S  sŽ   € ò+ñ 	Ú	š/ª?Ð;ó	€Añ 	’ªÐ8Ó9€Aä	×	#Ñ	#Ø q°ô
ç	�cˆ!ƒfð ð 	�‰�a¨ˆÓ/€Aô —x‘x ! Q ¨!¨Q¨Ð 0Ó1Ðä�qÐ*Õ+r;   z0ignore::sklearn.exceptions.DataConversionWarningc                  óJ  — t         j                  j                  d«      } | j                  d¬«      }t        j
                  } |dd¬«      j                  |«      } |dd¬«      j                  |«      }t        |j                  |«      d   |j                  |«      d   «       y )Nr   )rZ  r`   r“   Újaccardr+   r  r*   )	rF   rG   rH   r[   r   rw   rx   r   ry   )rO   r€   ÚNNÚnn1Únn2s        r9   Útest_pairwise_boolean_distancer”  k  s‡   € ô
 �)‰)×
Ñ
 Ó
"€CØ�‰˜ˆÓ €AÜ	×	#Ñ	#€Bá
�I¨Ô
1×
5Ñ
5°aÓ
8€CÙ
�I¨Ô
5×
9Ñ
9¸!Ó
<€CÜ�s—~‘~ aÓ(¨Ñ+¨S¯^©^¸AÓ->¸qÑ-AÕBr;   c            	      óÈ  — t        d«      D ]Ô  } t        j                  ddddd| ¬«      \  }}t        ||d¬«      \  }}}}t	        d| z
  «      }t        j                  d|¬«      }|j                  ||«       |j                  |«      }	|j                  |«      }
|
j                  d	¬
«      }t        j                  |
j                  d	¬
«      dk(  ||«      }t        |	|«       ŒÖ y )Nr`   r�   r0   r   )r}   r<   Ún_informativerm  Ú	n_classesr(  r¦  r/   r_  r.   r1  )rz   r   rp  r   r7  r   rÙ   rx   r™   rD  ÚargmaxrF   Úwherer6  r   )r  r€   r›   ÚX_trÚX_teÚy_trÚy_terL  rW  rs  rr  Úproba_labels               r9   Ú#test_radius_neighbors_predict_probarŸ  y  sÛ   € Ü�a“ò .ˆÜ×+Ñ+ØØØØØØô
‰ˆˆ1ô "2°!°QÀQÔ!GÑˆˆd�D˜$Ü˜A ™H›ˆÜ×1Ñ1¸È-ÔXˆØ�‰��dÔØ�{‰{˜4Ó ˆØ×!Ñ! $Ó'ˆØ—l‘l¨�lÓ*ˆÜ—h‘h˜uŸy™y¨a˜yÓ0°AÑ5°}ÀkÓRˆÜ˜4 Õ-ñ#.r;   c                  óX  — t         j                  j                  d«      } d| j                  dd«      z  dz
  }d| j                  dd«      z  dz
  }| j                  dd«      }d}d}d}t	        j
                  |d¬	«      }t	        j
                  t        ||z  «      d¬	«      }t	        j                  |d¬
«      }	t	        j                  t        ||z  «      d¬
«      }
t	        j                  |¬«      }t	        j                  |¬«      }||f||f|	|f|
|fg}|D ]�  \  }}t        |«      }t        |«      }|j                  d¬«       t        t        |«      |«      }|j                  ||«      j                  |«      }|j                  ||«      j                  |«      }t        ||«       Œ’ y )Nr   r/   r¥  r`   r.   é   r?   r\   )rh   râ   r�  r¤   rê   rº   r¼   )rF   rG   rH   rL   r   ÚKNeighborsTransformerr7  ÚRadiusNeighborsTransformerr   rÚ   r	   rç  r   rx   r™   r   )rO   r€   râ  r›   rh   rš   ÚfactorÚk_transÚk_trans_factorÚr_transÚr_trans_factorÚk_regÚr_regÚ	test_listÚtransÚregÚreg_compactÚreg_precompÚ	reg_chainÚy_pred_chainÚy_pred_compacts                        r9   Ú0test_pipeline_with_nearest_neighbors_transformerr³  Ž  sž  € ä
�)‰)×
Ñ
 Ó
"€CØ	ˆC�H‰H�R˜‹OÑ˜aÑ€AØ	
ˆS�X‰X�b˜!‹_Ñ	˜qÑ	 €BØ�‰��Q‹€Aà€KØ€Fð €Fä×-Ñ-¸+ÈJÔW€GÜ×4Ñ4Ü˜ fÑ,Ó-°Jô€Nô ×2Ñ2¸&ÀzÔR€GÜ×9Ñ9Ü�6˜F‘?Ó#¨*ô€Nô ×)Ñ)°kÔB€EÜ×.Ñ.°fÔ=€Eð 
�%ÐØ	˜ÐØ	�%ÐØ	˜Ðð	€Ið  ò 
6‰
ˆˆsä˜C“jˆÜ˜C“jˆØ×Ñ mÐÔ4ä!¤%¨£,°Ó<ˆ	à —}‘} Q¨Ó*×2Ñ2°2Ó6ˆØ$Ÿ™¨¨AÓ.×6Ñ6°rÓ:ˆÜ˜ nÕ5ñ
6r;   z'X, metric, metric_params, expected_algor÷   r“   r\  rB   rC   Úcorrelationc                 óz   — t        j                  dd||¬«      }|j                  | «       |j                  |k(  sJ ‚y )Nr1   r-   rD  )r   rw   rx   r  )r€   r3   r   Úexpected_algor   s        r9   Útest_auto_algorithmr·  ¼  s>   € ô ×&Ñ&Ø °Àmô€Eð 
‡I�Iˆa„LØ×Ñ Ò-Ð-Ñ-r;   c           	      óþ  — t         j                  j                  |«      }|j                  ||«      j	                  |d¬«      }|j                  ||«      j	                  |d¬«      }	| dk(  rDt        d d«      }
t        j                  |d d …|
f   «      }t        j                  |	d d …|
f   «      }	t        | |«      }|D ]¦  }|j                  dd«      }t        j                  |d| ||¬«      }|j                  |«       t        d¬«      5  |j                  |	d	¬
«      \  }}d d d «       t        d	¬«      5  |j                  |	d	¬
«      \  }}d d d «       t        |d¬«       Œ¨ y # 1 sw Y   ŒHxY w# 1 sw Y   Œ)xY w)NFrc   r  r/   r@   r+   )rš   ri   r3   r@   r   r4  Trj   )rš   Úcheck_sorted)rF   rG   rH   rL   rq   r$  r%  rR   r#  r   rw   rx   r   r#  r   )r3   r&  r|   r}   r<   r~   rš   rO   rÖ   r×   r*  r(  r   r@   r„   r6  r7  r8  r9  s                      r9   Ú#test_radius_neighbors_brute_backendrº  Ò  s—  € ô �)‰)×
Ñ
Ð 2Ó
3€Cð �h‰h�y *Ó-×4Ñ4°\ÈÐ4ÓN€GØ�X‰X�k :Ó.×5Ñ5°lÈÐ5ÓO€Fð �ÒÜ˜4 “^ˆ
Ü×&Ñ& wªq°*¨}Ñ'=Ó>ˆÜ×%Ñ% fªQ°
¨]Ñ&;Ó<ˆä2°6¸:ÓFÐà+ò 
ˆØ×Ñ˜c 1Ó%ˆä×*Ñ*ØØØØØ'ô
ˆð 	�	‰	�'Ôä¸Ô>ñ 	à16×1GÑ1GØ¨ð 2Hó 2Ñ.ÐÐ.÷	ô
 ¸Ô=ñ 	à+0×+AÑ+AØ¨ð ,Bó ,Ñ(ˆM˜=÷	ô 	)ØØØØØØö	
ñ1
÷	ð 	ú÷
	ð 	ús   Ä	E'Ä4E3Å'E0	Å3E<	c                  óŽ   — t         j                  j                  «       D ]$  } t        | «      t        t	        | «      «      k(  rŒ$J ‚ y rÕ   )r   r"  Úvaluesr{   Úset)Úvals    r9   Ú#test_valid_metrics_has_no_duplicater¿  	  s:   € Ü×&Ñ&×-Ñ-Ó/ò )ˆÜ�3‹xœ3œs 3›x›=Ó(Ð(Ð(ñ)r;   c                  ó¬   — ddgddgddgddgg} g d¢}d„ }t        dd|¬	«      }|j                  | |«       t        |j                  dd
gg«      dg«       y)ztEnsures that `predict` works for array-likes when `weights` is a callable.

    Non-regression test for #22687.
    r`   r.   r0   r1   r   )r/   r0   r`   rZ  c                 ó,   — t        j                  | «      S rÕ   )rF   Ú	ones_like©rX   s    r9   Ú_weightsz6test_regressor_predict_on_arraylikes.<locals>._weights	  s   € Ü�|‰|˜DÓ!Ð!r;   r+   )rh   ri   r/  rz  rZ  N)r   rx   r   r™   )r€   r›   rÄ  rÏ   s       r9   Ú$test_regressor_predict_on_arraylikesrÅ  	  sd   € ð
 ˆQˆ�!�Q�˜!˜Q˜ ! Q Ð(€AÚ€Aò"ô ¨!°wÈÔ
Q€CØ‡G�GˆAˆq„MÜ�C—K‘K ! S  
Ó+¨a¨SÕ1r;   zEstimator, paramsrš   r?   c                 óÆ  — ddgdt         j                  gddgddgg}g d¢}|j                  ddi«         | «       j                  di |¤Žj	                  ||«      }d	D ]‚  }t        ||«      sŒ t        ||«      |«      }t        |d
«      r0t        j                  |j                  «      j                  «       sŒ\J ‚t        j                  |«      j                  «       sŒ‚J ‚ y)zyCheck that the different neighbor estimators are lenient towards `nan`
    values if using `metric="nan_euclidean"`.
    r   r.   r/   r0   r`   ©r   r   r.   r.   r3   Únan_euclidean)ry   r™   Ú	transformÚfit_predictrú   N© )
rF   ÚnanÚupdaterç  rx   Úhasattrr½   rÕ  r¬   Úany)r  Úparamsr€   r›   Ú	estimatorÚresponse_methodÚoutputs          r9   Útest_nan_euclidean_supportrÔ  $	  sÐ   € ð" ˆQˆ�!”R—V‘V�˜q !˜f q¨! fÐ-€AÚ€Aà
‡M�M�8˜_Ð-Ô.Ø&‘	“×&Ñ&Ñ0¨Ñ0×4Ñ4°Q¸Ó:€IàPò 2ˆÜ�9˜oÕ.Ø8”W˜Y¨Ó8¸Ó;ˆFÜ�v˜yÔ)ÜŸ8™8 F§K¡KÓ0×4Ñ4Õ6Ð6Ð6äŸ8™8 FÓ+×/Ñ/Õ1Ð1Ð1ñ2r;   c            	      ó2  — t        j                  d«      } | j                  t        j                  ddgddgddgdd	gg«      d
dg¬«      }t        j                  g d¢«      }t        j                  d¬«      j                  ||«      }|j                  |«       y)z[Check that KNN predict works with dataframes

    non-regression test for issue #26768
    Úpandasr.   r/   r0   r1   r`   rZ  r[  r\  re  Úb)Úcolumns)r.   r/   r0   r1   r¤   N)	ru   ÚimportorskipÚ	DataFramerF   r  r   rØ   rx   r™   )Úpdr€   r›   r;  s       r9   Útest_predict_dataframerÜ  D	  s‚   € ô
 
×	Ñ	˜XÓ	&€Bà
�‰”R—X‘X  1˜v¨¨1 v°°1¨v¸¸1°vÐ>Ó?È#ÈsÈˆÓT€AÜ
�‰’Ó€Aä
×
(Ñ
(°QÔ
7×
;Ñ
;¸A¸qÓ
A€CØ‡K�K�…Nr;   c                  ót  — t        j                  ddgddgddgg«      } t        j                  ddddi¬«      }|j	                  | «       |j                  | d   j                  d	d
«      dd¬«      }t        |d   g d¢«       |j                  | d   j                  d	d
«      d¬«      }t        |d   g d¢«       y)zµCheck that NearestNeighbors works with :math:`p \in (0,1)` when `algorithm`
    is `"auto"` or `"brute"` regardless of the dtype of X.

    Non-regression test for issue #26548
    rV   r  r0   r+   r@   r3  )rh   ri   r   r   r.   rM  r1   F)rš   rk   rï   rj   N)	rF   r  r   rw   rx   r#  rò   r   ry   )r€   r„   r›   s      r9   Ú0test_nearest_neighbours_works_with_p_less_than_1rÞ  R	  s³   € ô 	�‰�3˜�*˜s C˜j¨3°¨*Ð5Ó6€AÜ×&Ñ&Ø ¸¸c¸
ô€Eð 
‡I�Iˆa„Là×Ñ˜q ™tŸ|™|¨A¨rÓ2¸1ÈeÐÓT€AÜ�A�a‘Dš)Ô$à×Ñ˜˜1™Ÿ™ a¨Ó,¸eÐÓD€AÜ�A�a‘Dš)Õ$r;   c                  ó”  — ddgddgddgddgg} g d¢}d„ }t        j                  d|¬«      }|j                  | |«       d	}t        j                  t
        |¬
«      5  |j                  ddgg«       ddd«       t        j                  t
        |¬
«      5  |j                  ddgg«       ddd«       y# 1 sw Y   ŒBxY w# 1 sw Y   yxY w)zrCheck that `predict` and `predict_proba` raises on sample of all zeros weights.

    Related to Issue #25854.
    r   r.   r/   r0   r1   rÇ  c                 ó:   —  t        j                  d„ «      | «      S )Nc                 ó   — | dkD  rdS dS )Nr3  r   r.   rË  )rŠ  s    r9   ú<lambda>zWtest_KNeighborsClassifier_raise_on_all_zero_weights.<locals>._weights.<locals>.<lambda>n	  s   € ¨1¨sª7 a€ ¸€ r;   )rF   Ú	vectorizerÃ  s    r9   rÄ  zEtest_KNeighborsClassifier_raise_on_all_zero_weights.<locals>._weightsm	  s   € Ø:Œr�|‰|Ñ9Ó:¸4Ó@Ð@r;   )rh   r/  zŠAll neighbors of some sample is getting zero weights. Please modify 'weights' to avoid this case if you are using a user-defined function.rÿ   r|  N)r   rØ   rx   ru   r±   r¾   r™   rD  )r€   r›   rÄ  rÏ   r  s        r9   Ú3test_KNeighborsClassifier_raise_on_all_zero_weightsrä  e	  sÍ   € ð
 ˆQˆ�!�Q�˜!˜Q˜ ! Q Ð(€AÚ€AòAô ×
(Ñ
(°QÀÔ
I€CØ‡G�GˆAˆq„Mð	)ð ô 
�‰”z¨Ô	-ñ "Ø�‰�c˜3�Z�LÔ!÷"ô 
�‰”z¨Ô	-ñ (Ø×Ñ˜C ˜:˜,Ô'÷(ð (÷"ð "ú÷(ð (ús   ÁB2ÂB>Â2B;Â>CÚnn_modelr¤   c                 óz  — t        j                  dddd¬«      \  }}t        | «      j                  |¬«      } d| j	                  «       v rGt        |«      j                  «       }||dkD     }| j                  t        j                  |d«      ¬	«       t        | ||t        «       ¬
«      }| j                  ||«       t        || j                  d«      |k(  «       t        j                  |«      t        j                   | j#                  d|«      «      k(  sJ ‚| j#                  d|«      | j#                  ||«      k  sJ ‚y)a³  Check that `predict` and related functions work fine with X=None

    Calling predict with X=None computes a prediction for each training point
    from the labels of its neighbors (without the label of the data point being
    predicted upon). This is therefore mathematically equivalent to
    leave-one-out cross-validation without having do any retraining (rebuilding
    a KD-tree or Ball-tree index) or any data reshuffling.
    rh  r`   r/   r   )r}   Úcentersr<   r(  r•  rš   éP   rê   ©ÚcvN)r   Ú
make_blobsr	   rç  Ú
get_paramsr   ÚravelrF   Ú
percentiler   r   rx   r   r™   rÊ  ru   Úapproxrí  ©rå  ri   r€   r›   ÚdistsÚloocvs         r9   Útest_neighbor_classifiers_loocvró  €	  s  € ô" ×Ñ¨°QÀ1ÐSTÔU�D€A€qä�X‹×)Ñ)°IÐ)Ó>€Hð
 �8×&Ñ&Ó(Ñ(Ü" 1Ó%×+Ñ+Ó-ˆØ�e˜a‘iÑ ˆØ×Ñ¤2§=¡=°¸Ó#;ÐÔ<ä˜H a¨¬{«}Ô=€EØ‡L�L��AÔä�E˜8×+Ñ+¨DÓ1°QÑ6Ô7Ü�7‰7�5‹>œVŸ]™]¨8¯>©>¸$ÀÓ+BÓCÒCÐCÐCð
 �>‰>˜$ Ó" X§^¡^°A°qÓ%9Ò9Ð9Ñ9r;   c                 óª  — t        j                  ddd¬«      \  }}t        | «      j                  |¬«      } d| j	                  «       v rGt        |«      j                  «       }||dkD     }| j                  t        j                  |d«      ¬«       t        | ||t        «       ¬	«      }| j                  ||«       t        || j                  d
«      «       y
)z@Check that `predict` and related functions work fine with X=Nonerh  r/   r   )r}   r<   r(  r•  rš   rè  rê   ré  N)r   Úmake_regressionr	   rç  rì  r   rí  rF   rî  r   r   rx   r   r™   rð  s         r9   Útest_neighbor_regressors_loocvrö  ©	  sº   € ô ×#Ñ#¨b¸QÈQÔO�D€A€qô �X‹×)Ñ)°IÐ)Ó>€Hð
 �8×&Ñ&Ó(Ñ(Ü" 1Ó%×+Ñ+Ó-ˆØ�e˜a‘iÑ ˆØ×Ñ¤2§=¡=°¸Ó#;ÐÔ<ä˜h¨¨1´³Ô?€EØ‡L�L��AÔÜ�E˜8×+Ñ+¨DÓ1Õ2r;   rÕ   )r  r`   r/   r3  r   )r¥  r`   r^   r`   r   )r¥  r`   r^   r3  r   )r¥  r`   r^   r0   r   )r¥  r0   r^   r3  r   )r¥  r`   r^   r   )é$   )r  r0   r/   r`   )éÐ  rŠ  r`   r`   )r  r¡  )rø  rŠ  r`   rV   )¼rÓ  r  Ú	itertoolsr   r|  ÚnumpyrF   ru   Úscipy.sparser   Úsklearnr   r   r   r   Úsklearn.baser	   Úsklearn.exceptionsr
   r   Úsklearn.metrics._dist_metricsr   Úsklearn.metrics.pairwiser   r   Ú'sklearn.metrics.tests.test_dist_metricsr   Ú7sklearn.metrics.tests.test_pairwise_distances_reductionr   r   Úsklearn.model_selectionr   r   r   r   Úsklearn.neighborsr   r   Úsklearn.neighbors._baser   r   r   r   Úsklearn.pipeliner   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr    r!   r"   r#   r$   r%   r&   r'   r(   Úsklearn.utils.validationr)   rG   rH   rO   Ú	load_irisræ  ÚpermutationrÍ   r”   Úpermr¬   Úload_digitsrì  Útupler³  r´  rß  rr   Úsortedr½  ÚintersectionÚmapr"  r¼  ÚCOMMON_VALID_METRICSrJ   r"  r²   r³   ÚDISTANCE_METRIC_OBJSr8  r:   r7  rR   rZ   ÚWEIGHTSÚmarkÚparametrizerŒ   rØ   rÙ   rÚ   r    rw   r¯   rµ   ÚfilterwarningsrÒ   rÛ   rç   rë   rô   rý   r  r  r  r  r   r.  r>  rA  rH  rK  rX  rt  rx  r„  rˆ  r“  r›  r'  r£  r°  r¸  r¿  rÇ  rÎ  rÐ  rØ  rÚ  rÜ  rä  ré  rô  r  r  r	  r  r  r  r  r  r1  ÚDeprecationWarningr:  rB  rH  rK  rM  rU  r[  r^  ra  rf  rj  ru  rw  r~  r…  rŽ  r”  rŸ  r³  r—   rù   r·  rº  r¿  rÅ  r¢  r£  ÚLocalOutlierFactorrÔ  rÜ  rÞ  rä  ró  rö  rË  r;   r9   ú<module>r     sâ  ðÛ 	Û Ý ã Û Û Ý !÷ó õ ß @õ÷ TÝ @÷÷ó ÷÷ó õ +÷ñ ÷

÷ 
õ 
õ 8à‡i�i×Ñ˜AÓ€à€x×ÑÓ€Ø
‡��t—{‘{×'Ñ'Ó(€Ø�I‰I�d‰O€„	Ø�k‰k˜$Ñ€„ð 
ˆ×	Ñ	Ó	€Ø
‡��v—}‘}×)Ñ)Ó*€Ø�k‰k˜$Ñ€„Ø—‘˜dÑ#€„áØØñàñð ñð ñ	ð
 ñó€ð  "§*¡* Ñ.€à6€
ÙØ€C×Ñ‘c˜#˜y×6Ñ6×=Ñ=Ó?Ó@ÐAóÐ ð ˆˆ1ˆa�—‘Ð€ñ -¨Y×-GÑ-GÓH€	Ô Ù#2°9×3SÑ3SÓ#T€	Ô  ð 'Ð'Ð ñ˜#ó ð cð °só ò:	ð �j ,Ð
/€ð ‡�×ÑØ5àØðóð ‡�×ÑÐ)¨E°4¨=Ó9Ø‡�×Ñ˜Ð#7Ð:NÑ#NÓOñJ
ó Pó :óðJ
ðZ ‡�×ÑØ(àØðóð ‡�×Ñ˜Ð#7Ð:NÑ#NÓOØ‡�×ÑÐ.Ò0RÓSØ‡�×ÑØà×&Ñ&Ø×%Ñ%Ø×+Ñ+Ø×*Ñ*ð	óñ@
óó Tó Póð$@
ðF ‡�×ÑØà×&Ñ&Ø×%Ñ%Ø×"Ñ"ðóñ'óð'ò*-ð ‡�×ÑÐ6Ó7ñ4(ó 8ð4(òn3ð  ‡�×Ñ˜ ¨ Ó/ñ3ó 0ð3ð" ‡�×Ñ˜ ¨ Ó/ñ3ó 0ð3ð" ‡�×Ñ˜¨.Ó9ñ!ó :ð!ð0 ‡�×ÑÐ6Ó7Ø‡�×Ñ˜Ð&>Ð@RÐ%SÓTØ‡�×Ñ˜¨.Ó9ñ"ó :ó Uó 8ð"ð" ‡�×ÑÐ6Ó7Ø‡�×Ñ˜¨.Ó9ñ8ó :ó 8ð8ð6 ‡�×Ñ˜¨.Ó9ñKó :ðKð& ‡�×ÑØ˜¨Ñ7¸.ÑHóñóðð ‡�×ÑÐ6Ó7Ø‡�×Ñ˜¨.Ó9ñ2ó :ó 8ð2ò08ð$ WXó'ðT ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,ð
 ØØØØò3ó -ó 2ð3ð> ØØØØó/ò( 'ðF ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,ð
 ØØØØò3ó -ó 2ð3ð8 ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,Ø‡�×Ñ˜ª-Ó8ñó 9ó -ó 2ðð< ‡�×Ñ˜ jÓ1Ø‡�×Ñ˜ GÓ,ñzó -ó 2ðzòzEò09òB/ð$ ‡�×Ñ˜¨.Ó9ñ0ó :ð0ð, ‡�×Ñ˜Ò&GÓHñ-ó Ið-ð ‡�×ÑØ�(ÐÙÙØ-ØÐ0Ð/Ñ0ó	
óð 	Ø ðñ	óñ"%óð"%òJ#1ðN LMó7ò()3ðZ LMó8ò0,ð4 LMó7ð4 IJó$&òN,ð8 =>ó7ð. ‡�×ÑÐ6Ó7àKLòLó 8ðLò>Mò&&ò*Dð@ ‡�×Ñ˜ª	Ó2Ø‡�×Ñ˜ .°*Ð!=Ó>Ø‡�×Ñ˜¨.Ó9ò
ó :ó ?ó 3ð
ò
ð ‡�×Ñ˜ª	Ó2Ø‡�×Ñ˜ .°*Ð!=Ó>Ø‡�×Ñ˜¨.Ó9ò
ó :ó ?ó 3ð
ð ‡�×ÑØà×&Ñ&Ø×+Ñ+Ø×%Ñ%Ø×*Ñ*ð	óð ‡�×Ñ˜¨.Ó9ñ"ó :óð"ðJ ‡�×ÑØà×&Ñ&Ø×+Ñ+Ø×%Ñ%Ø×*Ñ*ð	óð ‡�×Ñ˜¨¨3 xÓ0Ø‡�×Ñ˜ v¨wÐ&7Ó8ñ(ó 9ó 1óð(ð( ‡�×ÑØà×&Ñ&Ø×+Ñ+Ø×%Ñ%Ø×*Ñ*ð	óð ‡�×Ñ˜¨¨3 xÓ0Ø‡�×Ñ˜ y°+Ð&>Ó?ñó @ó 1óðò 4ð ‡�×ÑØÙ
ÙˆI×#Ñ# KÑ0Ó1×>Ñ>Ø×#Ñ# GÑ,ó	
ñ ˆxÐ'˜,Ð'Ó
(ñ	)óð ñó	ð ØØØòK;ó	ðK;ñb Ð,Ô-Ø‡�×ÑØ‰f‘S˜×0Ñ0°Ñ9Ó:¹SÀ-ÀÓ=QÑQÓRóð ØØØò4
óó .ð4
òn"ð* ‡�×ÑØˆi×%Ñ% gÑ.Ð1EÑEóð ‡�×Ñ˜¨.Ó9àBDò)$ó :óð)$òXð ‡�×Ñ˜¨.Ó9ñ	,ó :ð	,ò!MòH1ò
<ð< ‡�×Ñ˜ jÓ1ñó 2ðð> ‡�×Ñ˜ jÓ1ñ.ó 2ð.òb?ð  ‡�×Ñ˜ jÓ1ñ+ó 2ð+ð0 ‡�×Ñ˜ jÓ1ñ+ó 2ð+ð2 ‡�×Ñ˜ [°&Ð$9Ó:Ø‡�×Ñ˜ jÓ1ñ6ó 2ó ;ð6ò$"ð ‡�×Ñ˜¨.Ó9ñ,ó :ð,ð. ‡�×ÑÐNÓOñ
Có Pð
Cò.ò*+6ð\ ‡�×ÑØ-à	�‰×	Ò	˜2 HÐ	Ó	-¨}¸dÀGÐLØ	�‰�Š˜˜RÓ	  +¨t°WÐ=Ø	�‰�Š˜˜AÓ	 ¨T°7Ð;Ø	�‰�Š˜˜QÓ	 ¨d°IÐ>Ø	�‰�Š˜˜QÓ	 °°a°S¸1±W¨~¸{ÐKØ	�‰�Š˜˜QÓ	 °°gÐ>ðó
ñ.ó
ð.ñ Ð,Ô-Ø‡�×ÑØ‰f‘S˜×0Ñ0°Ñ9Ó:¹SÀ-ÀÓ=QÑQÓRóð ØØØò6
óó .ð6
òr)ò
2ð  ‡�×ÑØà	×	'Ñ	'¨-¸Ð);Ð<Ø	×	&Ñ	&¨¸Ð(:Ð;Ø	×	+Ñ	+¨RÐ0Ø	×	,Ñ	,¨bÐ1Ø	×	(Ò	(¨=¸!Ð*<Ð=Ø	×	-Ò	-°¸#¨Ð?Ø	×	%Ò	%¨°qÐ'9Ð:ðóñ2óð2ò(ò%ò&(ð6 ‡�×ÑØà&ˆ	×&Ñ&°2Ô6Ø+ˆ	×+Ñ+Ó-ðóð ‡�×Ñ˜ jÓ1ñ:ó 2óð:ðB ‡�×ÑØà%ˆ	×%Ñ%°"Ô5Ø*ˆ	×*Ñ*Ó,ðóð ‡�×Ñ˜ jÓ1ñ3ó 2óñ3r;   