§
    ‚Štj	 ã                   ól  — d Z ddlZddl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 ddlmZmZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZmZmZmZmZmZmZ ddl m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z'  e$j(        e)¦  «        Z*dej+        de,de,fd„Z- G d„ dej.        ¦  «        Z/ G d„ dej0        ¦  «        Z1 G d„ de¦  «        Z2 G d„ de¦  «        Z3 G d„ dej0        ¦  «        Z4 G d„ d ej0        ¦  «        Z5e# G d!„ d"e!¦  «        ¦   «         Z6 G d#„ d$e6¦  «        Z7 G d%„ d&e6¦  «        Z8e# G d'„ d(e6¦  «        ¦   «         Z9 e#d)¬*¦  «         G d+„ d,e6e¦  «        ¦   «         Z: e#d-¬*¦  «         G d.„ d/e6¦  «        ¦   «         Z;e# G d0„ d1e6¦  «        ¦   «         Z< G d2„ d3e6¦  «        Z= G d4„ d5e6e¦  «        Z>g d6¢Z?dS )7zPyTorch MVP model.é    N)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutputÚ#Seq2SeqQuestionAnsweringModelOutputÚSeq2SeqSequenceClassifierOutput)ÚPreTrainedModel)Úauto_docstringÚloggingÚtorch_compilable_checké   )Ú	MvpConfigÚ	input_idsÚpad_token_idÚdecoder_start_token_idc                 óô   — |                       | j        ¦  «        }| dd…dd…f                              ¦   «         |dd…dd…f<   ||dd…df<   |€t          d¦  «        ‚|                     |dk    |¦  «         |S )z1
    Shift input ids one token to the right.
    Néÿÿÿÿr   r   z1self.model.config.pad_token_id has to be defined.iœÿÿÿ)Ú	new_zerosÚshapeÚcloneÚ
ValueErrorÚmasked_fill_)r   r   r    Úshifted_input_idss       úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/mvp/modeling_mvp.pyÚshift_tokens_rightr*   .   s˜   € ð "×+Ò+¨I¬OÑ<Ô<ÐØ(¨¨¨¨C¨R¨C¨Ô0×6Ò6Ñ8Ô8Ð�a�a�a˜˜˜�eÑØ4Ð�a�a�a˜�dÑàÐÝÐLÑMÔMÐMà×"Ò"Ð#4¸Ò#<¸lÑKÔKÐKàÐó    c                   ób   ‡ — e Zd ZdZdedefˆ fd„Z	 ddej        ded	ej        dz  fˆ fd
„Zˆ xZ	S )ÚMvpLearnedPositionalEmbeddingzN
    This module learns positional embeddings up to a fixed maximum size.
    Únum_embeddingsÚembedding_dimc                 ój   •— d| _         t          ¦   «                              || j         z   |¦  «         d S ©Né   )ÚoffsetÚsuperÚ__init__)Úselfr.   r/   Ú	__class__s      €r)   r5   z&MvpLearnedPositionalEmbedding.__init__D   s3   ø€ ð ˆŒÝ‰Œ×Ò˜¨$¬+Ñ5°}ÑEÔEÐEÐEÐEr+   r   Nr   Úpast_key_values_lengthÚposition_idsc                 ó0  •— |€V|j         dd…         \  }}t          j        |||z   t          j        | j        j        ¬¦  «                             |d¦  «        }n|                     d¦  «        }t          ¦   «          	                    || j
        z   ¦  «        S )z3`input_ids' shape is expected to be [bsz x seqlen].Nr2   )ÚdtypeÚdevicer"   r   )r$   ÚtorchÚarangeÚlongÚweightr<   ÚexpandÚ	unsqueezer4   Úforwardr3   )r6   r   r8   r9   ÚbszÚseq_lenr7   s         €r)   rC   z%MvpLearnedPositionalEmbedding.forwardJ   s“   ø€ ð
 ÐØ$œ?¨2¨A¨2Ô.‰LˆC�Ý œ<Ø&Ð(>ÀÑ(HÕPUÔPZÐcgÔcnÔcuðñ ô çŠf�S˜"‰oŒoð ˆLð (×1Ò1°!Ñ4Ô4ˆLå‰wŒw�Š˜|¨d¬kÑ9Ñ:Ô:Ð:r+   )r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr5   r=   ÚTensorrC   Ú__classcell__©r7   s   @r)   r-   r-   ?   sª   ø€ € € € € ðð ðF sð F¸3ð Fð Fð Fð Fð Fð Fð mqð;ð ;Øœð;Ø?Bð;ØV[ÔVbÐeiÑVið;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r+   r-   c                   ó  ‡ — e Zd ZdZ	 	 	 	 ddedededz  d	edz  d
edz  dedz  fˆ fd„Z	 	 	 	 	 ddej	        dej	        dz  de
dz  dej	        dz  dej	        dz  dedeej	        ej	        dz  eej	                 dz  f         fd„Zˆ xZS )ÚMvpAttentionz=Multi-headed attention from 'Attention Is All You Need' paperç        FTNÚ	embed_dimÚ	num_headsÚdropoutÚ
is_decoderÚbiasÚ	layer_idxc                 óü  •— t          ¦   «                              ¦   «          || _        || _        || _        ||z  | _        | j        |z  | j        k    rt          d| j        › d|› d�¦  «        ‚| j        dz  | _        || _        || _	        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).g      à¿©rU   )r4   r5   rQ   rR   rS   Úhead_dimr&   ÚscalingrT   rV   r   ÚLinearÚk_projÚv_projÚq_projÚout_proj)r6   rQ   rR   rS   rT   rU   rV   r7   s          €r)   r5   zMvpAttention.__init__]   s	  ø€ õ 	‰Œ×ÒÑÔÐØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒàŒM˜IÑ%¨$¬.Ò8Ð8Ýð3ÈdÌnð 3ð 3Ø%.ð3ð 3ð 3ñô ð ð ”} dÑ*ˆŒØ$ˆŒØ"ˆŒå”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝœ	 )¨Y¸TÐBÑBÔBˆŒˆˆr+   Úhidden_statesÚkey_value_statesÚpast_key_valuesÚattention_maskÚattn_promptÚoutput_attentionsÚreturnc                 ó°
  — |du}|                      ¦   «         \  }	}
}|                      |¦  «        | j        z  }d}|�Ht          |t          ¦  «        r1|j                             | j        ¦  «        }|r|j        }n
|j	        }n|}|r|n|}|r3|�1|r/|j
        | j                 j        }|j
        | j                 j        }nÝ|                      |¦  «        }|                      |¦  «        }|                     |	d| j        | j        ¦  «                             dd¦  «        }|                     |	d| j        | j        ¦  «                             dd¦  «        }|�E|                     ||| j        ¦  «        \  }}|r$t          |t          ¦  «        rd|j        | j        <   |�Êt)          j        |d                              |	ddd¦  «        |gd¬¦  «        }t)          j        |d                              |	ddd¦  «        |gd¬¦  «        }|�`t)          j        |	d|
|d                               d¦  «        ¦  «                             |j        ¦  «        }t)          j        ||gd¬¦  «        }|	| j        z  d| j        f}|                     |	|
| j        | j        ¦  «                             dd¦  «        } |j        |Ž } |j        |Ž } |j        |Ž }|                      d¦  «        }t)          j        ||                     dd¦  «        ¦  «        }|                      ¦   «         |	| j        z  |
|fk    r2t9          d	|	| j        z  |
|f› d
|                      ¦   «         › �¦  «        ‚|�†|                      ¦   «         |	d|
|fk    r+t9          d|	d|
|f› d
|                      ¦   «         › �¦  «        ‚|                     |	| j        |
|¦  «        |z   }|                     |	| j        z  |
|¦  «        }t:          j                             |d¬¦  «        }|r=|                     |	| j        |
|¦  «        }|                     |	| j        z  |
|¦  «        }nd}t:          j                              || j         | j!        ¬¦  «        }t)          j        ||¦  «        }|                      ¦   «         |	| j        z  |
| j        fk    r5t9          d|	| j        |
| j        f› d
|                      ¦   «         › �¦  «        ‚|                     |	| j        |
| j        ¦  «        }|                     dd¦  «        }|                     |	|
| j"        ¦  «        }|  #                    |¦  «        }||fS )z#Input shape: Batch x Time x ChannelNFr"   r   r2   Tr   ©Údimz$Attention weights should be of size z	, but is z!Attention mask should be of size ©ÚpÚtrainingz `attn_output` should be of size )$Úsizer^   rZ   Ú
isinstancer   Ú
is_updatedÚgetrV   Úcross_attention_cacheÚself_attention_cacheÚlayersÚkeysÚvaluesr\   r]   ÚviewrR   rY   Ú	transposeÚupdater=   ÚcatrA   ÚzerosÚtor<   ÚreshapeÚbmmr&   r   Ú
functionalÚsoftmaxrS   rl   rQ   r_   )r6   r`   ra   rb   rc   rd   re   ÚkwargsÚis_cross_attentionrD   Útgt_lenÚ_Úquery_statesro   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚprompt_maskÚ
proj_shapeÚsrc_lenÚattn_weightsÚattn_weights_reshapedÚ
attn_probsÚattn_outputs                            r)   rC   zMvpAttention.forwardz   s¨  € ð .°TÐ9Ðà'×,Ò,Ñ.Ô.‰ˆˆW�að —{’{ =Ñ1Ô1°D´LÑ@ˆàˆ
ØÐ&Ý˜/Õ+>Ñ?Ô?ð 7Ø,Ô7×;Ò;¸D¼NÑKÔK�
Ø%ð Pà+:Ô+PÐ(Ð(à+:Ô+OÐ(Ð(à'6Ð$à-?ÐRÐ)Ð)À]ˆØð 	F /Ð"=À*Ð"=à-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàŸš ^Ñ4Ô4ˆJØŸ;š; ~Ñ6Ô6ˆLØ#Ÿš¨¨b°$´.À$Ä-ÑPÔP×ZÒZÐ[\Ð^_Ñ`Ô`ˆJØ'×,Ò,¨S°"°d´nÀdÄmÑTÔT×^Ò^Ð_`ÐbcÑdÔdˆLàÐ*à+?×+FÒ+FÀzÐS_ÐaeÔaoÑ+pÔ+pÑ(�
˜Là%ð F­*°_ÕFYÑ*ZÔ*Zð FØAE�OÔ.¨t¬~Ñ>àÐ"Ýœ K°¤N×$9Ò$9¸#¸rÀ2ÀrÑ$JÔ$JÈJÐ#WÐ]^Ð_Ñ_Ô_ˆJÝ œ9 k°!¤n×&;Ò&;¸CÀÀRÈÑ&LÔ&LÈlÐ%[ÐabÐcÑcÔcˆLØÐ)Ý#œk¨#¨q°'¸;Àq¼>×;NÒ;NÈqÑ;QÔ;QÑRÔR×UÒUÐVdÔVkÑlÔl�Ý!&¤¨K¸Ð+HÈrÐ!SÑ!SÔ!S�à˜DœNÑ*¨B°´Ð>ˆ
Ø#×(Ò(¨¨g°t´~ÀtÄ}ÑUÔU×_Ò_Ð`aÐcdÑeÔeˆØ+�|Ô+¨ZÐ8ˆØ'�ZÔ'¨Ð4ˆ
Ø+�|Ô+¨ZÐ8ˆà—/’/ !Ñ$Ô$ˆÝ”y ¨z×/CÒ/CÀAÀqÑ/IÔ/IÑJÔJˆà×ÒÑÔ 3¨¬Ñ#7¸À'Ð"JÒJÐJÝð*¸¸d¼nÑ8LÈgÐW^Ð7_ð *ð *Ø ×%Ò%Ñ'Ô'ð*ð *ñô ð ð
 Ð%Ø×"Ò"Ñ$Ô$¨¨a°¸'Ð(BÒBÐBÝ Øt¸¸aÀÈ'Ð8RÐtÐtÐ]k×]pÒ]pÑ]rÔ]rÐtÐtñô ð ð (×,Ò,¨S°$´.À'È7ÑSÔSÐVdÑdˆLØ'×,Ò,¨S°4´>Ñ-AÀ7ÈGÑTÔTˆLå”}×,Ò,¨\¸rÐ,ÑBÔBˆàð 	)ð
 %1×$5Ò$5°c¸4¼>È7ÐT[Ñ$\Ô$\Ð!Ø0×5Ò5°c¸D¼NÑ6JÈGÐU\Ñ]Ô]ˆLˆLà$(Ð!å”]×*Ò*¨<¸4¼<ÐRVÔR_Ð*Ñ`Ô`ˆ
