Ë
    ùÿæinP  ã            &       ó8  — d Z ddlmZ ddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ddgZ G d	„ de«      Zd
de› de› de
› de› de› d�z   e_         dee   dee   dee   dee   dee   dee   dededededededededededdf"d „Zdee   dee   dee   dee   dee   dee   dededededededededededdf"d!„Z e	e¬"«      	 	 	 	 	 d%dee   dee   dee   dee   dee   dee   d#edz  dededededededededededdf$d$„«       Zy)&z)Implementation for the RMSprop algorithm.é    )ÚcastN)ÚTensoré   )Ú_capturable_docÚ_default_to_fused_or_foreachÚ_differentiable_docÚ_disable_dynamo_if_unsupportedÚ_foreach_docÚ!_get_capturable_supported_devicesÚ_get_scalar_dtypeÚ_maximize_docÚ_params_docÚ
_to_scalarÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚRMSpropÚrmspropc                   ó”   ‡ — e Zd Z	 	 	 	 	 	 	 	 	 	 ddedeez  dededededed	ed
edz  dededdfˆ fd„Zˆ fd„Zd„ Z	e
dd„«       Zˆ xZS )r   NÚparamsÚlrÚalphaÚepsÚweight_decayÚmomentumÚcenteredÚ
capturableÚforeachÚmaximizeÚdifferentiableÚreturnc                 óZ  •— t        |t        «      r|j                  «       dk7  rt        d«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚||||||||	|
|d	œ
}t        ‰| �  ||«       y )
Nr   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid epsilon value: zInvalid momentum value: zInvalid weight_decay value: zInvalid alpha value: )
r   r   r   r   r   r   r   r   r    r!   )Ú
isinstancer   ÚnumelÚ
ValueErrorÚsuperÚ__init__)Úselfr   r   r   r   r   r   r   r   r   r    r!   ÚdefaultsÚ	__class__s                €úh/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/optim/rmsprop.pyr(   zRMSprop.__init__   sâ   ø€ ô �bœ&Ô! b§h¡h£j°A¢oÜÐ:Ó;Ð;Ø�bŠyÜÐ6°r°dÐ;Ó<Ð<Ø�cŠzÜÐ6°s°eÐ<Ó=Ð=Ø�hŠÜÐ7¸°zÐBÓCÐCØ�lÒ"ÜÐ;¸L¸>ÐJÓKÐKØ�eŠ|ÜÐ4°U°GÐ<Ó=Ð=ð Ø ØØØ Ø(Ø$ØØ Ø,ñ
ˆô 	‰Ñ˜ Õ*ó    c                 ó|  •— t         ‰| �  |«       | j                  D �]  }|j                  dd«       |j                  dd«       |j                  dd «       |j                  dd«       |j                  dd«       |j                  dd«       |d	   D ]¥  }| j                  j                  |g «      }t        |«      dk7  sŒ.t        j                  |d
   «      rŒGt        |d
   «      }|d   r*t        j                  |t        «       |j                  ¬«      nt        j                  |t        «       ¬«      |d
<   Œ§ �Œ y )Nr   r   r   Fr   r    r!   r   r   Ústep©ÚdtypeÚdevice©r1   )r'   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r2   )r)   r7   ÚgroupÚpÚp_stateÚstep_valr+   s         €r,   r4   zRMSprop.__setstate__H   s  ø€ Ü‰Ñ˜UÔ#Ø×&Õ&ˆEØ×Ñ˜Z¨Ô+Ø×Ñ˜Z¨Ô/Ø×Ñ˜Y¨Ô-Ø×Ñ˜Z¨Ô/Ø×ÑÐ-¨uÔ5Ø×Ñ˜\¨5Ô1Ø˜8”_�ØŸ*™*Ÿ.™.¨¨BÓ/�Ü�w“< 1Ó$¬U¯_©_¸WÀV¹_Õ-MÜ$ W¨V¡_Ó5�Hð
 ! Ò.ô Ÿ™Ø$Ô,=Ó,?ÈÏÉõô #Ÿ\™\¨(Ô:KÓ:MÔNð ˜F’Oò	 %ñ 'r-   c                 óª  — d}|d   D �]Ç  }	|	j                   €Œ|t        j                  |	«      z  }|j                  |	«       |	j                   j                  rt        d«      ‚|j                  |	j                   «       | j                  |	   }
