Ë
    îÍ:j53  ã                   óò  — d dl Z d dlZ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
 ddlmZ  e
j                  e«      Z ed«       G d	„ d
ej                   «      «       Z ed«       G d„ dej                   «      «       Z ed«       G d„ dej                   «      «       Z ed«       G d„ dej                   «      «       Z ed«       G d„ dej                   «      «       Z ed«       G d„ dej                   «      «       Z G d„ dej                   «      Z G d„ dej                   «      Z G d„ dej                   «      Z G d „ d!ej                   «      Z G d"„ d#ej                   «      Z G d$„ d%ej                   «      Z G d&„ d'e«      Z G d(„ d)ej                   «      Zi d*e“d+ed,d-d.œf“d/e“d0e“d1ed2d3if“d4e“d5ed6d3if“d7e“d8e“d9ej>                  “d:e“d;e“d<e“d=ej@                  “d>e“d?ejB                  “d@ejD                  “eejF                  ejH                  ejJ                  edAœ¥Z& ee&«      Z'dB„ Z( e(d1«      Z) e(d0«      Z* e(d*«      Z+ e(d/«      Z, e(d<«      Z- e(dC«      Z. e(d;«      Z/ e(d:«      Z0y)Dé    N)ÚOrderedDict)ÚTensorÚnné   )Úuse_kernel_forward_from_hub)Úlogging)Úis_torchdynamo_compilingÚGeluTanhc                   óJ   ‡ — e Zd ZdZddefˆ fd„Zdedefd„Zdedefd„Zˆ xZ	S )	ÚGELUTanha&  
    A fast C implementation of the tanh approximation of the GeLU activation function. See
    https://huggingface.co/papers/1606.08415.

    This implementation is equivalent to NewGELU and FastGELU but much faster. However, it is not an exact numerical
    match due to rounding errors.
    Úuse_gelu_tanh_pythonc                 ó²   •— t         ‰| �  «        |r| j                  | _        y t	        j
                  t        j                  j                  d¬«      | _        y )NÚtanh)Úapproximate)	ÚsuperÚ__init__Ú_gelu_tanh_pythonÚactÚ	functoolsÚpartialr   Ú
functionalÚgelu)Úselfr   Ú	__class__s     €úm/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/transformers/activations.pyr   zGELUTanh.__init__(   s<   ø€ Ü‰ÑÔÙØ×-Ñ-ˆD�Hä ×(Ñ(¬¯©×);Ñ);ÈÔPˆD�Hó    ÚinputÚreturnc                 óÀ   — |dz  dt        j                  t        j                  dt        j                  z  «      |dt        j
                  |d«      z  z   z  «      z   z  S ©Nç      à?ç      ð?ç       @ç÷Hmâä¦?g      @©Útorchr   ÚmathÚsqrtÚpiÚpow©r   r   s     r   r   zGELUTanh._gelu_tanh_python/   sP   € Ø�s‰{˜c¤E§J¡J¬t¯y©y¸¼t¿w¹w¹Ó/GÈ5ÐS[Ô^c×^gÑ^gÐhmÐorÓ^sÑSsÑKsÑ/tÓ$uÑuÑvÐvr   c                 ó$   — | j                  |«      S ©N©r   r+   s     r   ÚforwardzGELUTanh.forward2   ó   € Ø�x‰x˜‹Ðr   ©F)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úboolr   r   r   r/   Ú__classcell__©r   s   @r   r   r      s?   ø„ ññQ¨Tõ Qðw vð w°&ó wð˜Vð ¨÷ r   r   ÚNewGELUc                   ó    — e Zd ZdZdedefd„Zy)ÚNewGELUActivationzÎ
    Implementation of the GELU activation function currently in Google BERT repo (identical to OpenAI GPT). Also see
    the Gaussian Error Linear Units paper: https://huggingface.co/papers/1606.08415
    r   r   c                 óÀ   — d|z  dt        j                  t        j                  dt        j                  z  «      |dt        j
                  |d«      z  z   z  «      z   z  S r    r%   r+   s     r   r/   zNewGELUActivation.forward=   sP   € Ø�U‰{˜c¤E§J¡J¬t¯y©y¸¼t¿w¹w¹Ó/GÈ5ÐS[Ô^c×^gÑ^gÐhmÐorÓ^sÑSsÑKsÑ/tÓ$uÑuÑvÐvr   N©r2   r3   r4   r5   r   r/   © r   r   r;   r;   6   s   „ ñð
w˜Vð w¨ô wr   r;   ÚGeLUc                   óJ   ‡ — e Zd ZdZddefˆ fd„Zdedefd„Zdedefd„Zˆ xZ	S )	ÚGELUActivationa³  
    Original Implementation of the GELU activation function in Google BERT repo when initially created. For
    information: OpenAI GPT's GELU is slightly different (and gives slightly different results): 0.5 * x * (1 +
    torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3)))) This is now written in C in nn.functional
    Also see the Gaussian Error Linear Units paper: https://huggingface.co/papers/1606.08415
    Úuse_gelu_pythonc                 óˆ   •— t         ‰| �  «        |r| j                  | _        y t        j
                  j                  | _        y r-   )r   r   Ú_gelu_pythonr   r   r   r   )r   rB   r   s     €r   r   zGELUActivation.__init__J   s/   ø€ Ü‰ÑÔÙØ×(Ñ(ˆD�Hä—}‘}×)Ñ)ˆD�Hr   r   r   c                 ój   — |dz  dt        j                  |t        j                  d«      z  «      z   z  S )Nr!   r"   r#   )r&   Úerfr'   r(   r+   s     r   rD   zGELUActivation._gelu_pythonQ   s,   € Ø�s‰{˜c¤E§I¡I¨e´d·i±iÀ³nÑ.DÓ$EÑEÑFÐFr   c                 ó$   — | j                  |«      S r-   r.   r+   s     r   r/   zGELUActivation.forwardT   r0   r   r1   )