å”i 
¨LÑ9Ô9ˆà×ÒÑÔ #¨¬Ñ"6¸ÀÄÐ!OÒOÐOÝð)°C¸¼ÈÐRVÔR_Ð3`ð )ð )Ø×$Ò$Ñ&Ô&ð)ð )ñô ð ð
 "×&Ò& s¨D¬N¸GÀTÄ]ÑSÔSˆØ!×+Ò+¨A¨qÑ1Ô1ˆð "×)Ò)¨#¨w¸¼ÑGÔGˆà—m’m KÑ0Ô0ˆàÐ1Ð1Ð1r+   )rP   FTN)NNNNF)rF   rG   rH   rI   rJ   ÚfloatÚboolr5   r=   rK   r
   ÚtuplerC   rL   rM   s   @r)   rO   rO   Z   sh  ø€ € € € € ØGÐGð !$Ø"'Ø Ø!%ðCð CàðCð ðCð ˜‘ð	Cð
 ˜4‘KðCð �T‰kðCð ˜$‘;ðCð Cð Cð Cð Cð Cð@ 15Ø(,Ø.2Ø+/Ø"'ðp2ð p2à”|ðp2ð  œ,¨Ñ-ðp2ð  ™ð	p2ð
 œ tÑ+ðp2ð ”\ DÑ(ðp2ð  ðp2ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸¼Ô2EÈÑ2LÐLÔ	Mðp2ð p2ð p2ð p2ð p2ð p2ð p2ð p2r+   rO   c                   ó’   ‡ — e Zd Zdefˆ fd„Z	 ddej        dej        dej        dedz  d	eej        ej        dz  f         f
d
„Z	ˆ xZ
S )ÚMvpEncoderLayerÚconfigc                 ó  •— t          ¦   «                              ¦   «          |j        | _        t	          | j        |j        |j        ¬¦  «        | _        t          j	        | j        ¦  «        | _
        |j        | _        t          |j                 | _        |j        | _        t          j        | j        |j        ¦  «        | _        t          j        |j        | j        ¦  «        | _        t          j	        | j        ¦  «        | _        d S )N)rQ   rR   rS   )r4   r5   Úd_modelrQ   rO   Úencoder_attention_headsÚattention_dropoutÚ	self_attnr   Ú	LayerNormÚself_attn_layer_normrS   r	   Úactivation_functionÚactivation_fnÚactivation_dropoutr[   Úencoder_ffn_dimÚfc1Úfc2Úfinal_layer_norm©r6   r•   r7   s     €r)   r5   zMvpEncoderLayer.__init__î   sÍ   ø€ Ý‰Œ×ÒÑÔÐØœˆŒÝ%Ø”nØÔ4ØÔ,ð
ñ 
ô 
ˆŒõ
 %'¤L°´Ñ$@Ô$@ˆÔ!Ø”~ˆŒÝ# FÔ$>Ô?ˆÔØ"(Ô";ˆÔÝ”9˜Tœ^¨VÔ-CÑDÔDˆŒÝ”9˜VÔ3°T´^ÑDÔDˆŒÝ "¤¨T¬^Ñ <Ô <ˆÔÐÐr+   Fr`   rc   Úself_attn_promptre   Nrf   c                 ó  — |}|                       ||||¬¦  «        \  }}t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }|}|                      |                      |¦  «        ¦  «        }t          j                             || j        | j        ¬¦  «        }|  	                    |¦  «        }t          j                             || j        | j        ¬¦  «        }||z   }|  
                    |¦  «        }|j        t          j        k    r_t          j        |¦  «                             ¦   «         s9t          j        |j        ¦  «        j        dz
  }t          j        || |¬¦  «        }||fS )a­  
        Args:
            hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
            attention_mask (`torch.FloatTensor`): attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            self_attn_prompt (`torch.FloatTensor`): prompt of self attention of shape
                `(2, encoder_attention_heads, pro_len, head_dim)`.
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
        )r`   rc   rd   re   rj   iè  )ÚminÚmax)rš   r   r~   rS   rl   rœ   rž   r¡   rŸ   r¢   r£   r;   r=   Úfloat16ÚisfiniteÚallÚfinfor¨   Úclamp)r6   r`   rc   r¥   re   ÚresidualrŒ   Úclamp_values           r)   rC   zMvpEncoderLayer.forwardþ   sr  € ð$ !ˆØ&*§n¢nØ'Ø)Ø(Ø/ð	 '5ñ '
ô '
Ñ#ˆ�|õ œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×1Ò1°-Ñ@Ô@ˆà ˆØ×*Ò*¨4¯8ª8°MÑ+BÔ+BÑCÔCˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš Ñ/Ô/ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×-Ò-¨mÑ<Ô<ˆàÔ¥%¤-Ò/Ð/½¼À}Ñ8UÔ8U×8YÒ8YÑ8[Ô8[Ð/Ýœ+ mÔ&9Ñ:Ô:Ô>ÀÑEˆKÝ!œK¨¸K¸<È[ÐYÑYÔYˆMà˜lÐ*Ð*r+   ©F)rF   rG   rH   r   r5   r=   ÚFloatTensorr‘   r’   rC   rL   rM   s   @r)   r”   r”   í   s´   ø€ € € € € ð=˜yð =ð =ð =ð =ð =ð =ð* */ð)+ð )+àÔ(ð)+ð Ô)ð)+ð  Ô+ð	)+ð
   $™;ð)+ð 
ˆuÔ  %Ô"3°dÑ":Ð:Ô	;ð)+ð )+ð )+ð )+ð )+ð )+ð )+ð )+r+   r”   c                   ó  ‡ — e Zd Zddefˆ fd„Z	 	 	 	 	 	 	 	 ddej        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dz  dedz  de	ej
        e	ej
        ej
        f         dz  f         fd„Zˆ xZS )ÚMvpDecoderLayerNr•   c                 ó¢  •— t          ¦   «                              ¦   «          |j        | _        t	          | j        |j        |j        d|¬¦  «        | _        |j        | _        t          |j
                 | _        |j        | _        t          j        | j        ¦  «        | _        t	          | j        |j        |j        d|¬¦  «        | _        t          j        | j        ¦  «        | _        t          j        | j        |j        ¦  «        | _        t          j        |j        | j        ¦  «        | _        t          j        | j        ¦  «        | _        d S )NT)rQ   rR   rS   rT   rV   )rS   rT   rV   )r4   r5   r—   rQ   rO   Údecoder_attention_headsr™   rš   rS   r	   r�   rž   rŸ   r   r›   rœ   Úencoder_attnÚencoder_attn_layer_normr[   Údecoder_ffn_dimr¡   r¢   r£   )r6   r•   rV   r7   s      €r)   r5   zMvpDecoderLayer.__init__+  s  ø€ Ý‰Œ×ÒÑÔÐØœˆŒå%Ø”nØÔ4ØÔ,ØØð
