§
    ‚Štj ã                   óÜ  — d Z ddl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&m'Z'm(Z( ddl)m*Z*  e'j+        e,¦  «        Z- G d„ dej.        ¦  «        Z/ G d„ dej.        ¦  «        Z0 G d„ dej.        ¦  «        Z1 G d„ dej.        ¦  «        Z2 G d„ dej.        ¦  «        Z3 G d„ dej.        ¦  «        Z4 G d„ dej.        ¦  «        Z5 G d„ d e¦  «        Z6 G d!„ d"ej.        ¦  «        Z7e& G d#„ d$e"¦  «        ¦   «         Z8 G d%„ d&e8¦  «        Z9e& G d'„ d(e8¦  «        ¦   «         Z: e&d)¬*¦  «         G d+„ d,e8e¦  «        ¦   «         Z;e& G d-„ d.e8¦  «        ¦   «         Z< e&d/¬*¦  «         G d0„ d1e8¦  «        ¦   «         Z=e& G d2„ d3e8¦  «        ¦   «         Z>e& G d4„ d5e8¦  «        ¦   «         Z?g d6¢Z@dS )7zPyTorch T5 model.é    N)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutputÚ#Seq2SeqQuestionAnsweringModelOutputÚSeq2SeqSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)ÚDUMMY_INPUTSÚ
DUMMY_MASKÚauto_docstringÚloggingÚtorch_compilable_checké   )ÚT5Configc                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚT5LayerNormç�íµ ÷Æ°>c                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )zc
        Construct a layernorm module in the T5 style. No bias and no subtraction of mean.
        N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizeÚepsÚ	__class__s      €ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/t5/modeling_t5.pyr%   zT5LayerNorm.__init__/   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐó    c                 óh  — |                      t          j        ¦  «                             d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        j        t          j	        t          j
        fv r|                      | j        j        ¦  «        }| j        |z  S )Né   éÿÿÿÿT)Úkeepdim)Útor'   Úfloat32ÚpowÚmeanÚrsqrtr*   r)   ÚdtypeÚfloat16Úbfloat16)r+   Úhidden_statesÚvariances      r/   ÚforwardzT5LayerNorm.forward7   s–   € ð !×#Ò#¥E¤MÑ2Ô2×6Ò6°qÑ9Ô9×>Ò>¸rÈ4Ð>ÑPÔPˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆð Œ;Ô¥¤µ´Ð ?Ð?Ð?Ø)×,Ò,¨T¬[Ô->Ñ?Ô?ˆMàŒ{˜]Ñ*Ð*r0   )r"   )Ú__name__Ú
__module__Ú__qualname__r%   r?   Ú__classcell__©r.   s   @r/   r!   r!   .   sL   ø€ € € € € ð$ð $ð $ð $ð $ð $ð+ð +ð +ð +ð +ð +ð +r0   r!   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚT5DenseActDenseÚconfigc                 óJ  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          |j                 | _        d S ©NF©Úbias)r$   r%   r   ÚLinearÚd_modelÚd_ffÚwiÚwoÚDropoutÚdropout_rateÚdropoutr	   Údense_act_fnÚact©r+   rG   r.   s     €r/   r%   zT5DenseActDense.__init__H   sx   ø€ Ý‰Œ×ÒÑÔÐÝ”)˜FœN¨F¬K¸eÐDÑDÔDˆŒÝ”)˜FœK¨¬¸eÐDÑDÔDˆŒÝ”z &Ô"5Ñ6Ô6ˆŒÝ˜&Ô-Ô.ˆŒˆˆr0   c                 ó°  — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }t          | j        j        t          j        ¦  «        r]|j        | j        j        j        k    rC| j        j        j        t          j	        k    r$| 
                    | j        j        j        ¦  «        }|                      |¦  «        }|S ©N)rO   rU   rS   Ú
isinstancerP   r)   r'   ÚTensorr:   Úint8r5   ©r+   r=   s     r/   r?   zT5DenseActDense.forwardO   s¨   € ØŸš Ñ.Ô.ˆØŸš Ñ/Ô/ˆØŸš ]Ñ3Ô3ˆå�t”w”~¥u¤|Ñ4Ô4ð	CàÔ# t¤w¤~Ô';Ò;Ð;Ø””Ô$­¬
Ò2Ð2à)×,Ò,¨T¬W¬^Ô-AÑBÔBˆMØŸš Ñ.Ô.ˆØÐr0   ©r@   rA   rB   r   r%   r?   rC   rD   s   @r/   rF   rF   G   sS   ø€ € € € € ð/˜xð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r0   rF   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚT5DenseGatedActDenserG   c                 ó–  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j	        |j
        ¦  «        | _        t          |j                 | _        d S rI   )r$   r%   r   rL   rM   rN   Úwi_0Úwi_1rP   rQ   rR   rS   r	   rT   rU   rV   s     €r/   r%   zT5DenseGatedActDense.__init__^   s”   ø€ Ý‰Œ×ÒÑÔÐÝ”I˜fœn¨f¬kÀÐFÑFÔFˆŒ	Ý”I˜fœn¨f¬kÀÐFÑFÔFˆŒ	Ý”)˜FœK¨¬¸eÐDÑDÔDˆŒÝ”z &Ô"5Ñ6Ô6ˆŒÝ˜&Ô-Ô.ˆŒˆˆr0   c                 óà  — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }||z  }|                      |¦  «        }t	          | j        j        t          j        ¦  «        r]|j	        | j        j        j	        k    rC| j        j        j	        t          j
        k    r$|                     | j        j        j	        ¦  «        }|                      |¦  «        }|S rX   )rU   ra   rb   rS   rY   rP   r)   r'   rZ   r:   r[   r5   )r+   r=   Úhidden_geluÚhidden_linears       r/   r?   zT5DenseGatedActDense.forwardf   sÀ   € Ø—h’h˜tŸyšy¨Ñ7Ô7Ñ8Ô8ˆØŸ	š	 -Ñ0Ô0ˆØ# mÑ3ˆØŸš ]Ñ3Ô3ˆõ �t”w”~¥u¤|Ñ4Ô4ð	CàÔ# t¤w¤~Ô';Ò;Ð;Ø””Ô$­¬
Ò2Ð2à)×,Ò,¨T¬W¬^Ô-AÑBÔBˆMàŸš Ñ.Ô.ˆØÐr0   r]   rD   s   @r/   r_   r_   ]   sS   ø€ € € € € ð/˜xð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r0   r_   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )Ú	T5LayerFFrG   c                 ó$  •— t          ¦   «                              ¦   «          |j        rt          |¦  «        | _        nt          |¦  «        | _        t          |j        |j        ¬¦  «        | _	        t          j        |j        ¦  «        | _        d S )N©r-   )r$   r%   Úis_gated_actr_   ÚDenseReluDenserF   r!   rM   Úlayer_norm_epsilonÚ
layer_normr   rQ   rR   rS   rV   s     €r/   r%   zT5LayerFF.__init__{   sx   ø€ Ý‰Œ×ÒÑÔÐØÔð 	:Ý"6°vÑ">Ô">ˆDÔÐå"1°&Ñ"9Ô"9ˆDÔå% f¤n¸&Ô:SÐTÑTÔTˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr0   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }||                      |¦  «        z   }|S rX   )rm   rk   rS   )r+   r=   Úforwarded_statess      r/   r?   zT5LayerFF.forward…   sF   € ØŸ?š?¨=Ñ9Ô9ÐØ×.Ò.Ð/?Ñ@Ô@ÐØ%¨¯ªÐ5EÑ(FÔ(FÑFˆØÐr0   r]   rD   s   @r/   rg   rg   z   sS   ø€ € € € € ð7˜xð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð r0   rg   c                   óf   ‡ — e Zd Z	 	 ddededz  fˆ fd„Zedd	„¦   «         Zdd„Z	 	 	 	 	 dd„Z	ˆ xZ
S )ÚT5AttentionFNrG   Ú	layer_idxc                 ó*  •— t          ¦   «                              ¦   «          |j        | _        || _        |j        | _        |j        | _        |j        | _        |j        | _        |j	        | _
        |j        | _        | j
        | j        z  | _        || _        |€/| j        r(t                               d| j        j        › d�¦  «         t'          j        | j        | j        d¬¦  «        | _        t'          j        | j        | j        d¬¦  «        | _        t'          j        | j        | j        d¬¦  «        | _        t'          j        | j        | j        d¬¦  «        | _        | j        r$t'          j        | j        | j
        ¦  «        | _        d| _        d S )NzInstantiating a decoder z³ without passing `layer_idx` is not recommended and will to errors during the forward call, if caching is used. Please make sure to provide a `layer_idx` when creating this class.FrJ   )r$   r%   Ú
