§
    E�’jT2  ã                  óæ  — d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlZd dlmc mZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ e
rd dlmZ 	  G d	„ d
e¦  «        Zej        d0d„¦   «         Z ej        d1d„¦   «         Z!ej        d2d„¦   «         Z" G d„ de¦  «        Z#ej        d3d„¦   «         Z$ G d„ de¦  «        Z% G d„ de¦  «        Z& G d„ de¦  «        Z'd4d!„Z(d5d"„Z)d6d$„Z*d7d(„Z+d8d/„Z,dS )9é    )ÚannotationsN)ÚABCÚabstractmethod)Úcached_property)ÚAnyÚTYPE_CHECKING)	ÚCFunctionalizeInterpreterPtrÚCGradInterpreterPtrÚCInterpreterÚCJvpInterpreterPtrÚCVmapInterpreterPtrÚpop_dynamic_layer_stackÚpush_dynamic_layer_stackÚRandomnessTypeÚTransformType)Ú_set_fwd_grad_enabled)Ú	Generatorc                  ó^   — e Zd Zdd„Zedd„¦   «         Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„ZdS ) ÚFuncTorchInterpreterÚcptrr   ÚreturnÚNonec                ó   — || _         d S ©N)Ú_cptr)Úselfr   s     úJC:\Projects\DSCons\.venv\Lib\site-packages\torch\_functorch\pyfunctorch.pyÚ__init__zFuncTorchInterpreter.__init__=   s   € ØˆŒ
ˆ
ˆ
ó    ÚopÚargsútuple[Any, ...]Úkwargsúdict[str, Any]c                ó   — d S r   © )r   r    r!   r#   s       r   ÚprocesszFuncTorchInterpreter.processB   s   € àˆr   ú&contextlib.AbstractContextManager[Any]c                ó   — t          ¦   «         S r   )Ú!temporarily_pop_interpreter_stack©r   s    r   ÚlowerzFuncTorchInterpreter.lowerI   s   € Ý0Ñ2Ô2Ð2r   Úintc                ó4   — | j                              ¦   «         S r   )r   Úlevelr+   s    r   r/   zFuncTorchInterpreter.levelL   s   € ØŒz×ÒÑ!Ô!Ð!r   r   c                ó4   — | j                              ¦   «         S r   )r   Úkeyr+   s    r   r1   zFuncTorchInterpreter.keyO   s   € ØŒz�~Š~ÑÔÐr   c                ó   — t           ‚r   )ÚNotImplementedErrorr+   s    r   Ú	get_statezFuncTorchInterpreter.get_stateR   s   € Ý!Ð!r   ÚstateÚboolc                ó2   — ||                       ¦   «         k    S r   )r4   ©r   r5   s     r   Úcheck_statez FuncTorchInterpreter.check_stateU   s   € Ø˜ŸšÑ(Ô(Ò(Ð(r   c                ód   — | j                              ¦   «         }|                     dd ¦  «         |S )Nr   )Ú__dict__ÚcopyÚpopr8   s     r   Ú__getstate__z!FuncTorchInterpreter.__getstate__X   s.   € Ø”×"Ò"Ñ$Ô$ˆØ�	Š	�'˜4Ñ Ô Ð Øˆr   N)r   r   r   r   ©r    r   r!   r"   r#   r$   r   r   ©r   r(   ©r   r-   )r   r   ©r   r"   )r5   r"   r   r6   )r   r$   )Ú__name__Ú
__module__Ú__qualname__r   r   r'   r,   r/   r1   r4   r9   r>   r&   r   r   r   r   <   sÀ   € € € € € ðð ð ð ð
 ðð ð ñ „^ðð3ð 3ð 3ð 3ð"ð "ð "ð "ð ð  ð  ð  ð"ð "ð "ð "ð)ð )ð )ð )ðð ð ð ð ð r   r   r   úGenerator[None, None, None]c               #  óv   K  — 	 t          ¦   «         } d V — t          | ¦  «         d S # t          | ¦  «         w xY wr   )r   r   )Úsaveds    r   r*   r*   ^   sH   è è € ð(Ý'Ñ)Ô)ˆØˆˆˆå  Ñ'Ô'Ð'Ð'Ð'øÕ  Ñ'Ô'Ð'Ð'øøøs   „' §8ú Generator[list[Any], None, None]c               #  ó¢  K  — g } 	 t           j        j                             ¦   «         �D|                      t          ¦   «         ¦  «         t           j        j                             ¦   «         ­Dt          | ¦  «        V — | r%t          |                      ¦   «         ¦  «         | °#d S d S # | r#t          |                      ¦   «         ¦  «         | °#w xY wr   )	ÚtorchÚ_CÚ