ñ 
ô 
ˆŒð ”~ˆŒÝ# FÔ$>Ô?ˆÔØ"(Ô";ˆÔå$&¤L°´Ñ$@Ô$@ˆÔ!Ý(ØŒNØÔ*ØÔ,ØØð
ñ 
ô 
ˆÔõ (*¤|°D´NÑ'CÔ'CˆÔ$Ý”9˜Tœ^¨VÔ-CÑDÔDˆŒÝ”9˜VÔ3°T´^ÑDÔDˆŒÝ "¤¨T¬^Ñ <Ô <ˆÔÐÐr+   FTr`   rc   Úencoder_hidden_statesÚencoder_attention_maskr¥   Úcross_attn_promptrb   re   Ú	use_cacherf   c
                 ó  — |}|                       |||||¬¦  «        \  }}t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }d}|�f|}|                      ||||||¬¦  «        \  }}t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }|}|                      |  	                    |¦  «        ¦  «        }t          j                             || j
        | j        ¬¦  «        }|                      |¦  «        }t          j                             || j        | j        ¬¦  «        }||z   }|                      |¦  «        }|f}|r|||fz  }|S )aú  
        Args:
            hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
            attention_mask (`torch.FloatTensor`): attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            encoder_hidden_states (`torch.FloatTensor`):
                cross attention input to the layer of shape `(batch, seq_len, embed_dim)`
            encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            self_attn_prompt (`torch.FloatTensor`): prompt of self attention of shape
                `(2, decoder_attention_heads, pro_len, head_dim)`.
            cross_attn_prompt (`torch.FloatTensor`): prompt of cross attention of shape
                `(2, decoder_attention_heads, pro_len, head_dim)`.
            past_key_values (`Cache`): cached past key and value projection states
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
        )r`   rb   rc   rd   re   rj   N)r`   ra   rc   rd   rb   re   )rš   r   r~   rS   rl   rœ   r¶   r·   rž   r¡   rŸ   r¢   r£   )r6   r`   rc   r¹   rº   r¥   r»   rb   re   r¼   r€   r®   Úself_attn_weightsÚcross_attn_weightsÚoutputss                  r)   rC   zMvpDecoderLayer.forwardG  s¿  € ð> !ˆð ,0¯>ª>Ø'Ø+Ø)Ø(Ø/ð ,:ñ ,
ô ,
Ñ(ˆÐ(õ œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×1Ò1°-Ñ@Ô@ˆð "ÐØ Ð,Ø$ˆHà04×0AÒ0AØ+Ø!6Ø5Ø-Ø /Ø"3ð 1Bñ 1ô 1Ñ-ˆMÐ-õ œM×1Ò1°-À4Ä<ÐZ^ÔZgÐ1ÑhÔhˆMØ$ }Ñ4ˆMØ ×8Ò8¸ÑGÔGˆMð !ˆØ×*Ò*¨4¯8ª8°MÑ+BÔ+BÑCÔCˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš Ñ/Ô/ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆØ×-Ò-¨mÑ<Ô<ˆà Ð"ˆàð 	?ØÐ)Ð+=Ð>Ñ>ˆGàˆr+   ©N)NNNNNNFT)rF   rG   rH   r   r5   r=   rK   r
   r‘   r’   r±   rC   rL   rM   s   @r)   r³   r³   *  sE  ø€ € € € € ð=ð =˜yð =ð =ð =ð =ð =ð =ð> /3Ø59Ø6:Ø04Ø15Ø(,Ø).Ø!%ðLð Là”|ðLð œ tÑ+ðLð  %œ|¨dÑ2ð	Lð
 !&¤¨tÑ 3ðLð  œ,¨Ñ-ðLð !œ<¨$Ñ.ðLð  ™ðLð   $™;ðLð ˜$‘;ðLð 
ˆuÔ  %¨Ô(9¸5Ô;LÐ(LÔ"MÐPTÑ"TÐTÔ	UðLð Lð Lð Lð Lð Lð Lð Lr+   r³   c                   óX   ‡ — e Zd ZdZdedededefˆ fd„Zdej        dej        fd	„Z	ˆ xZ
S )
ÚMvpClassificationHeadz-Head for sentence-level classification tasks.Ú	input_dimÚ	inner_dimÚnum_classesÚpooler_dropoutc                 óä   •— t          ¦   «                              ¦   «          t          j        ||¦  «        | _        t          j        |¬¦  «        | _        t          j        ||¦  «        | _        d S )N©rk   )r4   r5   r   r[   ÚdenseÚDropoutrS   r_   )r6   rÄ   rÅ   rÆ   rÇ   r7   s        €r)   r5   zMvpClassificationHead.__init__š  sY   ø€ õ 	‰Œ×ÒÑÔÐÝ”Y˜y¨)Ñ4Ô4ˆŒ
Ý”z NÐ3Ñ3Ô3ˆŒÝœ	 )¨[Ñ9Ô9ˆŒˆˆr+   r`   rf   c                 óÖ   — |                       |¦  «        }|                      |¦  «        }t          j        |¦  «        }|                       |¦  «        }|                      |¦  «        }|S rÁ   )rS   rÊ   r=   Útanhr_   )r6   r`   s     r)   rC   zMvpClassificationHead.forward¦  s[   € ØŸš ]Ñ3Ô3ˆØŸ
š
 =Ñ1Ô1ˆÝœ
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš mÑ4Ô4ˆØÐr+   )rF   rG   rH   rI   rJ   r�   r5   r=   rK   rC   rL   rM   s   @r)   rÃ   rÃ   —  s�   ø€ € € € € Ø7Ð7ð
:àð
:ð ð
:ð ð	
:ð
 ð
:ð 
:ð 
:ð 
:ð 
:ð 
:ð U¤\ð °e´lð ð ð ð ð ð ð ð r+   rÃ   c                   óR   ‡ — e Zd ZdZˆ fd„Zdej        deej                 fd„Zˆ xZ	S )Ú	MvpPromptz)Layer-wise prompt for encoder or decoder.c           	      óø  •— t          ¦   «                              ¦   «          |j        | _        || _        || _        |j        |z  | _        t          j        |j	        ¬¦  «        | _	        t          j
        |j        |j        ¦  «        | _        t          j        t          j        |j        |j        ¦  «        t          j        ¦   «         t          j        |j        |dz  |j        z  ¦  «        ¦  «        | _        d S )NrÉ   r2   )r4   r5   Úprompt_lengthÚ
num_layersrR   r—   rY   r   rË   rS   Ú	EmbeddingÚprompt_embeddingÚ
Sequentialr[   Úprompt_mid_dimÚGELUÚprompt_trans)r6   r•   rÒ   rR   r7   s       €r)   r5   zMvpPrompt.__init__²  sÃ   ø€ Ý‰Œ×ÒÑÔÐØ#Ô1ˆÔØ$ˆŒØ"ˆŒØœ¨)Ñ3ˆŒÝ”z F¤NÐ3Ñ3Ô3ˆŒÝ "¤¨VÔ-AÀ6Ä>Ñ RÔ RˆÔÝœMÝŒI�f”n fÔ&;Ñ<Ô<ÝŒG‰IŒIÝŒI�fÔ+¨Z¸!©^¸f¼nÑ-LÑMÔMñ
ô 
ˆÔÐÐr+   Ú
prompt_idsrf   c                 ó2  — |                       |                      |¦  «        ¦  «        }|                     | j        | j        dz  | j        | j        ¦  «        }|                      |¦  «        }|                     g d¢¦  «         	                    d¦  «        }|S )Nr2   )r   r2   r   r   )
rØ   rÔ   rv   rÑ   rÒ   rR   rY   rS   ÚpermuteÚsplit)r6   rÙ   Úprompts      r)   rC   zMvpPrompt.forwardÀ  sƒ   € Ø×"Ò" 4×#8Ò#8¸Ñ#DÔ#DÑEÔEˆØ—’˜TÔ/°´À1Ñ1DÀdÄnÐVZÔVcÑdÔdˆØ—’˜fÑ%Ô%ˆØ—’   Ñ-Ô-×3Ò3°AÑ6Ô6ˆØˆr+   )
rF   rG   rH   rI   r5   r=   rK   r’   rC   rL   rM   s   @r)   rÏ   rÏ   ¯  si   ø€ € € € € Ø3Ð3ð
ð 
ð 
ð 
ð 
ð %¤,ð °5¸¼Ô3Fð ð ð ð ð ð ð ð r+   rÏ   c                   óH   ‡ — e Zd ZU eed<   dZdZˆ fd„Zed„ ¦   «         Z	ˆ xZ
S )ÚMvpPreTrainedModelr•   ÚmodelTc                 óª   •— t          ¦   «                              |¦  «         t          |t          ¦  «        rt	          j        |j        ¦  «         d S d S rÁ   )r4   Ú_init_weightsrn   ÚMvpForConditionalGenerationÚinitÚzeros_Úfinal_logits_bias)r6   Úmoduler7   s     €r)   râ   z MvpPreTrainedModel._init_weightsÎ  sQ   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ9Ñ:Ô:ð 	2ÝŒK˜Ô0Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r+   c                 ó–   — | j         j        }t          j        g d¢dddd|gg| j        ¬¦  «        }|                     |¦  «        |dœ}|S )N)r   é   é
   é   r2   r   é   é   r2   ©r<   )rc   r   )r•   r   r=   Útensorr<   Úne)r6   Ú	pad_tokenr   Údummy_inputss       r)   rò   zMvpPreTrainedModel.dummy_inputsÓ  sa   € à”KÔ,ˆ	Ý”LÐ"2Ð"2Ð"2°Q¸¸2¸qÀ)Ð4LÐ!MÐVZÔVaÐbÑbÔbˆ	à'Ÿlšl¨9Ñ5Ô5Ø"ð
ð 
ˆð Ðr+   )rF   rG   rH   r   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingrâ   Úpropertyrò   rL   rM   s   @r)   rß   rß   È  sm   ø€ € € € € € àÐÐÑØÐØ&*Ð#ð2ð 2ð 2ð 2ð 2ð
 ðð ñ „Xðð ð ð ð r+   rß   c                   óÂ   ‡ — e Zd ZdZddedej        dz  dedz  fˆ fd„Z	 	 	 	 	 	 dde	j
        dz  d	e	j        dz  d
e	j        dz  dedz  dedz  dedz  deez  fd„Zˆ xZS )Ú
MvpEncodera  
    Transformer encoder consisting of *config.encoder_layers* self attention layers. Each layer is a
    [`MvpEncoderLayer`].

    Args:
        config: MvpConfig
        embed_tokens (nn.Embedding): output embedding
        use_prompt (bool): whether to use prompt
    NFr•   Úembed_tokensÚ
use_promptc                 ó¼  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        ‰j        }‰j        | _        ‰j        | _	        ‰j
        rt          j        |¦  «        nd| _        t          j        ‰j        || j        ¦  «        | _        t%          ‰j        |¦  «        | _        t          j        ˆfd„t+          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        |¦  «        | _        || _        |r,‰j        | _        t9          ‰‰j        ‰j        ¦  «        | _        d| _        |                       ¦   «          d S )Nç      ð?c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS © )r”   )Ú.0rƒ   r•   s     €r)   ú
<listcomp>z'MvpEncoder.__init__.<locals>.<listcomp>ú  s!   ø€ Ð$cÐ$cÐ$cÀ¥_°VÑ%<Ô%<Ð$cÐ$cÐ$cr+   F)!r4   r5   rS   Úencoder_layerdropÚ	layerdropr—   r   Úpadding_idxÚmax_position_embeddingsÚmax_source_positionsÚscale_embeddingÚmathÚsqrtÚembed_scaler   rÓ   Ú
vocab_sizerù   r-   Úembed_positionsÚ
ModuleListÚrangeÚencoder_layersrs   r›   Úlayernorm_embeddingrú   rÑ   rÏ   r˜   r¥   Úgradient_checkpointingÚ	post_init)r6   r•   rù   rú   rQ   r7   s    `   €r)   r5   zMvpEncoder.__init__é  sB  øø€ Ý‰Œ×Ò˜Ñ Ô Ð à”~ˆŒØÔ1ˆŒà”Nˆ	Ø!Ô.ˆÔØ$*Ô$BˆÔ!Ø39Ô3IÐR�4œ9 YÑ/Ô/Ð/ÈsˆÔåœL¨Ô):¸IÀtÔGWÑXÔXˆÔå<ØÔ*Øñ 
ô  
ˆÔõ ”mÐ$cÐ$cÐ$cÐ$cÅeÈFÔLaÑFbÔFbÐ$cÑ$cÔ$cÑdÔdˆŒÝ#%¤<°	Ñ#:Ô#:ˆÔ à$ˆŒØð 	Ø!'Ô!5ˆDÔÝ$-ØØÔ%ØÔ.ñ%ô %ˆDÔ!ð ',ˆÔ#à�ŠÑÔÐÐÐr+   r   rc   Úinputs_embedsre   Úoutput_hidden_statesÚreturn_dictrf   c                 ó¤  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|�|�t	          d¦  «        ‚|�&|}|j        }	|                     d|	d         ¦  «        }n=|�,|                     ¦   «         dd…         }	|dd…dd…df         }nt	          d¦  «        ‚|€|                      |¦  «        | j	        z  }|  
                    |¦  «        }