is_decoderÚhas_relative_attention_biasÚrelative_attention_num_bucketsÚrelative_attention_max_distancerM   Úd_kvÚkey_value_proj_dimÚ	num_headsÚn_headsrR   rS   Ú	inner_dimrr   ÚloggerÚwarning_oncer.   r@   r   rL   ÚqÚkÚvÚoÚ	EmbeddingÚrelative_attention_biasÚgradient_checkpointing©r+   rG   ru   rr   r.   s       €r/   r%   zT5Attention.__init__�   si  ø€ õ 	‰Œ×ÒÑÔÐØ Ô+ˆŒØ+FˆÔ(Ø.4Ô.SˆÔ+Ø/5Ô/UˆÔ,Ø”~ˆŒØ"(¤+ˆÔØÔ'ˆŒØÔ*ˆŒØœ¨Ô(?Ñ?ˆŒØ"ˆŒØÐ ¤ÐÝ×Òð,¨4¬>Ô+Bð ,ð ,ð ,ñô ð õ ”˜4œ<¨¬¸eÐDÑDÔDˆŒÝ”˜4œ<¨¬¸eÐDÑDÔDˆŒÝ”˜4œ<¨¬¸eÐDÑDÔDˆŒÝ”˜4œ>¨4¬<¸eÐDÑDÔDˆŒàÔ+ð 	kÝ+-¬<¸Ô8[Ð]aÔ]iÑ+jÔ+jˆDÔ(à&+ˆÔ#Ð#Ð#r0   Té    é€   c                 óP  — d}|rC|dz  }|| dk                          t          j        ¦  «        |z  z  }t          j        | ¦  «        } n(t          j        | t          j        | ¦  «        ¦  «         } |dz  }| |k     }|t          j        |                      ¦   «         |z  ¦  «        t          j        ||z  ¦  «        z  ||z
  z                        t          j        ¦  «        z   }t          j        |t          j	        ||dz
  ¦  «        ¦  «        }|t          j
        || |¦  «        z  }|S )aÒ  
        Adapted from Mesh Tensorflow:
        https://github.com/tensorflow/mesh/blob/0cb87fe07da627bf0b7e60475d59f95ed6b5be3d/mesh_tensorflow/transformer/transformer_layers.py#L593

        Translate relative position to a bucket number for relative attention. The relative position is defined as
        memory_position - query_position, i.e. the distance in tokens from the attending position to the attended-to
        position. If bidirectional=False, then positive relative positions are invalid. We use smaller buckets for
        small absolute relative_position and larger buckets for larger absolute relative_positions. All relative
        positions >=max_distance map to the same bucket. All relative positions <=-max_distance map to the same bucket.
        This should allow for more graceful generalization to longer sequences than the model has been trained on

        Args:
            relative_position: an int32 Tensor
            bidirectional: a boolean - whether the attention is bidirectional
            num_buckets: an integer
            max_distance: an integer

        Returns:
            a Tensor with the same shape as relative_position, containing int32 values in the range [0, num_buckets)
        r   r2   r   )r5   r'   ÚlongÚabsÚminÚ
zeros_likeÚlogÚfloatÚmathÚ	full_likeÚwhere)Úrelative_positionÚbidirectionalÚnum_bucketsÚmax_distanceÚrelative_bucketsÚ	max_exactÚis_smallÚrelative_position_if_larges           r/   Ú_relative_position_bucketz%T5Attention._relative_position_bucket¯   s>  € ð, ÐØð 	cØ˜AÑˆKØÐ!2°QÒ!6× :Ò :½5¼:Ñ FÔ FÈÑ TÑTÐÝ %¤	Ð*;Ñ <Ô <ÐÐå!&¤Ð+<½eÔ>NÐO`Ñ>aÔ>aÑ!bÔ!bÐ bÐð   1Ñ$ˆ	Ø$ yÒ0ˆð &/ÝŒIÐ'×-Ò-Ñ/Ô/°)Ñ;Ñ<Ô<ÝŒh�| iÑ/Ñ0Ô0ñ1à˜YÑ&ñ(÷ Š"�UŒZ‰.Œ.ñ	&Ð"õ
 &+¤YØ&­¬Ð8RÐT_ÐbcÑTcÑ(dÔ(dñ&
ô &
Ð"ð 	�EœK¨Ð2CÐE_Ñ`Ô`Ñ`ÐØÐr0   r   c                 ó¸  — |€| j         j        j        }t          j        |t          j        |¬¦  «        dd…df         |z   }t          j        |t          j        |¬¦  «        ddd…f         }||z
  }|                      || j         | j        | j	        ¬¦  «        }|                       |¦  «        }	|	 
                    g d¢¦  «                             d¦  «        }	|	S )z%Compute binned relative position biasN)r:   Údevice)r”   r•   r–   )r2   r   r   r   )r„   r)   r�   r'   ÚarangerŠ   r›   rt   rv   rw   ÚpermuteÚ	unsqueeze)
r+   Úquery_lengthÚ
key_lengthr�   Úpast_seen_tokensÚcontext_positionÚmemory_positionr“   Úrelative_position_bucketÚvaluess
             r/   Úcompute_biaszT5Attention.compute_biasß   sí   € àˆ>ØÔ1Ô8Ô?ˆFÝ œ<¨½E¼JÈvÐVÑVÔVÐWXÐWXÐWXÐZ^ÐW^Ô_ÐbrÑrÐÝœ, z½¼ÈFÐSÑSÔSÐTXÐZ[ÐZ[ÐZ[ÐT[Ô\ˆØ+Ð.>Ñ>ÐØ#'×#AÒ#AØØ#œÐ.ØÔ;ØÔ=ð	 $Bñ $
ô $
Ð ð ×-Ò-Ð.FÑGÔGˆØ—’ 	 	 	Ñ*Ô*×4Ò4°QÑ7Ô7ˆØˆr0   c                 ó�  — |j         dd…         }g |¢d‘| j        ‘R }	|�|                     | j        ¦  «        nd}
t	          |
t
          j        ¦  «        r|
                     ¦   «         n|
}
|du}|                      |¦  «         	                    |	¦  «         
                    dd¦  «        }d}t	          |t          ¦  «        r1|j                             | j        ¦  «        }|r|j        }n
|j        }n|}|r|n|}|r3|�1|r/|j        | j                 j        }|j        | j                 j        }nÚg |j         dd…         ¢d‘| j        ‘R }|                      |¦  «         	                    |¦  «         
                    dd¦  «        }|                      |¦  «         	                    |¦  «         
                    dd¦  «        }|�E|                     ||| j        ¦  «        \  }}|r$t	          |t          ¦  «        rd|j        | j        <   t          j        || 
                    dd¦  «        ¦  «        }|€ª|j         d	         }| j        sLt          j        d|j         d         |d         |f|j        |j        ¬
