§
    µ³Ùg…2  ã                   ó²   — d Z ddlZddlZddlmZmZmZ ddlm	Z	m
Z
mZmZmZ ddlmZmZmZ d„ Z G d„ d¦  «        Z G d	„ d
¦  «        Z G d„ d¦  «        ZdS )z4
Unit tests for trust-region iterative subproblem.

é    N)Ú estimate_smallest_singular_valueÚsingular_leading_submatrixÚIterativeSubproblem)ÚsvdÚget_lapack_funcsÚdetÚqrÚnorm)Úassert_array_equalÚassert_equalÚassert_array_almost_equalc                 ó~  — t           j                             dd| | f¦  «        }t          |d¬¦  «        \  }}}t           j                             ||| ¦  «        }t          j        |¦  «        d d d…         }t          j        ||¦  «        }t          j        ||j        ¦  «        }	|dk    rSt          j        | ¦  «        }
t           j                             dd| dz
  ¦  «        |
d d…<   t          j        ||
¦  «        }
n<|dk    rt          j        | ¦  «        }
n!t           j                             dd| ¦  «        }
|	|
fS )Néÿÿÿÿé   ÚTrue)ÚpivotingÚhardÚjac_equal_zero)	ÚnpÚrandomÚuniformr	   ÚsortÚmultiplyÚdotÚTÚzeros)ÚnÚmin_eigÚmax_eigÚcaseÚrandÚQÚ_Ú	eigvaluesÚQauxÚAÚgs              úa/granary/edev/quantum/lib/python3.11/site-packages/scipy/optimize/tests/test_trustregion_exact.pyÚrandom_entryr)      s!  € õ Œ9×Ò˜R  Q¨ FÑ+Ô+€Dõ � Ð'Ñ'Ô'�G€A€qˆ!õ ”	×!Ò! '¨7°AÑ6Ô6€IÝ”˜	Ñ"Ô" 4 4 R 4Ô(€Iõ Œ;�y !Ñ$Ô$€DÝ
Œˆt�Q”SÑÔ€Að ˆv‚~€~ÝŒH�Q‰KŒKˆÝ”×"Ò" 2 q¨!¨A©#Ñ.Ô.ˆˆ#ˆ2ˆ#‰ÝŒF�1�a‰LŒLˆˆØ	Ð!Ò	!Ð	!ÝŒH�Q‰KŒKˆˆåŒI×Ò˜b ! QÑ'Ô'ˆàˆaˆ4€Kó    c                   ó   — e Zd Zd„ ZdS )Ú!TestEstimateSmallestSingularValuec                 ó4  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          |¦  «        \  }}}|d         }|dd d …f         }t          |¦  «        \  }}t	          ||d¬¦  «         t	          t          |¦  «        t          |¦  «        d¬¦  «         d S )N)r   é   é   é   )r   gš™™™™™©?é<   é   )r   r   çš™™™™™é?é	   )r   r   r   é
   r   é   )Údecimal)r   Úarrayr   r   r   Úabs)	ÚselfÚCÚUÚsÚVtÚsmin_svdÚzmin_svdÚsminÚzmins	            r(   Ú test_for_ill_condiotioned_matrixzBTestEstimateSmallestSingularValue.test_for_ill_condiotioned_matrix0   s·   € õ ŒH�l�l�lØ&Ð&Ð&Ø$�n�nØ#�m�mð%ñ &ô &ˆõ �q‘6”6‰ˆˆ1ˆbð �R”5ˆØ�b˜!˜!˜!�e”9ˆõ 6°aÑ8Ô8‰
ˆˆdõ 	" $¨¸!Ð<Ñ<Ô<Ð<Ý!¥# d¡)¤)­S°©]¬]ÀAÐFÑFÔFÐFÐFÐFr*   N)Ú__name__Ú
__module__Ú__qualname__rC   © r*   r(   r,   r,   .   s(   € € € € € ðGð Gð Gð Gð Gr*   r,   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestSingularLeadingSubmatrixc                 ó¤  — t          j        g d¢g d¢g d¢g¦  «        }t          d|f¦  «        \  } ||ddd¬¦  «        \  }}t          |||¦  «        \  }}||dz
  |dz
  fxx         |z  cc<   t	          t          |d |…d |…f         ¦  «        d	¦  «         t          j        |t          j        ||¦  «        ¦  «        }t	          |d	¦  «         d S )