_functorchÚpeek_interpreter_stackÚappendr   Úlistr   r=   )Ústacks    r   Ú#temporarily_clear_interpreter_stackrR   g   sã   è è € à€Eð2ÝŒhÔ!×8Ò8Ñ:Ô:ÐFØ�LŠLÕ0Ñ2Ô2Ñ3Ô3Ð3õ ŒhÔ!×8Ò8Ñ:Ô:ÐFå�5‰kŒkÐÐÐàð 	2Ý$ U§Y¢Y¡[¤[Ñ1Ô1Ð1ð ð 	2ð 	2ð 	2ð 	2ð 	2øˆeð 	2Ý$ U§Y¢Y¡[¤[Ñ1Ô1Ð1ð ð 	2ð 	2ð 	2ð 	2ð 	2s   †A8B' Â''CrQ   úlist[Any] | Nonec              #  ó  K  — g }| €d S 	 t          | ¦  «        D ]&}t          |¦  «         |                     |¦  «         Œ'd V — t          |¦  «        D ]}t          ¦   «          Œd S # t          |¦  «        D ]}t          ¦   «          Œw xY wr   )Úreversedr   rO   r   )rQ   ÚpushedÚsÚ_s       r   Ú%temporarily_restore_interpreter_stackrY   s   s¿   è è € ð €FØ€}Øˆð	&Ý˜%‘”ð 	ð 	ˆAÝ$ QÑ'Ô'Ð'Ø�MŠM˜!ÑÔÐÐØˆˆˆå˜&Ñ!Ô!ð 	&ð 	&ˆAõ $Ñ%Ô%Ð%Ð%ð	&ð 	&ø•˜&Ñ!Ô!ð 	&ð 	&ˆAõ $Ñ%Ô%Ð%Ð%ð	&øøøs   Š:A& Á&"Bc                  óN   — e Zd Zdd„Zedd„¦   «         Zdd„Zdd„Zdd„Zdd„Z	dS )ÚVmapInterpreterÚcdatar   r   r   c                ó    — |                      ¦   «         t          j        k    r$t          d|                      ¦   «         › �¦  «        ‚|| _        d S )Nz!expected TransformType.Vmap, got )r1   r   ÚVmapÚAssertionErrorÚ_cdata©r   r\   s     r   r   zVmapInterpreter.__init__‡   sD   € Ø�9Š9‰;Œ;�-Ô,Ò,Ð,Ý Ð!RÀUÇYÂYÁ[Ä[Ð!RÐ!RÑSÔSÐSð ˆŒˆˆr   r   c                ó*   — t          | j        ¦  «        S r   )r   r`   r+   s    r   r   zVmapInterpreter._cptr�   ó   € õ # 4¤;Ñ/Ô/Ð/r   r    r   r!   r"   r#   r$   c                óH   — |j         t          j                 } || g|¢R i |¤ŽS r   )Úfunctorch_tabler   r^   ©r   r    r!   r#   Úkernels        r   r'   zVmapInterpreter.process”   s2   € ØÔ#¥MÔ$6Ô7ˆØˆv�dÐ,˜TÐ,Ð,Ð, VÐ,Ð,Ð,r   r-   c                ó4   — | j                              ¦   «         S r   )r   Ú	batchSizer+   s    r   Ú
batch_sizezVmapInterpreter.batch_size˜   s   € ØŒz×#Ò#Ñ%Ô%Ð%r   Ústrc                óÄ   — | j                              ¦   «         }|t          j        k    rdS |t          j        k    rdS |t          j        k    rdS t          d|› �¦  «        ‚)NÚerrorÚsameÚ	differentzUnknown RandomnessType: )r   Ú
randomnessr   ÚErrorÚSameÚ	DifferentÚRuntimeError)r   Útyps     r   rp   zVmapInterpreter.randomness›   se   € ØŒj×#Ò#Ñ%Ô%ˆØ•.Ô&Ò&Ð&Ø�7Ø•NÔ'Ò'Ð'Ø�6Ø•NÔ,Ò,Ð,Ø�;ÝÐ;°cÐ;Ð;Ñ<Ô<Ð<r   c                ó‚   — |                       ¦   «         j        |                      ¦   «         |                      ¦   «         fS r   )r1   Únamer/   rp   r+   s    r   r4   zVmapInterpreter.get_state¥   s+   € Ø—’‘
”
” §¢¡¤¨t¯ªÑ/@Ô/@ÐAÐAr   N©r\   r   r   r   )r   r   r?   rA   )r   rk   rB   )
rC   rD   rE   r   r   r   r'   rj   rp   r4   r&   r   r   r[   r[   †   sž   € € € € € ðð ð ð ð ð0ð 0ð 0ñ „_ð0ð-ð -ð -ð -ð&ð &ð &ð &ð=ð =ð =ð =ðBð Bð Bð Bð Bð Br   r[   Úcontextsr(   úIGenerator[tuple[contextlib.AbstractContextManager[Any], ...], None, None]c               '  óž   K  — t          j        ¦   «         5 }| D ]}|                     |¦  «         Œ| V — d d d ¦  «         d S # 1 swxY w Y   d S r   )Ú
contextlibÚ	ExitStackÚenter_context)ry   rQ   Úctxs      r   Únestedr€   ©   s§   è è € õ 
Ô	Ñ	Ô	ð  5Øð 	%ð 	%ˆCØ×Ò Ñ$Ô$Ð$Ð$Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   –AÁAÁ	Ac                  ó`   ‡ — e Zd Zdd„Zedd„¦   «         Zdd„Zdd„Zdˆ fd„Zdd„Z	dd„Z
ˆ xZS )ÚGradInterpreterr\   r   r   r   c                ó    — |                      ¦   «         t          j        k    r$t          d|                      ¦   «         › �¦  «        ‚|| _        d S )Nz!expected TransformType.Grad, got )r1   r   ÚGradr_   r`   ra   s     r   r   zGradInterpreter.__init__´   sB   € Ø�9Š9‰;Œ;�-Ô,Ò,Ð,Ý Ð!RÀUÇYÂYÁ[Ä[Ð!RÐ!RÑSÔSÐSàˆŒˆˆr   r
   c                ó*   — t          | j        ¦  «        S r   )r
   r`   r+   s    r   r   zGradInterpreter._cptrº   rc   r   r!   r"   r#   r$   ú&tuple[tuple[Any, ...], dict[str, Any]]c                óh   — t          j        t          j        | j        j        ||g¦  «        \  }}||fS r   ©ÚpytreeÚtree_map_onlyrK   ÚTensorr   Úlift©r   r!   r#   s      r   rŒ   zGradInterpreter.lift¿   ó7   € õ Ô+ÝŒL˜$œ*œ/¨D°&¨>ñ
ô 
‰ˆˆfð �Vˆ|Ðr   r    r   c                óz   — |j         t          j                 }|                      ||¦  «        \  }} || g|¢R i |¤ŽS r   )re   r   r„   rŒ   rf   s        r   r'   zGradInterpreter.processÇ   sI   € ØÔ#¥MÔ$6Ô7ˆØ—y’y  vÑ.Ô.‰ˆˆfØˆv�dÐ,˜TÐ,Ð,Ð, VÐ,Ð,Ð,r   r(   c                óî   •— |                       ¦   «         }|s?t          t          j        ¦   «         t	          ¦   «                              ¦   «         ¦  «        S t	          ¦   «                              ¦   «         S r   )Úprev_grad_moder€   rK   Úno_gradÚsuperr,   )r   r‘   Ú	__class__s     €r   r,   zGradInterpreter.lowerÏ   sP   ø€ Ø×,Ò,Ñ.Ô.ˆØð 	<Ý�%œ-™/œ/­5©7¬7¯=ª=©?¬?Ñ;Ô;Ð;Ý‰wŒw�}Š}‰ŒÐr   r6   c                ó4   — | j                              ¦   «         S r   )r   ÚprevGradModer+   s    r   r‘   zGradInterpreter.prev_grad_modeÕ   s   € ØŒz×&Ò&Ñ(Ô(Ð(r   c                ó‚   — |                       ¦   «         j        |                      ¦   «         |                      ¦   «         fS r   )r1   rw   r/   r‘   r+   s    r   r4   zGradInterpreter.get_stateØ   s-   € Ø—’‘
”
” §¢¡¤¨t×/BÒ/BÑ/DÔ/DÐEÐEr   rx   )r   r
   ©r!   r"   r#   r$   r   r†   r?   r@   ©r   r6   rB   )rC   rD   rE   r   r   r   rŒ   r'   r,   r‘   r4   Ú__classcell__©r”   s   @r   r‚   r‚   ³   sÉ   ø€ € € € € ðð ð ð ð ð0ð 0ð 0ñ „_ð0ðð ð ð ð-ð -ð -ð -ðð ð ð ð ð ð)ð )ð )ð )ðFð Fð Fð Fð Fð Fð Fð Fr   r‚   c                  ó`   ‡ — e Zd Zdd„Zedd„¦   «         Zdd„Zdd„Zdˆ fd„Zdd„Z	dd„Z
ˆ xZS )ÚJvpInterpreterr\   r   r   r   c                ó    — |                      ¦   «         t          j        k    r$t          d|                      ¦   «         › �¦  «        ‚|| _        d S )Nz expected TransformType.Jvp, got )r1   r   ÚJvpr_   r`   ra   s     r   r   zJvpInterpreter.__init__Ý   sB   € Ø�9Š9‰;Œ;�-Ô+Ò+Ð+Ý Ð!QÀEÇIÂIÁKÄKÐ!QÐ!QÑRÔRÐRàˆŒˆˆr   r   c                ó*   — t          | j        ¦  «        S r   )r   r`   r+   s    r   r   zJvpInterpreter._cptrã   s   € õ " $¤+Ñ.Ô.Ð.r   r!   r"   r#   r$   r†   c                óh   — t          j        t          j        | j        j        ||g¦  «        \  }}||fS r   rˆ   r�   s      r   rŒ   zJvpInterpreter.liftè   rŽ   r   r    r   c                óz   — |j         t          j                 }|                      ||¦  «        \  }} || g|¢R i |¤ŽS r   )re   r   rŸ   rŒ   rf   s        r   r'   zJvpInterpreter.processð   sI   € ØÔ#¥MÔ$5Ô6ˆØ—y’y  vÑ.Ô.‰ˆˆfØˆv�dÐ,˜TÐ,Ð,Ð, VÐ,Ð,Ð,r   r(   c                óæ   •— |                       ¦   «         }|s;t          t          d¦  «        t          ¦   «                              ¦   «         ¦  «        S t          ¦   «                              ¦   «         S )NF)Úprev_fwd_grad_moder€   r   r“   r,   )r   r¤   r”   s     €r   r,   zJvpInterpreter.lowerø   sU   ø€ Ø!×4Ò4Ñ6Ô6ÐØ!ð 	IÝÕ/°Ñ6Ô6½¹¼¿º¹¼ÑHÔHÐHÝ‰wŒw�}Š}‰ŒÐr   r6   c                ó4   — | j                              ¦   «         S r   )r   ÚprevFwdGradModer+   s    r   r¤   z!JvpInterpreter.prev_fwd_grad_modeþ   s   € ØŒz×)Ò)Ñ+Ô+Ð+r   c                ó‚   — |                       ¦   «         j        |                      ¦   «         |                      ¦   «         fS r   )r1   rw   r/   r¤   r+   s    r   r4   zJvpInterpreter.get_state  s-   € Ø—’‘
”
” §¢¡¤¨t×/FÒ/FÑ/HÔ/HÐIÐIr   rx   )r   r   r˜   r?   r@   r™   rB   )rC   rD   rE   r   r   r   rŒ   r'   r,   r¤   r4   rš   r›   s   @r   r�   r�   Ü   sÉ   ø€ € € € € ðð ð ð ð ð/ð /ð /ñ „_ð/ðð ð ð ð-ð -ð -ð -ðð ð ð ð ð ð,ð ,ð ,ð ,ðJð Jð Jð Jð Jð Jð Jð Jr   r�   c                  óF   — e Zd Zdd„Zedd„¦   «         Zdd„Zdd„Zdd„ZdS )ÚFunctionalizeInterpreterr\   r   r   r   c                ó    — |                      ¦   «         t          j        k    r$t          d|                      ¦   «         › �¦  «        ‚|| _        d S )Nz*expected TransformType.Functionalize, got )r1   r   ÚFunctionalizer_   r`   ra   s     r   r   z!FunctionalizeInterpreter.__init__  sJ   € Ø�9Š9‰;Œ;�-Ô5Ò5Ð5Ý ØJ¸U¿YºY¹[¼[ÐJÐJñô ð ð ˆŒˆˆr   r	   c                ó*   — t          | j        ¦  «        S r   )r	   r`   r+   s    r   r   zFunctionalizeInterpreter._cptr  s   € õ ,¨D¬KÑ8Ô8Ð8r   r    r   r!   r"   r#   r$   c                óH   — |j         t          j                 } || g|¢R i |¤ŽS r   )re   r   r«   rf   s        r   r'   z FunctionalizeInterpreter.process  s2   € ØÔ#¥MÔ$?Ô@ˆØˆv�dÐ,˜TÐ,Ð,Ð, VÐ,Ð,Ð,r   r6   c                ó4   — | j                              ¦   «         S r   )r   ÚfunctionalizeAddBackViewsr+   s    r   Úfunctionalize_add_back_viewsz5FunctionalizeInterpreter.functionalize_add_back_views  s   € ØŒz×3Ò3Ñ5Ô5Ð5r   c                ó\   — |                       ¦   «         j        |                      ¦   «         fS r   )r1   rw   r/   r+   s    r   r4   z"FunctionalizeInterpreter.get_state  s   € Ø—’‘
”
” §¢¡¤Ð.Ð.r   Nrx   )r   r	   r?   r™   rB   )	rC   rD   rE   r   r   r   r'   r°   r4   r&   r   r   r©   r©     s„   € € € € € ðð ð ð ð ð9ð 9ð 9ñ „_ð9ð-ð -ð -ð -ð6ð 6ð 6ð 6ð/ð /ð /ð /ð /ð /r   r©   Úcinterpreterr   c                óF  — |                       ¦   «         }|t          j        k    rt          | ¦  «        S |t          j        k    rt          | ¦  «        S |t          j        k    rt          | ¦  «        S |t          j        k    rt          | ¦  «        S t          d|› �¦  «        ‚)Nz2NYI: PyDispatcher has not implemented support for )r1   r   r„   r‚   r^   r[   rŸ   r�   r«   r©   rt   )r²   r1   s     r   Úcoerce_cinterpreterr´     sš   € Ø
×
Ò
Ñ
Ô
€CØ
�mÔ Ò Ð Ý˜|Ñ,Ô,Ð,Ø
�mÔ Ò Ð Ý˜|Ñ,Ô,Ð,Ø
�mÔÒÐÝ˜lÑ+Ô+Ð+Ø
�mÔ)Ò)Ð)Ý'¨Ñ5Ô5Ð5Ý
ÐQÈCÐQÐQÑ
RÔ
RÐRr   c                 óˆ   — t           j        j                             ¦   «         } | €t	          d¦  «        ‚t          | ¦  «        S )Nzinterpreter must not be None)rK   rL   rM   rN   r_   r´   )Úinterpreters    r   Ú&retrieve_current_functorch_interpreterr·   *  s;   € Ý”(Ô%×<Ò<Ñ>Ô>€KØÐÝÐ;Ñ<Ô<Ð<Ý˜{Ñ+Ô+Ð+r   úlist[FuncTorchInterpreter]c                 óh   — t           j        j                             ¦   «         } | €g S d„ | D ¦   «         S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r&   )r´   )Ú.0Úcis     r   ú
<listcomp>z7retrieve_all_functorch_interpreters.<locals>.<listcomp>5  s!   € Ð2Ð2Ð2¨Õ Ñ#Ô#Ð2Ð2Ð2r   )rK   rL   rM   Úget_interpreter_stack)Úciss    r   Ú#retrieve_all_functorch_interpretersrÀ   1  s6   € Ý
Œ(Ô
×
3Ò
3Ñ
5Ô
5€CØ
€{Øˆ	Ø2Ð2¨cÐ2Ñ2Ô2Ð2r   Ústatesúlist[tuple[Any, ...]]r6   c                óJ  — t           j        j                             ¦   «         }|€t	          | ¦  «        dk    s|�t	          | ¦  «        dk    rdS t          ¦   «         }t	          |¦  «        t	          | ¦  «        k    o&t          d„ t          || ¦  «        D ¦   «         ¦  «        S )Nr   Fc              3  óF   K  — | ]\  }}|                      |¦  «        V — Œd S r   )r9   )r»   r¼   r5   s      r   ú	<genexpr>z*compare_functorch_state.<locals>.<genexpr>C  sC   è è € ð +ð +Ù"+ " eˆ�Š�uÑÔð+ð +ð +ð +ð +ð +r   )rK   rL   rM   rN   ÚlenrÀ   ÚallÚzip)rÁ   Úpeekr¿   s      r   Úcompare_functorch_staterÊ   8  s¥   € õ Œ8Ô×5Ò5Ñ7Ô7€DØˆ�˜V™œ¨Ò)Ð)¨tÐ/?ÅCÈÁKÄKÐSTÒDTÐDTØˆuå
-Ñ
/Ô
/€CÝˆs‰8Œ8•s˜6‘{”{Ò"ð ¥sð +ð +Ý/2°3¸Ñ/?Ô/?ð+ñ +ô +ñ (ô (ð r   r    r   r!   r"   r#   r$   c                ó¾   — t          ¦   «         }t          j        t          j        t          j        j        j        ||f¦  «        \  }}|                     | ||¦  «        S r   )	r·   r‰   rŠ   rK   r‹   rL   rM   Úunwrap_if_deadr'   )r    r!   r#   r¶   s       r   Údispatch_functorchrÍ   H  sT   € Ý8Ñ:Ô:€Kõ Ô'ÝŒ•e”hÔ)Ô8¸4À¸.ñô �L€Dˆ&ð ×Ò˜r 4¨Ñ0Ô0Ð0r   )r   rF   )r   rI   )rQ   rS   r   rF   )ry   r(   r   rz   )r²   r   r   r   )r   r   )r   r¸   )rÁ   rÂ   r   r6   r?   )-Ú
__future__r   r|   Úabcr   r   Ú	functoolsr   Útypingr   r   rK   Útorch.utils._pytreeÚutilsÚ_pytreer‰   Útorch._C._functorchr	   r
   r   r   r   r   r   r   r   Útorch.autograd.forward_adr   Úcollections.abcr   r   Úcontextmanagerr*   rR   rY   r[   r€   r‚   r�   r©   r´   r·   rÀ   rÊ   rÍ   r&   r   r   ú<module>rÙ      s!  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð <Ð ;Ð ;Ð ;Ð ;Ð ;ð ð *Ø)Ð)Ð)Ð)Ð)Ð)ðð@ð ð ð ð ˜3ñ ô ð ðD Ôð(ð (ð (ñ Ôð(ð Ôð2ð 2ð 2ñ Ôð2ð Ôð&ð &ð &ñ Ôð&ð$ Bð  Bð  Bð  Bð  BÐ*ñ  Bô  Bð  BðF Ôðð ð ñ Ôðð&Fð &Fð &Fð &Fð &FÐ*ñ &Fô &Fð &FðR&Jð &Jð &Jð &Jð &JÐ)ñ &Jô &Jð &JðR/ð /ð /ð /ð /Ð3ñ /ô /ð /ð0
Sð 
Sð 
Sð 
Sð,ð ,ð ,ð ,ð3ð 3ð 3ð 3ðð ð ð ð 
1ð 
1ð 
1ð 
1ð 
1ð 
1r   