¦  «        }| j        r| j        rd|_        n$|                      |d         ||j        |
¬¦  «        }|�$|dd…dd…dd…d|j         d	         …f         }||z   }|}||z  }t>          j          !                    | "                    ¦   «         d¬¦  «         #                    |¦  «        }t>          j          $                    || j$        | j        ¬¦  «        }t          j        ||¦  «        }| 
                    dd¦  «         %                    ¦   «         } |j&        g |¢d‘R Ž }|  '                    |¦  «        }||f}|r||fz   }|S )z€
        Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states).
        Nr3   r   r   r2   FTr   éþÿÿÿ)r�   r:   )r�   r£   ©Údim)ÚpÚtraining)(Úshapery   Úget_seq_lengthrr   rY   r'   rZ   Úcloner   ÚviewÚ	transposer   Ú
is_updatedÚgetÚcross_attention_cacheÚself_attention_cacheÚlayersÚkeysr§   r€   r�   ÚupdateÚmatmulru   Úzerosr�   r:   r…   r®   Úrequires_gradr¨   r   Ú
functionalÚsoftmaxr�   Útype_asrS   Ú
contiguousÚreshaper‚   )r+   r=   ÚmaskÚkey_value_statesÚposition_biasÚpast_key_valuesÚoutput_attentionsÚkwargsÚinput_shapeÚhidden_shaper£   Úis_cross_attentionÚquery_statesr´   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚkv_shapeÚscoresr¢   Úcausal_maskÚposition_bias_maskedÚattn_weightsÚattn_outputÚoutputss                             r/   r?   zT5Attention.forwardð   s  € ð $Ô)¨#¨2¨#Ô.ˆØB˜ÐB bÐB¨$Ô*AÐBÐBˆØM\ÐMh˜?×9Ò9¸$¼.ÑIÔIÐIÐnoÐå7AÐBRÕTYÔT`Ñ7aÔ7aÐwÐ+×1Ò1Ñ3Ô3Ð3ÐgwÐð .°TÐ9Ðà—v’v˜mÑ,Ô,×1Ò1°,Ñ?Ô?×IÒIÈ!ÈQÑOÔOˆð ˆ
Ý�oÕ':Ñ;Ô;ð 	3Ø(Ô3×7Ò7¸¼ÑGÔGˆJØ!ð Là'6Ô'LÐ$Ð$à'6Ô'KÐ$Ð$à#2Ð à-?ÐRÐ)Ð)À]ˆØð 	F /Ð"=À*Ð"=à-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàP˜Ô-¨c¨r¨cÔ2ÐP°BÐP¸Ô8OÐPÐPˆHØŸš Ñ/Ô/×4Ò4°XÑ>Ô>×HÒHÈÈAÑNÔNˆJØŸ6š6 .Ñ1Ô1×6Ò6°xÑ@Ô@×JÒJÈ1ÈaÑPÔPˆLàÐ*Ø+?×+FÒ+FÀzÐS_ÐaeÔaoÑ+pÔ+pÑ(�
˜Là%ð F­*°_ÕFYÑ*ZÔ*Zð FØAE�OÔ.¨t¬~Ñ>õ ”˜l¨J×,@Ò,@ÀÀAÑ,FÔ,FÑGÔGˆàÐ Ø#Ô)¨"Ô-ˆJØÔ3ð 	Ý %¤Ø˜Ô*¨1Ô-¨{¸1¬~¸zÐJÐSYÔS`ÐhnÔhtð!ñ !ô !�ð Ô.ð 7°4´=ð 7Ø26�MÔ/øà $× 1Ò 1Ø ”N J°v´}ÐWgð !2ñ !ô !�ð ÐØ" 1 1 1 a a a¨¨¨Ð,B¨jÔ.>¸rÔ.BÐ,BÐ#BÔC�Ø -°Ñ ;�à,ÐØÐ&Ñ&ˆõ ”}×,Ò,¨V¯\ª\©^¬^ÀÐ,ÑDÔD×LÒLÈVÑTÔTˆÝ”}×,Ò,¨\¸T¼\ÐTXÔTaÐ,ÑbÔbˆå”l <°Ñ>Ô>ˆà!×+Ò+¨A¨qÑ1Ô1×<Ò<Ñ>Ô>ˆØ)�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;ˆØ—f’f˜[Ñ)Ô)ˆà Ð.ˆàð 	0Ø  Ñ/ˆGØˆr0   ©FN)Tr‡   rˆ   )Nr   )NNNNF)r@   rA   rB   r   Úintr%   Ústaticmethodr›   r¨   r?   rC   rD   s   @r/   rq   rq   Œ   sÃ   ø€ € € € € ð %*Ø $ð	 ,ð  ,àð ,ð ˜‘:ð	 ,ð  ,ð  ,ð  ,ð  ,ð  ,ðD ð- ð - ð - ñ „\ð- ð^ð ð ð ð( ØØØØð[ð [ð [ð [ð [ð [ð [ð [r0   rq   c                   ó>   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 	 dd„Zˆ xZS )ÚT5LayerSelfAttentionFNrr   c                 óò   •— t          ¦   «                              ¦   «          t          |||¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )N©ru   rr   ri   )r$   r%   rq   ÚSelfAttentionr!   rM   rl   rm   r   rQ   rR   rS   r†   s       €r/   r%   zT5LayerSelfAttention.__init__O  sl   ø€ Ý‰Œ×ÒÑÔÐÝ(ØÐ0KÐW`ð
ñ 
ô 
ˆÔõ & f¤n¸&Ô:SÐTÑTÔTˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr0   c                 ó¾   — |                       |¦  «        }|                      ||||||¬¦  «        }	||                      |	d         ¦  «        z   }|f|	dd …         z   }
|
S )N)rÃ   rÅ   rÆ   Ú	use_cacherÇ   r   r   )rm   rß   rS   )r+   r=   Úattention_maskrÅ   rÆ   rá   rÇ   rÈ   Únormed_hidden_statesÚattention_outputr×   s              r/   r?   zT5LayerSelfAttention.forwardW  s}   € ð  $Ÿš¨}Ñ=Ô=ÐØ×-Ò-Ø ØØ'Ø+ØØ/ð .ñ 
ô 
Ðð &¨¯ªÐ5EÀaÔ5HÑ(IÔ(IÑIˆØ Ð"Ð%5°a°b°bÔ%9Ñ9ˆØˆr0   rØ   )NNNFF©r@   rA   rB   rÙ   r%   r?   rC   rD   s   @r/   rÜ   rÜ   N  ss   ø€ € € € € ð7ð 7ÈSÐSWÉZð 7ð 7ð 7ð 7ð 7ð 7ð ØØØØðð ð ð ð ð ð ð r0   rÜ   c                   ó<   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 dd„Zˆ xZS )ÚT5LayerCrossAttentionNrr   c                 óò   •— t          ¦   «                              ¦   «          t          |d|¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )NFrÞ   ri   )r$   r%   rq   ÚEncDecAttentionr!   rM   rl   rm   r   rQ   rR   rS   )r+   rG   rr   r.   s      €r/   r%   zT5LayerCrossAttention.__init__p  sb   ø€ Ý‰Œ×ÒÑÔÐÝ*¨6ÈuÐ`iÐjÑjÔjˆÔÝ% f¤n¸&Ô:SÐTÑTÔTˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr0   Fc                 ó¾   — |                       |¦  «        }|                      ||||||¬¦  «        }	||                      |	d         ¦  «        z   }
|
f|	dd …         z   }|S )N)rÃ   rÄ   rÅ   rÆ   rÇ   r   r   )rm   ré   rS   )r+   r=   rÄ   râ   rÅ   rÆ   rÇ   rÈ   rã   rä   Úlayer_outputr×   s               r/   r?   zT5LayerCrossAttention.forwardv  s|   € ð  $Ÿš¨}Ñ=Ô=ÐØ×/Ò/Ø ØØ-Ø'Ø+Ø/ð 0ñ 
ô 
Ðð % t§|¢|Ð4DÀQÔ4GÑ'HÔ'HÑHˆØ�/Ð$4°Q°R°RÔ$8Ñ8ˆØˆr0   rX   )NNNFrå   rD   s   @r/   rç   rç   o  so   ø€ € € € € ð7ð 7¨#°©*ð 7ð 7ð 7ð 7ð 7ð 7ð ØØØðð ð ð ð ð ð ð r0   rç   c                   óF   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )	ÚT5BlockFNrr   c                 ó’  •— t          ¦   «                              ¦   «          |j        | _        t          j        ¦   «         | _        | j                             t          |||¬¦  «        ¦  «         | j        r)| j                             t          ||¬¦  «        ¦  «         | j                             t          |¦  «        ¦  «         d S )NrÞ   )rr   )
r$   r%   rt   r   Ú
ModuleListÚlayerÚappendrÜ   rç   rg   r†   s       €r/   r%   zT5Block.__init__�  s³   ø€ Ý‰Œ×ÒÑÔÐØ Ô+ˆŒÝ”]‘_”_ˆŒ
ØŒ
×ÒÝ  ÐE`ÐluÐvÑvÔvñ	
ô 	
ð 	
ð Œ?ð 	RØŒJ×ÒÕ3°FÀiÐPÑPÔPÑQÔQÐQàŒ
×Ò�) FÑ+Ô+Ñ,Ô,Ð,Ð,Ð,r0   Tc                 óâ  —  | j         d         ||||||	¬¦  «        }|d         }|dd …         }|j        t          j        k    r�t          j        t          j        |¦  «                             ¦   «         t          j        |j        ¦  «        j        dz
  t          j        |j        ¦  «        j        ¦  «        }t          j	        || |¬¦  «        }| j
        o|d u}|rÓ | j         d         ||||||	¬¦  «        }|d         }|j        t          j        k    r�t          j        t          j        |¦  «                             ¦   «         t          j        |j        ¦  «        j        dz
  t          j        |j        ¦  «        j        ¦  «        }t          j	        || |¬¦  «        }||dd …         z   } | j         d         |¦  «        }|j        t          j        k    r�t          j        t          j        |¦  «                             ¦   «         t          j        |j        ¦  «        j        dz
  t          j        |j        ¦  «        j        ¦  «        }t          j	        || |¬¦  «        }|f}||z   S )Nr   )râ   rÅ   rÆ   rá   rÇ   r   iè  )rŒ   Úmax)rÄ   râ   rÅ   rÆ   rÇ   r3   )rð   r:   r'   r;   r’   ÚisinfÚanyÚfinforó   Úclamprt   )r+   r=   râ   rÅ   Úencoder_hidden_statesÚencoder_attention_maskÚencoder_decoder_position_biasrÆ   rá   rÇ   Úreturn_dictrÈ   Úself_attention_outputsÚattention_outputsÚclamp_valueÚdo_cross_attentionÚcross_attention_outputsr×   s                     r/   r?   zT5Block.forward›  so  € ð "/ ¤¨A¤ØØ)Ø'Ø+ØØ/ð"
ñ "
ô "
Ðð /¨qÔ1ˆØ2°1°2°2Ô6Ðð Ô¥%¤-Ò/Ð/Ýœ+Ý”˜MÑ*Ô*×.Ò.Ñ0Ô0Ý”˜MÔ/Ñ0Ô0Ô4°tÑ;Ý”˜MÔ/Ñ0Ô0Ô4ñô ˆKõ
 "œK¨¸K¸<È[ÐYÑYÔYˆMà!œ_ÐRÐ1FÈdÐ1RÐØð 	PØ&3 d¤j°¤mØØ!6Ø5Ø;Ø /Ø"3ð'ñ 'ô 'Ð#ð 4°AÔ6ˆMð Ô"¥e¤mÒ3Ð3Ý#œkÝ”K Ñ.Ô.×2Ò2Ñ4Ô4Ý”K Ô 3Ñ4Ô4Ô8¸4Ñ?Ý”K Ô 3Ñ4Ô4Ô8ñô �õ
 !&¤¨MÀ¸|ÐQ\Ð ]Ñ ]Ô ]�ð !2Ð4KÈAÈBÈBÔ4OÑ OÐð '˜œ
 2œ }Ñ5Ô5ˆð Ô¥%¤-Ò/Ð/Ýœ+Ý”˜MÑ*Ô*×.Ò.Ñ0Ô0Ý”˜MÔ/Ñ0Ô0Ô4°tÑ;Ý”˜MÔ/Ñ0Ô0Ô4ñô ˆKõ
 "œK¨¸K¸<È[ÐYÑYÔYˆMà Ð"ˆð Ð'Ñ'ð	
r0   rØ   )	NNNNNNFFTrå   rD   s   @r/   rí   rí   Ž  s‡   ø€ € € € € ð
-ð 
-ÈSÐSWÉZð 
-ð 
-ð 
-ð 
-ð 
-ð 
-ð ØØ"Ø#Ø&*ØØØØðJ
ð J
ð J
ð J
ð J
ð J
ð J
ð J
r0   rí   c                   óL   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚT5ClassificationHeadz-Head for sentence-level classification tasks.rG   c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        ¬¦  «        | _        t          j        |j        |j	        ¦  «        | _
        d S )N)r­   )r$   r%   r   rL   rM   ÚdenserQ   Úclassifier_dropoutrS   Ú
num_labelsÚout_projrV   s     €r/   r%   zT5ClassificationHead.__init__ë  sc   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vœ~¨v¬~Ñ>Ô>ˆŒ
Ý”z FÔ$=Ð>Ñ>Ô>ˆŒÝœ	 &¤.°&Ô2CÑDÔDˆŒˆˆr0   r=   Úreturnc                 óÖ   — |                       |¦  «        }|                      |¦  «        }t          j        |¦  «        }|                       |¦  «        }|                      |¦  «        }|S rX   )rS   r  r'   Útanhr  r\   s     r/   r?   zT5ClassificationHead.forwardñ  s[   € ØŸš ]Ñ3Ô3ˆØŸ
š
 =Ñ1Ô1ˆÝœ
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš mÑ4Ô4ˆØÐr0   )
r@   rA   rB   Ú__doc__r   r%   r'   rZ   r?   rC   rD   s   @r/   r  r  è  sw   ø€ € € € € Ø7Ð7ðE˜xð Eð Eð Eð Eð Eð Eð U¤\ð °e´lð ð ð ð ð ð ð ð r0   r  c                   óˆ   ‡ — e Zd ZU eed<   dZdZdZdgZdgZ	e
d„ ¦   «         Z ej        ¦   «         ˆ fd„¦   «         Zd„ Zˆ xZS )	ÚT5PreTrainedModelrG   ÚtransformerTrí   rP   c                 óv   — t          j        t          ¦  «        }t          j        t          ¦  «        }|||dœ}|S )N)Údecoder_input_idsÚ	input_idsÚdecoder_attention_mask)r'   Útensorr   r   )r+   r  Ú
input_maskÚdummy_inputss       r/   r  zT5PreTrainedModel.dummy_inputs  s=   € å”L¥Ñ.Ô.ˆ	Ý”\¥*Ñ-Ô-ˆ
à!*Ø"Ø&0ð
ð 
ˆð
 Ðr0   c                 ó\  •— t          ¦   «                              |¦  «         | j        j        }t	          |t
          ¦  «        rt          j        |j        |dz  ¦  «         d	S t	          |t          t          t          t          f¦  «        rÇt          j        |j        j        d|dz  ¬¦  «         t          |d¦  «        r0| j        j        s$t          j        |j        j        d|dz  ¬¦  «         t          |d¦  «        rQt          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          j        |j        j        ¦  «         d	S d	S t	          |t,          ¦  «        rVt          |d¦  «        rDt          j        |j        j        d|dz  ¬¦  «         t          j        |j        j        ¦  «         d	S d	S t	          |t0          ¦  «        ræt          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r*|j        j        �t          j        |j        j        ¦  «         t          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r,|j        j        �"t          j        |j        j        ¦  «         d	S d	S d	S t	          |t6          ¦  «        ræt          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r*|j        j        �t          j        |j        j        ¦  «         t          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r,|j        j        �"t          j        |j        j        ¦  «         d	S d	S d	S t	          |t>          ¦  «        �rVt          j        |j         j        d|| j        j        dz  z  ¬¦  «         t          |j         d¦  «        r*|j         j        �t          j        |j         j        ¦  «         t          j        |j!        j        d|| j        j        dz  z  ¬¦  «         t          |j!        d¦  «        r*|j!        j        �t          j        |j!        j        ¦  «         t          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r,|j        j        �"t          j        |j        j        ¦  «         d	S d	S d	S t	          |tD          ¦  «        rö| j        j        }| j        j#        }| j        j$        }t          j        |j%        j        d|||z  dz  z  ¬¦  «         t          j        |j&        j        d||dz  z  ¬¦  «         t          j        |j'        j        d||dz  z  ¬¦  «         t          j        |j(        j        d|||z  dz  z  ¬¦  «         |j)        r+t          j        |j*        j        d||dz  z  ¬¦  «         d	S d	S d	S )
zInitialize the weightsg      ð?g        )r8   ÚstdÚlm_headÚ
qa_outputsç      à¿Ú
classifierrK   N)+r$   Ú_init_weightsrG   Úinitializer_factorrY   r!   ÚinitÚ	constant_r)   ÚT5ModelÚT5ForConditionalGenerationÚT5EncoderModelÚT5ForQuestionAnsweringÚnormal_ÚsharedÚhasattrÚtie_word_embeddingsr  r  rM   Úzeros_rK   ÚT5ForTokenClassificationr  r  r  r  rF   rO   rP   rN   r_   ra   rb   rq   rx   rz   r   r€   r�   r‚   ru   r„   )r+   ÚmoduleÚfactorrM   ry   r{   r.   s         €r/   r  zT5PreTrainedModel._init_weights  sì  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ø”Ô/ˆÝ�f�kÑ*Ô*ð 1	pÝŒN˜6œ=¨&°3©,Ñ7Ô7Ð7Ð7Ð7ÝØÝÕ0µ.ÕBXÐYñ
ô 
ð /	põ ŒL˜œÔ-°C¸VÀc¹\ÐJÑJÔJÐJÝ�v˜yÑ)Ô)ð P°$´+Ô2Qð PÝ”˜Vœ^Ô2¸À&È3Á,ÐOÑOÔOÐOÝ�v˜|Ñ,Ô,ð 4Ý”˜VÔ.Ô5¸CÀVÐPTÔP[ÔPcÐhlÑOlÑEmÐnÑnÔnÐnÝ”˜FÔ-Ô2Ñ3Ô3Ð3Ð3Ð3ð4ð 4õ ˜Õ 8Ñ9Ô9ð %	pÝ�v˜|Ñ,Ô,ð 4Ý”˜VÔ.Ô5¸CÀVÈcÁ\ÐRÑRÔRÐRÝ”˜FÔ-Ô2Ñ3Ô3Ð3Ð3Ð3ð4ð 4õ ˜Õ 4Ñ5Ô5ð !	pÝŒL˜œÔ,°3¸FÀtÄ{ÔGZÐ_cÑFcÑ<dÐeÑeÔeÐeÝ�v”| VÑ,Ô,ð /°´Ô1BÐ1NÝ”˜FœLÔ-Ñ.Ô.Ð.ÝŒL˜œÔ/°c¸vÈ$Ì+ÔJ]ÐbfÑIfÑ?gÐhÑhÔhÐhÝ�v”¨Ñ/Ô/ð 2°F´OÔ4HÐ4TÝ”˜FœOÔ0Ñ1Ô1Ð1Ð1Ð1ð2ð 2Ð4TÐ4Tå˜¥Ñ0Ô0ð 	pÝŒL˜œÔ)°¸ÀDÄKÔDWÐ\`ÑC`Ñ9aÐbÑbÔbÐbÝ�v”y &Ñ)Ô)ð ,¨f¬i¬nÐ.HÝ”˜FœIœNÑ+Ô+Ð+ÝŒL˜œÔ)°¸ÀDÄKÔDTÐY]ÑC]Ñ9^Ð_Ñ_Ô_Ð_Ý�v”y &Ñ)Ô)ð ,¨f¬i¬nÐ.HÝ”˜FœIœNÑ+Ô+Ð+Ð+Ð+ð,ð ,Ð.HÐ.Hå˜Õ 4Ñ5Ô5ñ 	pÝŒL˜œÔ+°#¸6ÀdÄkÔFYÐ^bÑEbÑ;cÐdÑdÔdÐdÝ�v”{ FÑ+Ô+ð .°´Ô0@Ð0LÝ”˜FœKÔ,Ñ-Ô-Ð-ÝŒL˜œÔ+°#¸6ÀdÄkÔFYÐ^bÑEbÑ;cÐdÑdÔdÐdÝ�v”{ FÑ+Ô+ð .°´Ô0@Ð0LÝ”˜FœKÔ,Ñ-Ô-Ð-ÝŒL˜œÔ)°¸ÀDÄKÔDTÐY]ÑC]Ñ9^Ð_Ñ_Ô_Ð_Ý�v”y &Ñ)Ô)ð ,¨f¬i¬nÐ.HÝ”˜FœIœNÑ+Ô+Ð+Ð+Ð+ð,ð ,Ð.HÐ.Hå˜¥Ñ,Ô,ð 		pØ”kÔ)ˆGØ!%¤Ô!1ÐØ”kÔ+ˆGÝŒL˜œœ¨s¸À7ÐM_ÑC_ÐdhÑBhÑ8iÐjÑjÔjÐjÝŒL˜œœ¨s¸À'È4Á-Ñ8PÐQÑQÔQÐQÝŒL˜œœ¨s¸À'È4Á-Ñ8PÐQÑQÔQÐQÝŒL˜œœ¨s¸À7ÐM_ÑC_ÐdhÑBhÑ8iÐjÑjÔjÐjØÔ1ð pÝ”˜VÔ;ÔBÈÐRXÐ]dÐimÑ\mÑRnÐoÑoÔoÐoÐoÐoð		pð 		pðpð pr0   c                 ó6  — | j         j        }| j         j        }|€t          d¦  «        ‚|                     |j        ¦  «        }|dd d…f                              ¦   «         |ddd …f<   ||d<   |€t          d¦  «        ‚|                     |dk    |¦  «         |S )NzŠself.model.config.decoder_start_token_id has to be defined. In T5 it is usually set to the pad_token_id. See T5 docs for more information..r3   r   ).r   z1self.model.config.pad_token_id has to be defined.éœÿÿÿ)rG   Údecoder_start_token_idÚpad_token_idÚ
ValueErrorÚ	new_zerosr¯   r±   Úmasked_fill_)r+   r  r.  r/  Úshifted_input_idss        r/   Ú_shift_rightzT5PreTrainedModel._shift_rightG  sº   € Ø!%¤Ô!CÐØ”{Ô/ˆà!Ð)Ýð4ñô ð ð
 &×/Ò/°	´Ñ@Ô@ÐØ%.¨s°C°R°C¨xÔ%8×%>Ò%>Ñ%@Ô%@Ð˜#˜q˜r˜r˜'Ñ"Ø$:Ð˜&Ñ!àÐÝÐPÑQÔQÐQà×&Ò&Ð'8¸DÒ'@À,ÑOÔOÐOà Ð r0   )r@   rA   rB   r   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_can_compile_fullgraphÚ_no_split_modulesÚ_keep_in_fp32_modulesÚpropertyr  r'   Úno_gradr  r4  rC   rD   s   @r/   r  r  ú  sª   ø€ € € € € € àÐÐÑØ%ÐØ&*Ð#Ø!Ðà"˜ÐØ!˜FÐàðð ñ „Xðð €U„]�_„_ð5pð 5pð 5pð 5pñ „_ð5pðn!ð !ð !ð !ð !ð !ð !r0   r  c                   ó@   ‡ — e Zd Zˆ fd„Zd„ Z	 	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚT5Stackc                 óÌ  •‡— t          ¦   «                              ‰¦  «         t          j        ‰j        ‰j        ¦  «        | _        ‰j        | _        t          j        ˆfd„t          ‰j
        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j        ¬¦  «        | _        t          j        ‰j        ¦  «        | _        |                      ¦   «          d| _        d S )Nc           	      óV   •— g | ]%}t          ‰t          |d k    ¦  «        |¬¦  «        ‘Œ&S )r   rÞ   )rí   Úbool)Ú.0ÚirG   s     €r/   ú
