§
    ƒÛgÉ(  ã            	       ó>  — d dl Zd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZmZmZmZ d dlmZmZ d dlZd„ Zd„ Zd„ Zd	„ Ze ed
¦  «         ed¦  «         ed¦  «         G d„ de¦  «        ¦   «         ¦   «         ¦   «         ¦   «         Zd„ Zd„ Ze ed
¦  «         ed¦  «         ed¦  «         G d„ de¦  «        ¦   «         ¦   «         ¦   «         ¦   «         Ze ed¦  «         G d„ de¦  «        ¦   «         ¦   «         Zedk    r ej        ¦   «          dS dS )é    N)Úcuda)Údriver)Úskip_on_armÚskip_on_cudasimÚskip_under_cuda_memcheckÚContextResettingTestCaseÚForeignArray)Ú
linux_onlyÚwindows_onlyc                 óŒ   — 	  | ¦   «         }d}|}n#  d}t          j        ¦   «         }Y nxY w|                     ||f¦  «         d S )NTF)Ú	tracebackÚ
format_excÚput)Úthe_workÚresult_queueÚarrÚsuccÚouts        úV/granary/edev/quantum/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_ipc.pyÚcore_ipc_handle_testr      s`   € ð
Øˆh‰jŒjˆð ˆØˆˆøð%àˆÝÔ"Ñ$Ô$ˆˆˆøøøð
 ×Ò�d˜C�[Ñ!Ô!Ð!Ð!Ð!s   ‚
 ‘*c                 ó6   ‡ ‡— ˆ ˆfd„}t          ||¦  «         d S )Nc                  óÚ   •— t          j        t           j        ¦  «        } t          j        ‰‰| j        z  | ¬¦  «        5 }|                     ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S ©N)ÚshapeÚdtype)Únpr   Úintpr   Úopen_ipc_arrayÚitemsizeÚcopy_to_host)r   ÚdarrÚhandleÚsizes     €€r   r   z&base_ipc_handle_test.<locals>.the_work!   s«   ø€ Ý”�œÑ!Ô!ˆÝÔ  ¨t°u´~Ñ/EØ',ð.ñ .ô .ð 	'Ø15à×$Ò$Ñ&Ô&ð	'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   ¿A Á A$Á'A$©r   )r"   r#   r   r   s   ``  r   Úbase_ipc_handle_testr%       s:   øø€ ð'ð 'ð 'ð 'ð 'ð 'õ ˜ <Ñ0Ô0Ð0Ð0Ð0ó    c                 ó2   ‡ — ˆ fd„}t          ||¦  «         d S )Nc                  ó   •— t          j        t           j        ¦  «        } ‰                     t	          j        ¦   «         ‰j        | j        z  | ¬¦  «        }|                     ¦   «         }‰ 	                    ¦   «          |S r   )
r   r   r   Ú
open_arrayr   Úcurrent_contextr#   r   r    Úclose)r   r!   r   r"   s      €r   r   z+serialize_ipc_handle_test.<locals>.the_work,   sm   ø€ Ý”�œÑ!Ô!ˆØ× Ò ¥Ô!5Ñ!7Ô!7Ø'-¤{°e´nÑ'DØ',ð !ñ .ô .ˆð ×ÒÑ!Ô!ˆØ�Š‰ŒˆØˆ
r&   r$   )r"   r   r   s   `  r   Úserialize_ipc_handle_testr,   +   s4   ø€ ðð ð ð ð õ ˜ <Ñ0Ô0Ð0Ð0Ð0r&   c                 óž  — 	 | 5 }|                      ¦   «         }	 | 5  	 d d d ¦  «         n# 1 swxY w Y   t          d¦  «        ‚# t          $ r,}t          |¦  «        dk    rt          d¦  «        ‚Y d }~nd }~ww xY w	 d d d ¦  «         n# 1 swxY w Y   d}|}n#  d}t	          j        ¦   «         }Y nxY w|                     ||f¦  «         d S ©Nzdid not raise on reopenzIpcHandle is already openedzinvalid exception messageTF)r    ÚAssertionErrorÚ
ValueErrorÚstrr   r   r   )Úipcarrr   r!   r   Úer   r   s          r   Úipc_array_testr4   9   s�  € ðØð 
	@�tØ×#Ò#Ñ%Ô%ˆCð@àð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ %Ð%>Ñ?Ô?Ð?øõ	 ð Fð Fð FÝ�q‘6”6Ð:Ò:Ð:Ý(Ð)DÑEÔEÐEð ;Ð:Ð:Ð:Ð:øøøøðFøøøØ:ð
	@ð 
	@ð 
	@ñ 
	@ô 
	@ð 
	@ð 
	@ð 
	@ð 
	@ð 
	@ð 
	@øøøð 
	@ð 
	@ð 
	@ð 
	@ð$ ˆØˆˆøð%àˆÝÔ"Ñ$Ô$ˆˆˆøøøð
 ×Ò�d˜C�[Ñ!Ô!Ð!Ð!Ð!sq   ‚B „B
šAœ*žAª.	®A±.	²AµB
Á
A:Á"A5Á0B
Á5A:Á:B
Á>B Â
BÂB ÂBÂB ÂB3zHangs cuda-memcheckzIpc not available in CUDASIMz&CUDA IPC not supported on ARM in Numbac                   ó6   — e Zd Zd„ Zd„ Zd	d„Zd„ Zd	d„Zd„ ZdS )
ÚTestIpcMemoryc                 ó²  — t          j        dt           j        ¬¦  «        }t          j        |¦  «        }t          j        ¦   «         }|                     |j        ¦  «        }t          j	        r|j
        j        }nt          |j
        ¦  «        }|j        }t          j        d¦  «        }|                     ¦   «         }|||f}|                     t$          |¬¦  «        }	|	                     ¦   «          |                     ¦   «         \  }
}|
s|                      |¦  «         n t           j                             ||¦  «         |	                     d¦  «         d S ©Né
   ©r   Úspawn©ÚtargetÚargsé   )r   Úaranger   r   Ú	to_devicer*   Úget_ipc_handleÚgpu_datar   ÚUSE_NV_BINDINGr"   ÚreservedÚbytesr#   ÚmpÚget_contextÚQueueÚProcessr%   ÚstartÚgetÚfailÚtestingÚassert_equalÚjoin)Úselfr   ÚdevarrÚctxÚipchÚhandle_bytesr#   r   r>   Úprocr   r   s               r   Útest_ipc_handlezTestIpcMemory.test_ipc_handleX   s!  € åŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ” Ñ$Ô$ˆõ Ô"Ñ$Ô$ˆØ×!Ò! &¤/Ñ2Ô2ˆõ Ô ð 	.Øœ;Ô/ˆLˆLå  ¤Ñ-Ô-ˆLØŒyˆõ Œn˜WÑ%Ô%ˆØ—y’y‘{”{ˆØ˜d LÐ1ˆØ�{Š{Õ"6¸Tˆ{ÑBÔBˆØ�
Š
‰ŒˆØ ×$Ò$Ñ&Ô&‰	ˆˆcØð 	.Ø�IŠI�c‰NŒNˆNˆNåŒJ×#Ò# C¨Ñ-Ô-Ð-Ø�	Š	�!‰Œˆˆˆr&   c                 ó�   — d t          dd ¦  «        t          dd¦  «        t          d d¦  «        f}d}t          j        ||¦  «        S )Nr?   é   )FT)ÚsliceÚ	itertoolsÚproduct)rQ   ÚindicesÚforeignss      r   ÚvariantszTestIpcMemory.variantsu   sB   € à�˜q $™œ­¨q°!©¬µe¸DÀ!±n´nÐEˆð !ˆÝÔ  ¨(Ñ3Ô3Ð3r&   NFc                 ór  — t          j        dt           j        ¬¦  «        }t          j        |¦  «        }|�||         }|r!t          j        t          |¦  «        ¦  «        }|                     ¦   «         }t          j        ¦   «         }| 	                    |j
        ¦  «        }t          j        |¦  «        }t          j        |¦  «        }	|                      |	j        d ¦  «         |                      |	j        |j        ¦  «         t$          j        r+|                      |	j        j        |j        j        ¦  «         n:|                      t-          |	j        ¦  «        t-          |j        ¦  «        ¦  «         t/          j        d¦  «        }|                     ¦   «         }