||
z   }|                      |¦  «        }t          j                             || j        | j        ¬¦  «        }| j        rFt#          j        | j        ¦  «                             | j        ¦  «        }|                      |¦  «        }|�t/          | j         ||¬¦  «        }|rdnd}|rdnd}t1          | j        ¦  «        D ]p\  }}|r||fz   }d}| j        r!t#          j        g ¦  «        }|| j        k     rd	}|rd
}n& |||| j        r||         nd|¬¦  «        }|d         }|r||d         fz   }Œq|r||fz   }|st9          d„ |||fD ¦   «         ¦  «        S t;          |||¬¦  «        S )a8  
        Args:
            input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
                Indices of input sequence tokens in the vocabulary. Padding will be ignored by default should you
                provide it.

                Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
                [`PreTrainedTokenizer.__call__`] for details.

                [What are input IDs?](../glossary#input-ids)
            attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
                Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

                - 1 for tokens that are **not masked**,
                - 0 for tokens that are **masked**.

                [What are attention masks?](../glossary#attention-mask)
            inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*):
                Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation.
                This is useful if you want more control over how to convert `input_ids` indices into associated vectors
                than the model's internal embedding lookup matrix.
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
            output_hidden_states (`bool`, *optional*):
                Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors
                for more detail.
            return_dict (`bool`, *optional*):
                Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
        NzDYou cannot specify both input_ids and inputs_embeds at the same timer"   z5You have to specify either input_ids or inputs_embedsrj   )r•   r  rc   rþ   FT)NN)r¥   re   r   r   c              3   ó   K  — | ]}|®|V — Œ	d S rÁ   rþ   ©rÿ   Úvs     r)   ú	<genexpr>z%MvpEncoder.forward.<locals>.<genexpr>{  s(   è è € ÐeÐe˜qÐWXÐWd˜ÐWdÐWdÐWdÐWdÐeÐer+   ©Úlast_hidden_stater`   Ú
attentions)r•   re   r  r  r&   r$   rv   rm   rù   r	  r  r  r   r~   rS   rl   rú   r=   r>   rÑ   r{   r<   r¥   r   Ú	enumeraters   Úrandr  r’   r   )r6   r   rc   r  re   r  r  r€   ÚinputÚinput_shapeÚ	embed_posr`   rÙ   r¥   Úencoder_statesÚall_attentionsÚidxÚencoder_layerÚto_dropÚdropout_probabilityÚlayer_outputss                        r)   rC   zMvpEncoder.forward
  s  € ðP 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆð Ð  ]Ð%>ÝÐcÑdÔdÐdØÐ"ØˆEØœ+ˆKØ!Ÿš r¨;°r¬?Ñ;Ô;ˆIˆIØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKØ! ! ! ! Q Q Q¨ (Ô+ˆEˆEåÐTÑUÔUÐUàÐ Ø ×-Ò-¨iÑ8Ô8¸4Ô;KÑKˆMà×(Ò(¨Ñ/Ô/ˆ	à%¨	Ñ1ˆØ×0Ò0°Ñ?Ô?ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆð Œ?ð 	AÝœ dÔ&8Ñ9Ô9×<Ò<¸T¼[ÑIÔIˆJØ#×4Ò4°ZÑ@Ô@Ðð Ð%Ý6Ø”{Ø+Ø-ðñ ô ˆNð  4Ð=˜˜¸ˆØ0Ð:˜˜°dˆå"+¨D¬KÑ"8Ô"8ð 	Fð 	FÑˆC�Ø#ð CØ!/°=Ð2BÑ!B�àˆGØŒ}ð #Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Ø"�Gàð 
1Ø ,��à - Ø!Ø"Ø?C¼Ð&XÐ&6°sÔ&;Ð&;ÐTXØ&7ð	!ñ !ô !�ð !.¨aÔ 0�à ð FØ!/°=ÀÔ3CÐ2EÑ!E�øàð 	?Ø+¨}Ð.>Ñ>ˆNàð 	fÝÐeÐe ]°NÀNÐ$SÐeÑeÔeÑeÔeÐeÝØ+¸>ÐVdð
ñ 
ô 
ð 	
r+   ©NF)NNNNNN)rF   rG   rH   rI   r   r   rÓ   r‘   r5   r=   Ú
LongTensorrK   r±   r’   r   rC   rL   rM   s   @r)   rø   rø   Þ  s  ø€ € € € € ðð ðð ˜yð ¸¼ÀtÑ8Kð Ð`dÐgkÑ`kð ð ð ð ð ð ðF .2Ø.2Ø26Ø)-Ø,0Ø#'ðt
ð t
àÔ# dÑ*ðt
ð œ tÑ+ðt
ð Ô(¨4Ñ/ð	t
ð
   $™;ðt
ð # T™kðt
ð ˜D‘[ðt
ð 
�Ñ	 ðt
ð t
ð t
ð t
ð t
ð t
ð t
ð t
r+   rø   c                   óò   ‡ — e Zd ZdZddededz  fˆ 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dz  dej
        dz  dedz  dedz  dedz  dedz  deez  fd„Zˆ xZS )Ú
MvpDecoderzû
    Transformer decoder consisting of *config.decoder_layers* layers. Each layer is a [`MvpDecoderLayer`]

    Args:
        config: MvpConfig
        embed_tokens (nn.Embedding): output embedding
        use_prompt (bool): whether to use prompt
    Fr•   rú   Nc                 ó  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j	        rt          j        ‰j        ¦  «        nd| _        t          j        ‰j        ‰j        | j        ¦  «        | _        t%          ‰j        ‰j        ¦  «        | _        t          j        ˆfd„t+          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        ‰j        ¦  «        | _        || _        |rL‰j        | _        t9          ‰‰j        ‰j        ¦  «        | _        t9          ‰‰j        ‰j        ¦  «        | _        d| _         |  !                    ¦   «          d S )Nrü   c                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS ))rV   )r³   )rÿ   Úir•   s     €r)   r   z'MvpDecoder.__init__.<locals>.<listcomp>˜  s&   ø€ Ð$pÐ$pÐ$pÈa¥_°VÀqÐ%IÑ%IÔ%IÐ$pÐ$pÐ$pr+   F)"r4   r5   rS   Údecoder_layerdropr  r   r  r  Úmax_target_positionsr  r  r  r—   r	  r   rÓ   r
  rù   r-   r  r  r  Údecoder_layersrs   r›   r  rú   rÑ   rÏ   rµ   r¥   r»   r  r  )r6   r•   rú   r7   s    ` €r)   r5   zMvpDecoder.__init__‹  si  øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø”~ˆŒØÔ1ˆŒØ!Ô.ˆÔØ$*Ô$BˆÔ!Ø8>Ô8NÐW�4œ9 V¤^Ñ4Ô4Ð4ÐTWˆÔåœL¨Ô):¸F¼NÈDÔL\Ñ]Ô]ˆÔÝ<ØÔ*ØŒNñ 
ô  
ˆÔõ ”mÐ$pÐ$pÐ$pÐ$pÕSXÐY_ÔYnÑSoÔSoÐ$pÑ$pÔ$pÑqÔqˆŒÝ#%¤<°´Ñ#?Ô#?ˆÔ à$ˆŒØð 	Ø!'Ô!5ˆDÔÝ$-ØØÔ%ØÔ.ñ%ô %ˆDÔ!õ
 &/ØØÔ%ØÔ.ñ&ô &ˆDÔ"ð ',ˆÔ#à�ŠÑÔÐÐÐr+   r   rc   r¹   rº   rb   r  r¼   re   r  r  rf   c                 ó´  — |�|n| j         j        }|	�|	n| j         j        }	|�|n| j         j        }|
