§
    ‚Štjä¨  ã                   óV  — d dl Z d dlZd dlmZ d dlmZ d dlmZ ddlm	Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZ ddlmZmZmZmZ ddlm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,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZB  e/jC        eD¦  «        ZEd„ ZF e-d¬¦  «        e G d„ de5¦  «        ¦   «         ¦   «         ZG e-d¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         ZH G d„ d e=¦  «        ZI G d!„ d"ejJ        ¦  «        ZK G d#„ d$ejJ        ¦  «        ZL G d%„ d&ejJ        ¦  «        ZM G d'„ d(e%d)¬*¦  «        ZNe- G d+„ d,e¦  «        ¦   «         ZO G d-„ d.e%d)¬*¦  «        ZP G d/„ d0e'd)¬*¦  «        ZQe- G d1„ d2e(¦  «        ¦   «         ZR G d3„ d4e:¦  «        ZS G d5„ d6ejJ        ¦  «        ZT G d7„ d8ejJ        ¦  «        ZU G d9„ d:ejJ        ¦  «        ZV G d;„ d<e7¦  «        ZW G d=„ d>e8¦  «        ZXe- G d?„ d@e#¦  «        ¦   «         ZY G dA„ dBe<¦  «        ZZ G dC„ dDe;¦  «        Z[ G dE„ dFeYe9¦  «        Z\ G dG„ dHe?¦  «        Z] G dI„ dJeB¦  «        Z^ G dK„ dLeA¦  «        Z_ e-dM¬N¦  «         G dO„ dPe@¦  «        ¦   «         Z`g dQ¢ZadS )Ré    N)Ústrict)Únn)Ú
functionalé   )Úinitialization)ÚACT2FN)ÚCache)ÚPreTrainedConfig)ÚTorchvisionBackend)ÚBatchFeatureÚget_patch_output_sizeÚselect_best_resolution)Údivide_to_patches)ÚChannelDimensionÚPILImageResamplingÚSizeDictÚget_image_size)ÚFlashAttentionKwargs)ÚBaseModelOutputWithPooling)ÚPreTrainedModel)ÚImagesKwargsÚMultiModalDataÚProcessingKwargsÚProcessorMixinÚUnpack)Ú
TensorTypeÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚloggingé   )ÚCONFIG_MAPPINGÚ
AutoConfigÚAutoTokenizer)ÚLlamaConfig)ÚLlamaAttentionÚLlamaDecoderLayerÚLlamaForCausalLMÚLlamaMLPÚ
LlamaModelÚLlamaPreTrainedModelÚLlamaRMSNorm)ÚLlavaCausalLMOutputWithPastÚLlavaForConditionalGenerationÚ
LlavaModelÚLlavaModelOutputWithPastc                 óÚ  — | j         d         }|j         d         }t          j        ||| j        | j        ¬¦  «        }t          j        |d¬¦  «        }t          j        dt          j        |j        ¬¦  «        }t          j        ||f¦  «        }t          |j         d         ¦  «        D ]A}||         }	||dz            }
| |	|
…         }t          j	        |||         ¦  «        }|||	|
…<   ŒB|S )a*  
    Compute the matrix multiplication (GEMM) for each expert sequentially. This approach is computationally inefficient, especially when dealing with a large number of experts.

    Args:
        token_states (torch.Tensor): Input tensor of shape (num_tokens, in_features).
        expert_weights (torch.Tensor): Weight tensor of shape (num_experts, in_features, out_features).
        tokens_per_expert (torch.Tensor): Number of tokens assigned to each expert.

    Returns:
        torch.Tensor: Output tensor of shape (num_tokens, out_features).
    r   éÿÿÿÿ©ÚdtypeÚdevice©Údimé   )
ÚshapeÚtorchÚzerosr4   r5   ÚcumsumÚlongÚcatÚrangeÚmatmul)Útoken_statesÚexpert_weightsÚtokens_per_expertÚ
num_tokensÚout_featuresÚoutputÚcumsum_num_tokensÚzero_tensorÚ
expert_numÚstartÚendÚtokensÚouts                úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/aria/modular_aria.pyÚsequential_experts_gemmrO   C   sö   € ð Ô# AÔ&€JØ!Ô'¨Ô+€LÝŒ[˜ \¸Ô9KÐT`ÔTgÐhÑhÔh€FåœÐ%6¸AÐ>Ñ>Ô>Ðå”+˜a¥u¤zÐ:KÔ:RÐSÑSÔS€KÝœ	 ;Ð0AÐ"BÑCÔCÐå˜NÔ0°Ô3Ñ4Ô4ð  ð  ˆ
Ø! *Ô-ˆØ 
¨Q¡Ô/ˆØ˜e C˜iÔ(ˆåŒl˜6 >°*Ô#=Ñ>Ô>ˆØˆˆu�SˆyÑÐØ€Mó    zrhymes-ai/Aria)Ú
checkpointc                   ó|   — e Zd ZU dZdZdZddddddddœZdZee	d<   d	Z
ee	d
<   dZee	d<   dZee	d<   dZedz  e	d<   dS )ÚAriaTextConfigaA  
    moe_num_experts (`int`, *optional*, defaults to 8):
        The number of experts in the MoE layer.
    moe_topk (`int`, *optional*, defaults to 2):
        The number of top experts to route to for each token.
    moe_num_shared_experts (`int`, *optional*, defaults to 2):
        The number of shared experts.
    Ú	aria_textÚtext_configÚcolwiseÚrowwise)zlayers.*.self_attn.q_projzlayers.*.self_attn.k_projzlayers.*.self_attn.v_projzlayers.*.self_attn.o_projz%layers.*.mlp.shared_experts.gate_projz#layers.*.mlp.shared_experts.up_projz%layers.*.mlp.shared_experts.down_proji   Úintermediate_sizeé   Úmoe_num_expertsr!   Úmoe_topkÚmoe_num_shared_expertsNÚpad_token_id)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚbase_config_keyÚbase_model_tp_planrX   ÚintÚ__annotations__rZ   r[   r\   r]   © rP   rN   rS   rS   b   s¢   € € € € € € ðð ð €JØ#€Oà%.Ø%.Ø%.Ø%.Ø1:Ø/8Ø1:ðð Ðð "Ð�sÐ!Ð!Ñ!Ø€O�SÐÐÑØ€HˆcÐÐÑØ"#Ð˜CÐ#Ð#Ñ#Ø €L�#˜‘*Ð Ð Ñ Ð Ð rP   rS   c                   óÌ   ‡ — e Zd ZU dZdZddiZeedœZdZ	e
ez  dz  ed<   dZe
ez  dz  ed<   d	Zeee         z  ed
<   dZe
dz  ed<   dZeed<   dZeed<   dZeed<   ˆ fd„Zˆ xZS )Ú
AriaConfigzq
    projector_patch_to_query_dict (`dict`, *optional*):
        Mapping of patch sizes to query dimensions.
    ÚariaÚimage_token_idÚimage_token_index)rU   Úvision_configNrm   rU   r2   Úvision_feature_layerÚprojector_patch_to_query_dicté	   g{®Gáz”?Úinitializer_rangeFÚtie_word_embeddingsc                 ó‚  •— | j         €
dddœ| _         d„ | j                              ¦   «         D ¦   «         | _         t          | j                              ¦   «         ¦  «        | _        t          | j        t          ¦  «        r2d| j        d<   t          | j        d                  di | j        ¤Ž| _        n | j        €t          d         ¦   «         | _        t          | j	        t          ¦  «        r d| j	        v rt          di | j	        ¤Ž| _	        n| j	        €t          ¦   «         | _	         t          ¦   «         j        di |¤Ž d S )Né€   é   )iÉ  i$  c                 óN   — i | ]"\  }}t          |¦  «        t          |¦  «        “Œ#S rg   ©re   ©Ú.0ÚkÚvs      rN   ú
<dictcomp>z,AriaConfig.__post_init__.<locals>.<dictcomp>Ÿ   s*   € Ð-tÐ-tÐ-tÁÀÀA­c°!©f¬fµc¸!±f´fÐ-tÐ-tÐ-trP   Úidefics3_visionrb   rg   )ro   ÚitemsÚmaxÚvaluesÚ'max_value_projector_patch_to_query_dictÚ
isinstancerm   Údictr"   rU   rS   ÚsuperÚ__post_init__)ÚselfÚkwargsÚ	__class__s     €rN   r…   zAriaConfig.__post_init__—   sL  ø€ ð Ô-Ð5àØð2ð 2ˆDÔ.ð .uÐ-tÈÔIk×IqÒIqÑIsÔIsÐ-tÑ-tÔ-tˆÔ*Ý7:¸4Ô;]×;dÒ;dÑ;fÔ;fÑ7gÔ7gˆÔ4å�dÔ(­$Ñ/Ô/ð 	EØ/@ˆDÔ˜|Ñ,Ý!/°Ô0BÀ<Ô0PÔ!QÐ!gÐ!gÐTXÔTfÐ!gÐ!gˆDÔÐØÔÐ'Ý!/Ð0AÔ!BÑ!DÔ!DˆDÔå�dÔ&­Ñ-Ô-ð 	0°,À$ÔBRÐ2RÐ2RÝ-ÐAÐA°Ô0@ÐAÐAˆDÔÐØÔÐ%Ý-Ñ/Ô/ˆDÔà�‰ŒÔÐ'Ð' Ð'Ð'Ð'Ð'Ð'rP   )r^   r_   r`   ra   rb   Úattribute_maprS   r#   Úsub_configsrm   rƒ   r
   rf   rU   rn   re   Úlistro   rl   rq   Úfloatrr   Úboolr…   Ú__classcell__©rˆ   s   @rN   ri   ri   �   sý   ø€ € € € € € ðð ð
 €JàÐ-ð€Mð #1À:ÐNÐN€Kà48€M�4Ð*Ñ*¨TÑ1Ð8Ð8Ñ8Ø04€K�˜Ñ&¨Ñ-Ð4Ð4Ñ4Ø,.Ð˜#  S¤	™/Ð.Ð.Ñ.Ø15Ð! 4¨$¡;Ð5Ð5Ñ5ØÐ�sÐÐÑØ#Ð�uÐ#Ð#Ñ#Ø %Ð˜Ð%Ð%Ñ%ð(ð (ð (ð (ð (ð (ð (ð (ð (rP   ri   c                   ó   — e Zd ZdS )ÚAriaTextRMSNormN©r^   r_   r`   rg   rP   rN   r‘   r‘   °   ó   € € € € € Ø€DrP   r‘   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚAriaProjectorMLPa!  
    Feed-Forward Network module for the Aria Projector.

    Args:
        in_features (`int`):
            Input embedding dimension.
        hidden_features (`int`):
            Hidden dimension of the feed-forward network.
        output_dim (`int`):
            Output dimension.
    c                 óÜ   •— t          ¦   «                              ¦   «          t          j        ||d¬¦  «        | _        t          j        ||d¬¦  «        | _        t          d         | _        d S )NF©ÚbiasÚgelu_new)r„   Ú__init__r   ÚLinearÚ	linear_inÚ