t        |
«      dk(  rÖ|d   r*t        j                  dt        «       |	j                  ¬«      nt        j                  dt        «       ¬«      |
d	<   t        j                  |	t        j                  ¬
«      |
d<   |d   dkD  r(t        j                  |	t        j                  ¬
«      |
d<   |d   r(t        j                  |	t        j                  ¬
«      |
d<   |j                  |
d   «       |j                  |
d	   «       |d   dkD  r|j                  |
d   «       |d   s�Œ´|j                  |
d   «       �ŒÊ |S )NFr   z)RMSprop does not support sparse gradientsr   r   © r0   r3   r/   )Úmemory_formatÚ
square_avgr   Úmomentum_bufferr   Úgrad_avg)Úgradr:   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr7   r9   Úzerosr   r2   Ú
zeros_likeÚpreserve_format)r)   r>   Úparams_with_gradÚgradsÚsquare_avgsÚmomentum_buffer_listÚ	grad_avgsÚstate_stepsÚhas_complexr?   r7   s              r,   Ú_init_groupzRMSprop._init_group]   s±  € ð ˆØ�x•ˆAØ�v‰vˆ~ØØœ5×+Ñ+¨AÓ.Ñ.ˆKØ×#Ñ# AÔ&à�v‰v×ÒÜ"Ð#NÓOÐOØ�L‰L˜Ÿ™Ô à—J‘J˜q‘MˆEô �5‹z˜QŠð ˜\Ò*ô —K‘K Ô*;Ó*=ÀaÇhÁhÕOäŸ™ RÔ/@Ó/BÔCð �f‘ô
 ',×&6Ñ&6Ø¤U×%:Ñ%:ô'��lÑ#ð ˜Ñ$ qÒ(Ü/4×/?Ñ/?Ø¬×)>Ñ)>ô0�EÐ+Ñ,ð ˜Ò$Ü(-×(8Ñ(8Ø¬×)>Ñ)>ô)�E˜*Ñ%ð ×Ñ˜u \Ñ2Ô3Ø×Ñ˜u V™}Ô-à�ZÑ  1Ò$Ø$×+Ñ+¨EÐ2CÑ,DÔEØ�ZÔ Ø× Ñ   zÑ!2Ö3ðI !ðL Ðr-   c                 ój  — | j                  «        d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]_  }g }g }g }g }g }g }	| j	                  |||||||	«      }
t        ||||||	|d   |d   |d   |d   |d   |d   |d   |d	   |d
   |d   |
¬«       Œa |S # 1 sw Y   ŒyxY w)z°Perform a single optimization step.

        Args:
            closure (Callable, optional): A closure that reevaluates the model
                and returns the loss.
        Nr   r   r   r   r   r   r   r    r!   r   )r   r   r   r   r   r   r   r    r!   r   rV   )Ú'_accelerator_graph_capture_health_checkr:   Úenable_gradr5   rW   r   )r)   ÚclosureÚlossr>   rP   rQ   rR   rT   rS   rU   rV   s              r,   r/   zRMSprop.step�   s	  € ð 	×4Ñ4Ô6àˆØÐÜ×"Ñ"Õ$Ù“y�÷ %ð ×&Ô&ˆEØ-/ÐØ"$ˆEØ(*ˆKØ&(ˆIØ13Ð Ø(*ˆKà×*Ñ*ØØ ØØØ$ØØóˆKô Ø ØØØØ$ØØ˜‘;Ø˜G‘nØ˜%‘LØ" >Ñ2Ø˜zÑ*Ø˜zÑ*Ø˜iÑ(Ø˜zÑ*Ø$Ð%5Ñ6Ø  Ñ.Ø'ö#ð% 'ðL ˆ÷S %Ð$ús   ©B)Â)B2)