||
f}|                     t6          |¬¦  «        }|                     ¦   «          |
                     ¦   «         \  }}|s|                      |¦  «         n t           j                              ||¦  «         | !                    d¦  «         d S r8   )"r   r@   r   r   rA   Úas_cuda_arrayr	   r    r*   rB   rC   ÚpickleÚdumpsÚloadsÚassertIsÚbaseÚassertEqualr#   r   rD   r"   rE   ÚtuplerG   rH   rI   rJ   r,   rK   rL   rM   rN   rO   rP   )rQ   Ú	index_argÚforeignr   rR   ÚexpectrS   rT   ÚbufÚ
ipch_reconr   r>   rV   r   r   s                  r   Úcheck_ipc_handle_serializationz,TestIpcMemory.check_ipc_handle_serialization}   sÜ  € åŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ” Ñ$Ô$ˆØÐ Ø˜IÔ&ˆFØð 	>ÝÔ'­°VÑ(<Ô(<Ñ=Ô=ˆFØ×$Ò$Ñ&Ô&ˆõ Ô"Ñ$Ô$ˆØ×!Ò! &¤/Ñ2Ô2ˆõ Œl˜4Ñ Ô ˆÝ”\ #Ñ&Ô&ˆ
Ø�Š�j”o tÑ,Ô,Ð,Ø×Ò˜œ¨$¬)Ñ4Ô4Ð4åÔ ð 	KØ×Ò˜ZÔ.Ô7¸¼Ô9MÑNÔNÐNÐNà×Ò�U :Ô#4Ñ5Ô5µu¸T¼[Ñ7IÔ7IÑJÔJÐJõ Œn˜WÑ%Ô%ˆØ—y’y‘{”{ˆØ�lÐ#ˆØ�{Š{Õ";À$ˆ{ÑGÔGˆØ�
Š
‰ŒˆØ ×$Ò$Ñ&Ô&‰	ˆˆcØð 	1Ø�IŠI�c‰NŒNˆNˆNåŒJ×#Ò# F¨CÑ0Ô0Ð0Ø�	Š	�!‰Œˆˆˆr&   c                 óÄ   — |                       ¦   «         D ]J\  }}|                      ||¬¦  «        5  |                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   ŒKd S ©N)Úindexrj   )r_   ÚsubTestrn   ©rQ   rq   rj   s      r   Útest_ipc_handle_serializationz+TestIpcMemory.test_ipc_handle_serialization£   s¾   € Ø#Ÿ}š}™œð 	Dð 	D‰OˆE�7Ø—’ E°7�Ñ;Ô;ð Dð DØ×3Ò3°E¸7ÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Døð	Dð 	Dó   ±AÁA	ÁA	c                 ó˜  — t          j        dt           j        ¬¦  «        }t          j        |¦  «        }|�||         }|r!t          j        t          |¦  «        ¦  «        }|                     ¦   «         }|                     ¦   «         }t          j
        d¦  «        }|                     ¦   «         }||f}	|                     t          |	¬¦  «        }