r2   r3   r4   r5   r6   r   r   rD   r/   r7   r8   s   @r   rA   rA   A   s=   ø„ ññ*¨õ *ðG &ð G¨Vó Gð˜Vð ¨÷ r   rA   ÚSiLUc                   ó    — e Zd ZdZdedefd„Zy)ÚSiLUActivationaè  
    See Gaussian Error Linear Units (Hendrycks et al., https://arxiv.org/abs/1606.08415) where the SiLU (Sigmoid Linear
    Unit) was originally introduced and coined, and see Sigmoid-Weighted Linear Units for Neural Network Function
    Approximation in Reinforcement Learning (Elfwing et al., https://arxiv.org/abs/1702.03118) and Swish: a Self-Gated
    Activation Function (Ramachandran et al., https://arxiv.org/abs/1710.05941v1) where the SiLU was experimented with
    later.
    r   r   c                 ó@   — t         j                  j                  |«      S r-   )r   r   Úsilur+   s     r   r/   zSiLUActivation.forwardb   s   € Ü�}‰}×!Ñ! %Ó(Ð(r   Nr=   r>   r   r   rJ   rJ   X   s   „ ñð)˜Vð )¨ô )r   rJ   ÚFastGELUc                   ó    — e Zd ZdZdedefd„Zy)ÚFastGELUActivationz}
    Applies GELU approximation that is slower than QuickGELU but more accurate. See: https://github.com/hendrycks/GELUs
    r   r   c                 ó\   — d|z  dt        j                  |dz  dd|z  |z  z   z  «      z   z  S )Nr!   r"   g€ÑÓ3Eˆé?r$   )r&   r   r+   s     r   r/   zFastGELUActivation.forwardl   s:   € Ø�U‰{˜c¤E§J¡J¨u°|Ñ/CÀsÈXÐX]ÑM]Ð`eÑMeÑGeÑ/fÓ$gÑgÑhÐhr   Nr=   r>   r   r   rO   rO   f   s   „ ñði˜Vð i¨ô ir   rO   Ú	QuickGELUc                   ó    — e Zd ZdZdedefd„Zy)ÚQuickGELUActivationzr
    Applies GELU approximation that is fast but somewhat inaccurate. See: https://github.com/hendrycks/GELUs
    r   r   c                 ó8   — |t        j                  d|z  «      z  S )Ng¬Zd;û?)r&   Úsigmoidr+   s     r   r/   zQuickGELUActivation.forwardv   s   € Ø”u—}‘} U¨U¡]Ó3Ñ3Ð3r   Nr=   r>   r   r   rS   rS   p   s   „ ñð4˜Vð 4¨ô 4r   rS   c                   ó<   ‡ — e Zd ZdZdedefˆ fd„Zdedefd„Zˆ xZS )ÚClippedGELUActivationa’  
    Clip the range of possible GeLU outputs between [min, max]. This is especially useful for quantization purpose, as
    it allows mapping negatives values in the GeLU spectrum. For more information on this trick, please refer to
    https://huggingface.co/papers/2004.09602.

    Gaussian Error Linear Unit. Original Implementation of the gelu activation function in Google Bert repo when
    initially created.

    For information: OpenAI GPT's gelu is slightly different (and gives slightly different results): 0.5 * x * (1 +
    torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3)))). See https://huggingface.co/papers/1606.08415
    ÚminÚmaxc                 ól   •— ||kD  rt        d|› d|› d�«      ‚t        ‰| �	  «        || _        || _        y )Nzmin should be < max (got min: z, max: ú))Ú