linear_outr   Úact)r†   Úin_featuresÚhidden_featuresÚ
output_dimrˆ   s       €rN   rš   zAriaProjectorMLP.__init__Á   sY   ø€ Ý‰Œ×ÒÑÔÐÝœ ;°ÀeÐLÑLÔLˆŒÝœ) O°ZÀeÐLÑLÔLˆŒÝ˜*Ô%ˆŒˆˆrP   c                 ó€   — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }|S ©N)rž   rœ   r�   )r†   Úhidden_statess     rN   ÚforwardzAriaProjectorMLP.forwardÇ   s6   € ØŸš §¢°Ñ!>Ô!>Ñ?Ô?ˆØŸš¨Ñ6Ô6ˆØÐrP   ©r^   r_   r`   ra   rš   r¥   rŽ   r�   s   @rN   r•   r•   ´   sQ   ø€ € € € € ð
ð 
ð&ð &ð &ð &ð &ðð ð ð ð ð ð rP   r•   c                   ó6   ‡ — e Zd ZdZddedefˆ fd„Zd	d„Zˆ xZS )
ÚAriaCrossAttentionzv
    Aria Cross-Attention module.

    Args:
        config (`AriaConfig`):
            The configuration to use.
    r   ÚconfigÚdropout_ratec                 ó0  •— t          ¦   «                              ¦   «          |j        j        }|j        j        }|| _        t          j        ||d¬¦  «        | _        t          j        ||d¬¦  «        | _	        t          j        ||d¬¦  «        | _
        t          j        ||d¬¦  «        | _        t          j        ||¦  «        | _        t          j        |¦  «        | _        t          j        |¦  «        | _        t          j        |¦  «        | _        d S )NFr—   T)Úbatch_first)r„   rš   rm   Úhidden_sizeÚnum_attention_headsÚ	num_headsr   r›   Úq_projÚk_projÚv_projÚMultiheadAttentionÚmultihead_attnÚlinearÚDropoutÚdropoutÚ	LayerNormÚ
layer_normÚlayer_norm_kv)r†   r©   rª   r­   r¯   rˆ   s        €rN   rš   zAriaCrossAttention.__init__Ö   sè   ø€ Ý‰Œ×ÒÑÔÐØÔ*Ô6ˆØÔ(Ô<ˆ	Ø"ˆŒÝ”i ¨[¸uÐEÑEÔEˆŒÝ”i ¨[¸uÐEÑEÔEˆŒÝ”i ¨[¸uÐEÑEÔEˆŒõ !Ô3°KÀÐX\Ð]Ñ]Ô]ˆÔÝ”i ¨[Ñ9Ô9ˆŒÝ”z ,Ñ/Ô/ˆŒåœ, {Ñ3Ô3ˆŒÝœ\¨+Ñ6Ô6ˆÔÐÐrP   Nc                 ó\  — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      ||||¬¦  «        \  }}|                      |                      |¦  «        ¦  «        }|S )aÉ  
        Forward pass of the AriaCrossAttention module.

        Args:
            key_value_states (`torch.Tensor`):
                Input tensor for key and value.
            hidden_states (`torch.Tensor`):
                Input tensor for query.
            attn_mask (`torch.Tensor`, *optional*, defaults to None):
                Attention mask.

        Returns:
            torch.Tensor:
                Output tensor after cross-attention.
        ©Ú	attn_mask)r°   r¹   rº   r±   r²   r´   r·   rµ   )	r†   Úkey_value_statesr¤   r½   ÚqueryÚkeyÚvalueÚattn_outputÚ_s	            rN   r¥   zAriaCrossAttention.forwardç   s�   € ð  —’˜DŸOšO¨MÑ:Ô:Ñ;Ô;ˆà×-Ò-Ð.>Ñ?Ô?ÐØ�kŠkÐ*Ñ+Ô+ˆØ—’Ð,Ñ-Ô-ˆà×,Ò,¨U°C¸È)Ð,ÑTÔT‰ˆ�Qà—l’l 4§;¢;¨{Ñ#;Ô#;Ñ<Ô<ˆàÐrP   )r   r£   )	r^   r_   r`   ra   ri   rŒ   rš   r¥   rŽ   r�   s   @rN   r¨   r¨   Í   sn   ø€ € € € € ðð ð7ð 7˜zð 7¸ð 7ð 7ð 7ð 7ð 7ð 7ð"ð ð ð ð ð ð ð rP   r¨   c                   óT   ‡ — e Zd ZdZdefˆ fd„Zddej        dej        dz  fd„Zˆ xZ	S )	ÚAriaProjectora  
    Aria Projector module.

    This module projects vision features into the language model's embedding space, enabling interaction between vision and language components.

    Args:
        config (`AriaConfig`):
            Configuration object for the model.
    r©   c                 ó$  •— t          ¦   «                              ¦   «          |j        | _        |j        j        | _        |j        j        | _        |j        j        | _	        |j
        j        | _        |j
        j        | _        t          j        t          j        |j        | j        ¦  «        ¦  «        | _        t'          |¦  «        | _        t          j        | j        ¦  «        | _        t/          | j        | j        | j        ¦  «        | _        d S r£   )r„   rš   ro   Úpatch_to_query_dictrm   r­   rŸ   r®   r¯   Úkv_dimrU   r    r¡   r   Ú	Parameterr:   r;   r�   r¿   r¨   Ú
cross_attnr¸   r¹   r•   Úfeed_forward©r†   r©   rˆ   s     €rN   rš   zAriaProjector.__init__  sÔ   ø€ õ 	‰Œ×ÒÑÔÐà#)Ô#GˆÔ Ø!Ô/Ô;ˆÔØÔ-ÔAˆŒØÔ*Ô6ˆŒØ%Ô1Ô=ˆÔØ Ô,Ô8ˆŒå”\¥%¤+¨fÔ.\Ð^bÔ^nÑ"oÔ"oÑpÔpˆŒ
å,¨VÑ4Ô4ˆŒåœ, tÔ'7Ñ8Ô8ˆŒÝ,¨TÔ-=¸tÔ?SÐUYÔUdÑeÔeˆÔÐÐrP   Nr¾   r½   c                 ób  — |j         d         |j         d         }}|| j        vr-t          d|› d| j                             ¦   «         › d�¦  «        ‚| j        |         }| j        d|…                              d¦  «                             |dd¦  «        }|�X|                     | j        d¦  «        }|                     d¦  «         	                    d| 
                    d¦  «        d¦  «        }|                      |||¬¦  «        }|                      |                      |¦  «        ¦  «        }|S )	a�  
        Forward pass of the Projector module.

        Args:
            key_value_states (`torch.Tensor`):
                Input tensor of shape (batch_size, num_patches, kv_dim).
            attn_mask (`torch.Tensor`, *optional*, default is None):
                Attention mask.

        Returns:
            `torch.Tensor`: Output tensor of shape (batch_size, query_number, output_dim).
        r   r8   zNumber of patches z: not found in patch_to_query_dict amongst possible values ú.Nr2   r¼   )r9   rÇ   ÚKeyErrorÚkeysr¿   Ú	unsqueezeÚrepeatÚrepeat_interleaver¯   ÚexpandÚsizerÊ   rË   r¹   )	r†   r¾   r½   Ú