|
                     ¦   «          |                     ¦   «         \  }}|s|                      |¦  «         n t           j                             ||¦  «         |
                     d¦  «         d S r8   )r   r@   r   r   rA   ra   r	   r    rB   rG   rH   rI   rJ   r4   rK   rL   rM   rN   rO   rP   )rQ   ri   rj   r   rR   rk   rT   rS   r   r>   rV   r   r   s                r   Úcheck_ipc_arrayzTestIpcMemory.check_ipc_array¨   s  € åŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ” Ñ$Ô$ˆàÐ Ø˜IÔ&ˆFØð 	>ÝÔ'­°VÑ(<Ô(<Ñ=Ô=ˆFØ×$Ò$Ñ&Ô&ˆØ×$Ò$Ñ&Ô&ˆõ Œn˜WÑ%Ô%ˆØ—y’y‘{”{ˆØ�lÐ#ˆØ�{Š{¥.°tˆ{Ñ<Ô<ˆØ�
Š
‰ŒˆØ ×$Ò$Ñ&Ô&‰	ˆˆcØð 	1Ø�IŠI�c‰NŒNˆNˆNåŒJ×#Ò# F¨CÑ0Ô0Ð0Ø�	Š	�!‰Œˆˆˆr&   c                 óÄ   — |                       ¦   «         D ]J\  }}|                      ||¬¦  «        5  |                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   ŒKd S rp   )r_   rr   rw   rs   s      r   Útest_ipc_arrayzTestIpcMemory.test_ipc_arrayÁ   s©   € Ø#Ÿ}š}™œð 	5ð 	5‰OˆE�7Ø—’ E°7�Ñ;Ô;ð 5ð 5Ø×$Ò$ U¨GÑ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5øð	5ð 	5ru   )NF)	Ú__name__Ú
__module__Ú__qualname__rW   r_   rn   rt   rw   ry   © r&   r   r6   r6   R   s|   € € € € € ðð ð ð:4ð 4ð 4ð$ð $ð $ð $ðLDð Dð Dð
ð ð ð ð25ð 5ð 5ð 5ð 5r&   r6   c                 ó6   ‡ ‡— ˆˆ fd„}t          ||¦  «         d S )Nc                  óÎ  •— t           j        ‰         5  t           j                             ¦   «         } ‰                     | ¦  «        }‰j        t          j        t          j        ¦  «        j	        z  }t          j
        |t          j        ¬¦  «        }t           j                             ||‰j        ¬¦  «         ‰                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |S )Nr:   )r#   )r   ÚgpusÚdevicesrH   Úopen_stagedr#   r   r   r   r   Úzerosr   Údevice_to_hostr+   )Úthis_ctxÚ	deviceptrÚarrsizeÚ	hostarrayÚ