N)r   r.   r/   )r.   r0   é   )r/   rK   é   ©ÚpotrfFT©ÚlowerÚoverwrite_aÚcleanr   r   ©r   r8   r   r   r   r   r   ©r:   r&   ÚcholeskyÚcÚkÚdeltaÚvÚquadratic_terms           r(   Ú+test_for_already_singular_leading_submatrixzHTestSingularLeadingSubmatrix.test_for_already_singular_leading_submatrixI   só   € õ ŒH�i�i�iØ�i�iØ�i�ið!ñ "ô "ˆõ
 % Z°!°Ñ6Ô6‰	ˆð ˆx˜ °EÀÐFÑFÔF‰ˆˆ1å-¨a°°AÑ6Ô6‰ˆˆqà	ˆ!ˆA‰#ˆq�‰sˆ(ˆˆŒ�uÑˆˆ‰õ 	"¥# a¨¨¨¨B¨Q¨B¨¤i¡.¤.°!Ñ4Ô4Ð4õ œ ¥2¤6¨!¨Q¡<¤<Ñ0Ô0ˆÝ! .°!Ñ4Ô4Ð4Ð4Ð4r*   c                 ó°  — t          j        g d¢g d¢g d¢g d¢g d¢g¦  «        }t          d|f¦  «        \  } ||ddd¬	¦  «        \  }}t          |||¦  «        \  }}||d
z
  |d
z
  fxx         |z  cc<   t	          t          |d |…d |…f         ¦  «        d¦  «         t          j        |t          j        ||¦  «        ¦  «        }t	          |d¦  «         d S )N)r   r.   r/   r2   r6   )r.   rK   rK   r4   r   )r/   rK   é   r   r.   )r2   r4   r   r2   rK   )r6   r   r.   rK   r6   rM   FTrO   r   r   )r   Úasarrayr   r   r   r   r   rT   s           r(   Ú#test_for_simetric_indefinite_matrixz@TestSingularLeadingSubmatrix.test_for_simetric_indefinite_matrixb   s  € õ ŒJ˜˜˜Ø'˜˜Ø(Ð(Ð(Ø'˜˜Ø'˜˜ð	)ñ *ô *ˆõ % Z°!°Ñ6Ô6‰	ˆð ˆx˜ °EÀÐFÑFÔF‰ˆˆ1å-¨a°°AÑ6Ô6‰ˆˆqà	ˆ!ˆA‰#ˆq�‰sˆ(ˆˆŒ�uÑˆˆ‰õ 	"¥# a¨¨¨¨B¨Q¨B¨¤i¡.¤.°!Ñ4Ô4Ð4õ œ ¥2¤6¨!¨Q¡<¤<Ñ0Ô0ˆÝ! .°!Ñ4Ô4Ð4Ð4Ð4r*   c                 ó¤  — t          j        g d¢g d¢g d¢g¦  «        }t          d|f¦  «        \  } ||ddd¬¦  «        \  }}t          |||¦  «        \  }}||dz
  |dz
  fxx         |z  cc<   t	          t          |d |…d |…f         ¦  «        d	¦  «         t          j        |t          j        ||¦  «        ¦  «        }t	          |d	¦  «         d S )
N)r   r/   r]   )r/   é   rK   )r]   rK   rL   rM   FTrO   r   r   rS   rT   s           r(   Ú$test_for_first_element_equal_to_zerozATestSingularLeadingSubmatrix.test_for_first_element_equal_to_zero}   só   € õ ŒH�j�j�jØ �j�jØ �j�jð"ñ #ô #ˆõ
 % Z°!°Ñ6Ô6‰	ˆð ˆx˜ °EÀÐFÑFÔF‰ˆˆ1å-¨a°°AÑ6Ô6‰ˆˆqà	ˆ!ˆA‰#ˆq�‰sˆ(ˆˆŒ�uÑˆˆ‰õ 	"¥# a¨¨¨¨B¨Q¨B¨¤i¡.¤.°!Ñ4Ô4Ð4õ œ ¥2¤6¨!¨Q¡<¤<Ñ0Ô0ˆÝ! .°!Ñ4Ô4Ð4Ð4Ð4r*   N)rD   rE   rF   r[   r_   rb   rG   r*   r(   rI   rI   G   sA   € € € € € ð5ð 5ð 5ð25ð 5ð 5ð65ð 5ð 5ð 5ð 5r*   rI   c                   ór   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zej	         
                    d¦  «        d„ ¦   «         ZdS )	ÚTestIterativeSubproblemc                 óÞ   ‡‡— g d¢g d¢g d¢g d¢gŠg d¢Šd}t          dd„ ˆfd	„ˆfd