<listcomp>z$T5Stack.__init__.<locals>.<listcomp>e  s4   ø€ ÐvÐvÐvÐXY�W�V½¸aÀ1ºf¹¼ÐQRÐSÑSÔSÐvÐvÐvr0   ri   F)r$   r%   r   rƒ   Ú
vocab_sizerM   Úembed_tokensrt   rï   ÚrangeÚ
num_layersÚblockr!   rl   Úfinal_layer_normrQ   rR   rS   Ú	post_initr…   rV   s    `€r/   r%   zT5Stack.__init__^  sÆ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð åœL¨Ô):¸F¼NÑKÔKˆÔØ Ô+ˆŒå”]ØvÐvÐvÐvÕ]bÐciÔctÑ]uÔ]uÐvÑvÔvñ
ô 
ˆŒ
õ !,¨F¬NÀÔ@YÐ ZÑ ZÔ ZˆÔÝ”z &Ô"5Ñ6Ô6ˆŒð 	�ŠÑÔÐØ&+ˆÔ#Ð#Ð#r0   c                 ó   — || _         d S rX   )rF  ©r+   Únew_embeddingss     r/   Úset_input_embeddingszT5Stack.set_input_embeddingsn  s   € Ø*ˆÔÐÐr0   Nc                 ó„  — |�|n| j         j        }|�|n| j         j        }|	�|	n| j         j        }	|
�|
n| j         j        }
|�#|�!| j        rdnd}t          d|› d|› d�¦  «        ‚|�1|                     ¦   «         }|                     d|d         ¦  «        }n@|�|                     ¦   «         d d…         }n!| j        rdnd}t          d|› d|› d	�¦  «        ‚| j	        r%| j
        r|rt                               d
¦  «         d}|€+| j        €t          d¦  «        ‚|                      |¦  «        }|\  }}|du r| j        st          d| › d�¦  «        ‚| j        r]|rZ|€X| j         j        r7t          t!          | j         ¬¦  «        t!          | j         ¬¦  «        ¦  «        }nt!          | j         ¬¦  «        }n	| j        sd }| j         j        r5t#          | j         ||t%          |t          ¦  «        r|j        n|¬¦  «        }nt)          | j         ||¬¦  «        }d }| j        r|�t)          | j         |||¬¦  «        }|	rdnd }|rdnd }|r	| j        rdnd }d }d }|                      |¦  «        }| j        D ]e}|	r||fz   } |||||||||||
¬¦
  «
        }|d         }|d         }| j        r|�||rdnd         }|r||d         fz   }| j        r||d         fz   }Œf|                      |¦  «        }|                      |¦  «        }|	r||fz   }|
st1          d„ |||||fD ¦   «         ¦  «        S t3          |||||¬¦  «        S )NÚdecoder_Ú zYou cannot specify both zinput_ids and zinputs_embeds at the same timer3   zYou have to specify either zinput_ids or Úinputs_embedszZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...Fz<You have to initialize the model with valid token embeddingsTz)`use_cache` can only be set to `True` if z is used as a decoder)rG   )rG   rS  râ   rÆ   )rG   rS  râ   )rG   rS  râ   rø   © )rÆ   rá   rÇ   rû   r   r   r   r2   é   c              3   ó   K  — | ]}|®|V — Œ	d S rX   rT  )rB  r�   s     r/   ú	<genexpr>z"T5Stack.forward.<locals>.<genexpr>û  s4   è è € ð 
ð 
àð �=ð ð !�=�=�=ð
ð 
r0   )Úlast_hidden_staterÆ   r=   Ú
attentionsÚcross_attentions)rG   rá   rÇ   Úoutput_hidden_statesrû   rt   r0  Úsizer²   r…   r®   r}   r~   rF  Úis_encoder_decoderr   r   r   rY   r·   r   rS   rI  rJ  Útupler   )r+   r  râ   rø   rù   rS  rÆ   rá   rÇ   r[  rû   rÈ   Úerr_msg_prefixrÉ   Ú
batch_sizeÚ
seq_lengthÚencoder_extended_attention_maskÚall_hidden_statesÚall_attentionsÚall_cross_attentionsrÅ   rú   r=   Úlayer_moduleÚlayer_outputss                            r/   r?   zT5Stack.forwardq  sÉ  € ð "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø1BÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ  ]Ð%>Ø+/¬?ÐB˜Z˜ZÀˆNÝØw¨>ÐwÐwÈÐwÐwÐwñô ð ð Ð"Ø#Ÿ.š.Ñ*Ô*ˆKØ!Ÿš r¨;°r¬?Ñ;Ô;ˆIˆIØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKˆKà+/¬?ÐB˜Z˜ZÀˆNÝÐu¸>ÐuÐuÐXfÐuÐuÐuÑvÔvÐvàÔ&ð 	"¨4¬=ð 	"Øð "Ý×#Ò#Øpñô ð ð "�	àÐ ØÔ Ð(Ý Ð!_Ñ`Ô`Ð`Ø ×-Ò-¨iÑ8Ô8ˆMà!,Ñˆ
�Jà˜ÐÐØ”?ð jÝ Ð!hÈTÐ!hÐ!hÐ!hÑiÔiÐiàŒ?ð 	#Øð G˜_Ð4Ø”;Ô1ð GÝ&9Ý$¨D¬KÐ8Ñ8Ô8½,ÈdÌkÐ:ZÑ:ZÔ:Zñ'ô '�O�Oõ '3¸$¼+Ð&FÑ&FÔ&F�OøØ”ð 	#ð #ˆOàŒ;Ô!ð 	Ý/Ø”{Ø+Ø-å˜oÕ/BÑCÔCð!% Ô DÐ Dà$ðñ ô ˆNˆNõ 7Ø”{Ø+Ø-ðñ ô ˆNð +/Ð'ØŒ?ð 	Ð4Ð@Ý.GØ”{Ø+Ø5Ø&;ð	/ñ /ô /Ð+ð #7Ð@˜B˜B¸DÐØ0Ð:˜˜°dˆØ&7ÐV¸D¼OÐV˜r˜rÐRVÐØˆØ(,Ð%àŸš ]Ñ3Ô3ˆà œJð 	Vð 	VˆLØ#ð IØ$5¸Ð8HÑ$HÐ!à(˜LØØØØ%Ø/Ø-Ø /Ø#Ø"3Ø'ðñ ô ˆMð *¨!Ô,ˆMð
 *¨!Ô,ˆMØŒð ]Ð#8Ð#DØ0=ÐCTÐ>[¸a¸aÐZ[Ô0\Ð-à ð VØ!/°=ÀÔ3CÐ2EÑ!E�Ø”?ð VØ+?À=ÐQRÔCSÐBUÑ+UÐ(øà×-Ò-¨mÑ<Ô<ˆØŸš ]Ñ3Ô3ˆð  ð 	EØ 1°]Ð4DÑ DÐàð 	Ýð 