�|
n| j         j        }
|�|�t          d¦  «        ‚|�&|}|j        }|                     d|d         ¦  «        }n=|�,|                     ¦   «         dd…         }|dd…dd…df         }nt          d¦  «        ‚|€|  	                    |¦  «        | j
        z  }| j        r%| j        r|rt                               d¦  «         d}|r[|€Y|€| j         j        r6t!          t#          | j         ¬¦  «        t#          | j         ¬¦  «        ¦  «        nt#          | j         ¬¦  «        }|�|                     ¦   «         nd}t'          | j         |||¬	¦  «        }|�|�t)          | j         |||¬
¦  «        }|                      ||¦  «        }||z   }|                      |¦  «        }t.          j                             || j        | j        ¬¦  «        }| j        r[t7          j        | j        ¦  «                             | j        ¦  «        }|                       |¦  «        }|  !                    |¦  «        }|	rdnd}|rdnd}|r|�dnd}tE          | j#        ¦  «        D ]Š\  }}|	r||fz  }| j        r t7          j$        g ¦  «        }|| j%        k     rŒ4 |||||| j        r||         nd| j        r||         nd|||¬¦	  «	        }|d         }|r||d         fz  }|�||d         fz  }Œ‹|	r||fz  }|
stM          d„ |||||fD ¦   «         ¦  «        S tO          |||||¬¦  «        S )aU  
        Args:
            input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
                Indices of input sequence tokens in the vocabulary. Padding will be ignored by default should you
                provide it.

                Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
                [`PreTrainedTokenizer.__call__`] for details.

                [What are input IDs?](../glossary#input-ids)
            attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
                Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

                - 1 for tokens that are **not masked**,
                - 0 for tokens that are **masked**.

                [What are attention masks?](../glossary#attention-mask)
            encoder_hidden_states (`torch.FloatTensor` of shape `(batch_size, encoder_sequence_length, hidden_size)`, *optional*):
                Sequence of hidden-states at the output of the last layer of the encoder. Used in the cross-attention
                of the decoder.
            encoder_attention_mask (`torch.LongTensor` of shape `(batch_size, encoder_sequence_length)`, *optional*):
                Mask to avoid performing cross-attention on padding tokens indices of encoder input_ids. Mask values
                selected in `[0, 1]`:

                - 1 for tokens that are **not masked**,
                - 0 for tokens that are **masked**.

                [What are attention masks?](../glossary#attention-mask)
            past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
                It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

                Contains pre-computed hidden-states (key and values in the self-attention blocks and in the
                cross-attention blocks) that can be used (see `past_key_values` input) to speed up sequential decoding.

                If `past_key_values` are used, the user can optionally input only the last `decoder_input_ids` (those
                that don't have their past key value states given to this model) of shape `(batch_size, 1)` instead of
                all `decoder_input_ids` of shape `(batch_size, sequence_length)`.
            inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*):
                Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation.
                This is useful if you want more control over how to convert `input_ids` indices into associated vectors
                than the model's internal embedding lookup matrix.
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
            output_hidden_states (`bool`, *optional*):
                Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors
                for more detail.
            return_dict (`bool`, *optional*):
                Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
        NzTYou cannot specify both decoder_input_ids and decoder_inputs_embeds at the same timer"   zEYou have to specify either decoder_input_ids or decoder_inputs_embedszZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...F)r•   r   )r•   r  rc   rb   )r•   r  rc   r¹   rj   rþ   )rº   r¥   r»   rb   re   r¼   r   r2   c              3   ó   K  — | ]}|®|V — Œ	d S rÁ   rþ   r  s     r)   r  z%MvpDecoder.forward.<locals>.<genexpr>W  s0   è è € ð ð àØ�=ð à �=�=�=ðð r+   )r  rb   r`   r  Úcross_attentions)(r•   re   r  r¼   r  r&   r$   rv   rm   rù   r	  r  rl   ÚloggerÚwarning_onceÚis_encoder_decoderr   r   Úget_seq_lengthr   r   r  r  r   r~   rS   rú   r=   r>   rÑ   r{   r<   r¥   r»   r  rs   r  r  r’   r   )r6   r   rc   r¹   rº   rb   r  r¼   re   r  r  r€   r  r   r8   Ú	positionsr`   rÙ   r¥   r»   Úall_hidden_statesÚall_self_attnsÚall_cross_attentionsr$  Údecoder_layerr'  r(  s                              r)   rC   zMvpDecoder.forward­  s  € ð@ 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆð Ð  ]Ð%>ÝÐsÑtÔtÐtØÐ"ØˆEØ#œ/ˆKØ!Ÿš r¨;°r¬?Ñ;Ô;ˆIˆIØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKØ! ! ! ! Q Q Q¨ (Ô+ˆEˆEåÐdÑeÔeÐeàÐ Ø ×-Ò-¨iÑ8Ô8¸4Ô;KÑKˆMàÔ&ð 	"¨4¬=ð 	"Øð "Ý×#Ò#Øpñô ð ð "�	àð 	˜Ð0ð )Ð4¸¼Ô8VÐ4õ $¥L¸¼Ð$DÑ$DÔ$DÅlÐZ^ÔZeÐFfÑFfÔFfÑgÔgÐgå!¨¬Ð5Ñ5Ô5ð ð FUÐE` ×!?Ò!?Ñ!AÔ!AÐ!AÐfgÐå+Ø”;Ø'Ø)Ø+ð	
ñ 
ô 
ˆð !Ð,Ð1GÐ1SÝ%>Ø”{Ø+Ø5Ø&;ð	&ñ &ô &Ð"ð ×(Ò(¨Ð0FÑGÔGˆ	à%¨	Ñ1ˆØ×0Ò0°Ñ?Ô?ˆåœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆð Œ?ð 	CÝœ dÔ&8Ñ9Ô9×<Ò<¸T¼[ÑIÔIˆJØ#×4Ò4°ZÑ@Ô@ÐØ $× 6Ò 6°zÑ BÔ BÐð #7Ð@˜B˜B¸DÐØ0Ð:˜˜°dˆØ&7ÐhÐ<QÐ<]˜r˜rÐdhÐå"+¨D¬KÑ"8Ô"8ð 	@ð 	@ÑˆC�à#ð 6Ø! mÐ%5Ñ5Ð!ØŒ}ð Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Øà)˜MØØØ%Ø'=Ø;?¼?Ð"TÐ"2°3Ô"7Ð"7ÐPTØ=A¼_Ð#VÐ#4°SÔ#9Ð#9ÐRVØ /Ø"3Ø#ð
ñ 
ô 
ˆMð *¨!Ô,ˆMØ ð @Ø =°Ô#3Ð"5Ñ5�à(Ð4Ø(¨]¸1Ô-=Ð,?Ñ?Ð(øð  ð 	2Ø -Ð!1Ñ1Ðàð 	Ýð ð à'¨Ð:KÈ^Ð]qÐrðñ ô ñ ô ð õ
 9Ø+Ø+Ø+Ø%Ø1ð
ñ 
ô 
ð 	
r+   r°   )
NNNNNNNNNN)rF   rG   rH   rI   r   r‘   r5   r=   r*  rK   r±   r
   r’   r   rC   rL   rM   s   @r)   r,  r,  �  sY  ø€ € € € € ðð ð ð  ˜yð  °d¸T±kð  ð  ð  ð  ð  ð  ðH .2Ø.2Ø:>Ø:>Ø(,Ø26Ø!%Ø)-Ø,0Ø#'ðu
ð u
àÔ# dÑ*ðu
ð œ tÑ+ðu
ð  %Ô0°4Ñ7ð	u
ð
 !&Ô 0°4Ñ 7ðu
ð  ™ðu
ð Ô(¨4Ñ/ðu
ð ˜$‘;ðu
ð   $™;ðu
ð # T™kðu
ð ˜D‘[ðu
ð 
Ð:Ñ	:ðu
ð u
ð u
ð u
ð u
ð u
ð u
ð u
r+   r,  c                   óL  ‡ — e Zd ZdgZdddœZdefˆ fd„Zd„ Zd„ Zd„ Z	e
	 	 	 	 	 	 	 	 	 	 	 	 dd
ej        d	z  dej        d	z  dej        d	z  dej        d	z  deej                 d	z  ded	z  dej        d	z  dej        d	z  ded	z  ded	z  ded	z  ded	z  deez  fd„¦   «         Zˆ xZS )ÚMvpModelræ   zshared.weight)zencoder.embed_tokens.weightzdecoder.embed_tokens.weightr•   c                 óN  •— t          ¦   «                              |¦  «         |j        |j        }}|j        | _        t          j        ||j        |¦  «        | _        t          ||j        ¦  «        | _
        t          ||j        ¦  «        | _        |                      ¦   «          d S rÁ   )r4   r5   r   r
  rú   r   rÓ   r—   Úsharedrø   Úencoderr,  Údecoderr  )r6   r•   r  r
  r7   s       €r)   r5   zMvpModel.__init__m  s‹   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à"(Ô"5°vÔ7H�ZˆØ Ô+ˆŒÝ”l :¨v¬~¸{ÑKÔKˆŒå! &¨&Ô*;Ñ<Ô<ˆŒÝ! &¨&Ô*;Ñ<Ô<ˆŒð 	�ŠÑÔÐÐÐr+   c                 ó   — | j         S rÁ   )rB  ©r6   s    r)   Úget_input_embeddingszMvpModel.get_input_embeddingsz  s
   € ØŒ{Ðr+   c                 óX   — || _         | j         | j        _        | j         | j        _        d S rÁ   )rB  rC  rù   rD  ©r6   Úvalues     r)   Úset_input_embeddingszMvpModel.set_input_embeddings}  s'   € ØˆŒØ$(¤KˆŒÔ!Ø$(¤KˆŒÔ!Ð!Ð!r+   c                 ó  — | j         s
J d¦   «         ‚|                      d¦  «         | j        j                             d¦  «         | j        j                             d¦  «         | j        j                             d¦  «         d S )NzHIf you want to use lightweight tuning, make sure that `use_prompt=True`.FT)rú   Úrequires_grad_rC  r¥   rD  r»   rF  s    r)   Úset_lightweight_tuningzMvpModel.set_lightweight_tuning‚  s}   € ØŒÐjÐjÐ jÑjÔjˆà×Ò˜EÑ"Ô"Ð"ØŒÔ%×4Ò4°TÑ:Ô:Ð:ØŒÔ%×4Ò4°TÑ:Ô:Ð:ØŒÔ&×5Ò5°dÑ;Ô;Ð;Ð;Ð;r+   Nr   rc   Údecoder_input_idsÚdecoder_attention_maskÚencoder_outputsrb   r  Údecoder_inputs_embedsr¼   re   r  r  rf   c                 óÒ  — |€8|€6|€t          d¦  «        ‚t          || j        j        | j        j        ¦  «        }|
�|
n| j        j        }
|�|n| j        j        }|	�|	n| j        j        }	|�|n| j        j        }|€|  	                    ||||
||¬¦  «        }ne|rct          |t          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    r|d         nd¬¦  «        }|                      |||d         ||||	|
||¬¦
  «
        }|s||z   S t          |j        |j        |j        |j        |j        |j        |j        |j        ¬	¦  «        S )
aÉ  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            Mvp uses the `eos_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            For translation and summarization training, `decoder_input_ids` should be provided. If no
            `decoder_input_ids` is provided, the model will create this tensor by shifting the `input_ids` to the right
            for denoising pre-training following the paper.
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.

            If you want to change padding behavior, you should read [`modeling_mvp._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        Nz°If no `decoder_input_ids` or `decoder_inputs_embeds` are passed, `input_ids` cannot be `None`. Please pass either `input_ids` or `decoder_input_ids` or `decoder_inputs_embeds`.)r   rc   r  re   r  r  r   r   r2   r  ©