g{®Gáz„?g®Gáz®ï?g:Œ0âŽyE>r   r   FFNFF©N)Ú__name__Ú
__module__Ú__qualname__r   r<   r   Úboolr(   r4   rW   r   r/   Ú__classcell__)r+   s   @r,   r   r      sÆ   ø„ ð "ØØØØØØ Ø#ØØ$ñ'+àð'+ð �F‰Nð'+ð ð	'+ð
 ð'+ð ð'+ð ð'+ð ð'+ð ð'+ð ˜‘ð'+ð ð'+ð ð'+ð 
õ'+ôRò*1ðf "ò4ó "ô4r-   aj  Implements RMSprop algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \alpha \text{ (alpha)}, \: \gamma \text{ (lr)},
                \: \theta_0 \text{ (params)}, \: f(\theta) \text{ (objective)}                   \\
            &\hspace{13mm}   \lambda \text{ (weight decay)},\: \mu \text{ (momentum)},
                \: centered, \: \epsilon \text{ (epsilon)}                                       \\
            &\textbf{initialize} : v_0 \leftarrow 0 \text{ (square average)}, \:
                \textbf{b}_0 \leftarrow 0 \text{ (buffer)}, \: g^{ave}_0 \leftarrow 0     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm}if \: \lambda \neq 0                                                    \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda  \theta_{t-1}                            \\
            &\hspace{5mm}v_t           \leftarrow   \alpha v_{t-1} + (1 - \alpha) g^2_t
                \hspace{8mm}                                                                     \\
            &\hspace{5mm} \tilde{v_t} \leftarrow v_t                                             \\
            &\hspace{5mm}if \: centered                                                          \\
            &\hspace{10mm} g^{ave}_t \leftarrow g^{ave}_{t-1} \alpha + (1-\alpha) g_t            \\
            &\hspace{10mm} \tilde{v_t} \leftarrow \tilde{v_t} -  \big(g^{ave}_{t} \big)^2        \\
            &\hspace{5mm}if \: \mu > 0                                                           \\
            &\hspace{10mm} \textbf{b}_t\leftarrow \mu \textbf{b}_{t-1} +
                g_t/ \big(\sqrt{\tilde{v_t}} +  \epsilon \big)                                   \\
            &\hspace{10mm} \theta_t \leftarrow \theta_{t-1} - \gamma \textbf{b}_t                \\
            &\hspace{5mm} else                                                                   \\
            &\hspace{10mm}\theta_t      \leftarrow   \theta_{t-1} -
                \gamma  g_t/ \big(\sqrt{\tilde{v_t}} + \epsilon \big)  \hspace{3mm}              \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    For further details regarding the algorithm we refer to
    `lecture notes <https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf>`_ by G. Hinton.
    and centered version `Generating Sequences
    With Recurrent Neural Networks <https://arxiv.org/pdf/1308.0850v5.pdf>`_.
    The implementation here takes the square root of the gradient average before
    adding epsilon (note that TensorFlow interchanges these two operations). The effective
    learning rate is thus :math:`\gamma/(\sqrt{v} + \epsilon)` where :math:`\gamma`
    is the scheduled learning rate and :math:`v` is the weighted moving average
    of the squared gradient.
    z
    Args:
        a0  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        alpha (float, optional): smoothing constant (default: 0.99)
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-8)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        momentum (float, optional): momentum factor (default: 0)
        centered (bool, optional) : if ``True``, compute the centered RMSProp,
            the gradient is normalized by an estimation of its variance
        z	
        z

    r   rQ   rR   rT   rS   rU   r   r   r   r   r   r   r    r!   r   rV   r"   c       
         óÊ  — t         j                  j                  «       st        |«      }t	        | «      D �]+  \  }}||   }t         j
                  j                  «       s`|r^t        «       }|j                  j                  |j                  j                  k(  r|j                  j                  |v st        d|› d�«      ‚||   }|s|n| }||   }|dz  }|	dk7  r|j                  ||	¬«      }t        j                  |«      }|r?t        j                  |«      }t        j                  |«      }t        j                  |«      }|j                  |«      j                  ||d|z
  ¬«       |rT||   }|rt        j                  |«      }|j!                  |d|z
  «       |j#                  ||d¬«      j%                  «       }n|j'                  «       }|r|j                  |«      }n|j)                  |«      }|
dkD  rS||   }|rt        j                  |«      }|j                  |
«      j+                  ||«       |j)                  || ¬«       �Œ|j+                  ||| ¬«       �Œ. y )NúIIf capturable=True, params and state_steps must be on supported devices: Ú.r   r   ©r   ©Úvalueéÿÿÿÿ)r:   ÚjitÚis_scriptingr   Ú	enumerateÚcompilerÚis_compilingr   r2   ÚtypeÚAssertionErrorÚaddrI   Úview_as_realÚmul_Úaddcmul_Úlerp_ÚaddcmulÚsqrt_ÚsqrtÚadd_Úaddcdiv_)r   rQ   rR   rT   rS   rU   r   r   r   r   r   r   r    r!   r   rV   ÚiÚparamr/   Úcapturable_supported_devicesrH   rE   Úis_complex_paramrG   ÚavgÚbufs                             r,   Ú_single_tensor_rmspropr�   	  s'  € ô& �9‰9×!Ñ!Ô#Ü˜‹^ˆä˜f×%‰ˆˆ5Ø˜1‰~ˆô �~‰~×*Ñ*Ô,±Ü+LÓ+NÐ(à—‘×!Ñ! T§[¡[×%5Ñ%5Ò5Ø—L‘L×%Ñ%Ð)EÑEä$Ø_Ð`|Ð_}Ð}~Ðóð ð �Q‰xˆÙ#‰t¨$¨ˆØ  ‘^ˆ
à�‰	ˆà˜1ÒØ—8‘8˜E¨�8Ó6ˆDä ×+Ñ+¨EÓ2ÐÙÜ×&Ñ& uÓ-ˆEÜ×%Ñ% dÓ+ˆDÜ×+Ñ+¨JÓ7ˆJà�‰˜Ó×'Ñ'¨¨d¸!¸e¹)Ð'ÔDáØ  ‘|ˆHÙÜ ×-Ñ-¨hÓ7�Ø�N‰N˜4  U¡Ô+Ø×$Ñ$ X¨x¸rÐ$ÓB×HÑHÓJ‰Cà—/‘/Ó#ˆCáØ—'‘'˜#“,‰Cà—(‘(˜3“-ˆCà�aŠ<Ø& qÑ)ˆCÙÜ×(Ñ(¨Ó-�Ø�H‰H�XÓ×'Ñ'¨¨cÔ2Ø�J‰J�s 2 #ˆJÖ&à�N‰N˜4 ¨R¨CˆNÖ0ñi &r-   c       
         ó\  ‡!— t        | «      dk(  ry |rt        d«      ‚t        j                  j	                  «       s;|r9t        «       Š!t        ˆ!fd„t        | |d¬«      D «       «      st        d‰!› d�«      ‚t        |«      }t        j                  | |||||g«      }|j                  «       D �]|  \  \  }}}}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }|rg||g}|