batch_sizeÚnum_patchesÚ	query_numÚqueriesÚattention_outrM   s	            rN   r¥   zAriaProjector.forward#  sR  € ð #3Ô"8¸Ô";Ð=MÔ=SÐTUÔ=V�Kˆ
à˜dÔ6Ð6Ð6Ýð O [ð  Oð  OÐlpô  mE÷  mJò  mJñ  mLô  mLð  Oð  Oð  Oñô ð ð Ô,¨[Ô9ˆ	à”*˜Z˜i˜ZÔ(×2Ò2°1Ñ5Ô5×<Ò<¸ZÈÈAÑNÔNˆàÐ Ø!×3Ò3°D´NÀAÑFÔFˆIØ!×+Ò+¨AÑ.Ô.×5Ò5°b¸'¿,º,Àq¹/¼/È2ÑNÔNˆIàŸšÐ(8¸'ÈY˜ÑWÔWˆà×Ò §¢°Ñ >Ô >Ñ?Ô?ˆàˆ
rP   r£   )
r^   r_   r`   ra   ri   rš   r:   ÚTensorr¥   rŽ   r�   s   @rN   rÅ   rÅ     s‡   ø€ € € € € ðð ðfàðfð fð fð fð fð fð(ð ¨¬ð ÀÄÐPTÑATð ð ð ð ð ð ð ð rP   rÅ   c                   óT   — e Zd ZU dZeed<   eed<   eee                  ed<   eed<   dS )ÚAriaImageProcessorKwargsa®  
    max_image_size (`int`, *optional*, defaults to `self.max_image_size`):
        Maximum image size. Must be either 490 or 980.
    min_image_size (`int`, *optional*, defaults to `self.min_image_size`):
        Minimum image size. Images smaller than this in any dimension will be scaled up.
    split_resolutions (`list[list[int]]`, *optional*, defaults to `self.split_resolutions`):
        A list of possible resolutions as (height, width) pairs for splitting high-resolution images into patches.
    split_image (`bool`, *optional*, defaults to `self.split_image`):
        Whether to split the image into patches using the best matching resolution from `split_resolutions`.
    Úmax_image_sizeÚmin_image_sizeÚsplit_resolutionsÚsplit_imageN)r^   r_   r`   ra   re   rf   r‹   r�   rg   rP   rN   rÝ   rÝ   E  sV   € € € € € € ð	ð 	ð ÐÐÑØÐÐÑØ˜D œI”Ð&Ð&Ñ&ØÐÐÑÐÐrP   rÝ   F)Útotalc                   óÌ  ‡ — e Zd Zg d¢ZeZej        Zg d¢Z	g d¢Z
dZdZdZdZdZdZdZdee         fˆ fd	„Zd
ededee         fd„Zdddeddddfd„Zdddeddfd„Zdddeee                  deddded         f
d„Z	 	 	 	 	 d'ded         dedededeee         z  dz  deee         z  dz  dedz  deez  dz  ded ed!eee                  dz  d"edddefd#„Z d(d$ed%efd&„Z!ˆ xZ"S ))ÚAriaImageProcessor©Úpixel_valuesÚ
pixel_maskÚ	num_crops)ç      à?ré   ré   éÔ  éP  FNTr‡   c                 óŠ   •— |                      d¦  «        €g d¢}d„ |D ¦   «         |d<    t          ¦   «         j        di |¤Ž d S )Nrà   ))r8   r!   )r8   r   )r8   é   )r8   é   )r8   é   )r8   é   )r8   rY   )r!   rí   )r!   r   )r!   r!   )r!   r8   )r   r8   )r   r!   )rí   r8   )rí   r!   )rî   r8   )rï   r8   )rð   r8   )rY   r8   c                 ó:   — g | ]}|d          dz  |d         dz  g‘ŒS )r   éê  r8   rg   )ry   Úels     rN   ú
<listcomp>z/AriaImageProcessor.__init__.<locals>.<listcomp>j  s-   € Ð*dÐ*dÐ*dÈ"¨B¨q¬E°C©K¸¸A¼À¹Ð+EÐ*dÐ*dÐ*drP   rg   )Úgetr„   rš   )r†   r‡   Údefault_resolutionsrˆ   s      €rN   rš   zAriaImageProcessor.__init__g  sh   ø€ Ø�:Š:Ð)Ñ*Ô*Ð2ð #{ð  #{ð  #{ÐØ*dÐ*dÐPcÐ*dÑ*dÔ*dˆFÐ&Ñ'Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"rP   Úoriginal_resolutionÚtarget_resolutionÚreturnc                 ó†   — |\  }}|\  }}t          ||z
  d¦  «        \  }}t          ||z
  d¦  «        \  }	}
||	||z   |	|
z   gS )zNGet padding size for patching, returns [left, top, right, bottom] for tvF.pad.r!   )Údivmod)r†   r÷   rø   Úoriginal_heightÚoriginal_widthÚtarget_heightÚtarget_widthÚpaste_xÚr_xÚpaste_yÚr_ys              rN   Ú_get_padding_sizez$AriaImageProcessor._get_padding_sizem  s]   € à*=Ñ'ˆ˜Ø&7Ñ#ˆ�|Ý˜l¨^Ñ;¸QÑ?Ô?‰ˆ�Ý˜m¨oÑ=¸qÑAÔA‰ˆ�Ø˜ '¨C¡-°¸3±Ð?Ð?rP   Úimageztorch.TensorÚresamplez7PILImageResampling | tvF.InterpolationMode | int | Nonec                 óŒ   — t          ||t          j        ¬¦  «        \  }}|                      |t	          ||¬¦  «        |¦  «        S )zFResize an image to a target resolution while maintaining aspect ratio.©Úinput_data_format©ÚheightÚwidth)r   r   ÚFIRSTÚresizer   )r†   r  rø   r  Ú
new_heightÚ	new_widths         rN   Ú_resize_for_patchingz'AriaImageProcessor._resize_for_patchingu  sO   € õ !6ØÐ$Õ8HÔ8Nð!
ñ !
ô !
Ñˆ
�Ið �{Š{˜5¥(°*ÀIÐ"NÑ"NÔ"NÐPXÑYÔYÐYrP   c                 ó’   — t          ||t          j        ¬¦  «        }|                      ||¦  «        }t	          j        ||¬¦  «        S )zCPad an image to a target resolution while maintaining aspect ratio.r  )Úpadding)r   r   r  r  ÚtvFÚpad)r†   r  rø   Únew_resolutionr  s        rN   Ú_pad_for_patchingz$AriaImageProcessor._pad_for_patching�  sH   € õ /¨uÐ6GÕ[kÔ[qÐrÑrÔrˆØ×(Ò(¨Ð9JÑKÔKˆÝŒw�u gÐ.Ñ.Ô.Ð.rP   Úgrid_pinpointsÚ
patch_sizec                 ó   — t          |t          ¦  «        st          d¦  «        ‚t          |t          j        ¬¦  «        }t          ||¦  «        }|                      |||¦  «        }|                      ||¦  «        }t          ||¬¦  «        }	|	S )a¢  
        Process an image with variable resolutions by dividing it into patches.

        Args:
            image (`torch.Tensor`):
                The input image to be processed (channels-first format).
            grid_pinpoints (`list[list[int]]`):
                A list of possible resolutions as (height, width) pairs.
            patch_size (`int`):
                Size of each square patch to divide the image into.
            resample (`PILImageResampling | tvF.InterpolationMode | int | None`):
                Resampling filter to use when resizing.

        Returns:
            `list[torch.Tensor]`: A list of image patches in channels-first format.
        z6grid_pinpoints must be a list of possible resolutions.)Úchannel_dim)r  )
r‚   r‹   Ú	TypeErrorr   r   r  r   r  r  r   )
r†   r  r  r  r  Ú
image_sizeÚbest_resolutionÚresized_imageÚpadded_imageÚpatchess
             rN   Úget_image_patchesz$AriaImageProcessor.get_image_patches‹  sŽ   € õ. ˜.­$Ñ/Ô/ð 	VÝÐTÑUÔUÐUå# EÕ7GÔ7MÐNÑNÔNˆ