r   rc   r¹   rº   rb   r  r¼   re   r  r  )r  rb   Údecoder_hidden_statesÚdecoder_attentionsr5  Úencoder_last_hidden_stater¹   Úencoder_attentions)r&   r*   r•   r   r    re   r  r¼   r  rC  rn   r   ÚlenrD  r   r  rb   r`   r  r5  )r6   r   rc   rO  rP  rQ  rb   r  rR  r¼   re   r  r  r€   Údecoder_outputss                  r)   rC   zMvpModel.forwardŠ  sî  € ðT Ð$Ð)>Ð)FØÐ Ý ðUñô ð õ !3Ø˜4œ;Ô3°T´[Ô5Wñ!ô !Ðð 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆàÐ"Ø"ŸlšlØ#Ø-Ø+Ø"3Ø%9Ø'ð +ñ ô ˆOˆOð ð 	¥¨O½_Ñ!MÔ!Mð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð Ÿ,š,Ø'Ø1Ø"1°!Ô"4Ø#1Ø+Ø/ØØ/Ø!5Ø#ð 'ñ 
ô 
ˆð ð 	5Ø" _Ñ4Ð4å!Ø-Ô?Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð	
ñ 	
ô 	
ð 		
r+   ©NNNNNNNNNNNN)rF   rG   rH   Ú"_keys_to_ignore_on_load_unexpectedÚ_tied_weights_keysr   r5   rG  rK  rN  r   r=   r*  rK   Úlistr±   r
   r‘   r’   r   rC   rL   rM   s   @r)   r@  r@  e  sÄ  ø€ € € € € à*=Ð)>Ð&à'6Ø'6ðð Ðð
˜yð ð ð ð ð ð ðð ð ð0ð 0ð 0ð
<ð <ð <ð ð .2Ø.2Ø59Ø:>Ø:>Ø(,Ø26Ø:>Ø!%Ø)-Ø,0Ø#'ðg
ð g
àÔ# dÑ*ðg
ð œ tÑ+ðg
ð !Ô+¨dÑ2ð	g
ð
 !&Ô 0°4Ñ 7ðg
ð ˜eÔ/Ô0°4Ñ7ðg
ð  ™ðg
ð Ô(¨4Ñ/ðg
ð  %Ô0°4Ñ7ðg
ð ˜$‘;ðg
ð   $™;ðg
ð # T™kðg
ð ˜D‘[ðg
ð 
Ð#Ñ	#ðg
ð g
ð g
ñ „^ðg
ð g
ð g
ð g
ð g
r+   r@  ze
    The MVP Model with a language modeling head. Can be used for various text generation tasks.
    )Úcustom_introc                   ó¤  ‡ — e Zd ZddiZdefˆ fd„Z	 ddededz  d	ed
ej	        fˆ fd„Z
ded
dfd„Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  deej                 dz  dedz  dej        dz  dej        dz  dej        dz  dedz  dedz  dedz  dedz  d
eez  fd„¦   «         Zdej        fd„Zˆ xZS )rã   úlm_head.weightzmodel.shared.weightr•   c                 ól  •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      dt          j        d| j        j        j        f¦  «        ¦  «         t          j
        |j        | j        j        j        d¬¦  «        | _        |                      ¦   «          d S )Nræ   r   FrX   )r4   r5   r@  rà   Úregister_bufferr=   rz   rB  r.   r   r[   r—   Úlm_headr  r¤   s     €r)   r5   z$MvpForConditionalGeneration.__init__ÿ  s“   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý˜fÑ%Ô%ˆŒ
Ø×ÒÐ0µ%´+¸qÀ$Ä*ÔBSÔBbÐ>cÑ2dÔ2dÑeÔeÐeÝ”y ¤°´Ô1BÔ1QÐX]Ð^Ñ^Ô^ˆŒð 	�ŠÑÔÐÐÐr+   NTÚnew_num_tokensÚpad_to_multiple_ofÚmean_resizingrf   c                 óx   •— t          ¦   «                              |||¦  «        }|                      |¦  «         |S rÁ   )r4   Úresize_token_embeddingsÚ_resize_final_logits_bias)r6   re  rf  rg  Únew_embeddingsr7   s        €r)   ri  z3MvpForConditionalGeneration.resize_token_embeddings  s<   ø€ õ ™œ×8Ò8¸ÐI[Ð]jÑkÔkˆØ×&Ò& ~Ñ6Ô6Ð6ØÐr+   c                 ó  — | j         j        d         }||k    r| j         d d …d |…f         }nBt          j        d||z
  f| j         j        ¬¦  «        }t          j        | j         |gd¬¦  «        }|                      d|¦  «         d S )Nr"   r   rî   rh   ræ   )ræ   r$   r=   rz   r<   ry   rc  )r6   re  Úold_num_tokensÚnew_biasÚ
extra_biass        r)   rj  z5MvpForConditionalGeneration._resize_final_logits_bias  s—   € ØÔ/Ô5°bÔ9ˆØ˜^Ò+Ð+ØÔ-¨a¨a¨a°°.°Ð.@ÔAˆHˆHåœ a¨¸.Ñ)HÐ%IÐRVÔRhÔRoÐpÑpÔpˆJÝ”y $Ô"8¸*Ð!EÈ1ÐMÑMÔMˆHØ×ÒÐ0°(Ñ;Ô;Ð;Ð;Ð;r+   c                 ól   — | j                              ¦   «          | j                             d¦  «         d S r)  ©rà   rN  rd  rM  rF  s    r)   rN  z2MvpForConditionalGeneration.set_lightweight_tuning  ó2   € ØŒ
×)Ò)Ñ+Ô+Ð+ØŒ×#Ò# EÑ*Ô*Ð*Ð*Ð*r+   r   rc   rO  rP  rQ  rb   r  rR  Úlabelsr¼   re   r  r  c                 ó„  — |�|n| j         j        }|	�G|
rt                               d¦  «         d}
|€'|€%t	          |	| j         j        | j         j        ¦  «        }|                      |||||||||
|||¬¦  «        }|                      |d         ¦  «        | j	        z   }d}|	�Kt          ¦   «         } ||                     d| j         j        ¦  «        |	                     d¦  «        ¦  «        }|s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )	a\  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            Mvp uses the `eos_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            For translation and summarization training, `decoder_input_ids` should be provided. If no
            `decoder_input_ids` is provided, the model will create this tensor by shifting the `input_ids` to the right
            for denoising pre-training following the paper.
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.

            If you want to change padding behavior, you should read [`modeling_mvp._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        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 -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example of summarization:

        Fine-tuning a model
        ```python
        >>> import torch
        >>> from transformers import AutoTokenizer, MvpForConditionalGeneration

        >>> tokenizer = AutoTokenizer.from_pretrained("RUCAIBox/mvp")
        >>> model = MvpForConditionalGeneration.from_pretrained("RUCAIBox/mvp")

        >>> inputs = tokenizer(
        ...     "Summarize: You may want to stick it to your boss and leave your job, but don't do it if these are your reasons.",
        ...     return_tensors="pt",
        ... )
        >>> labels = tokenizer("Bad Reasons To Quit Your Job", return_tensors="pt")["input_ids"]

        >>> loss = model(**inputs, labels=labels).loss
        >>> loss.backward()
        ```

        Inference after the model fine-tuned
        ```python
        >>> with torch.no_grad():
        ...     generated_ids = model.generate(**inputs)

        >>> generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
        ```
        NzJThe `use_cache` argument is changed to `False` since `labels` is provided.F)rc   rO  rQ  rP  rb   r  rR  r¼   re   r  r  r   r"   r   ©	ÚlossÚlogitsrb   rU  rV  r5  rW  r¹   rX  )r•   r  r6  Úwarningr*   r   r    rà   rd  ræ   r   rv   r
  r   rb   rU  rV  r5  rW  r¹   rX  )r6   r   rc   rO  rP  rQ  rb   r  rR  rs  r¼   re   r  r  r€   rÀ   Ú	lm_logitsÚmasked_lm_lossÚloss_fctÚoutputs                       r)   rC   z#MvpForConditionalGeneration.forward  s�  € ðR &1Ð%<�k�kÀ$Ä+ÔBYˆàÐØð mÝ—’ÐkÑlÔlÐlØˆIØ Ð(Ð-BÐ-JÝ$6Ø˜DœKÔ4°d´kÔ6Xñ%ô %Ð!ð —*’*ØØ)Ø/Ø+Ø#9Ø+Ø'Ø"7ØØ/Ø!5Ø#ð ñ 
ô 
ˆð —L’L ¨¤Ñ,Ô,¨tÔ/EÑEˆ	àˆØÐÝ'Ñ)Ô)ˆHØ%˜X i§n¢n°R¸¼Ô9OÑ&PÔ&PÐRX×R]ÒR]Ð^`ÑRaÔRaÑbÔbˆNàð 	ZØ�\ G¨A¨B¨B¤KÑ/ˆFØ3AÐ3M�^Ð%¨Ñ.Ð.ÐSYÐYåØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r+   c                 óL   — t          || j        j        | j        j        ¦  «        S rÁ   )r*   r•   r   r    )r6   rs  s     r)   Ú%prepare_decoder_input_ids_from_labelszAMvpForConditionalGeneration.prepare_decoder_input_ids_from_labels•  s   € Ý! &¨$¬+Ô*BÀDÄKÔDfÑgÔgÐgr+   )NT©NNNNNNNNNNNNN)rF   rG   rH   r]  r   r5   rJ   r‘   r   rÓ   ri  rj  rN  r   r=   r*  rK   r^  r±   r
   r’   r   rC   r~  rL   rM   s   @r)   rã   rã   õ  sD  ø€ € € € € ð 	Ð/ðÐð˜yð ð ð ð ð ð ð aeðð Ø!ðØ7:¸T±zðØY]ðà	Œðð ð ð ð ð ð<¸ð <Àð <ð <ð <ð <ð+ð +ð +ð ð .2Ø.2Ø59Ø:>Ø:>Ø(,Ø26Ø:>Ø*.Ø!%Ø)-Ø,0Ø#'ðv
ð v
àÔ# dÑ*ðv
ð œ tÑ+ðv
ð !Ô+¨dÑ2ð	v
ð
 !&Ô 0°4Ñ 7ðv