ValueErrorr   r   rX   rY   )r   rX   rY   r   s      €r   r   zClippedGELUActivation.__init__‡   s>   ø€ Ø�Š9ÜÐ=¸c¸UÀ'È#ÈÈaÐPÓQÐQä‰ÑÔØˆŒØˆ�r   Úxr   c                 ój   — t        j                  t        |«      | j                  | j                  «      S r-   )r&   Úclipr   rX   rY   )r   r]   s     r   r/   zClippedGELUActivation.forward�   s!   € Ü�z‰zœ$˜q›' 4§8¡8¨T¯X©XÓ6Ð6r   )	r2   r3   r4   r5   Úfloatr   r   r/   r7   r8   s   @r   rW   rW   z   s.   ø„ ñ
ð˜Eð ¨õ ð7˜ð 7 F÷ 7r   rW   c                   ó2   ‡ — e Zd ZdZˆ fd„Zdedefd„Zˆ xZS )ÚAccurateGELUActivationzÙ
    Applies GELU approximation that is faster than default and more accurate than QuickGELU. See:
    https://github.com/hendrycks/GELUs

    Implemented along with MEGA (Moving Average Equipped Gated Attention)
    c                 óx   •— t         ‰| �  «        t        j                  dt        j                  z  «      | _        y )Né   )r   r   r'   r(   r)   Úprecomputed_constant©r   r   s    €r   r   zAccurateGELUActivation.__init__›   s'   ø€ Ü‰ÑÔÜ$(§I¡I¨a´$·'±'©kÓ$:ˆÕ!r   r   r   c                 óŒ   — d|z  dt        j                  | j                  |dt        j                  |d«      z  z   z  «      z   z  S )Nr!   r   r$   é   )r&   r   re   r*   r+   s     r   r/   zAccurateGELUActivation.forwardŸ   sE   € Ø�U‰{˜a¤%§*¡*¨T×-FÑ-FÈ%ÐRZÔ]b×]fÑ]fÐglÐnoÓ]pÑRpÑJpÑ-qÓ"rÑrÑsÐsr   )r2   r3   r4   r5   r   r   r/   r7   r8   s   @r   rb   rb   “   s#   ø„ ñô;ðt˜Vð t¨÷ tr   rb   c                   óB   ‡ — e Zd ZdZˆ fd„Zdedefd„Zdedefd„Zˆ xZS )ÚMishActivationzÙ
    See Mish: A Self-Regularized Non-Monotonic Activation Function (Misra., https://huggingface.co/papers/1908.08681). Also
    visit the official repository for the paper: https://github.com/digantamisra98/Mish
    c                 ó`   •— t         ‰| �  «        t        j                  j                  | _        y r-   )r   r   r   r   Úmishr   rf   s    €r   r   zMishActivation.__init__©   s   ø€ Ü‰ÑÔÜ—=‘=×%Ñ%ˆ�r   r   r   c                 ól   — |t        j                  t        j                  j	                  |«      «      z  S r-   )r&   r   r   r   Úsoftplusr+   s     r   Ú_mish_pythonzMishActivation._mish_python­   s%   € Ø”u—z‘z¤"§-¡-×"8Ñ"8¸Ó"?Ó@Ñ@Ð@r   c                 ó$   — | j                  |«      S r-   r.   r+   s     r   r/   zMishActivation.forward°   r0   r   )	r2   r3   r4   r5   r   r   ro   r/   r7   r8   s   @r   rj   rj   £   s6   ø„ ñô
&ðA &ð A¨Vó Að˜Vð ¨÷ r   rj   c                   ó    — e Zd ZdZdedefd„Zy)ÚLinearActivationz[
    Applies the linear activation function, i.e. forwarding input directly to output.
    r   r   c                 ó   — |S r-   r>   r+   s     r   r/   zLinearActivation.forward¹   s   € Øˆr   Nr=   r>   r   r   rr   rr   ´   s   „ ñð˜Vð ¨ô r   rr   c                   ó   — e Zd ZdZdd„Zy)ÚLaplaceActivationzû
    Applies elementwise activation based on Laplace function, introduced in MEGA as an attention activation. See
    https://huggingface.co/papers/2209.10655

    Inspired by squared relu, but with bounded range and gradient for better stability
    c                 óŒ   — ||z
  j                  |t        j                  d«      z  «      }ddt        j                  |«      z   z  S )Nr#   r!   r"   )Údivr'   r(   r&   rF   )r   r   ÚmuÚsigmas       r   r/   zLaplaceActivation.forwardÅ   s<   € Ø˜‘× Ñ  ¬¯©°3«Ñ!7Ó8ˆØ�cœEŸI™I eÓ,Ñ,Ñ-Ð-r   N)g»¹øÛž æ?g ^×/ØÒ?©r2   r3   r4   r5   r/   r>   r   r   ru   ru   ½   s   „ ñô.r   ru   c                   ó   — e Zd ZdZd„ Zy)ÚReLUSquaredActivationz`
    Applies the relu^2 activation introduced in https://huggingface.co/papers/2109.08668v2
    c                 ón   — t         j                  j                  |«      }t        j                  |«      }|S r-   )r   r   Úrelur&   Úsquare)r   r   Úrelu_appliedÚsquareds       r   r/   zReLUSquaredActivation.forwardÏ   s)   € Ü—}‘}×)Ñ)¨%Ó0ˆÜ—,‘,˜|Ó,ˆØˆr   Nrz   r>   r   r   r|   r|   Ê   s   „ ñór   r|   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚClassInstantierc                 ód   •— t         ‰| �  |«      }t        |t        «      r|n|i f\  }} |di |¤ŽS )Nr>   )r   Ú__getitem__Ú