dkD  r(t        t        t           |«      }|j                  |«       |r(t        t        t           |«      }|j                  |«       t!        |g|¢­Ž  |rt        j"                  |«      }t        j                  j	                  «       s=|d   j$                  r.t        j&                  |t        j(                  dd	¬
«      d¬«       nt        j&                  |d«       |	dk7  r3|rt        j&                  |||	¬«       nt        j*                  |||	¬«      }t        j,                  ||«       t        j.                  |||d|z
  ¬«       |rvt        t        t           |«      }t        j0                  ||d|z
  «       t        j2                  |||d¬«      }t        j4                  |«       t        j&                  ||«       n+t        j6                  |«      }t        j&                  ||«       |
dkD  rªt        t        t           |«      }t        j,                  ||
«       t        j8                  |||«       |rIt;        |t        j                  «      r/t        j<                  || «      } t        j&                  || «       �Œüt        j&                  ||| ¬«       �Œ|rJt;        |t        j                  «      r0t        j>                  || «       t        j8                  |||«       �Œct        j8                  |||| ¬«       �Œ y )Nr   z#_foreach ops don't support autogradc              3   ó²   •K  — | ]N  \  }}|j                   j                  |j                   j                  k(  xr |j                   j                  ‰v –— ŒP y ­wr]   )r2   ro   )Ú.0r?   r/   r}   s      €r,   Ú	<genexpr>z(_multi_tensor_rmsprop.<locals>.<genexpr>r  sR   øè ø€ ð 
ñ A‘��4ð �H‰H�M‰M˜TŸ[™[×-Ñ-Ñ-ò >Ø—‘—‘Ð!=Ð=ó>á@ùs   ƒAAT)Ústrictrd   re   g      ð?Úcpu)r2   rf   r   rg   ri   ) r9   rp   r:   rm   rn   r   ÚallÚzipr   r   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   Úlistr   rJ   r   Ú_foreach_negÚis_cpuÚ_foreach_add_r=   Ú_foreach_addÚ_foreach_mul_Ú_foreach_addcmul_Ú_foreach_lerp_Ú_foreach_addcmulÚ_foreach_sqrt_Ú_foreach_sqrtÚ_foreach_addcdiv_r$   Ú_foreach_mulÚ_foreach_div_)"r   rQ   rR   rT   rS   rU   r   r   r   r   r   r   r    r!   r   rV   Úgrouped_tensorsÚgrouped_params_Úgrouped_grads_Úgrouped_square_avgs_Úgrouped_grad_avgs_Úgrouped_momentum_buffer_list_Úgrouped_state_steps_Ú_Úgrouped_paramsÚgrouped_gradsÚgrouped_square_avgsÚgrouped_state_stepsÚstate_and_gradsÚgrouped_momentum_buffer_listÚgrouped_grad_avgsr   Úmomentum_lrr}   s"                                    @r,   Ú_multi_tensor_rmsproprª   V  sÁ  ø€ ô& ˆ6ƒ{�aÒØáÜÐBÓCÐCô �>‰>×&Ñ&Ô(©ZÜ'HÓ'JÐ$Üó 
ô ˜v {¸4Õ@ó
ô 
ô
 !Ø[Ð\xÐ[yÐyzÐ{óð ô 
�B‹€Bä×BÑBØ	�˜ YÐ0DÀkÐRó€Oð ×"Ñ"×$ñ			ñ	
ØØØ ØØ)Ø àÜœd¤6™l¨OÓ<ˆÜœT¤&™\¨>Ó:ˆÜ"¤4¬¡<Ð1EÓFÐÜ"¤4¬¡<Ð1EÓFÐáØ,Ð.AÐBˆOØ˜!Š|Ü/3Üœ‘LÐ"?ó0Ð,ð  ×&Ñ&Ð'CÔDÙÜ$(¬¬f©Ð7IÓ$JÐ!Ø×&Ñ&Ð'8Ô9Ü˜.Ð;¨?Ó;áÜ!×.Ñ.¨}Ó=ˆMô �~‰~×*Ñ*Ô,Ð1DÀQÑ1G×1NÒ1NÜ×ÑØ#¤U§\¡\°#¸eÔ%DÈCöô ×ÑÐ 3°QÔ7à˜1ÒáÜ×#Ñ# M°>ÈÖVä %× 2Ñ 2Ø! >¸ô!�ô 	×ÑÐ/°Ô7Ü×ÑØ °ÀQÈÁYõ	
ñ Ü $¤T¬&¡\Ð3EÓ FÐÜ× Ñ Ð!2°MÀ1ÀuÁ9ÔMÜ×(Ñ(Ø#Ð%6Ð8IÐQSôˆCô × Ñ  Ô%Ü×Ñ  SÕ)ä×%Ñ%Ð&9Ó:ˆCÜ×Ñ  SÔ)à�aŠ<Ü+/Ü”V‘Ð;ó,Ð(ô ×ÑÐ <¸hÔGÜ×#Ñ#Ð$@À-ÐQTÔUñ œj¨¬U¯\©\Ô:Ü#×0Ñ0Ð1MÐPRÈsÓS�Ü×#Ñ# N°KÖ@ä×#Ñ#Ø"Ð$@ÈÈ÷ñ œj¨¬U¯\©\Ô:Ü×#Ñ# C¨"¨Ô-Ü×'Ñ'¨¸ÀsÖKä×'Ñ'¨¸ÀsÐSUÐRU×Vña %r-   )Úsingle_tensor_fnr   c                ó€  — t         j                  j                  «       st        d„ |D «       «      st	        d«      ‚|€t        | |d¬«      \  }}|r)t         j                  j                  «       rt	        d«      ‚|r%t         j                  j                  «       st        }nt        } || |||||||||||||	||
¬«       y)ztFunctional API that performs rmsprop algorithm computation.

    See :class:`~torch.optim.RMSProp` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr]   )r$   r:   r   )r„   Úts     r,   r…   zrmsprop.<locals>.<genexpr>ù  s   è ø€ ð 5Ù-8¨Œ
�1”e—l‘l×#©[ùs   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizers)
r   r   r   r   r   r   r    r   r!   rV   )
r:   rm   rn   rˆ   rL   r   rj   rk   rª   r�   )r   rQ   rR   rT   rS   rU   r   r    r!   r   rV   r   r   r   r   r   r   r¡   Úfuncs                      r,   r   r   Ü  sÊ   € ô: �>‰>×&Ñ&Ô(´ñ 5Ù-8ó5ô 2ô Ø^ó
ð 	
ð €Ü1Ø�N¨eô
‰
ˆˆ7ñ ”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTá”u—y‘y×-Ñ-Ô/Ü$‰ä%ˆáØØØØØØØØØØ!ØØØØØ%Øö!r-   )NFFFF)Ú__doc__Útypingr   r:   r   Ú	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ú__all__r   rŒ   r<   ra   r�   rª   r   rC   r-   r,   Ú<module>rµ      s^  ðá 0å ã Ý ÷÷ ÷ ÷ ð$ �iÐ
 €ôgˆiô gðV+ðX	à	ˆð 		ð 
Ðð 	Ø	ˆð 	Ø	ˆð 	Ø	Ðð ðñY<ð „ðBJ1Ø�‰LðJ1à�‰<ðJ1ð �f‘ðJ1ð �F‰|ð	J1ð
 ˜v™,ðJ1ð �f‘ðJ1ð 	ðJ1ð ðJ1ð 
ðJ1ð ðJ1ð ðJ1ð ðJ1ð ðJ1ð ðJ1ð  ð!J1ð" ð#J1ð$ 
ó%J1ðZCWØ�‰LðCWà�‰<ðCWð �f‘ðCWð �F‰|ð	CWð
 ˜v™,ðCWð �f‘ðCWð 	ðCWð ðCWð 
ðCWð ðCWð ðCWð ðCWð ðCWð ðCWð  ð!CWð" ð#CWð$ 
ó%CWñL  Ð1GÔHð  ØØ ØØñAØ�‰LðAà�‰<ðAð �f‘ðAð �F‰|ð	Að
 ˜v™,ðAð �f‘ðAð �D‰[ðAð ðAð ðAð ðAð ðAð 	ðAð  ð!Að" 
ð#Að$ ð%Að& ð'Að( ð)Að* 
ò+Aó IñAr-   