ð ˜eÔ/Ô0°4Ñ7ðv
ð  ™ðv
ð Ô(¨4Ñ/ðv
ð  %Ô0°4Ñ7ðv
ð Ô  4Ñ'ðv
ð ˜$‘;ðv
ð   $™;ðv
ð # T™kðv
ð ˜D‘[ðv
ð  
�Ñ	 ð!v
ð v
ð v
ñ „^ðv
ðph¸E¼Lð hð hð hð hð hð hð hð hr+   rã   z„
    Mvp model with a sequence classification/head on top (a linear layer on top of the pooled output) e.g. for GLUE
    tasks.
    c                   ó:  ‡ — e Zd Zdefˆ fd„Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 ddej        dz  dej	        dz  dej        dz  dej        dz  d	e
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dz  dedz  dedz  deez  fd„¦   «         Zˆ xZS )ÚMvpForSequenceClassificationr•   c                 óâ   •—  t          ¦   «         j        |fi |¤Ž t          |¦  «        | _        t	          |j        |j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S rÁ   )
r4   r5   r@  rà   rÃ   r—   Ú
num_labelsÚclassifier_dropoutÚclassification_headr  )r6   r•   r€   r7   s      €r)   r5   z%MvpForSequenceClassification.__init__   sq   ø€ Ø�‰ŒÔ˜Ð*Ð* 6Ð*Ð*Ð*Ý˜fÑ%Ô%ˆŒ
Ý#8ØŒNØŒNØÔØÔ%ñ	$
ô $
ˆÔ ð 	�ŠÑÔÐÐÐr+   c                 ól   — | j                              ¦   «          | j                             d¦  «         d S r)  )rà   rN  r…  rM  rF  s    r)   rN  z3MvpForSequenceClassification.set_lightweight_tuning­  s3   € ØŒ
×)Ò)Ñ+Ô+Ð+ØÔ ×/Ò/°Ñ6Ô6Ð6Ð6Ð6r+   Nr   rc   rO  rP  rQ  r  rR  rs  r¼   re   r  r  rf   c                 ó~  — |�|n| j         j        }|�d}	|€|�t          d| j        j        › �¦  «        ‚|                      ||||||||	|
||¬¦  «        }|d         }|                     | j         j        ¦  «                             |j	        ¦  «        }t          t          j        |                     d¦  «        ¦  «                             ¦   «         dk    d¦  «         ||dd…f         }t          |j        d         |j        d         z  dk    d¦  «         |                     |                     d¦  «        d	|                     d	¦  «        ¦  «        dd…d	dd…f         }|                      |¦  «        }d}|��n| j         j        €p| j         j        dk    rd
| j         _        nS| j         j        dk    r7|j        t          j        k    s|j        t          j        k    rd| j         _        nd| j         _        | j         j        d
k    r\t1          ¦   «         }| j         j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }n“ |||¦  «        }n†| j         j        dk    rLt5          ¦   «         } ||                     d	| j         j        ¦  «        |                     d	¦  «        ¦  «        }n*| j         j        dk    rt7          ¦   «         } |||¦  «        }|s|f|dd…         z   }|�|f|z   n|S t9          |||j        |j        |j        |j         |j!        |j"        |j#        ¬¦	  «	        S )až
  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            Mvp uses the `eos_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            For translation and summarization training, `decoder_input_ids` should be provided. If no
            `decoder_input_ids` is provided, the model will create this tensor by shifting the `input_ids` to the right
            for denoising pre-training following the paper.
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.

            If you want to change padding behavior, you should read [`modeling_mvp._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).

        Example of single-label classification:

        Fine-tuning a model on `num_labels` classes
        ```python
        >>> import torch
        >>> from transformers import AutoTokenizer, MvpForSequenceClassification

        >>> num_labels = 2  # for example, this is a binary classification task
        >>> tokenizer = AutoTokenizer.from_pretrained("RUCAIBox/mvp")
        >>> model = MvpForSequenceClassification.from_pretrained("RUCAIBox/mvp", num_labels=num_labels)

        >>> inputs = tokenizer("Classify: Hello, my dog is cute", return_tensors="pt")
        >>> labels = torch.tensor(1)  # the real label for inputs

        >>> loss = model(**inputs, labels=labels).loss
        >>> loss.backward()
        ```

        Inference after the model fine-tuned
        ```python
        >>> with torch.no_grad():
        ...     logits = model(**inputs).logits

        >>> predicted_class_id = logits.argmax()
        ```
        NFz8Passing input embeddings is currently not supported for ©
rc   rO  rP  rQ  r  rR  r¼   re   r  r  r   r   z7All examples must have the same number of <eos> tokens.z3Each example must contain at least one <eos> token.r"   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationru  )$r•   r  ÚNotImplementedErrorr7   rF   rà   ÚeqÚeos_token_idr{   r<   r   r=   Úunique_consecutiveÚsumÚnumelr$   rv   rm   r…  Úproblem_typerƒ  r;   r?   rJ   r   Úsqueezer   r   r   rb   rU  rV  r5  rW  r¹   rX  )r6   r   rc   rO  rP  rQ  r  rR  rs  r¼   re   r  r  r€   rÀ   r`   Úeos_maskÚselectedÚsentence_representationrw  rv  r{  r|  s                          r)   rC   z$MvpForSequenceClassification.forward±  sv  € ðJ &1Ð%<�k�kÀ$Ä+ÔBYˆØÐØˆIàÐ Ð!:Ý%ØdÈ4Ì>ÔKbÐdÐdñô ð ð —*’*ØØ)Ø/Ø#9Ø+Ø'Ø"7ØØ/Ø!5Ø#ð ñ 
ô 
ˆð   œ
ˆà—<’< ¤Ô 8Ñ9Ô9×<Ò<¸]Ô=QÑRÔRˆåÝÔ$ X§\¢\°!¡_¤_Ñ5Ô5×;Ò;Ñ=Ô=ÀÒBØEñ	
ô 	
ð 	
ð ! ¨1¨1¨1 Ô-ˆÝØŒN˜1Ô Ô!4°QÔ!7Ñ7¸1Ò<ØAñ	
ô 	
ð 	
ð #+§-¢-°×0BÒ0BÀ1Ñ0EÔ0EÀrÈ=×K]ÒK]Ð^`ÑKaÔKaÑ"bÔ"bÐcdÐcdÐcdÐfhÐjkÐjkÐjkÐckÔ"lÐØ×)Ò)Ð*AÑBÔBˆàˆØÑØŒ{Ô'Ð/Ø”;Ô)¨QÒ.Ð.Ø/;�D”KÔ,Ð,Ø”[Ô+¨aÒ/Ð/°V´\ÅUÄZÒ5OÐ5OÐSYÔS_ÕchÔclÒSlÐSlØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”;Ô)¨QÒ.Ð.Ø#˜8 F§N¢NÑ$4Ô$4°f·n²nÑ6FÔ6FÑGÔG�D�Dà#˜8 F¨FÑ3Ô3�D�DØ”Ô)Ð-JÒJÐJÝ+Ñ-Ô-�Ø�x §¢¨B°´Ô0FÑ GÔ GÈÏÊÐUWÉÌÑYÔY��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�Øð 	FØ�Y ¨¨¨¤Ñ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå.ØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r+   r[  )rF   rG   rH   r   r5   rN  r   r=   r*  rK   r^  r±   r‘   r’   r   rC   rL   rM   s   @r)   r�  r�  ™  sŽ  ø€ € € € € ð˜yð ð ð ð ð ð ð7ð 7ð 7ð ð .2Ø.2Ø59Ø:>Ø:>Ø26Ø:>Ø*.Ø!%Ø)-Ø,0Ø#'ðN
ð N
àÔ# dÑ*ðN
ð œ tÑ+ðN
ð !Ô+¨dÑ2ð	N
ð
 !&Ô 0°4Ñ 7ðN
ð ˜eÔ/Ô0°4Ñ7ðN
ð Ô(¨4Ñ/ðN
ð  %Ô0°4Ñ7ðN
ð Ô  4Ñ'ðN
ð ˜$‘;ðN
ð   $™;ðN
ð # T™kðN
ð ˜D‘[ðN
ð 
Ð0Ñ	0ðN
ð N
ð N
ñ „^ðN
ð N
ð N
ð N
ð N
r+   r�  c                   óJ  ‡ — e Zd Zˆ fd„Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  de	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dz  dedz  dedz  deez  fd„¦   «         Zˆ xZS )ÚMvpForQuestionAnsweringc                 ó  •— t          ¦   «                              |¦  «         d|_        |j        | _        t          |¦  «        | _        t          j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S r1   )
r4   r5   rƒ  r@  rà   r   r[   Úhidden_sizeÚ
qa_outputsr  r¤   s     €r)   r5   z MvpForQuestionAnswering.__init__E  sm   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àˆÔØ Ô+ˆŒå˜fÑ%Ô%ˆŒ
Ýœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr+   c                 ól   — | j                              ¦   «          | j                             d¦  «         d S r)  )rà   rN  r›  rM  rF  s    r)   rN  z.MvpForQuestionAnswering.set_lightweight_tuningQ  s2   € ØŒ
×)Ò)Ñ+Ô+Ð+ØŒ×&Ò& uÑ-Ô-Ð-Ð-Ð-r+   Nr   rc   rO  rP  rQ  Ústart_positionsÚend_positionsr  rR  r¼   re   r  r  rf   c                 óü  — |�|n| j         j        }|�|�d}
|                      |||||||	|
|||¬¦  «        }|d         }|                      |¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }d}|�ç|�åt          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }t          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }|                     d¦  «        }| 	                    d|¦  «        }| 	                    d|¦  «        }t          |¬¦  «        } |||¦  «        } |||¦  «        }||z   d	z  }|s||f|dd…         z   }|�|f|z   n|S t          ||||j        |j        |j        |j        |j        |j        |j        ¬
¦
  «
        S )aÿ
  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            Mvp uses the `eos_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            For translation and summarization training, `decoder_input_ids` should be provided. If no
            `decoder_input_ids` is provided, the model will create this tensor by shifting the `input_ids` to the right
            for denoising pre-training following the paper.
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.

            If you want to change padding behavior, you should read [`modeling_mvp._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.

        Example:

        Fine-tuning a model for extrative question answering, and our model also supports generative question answering
        using `BartForConditionalGeneration`
        ```python
        >>> import torch
        >>> from transformers import AutoTokenizer, MvpForQuestionAnswering

        >>> tokenizer = AutoTokenizer.from_pretrained("RUCAIBox/mvp")
        >>> model = MvpForQuestionAnswering.from_pretrained("RUCAIBox/mvp")

        >>> inputs = tokenizer(
        ...     "Answer the following question: Who was Jim Henson? [SEP] Jim Henson was a nice puppet",
        ...     return_tensors="pt",
        ... )
        >>> target_start_index = torch.tensor([18])
        >>> target_end_index = torch.tensor([19])

        >>> loss = model(**inputs, start_positions=target_start_index, end_positions=target_end_index).loss
        >>> loss.backward()
        ```

        Inference after the model fine-tuned
        ```python
        >>> with torch.no_grad():
        ...     outputs = model(**inputs)

        >>> answer_start_index = outputs.start_logits.argmax()
        >>> answer_end_index = outputs.end_logits.argmax()

        >>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
        >>> predict_answer = tokenizer.decode(predict_answer_tokens)
        ```
        NFrˆ  r   r   r"   rh   )Úignore_indexr2   )