device_numr"   s       €€r   r   z(staged_ipc_handle_test.<locals>.the_workÈ   sû   ø€ ÝŒY�zÔ"ð 	ð 	Ý”|×/Ò/Ñ1Ô1ˆHØ×*Ò*¨8Ñ4Ô4ˆIØ”k¥R¤X­b¬gÑ%6Ô%6Ô%?Ñ?ˆGÝœ µ´Ð8Ñ8Ô8ˆIÝŒK×&Ò&Ø˜9¨6¬;ð 'ñ ô ð ð �LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð Ðs   ”B:CÃCÃ!Cr$   )r"   r‰   r   r   s   ``  r   Ústaged_ipc_handle_testrŠ   Ç   s:   øø€ ð
ð 
ð 
ð 
ð 
ð 
õ ˜ <Ñ0Ô0Ð0Ð0Ð0r&   c                 óò  — 	 t           j        |         5  | 5 }|                     ¦   «         }	 | 5  	 d d d ¦  «         n# 1 swxY w Y   t          d¦  «        ‚# t          $ r,}t          |¦  «        dk    rt          d¦  «        ‚Y d }~nd }~ww xY w	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d}|}n#  d}t          j        ¦   «         }Y nxY w|                     ||f¦  «         d S r.   )	r   r€   r    r/   r0   r1   r   r   r   )r2   r‰   r   r!   r   r3   r   r   s           r   Ústaged_ipc_array_testrŒ   ×   s  € ðÝŒY�zÔ"ð 	Dð 	DØð 
D˜4Ø×'Ò'Ñ)Ô)�ðDàð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ )Ð)BÑCÔCÐCøõ	 "ð Jð Jð JÝ˜1‘v”vÐ!>Ò>Ð>Ý,Ð-HÑIÔIÐIð ?Ð>Ð>Ð>Ð>øøøøðJøøøØ>ð
Dð 
Dð 
Dñ 
Dô 
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
Døøøð 
Dð 
Dð 
Dð 
Dð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð& ˆØˆˆøð%àˆÝÔ"Ñ$Ô$ˆˆˆøøøð
 ×Ò�d˜C�[Ñ!Ô!Ð!Ð!Ð!sš   ‚C ”B4—B­A¯=±A½AÁAÁAÁAÁBÁ
BÁ!"BÂBÂBÂBÂB4ÂB!	Â!B4Â$B!	Â%B4Â(C Â4B8Â8C Â;B8Â<C ÃCc                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestIpcStagedc                 óD  — t          j        dt           j        ¬¦  «        }t          j        |¦  «        }t          j        d¦  «        }|                     ¦   «         }t          j        ¦   «         }| 	                    |j
        ¦  «        }t          j        |¦  «        }t          j        |¦  «        }|                      |j        d ¦  «         t           j        r+|                      |j        j        |j        j        ¦  «         n:|                      t+          |j        ¦  «        t+          |j        ¦  «        ¦  «         |                      |j        |j        ¦  «         t/          t1          t          j        ¦  «        ¦  «        D ]›}	||	|f}