„dd¬¦  «        }|                     |¦  «        \  }}t          |g d¢¦  «         t          |d¦  «         d S )N©r5   r.   r/   r0   ©r.   r   r2   r   ©r/   r2   r   r2   ©r0   r   r2   r.   )r   r   r   r   r   r   c                 ó   — dS ©Nr   rG   ©Úxs    r(   ú<lambda>z@TestIterativeSubproblem.test_for_the_easy_case.<locals>.<lambda>¨   ó   € °A€ r*   c                 ó,   •— t          j        ‰¦  «        S ©N©r   r8   ©rm   r'   s    €r(   rn   z@TestIterativeSubproblem.test_for_the_easy_case.<locals>.<lambda>©   ó   ø€ µB´H¸Q±K´K€ r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   ©rm   ÚHs    €r(   rn   z@TestIterativeSubproblem.test_for_the_easy_case.<locals>.<lambda>ª   ó   ø€ µR´X¸a±[´[€ r*   ç»½×Ùß|Û=©rm   ÚfunÚjacÚhessÚk_easyÚk_hard)gë8<Œbp?gøgÌEø®á¿gÎþ vå?gË�ùëÛªß¿T©r   Úsolver   )r:   Útrust_radiusÚsubprobÚpÚhits_boundaryrw   r'   s        @@r(   Útest_for_the_easy_casez.TestIterativeSubproblem.test_for_the_easy_case™   sÊ   øø€ ð ˆ]ˆ]Øˆ\ˆ\Øˆ\ˆ\Øˆ\ˆ\ðˆð ˆLˆLˆð ˆõ &¨Ø*5¨+Ø*?Ð*?Ð*?Ð*?Ø+@Ð+@Ð+@Ð+@Ø-2Ø-2ð4ñ 4ô 4ˆð #Ÿ=š=¨Ñ6Ô6Ñˆˆ=å! !ð &?ð &?ð &?ñ 	@ô 	@ð 	@å! -°Ñ6Ô6Ð6Ð6Ð6r*   c                 óÊ   ‡‡— g d¢g d¢g d¢g d¢gŠg d¢Šd}d}t          dd	„ ˆfd
„ˆfd„dd¬¦  «        }|                     |¦  «        \  }}t          | |j        ¦  «         d S )Nrf   rg   rh   ri   )gASýéð@r   r   r   grv»f(n Àr   r   c                 ó   — dS rk   rG   rl   s    r(   rn   z@TestIterativeSubproblem.test_for_the_hard_case.<locals>.<lambda>Ã   ro   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rs   s    €r(   rn   z@TestIterativeSubproblem.test_for_the_hard_case.<locals>.<lambda>Ä   rt   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rv   s    €r(   rn   z@TestIterativeSubproblem.test_for_the_hard_case.<locals>.<lambda>Å   rx   r*   ry   rz   )r   r�   r   Úlambda_current)r:   r=   r‚   rƒ   r„   r…   rw   r'   s         @@r(   Útest_for_the_hard_casez.TestIterativeSubproblem.test_for_the_hard_case³   s°   øø€ ð ˆ]ˆ]Øˆ\ˆ\Øˆ\ˆ\Øˆ\ˆ\ðˆð *Ð)Ð)ˆØˆð ˆõ &¨Ø*5¨+Ø*?Ð*?Ð*?Ð*?Ø+@Ð+@Ð+@Ð+@Ø-2Ø-2ð4ñ 4ô 4ˆð #Ÿ=š=¨Ñ6Ô6Ñˆˆ=å! 1 " gÔ&<Ñ=Ô=Ð=Ð=Ð=r*   c                 ó0  ‡‡— g d¢g d¢g d¢g d¢g d¢gŠg d¢Št          dd„ ˆfd	„ˆfd
„¬¦  «        }|                     d¦  «        \  }}t          |g d¢¦  «         t          |d¦  «         t          |j        d¦  «         t          |j        d¦  «         d S )N)gÛn‚ošþü?ç�ž¶¡½uê?ç,wnó)ôË?ç”/ËK¼Ëà¿çÿëš˜GÐ?)rŽ   gì¼®ÛwO@çÙ¢y¾n*Ô?çr–<8±Ù¿çõ¶Û&ÃŽ¶?)r�   r’   gÓ6›ª
@çøòÄ½CÔ¿ç8Š¤ÄKƒÑ?)r�   r“   r•   gÀc‘‰èù?çò†«>øÚ¿)r‘   r”   r–   r—   gÂ-£Qõ?)g*‹ã<sAè?g³¢¼E�?gM x¾—©Õ?gzý‹˜ÀÊê?gôÒ=€©Þ¿r   c                 ó   — dS rk   rG   rl   s    r(   rn   zGTestIterativeSubproblem.test_for_interior_convergence.<locals>.<lambda>Ø   ro   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rs   s    €r(   rn   zGTestIterativeSubproblem.test_for_interior_convergence.<locals>.<lambda>Ù   rt   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rv   s    €r(   rn   zGTestIterativeSubproblem.test_for_interior_convergence.<locals>.<lambda>Ú   rx   r*   )rm   r{   r|   r}   çš™™™™™ñ?)g8bÒ„òå¿gåO
©‘L¿?g p4OÇFÌ¿g� Ïqå¿g­oš-7Ô?Fr   )r   r�   r   r‹   Úniter©r:   rƒ   r„   r…   rw   r'   s       @@r(   Útest_for_interior_convergencez5TestIterativeSubproblem.test_for_interior_convergenceÌ   sø   øø€ àHÐHÐHØJÐJÐJØIÐIÐIØLÐLÐLØJÐJÐJð	Lˆð JÐIÐIˆõ &¨Ø*5¨+Ø*?Ð*?Ð*?Ð*?Ø+@Ð+@Ð+@Ð+@ðBñ Bô Bˆð #Ÿ=š=¨Ñ-Ô-Ñˆˆ=å! !ð &?ð &?ð &?ñ 	@ô 	@ð 	@å! -°Ñ7Ô7Ð7Ý! 'Ô"8¸!Ñ<Ô<Ð<Ý! '¤-°Ñ3Ô3Ð3Ð3Ð3r*   c                 óà   ‡‡— g d¢g d¢g d¢g d¢g d¢gŠg d¢Št          dd„ ˆfd	„ˆfd
„dd¬¦  «        }|                     d¦  «        \  }}t          |g d¢¦  «         t          |d¦  «         d S )N©gÝVaÐUì?çø˜›±`A@ç5“ýF€ï?çÔ9Ô)n@é¿ç€îcñÑ¿©r¡   gµÚ{ú¥§¿ç.<íøÕ?ç~õýÏËê¿çÔ:]³èÅ?©r¢   r¦   g@33ôë¿ç �5Ð:²°¿ç¦ä¤IŒâö¿©r£   r§   rª   gÐ¹ÛõÒTú¿ç¦F¦K°Õ¿©r¤   r¨   r«   r­   g¬¢&—Rùú¿)r   r   r   r   r   r   c                 ó   — dS rk   rG   rl   s    r(   rn   zATestIterativeSubproblem.test_for_jac_equal_zero.<locals>.<lambda>ï   ro   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rs   s    €r(   rn   zATestIterativeSubproblem.test_for_jac_equal_zero.<locals>.<lambda>ð   rt   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rv   s    €r(   rn   zATestIterativeSubproblem.test_for_jac_equal_zero.<locals>.<lambda>ñ   rx   r*   ry   rz   r›   ©g÷iG7ã°±?glµ$“•W�¿gÀü€ÍZæä¿g-ðOˆ|Î¿g¦mô‚/ë¿Tr€   r�   s       @@r(   Útest_for_jac_equal_zeroz/TestIterativeSubproblem.test_for_jac_equal_zeroã   sÒ   øø€ àKÐKÐKØKÐKÐKØLÐLÐLØLÐLÐLØMÐMÐMð	Oˆð ˆOˆOˆõ &¨Ø*5¨+Ø*?Ð*?Ð*?Ð*?Ø+@Ð+@Ð+@Ð+@Ø-2Ø-2ð4ñ 4ô 4ˆð #Ÿ=š=¨Ñ-Ô-Ñˆˆ=å! !ð &3ð &3ð &3ñ 	4ô 	4ð 	4õ 	" -°Ñ6Ô6Ð6Ð6Ð6r*   c                 óà   ‡‡— g d¢g d¢g d¢g d¢g d¢gŠg d¢Št          dd„ ˆfd	„ˆfd
„dd¬¦  «        }|                     d¦  «        \  }}t          |g d¢¦  «         t          |d¦  «         d S )Nr    r¥   r©   r¬   r®   )r   r   r   r   gVçž¯Ò<r   c                 ó   — dS rk   rG   rl   s    r(   rn   zITestIterativeSubproblem.test_for_jac_very_close_to_zero.<locals>.<lambda>  ro   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rs   s    €r(   rn   zITestIterativeSubproblem.test_for_jac_very_close_to_zero.<locals>.<lambda>  rt   r*   c                 ó,   •— t          j        ‰¦  «        S rq   rr   rv   s    €r(   rn   zITestIterativeSubproblem.test_for_jac_very_close_to_zero.<locals>.<lambda>	  rx   r*   ry   rz   r›   r²   Tr€   r�   s       @@r(   Útest_for_jac_very_close_to_zeroz7TestIterativeSubproblem.test_for_jac_very_close_to_zeroû   sÔ   øø€ àKÐKÐKØKÐKÐKØLÐLÐLØLÐLÐLØMÐMÐMð	Oˆð  ÐÐˆõ &¨Ø*5¨+Ø*?Ð*?Ð*?Ð*?Ø+@Ð+@Ð+@Ð+@Ø-2Ø-2ð4ñ 4ô 4ˆð #Ÿ=š=¨Ñ-Ô-Ñˆˆ=å! !ð &3ð &3ð &3ñ 	4ô 	4ð 	4õ 	" -°Ñ6Ô6Ð6Ð6Ð6r*   r5   c                 óî  ‡‡— t           j                             d¦  «         d}dD �]Í}g d¢}|D �]Â\  }}t          ||||¦  «        \  ŠŠg d¢}|D �]Ÿ}t	          dd„ ˆfd„ˆfd	„d
d
¬¦  «        }|                     |¦  «        \  }	}
dt          j        |	t          j        ‰|	¦  «        ¦  «        z  t          j        ‰|	¦  «        z   }g d¢}|D �]\  }}t          |dz
  dt          j        |¦  «        z
  ¦  «        }d|z
  }t	          dd„ ˆfd„ˆfd„||¬¦  «        }|                     |¦  «        \  }}dt          j        |t          j        ‰|¦  «        ¦  «        z  t          j        ‰|¦  «        z   }|r=t          t          j
        t          |¦  «        |z
  ¦  «        |dz
  |z  k    d¦  «         n!t          t          |¦  «        |k    d¦  «         t          |||z  k    d¦  «         �Œ!�Œ¡�ŒÄ�ŒÏd S )Nr   rK   )Úeasyr   r   ))iìÿÿÿiñÿÿÿ)éöÿÿÿéûÿÿÿ)r»   r   )r¼   rK   )r»   r5   )r   r5   )rK   r5   )é   é   )	çš™™™™™¹?g333333Ó?g333333ã?r3   r   g333333ó?gffffff
@g      @r5   r   c                 ó   — dS rk   rG   rl   s    r(   rn   zATestIterativeSubproblem.test_for_random_entries.<locals>.<lambda>1  s   € ¸q€ r*   c                 ó   •— ‰S rq   rG   rs   s    €r(   rn   zATestIterativeSubproblem.test_for_random_entries.<locals>.<lambda>2  ó   ø€ ¸q€ r*   c                 ó   •— ‰S rq   rG   rv   s    €r(   rn   zATestIterativeSubproblem.test_for_random_entries.<locals>.<lambda>3  rÂ   r*   ry   )r~   r   ç      à?))r¿   r.   )rÄ   r›   )gÍÌÌÌÌÌì?g)\�Âõ(ð?c                 ó   — dS rk   rG   rl   s    r(   rn   zATestIterativeSubproblem.test_for_random_entries.<locals>.<lambda>L  s   € À€ r*   c                 ó   •— ‰S rq   rG   rs   s    €r(   rn   zATestIterativeSubproblem.test_for_random_entries.<locals>.<lambda>M  ó   ø€ À€ r*   c                 ó   •— ‰S rq   rG   rv   s    €r(   rn   zATestIterativeSubproblem.test_for_random_entries.<locals>.<lambda>N  rÇ   r*   T)r   r   Úseedr)   r   r�   r   ÚminÚsqrtr   r9   r
   r   )r:   r   r    Ú
eig_limitsr   r   Útrust_radius_listr‚   Ú
subprob_acÚp_acÚhits_boundary_acÚJ_acÚstop_criteriaÚk_optÚk_trfr~   r   rƒ   r„   r…   ÚJrw   r'   s                        @@r(   Útest_for_random_entriesz/TestIterativeSubproblem.test_for_random_entries  s�  øø€ õ 	Œ	�Š�qÑÔÐð ˆà6ð C	<ñ C	<ˆDð$ð $ð $ˆJð %/ð 8<ñ 8<Ñ �˜õ $ A w°¸Ñ>Ô>‘��1ð %OÐ$NÐ$NÐ!à$5ð 0<ñ 0<�Lå!4°QØ5@°[Ø5@°[°[°[Ø5@°[°[°[Ø<AØ<Að"Cñ "Cô "C�Jð .8×-=Ò-=¸lÑ-KÔ-KÑ*�DÐ*ð �rœv d­B¬F°1°d©O¬OÑ<Ô<Ñ<½R¼VÀAÀt¹_¼_ÑL�Dð%2ð %2ð %2�Mð )6ð <ñ <™˜˜uõ "% U¨1¡WØ%&¥r¤w¨u¡~¤~Ñ%5ñ"7ô "7˜à!" 5¡˜õ #6°aØ6A°kØ6A°k°k°kØ6A°k°k°kØ=CØ=Cð#Eñ #Eô #E˜ð ,3¯=ª=¸Ñ+FÔ+FÑ(˜˜=ð  ¥¤ q­"¬&°°A©,¬,Ñ 7Ô 7Ñ7½¼¸qÀ!¹¼ÑD˜ð )ð HÝ.­r¬vµd¸1±g´g¸lÑ6JÑ/KÔ/KØ05°a±¸Ñ/Eò0FØGKñMô Mð Mð Mõ )­¨a©¬°LÒ)@À$ÑGÔGÐGõ % Q¨%°©*¢_°dÑ;Ô;Ð;Ñ;ñ=<ñ%0<ñ8<ðC	<ð C	<r*   N)rD   rE   rF   r†   rŒ   rž   r³   r¸   ÚpytestÚmarkÚ	fail_slowrÖ   rG   r*   r(   rd   rd   —   s�   € € € € € ð7ð 7ð 7ð4>ð >ð >ð24ð 4ð 4ð.7ð 7ð 7ð07ð 7ð 7ð0 „[×Ò˜2ÑÔðJ<ð J<ñ ÔðJ<ð J<ð J<r*   rd   )Ú__doc__r×   Únumpyr   Ú!scipy.optimize._trustregion_exactr   r   r   Úscipy.linalgr   r   r   r	   r
   Únumpy.testingr   r   r   r)   r,   rI   rd   rG   r*   r(   ú<module>rß      sm  ððð ð €€€Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð @Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðDð Dð Dð Dð Dð Dð Dð Dð Dð Dðð ð ð<Gð Gð Gð Gð Gñ Gô Gð Gð2M5ð M5ð M5ð M5ð M5ñ M5ô M5ð M5ð`G<ð G<ð G<ð G<ð G<ñ G<ô G<ð G<ð G<ð G<r*   