rv  Ústart_logitsÚ
end_logitsrb   rU  rV  r5  rW  r¹   rX  )r•   r  rà   r›  rÜ   r“  Ú
contiguousrY  rm   r­   r   r   rb   rU  rV  r5  rW  r¹   rX  )r6   r   rc   rO  rP  rQ  r�  rž  r  rR  r¼   re   r  r  r€   rÀ   Úsequence_outputrw  r¡  r¢  Ú
total_lossÚignored_indexr{  Ú
start_lossÚend_lossr|  s                             r)   rC   zMvpForQuestionAnswering.forwardU  sR  € ðV &1Ð%<�k�kÀ$Ä+ÔBYˆØÐ&¨=Ð+DØˆIà—*’*ØØ)Ø/Ø#9Ø+Ø'Ø"7ØØ/Ø!5Ø#ð ñ 
ô 
ˆð " !œ*ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/×:Ò:Ñ<Ô<ˆØ×'Ò'¨Ñ+Ô+×6Ò6Ñ8Ô8ˆ
àˆ
ØÐ&¨=Ð+Då�?×'Ò'Ñ)Ô)Ñ*Ô*¨QÒ.Ð.Ø"1×"9Ò"9¸"Ñ"=Ô"=�Ý�=×%Ò%Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø -× 5Ò 5°bÑ 9Ô 9�à(×-Ò-¨aÑ0Ô0ˆMØ-×3Ò3°A°}ÑEÔEˆOØ)×/Ò/°°=ÑAÔAˆMå'°]ÐCÑCÔCˆHØ!˜ ,°Ñ@Ô@ˆJØ�x 
¨MÑ:Ô:ˆHØ$ xÑ/°1Ñ4ˆJàð 	RàØðð ˜˜˜”ñˆFð 0:Ð/E�Z�M FÑ*Ð*È6ÐQå2ØØ%Ø!Ø#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð
ñ 
ô 
ð 	
r+   r  )rF   rG   rH   r5   rN  r   r=   rK   r*  r^  r±   r‘   r’   r   rC   rL   rM   s   @r)   r˜  r˜  C  s—  ø€ € € € € ð
ð 
ð 
ð 
ð 
ð.ð .ð .ð ð *.Ø.2Ø59Ø:>Ø:>Ø37Ø15Ø26Ø:>Ø!%Ø)-Ø,0Ø#'ðF
ð F
à”< $Ñ&ðF
ð œ tÑ+ðF
ð !Ô+¨dÑ2ð	F
ð
 !&Ô 0°4Ñ 7ðF
ð ˜eÔ/Ô0°4Ñ7ðF
ð Ô)¨DÑ0ðF
ð Ô'¨$Ñ.ðF
ð Ô(¨4Ñ/ðF
ð  %Ô0°4Ñ7ðF
ð ˜$‘;ðF
ð   $™;ðF
ð # T™kðF
ð ˜D‘[ðF
ð  
Ð4Ñ	4ð!F
ð F
ð F
ñ „^ðF
ð F
ð F
ð F
ð F
r+   r˜  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚMvpDecoderWrapperz½
    This wrapper class is a helper class to correctly load pretrained checkpoints when the causal language model is
    used in combination with the [`EncoderDecoderModel`] framework.
    c                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S rÁ   )r4   r5   r,  rD  r  r¤   s     €r)   r5   zMvpDecoderWrapper.__init__æ  s@   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý! &Ñ)Ô)ˆŒØ�ŠÑÔÐÐÐr+   c                 ó   —  | j         |i |¤ŽS rÁ   )rD  )r6   Úargsr€   s      r)   rC   zMvpDecoderWrapper.forwardë  s   € ØˆtŒ|˜TÐ, VÐ,Ð,Ð,r+   )rF   rG   rH   rI   r5   rC   rL   rM   s   @r)   rª  rª  à  sQ   ø€ € € € € ðð ð
ð ð ð ð ð
-ð -ð -ð -ð -ð -ð -r+   rª  c                   ó2  ‡ — e Zd ZddiZˆ fd„Zd„ Zd„ Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 d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dz  dedz  dedz  dee	j        z  deez  fd„¦   «         Zˆ xZS )ÚMvpForCausalLMra  z!model.decoder.embed_tokens.weightc                 ó  •— d|_         d|_        t          ¦   «                              |¦  «         t	          |¦  «        | _        t          j        |j        |j	        d¬¦  «        | _
        |                      ¦   «          d S )NTFrX   )rT   r8  r4   r5   rª  rà   r   r[   rš  r
  rd  r  r¤   s     €r)   r5   zMvpForCausalLM.__init__ò  sp   ø€ Ø ˆÔØ$)ˆÔ!Ý‰Œ×Ò˜Ñ Ô Ð Ý& vÑ.Ô.ˆŒ
å”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒð 	�ŠÑÔÐÐÐr+   c                 ó$   — | j         j        j        S rÁ   ©rà   rD  rù   rF  s    r)   rG  z#MvpForCausalLM.get_input_embeddingsý  s   € ØŒzÔ!Ô.Ð.r+   c                 ó(   — || j         j        _        d S rÁ   r²  rI  s     r)   rK  z#MvpForCausalLM.set_input_embeddings   s   € Ø*/ˆŒ
ÔÔ'Ð'Ð'r+   c                 ól   — | j                              ¦   «          | j                             d¦  «         d S r)  rq  rF  s    r)   rN  z%MvpForCausalLM.set_lightweight_tuning  rr  r+   Nr   r   rc   r¹   rº   rb   r  rs  r¼   re   r  r  Úlogits_to_keeprf   c                 ór  — |	�|	n| j         j        }	|
�|
n| j         j        }
|�|n| j         j        }| j                             ||||||||	|
|¬¦
  «
        }|d         }t          |t          ¦  «        rt          | d¦  «        n|}|  	                    |dd…|dd…f         ¦  «        }d}|�Kt          ¦   «         } ||                     d| j         j        ¦  «        |                     d¦  «        ¦  «        }|s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        |j        |j        ¬¦  «        S )ap  
        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 -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, MvpForCausalLM

        >>> tokenizer = AutoTokenizer.from_pretrained("RUCAIBox/mvp")
        >>> model = MvpForCausalLM.from_pretrained("RUCAIBox/mvp")

        >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
        >>> outputs = model(**inputs)

        >>> logits = outputs.logits
        >>> list(logits.shape)
        [1, 8, 50267]
        ```NrT  r   r"   r   )rv  rw  rb   r`   r  r5  )r•   re   r  r  rà   rD  rn   rJ   Úslicerd  r   rv   r
  r   rb   r`   r  r5  )r6   r   rc   r¹   rº   rb   r  rs  r¼   re   r  r  rµ  r€   rÀ   r`   Úslice_indicesrw  rv  r{  r|  s                        r)   rC   zMvpForCausalLM.forward  sŒ  € ðN 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆð ”*×$Ò$ØØ)Ø"7Ø#9Ø+Ø'ØØ/Ø!5Ø#ð %ñ 
ô 
ˆð   œ
ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬KÔ,BÑCÔCÀVÇ[Â[ÐQSÁ_Ä_ÑUÔUˆDàð 	DØ�Y ¨¨¨¤Ñ,ˆFØ'+Ð'7�D�7˜VÑ#Ð#¸VÐCå0ØØØ#Ô3Ø!Ô/ØÔ)Ø$Ô5ð
ñ 
ô 
ð 	
r+   )NNNNNNNNNNNr   )rF   rG   rH   r]  r5   rG  rK  rN  r   r=   r*  rK   r±   r
   r‘   rJ   r’   r   rC   rL   rM   s   @r)   r¯  r¯  ï  s¢  ø€ € € € € Ø*Ð,OÐPÐð	ð 	ð 	ð 	ð 	ð/ð /ð /ð0ð 0ð 0ð+ð +ð +ð ð .2Ø.2Ø:>Ø;?Ø(,Ø26Ø*.Ø!%Ø)-Ø,0Ø#'Ø-.ðO
ð O
àÔ# dÑ*ðO
ð œ tÑ+ðO
ð  %Ô0°4Ñ7ð	O
ð
 !&Ô 1°DÑ 8ðO
ð  ™ðO
ð Ô(¨4Ñ/ðO
ð Ô  4Ñ'ðO
ð ˜$‘;ðO
ð   $™;ðO
ð # T™kðO
ð ˜D‘[ðO
ð ˜eœlÑ*ðO
ð 
Ð2Ñ	2ðO
ð O
ð O
ñ „^ðO
ð O
ð O
ð O
ð O
r+   r¯  )r¯  rã   r˜  r�  r@  rß   )@rI   r  r=   r   Útorch.nnr   r   r   Ú r   rä   Úactivationsr	   Úcache_utilsr
   r   r   Ú
generationr   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   r   Úmodeling_utilsr   Úutilsr   r   r   Úconfiguration_mvpr   Ú
get_loggerrF   r6  rK   rJ   r*   rÓ   r-   ÚModulerO   r”   r³   rÃ   rÏ   rß   rø   r,  r@  rã   r�  r˜  rª  r¯  Ú__all__rþ   r+   r)   ú<module>rÇ     s  ðð Ð à €€€à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ (Ð (Ð (Ð (Ð (Ð (ð 
ˆÔ	˜HÑ	%Ô	%€ð %¤,ð ¸cð Ð[^ð ð ð ð ð";ð ;ð ;ð ;ð ; B¤Lñ ;ô ;ð ;ð6P2ð P2ð P2ð P2ð P2�2”9ñ P2ô P2ð P2ðf:+ð :+ð :+ð :+ð :+Ð0ñ :+ô :+ð :+ðzið ið ið ið iÐ0ñ iô ið iðZð ð ð ð ˜BœIñ ô ð ð0ð ð ð ð �”	ñ ô ð ð2 ðð ð ð ð ˜ñ ô ñ „ðð*`
ð `
ð `
ð `
ð `
Ð#ñ `
ô `
ð `
ðFa
ð a
ð a
ð a
ð a
Ð#ñ a
ô a
ð a
ðH ðL
ð L
ð L
ð L
ð L
Ð!ñ L
ô L
ñ „ðL
ð^ €ððñ ô ð
\hð \hð \hð \hð \hÐ"4°oñ \hô \hñô ð
\hð~ €ððñ ô ða
ð a
ð a
ð a
ð a
Ð#5ñ a
ô a
ñô ða
ðH ðX
ð X
ð X
ð X
ð X
Ð0ñ X
ô X
ñ „ðX
ðx-ð -ð -ð -ð -Ð*ñ -ô -ð -ðh
ð h
ð h
ð h
ð h
Ð'¨ñ h
ô h
ð h
ðVð ð €€€r+   