isinstanceÚtuple)r   ÚkeyÚcontentÚclsÚkwargsr   s        €r   r…   zClassInstantier.__getitem__Ö   s6   ø€ Ü‘'Ñ% cÓ*ˆÜ!+¨G´UÔ!;‘gÀ'È2À‰ˆˆVÙ‰}�V‰}Ðr   )r2   r3   r4   r…   r7   r8   s   @r   rƒ   rƒ   Õ   s   ø„ ÷ð r   rƒ   c                   ót   ‡ — e Zd ZdZddddej
                  dfˆ fd„	Zdedefd	„Zdedefd
„Z	dedefd„Z
ˆ xZS )ÚXIELUActivationzî
    Applies the xIELU activation function introduced in https://arxiv.org/abs/2411.13010

    If the user has installed the nickjbrowning/XIELU wheel, we import xIELU CUDA
    Otherwise, we emit a single warning and use xIELU Python
    gš™™™™™é?r!   g�íµ ÷Æ°¾Fc           
      óZ  •— t         ‰| �  «        t        j                  t	        j
                  t	        j                  t	        j                  ||¬«      «      «      j                  d«      «      | _	        t        j                  t	        j
                  t	        j                  t	        j                  ||z
  |¬«      «      «      j                  d«      «      | _
        | j                  dt	        j                  ||¬«      «       | j                  dt	        j                  ||¬«      «       || _        t        | j                  j                  «       j!                  «       j                  «       j#                  «       «      | _        t        | j&                  j                  «       j!                  «       j                  «       j#                  «       «      | _        d | _        	 dd l}t        j.                  j0                  j3                  «       | _        d}	 ddlm}	  |	| j8                  «      | _        |dz  }t>        jA                  |«       y # t<        $ r$}