Ý0°¸^ÑLÔLˆØ×1Ò1°%¸È(ÑSÔSˆØ×-Ò-¨m¸_ÑMÔMˆÝ# L¸ZÐHÑHÔHˆØˆrP   ÚimagesÚ
do_rescaleÚrescale_factorÚdo_normalizeÚ
image_meanÚ	image_stdÚdisable_groupingÚreturn_tensorsrÞ   rß   rà   rá   c           	      óº  — |	dvrt          d¦  «        ‚g }g }d }|D �]d}|r|                      |||	|¦  «        }n|g}|�t          |¦  «        |k    rt          |¦  «        }|D �]}|j        d         |j        d         }}|	t	          ||¦  «        z  }||k    r#t	          t          ||z  ¦  «        |
¦  «        }|	}n"|	}t	          t          ||z  ¦  «        |
¦  «        }|                      |t          ||¬¦  «        |¦  «        }|	|z
  }|	|z
  }t          j	        |dd||g¦  «        }t          j        |	|	ft          j        ¬¦  «        }d|d |…d |…f<   |                     |¦  «         |                     |¦  «         �Œ�Œft          j        |d¬	¦  «        }|                      ||||||¦  «        }t          j        |d¬	¦  «        }t!          |||d
œ|¬¦  «        S )N©rò   rê   z(max_image_size must be either 490 or 980éþÿÿÿr2   r
  r   )r4   Tr6   rå   )ÚdataÚtensor_type)Ú
ValueErrorr"  Úlenr9   r   re   r  r   r  r  r:   r;   r�   ÚappendÚstackÚrescale_and_normalizer   )r†   r#  r$  r%  r&  r'  r(  r)  r*  rÞ   rß   rà   rá   r  r‡   Úpixel_masksÚprocessed_cropsrè   r  Úcrop_imagesÚ
crop_imageÚhÚwÚscaleÚnew_hÚnew_wÚpadding_bottomÚpadding_rightrç   Ústacked_imagesÚstacked_maskss                                  rN   Ú_preprocesszAriaImageProcessor._preprocess¬  sA  € ð"  Ð+Ð+ÝÐGÑHÔHÐHàˆØˆØˆ	àð 	3ñ 	3ˆEØð &Ø"×4Ò4°UÐ<MÈ~Ð_gÑhÔh��à$˜g�àÐ ¥C¨Ñ$4Ô$4°yÒ$@Ð$@Ý Ñ,Ô,�	à)ð 3ñ 3�
Ø!Ô'¨Ô+¨ZÔ-=¸bÔ-A�1�Ø&­¨Q°©¬Ñ2�Ø˜’6�6Ý¥ A¨¡I¡¤°Ñ?Ô?�EØ*�E�Eà*�EÝ¥ A¨¡I¡¤°Ñ?Ô?�Eà!Ÿ[š[¨µXÀUÐRWÐ5XÑ5XÔ5XÐZbÑcÔc�
à!/°%Ñ!7�Ø .°Ñ 6�Ý œW Z°!°Q¸À~Ð1VÑWÔW�
å"œ[¨.¸.Ð)IÕQVÔQ[Ð\Ñ\Ô\�
Ø-1�
˜6˜E˜6 6 E 6˜>Ñ*Ø×"Ò" :Ñ.Ô.Ð.Ø×&Ò& zÑ2Ô2Ð2Ñ2ñ'3õ* œ _¸!Ð<Ñ<Ô<ˆØ×3Ò3Ø˜J¨¸ÀjÐR[ñ
ô 
ˆõ œ K°QÐ7Ñ7Ô7ˆåà .Ø+Ø&ðð ð
 'ð
ñ 
ô 
ð 	
rP   r  r  c                 ó8  — |                      d| j        ¦  «        }|                      d| j        ¦  «        }|                      d| j        ¦  «        }t	          ||f|¦  «        \  }}|sdn.t          j        ||z  ¦  «        t          j        ||z  ¦  «        z  }	|	S )a­  
        A utility that returns number of image patches for a given image size.

        Args:
            height (`int`):
                Height of the input image.
            width (`int`):
                Width of the input image.
            images_kwargs (`dict`, *optional*):
                Any kwargs to override defaults of the image processor.

        Returns:
            `int`: Number of patches per image.
        rá   rÞ   rà   r8   )rõ   rá   rÞ   rà   r   ÚmathÚceil)