ð 
ð "Ø#Ø%Ø"Ø(ðð
ñ 
ô 
ñ 
ô 
ð 
õ 9Ø+Ø+Ø+Ø%Ø1ð
ñ 
ô 
ð 	
r0   )
NNNNNNNNNN)r@   rA   rB   r%   rO  r?   rC   rD   s   @r/   r>  r>  ]  sƒ   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð +ð +ð +ð
 ØØ"Ø#ØØØØØ!Øð[
ð [
ð [
ð [
ð [
ð [
ð [
ð [
r0   r>  c                   óh  ‡ — e Zd ZdgZdddœZdefˆ f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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                 ez  fd„¦   «         Zˆ xZS )r   úFdecoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weightúshared.weight©úencoder.embed_tokens.weightúdecoder.embed_tokens.weightrG   c                 óœ  •— t          ¦   «                              |¦  «         t          j        |j        |j        ¦  «        | _        t          j        |¦  «        }d|_	        d|_
        t          |¦  «        | _        t          j        |¦  «        }d|_	        |j        |_        t          |¦  «        | _        |                      ¦   «          d S ©NFT)r$   r%   r   rƒ   rE  rM   r%  ÚcopyÚdeepcopyrt   rá   r>  ÚencoderÚnum_decoder_layersrH  ÚdecoderrK  ©r+   rG   Úencoder_configÚdecoder_configr.   s       €r/   r%   zT5Model.__init__  sª   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý˜~Ñ.Ô.ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý˜~Ñ.Ô.ˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ©r%  ©r+   s    r/   Úget_input_embeddingszT5Model.get_input_embeddings*  ó
   € ØŒ{Ðr0   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rX   ©r%  rr  rO  rt  rM  s     r/   rO  zT5Model.set_input_embeddings-  ó;   € Ø$ˆŒØŒ×)Ò)¨.Ñ9Ô9Ð9ØŒ×)Ò)¨.Ñ9Ô9Ð9Ð9Ð9r0   Nr  râ   r  r  Úencoder_outputsrÆ   rS  Údecoder_inputs_embedsrá   rÇ   r[  rû   r  c                 ó"  — |	�|	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 )	aV
  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. T5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

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

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

            To know more on how to prepare `input_ids` for pretraining take a look a [T5 Training](./t5#training).
        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)

            T5 uses the `pad_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`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [T5
            Training](./t5#training).
        decoder_attention_mask (`torch.BoolTensor` 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.

        Example:

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

        >>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
        >>> model = T5Model.from_pretrained("google-t5/t5-small")

        >>> input_ids = tokenizer(
        ...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
        ... ).input_ids  # Batch size 1
        >>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids  # Batch size 1

        >>> # preprocess: Prepend decoder_input_ids with start token which is pad token for T5Model.
        >>> # This is not needed for torch's T5ForConditionalGeneration as it does this internally using labels arg.
        >>> decoder_input_ids = model._shift_right(decoder_input_ids)

        >>> # forward pass
        >>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
        >>> last_hidden_states = outputs.last_hidden_state
        ```N©r  râ   rS  rÇ   r[  rû   r   r   r2   ©rX  r=   rY  ©
r  râ   rS  rÆ   rø   rù   rá   rÇ   r[  rû   )rX  rÆ   Údecoder_hidden_statesÚdecoder_attentionsrZ  Úencoder_last_hidden_staterø   Úencoder_attentions)rG   rá   rû   rr  rY   r   Úlenrt  r   rX  rÆ   r=   rY  rZ  )r+   r  râ   r  r  r€  rÆ   rS  r�  rá   rÇ   r[  rû   rÈ   r=   Údecoder_outputss                   r/   r?   zT5Model.forward2  su  € ðD "+Ð!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ØØ/Ø!5Ø#ð 'ñ 
ô 
ˆð ð 	5Ø" _Ñ4Ð4å!Ø-Ô?Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð	
ñ 	
ô 	
ð 		
r0   ©NNNNNNNNNNNN)r@   rA   rB   Ú"_keys_to_ignore_on_load_unexpectedÚ_tied_weights_keysr   r%   r{  rO  r   r'   Ú
LongTensorÚFloatTensorÚ
BoolTensorr^  r
   rZ   rA  r   r?   rC   rD   s   @r/   r   r     sÈ  ø€ € € € € ð 	Qð*Ð&ð (7Ø'6ðð Ðð
˜xð ð ð ð ð ð ð"ð ð ð:ð :ð :ð
 ð .2Ø37Ø59Ø:>ØBFØ(,Ø-1Ø59Ø!%Ø)-Ø,0Ø#'ðq
ð q
àÔ# dÑ*ðq
ð Ô)¨DÑ0ðq
ð !Ô+¨dÑ2ð	q
ð
 !&Ô 0°4Ñ 7ðq
ð ˜u UÔ%6Ô7Ô8¸4Ñ?ðq
ð  ™ðq
ð ”| dÑ*ðq
ð  %œ|¨dÑ2ðq
ð ˜$‘;ðq
ð   $™;ðq
ð # T™kðq
ð ˜D‘[ðq
ð 
ˆuÔ Ô	!Ð$6Ñ	6ðq
ð q
ð q
ñ „^ðq
ð q
ð q
ð q
ð q
r0   r   z:
    T5 Model with a `language modeling` head on top.
    )Úcustom_introc                   ó–  ‡ — e Zd ZdgZddddœZdefˆ f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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
j                 ez  fd„¦   «         Zde
j        fd„Zˆ xZS )r!  ri  rj  )zlm_head.weightrl  rm  rG   c                 ó   •— t          ¦   «                              |¦  «         |j        | _        t	          j        |j        |j        ¦  «        | _        t          j	        |¦  «        }d|_
        d|_        t          |¦  «        | _        t          j	        |¦  «        }d|_
        |j        |_        t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        |                      ¦   «          d S )NFTrJ   )r$   r%   rM   Ú	model_dimr   rƒ   rE  r%  rp  rq  rt   rá   r>  rr  rs  rH  rt  rL   r  rK  ru  s       €r/   r%   z#T5ForConditionalGeneration.__init__¶  sÐ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØœˆŒå”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý˜~Ñ.Ô.ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý˜~Ñ.Ô.ˆŒå”y ¤°Ô1BÈÐOÑOÔOˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ry  rz  s    r/   r{  z/T5ForConditionalGeneration.get_input_embeddingsË  r|  r0   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rX   r~  rM  s     r/   rO  z/T5ForConditionalGeneration.set_input_embeddingsÎ  r  r0   Nr  râ   r  r  r€  rÆ   rS  r�  Úlabelsrá   rÇ   r[  rû   r  c                 óÐ  — |
�|
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         }|	�|€|€|                      |	¦  «        }|                      |||||||
|||¬¦
  «
        }|d         }| j         j	        r|| j
        dz  z  }|                      |¦  «        }d}|	�pt          d	¬
¦  «        }|	                     |j        ¦  «        }	 ||                     d|                     d¦  «        ¦  «        |	                     d¦  «        ¦  «        }|s|f|dd…         z   |z   }|�|f|z   n|S t#          |||j        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )a  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. T5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

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

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

            To know more on how to prepare `input_ids` for pretraining take a look a [T5 Training](./t5#training).
        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)

            T5 uses the `pad_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`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [T5
            Training](./t5#training).
        decoder_attention_mask (`torch.BoolTensor` 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.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[-100, 0, ...,
            config.vocab_size - 1]`. All labels set to `-100` are ignored (masked), the loss is only computed for
            labels in `[0, ..., config.vocab_size]`

        Examples:

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

        >>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
        >>> model = T5ForConditionalGeneration.from_pretrained("google-t5/t5-small")

        >>> # training
        >>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
        >>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids
        >>> outputs = model(input_ids=input_ids, labels=labels)
        >>> loss = outputs.loss
        >>> logits = outputs.logits

        >>> # inference
        >>> input_ids = tokenizer(
        ...     "summarize: studies have shown that owning a dog is good for you", return_tensors="pt"
        ... ).input_ids  # Batch size 1
        >>> outputs = model.generate(input_ids)
        >>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
        >>> # studies have shown that owning a dog is good for you.
        ```Nrƒ  r   r   r2   r„  r…  r  r-  ©Úignore_indexr3   ©	ÚlossÚlogitsrÆ   r†  r‡  rZ  rˆ  rø   r‰  )rG   rá   rû   rr  rY   r   rŠ  r4  rt  Úscale_decoder_outputsr•  r  r   r5   r�   r²   r\  r   rÆ   r=   rY  rZ  rX  )r+   r  râ   r  r  r€  rÆ   rS  r�  r˜  rá   rÇ   r[  rû   rÈ   r=   r‹  Úsequence_outputÚ	lm_logitsr�  Úloss_fctÚoutputs                         r/   r?   z"T5ForConditionalGeneration.forwardÓ  sa  € ðR "+Ð!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ð (¨Ô*ˆàÐÐ"3Ð";Ð@UÐ@]à $× 1Ò 1°&Ñ 9Ô 9Ðð Ÿ,š,Ø'Ø1Ø/Ø+Ø"/Ø#1ØØ/Ø!5Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆàŒ;Ô,ð 	GØ-°´ÀÑ1EÑFˆOà—L’L Ñ1Ô1ˆ	àˆØÐÝ'°TÐ:Ñ:Ô:ˆHà—Y’Y˜yÔ/Ñ0Ô0ˆFØ�8˜IŸNšN¨2¨y¯~ª~¸bÑ/AÔ/AÑBÔBÀFÇKÂKÐPRÁOÄOÑTÔTˆDàð 	FØ�\ O°A°B°BÔ$7Ñ7¸/ÑIˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEåØØØ+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð

ñ 

ô 

ð 
	
r0   c                 ó,   — |                       |¦  «        S rX   )r4  )r+   r˜  s     r/   Ú%prepare_decoder_input_ids_from_labelsz@T5ForConditionalGeneration.prepare_decoder_input_ids_from_labelsc  s   € Ø× Ò  Ñ(Ô(Ð(r0   ©NNNNNNNNNNNNN)r@   rA   rB   r�  rŽ  r   r%   r{  rO  r   r'   r�  r�  r‘  r^  rZ   r
   rA  r   r?   r¥  rC   rD   s   @r/   r!  r!  §  sû  ø€ € € € € ð 	Qð*Ð&ð *Ø'6Ø'6ðð Ðð˜xð ð ð ð ð ð ð*ð ð ð:ð :ð :ð
 ð .2Ø37Ø59Ø:>Ø=AØ(,Ø26Ø:>Ø*.Ø!%Ø)-Ø,0Ø#'ðM
ð M
àÔ# dÑ*ðM
ð Ô)¨DÑ0ðM
ð !Ô+¨dÑ2ð	M
ð
 !&Ô 0°4Ñ 7ðM
ð ˜u U¤\Ô2Ô3°dÑ:ðM
ð  ™ðM
ð Ô(¨4Ñ/ðM
ð  %Ô0°4Ñ7ðM
ð Ô  4Ñ'ðM
ð ˜$‘;ðM
ð   $™;ðM
ð # T™kðM
ð ˜D‘[ðM
ð  
ˆuÔ Ô	! OÑ	3ð!M
ð M
ð M
ñ „^ðM
ð^)¸E¼Lð )ð )ð )ð )ð )ð )ð )ð )r0   r!  c                   óÞ   ‡ — e Zd ZddiZdgZdefˆ f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dz  dedz  dedz  dee
j                 ez  fd„¦   «         Zˆ xZS )r"  rl  rj  rt  rG   c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        |j        ¦  «        | _        |}d|_        d|_        t          |¦  «        | _
        |                      ¦   «          d S )NF)r$   r%   r   rƒ   rE  rM   r%  rá   r]  r>  rr  rK  )r+   rG   rv  r.   s      €r/   r%   zT5EncoderModel.__init__l  so   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”l 6Ô#4°f´nÑEÔEˆŒàˆØ#(ˆÔ Ø,1ˆÔ)Ý˜~Ñ.Ô.ˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ry  rz  s    r/   r{  z#T5EncoderModel.get_input_embeddingsx  r|  r0   c                 óH   — || _         | j                             |¦  «         d S rX   )r%  rr  rO  rM  s     r/   rO  z#T5EncoderModel.set_input_embeddings{  s%   € Ø$ˆŒØŒ×)Ò)¨.Ñ9Ô9Ð9Ð9Ð9r0   Nr  râ   rS  rÇ   r[  rû   r  c                 ó\   — |�|n| j         j        }|                      ||||||¬¦  «        }|S )aI  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. T5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

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

            To know more on how to prepare `input_ids` for pretraining take a look a [T5 Training](./t5#training).

        Example:

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

        >>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-small")
        >>> model = T5EncoderModel.from_pretrained("google-t5/t5-small")
        >>> input_ids = tokenizer(
        ...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
        ... ).input_ids  # Batch size 1
        >>> outputs = model(input_ids=input_ids)
        >>> last_hidden_states = outputs.last_hidden_state
        ```Nrƒ  )rG   rû   rr  )	r+   r  râ   rS  rÇ   r[  rû   rÈ   r€  s	            r/   r?   zT5EncoderModel.forward  sJ   € ðD &1Ð%<�k�kÀ$Ä+ÔBYˆàŸ,š,ØØ)Ø'Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð Ðr0   )NNNNNN)r@   rA   rB   rŽ  r�  r   r%   r{  rO  r   r'   r�  r�  rA  r^  r   r?   rC   rD   s   @r/   r"  r"  g  s#  ø€ € € € € à7¸ÐIÐØ*4¨Ð&ð
˜xð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð:ð :ð :ð ð .2Ø37Ø26Ø)-Ø,0Ø#'ð,ð ,àÔ# dÑ*ð,ð Ô)¨DÑ0ð,ð Ô(¨4Ñ/ð	,ð
   $™;ð,ð # T™kð,ð ˜D‘[ð,ð 