|d|
› d	�z  }| j8                  | _        Y d }
~
Œ>d }
~
ww xY w# t<        $ r)}
t>        jA                  d
tC        |
«      «       Y d }
~
y d }
~
ww xY w)N)Údtyper   ÚbetaÚepszUsing experimental xIELU CUDA.)Úallow_in_graphz& Enabled torch._dynamo for xIELU CUDA.z+ Could not enable torch._dynamo for xIELU (z*) - this may result in slower performance.u¡   CUDA-fused xIELU not available (%s) â€“ falling back to a Python version.
For CUDA xIELU (experimental), `pip install git+https://github.com/nickjbrowning/XIELU`)"r   r   r   Ú	Parameterr&   ÚlogÚexpm1ÚtensorÚ	unsqueezeÚalpha_pÚalpha_nÚregister_bufferÚwith_vector_loadsr`   r�   ÚdetachÚcpuÚitemÚ_beta_scalarr‘   Ú_eps_scalarÚ_xielu_cuda_objÚ	xielu.opsÚclassesÚxieluÚXIELUÚtorch._dynamor’   Ú_xielu_cudaÚ_xielu_cuda_fnÚ	ExceptionÚloggerÚwarning_onceÚstr)r   Úalpha_p_initÚalpha_n_initr�   r‘   r�   r›   r¤   Úmsgr’   Úerrr   s              €r   r   zXIELUActivation.__init__ä   s  ø€ ô 	‰ÑÔÜ—|‘|¤E§I¡I¬e¯k©k¼%¿,¹,À|Ð[`Ô:aÓ.bÓ$c×$mÑ$mÐnoÓ$pÓqˆŒÜ—|‘|Ü�I‰I”e—k‘k¤%§,¡,¨|¸dÑ/BÈ%Ô"PÓQÓR×\Ñ\Ð]^Ó_ó
ˆŒð 	×Ñ˜V¤U§\¡\°$¸eÔ%DÔEØ×Ñ˜U¤E§L¡L°¸EÔ$BÔCØ!2ˆÔä! $§)¡)×"2Ñ"2Ó"4×"8Ñ"8Ó":×"@Ñ"@Ó"B×"GÑ"GÓ"IÓJˆÔÜ  §¡§¡Ó!2×!6Ñ!6Ó!8×!>Ñ!>Ó!@×!EÑ!EÓ!GÓHˆÔà#ˆÔð	Ûä#(§=¡=×#6Ñ#6×#<Ñ#<Ó#>ˆDÔ Ø2ˆCð7Ý8á&4°T×5EÑ5EÓ&F�Ô#ØÐ?Ñ?�ô ×Ñ Õ$øô ò 7ØÐDÀSÀEÐIsÐtÑt�Ø&*×&6Ñ&6�×#Ñ#ûð7ûô ò 	Ü×Ñðjä�C“÷ñ ûð	úsB   Ç3I8 È"I È2I8 É	I5ÉI0É+I8 É0I5É5I8 É8	J*ÊJ%Ê%J*r]   r   c           
      ó®  — t         j                  j                  | j                  «      }| j                  t         j                  j                  | j
                  «      z   }t        j                  |dkD  ||z  |z  | j                  |z  z   t        j                  t        j                  || j                  «      «      |z
  |z  | j                  |z  z   «      S )Nr   )r   r   rn   r˜   r�   r™   r&   Úwherer•   rX   r‘   )r   r]   r˜   r™   s       r   Ú_xielu_pythonzXIELUActivation._xielu_python  s�   € Ü—-‘-×(Ñ(¨¯©Ó6ˆØ—)‘)œbŸm™m×4Ñ4°T·\±\ÓBÑBˆÜ�{‰{Ø�‰EØ�a‰K˜!‰O˜dŸi™i¨!™mÑ+Ü�[‰[œŸ™ 1 d§h¡hÓ/Ó0°1Ñ4¸Ñ?À$Ç)Á)ÈaÁ-ÑOó
ð 	
r   c                 ó~  — |j                   }|j                  «       dk  r%|j                  d«      }|j                  «       dk  rŒ%|j                  «       dkD  r"|j                  dd|j	                  d«      «      }||j                   k7  r!t
        j                  d||j                   «       | j                  j                  || j                  j                  |j                  «      | j                  j                  |j                  «      | j                  | j                  | j                  «      }|j                  |«      S )zDFirewall function to prevent torch.compile from seeing .item() callsrh   r   éÿÿÿÿr   z_Warning: xIELU input tensor expects 3 dimensions but got (shape: %s). Reshaping to (shape: %s).)ÚshapeÚdimr—   ÚviewÚsizerª   r«   r¡   r/   r˜   Útor�   r™   rŸ   r    r›   )r   r]   Úoriginal_shapeÚresults       r   r§   zXIELUActivation._xielu_cuda  sñ   € àŸ™ˆà�e‰e‹g˜ŠkØ—‘˜A“ˆAð �e‰e‹g˜‹kà�5‰5‹7�QŠ;Ø—‘�r˜1˜aŸf™f R›jÓ)ˆAØ˜QŸW™WÒ$Ü×ÑØqØØ—‘ôð
 ×%Ñ%×-Ñ-ØØ�L‰L�O‰O˜AŸG™GÓ$Ø�L‰L�O‰O˜AŸG™GÓ$à×ÑØ×ÑØ×"Ñ"ó