r†   r  r  Úimages_kwargsrá   rÞ   rà   Úresized_heightÚresized_widthr×   s
             rN   Úget_number_of_image_patchesz.AriaImageProcessor.get_number_of_image_patchesñ  s«   € ð $×'Ò'¨°tÔ7GÑHÔHˆØ&×*Ò*Ð+;¸TÔ=PÑQÔQˆØ)×-Ò-Ð.AÀ4ÔCYÑZÔZÐå(>ÀÈ¸ÐPaÑ(bÔ(bÑ%ˆ˜ð ðhˆAˆAå”˜>¨NÑ:Ñ;Ô;½d¼iÈÐXfÑHfÑ>gÔ>gÑgð 	ð
 ÐrP   )rê   rë   NFNr£   )#r^   r_   r`   Úmodel_input_namesrÝ   Úvalid_kwargsr   ÚBICUBICr  r'  r(  rÞ   rß   rá   rà   Údo_convert_rgbr$  r&  r   rš   Útupler‹   re   r  r  r  r"  r�   rŒ   Ústrr   r   rB  rI  rŽ   r�   s   @rN   rä   rä   W  sÂ  ø€ € € € € àCÐCÐCÐØ+€Là!Ô)€HØ ��€JØ��€IØ€NØ€NØ€KØÐØ€NØ€JØ€Lð# Ð(@Ô!Að #ð #ð #ð #ð #ð #ð@°Uð @Èuð @ÐY]Ð^aÔYbð @ð @ð @ð @ð
Zàð
Zð !ð
Zð Lð	
Zð
 
ð
Zð 
Zð 
Zð 
Zð/àð/ð !ð/ð 
ð	/ð /ð /ð /ðàðð ˜T #œYœðð ð	ð
 Lðð 
ˆnÔ	ðð ð ð ðV "Ø!Ø48Ø!ØNRðC
ð C
à�^Ô$ðC
ð ðC
ð ð	C
ð
 ðC
ð ˜D œKÑ'¨$Ñ.ðC
ð ˜4 œ;Ñ&¨Ñ-ðC
ð  ™+ðC
ð ˜jÑ(¨4Ñ/ðC
ð ðC
ð ðC
ð    S¤	œ?¨TÑ1ðC
ð ðC
ð LðC
ð  
ð!C
ð C
ð C
ð C
ðJð °#ð ¸cð ð ð ð ð ð ð ð rP   rä   c                   ó2   — e Zd ZU dZeed<   eed<   eed<   dS )ÚAriaImagesKwargsa  
    split_image (`bool`, *optional*, defaults to `False`):
        Whether to split large images into multiple crops. When enabled, images exceeding the maximum size are
        divided into overlapping crops that are processed separately and then combined. This allows processing
        of very high-resolution images that exceed the model's input size limits.
    max_image_size (`int`, *optional*, defaults to `980`):
        Maximum image size (in pixels) for a single image crop. Images larger than this will be split into
        multiple crops when `split_image=True`, or resized if splitting is disabled. This parameter controls
        the maximum resolution of individual image patches processed by the model.
    min_image_size (`int`, *optional*):
        Minimum image size (in pixels) for a single image crop. Images smaller than this will be upscaled to
        meet the minimum requirement. If not specified, images are processed at their original size (subject
        to the maximum size constraint).
    rá   rÞ   rß   N)r^   r_   r`   ra   r�   rf   re   rg   rP   rN   rQ  rQ    sB   € € € € € € ðð ð ÐÐÑØÐÐÑØÐÐÑÐÐrP   rQ  c                   ó<   — e Zd ZU eed<   dddœdddœej        dœZdS )ÚAriaProcessorKwargsrF  F)r  Úreturn_mm_token_type_idsrê   )rÞ   rá   )Útext_kwargsrF  r*  N)r^   r_   r`   rQ  rf   r   ÚPYTORCHÚ	_defaultsrg   rP   rN   rS  rS  "  sT   € € € € € € Ø#Ð#Ð#Ñ#ð Ø(-ð
ð 
ð
 "Ø ð
ð 
ð %Ô,ð
ð 
€I€I€IrP   rS  c            	       ó¦   ‡ — e Zd ZeZ	 	 	 	 ddeez  dedz  deee	z  e	f         dz  fˆ fd„Z
dede	defd	„Zdd
„Zedee         fd„¦   «         Zˆ xZS )ÚAriaProcessorNÚ	tokenizerÚchat_templateÚsize_conversionc                 óþ   •— |€dddœ}d„ |                      ¦   «         D ¦   «         | _        |j        | _        |j        | _        |�|j        €|j        |_        t          ¦   «                              |||¬¦  «         dS )zx
        size_conversion (`Dict`, *optional*):
            A dictionary indicating size conversions for images.
        Nrt   ru   r,  c                 ó4   — i | ]\  }}t          |¦  «        |“ŒS rg   rw   rx   s      rN   r|   z*AriaProcessor.__init__.<locals>.<dictcomp>C  s$   € ÐNÐNÐN©d¨a°¥ A¡¤¨ÐNÐNÐNrP   )r[  )r~   r\  Úimage_tokenrk   Ú	pad_tokenÚ	unk_tokenr„   rš   )r†   Úimage_processorrZ  r[  r\  rˆ   s        €rN   rš   zAriaProcessor.__init__6  sŽ   ø€ ð Ð"Ø$'¨cÐ2Ð2ˆOØNÐN°o×6KÒ6KÑ6MÔ6MÐNÑNÔNˆÔà$Ô0ˆÔØ'Ô6ˆÔØÐ  YÔ%8Ð%@Ø"+Ô"5ˆIÔå‰Œ×Ò˜¨)À=ÐÑQÔQÐQÐQÐQrP   Úimage_inputsÚ	image_idxrù   c                 óh   — | j         |d         j        d                  }|d         |z  }| j        |z  S )Nræ   r!   rè   )r\  r9   r_  )r†   rc  rd  Útokens_per_imageÚnum_image_tokenss        rN   Úreplace_image_tokenz!AriaProcessor.replace_image_tokenL  s>   € ØÔ/°¸^Ô0LÔ0RÐSTÔ0UÔVÐØ'¨Ô4Ð7GÑGÐØÔÐ"2Ñ2Ð2rP   c                 óB  ‡ ‡‡— i }|��t           j                             di ¦  «        Š‰                     |¦  «         ‰                     dd¦  «        p‰ j        j        Šˆˆ fd„|D ¦   «         }ˆˆ fd„|D ¦   «         }|                     ||dœ¦  «         t          di |¤ŽS )a¹  
        Computes the number of placeholder tokens needed for multimodal inputs with the given sizes.
        Args:
            image_sizes (`list[list[int]]`, *optional*):
                The input sizes formatted as (height, width) per each image.
        Returns:
            `MultiModalData`: A `MultiModalData` object holding number of tokens per each of the provided
            input modalities, along with other useful data.
        NrF  rÞ   c                 ó8   •— g | ]} ‰j         j        g |¢‰‘R Ž ‘ŒS rg   )rb  rI  )ry   r  rF  r†   s     €€rN   rô   z<AriaProcessor._get_num_multimodal_tokens.<locals>.<listcomp>b  sE   ø€ ð !ð !ð !àð A�Ô$Ô@Ð\À*Ð\ÈmÐ\Ð\Ð\ð!ð !ð !rP   c                 ó0   •— g | ]}‰j         ‰         |z  ‘ŒS rg   )r\  )ry   r×   Úmax_sizer†   s     €€rN   rô   z<AriaProcessor._get_num_multimodal_tokens.<locals>.<listcomp>f  s'   ø€ ÐrÐrÐrÐQ\ Ô 4°XÔ >ÀÑ LÐrÐrÐrrP   )rg  Únum_image_patchesrg   )rS  rW  rõ   Úupdaterb  rÞ   r   )r†   Úimage_sizesr‡   Úvision_datarm  rg  rF  rl  s   `     @@rN   Ú_get_num_multimodal_tokensz(AriaProcessor._get_num_multimodal_tokensQ  sà   øøø€ ð ˆØÐ"Ý/Ô9×=Ò=¸oÈrÑRÔRˆMØ× Ò  Ñ(Ô(Ð(à$×(Ò(Ð)9¸4Ñ@Ô@ÐgÀDÔDXÔDgˆHð!ð !ð !ð !ð !à"-ð!ñ !ô !Ðð  sÐrÐrÐrÐrÐ`qÐrÑrÔrÐØ×ÒÐ4DÐ[lÐmÐmÑnÔnÐnåÐ,Ð, Ð,Ð,Ð,rP   c                 ó   — dgS )Nrè   rg   )r†   s    rN   Úunused_input_namesz AriaProcessor.unused_input_namesk  s
   € àˆ}ÐrP   )NNNNr£   )r^   r_   r`   rS  Úvalid_processor_kwargsr$   rO  rƒ   rŒ   re   rš   rh  rq  Úpropertyr‹   rs  rŽ   r�   s   @rN   rY  rY  2  s  ø€ € € € € à0Ðð Ø)-Ø$(Ø9=ðRð Rð ! 3Ñ&ðRð ˜T‘zð	Rð
 ˜e c™k¨3Ð.Ô/°$Ñ6ðRð Rð Rð Rð Rð Rð,3°ð 3Àð 3Èð 3ð 3ð 3ð 3ð
-ð -ð -ð -ð4 ð D¨¤Ið ð ð ñ „Xðð ð ð ð rP   rY  c                   ó(   ‡ — e Zd ZdZdefˆ fd„Zˆ xZS )ÚAriaSharedExpertsMLPa/  
    Shared Expert MLP for shared experts.

    Unlike routed experts, shared experts process all tokens without routing.
    This class reconfigures the intermediate size in comparison to the LlamaMLP.

    Args:
        config (`AriaTextConfig`): Configuration object for the Aria language model.
    r©   c                 ór   •— t          ¦   «                              |¦  «         |j        |j        z  | _        d S r£   )r„   rš   rX   r\   rÌ   s     €rN   rš   zAriaSharedExpertsMLP.__init__{  s4   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!'Ô!9¸FÔ<YÑ!YˆÔÐÐrP   )r^   r_   r`   ra   rS   rš   rŽ   r�   s   @rN   rw  rw  p  sY   ø€ € € € € ðð ðZ˜~ð Zð Zð Zð Zð Zð Zð Zð Zð Zð ZrP   rw  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚAriaGroupedExpertsGemmaP  
    Grouped GEMM (General Matrix Multiplication) module for efficient expert computation.
    This module utilizes the grouped_gemm library (https://github.com/fanshiqing/grouped_gemm)
    for optimized performance. If the grouped_gemm library is not installed, it gracefully
    falls back to a sequential GEMM implementation, which may be slower but ensures
    functionality.

    Args:
        in_features (`int`):
            Number of input features.
        out_features (`int`):
            Number of output features.
        groups (`int`):
            Number of expert groups.
    c                 óÌ   •— t          ¦   «                              ¦   «          || _        || _        || _        t          j        t          j        |||¦  «        ¦  «        | _	        d S r£   )
r„   rš   rŸ   rE   Úgroupsr   rÉ   r:   ÚemptyÚweight)r†   rŸ   rE   r|  rˆ   s       €rN   rš   zAriaGroupedExpertsGemm.__init__‘  sS   ø€ Ý‰Œ×ÒÑÔÐØ&ˆÔØ(ˆÔØˆŒÝ”l¥5¤;¨v°{ÀLÑ#QÔ#QÑRÔRˆŒˆˆrP   c                 óR   — t          || j        |                     ¦   «         ¦  «        S )au  
        Perform grouped matrix multiplication.

        Args:
            input (`torch.Tensor`):
                Input tensor of shape (num_tokens, in_features).
            tokens_per_expert (`torch.Tensor`):
                Number of tokens assigned to each expert.

        Returns:
            torch.Tensor: Output tensor of shape (num_tokens, out_features).
        )rO   r~  Úcpu)r†   ÚinputrC   s      rN   r¥   zAriaGroupedExpertsGemm.forward˜  s-   € õ 'ØØŒKØ×!Ò!Ñ#Ô#ñ
ô 
ð 	
rP   r¦   r�   s   @rN   rz  rz  €  sV   ø€ € € € € ðð ð Sð Sð Sð Sð Sð
ð 
ð 
ð 
ð 
ð 
ð 
rP   rz  c                   óD   ‡ — e Zd Zdeddfˆ fd„Zd„ Zdej        fd„Zˆ xZ	S )ÚAriaExpertsr©   rù   Nc                 óð   •— t          ¦   «                              ¦   «          || _        t          |j        |j        dz  |j        ¦  «        | _        t          |j        |j        |j        ¦  «        | _        d S )Nr!   )	r„   rš   r©   rz  r­   rX   rZ   Úfc1Úfc2rÌ   s     €rN   rš   zAriaExperts.__init__­  sd   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ)¨&Ô*<¸fÔ>VÐYZÑ>ZÐ\bÔ\rÑsÔsˆŒÝ)¨&Ô*BÀFÔDVÐX^ÔXnÑoÔoˆŒˆˆrP   c                 ó”   — t          j        || j        j        d¬¦  «        \  }}t          j                             |d¬¦  «        }||fS )Nr8   )rz   r7   r2   r6   )r:   Útopkr©   r[   r   r   Úsoftmax)r†   Úrouter_logitsÚ
top_logitsÚtop_indicesÚscoress        rN   Úroute_tokens_to_expertsz#AriaExperts.route_tokens_to_experts³  sH   € Ý"'¤*¨]¸d¼kÔ>RÐXYÐ"ZÑ"ZÔ"ZÑˆ
�KÝ”×&Ò& z°rÐ&Ñ:Ô:ˆØ˜FÐ"Ð"rP   c                 ó  — |                       |¦  «        \  }}|j        }t          j        |                     ¦   «                              t          j        ¦  «        | j        j        d| j        j        dz
  ¬¦  «                             |¦  «        }|}| 	                    d¦  «        }t          j
        |¦  «        }	|                     d|	| j        j        z  ¦  «        }