ˆuÔ Ô	! OÑ	3ð,ð ,ð ,ñ „^ð,ð ,ð ,ð ,ð ,r0   r"  zƒ
    T5 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gZdefˆ f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 )ÚT5ForSequenceClassificationri  rG   c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S rX   )r$   r%   r   r  r  Úclassification_headrK  rV   s     €r/   r%   z$T5ForSequenceClassification.__init__¸  sQ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý" 6™?œ?ˆÔÝ#7¸Ñ#?Ô#?ˆÔ ð 	�ŠÑÔÐÐÐr0   Nr  râ   r  r  r€  rS  r�  r˜  rá   rÇ   r[  rû   r  c                 óº  — |�|n| j         j        }|�d}	|€|�t          d| j        j        › �¦  «        ‚|€(|€&|€t          d¦  «        ‚|                      |¦  «        }|                      ||||||||	|
||¬¦  «        }|d         }|                     | j         j	        ¦  «         
                    |j        ¦  «        }t          t          j        |                     d¦  «        ¦  «                             ¦   «         dk    d¦  «         |j        \  }}}||dd…f         }t          |j        d         |z  dk    d	¦  «         |                     |d
|¦  «        dd…d
dd…f         }|                      |¦  «        }d}|��ˆ| 
                    |j        ¦  «        }| 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\t3          ¦   «         }| j         j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }n“ |||¦  «        }n†| j         j        dk    rLt7          ¦   «         } ||                     d
