ó
    tñ:iÝ5  ã                   ó¦  • S r SSKrSSKJr  SSKJrJrJrJrJ	r	J
r
JrJrJrJr  SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SS	KJrJr  SS
KJ r J!r!  SSK"J#r#J$r$J%r%J&r&  SSK'J(r(  SSK)J*r*J+r+  SSK,J-r-  \R\                  " S5      r/\\\0\4      r1/ SQr2 " S S\$5      r3\S\Rh                  S\Rj                  S\
\Rh                  \04   4S j5       r6\S\Rh                  SSS\
\Rh                  S4   4S j5       r6S\Rh                  S\	\Rj                     S\
\Rh                  \	\0   4   4S jr6S\0S-  S\Rh                  S\Rj                  S\Rj                  S\	\Rj                     S\	\Rj                     S\
\Rh                  \Rj                  \Rj                  \	\Rj                     \	\Rj                     4   4S jr7S\\   S\\0\\   4   4S  jr8S!\1S\\0\\   4   4S" jr9S#\1S$\	\#   S%\	\   S&\	\   S\
\\0\\   4   \	\\\4      4   4
S' jr:S#\	\1   S\;4S( jr<S)\;S\Rz                  4S* jr>SAS+ jr?SS,.S-\	\   S%\	\   S.\	\   S/\@S0\AS#\	\1   S1\AS2\;S3\	\A   S4\	\%   S$\	\#   S5\	\   S\&4S6 jjrBS-\	\   S%\	\   S.\	\   S/\@S0\AS2\;S#\	\1   S$\	\#   S5\	\   S\%4S7 jrCS8\;S\S\%4S9 jrDS:\ES;\AS<\ES=\\A   S>\\0   S?\AS$\	\#   S\
\%\\
\%\04      4   4S@ jrFg)Bz)Copyright 2019-2025, XGBoost contributorsé    N)ÚSequence)
ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚTypeVarÚUnionÚcastÚoverload)Ú	dataframeé   )Ú
collective)Ú
Categories)ÚFeatureNamesÚFeatureTypes)ÚconcatÚimport_cupy)ÚBoosterÚDataIterÚDMatrixÚQuantileDMatrix)Ú
is_on_cuda)Úget_model_categoriesÚpick_ref_categories)Ú	_RefErrorz[xgboost.dask])ÚlabelÚweightÚbase_marginÚqidÚlabel_lower_boundÚlabel_upper_boundc                   óÂ   ^ • \ rS rSrSr   SS\\   S\\   S\\	\
\4      S\\   S\\\      S	S4U 4S
 jjjrS\S	\\   4S jrS	\4S jrSS jrS\S	\4S jrSrU =r$ )ÚDaskPartitionIteré1   z.A data iterator for the `DaskQuantileDMatrix`.NÚdataÚfeature_namesÚfeature_typesÚfeature_weightsÚkwargsÚreturnc           	      óL  >• [         [        S 5      4nXl        [         H;  n[	        XUR                  US 5      5        [        [        X5      U5      (       a  M;   e   X l        X0l	        X@l
        [        U R                  [         5      (       d   eSU l        [        TU ]5  SS9  g )Nr   T)Úrelease_data)r   ÚtypeÚ_dataÚmetaÚsetattrÚgetÚ
isinstanceÚgetattrÚ_feature_namesÚ_feature_typesÚ_feature_weightsÚ_iterÚsuperÚ__init__)	Úselfr'   r(   r)   r*   r+   ÚtypesÚkÚ	__class__s	           €ÚT/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/xgboost/dask/data.pyr;   ÚDaskPartitionIter.__init__4   s‘   ø€ ô œ4 ›:Ð&ˆàŒ
ßˆAÜ�D˜VŸZ™Z¨¨4Ó0Ô1Üœg dÓ.°×6Ó6Ð6Ð6ñ ð
 ,ÔØ+ÔØ /Ôä˜$Ÿ*™*¤h×/Ñ/Ð/Ð/àˆŒ
Ü‰Ñ dÐÒ+ó    Úattrc                 óL   • [        X5      b  [        X5      U R                     $ g ©N)r5   r9   )r<   rC   s     r@   Ú_getÚDaskPartitionIter._getM   s$   € Ü�4ÓÑ*Ü˜4Ó& t§z¡zÑ2Ð2ØrB   c                 ó4   • U R                   U R                     $ )z5Utility function for obtaining current batch of data.)r0   r9   ©r<   s    r@   r'   ÚDaskPartitionIter.dataR   s   € à�z‰z˜$Ÿ*™*Ñ%Ð%rB   c                 ó   • SU l         g)zReset the iteratorr   N)r9   rI   s    r@   ÚresetÚDaskPartitionIter.resetV   s	   € àˆ�
rB   Ú
input_datac           	      ó>  • U R                   [        U R                  5      :X  a  g[         Vs0 s H  o"U R	                  U5      _M     nnU" SU R                  5       SU R                  U R                  U R                  S.UD6  U =R                   S-  sl         gs  snf )zYield next batch of dataFN)r'   Úgroupr(   r)   r*   é   T© )	r9   Úlenr0   r1   rF   r'   r6   r7   r8   )r<   rN   r>   r+   s       r@   ÚnextÚDaskPartitionIter.nextZ   sŒ   € à�:‰:œ˜TŸZ™Z›Ó(àå+/Ó0ª4 a�T—Y‘Y˜q“\’/©4ˆÐ0Ùð 	
Ø—‘“ØØ×-Ñ-Ø×-Ñ-Ø ×1Ñ1ñ	
ð ò	
ð 	�
Š
�a‰�
Øùò 1s   ­B)r0   r6   r7   r8   r9   )NNN©r,   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r   r   r   r;   ÚstrrF   r'   rL   r   ÚboolrT   Ú__static_attributes__Ú__classcell__)r?   s   @r@   r%   r%   1   sº   ø† Ù8ð
 15ØCGØ)-ñ,à�3‰ið,ð   Ñ-ð,ð    l°JÐ&>Ñ ?Ñ@ð	,ð
 " #™ð,ð ˜4 ™9Ñ%ð,ð 
÷,ð ,ð2˜ð  ¨#¡ô ð
&�cô &ôð˜xð ¨D÷ ò rB   r%   ÚdfÚcolr,   c                 ó   • g rE   rR   ©r`   ra   s     r@   Ú_add_columnrd   m   s   € ØORrB   c                 ó   • g rE   rR   rc   s     r@   rd   rd   q   s   € ØKNrB   c                 óÌ   • Uc  X4$ SnUR                    SU 3nX0R                  ;   a'  US-  nUR                    SU 3nX0R                  ;   a  M'  U R                  " S0 X10D6n X4$ )Nr   Ú_rQ   rR   )ÚnameÚcolumnsÚassign)r`   ra   ÚtrailsÚuids       r@   rd   rd   u   sx   € ð �{Øˆwˆà€FØ�X‰XˆJ�a˜�xÐ
 €CØ
—‘Ó
Ø�!‰ˆØ—‘�
˜!˜F˜8Ð$ˆð —‘Õ
ð 
�ŠÑ	 �c�ZÑ	 €BØˆ7€NrB   Údevicer!   ÚyÚsample_weightr    c                 ó¦  ^• [        TU5      u  mn[        TU5      u  mn[        TU5      u  mn[        TU5      u  mn	U b  U S:X  a  SOSn
[        R                  R                  SU
05         TR	                  5       mTU   R                  S5      R                  R                  5       R                  R                  TU'   TR                  US9mTR                  U5      U   R                  5       nUR                  R                  5       R                  R                  5       n[!        U5      n[#        XÌS   S	-   /-   5      nTR%                  US
US9R	                  5       mSSS5        TU   nTU   nU4S jX‰4 5       u  pEXgX‰4 Vs/ s H	  oÝc  M  UPM     nnTR'                  US	S9R	                  5       mTX#XE4$ ! , (       d  f       Nb= fs  snf )zÃA function to prevent query group from being scattered to different
workers. Please see the tutorial in the document for the implication for not having
partition boundary based on query groups.

NÚcpuÚp2pÚtaskszdataframe.shuffle.methodÚcategory)ÚbyéÿÿÿÿrQ   F)ÚdropÚ	divisionsc              3   óf   >#   • U  H&  ob  [        [        R                  TU   5      OS v •  M(     g 7frE   )r   ÚddÚSeries)Ú.0rl   r`   s     €r@   Ú	<genexpr>Ú!no_group_split.<locals>.<genexpr>¯   s*   øé € ð "ÚIXÀ#¡OŒŒR�Y‰Y˜˜3™Ô ¸Ô=Êùs   ƒ.1)Úaxis)rd   ÚdaskÚconfigÚsetÚpersistÚastypeÚcatÚas_knownÚcodesÚsort_valuesÚgroupbyÚcountÚindexÚcomputeÚvaluesÚtolistÚsortedÚtupleÚ	set_indexrw   )rm   r`   r!   rn   ro   r    Úqid_uidÚy_uidÚw_uidÚbm_uidÚshuffleÚcntÚdivrl   Úuidss    `             r@   Úno_group_splitrš   …   sÃ  ø€ ô  ˜b #Ó&�K€BˆÜ˜B Ó"�I€BˆÜ˜B Ó.�I€BˆÜ˜R Ó-�J€Bˆð ‘~¨°5«‰e¸g€GÜ	�‰�‰Ð4°gÐ>Õ	?Ø�Z‰Z‹\ˆà˜‘k×(Ñ(¨Ó4×8Ñ8×AÑAÓC×GÑG×MÑMˆˆ7‰à�^‰^˜wˆ^Ð'ˆØ�j‰j˜Ó! 'Ñ*×0Ñ0Ó2ˆØ�i‰i×ÑÓ!×(Ñ(×/Ñ/Ó1ˆÜ�S‹kˆÜ�C˜r™7 Q™;˜-Ñ'Ó(ˆà�\‰\ØØØð ð 
÷ ‰'‹)ð	 	÷ 
@ð" ˆW‰+€CØ
ˆ5‰	€Aô"ØJOÉó"Ñ€Mð $¨EÑ:ÓNÒ:�C�CÑ:€DÐNØ	�‰�˜AˆÐ	×	&Ñ	&Ó	(€BØˆs�}Ð1Ð1÷3 
@Õ	?üò. Os   Á,C5F=ÆGÆGÆ=
Gr+   c                  óÞ  ^ ^^• T R                  S5      nUc   e[        U5      n[        US   5      (       a  SSKJm  OSSKJm  S[        S[        [        [        4   4U 4S jjmS[        S[        R                  4UU4S jjn[        U5       Vs/ s H
  oC" U5      PM     nn[        U5      nUR                  R                  (       a  T $ [        R!                  S	["        R$                  " 5       U5        [        U5      n[        U5      (       a&  ['        5       nUR)                  UR                  5      n	O [*        R(                  " UR                  5      n	UR,                  U	SS24   n[/        US
5      (       a  UR,                  U	SS24   nOXySS24   nT R1                  SU/05        [3        UR4                  5       H#  u  pJU
T ;   d   eT R1                  X¦U
   /05        M%     T $ s  snf )z>Sort worker-local data by query ID for learning to rank tasks.r'   Nr   )Ú	DataFrameÚir,   c           
      ó  >^ • S[         [        [              S[         [           4U 4S jjn[         Vs0 s H  o"U" TR                  US5      5      _M     nnUR                  5        VVs0 s H  u  pEUc  M
  XE_M     nnnU$ s  snf s  snnf )zDReturn a dictionary containing all the meta info and all partitions.rC   r,   c                 ó   >• U b  U T   $ g rE   rR   )rC   r�   s    €r@   rF   Ú0sort_data_by_qid.<locals>.get_dict.<locals>._getÆ   s   ø€ ØÑØ˜A‘w�ØrB   N)r   r   r   Úlistr1   r3   Úitems)r�   rF   rh   Údata_optr>   Úvr'   r+   s   `      €r@   Úget_dictÚ"sort_data_by_qid.<locals>.get_dictÃ   s�   ù€ ð	”x¤¤S¡	Ñ*ð 	¬x¼©~÷ 	õ
 DHÓHÂ4¸4™$˜vŸz™z¨$°Ó5Ó6Ò6Á4ˆÐHà!)§¡Ô!1ÔCÒ!1™˜°Q“�’Ñ!1ˆÑCØˆùò IùãCs   ´"BÁ+	BÁ8Bc                 ó$   >• T" U 5      nT" U5      $ rE   rR   )r�   r'   rœ   r¥   s     €€r@   Úmap_fnÚ sort_data_by_qid.<locals>.map_fnÐ   s   ø€ Ù˜‹{ˆÙ˜‹ÐrB   a  [r%d]: Sorting data with %d partitions for ranking. This is a costly operation and will increase the memory usage significantly. To avoid this warning, sort the data based on qid before passing it into XGBoost. Alternatively, you can use set the `allow_group_split` to False.Úiloc)r3   rS   r   Úcudfrœ   ÚpandasÚintr   r\   r¡   ÚpdÚranger   r!   Úis_monotonic_increasingÚLOGGERÚwarningÚcollÚget_rankr   ÚargsortÚnprª   ÚhasattrÚupdateÚ	enumerateri   )r+   Ú
data_partsÚn_partsr¨   r�   Ú
meta_partsÚdfqÚdfxÚcpÚ
sorted_idxÚcrœ   r¥   s   `          @@r@   Úsort_data_by_qidrÂ   ¸   s�  ú€ à—‘˜FÓ#€JØÑ!Ð!Ð!Ü�*‹o€Gä�*˜Q‘-× Ñ Þ"å$ð”Cð œD¤¤d ™O÷ ð”#ð œ"Ÿ,™,÷ ð ô &+¨7¤^Ó4¢^ �&˜–)¡^€JÐ4Ü
�Ó
€CØ
‡w�w×&×&Øˆä
‡N�Nð	Tô 	�Š‹Øôô" �Ó
€Cä�#‡�Ü‹]ˆØ—Z‘Z §¡Ó(‰
ä—Z’Z §¡Ó(ˆ
Ø
�(‰(�:šq�=Ñ
!€Cäˆs�F×ÑØ�h‰h�z¢1�}Ñ%‰àša�-Ñ ˆà
‡M�M�6˜C˜5�/Ô"Ü˜#Ÿ+™+Ö&‰ˆØ�F‹{Ðˆ{Ø�‰�q˜q™6˜(�mÖ$ñ 'ð €MùòS 5s   ÂG*Úlist_of_partsc                 ó  ^ ^• [        T [        5      (       d   e0 mS[        S[        SS4U U4S jjn[	        T 5       H#  u  p#U" US5        [
         H  nU" X$5        M     M%     TR                  SS5      nUb  [        S0 TD6mT$ )	z8Convert list of dictionaries into a dictionary of lists.r�   rh   r,   Nc                 ót   >• UTU    ;   a	  TU    U   nOS nUb   UT;  a  / TU'   TU   R                  U5        g g rE   )Úappend)r�   rh   ÚpartrÃ   Úresults      €€r@   rÆ   Ú!_get_worker_parts.<locals>.append  sR   ø€ Ø�= Ñ#Ó#Ø  Ñ# DÑ)‰DàˆDØÑØ˜6Ó!Ø!��t‘Ø�4‰L×Ñ Õ%ð rB   r'   r!   rR   )r4   r¡   r­   r\   r¹   r1   r3   rÂ   )rÃ   rÆ   r�   rg   r>   r!   rÈ   s   `     @r@   Ú_get_worker_partsrÊ      s‘   ù€ ä�m¤T×*Ñ*Ð*Ð*Ø#%€Fð&”#ð &œSð & T÷ &ð &ô ˜-Ö(‰ˆÙˆq�&ÔßˆAÙ�1ŽLó ñ )ð
 �*‰*�U˜DÓ
!€CØ
�Ü!Ñ+ FÑ+ˆØ€MrB   ÚpartsÚmodelr)   Úxy_catsc                 ób   • [        U 5      nUS   S   n[        XQU5      u  pg[        XWU5      nXG4$ )Nr'   r   )rÊ   r   r   )rË   rÌ   r)   rÍ   Úunzipped_dictÚXrg   Ú
model_catss           r@   Ú_extract_datarÒ     s@   € ô & eÓ,€MØ�fÑ˜aÑ €AÜ(¨°=ÓA�M€AÜ$ Q°GÓ<€JØÐ$Ð$rB   c           	      ó  • U b  [        U S   R                  S5      5      nOSn[        [        R                  " [
        R                  " U/[
        R                  S9[        R                  R                  5      S   5      nU$ )Nr   r'   F)Údtype)
r   r3   r]   r³   Ú	allreducer¶   ÚarrayÚint32ÚOpÚMAX)rË   Úis_cudas     r@   Ú_get_is_cudarÛ   '  s]   € ØÑÜ˜U 1™XŸ\™\¨&Ó1Ó2‰àˆä”4—>’>¤"§(¢(¨G¨9¼B¿H¹HÑ"EÄtÇwÁwÇ{Á{ÓSÐTUÑVÓW€GØ€NrB   rÚ   c                 óz   • U (       a  [        5       nUR                  S5      nU$ [        R                  " S5      nU$ )N)r   r   )r   Úemptyr¶   )rÚ   r¿   rÝ   s      r@   Ú_make_emptyrÞ   1  s6   € ÞÜ‹]ˆØ—‘˜Ó ˆð €Lô —’˜Ó ˆØ€LrB   c                  ón   • [         R                  " 5       n [        R                  SU R                  5        g )NzWorker %s has an empty DMatrix.)ÚdistributedÚ
get_workerr±   r²   Úaddress)Úworkers    r@   Ú_warn_emptyrä   :  s#   € Ü×#Ò#Ó%€FÜ
‡N�NÐ4°f·n±nÕErB   )Úrefr(   r*   ÚmissingÚnthreadÚmax_binÚenable_categoricalÚmax_quantile_batchesrå   ÚXy_catsc           
      óº   • [        U5      nUc"  [        5         [        [        U5      U UUU	UUS9$ [	        XZX5      u  pÞ[        [        S0 UDUU US.D6UUUU	UUS9$ )N)r(   r)   rè   rå   ré   rê   )r)   r(   r*   )ræ   rç   rè   rå   ré   rê   rR   )rÛ   rä   r   rÞ   rÒ   r%   )r(   r)   r*   ræ   rç   rË   rè   ré   rê   rå   rÌ   rë   rÚ   rÏ   rÑ   s                  r@   Ú_create_quantile_dmatrixrí   ?  s�   € ô ˜5Ó!€GØ�}ÜŒÜÜ˜Ó Ø'Ø'ØØØ1Ø!5ñ
ð 	
ô !.¨e¸MÓ SÑ€MäÜñ 	
Øð	
à$Ø'Ø+ó		
ð ØØØØ-Ø1ñð rB   c        	         óB  • [        U5      n	Uc  [        5         [        [        U	5      U UUS9$ [	        S5      n
S[
        [        U
      S[        U
   4S jn[        XgX5      u  pÍ0 nUR                  5        H  u  nnU" U5      nUXï'   M     [        S0 UDUU UUUUS.D6$ )zTGet data that local to worker from DaskDMatrix.

Returns
-------
A DMatrix object.

)r(   r)   ré   ÚTr'   r,   c                 óH   • [        S U  5       5      (       a  g [        U 5      $ )Nc              3   ó(   #   • U  H  oS L v •  M
     g 7frE   rR   )r|   rÇ   s     r@   r}   Ú:_create_dmatrix.<locals>.concat_or_none.<locals>.<genexpr>�  s   é € Ð-ª �t�|ªùs   ‚)Úanyr   )r'   s    r@   Úconcat_or_noneÚ'_create_dmatrix.<locals>.concat_or_noneŒ  s    € ÜÑ-©Ó-×-Ñ-ØÜ�d‹|ÐrB   )ræ   r(   r)   rç   ré   r*   rR   )	rÛ   rä   r   rÞ   r
   r   r   rÒ   r¢   )r(   r)   r*   ræ   rç   ré   rË   rÌ   rë   rÚ   rï   rô   rÏ   rÑ   Úconcated_dictÚkeyÚvaluer¤   s                     r@   Ú_create_dmatrixrù   m  sÎ   € ô& ˜5Ó!€GØ�}ÜŒÜÜ˜Ó Ø'Ø'Ø1ñ	
ð 	
ô 	�‹€AðœX¤h¨q¡kÑ2ð ´xÀ±{ô ô
 !.¨e¸MÓ SÑ€Mà$&€MØ#×)Ñ)Ö+‰
ˆˆUÙ˜5Ó!ˆØˆÓñ ,ô ñ Ø
ðàØ#Ø ØØ-Ø'óð rB   Úis_quantilec                 ó<   • U (       a  [        S0 UD6$ [        S0 UD6$ )NrR   )rí   rù   )rú   r+   s     r@   Ú_dmatrix_from_list_of_partsrü   £  s!   € ÞÜ'Ñ1¨&Ñ1Ð1ÜÑ$˜VÑ$Ð$rB   Ú	train_refÚtrain_idÚrefsÚevals_idÚ
evals_nameÚ	n_threadsc          
      óz  • [        S0 U DXES S.D6n/ nUR                  5       n	[        U5       Hˆ  u  p«X*   U:X  a  UR                  XsU
   45        M$  UR	                  SS 5      b,  US   U:w  a  [        [        5      eUS	 [        S0 UDXGX•S.D6nO[        S0 UDXIUS.D6nUR                  XÃU
   45        MŠ     Xx4$ )N)rç   rÌ   rë   rå   )rç   rå   rë   rÌ   )rç   rë   rÌ   rR   )rü   Úget_categoriesr¹   rÆ   r3   Ú
ValueErrorr   )rý   rþ   r   r  r  rÌ   rÿ   ÚXyÚevalsrë   r�   rå   Úeval_xys                r@   Ú_get_dmatricesr	  ©  sí   € ô 
%ñ 
Ø
ð
Ø&¸Tó
€Bð
 (*€EØ×ÑÓ!€Gä˜D–/‰ˆà‰;˜(Ó"Ø�L‰L˜"¨™mÐ,Ô-Ùà�7‰7�5˜$ÓÑ+Ø�5‰z˜XÓ%Ü ¤Ó+Ð+Ø�E�
Ü1ñ ØðØ(¸'ó‰Gô 2ñ ØðØ(ÀóˆGð 	�‰�g¨!™}Ð-Ö.ñ# "ð$ ˆ9ÐrB   rV   )Gr[   ÚloggingÚcollections.abcr   Útypingr   r   r   r   r   r	   r
   r   r   r   r€   rà   Únumpyr¶   r¬   r®   r   rz   Ú r   r³   Ú_data_utilsr   Ú_typingr   r   Úcompatr   r   Úcorer   r   r   r   r'   r   Úsklearnr   r   Útrainingr   Ú	getLoggerr±   r\   Ú
_DataPartsr1   r%   rœ   r{   rd   rš   rÂ   rÊ   rÒ   r]   rÛ   ÚndarrayrÞ   rä   Úfloatr­   rí   rù   rü   Údictr	  rR   rB   r@   Ú<module>r     sh  ðá /ã Ý $÷÷ ÷ ó Û Û Û Ý  å !Ý $ß 0ß (ß >Ó >Ý ß ?Ý  à	×	Ò	Ð+Ó	,€à�$�s˜C�x‘.Ñ!€
ò€ô9˜ô 9ðx 
Ø R�B—L‘LÐ R r§y¡yÐ R°U¸2¿<¹<ÈÐ;LÑ5MÓ Ró 
Ø Rð 
Ø N�B—L‘LÐ N tÐ N°°b·l±lÀDÐ6HÑ0IÓ Nó 
Ø NðØ
�‰ðØ# B§I¡IÑ.ðà
ˆ2�<‰<˜ #™Ð&Ñ'ôð 02Ø�$‰Jð02à
�‰ð02ð 
�‰ð02ð 
‡y�yð	02ð
 ˜BŸI™IÑ&ð02ð ˜"Ÿ)™)Ñ$ð02ð Ø‡L�L�"—)‘)˜RŸY™Y¨°·±Ñ(;¸XÀbÇiÁiÑ=PÐPñô02ðfE˜t C™yð E¨T°#°t¸C±y°.Ñ-Aô EðP Zð °D¸¸dÀ3¹i¸Ñ4Hô ð4
%Øð
%à�GÑð
%ð ˜LÑ)ð
%ð �jÑ!ð	
%ð
 ˆ4��T˜#‘Y�Ñ ¨%°¸jÐ0HÑ*IÑ!JÐJÑKô
%ð˜ Ñ,ð °ô ð˜ð  "§*¡*ô ôFð  "ò+à˜LÑ)ð+ð ˜LÑ)ð+ð ˜c‘]ð	+ð
 ð+ð ð+ð �JÑð+ð ð+ð ð+ð # 3™-ð+ð 
�'Ñ	ð+ð �GÑð+ð �jÑ!ð+ð õ+ð\3à˜LÑ)ð3ð ˜LÑ)ð3ð ˜c‘]ð	3ð
 ð3ð ð3ð ð3ð �JÑð3ð �GÑð3ð �jÑ!ð3ð ô3ðl%¨Tð %¸Sð %ÀWô %ð$Øð$àð$ð ð$ð �s‰mð	$ð
 ˜‘ð$ð ð$ð �GÑð$ð ˆ7�D˜˜w¨˜|Ñ,Ñ-Ð-Ñ.õ$rB   