|                      |
|¦  «        }t          j        |dd¬¦  «        \  }}t          j                             |¦  «        |z  }|                      ||¦  «        }t          j        |j        d         | j        j        z  |                     d¦  «        f|j        |j        ¬¦  «        }|                     d|	|¦  «         | 	                    d| j        j        |                     d¦  «        ¦  «        }||                     d¦  «        z                       d¬¦  «        }|S )Nr   r8   )ÚbinsÚminr   r2   r!   r6   r3   )rŽ  r4   r:   ÚhistcÚflattenÚtoÚfloat32r©   rZ   ÚviewÚargsortÚindex_selectr[   r…  Úchunkr   r   Úsilur†  r;   r9   rÕ   r5   Úindex_copy_rÑ   Úsum)r†   r¤   rŠ  Útop_k_indexÚtop_k_weightsÚoriginal_dtyperC   ÚindicesÚflatten_indicesÚsorted_indicesÚpermuted_tokensÚ
fc1_outputÚ
projectionÚgateÚexpert_outputÚunpermuted_tokensrF   s                    rN   r¥   zAriaExperts.forward¸  sã  € Ø%)×%AÒ%AÀ-Ñ%PÔ%PÑ"ˆ�]Ø$Ô*ˆÝ!œKØ×ÒÑ!Ô!×$Ò$¥U¤]Ñ3Ô3Ø”Ô,ØØ”Ô+¨aÑ/ð	
ñ 
ô 
÷
 Š"ˆ^Ñ
Ô
ð 	ð ˆà!Ÿ,š, rÑ*Ô*ˆÝœ Ñ7Ô7ˆØ'×4Ò4°Q¸È$Ì+ÔJ^Ñ8^Ñ_Ô_ˆà—X’X˜oÐ/@ÑAÔAˆ
Ý œ; z°1¸"Ð=Ñ=Ô=Ñˆ
�DÝ”]×'Ò'¨
Ñ3Ô3°dÑ:ˆ
ØŸš Ð->Ñ?Ô?ˆå!œKØÔ  Ô# d¤kÔ&:Ñ:¸M×<NÒ<NÈqÑ<QÔ<QÐRØÔ%Ø Ô'ð
ñ 
ô 
Ðð
 	×%Ò% a¨¸ÑGÔGÐGØ-×2Ò2°2°t´{Ô7KÈ]×M_ÒM_Ð`aÑMbÔMbÑcÔcÐà# m×&=Ò&=¸bÑ&AÔ&AÑA×FÒFÈ1ÐFÑMÔMˆØˆrP   )
r^   r_   r`   rS   rš   rŽ  r:   rÛ   r¥   rŽ   r�   s   @rN   rƒ  rƒ  ¬  s   ø€ € € € € ðp˜~ð p°$ð pð pð pð pð pð pð#ð #ð #ð
°u´|ð ð ð ð ð ð ð ð rP   rƒ  c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚAriaTextMoELayerr©   c                 óò   •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          |¦  «        | _        t          |¦  «        | _
        || _        d S ©NFr—   )r„   rš   r   r›   r­   rZ   Úrouterrƒ  Úexpertsrw  Úshared_expertsr©   rÌ   s     €rN   rš   zAriaTextMoELayer.__init__Ù  sb   ø€ Ý‰Œ×ÒÑÔÐÝ”i Ô 2°FÔ4JÐQVÐWÑWÔWˆŒÝ" 6Ñ*Ô*ˆŒÝ2°6Ñ:Ô:ˆÔØˆŒˆˆrP   r¤   rù   c                 ó8  — |j         }|                     d|                     d¦  «        ¦  «        }|                      |¦  «        }|                      ||¦  «                             |¦  «        }|                      |                     |¦  «        ¦  «        }||z   S ©Nr2   )r9   r–  rÕ   r­  r®  r¯  )r†   r¤   Úoriginal_shaperŠ  r§  Úshared_expert_outputs         rN   r¥   zAriaTextMoELayer.forwardà  s�   € Ø&Ô,ˆØ%×*Ò*¨2¨}×/AÒ/AÀ"Ñ/EÔ/EÑFÔFˆØŸš MÑ2Ô2ˆØŸš ]°MÑBÔB×GÒGÈÑWÔWˆØ#×2Ò2°=×3EÒ3EÀnÑ3UÔ3UÑVÔVÐØÐ3Ñ3Ð3rP   )	r^   r_   r`   rS   rš   r:   rÛ   r¥   rŽ   r�   s   @rN   rª  rª  Ø  sj   ø€ € € € € ð˜~ð ð ð ð ð ð ð4 U¤\ð 4°e´lð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4rP   rª  c                   ó   — e Zd ZdZdS )ÚAriaTextAttentionz=Multi-headed attention from 'Attention Is All You Need' paperN)r^   r_   r`   ra   rg   rP   rN   rµ  rµ  é  s   € € € € € ØGÐGÐGÐGrP   rµ  c                   ó,   ‡ — e Zd ZdZdedefˆ fd„Zˆ xZS )ÚAriaTextDecoderLayerag  
    Aria Text Decoder Layer.

    This class defines a single decoder layer in the language model, incorporating self-attention and Mixture of Experts (MoE) feed-forward network.

    Args:
        config (`AriaTextConfig`):
            Configuration object for the text component of the model.
        layer_idx (`int`):
            Index of the layer.
    r©   Ú	layer_idxc                 ót   •— t          ¦   «                              ||¦  «         t          |¦  «        | _        d S r£   )r„   rš   rª  Úmlp)r†   r©   r¸  rˆ   s      €rN   rš   zAriaTextDecoderLayer.__init__ú  s0   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ý# FÑ+Ô+ˆŒˆˆrP   )r^   r_   r`   ra   rS   re   rš   rŽ   r�   s   @rN   r·  r·  í  sU   ø€ € € € € ð