| j         j        ¦  «        |                     d
¦  «        ¦  «        }n*| j         j        dk    rt9          ¦   «         } |||¦  «        }|s|f|dd…         z   }|�|f|z   n|S t;          |||j        |j        |j         |j!        |j"        |j#        |j$        ¬¦	  «	        S )a¤  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. T5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

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

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

            To know more on how to prepare `input_ids` for pretraining take a look a [T5 Training](./t5#training).
        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)

            T5 uses the `pad_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`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [T5
            Training](./t5#training).
        decoder_attention_mask (`torch.BoolTensor` 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.
        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).
        NFz8Passing input embeddings is currently not supported for ú°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â   r  r  r€  rS  r�  rá   rÇ   r[  rû   r   r   z7All examples must have the same number of <eos> tokens.z3Each example must contain at least one <eos> token.r3   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationrœ  )%rG   rû   ÚNotImplementedErrorr.   r@   r0  r4  r  ÚeqÚeos_token_idr5   r�   r   r'   Úunique_consecutiveÚsumÚnumelr¯   r²   r¯  Úproblem_typer  r:   rŠ   rÙ   r   Úsqueezer   r   r   rÆ   r†  r‡  rZ  rˆ  rø   r‰  )r+   r  râ   r  r  r€  rS  r�  r˜  rá   rÇ   r[  rû   rÈ   r×   r   Úeos_maskr`  Ú_r,   ÚselectedÚsentence_representationrž  r�  r¢  r£  s                             r/   r?   z#T5ForSequenceClassification.forwardÀ  s±  € ð` &1Ð%<�k�kÀ$Ä+ÔBYˆØÐØˆIàÐ Ð!:Ý%ØdÈ4Ì>ÔKbÐdÐdñô ð ð Ð$Ð)>Ð)FØÐ Ý ðUñô ð ð
 !%× 1Ò 1°)Ñ <Ô <Ðà×"Ò"ØØ)Ø/Ø#9Ø+Ø'Ø"7ØØ/Ø!5Ø#ð #ñ 
ô 
ˆð " !œ*ˆà—<’< ¤Ô 8Ñ9Ô9×<Ò<¸_Ô=SÑTÔTˆåÝÔ$ X§\¢\°!¡_¤_Ñ5Ô5×;Ò;Ñ=Ô=ÀÒBØEñ	
ô 	
ð 	
ð &5Ô%:Ñ"ˆ
�A�{Ø" 8¨Q¨Q¨Q ;Ô/ˆÝØŒN˜1Ô Ñ+¨qÒ0ØAñ	
ô 	
ð 	
ð #+§-¢-°
¸BÀÑ"LÔ"LÈQÈQÈQÐPRÐTUÐTUÐTUÈXÔ"VÐØ×)Ò)Ð*AÑBÔBˆàˆØÑØ—Y’Y˜vœ}Ñ-Ô-ˆFØŒ{Ô'Ð/Ø”;Ô)¨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ð

ñ 

ô 

ð 
	
r0   rŒ  )r@   rA   rB   r�  r   r%   r   r'   r�  rZ   Úlistr�  rA  r^  r   r?   rC   rD   s   @r/   r­  r­  ¯  s‹  ø€ € € € € ð +sÐ)sÐ&ð˜xð ð ð ð ð ð ð ð .2Ø.2Ø59Ø:>Ø:>Ø26Ø:>Ø*.Ø!%Ø)-Ø,0Ø#'ðF
ð F
àÔ# dÑ*ðF
ð œ tÑ+ðF
ð !Ô+¨dÑ2ð	F
ð
 !&Ô 0°4Ñ 7ðF
ð ˜eÔ/Ô0°4Ñ7ðF
ð Ô(¨4Ñ/ðF
ð  %Ô0°4Ñ7ðF
ð Ô  4Ñ'ðF
ð ˜$‘;ðF
ð   $™;ðF
ð # T™kðF
ð ˜D‘[ðF
ð 
Ð0Ñ	0ðF
ð F
ð F
ñ „^ðF
ð F
ð F
ð F
ð F
r0   r­  c                   óÚ   ‡ — e Zd Zdefˆ f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dz  d
edz  de	ej                 e
z  fd„¦   «         Zˆ xZS )r)  rG   c                 ó6  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _        t          j	        |j
        |j        ¦  «        | _        |                      ¦   «          d S rX   )r$   r%   r  r"  r  r   rQ   r  rS   rL   r,   r  rK  rV   s     €r/   r%   z!T5ForTokenClassification.__init__L  sz   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå)¨&Ñ1Ô1ˆÔÝ”z &Ô";Ñ<Ô<ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr0   Nr  râ   rS  r˜  rÇ   r[  rû   r  c                 óº  — |�|n| j         j        }|                      ||||||¬¦  «        }	|	d         }