|                     t6          |
¬¦  «        }|                     ¦   «          |                     ¦   «         \  }}|                     d¦  «         |s|                      |¦  «         Œ{t           j          !                    ||¦  «         Œœd S r8   )"r   r@   r   r   rA   rG   rH   rI   r*   rB   rC   rb   rc   rd   re   rf   r   rD   rg   r"   rE   rh   r#   ÚrangeÚlenr€   rJ   rŠ   rK   rL   rP   rM   rN   rO   )rQ   r   rR   Úmpctxr   rS   rT   rl   rm   r‰   r>   rV   r   r   s                 r   Útest_stagedzTestIpcStaged.test_stagedö   sÅ  € åŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ” Ñ$Ô$ˆõ ”˜wÑ'Ô'ˆØ—{’{‘}”}ˆõ Ô"Ñ$Ô$ˆØ×!Ò! &¤/Ñ2Ô2ˆåŒl˜4Ñ Ô ˆÝ”\ #Ñ&Ô&ˆ
Ø�Š�j”o tÑ,Ô,Ð,ÝÔ ð 	KØ×Ò˜ZÔ.Ô7¸¼Ô9MÑNÔNÐNÐNà×Ò�U :Ô#4Ñ5Ô5µu¸T¼[Ñ7IÔ7IÑJÔJÐJØ×Ò˜œ¨$¬)Ñ4Ô4Ð4õ  ¥¥D¤I¡¤Ñ/Ô/ð 		2ð 		2ˆJØ˜* lÐ3ˆDØ—=’=Õ(>ÀT�=ÑJÔJˆDØ�JŠJ‰LŒLˆLØ$×(Ò(Ñ*Ô*‰IˆD�#Ø�IŠI�a‰LŒLˆLØð 2Ø—	’	˜#‘”��å”
×'Ò'¨¨SÑ1Ô1Ð1Ð1ð		2ð 		2r&   c                 ól  — t          t          t          j        ¦  «        ¦  «        D �]}t          j                             d¦  «        }t          j        |¦  «        }|                     ¦   «         }t          j	        d¦  «        }| 
                    ¦   «         }|||f}|                     t          |¬¦  «        }|                     ¦   «          |                     ¦   «         \  }	}