ð 
ð,˜~ð ,¸#ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,rP   r·  c                   ó„   ‡ — e Zd ZU eed<   dZdZddgZdZdgZ	dZ
dZdZeedœZ ej        ¦   «         ˆ fd	„¦   «         Zˆ xZS )
ÚAriaTextPreTrainedModelr©   Úmodel)r  Útextr·  rz  TÚpast_key_values)r¤   Ú
attentionsc                 óÄ   •— t          ¦   «                              |¦  «         t          |t          ¦  «        r(t	          j        |j        d| j        j        ¬¦  «         d S d S )Ng        )ÚmeanÚstd)	r„   Ú_init_weightsr‚   rz  ÚinitÚnormal_r~  r©   rq   )r†   Úmodulerˆ   s     €rN   rÄ  z%AriaTextPreTrainedModel._init_weights  s_   ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ4Ñ5Ô5ð 	UÝŒL˜œ¨S°d´kÔ6SÐTÑTÔTÐTÐTÐTð	Uð 	UrP   )r^   r_   r`   rS   rf   Úbase_model_prefixÚinput_modalitiesÚ_no_split_modulesÚsupports_gradient_checkpointingÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_attention_backendr·  rµ  Ú_can_record_outputsr:   Úno_gradrÄ  rŽ   r�   s   @rN   r¼  r¼  ÿ  s®   ø€ € € € € € àÐÐÑØÐØ(ÐØ/Ð1IÐJÐØ&*Ð#Ø#4Ð"5ÐØÐØ€Nà"&Ðà-Ø'ðð Ðð
 €U„]�_„_ðUð Uð Uð Uñ „_ðUð Uð Uð Uð UrP   r¼  c                   óV   — e Zd ZU eed<   dZdZdZ ej	        ¦   «         d„ ¦   «         Z
dS )ÚAriaPreTrainedModelr©   r½  FTc                 ó¨   — t          j        | |¦  «         t          |t          ¦  «        r't	          j        |j        | j        j        ¬¦  «         d S d S )N)rÃ  )	r   rÄ  r‚   rÅ   rÅ  Útrunc_normal_r¿   r©   rq   )r†   rÇ  s     rN   rÄ  z!AriaPreTrainedModel._init_weights  sW   € åÔ% d¨FÑ3Ô3Ð3Ý�f�mÑ,Ô,ð 	PÝÔ˜vœ|°´Ô1NÐOÑOÔOÐOÐOÐOð	Pð 	PrP   N)r^   r_   r`   ri   rf   rÈ  Ú_can_compile_fullgraphrÏ  r:   rÑ  rÄ  rg   rP   rN   rÓ  rÓ    sZ   € € € € € € ØÐÐÑØÐØ"ÐØ"&Ðà€U„]�_„_ðPð Pñ „_ðPð Pð PrP   rÓ  c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚAriaTextModelr©   c                 óð   •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        |                      ¦   «          d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rg   )r·  )ry   r¸  r©   s     €rN   rô   z*AriaTextModel.__init__.<locals>.<listcomp>(  s$   ø€ ÐfÐfÐf¸Õ! &¨)Ñ4Ô4ÐfÐfÐfrP   F)	r„   rš   r   Ú
ModuleListr?   Únum_hidden_layersÚlayersÚgradient_checkpointingÚ	post_initrÌ   s    `€rN   rš   zAriaTextModel.__init__%  sq   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”mØfÐfÐfÐfÅeÈFÔLdÑFeÔFeÐfÑfÔfñ
ô 
ˆŒð ',ˆÔ#Ø�ŠÑÔÐÐÐrP   )r^   r_   r`   rS   rš   rŽ   r�   s   @rN   rØ  rØ  $  sD   ø€ € € € € ð˜~ð ð ð ð ð ð ð ð ð ð rP   rØ  c                   óF   ‡ — e Zd ZddiZdefˆ fd„Zeˆ fd„¦   «         Zˆ xZS )ÚAriaTextForCausalLMúlm_head.weightzmodel.embed_tokens.weightr©   c                 óþ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |j        | _        t          j        |j        |j        d¬¦  «        | _        |  	                    ¦   «          d S r¬  )
r„   rš   rØ  r½  Ú
vocab_sizer   r›   r­   Úlm_headrß  rÌ   s     €rN   rš   zAriaTextForCausalLM.__init__1  sj   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý" 6Ñ*Ô*ˆŒ
Ø Ô+ˆŒÝ”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒð 	�ŠÑÔÐÐÐrP   c                 ó<   •—  t          ¦   «         j        | fi |¤Ž d S r£   )r„   r¥   )r†   Úsuper_kwargsrˆ   s     €rN   r¥   zAriaTextForCausalLM.forward:  s'   ø€ à�‰ŒŒ˜Ð-Ð- Ð-Ð-Ð-Ð-Ð-rP   )	r^   r_   r`   Ú_tied_weights_keysrS   rš   r   r¥   rŽ   r�   s   @rN   rá  rá  .  su   ø€ € € € € Ø*Ð,GÐHÐð˜~ð ð ð ð ð ð ð ð.ð .ð .ð .ñ „^ð.ð .ð .ð .ð .rP   rá  c                   ó   — e Zd ZdS )ÚAriaCausalLMOutputWithPastNr’   rg   rP   rN   rê  rê  ?  r“   rP   rê  c                   ó   — e Zd ZdS )ÚAriaModelOutputWithPastNr’   rg   rP   rN   rì  rì  C  r“   rP   rì  c                   óV  ‡ — e Zd Zdefˆ fd„Zd„ Z	 	 	 ddej        dej        dz  dee	e         z  d	e
dz  d
ee         deez  fd„Z	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dedz  dej        dz  de
dz  d
ee         deez  fd„Zˆ xZS )Ú	AriaModelr©   c                 ór   •— t          ¦   «                              |¦  «         t          |¦  «        | _        d S r£   )r„   rš   rÅ   Úmulti_modal_projectorrÌ   s     €rN   rš   zAriaModel.__init__H  s1   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý%2°6Ñ%:Ô%:ˆÔ"Ð"Ð"rP   c                 ó:  — |€d S |                      d| j        j        j        | j        j        j        ¬¦  «        }|                      d| j        j        j        | j        j        j        ¬¦  «        }|                     d¬¦  «        dk                         ¦   «         S )Nr8   )Ú	dimensionrÕ   Ústepr!   )r2   r-  r6   r   )ÚunfoldÚvision_towerr©   r  rœ  r�   )r†   rç   Úpatches_subgrids      rN   Ú_create_patch_attention_maskz&AriaModel._create_patch_attention_maskL  s£   € ØÐØ�4à$×+Ò+ØØÔ"Ô)Ô4ØÔ"Ô)Ô4ð ,ñ 
ô 
ˆð
 *×0Ò0ØØÔ"Ô)Ô4ØÔ"Ô)Ô4ð 1ñ 
ô 
ˆð
  ×#Ò#¨Ð#Ñ1Ô1°AÒ5×;Ò;Ñ=Ô=Ð=rP   Nr2   ræ   rç   rn   Úoutput_hidden_statesr‡   rù   c                 ó   — |                       |¦  «        } | j        |f|dddœ|¤Ž}d }|�)|                     d¦  «        }	t          j        |	¦  «        }|j        |         }
|                      |
|¬¦  «        |_        |S )NT)Úpatch_attention_maskrø  Úreturn_dictr8   r¼   )r÷  rõ  r“  r:   Úlogical_notr¤   rð  Úpooler_output)r†   ræ   rç   rn   rø  r‡   rú  Úimage_outputsÚimage_attn_maskÚflattened_maskÚselected_image_features              rN   Úget_image_featureszAriaModel.get_image_features\  s®   € ð  $×@Ò@ÀÑLÔLÐØ)˜Ô)Øð
à!5Ø!%Øð	
ð 
ð
 ð
ð 
ˆð ˆØÐ+Ø1×9Ò9¸!Ñ<Ô<ˆNÝ#Ô/°Ñ?Ô?ˆOà!.Ô!<Ð=QÔ!RÐØ&*×&@Ò&@ÐAWÐcrÐ&@Ñ&sÔ&sˆÔ#àÐrP   Ú	input_idsÚattention_maskÚposition_idsr¿  Úinputs_embedsÚ	use_cachec	           	      óØ  — |€ |                       ¦   «         |¦  «        }|�‡|j        d         dk    rv|                      ||| j        j        d¬¦  «        j        }
|
                     |j        |j        ¦  «        }
|  	                    |||
¬¦  «        }| 
                    ||
¦  «        } | j        d|||||dœ|	¤Ž}t          |j        |r|j        nd |j        |j        |�|
nd ¬¦  «        S )Nr8   T)ræ   rç   rn   rû  )r  Úimage_features)r  r  r¿  r  r  )Úlast_hidden_stater¿  r¤   rÀ  Úimage_hidden_statesrg   )Úget_input_embeddingsr9   r  r©   rn   rý  r”  r5   r4   Úget_placeholder_maskÚmasked_scatterÚlanguage_modelrì  r
  r¿  r¤   rÀ  )r†   r  ræ   rç   r  r  r¿  r  r  r‡   r	  Úspecial_image_maskÚoutputss                rN   r¥   zAriaModel.forwardv  sH  € ð Ð Ø7˜D×5Ò5Ñ7Ô7¸	ÑBÔBˆMð Ð#¨Ô(;¸AÔ(>À!Ò(CÐ(CØ!×4Ò4Ø)Ø%Ø%)¤[Ô%EØ ð	 5ñ ô ô
 ð ð ,×.Ò.¨}Ô/CÀ]ÔEXÑYÔYˆNØ!%×!:Ò!:Ø¨À~ð ";ñ "ô "Ðð *×8Ò8Ð9KÈ^Ñ\Ô\ˆMà%�$Ô%ð 