ˆð �{‰{˜>Ó*Ð*r   r   c                 ó´   — | j                   �<|j                  r0t        «       s| j                  |«      S t        j                  d«       | j                  |«      S )Nz:torch._dynamo is compiling, using Python version of xIELU.)r¡   Úis_cudar	   r¨   rª   r«   r³   r+   s     r   r/   zXIELUActivation.forward1  sK   € Ø×ÑÐ+°·²Ü+Ô-Ø×*Ñ*¨5Ó1Ð1ä×#Ñ#Ð$`ÔaØ×!Ñ! %Ó(Ð(r   )r2   r3   r4   r5   r&   Úbfloat16r   r   r³   r§   r/   r7   r8   s   @r   r�   r�   Ü   s_   ø„ ñð ØØØØ�n‰nØõ)ðV
˜vð 
¨&ó 
ð+˜Vð +¨ó +ð2)˜Vð )¨÷ )r   r�   r   Úgelu_10iöÿÿÿé
   )rX   rY   Ú	gelu_fastÚgelu_newÚgelu_pythonrB   TÚgelu_pytorch_tanhÚgelu_python_tanhr   Úgelu_accurateÚlaplaceÚ
leaky_reluÚlinearrl   Ú
quick_gelur~   Úrelu2Úrelu6rU   )rL   Úswishr   Úprelur¤   c           	      ó|   — | t         v r	t         |    S t        d| › dt        t         j                  «       «      › �«      ‚)Nz	function z not found in ACT2FN mapping )ÚACT2FNÚKeyErrorÚlistÚkeys)Úactivation_strings    r   Úget_activationrÖ   U  sB   € ØœFÑ"ÜÐ'Ñ(Ð(ä˜Ð#4Ð"5Ð5RÔSWÔX^×XcÑXcÓXeÓSfÐRgÐhÓiÐir   rL   )1r   r'   Úcollectionsr   r&   r   r   Úintegrations.hub_kernelsr   Úutilsr   Úutils.import_utilsr	   Ú
get_loggerr2   rª   ÚModuler   r;   rA   rJ   rO   rS   rW   rb   rj   rr   ru   r|   rƒ   r�   Ú	LeakyReLUÚReLUÚReLU6ÚSigmoidrH   ÚTanhÚPReLUÚACT2CLSrÑ   rÖ   rÄ   rÃ   r   rÂ   rË   rL   rl   Ú
linear_actr>   r   r   ú<module>rå      s  ðó Û Ý #ã ß å AÝ Ý 8ð 
ˆ×	Ñ	˜HÓ	%€ñ ˜ZÓ(ôˆr�y‰yó ó )ðñ. ˜YÓ'ôw˜Ÿ	™	ó wó (ðwñ ˜VÓ$ô�R—Y‘Yó ó %ðñ, ˜VÓ$ô
)�R—Y‘Yó 
)ó %ð
)ñ ˜ZÓ(ôi˜Ÿ™ó ió )ðiñ ˜[Ó)ô4˜"Ÿ)™)ó 4ó *ð4ô7˜BŸI™Iô 7ô2t˜RŸY™Yô tô �R—Y‘Yô ô"�r—y‘yô ô
.˜Ÿ	™	ô 
.ô˜BŸI™Iô ô�kô ô[)�b—i‘iô [)ð|Ø
ˆNðàÐ%¨s¸2Ñ'>Ð?ðð Ð#ðð Ð!ð	ð
 �NÐ%6¸Ð$=Ð>ðð ˜ðð ˜Ð$:¸DÐ#AÐBðð Ð+ðð Ð ðð �"—,‘,ðð Ððð ˆNðð Ð%ðð ˆB�G‰Gðð Ð"ðð  ˆR�X‰Xð!ð" ˆr�z‰zð#ð$ Ø�W‰WØ�G‰GØ�X‰XØò-€ñ0 
˜Ó	!€òjñ ˜]Ó+€Ù˜*Ó%€Ù�fÓ€Ù˜;Ó'€	Ù˜LÓ)€
Ù�fÓ€Ù�fÓ€Ù˜HÓ%�
r   