|                     d¦  «         |	s|                      |
¦  «         Œët          j                             ||
¦  «         �Œd S )Nr9   r;   r<   r?   )r�   r‘   r   r€   r   ÚrandomrA   rB   rG   rH   rI   rJ   rŒ   rK   rL   rP   rM   rN   rO   )rQ   r‰   r   rR   rT   rS   r   r>   rV   r   r   s              r   ry   zTestIpcStaged.test_ipc_array  s  € Ý¥¥D¤I¡¤Ñ/Ô/ð 	2ñ 	2ˆJå”)×"Ò" 2Ñ&Ô&ˆCÝ”^ CÑ(Ô(ˆFØ×(Ò(Ñ*Ô*ˆDõ ”. Ñ)Ô)ˆCØŸ9š9™;œ;ˆLØ˜* lÐ3ˆDØ—;’;Õ&;À$�;ÑGÔGˆDØ�JŠJ‰LŒLˆLØ$×(Ò(Ñ*Ô*‰IˆD�#Ø�IŠI�a‰LŒLˆLØð 2Ø—	’	˜#‘”��å”
×'Ò'¨¨SÑ1Ô1Ð1Ñ1ð#	2ð 	2r&   N)rz   r{   r|   r“   ry   r}   r&   r   rŽ   rŽ   ñ   s3   € € € € € ð
 2ð  2ð  2ðD2ð 2ð 2ð 2ð 2r&   rŽ   c                   ó   — e Zd Zd„ ZdS )ÚTestIpcNotSupportedc                 óN  — t          j        dt           j        ¬¦  «        }t          j        |¦  «        }|                      t          ¦  «        5 }|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   t          |j	        ¦  «        }|  
                    d|¦  «         d S )Nr9   r:   zOS does not support CUDA IPC)r   r@   r   r   rA   ÚassertRaisesÚOSErrorrB   r1   Ú	exceptionÚassertIn)rQ   r   rR   ÚraisesÚerrmsgs        r   Útest_unsupportedz$TestIpcNotSupported.test_unsupported0  sÊ   € ÝŒi˜¥"¤'Ð*Ñ*Ô*ˆÝ” Ñ$Ô$ˆØ×Ò�wÑ'Ô'ð 	$¨6Ø×!Ò!Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$å�VÔ%Ñ&Ô&ˆØ�ŠÐ4°fÑ=Ô=Ð=Ð=Ð=s   ÁA0Á0A4Á7A4N)rz   r{   r|   rŸ   r}   r&   r   r—   r—   -  s#   € € € € € ð>ð >ð >ð >ð >r&   r—   Ú__main__) ÚmultiprocessingrG   r[   r   rb   Únumpyr   Únumbar   Únumba.cuda.cudadrvr   Únumba.cuda.testingr   r   r   r   r	   Únumba.tests.supportr
   r   Úunittestr   r%   r,   r4   r6   rŠ   rŒ   rŽ   r—   rz   Úmainr}   r&   r   ú<module>r©      s¤  ðØ Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€à Ð Ð Ð à Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %ðHð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð Hð 9Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø €€€ð"ð "ð "ð1ð 1ð 1ð1ð 1ð 1ð"ð "ð "ð2 ØÐÐ/Ñ0Ô0Ø€Ð/Ñ0Ô0Ø€Ð5Ñ6Ô6ðn5ð n5ð n5ð n5ð n5Ð,ñ n5ô n5ñ 7Ô6ñ 1Ô0ñ 1Ô0ñ „ðn5ðb1ð 1ð 1ð "ð "ð "ð4 ØÐÐ/Ñ0Ô0Ø€Ð/Ñ0Ô0Ø€Ð5Ñ6Ô6ð52ð 52ð 52ð 52ð 52Ð,ñ 52ô 52ñ 7Ô6ñ 1Ô0ñ 1Ô0ñ „ð52ðp Ø€Ð/Ñ0Ô0ð>ð >ð >ð >ð >Ð2ñ >ô >ñ 1Ô0ñ „ð>ð ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr&   