Ø)Ø%Ø+Ø'Øð
ð 
ð ð
ð 
ˆõ 'Ø%Ô7Ø7@ÐJ˜GÔ3Ð3ÀdØ!Ô/ØÔ)Ø2>Ð2J  ÐPTð
ñ 
ô 
ð 	
rP   )Nr2   N)NNNNNNNN)r^   r_   r`   ri   rš   r÷  r:   ÚFloatTensorre   r‹   r�   r   r   rN  r   r  Ú
LongTensorrÛ   r	   r   rì  r¥   rŽ   r�   s   @rN   rî  rî  G  s¬  ø€ € € € € ð;˜zð ;ð ;ð ;ð ;ð ;ð ;ð>ð >ð >ð& 04Ø02Ø,0ðð àÔ'ðð Ô%¨Ñ,ðð " D¨¤I™oð	ð
 # T™kðð Ð+Ô,ðð 
Ð+Ñ	+ðð ð ð ð8 .2Ø15Ø.2Ø.2Ø04Ø(,Ø26Ø!%ð,
ð ,
àÔ# dÑ*ð,
ð Ô'¨$Ñ.ð,
ð Ô$ tÑ+ð	,
ð
 œ tÑ+ð,
ð Ô&¨Ñ-ð,
ð  ™ð,
ð Ô(¨4Ñ/ð,
ð ˜$‘;ð,
ð Ð-Ô.ð,
ð 
Ð(Ñ	(ð,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
rP   rî  zË
    Aria model for conditional generation tasks.

    This model combines a vision tower, a multi-modal projector, and a language model
    to perform tasks that involve both image and text inputs.
    )Úcustom_introc                   ó²  ‡ — e Zd ZddiZe	 	 ddej        dej        dz  deee         z  de	e
         d	eez  f
d
„¦   «         Zee	 	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dedz  dej        dz  dej        dz  dedz  deej        z  de	e
         d	eez  fd„¦   «         ¦   «         Z	 	 	 	 	 	 	 dˆ fd„	Zˆ xZS )ÚAriaForConditionalGenerationrâ  z(model.language_model.embed_tokens.weightNr2   ræ   rç   rn   r‡   rù   c                 ó.   —  | j         j        d|||dœ|¤ŽS )N)ræ   rç   rn   rg   )r½  r  )r†   ræ   rç   rn   r‡   s        rN   r  z/AriaForConditionalGeneration.get_image_features°  s:   € ð -ˆtŒzÔ,ð 
Ø%Ø!Ø!5ð
ð 
ð ð	
ð 
ð 	
rP   r   r  r  r  r¿  r  Úlabelsr  Úlogits_to_keepc                 ó`  —  | j         d||||||||	dœ|¤Ž}|d         }t          |
t          ¦  «        rt          |
 d¦  «        n|
}|                      |dd…|dd…f         ¦  «        }d}|�  | j        d||| j        j        j        dœ|¤Ž}t          |||j
        |j        |j        ¬¦  «        S )a{  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or `model.image_token_id` (where `model` is your instance of `AriaForConditionalGeneration`).
            Tokens with indices set to `model.image_token_id` are ignored (masked), the loss is only
            computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

        ```python
        >>> import httpx
        >>> from io import BytesIO
        >>> import torch
        >>> from PIL import Image
        >>> from io import BytesIO

        >>> from transformers import AutoProcessor, AutoModel
        >>> from transformers.image_utils import load_image

        >>> # Note that passing the image urls (instead of the actual pil images) to the processor is also possible
        >>> image1 = load_image("https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg")
        >>> image2 = load_image("https://cdn.britannica.com/59/94459-050-DBA42467/Skyline-Chicago.jpg")
        >>> image3 = load_image("https://cdn.britannica.com/68/170868-050-8DDE8263/Golden-Gate-Bridge-San-Francisco.jpg")

        >>> processor = AutoProcessor.from_pretrained("Rhymes-AI/Aria")
        >>> model = AutoModel.from_pretrained("Rhymes-AI/Aria", dtype=torch.bfloat16, device_map="auto")

        >>> # Create inputs
        >>> messages = [
        ...     {
        ...         "role": "user",
        ...         "content": [
        ...             {"type": "image"},
        ...             {"type": "text", "text": "In this image, we can see the city of New York, and more specifically the Statue of Liberty."},
        ...             {"type": "image"},
        ...             {"type": "text", "text": "What can we see in this image?"},
        ...         ]
        ...     },
        ...     {
        ...         "role": "user",
        ...         "content": [
        ...             {"type": "image"},
        ...             {"type": "text", "text": "In which city is that bridge located?"},
        ...         ]
        ...     }
        ... ]

        >>> prompts = [processor.apply_chat_template([message], add_generation_prompt=True) for message in messages]
        >>> images = [[image1, image2], [image3]]
        >>> inputs = processor(text=prompts, images=images, padding=True, return_tensors="pt").to(model.device)

        >>> # Generate
        >>> generated_ids = model.generate(**inputs, max_new_tokens=256)
        >>> generated_texts = processor.batch_decode(generated_ids, skip_special_tokens=True)

        >>> print(generated_texts[0])
        Assistant: There are buildings, trees, lights, and water visible in this image.

        >>> print(generated_texts[1])
        Assistant: The bridge is in San Francisco.
        ```)r  ræ   rç   r  r  r¿  r  r  r   N)Úlogitsr  rä  )Úlossr  r¿  r¤   rÀ  rg   )r½  r‚   re   Úslicerå  Úloss_functionr©   rU   rä  rê  r¿  r¤   rÀ  )r†   r  ræ   rç   r  r  r¿  r  r  r  r  r‡   r  r¤   Úslice_indicesr  r  s                    rN   r¥   z$AriaForConditionalGeneration.forward¿  s  € ðZ �$”*ð 

ØØ%Ø!Ø)Ø%Ø+Ø'Øð

ð 

ð ð

ð 

ˆð   œ
ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ%�4Ô%ð Ø f¸¼Ô9PÔ9[ðð Ø_eðð ˆDõ *ØØØ#Ô3Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
rP   Fc	           	      óŒ   •—  t          ¦   «         j        |f|||||dœ|	¤Ž}
|s|	                     dd¦  «        s
||
d<   ||
d<   |
S )N)r¿  r  r  r  Úis_first_iterationr  Træ   rç   )r„   Úprepare_inputs_for_generationrõ   )r†   r  r¿  r  ræ   rç   r  r  r!  r‡   Úmodel_inputsrˆ   s              €rN   r"  z:AriaForConditionalGeneration.prepare_inputs_for_generation+  s~   ø€ ð =•u‘w”wÔ<Øð
à+Ø'Ø)Ø)Ø1ð
ð 
ð ð
ð 
ˆð ð 	4 V§Z¢Z°¸TÑ%BÔ%Bð 	4ð
 ,8ˆL˜Ñ(Ø)3ˆL˜Ñ&àÐrP   r±  )
NNNNNNNNNr   )NNNNNNF)r^   r_   r`   rè  r   r:   r  re   r‹   r   r   rN  r   r  r   r  rÛ   r	   r�   rê  r¥   r"  rŽ   r�   s   @rN   r  r  ¥  s  ø€ € € € € ð +Ð,VÐWÐàð 04Ø02ð	
ð 
àÔ'ð
ð Ô%¨Ñ,ð
ð " D¨¤I™oð	
ð
 Ð+Ô,ð
ð 
Ð+Ñ	+ð
ð 
ð 
ñ „^ð
ð Øð .2Ø15Ø.2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ðh
ð h
àÔ# dÑ*ðh
ð Ô'¨$Ñ.ðh
ð Ô$ tÑ+ð	h
ð
 œ tÑ+ðh
ð Ô&¨Ñ-ðh
ð  ™ðh
ð Ô(¨4Ñ/ðh
ð Ô  4Ñ'ðh
ð ˜$‘;ðh
ð ˜eœlÑ*ðh
ð Ð+Ô,ðh
ð 
Ð+Ñ	+ðh
ð h
ð h
ñ „^ñ Ôðh
ðZ ØØØØØØ ðð ð ð ð ð ð ð ð ð rP   r  )
ri   rS   rä   rY  r  rÓ  r¼  rØ  rî  rá  )brD  r:   Úhuggingface_hub.dataclassesr   r   Útorchvision.transforms.v2r   r  Ú r   rÅ  Úactivationsr   Úcache_utilsr	   Úconfiguration_utilsr
   Úimage_processing_backendsr   Úimage_processing_utilsr   r   r   Úimage_transformsr   Úimage_utilsr   r   r   r   Úmodeling_flash_attention_utilsr   Úmodeling_outputsr   Úmodeling_utilsr   Úprocessing_utilsr   r   r   r   r   Úutilsr   r   r   r   r    Úautor"   r#   r$   Úllama.configuration_llamar%   Úllama.modeling_llamar&   r'   r(   r)   r*   r+   r,   Úllava.modeling_llavar-   r.   r/   r0   Ú
get_loggerr^   ÚloggerrO   rS   ri   r‘   ÚModuler•   r¨   rÅ   rÝ   rä   rQ  rS  rY  rw  rz  rƒ  rª  rµ  r·  r¼  rÓ  rØ  rá  rê  rì  rî  r  Ú__all__rg   rP   rN   ú<module>r;     sÙ  ðð €€€à €€€Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aØ 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BØ :Ð :Ð :Ð :Ð :Ð :Ø -Ð -Ð -Ð -Ð -Ð -Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fðð ð ð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð> €Ð+Ð,Ñ,Ô,Øð!ð !ð !ð !ð !�[ñ !ô !ñ „ñ -Ô,ð!ð: €Ð+Ð,Ñ,Ô,Øð*(ð *(ð *(ð *(ð *(Ð!ñ *(ô *(ñ „ñ -Ô,ð*(ðZ	ð 	ð 	ð 	ð 	�lñ 	ô 	ð 	ðð ð ð ð �r”yñ ô ð ð24ð 4ð 4ð 4ð 4˜œñ 4ô 4ð 4ðn>ð >ð >ð >ð >�B”Iñ >ô >ð >ðBð ð ð ð ˜|°5ð ñ ô ð ð$ ðrð rð rð rð rÐ+ñ rô rñ „ðrðjð ð ð ð �|¨5ð ñ ô ð ð*ð ð ð ð Ð*°%ð ñ ô ð ð  ð:ð :ð :ð :ð :�Nñ :ô :ñ „ð:ðzZð Zð Zð Zð Z˜8ñ Zô Zð Zð )
ð )
ð )
ð )
ð )
˜RœYñ )
ô )
ð )
ðX)ð )ð )ð )ð )�"”)ñ )ô )ð )ðX4ð 4ð 4ð 4ð 4�r”yñ 4ô 4ð 4ð"Hð Hð Hð Hð H˜ñ Hô Hð Hð,ð ,ð ,ð ,ð ,Ð,ñ ,ô ,ð ,ð$ ðUð Uð Uð Uð U˜oñ Uô Uñ „ðUð.
Pð 
Pð 
Pð 
Pð 
PÐ.ñ 
Pô 
Pð 
Pðð ð ð ð �Jñ ô ð ð.ð .ð .ð .ð .Ð1Ð3Cñ .ô .ð .ð"	ð 	ð 	ð 	ð 	Ð!<ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð6ñ 	ô 	ð 	ð[
ð [
ð [
ð [
ð [
�
ñ [
ô [
ð [
ð| €ððñ ô ð\ð \ð \ð \ð \Ð#@ñ \ô \ñô ð\ð~ð ð €€€rP   