|                      |
¦  «        }
|                      |
¦  «        }d}|�Ft          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }|s||	dd…         f}|�|f|z   n|S t          |||	j	        |	j
        ¬¦  «        S )a<  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. T5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

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

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

            To know more on how to prepare `input_ids` for pretraining take a look a [T5 Training](./t5#training).
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.
        N)râ   rS  rÇ   r[  rû   r   r3   r2   )r�  rž  r=   rY  )rG   rû   r  rS   r  r   r²   r  r   r=   rY  )r+   r  râ   rS  r˜  rÇ   r[  rû   rÈ   r×   r=   rž  r�  r¢  r£  s                  r/   r?   z T5ForTokenClassification.forwardW  s  € ð4 &1Ð%<�k�kÀ$Ä+ÔBYˆà×"Ò"ØØ)Ø'Ø/Ø!5Ø#ð #ñ 
ô 
ˆð   œ
ˆØŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬OÑ<Ô<¸f¿kºkÈ"¹o¼oÑNÔNˆDàð 	FØ˜g a¨ dœmÐ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r0   )NNNNNNN)r@   rA   rB   r   r%   r   r'   rZ   rA  r^  r   r?   rC   rD   s   @r/   r)  r)  J  s  ø€ € € € € ð	˜xð 	ð 	ð 	ð 	ð 	ð 	ð ð *.Ø.2Ø-1Ø&*Ø)-Ø,0Ø#'ð6
ð 6
à”< $Ñ&ð6
ð œ tÑ+ð6
ð ”| dÑ*ð	6
ð
 ”˜tÑ#ð6
ð   $™;ð6
ð # T™kð6
ð ˜D‘[ð6
ð 
ˆuŒ|Ô	Ð4Ñ	4ð6
ð 6
ð 6
ñ „^ð6
ð 6
ð 6
ð 6
ð 6
r0   r)  c                   óˆ  ‡ — e Zd ZdgZdddœZdefˆ f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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
j                 ez  fd„¦   «         Zˆ xZS )r#  ri  rj  rk  rG   c                 ó  •— t          ¦   «                              |¦  «         |j        | _        t	          j        |j        |j        ¦  «        | _        t          j	        |¦  «        }d|_
        d|_        t          |¦  «        | _        t          j	        |¦  «        }d|_
        |j        |_        t          |¦  «        | _        |j        | _        t	          j        |j        |j        ¦  «        | _        |                      ¦   «          d S ro  )r$   r%   rM   r•  r   rƒ   rE  r%  rp  rq  rt   rá   r>  rr  rs  rH  rt  r  rL   r,   r  rK  ru  s       €r/   r%   zT5ForQuestionAnswering.__init__™  sÖ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØœˆŒå”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý˜~Ñ.Ô.ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý˜~Ñ.Ô.ˆŒà Ô+ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ry  rz  s    r/   r{  z+T5ForQuestionAnswering.get_input_embeddings¯  r|  r0   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rX   r~  rM  s     r/   rO  z+T5ForQuestionAnswering.set_input_embeddings²  r  r0   Nr  râ   r  r  r€  Ústart_positionsÚend_positionsrS  r�  rá   rÇ   r[  rû   r  c                 ó.  — |�|n| j         j        }|
�|
n| j         j        }
|�|�d}
|€(|	€&|€t          d¦  «        ‚|                      |¦  «        }|
�|
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         }|  	                    |||	d|||
|||¬	¦
  «
        }|d         }|  
                    |¦  «        }|                     dd
¬¦  «        \  }}|                     d
¦  «                             ¦   «         }|                     d
¦  «                             ¦   «         }d}|��|��t          |                     ¦   «         ¦  «        dk    r-|                     d
¦  «                             |j        ¦  «        }t          |                     ¦   «         ¦  «        dk    r-|                     d
¦  «                             |j        ¦  «        }|                     d¦  «        }|                     d|¦  «        }|                     d|¦  «        }t%          |¬¦  «        } |||¦  «        } |||¦  «        }||z   dz  }|s||f|dd…         z   |z   }|�|f|z   n|S t'          ||||j        |j        |j        |j        |j        |j        |j        ¬¦
  «
        S )az  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. T5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

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

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

            To know more on how to prepare `input_ids` for pretraining take a look a [T5 Training](./t5#training).
        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)

            T5 uses the `pad_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`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [T5
            Training](./t5#training).
        decoder_attention_mask (`torch.BoolTensor` 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.
        NFr±  rƒ  r   r   r2   r„  r…  r3   r«   rš  )
r�  Ústart_logitsÚ
end_logitsrÆ   r†  r‡  rZ  rˆ  rø   r‰  )rG   rû   rá   r0  r4  rr  rY   r   rŠ  rt  r  Úsplitr¼  rÁ   r\  r5   r�   r÷   r   r   rÆ   r=   rY  rZ  rX  )r+   r  râ   r  r  r€  rÉ  rÊ  rS  r�  rá   rÇ   r[  rû   rÈ   r=   r‹  r   rž  rÌ  rÍ  Ú
total_lossÚignored_indexr¢  Ú
start_lossÚend_lossr£  s                              r/   r?   zT5ForQuestionAnswering.forward·  s¡  € ð\ &1Ð%<�k�kÀ$Ä+ÔBYˆØ!*Ð!6�I�I¸D¼KÔ<Qˆ	ØÐ&¨=Ð+DØˆIð
 Ð$Ð)>Ð)FØÐ Ý ðUñô ð ð
 !%× 1Ò 1°)Ñ <Ô <Ðà!*Ð!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ØØ/Ø!5Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/×:Ò:Ñ<Ô<ˆØ×'Ò'¨Ñ+Ô+×6Ò6Ñ8Ô8ˆ
àˆ
ØÑ&¨=Ñ+Då�?×'Ò'Ñ)Ô)Ñ*Ô*¨QÒ.Ð.Ø"1×"9Ò"9¸"Ñ"=Ô"=×"@Ò"@ÀÔATÑ"UÔ"U�Ý�=×%Ò%Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø -× 5Ò 5°bÑ 9Ô 9× <Ò <¸ZÔ=NÑ OÔ O�à(×-Ò-¨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Ø" JÐ/°/À!À"À"Ô2EÑEÈÑWˆFØ/9Ð/E�Z�M FÑ*Ð*È6ÐQå2ØØ%Ø!Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð
ñ 
ô 
ð 	
r0   r¦  )r@   rA   rB   r�  rŽ  r   r%   r{  rO  r   r'   r�  r�  r‘  r^  rZ   rA  r   r?   rC   rD   s   @r/   r#  r#  ‘  sÜ  ø€ € € € € à*rÐ)sÐ&à'6Ø'6ðð Ðð
˜xð ð ð ð ð ð ð,ð ð ð:ð :ð :ð
 ð .2Ø37Ø59Ø:>Ø=AØ37Ø15Ø26Ø:>Ø!%Ø)-Ø,0Ø#'ðI
ð I
àÔ# dÑ*ðI
ð Ô)¨DÑ0ðI
ð !Ô+¨dÑ2ð	I
ð
 !&Ô 0°4Ñ 7ðI
ð ˜u U¤\Ô2Ô3°dÑ:ðI
ð Ô)¨DÑ0ðI
ð Ô'¨$Ñ.ðI
ð Ô(¨4Ñ/ðI
ð  %Ô0°4Ñ7ðI
ð ˜$‘;ðI
ð   $™;ðI
ð # T™kðI
ð ˜D‘[ðI
ð  
ˆuÔ Ô	!Ð$GÑ	Gð!I
ð I
ð I
ñ „^ðI
ð I
ð I
ð I
ð I
r0   r#  )r"  r!  r   r  r#  r­  r)  )Ar  rp  r�   r'   r   Útorch.nnr   r   r   rR  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   r   r   Úconfiguration_t5r   Ú
get_loggerr@   r}   ÚModuler!   rF   r_   rg   rq   rÜ   rç   rí   r  r  r>  r   r!  r"  r­  r)  r#  Ú__all__rT  r0   r/   ú<module>rà     sn  ðð Ð à €€€Ø €€€à €€€Ø Ð Ð Ð Ð Ð Ø 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ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ø &Ð &Ð &Ð &Ð &Ð &ð 
ˆÔ	˜HÑ	%Ô	%€ð+ð +ð +ð +ð +�"”)ñ +ô +ð +ð2ð ð ð ð �b”iñ ô ð ð,ð ð ð ð ˜2œ9ñ ô ð ð:ð ð ð ð �”	ñ ô ð ð$ð ð ð ð �"”)ñ ô ð ðDð ð ð ð ˜2œ9ñ ô ð ðBð ð ð ð ˜BœIñ ô ð ð>W
ð W
ð W
ð W
ð W
Ð(ñ W
ô W
ð W
ðtð ð ð ð ˜2œ9ñ ô ð ð$ ð_!ð _!ð _!ð _!ð _!˜ñ _!ô _!ñ „ð_!ðDo
ð o
ð o
ð o
ð o
Ðñ o
ô o
ð o
ðd ðT
ð T
ð T
ð T
ð T
Ðñ T
ô T
ñ „ðT
ðn €ððñ ô ð
x)ð x)ð x)ð x)ð x)Ð!2°Oñ x)ô x)ñô ð
x)ðv ðDð Dð Dð Dð DÐ&ñ Dô Dñ „ðDðN €ððñ ô ðR
ð R
ð R
ð R
ð R
Ð"3ñ R
ô R
ñô ðR
ðj ðC
ð C
ð C
ð C
ð C
Ð0ñ C
ô C
ñ „ðC
ðL ðo
ð o
ð o
ð o
ð o
Ð.ñ o
ô o
ñ „ðo
ðdð ð €€€r0   