§
    ‚ŠtjèŒ  ã                   óJ  — d 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mZmZ ddlmZmZmZmZmZ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 m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7  ej8        e9¦  «        Z: G d„ de&¦  «        Z; G d„ de5¦  «        Z< G d„ de%¦  «        Z= G d„ de0¦  «        Z> G d„ de4¦  «        Z? G d„ de2¦  «        Z@ G d„ de'¦  «        ZAe G d„ d e¦  «        ¦   «         ZB G d!„ d"e3¦  «        ZC G d#„ d$e,¦  «        ZD G d%„ d&e+¦  «        ZE G d'„ d(e1¦  «        ZF G d)„ d*e(¦  «        ZG G d+„ d,e*¦  «        ZH G d-„ d.e.¦  «        ZI G d/„ d0e)¦  «        ZJ G d1„ d2e/¦  «        ZK G d3„ d4e-¦  «        ZLg d5¢ZMdS )6zPyTorch ERNIE model.é    N)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚCacheÚDynamicCacheÚEncoderDecoderCache)Ú,BaseModelOutputWithPoolingAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚMaskedLMOutputÚMultipleChoiceModelOutputÚNextSentencePredictorOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputsé   )ÚBertCrossAttentionÚBertEmbeddingsÚBertEncoderÚBertForMaskedLMÚBertForMultipleChoiceÚBertForNextSentencePredictionÚBertForPreTrainingÚBertForPreTrainingOutputÚBertForQuestionAnsweringÚBertForSequenceClassificationÚBertForTokenClassificationÚ	BertLayerÚBertLMHeadModelÚBertLMPredictionHeadÚ	BertModelÚ
BertPoolerÚBertSelfAttentioné   )ÚErnieConfigc                   ó®   ‡ — e Zd ZdZˆ fd„Z	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
edej	        fd„Z
ˆ xZS )ÚErnieEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 ó¼   •— t          ¦   «                              |¦  «         |j        | _        |j        r&t          j        |j        |j        ¦  «        | _        d S d S )N)ÚsuperÚ__init__Úuse_task_idÚnnÚ	EmbeddingÚtask_type_vocab_sizeÚhidden_sizeÚtask_type_embeddings)ÚselfÚconfigÚ	__class__s     €úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/ernie/modular_ernie.pyr3   zErnieEmbeddings.__init__A   s_   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à!Ô-ˆÔØÔð 	fÝ(*¬°VÔ5PÐRXÔRdÑ(eÔ(eˆDÔ%Ð%Ð%ð	fð 	fó    Nr   Ú	input_idsÚtoken_type_idsÚtask_type_idsÚposition_idsÚinputs_embedsÚpast_key_values_lengthÚreturnc                 ó‚  — |�|                      ¦   «         }n|                      ¦   «         d d…         }|\  }}	|€| j        d d …||	|z   …f         }|€�t          | d¦  «        rT| j                             |j        d         d¦  «        }
t          j        |
d|¬¦  «        }
|
                     ||	¦  «        }n+t          j        |t          j	        | j        j
        ¬¦  «        }|€|                      |¦  «        }|                      |¦  «        }|                     |j
        ¦  «        }||z   }|                      |¦  «        }||z   }| j        rG|€+t          j        |t          j	        | j        j
        ¬¦  «        }|                      |¦  «        }||z  }|                      |¦  «        }|                      |¦  «        }|S )Néÿÿÿÿr@   r   r-   )ÚdimÚindex)ÚdtypeÚdevice)ÚsizerB   Úhasattrr@   ÚexpandÚshapeÚtorchÚgatherÚzerosÚlongrK   Úword_embeddingsÚtoken_type_embeddingsÚtoÚposition_embeddingsr4   r9   Ú	LayerNormÚdropout)r:   r?   r@   rA   rB   rC   rD   Úinput_shapeÚ
batch_sizeÚ
seq_lengthÚbuffered_token_type_idsrU   Ú
embeddingsrW   r9   s                  r=   ÚforwardzErnieEmbeddings.forwardH   sß  € ð Ð Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà!,Ñˆ
�JàÐØÔ,¨Q¨Q¨QÐ0FÈÐVlÑIlÐ0lÐ-lÔmˆLð
 Ð!Ý�tÐ-Ñ.Ô.ð mà*.Ô*=×*DÒ*DÀ\ÔEWÐXYÔEZÐ\^Ñ*_Ô*_Ð'Ý*/¬,Ð7NÐTUÐ]iÐ*jÑ*jÔ*jÐ'Ø!8×!?Ò!?À
ÈJÑ!WÔ!W��å!&¤¨[ÅÄ
ÐSWÔSdÔSkÐ!lÑ!lÔ!l�àÐ Ø ×0Ò0°Ñ;Ô;ˆMØ $× :Ò :¸>Ñ JÔ JÐð &×(Ò(Ð)>Ô)EÑFÔFˆØ"Ð%:Ñ:ˆ
à"×6Ò6°|ÑDÔDÐØÐ"5Ñ5ˆ
ð Ôð 	/ØÐ$Ý %¤¨K½u¼zÐRVÔRcÔRjÐ kÑ kÔ k�Ø#'×#<Ò#<¸]Ñ#KÔ#KÐ ØÐ.Ñ.ˆJà—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr>   )NNNNNr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r3   rP   Ú
LongTensorÚFloatTensorÚintÚTensorr_   Ú__classcell__©r<   s   @r=   r0   r0   >   sÞ   ø€ € € € € ØQÐQðfð fð fð fð fð .2Ø26Ø15Ø04Ø26Ø&'ð3ð 3àÔ# dÑ*ð3ð Ô(¨4Ñ/ð3ð Ô'¨$Ñ.ð	3ð
 Ô&¨Ñ-ð3ð Ô(¨4Ñ/ð3ð !$ð3ð 
Œð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3r>   r0   c                   ó   — e Zd ZdS )ÚErnieSelfAttentionN©r`   ra   rb   © r>   r=   rk   rk   ~   ó   € € € € € Ø€Dr>   rk   c                   ó   — e Zd ZdS )ÚErnieCrossAttentionNrl   rm   r>   r=   rp   rp   ‚   rn   r>   rp   c                   ó   — e Zd ZdS )Ú
ErnieLayerNrl   rm   r>   r=   rr   rr   †   rn   r>   rr   c                   ó   — e Zd ZdS )ÚErniePoolerNrl   rm   r>   r=   rt   rt   Š   rn   r>   rt   c                   ó   — e Zd ZdS )ÚErnieLMPredictionHeadNrl   rm   r>   r=   rv   rv   Ž   rn   r>   rv   c                   ó   — e Zd ZdS )ÚErnieEncoderNrl   rm   r>   r=   rx   rx   ’   rn   r>   rx   c                   óp   ‡ — e Zd ZeZdZdZdZdZdZ	dZ
eeedœZ ej        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚErniePreTrainedModelÚernieT)Úhidden_statesÚ
attentionsÚcross_attentionsc                 ó¨  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rt	          j        |j        ¦  «         dS t          |t          ¦  «        rjt	          j        |j	        t          j        |j	        j        d         ¦  «                             d¦  «        ¦  «         t	          j        |j        ¦  «         dS dS )zInitialize the weightsrG   )r-   rG   N)r2   Ú_init_weightsÚ
isinstancerv   ÚinitÚzeros_Úbiasr0   Úcopy_rB   rP   ÚarangerO   rN   r@   )r:   Úmoduler<   s     €r=   r€   z"ErniePreTrainedModel._init_weights¥   s·   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ3Ñ4Ô4ð 	/ÝŒK˜œÑ$Ô$Ð$Ð$Ð$Ý˜¥Ñ0Ô0ð 	/ÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÝŒK˜Ô-Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/r>   )r`   ra   rb   r.   Úconfig_classÚbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_attention_backendrr   rk   rp   Ú_can_record_outputsrP   Úno_gradr€   rh   ri   s   @r=   rz   rz   –   sŠ   ø€ € € € € à€LØÐØ&*Ð#ØÐØ€NØÐØ"&Ðà#Ø(Ø/ðð Ðð €U„]�_„_ð/ð /ð /ð /ñ „_ð/ð /ð /ð /ð /r>   rz   c                   óX  ‡ — e Zd ZdgZdˆ fd„	Zeee	 	 	 	 	 	 	 	 	 	 ddej	        dz  dej	        dz  dej	        dz  dej	        dz  d	ej	        dz  d
ej	        dz  dej	        dz  dej	        dz  de
dz  dedz  dee         deej	                 ez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )Ú
ErnieModelrr   Tc                 ó  •— t          ¦   «                              | |¦  «         || _        d| _        t	          |¦  «        | _        t          |¦  «        | _        |rt          |¦  «        nd | _	        |  
                    ¦   «          d S )NF)r2   r3   r;   Úgradient_checkpointingr0   r^   rx   Úencoderrt   ÚpoolerÚ	post_init)r:   r;   Úadd_pooling_layerr<   s      €r=   r3   zErnieModel.__init__³   s{   ø€ Ý‰Œ×Ò˜˜vÑ&Ô&Ð&ØˆŒØ&+ˆÔ#å)¨&Ñ1Ô1ˆŒÝ# FÑ+Ô+ˆŒà->ÐH•k &Ñ)Ô)Ð)ÀDˆŒð 	�ŠÑÔÐÐÐr>   Nr?   Úattention_maskr@   rA   rB   rC   Úencoder_hidden_statesÚencoder_attention_maskÚpast_key_valuesÚ	use_cacheÚkwargsrE   c           
      ón  — |du |duz  rt          d¦  «        ‚| j        j        r|
�|
n| j        j        }
nd}
|
r[|	€Y|€| j        j        r6t          t          | j        ¬¦  «        t          | j        ¬¦  «        ¦  «        nt          | j        ¬¦  «        }	|	�|	                     ¦   «         nd}|                      ||||||¬¦  «        }|  	                    |||||	¬¦  «        \  }} | j
        |f||||	|
|dœ|¤Ž}|d         }| j        �|                      |¦  «        nd}t          |||j        ¬	¦  «        S )
áÚ  
        task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        Nz:You must specify exactly one of input_ids or inputs_embedsF)r;   r   )r?   rB   r@   rA   rC   rD   )r™   r›   Úembedding_outputrš   rœ   )r™   rš   r›   rœ   r�   rB   )Úlast_hidden_stateÚpooler_outputrœ   )Ú
ValueErrorr;   Ú
is_decoderr�   Úis_encoder_decoderr
   r	   Úget_seq_lengthr^   Ú_create_attention_masksr•   r–   r   rœ   )r:   r?   r™   r@   rA   rB   rC   rš   r›   rœ   r�   rž   rD   r¡   Úencoder_outputsÚsequence_outputÚpooled_outputs                    r=   r_   zErnieModel.forwardÀ   s½  € ð0 ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàŒ;Ô!ð 	Ø%.Ð%:˜	˜	ÀÄÔ@UˆIˆIàˆIàð 	˜Ð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ÐØŸ?š?ØØ%Ø)à'Ø'Ø#9ð +ñ 
ô 
Ðð 26×1MÒ1MØ)Ø#9Ø-Ø"7Ø+ð 2Nñ 2
ô 2
Ñ.ˆÐ.ð '˜$œ,Øð	
à)Ø"7Ø#9Ø+ØØ%ð	
ð 	
ð ð	
ð 	
ˆð *¨!Ô,ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆå;Ø-Ø'Ø+Ô;ð
ñ 
ô 
ð 	
r>   )T)
NNNNNNNNNN)r`   ra   rb   Ú_no_split_modulesr3   r   r   r   rP   rg   r   Úboolr   r   Útupler   r_   rh   ri   s   @r=   r’   r’   °   s}  ø€ € € € € Ø%˜Ððð ð ð ð ð ð  ØØð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø59Ø6:Ø(,Ø!%ðH
ð H
à”< $Ñ&ðH
ð œ tÑ+ðH
ð œ tÑ+ð	H
ð
 ”| dÑ*ðH
ð ”l TÑ)ðH
ð ”| dÑ*ðH
ð  %œ|¨dÑ2ðH
ð !&¤¨tÑ 3ðH
ð  ™ðH
ð ˜$‘;ðH
ð Ð+Ô,ðH
ð 
ˆuŒ|Ô	ÐKÑ	KðH
ð H
ð H
ñ „^ñ „_ñ  ÔðH
ð H
ð H
ð H
ð H
r>   r’   c                   ó   — e Zd ZdS )ÚErnieForPreTrainingOutputNrl   rm   r>   r=   r°   r°     rn   r>   r°   c                   ó"  — e Zd ZdddœZee	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
ej        dz  dej        dz  dej        dz  dee	         de
ej                 ez  fd„¦   «         ¦   «         ZdS )ÚErnieForPreTrainingúcls.predictions.biasú'ernie.embeddings.word_embeddings.weight©zcls.predictions.decoder.biaszcls.predictions.decoder.weightNr?   r™   r@   rA   rB   rC   ÚlabelsÚnext_sentence_labelrž   rE   c	           
      óÆ  —  | j         |f|||||ddœ|	¤Ž}
|
dd…         \  }}|                      ||¦  «        \  }}d}|�…|�ƒt          ¦   «         } ||                     d| j        j        ¦  «        |                     d¦  «        ¦  «        } ||                     dd¦  «        |                     d¦  «        ¦  «        }||z   }t          ||||
j        |
j        ¬¦  «        S )a:  
        task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should be in `[-100, 0, ...,
            config.vocab_size]` (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]`
        next_sentence_label (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the next sequence prediction (classification) loss. Input should be a sequence
            pair (see `input_ids` docstring) Indices should be in `[0, 1]`:

            - 0 indicates sequence B is a continuation of sequence A,
            - 1 indicates sequence B is a random sequence.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, ErnieForPreTraining
        >>> import torch

        >>> tokenizer = AutoTokenizer.from_pretrained("nghuyong/ernie-1.0-base-zh")
        >>> model = ErnieForPreTraining.from_pretrained("nghuyong/ernie-1.0-base-zh")

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

        >>> prediction_logits = outputs.prediction_logits
        >>> seq_relationship_logits = outputs.seq_relationship_logits
        ```
        T©r™   r@   rA   rB   rC   Úreturn_dictNr   rG   )ÚlossÚprediction_logitsÚseq_relationship_logitsr|   r}   )	r{   Úclsr   Úviewr;   Ú
vocab_sizer°   r|   r}   )r:   r?   r™   r@   rA   rB   rC   r¶   r·   rž   Úoutputsrª   r«   Úprediction_scoresÚseq_relationship_scoreÚ
total_lossÚloss_fctÚmasked_lm_lossÚnext_sentence_losss                      r=   r_   zErnieForPreTraining.forward  s,  € ð^ �$”*Øð	
à)Ø)Ø'Ø%Ø'Øð	
ð 	
ð ð	
ð 	
ˆð *1°°!°¬Ñ&ˆ˜Ø48·H²H¸_ÈmÑ4\Ô4\Ñ1ÐÐ1àˆ
ØÐÐ"5Ð"AÝ'Ñ)Ô)ˆHØ%˜XÐ&7×&<Ò&<¸RÀÄÔAWÑ&XÔ&XÐZ`×ZeÒZeÐfhÑZiÔZiÑjÔjˆNØ!) Ð*@×*EÒ*EÀbÈ!Ñ*LÔ*LÐNa×NfÒNfÐgiÑNjÔNjÑ!kÔ!kÐØ'Ð*<Ñ<ˆJå(ØØ/Ø$:Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r>   ©NNNNNNNN)r`   ra   rb   Ú_tied_weights_keysr   r   rP   rg   r   r   r®   r°   r_   rm   r>   r=   r²   r²     s/  € € € € € à(>Ø*Sðð Ðð
 Øð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø&*Ø37ðH
ð H
à”< $Ñ&ðH
ð œ tÑ+ðH
ð œ tÑ+ð	H
ð
 ”| dÑ*ðH
ð ”l TÑ)ðH
ð ”| dÑ*ðH
ð ”˜tÑ#ðH
ð #œ\¨DÑ0ðH
ð Ð+Ô,ðH
ð 
ˆuŒ|Ô	Ð8Ñ	8ðH
ð H
ð H
ñ „^ñ ÔðH
ð H
ð H
r>   r²   c                    ór  — e Zd Zee	 	 	 	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  de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	ej        z  de
e         deej                 ez  fd„¦   «         ¦   «         ZdS )ÚErnieForCausalLMNr   r?   r™   r@   rA   rB   rC   rš   r›   r¶   rœ   r�   Úlogits_to_keeprž   rE   c                 ón  — |	�d} | j         |f||||||||
|ddœ
|¤Ž}|j        }t          |t          ¦  «        rt	          | d¦  «        n|}|                      |dd…|dd…f         ¦  «        }d}|	� | j        d||	| j        j        dœ|¤Ž}t          |||j
        |j        |j        |j        ¬¦  «        S )a�  
        task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the left-to-right language modeling loss (next word prediction). Indices should be in
            `[-100, 0, ..., config.vocab_size]` (see `input_ids` docstring) Tokens with indices set to `-100` are
            ignored (masked), the loss is only computed for the tokens with labels n `[0, ..., config.vocab_size]`
        NFT)
r™   r@   rA   rB   rC   rš   r›   rœ   r�   rº   )Úlogitsr¶   rÀ   )r»   rÎ   rœ   r|   r}   r~   rm   )r{   r¢   r�   rf   Úslicer¾   Úloss_functionr;   rÀ   r   rœ   r|   r}   r~   )r:   r?   r™   r@   rA   rB   rC   rš   r›   r¶   rœ   r�   rÌ   rž   rÁ   r|   Úslice_indicesrÎ   r»   s                      r=   r_   zErnieForCausalLM.forwardf  s  € ð: ÐØˆIà@JÀÄ
ØðA
à)Ø)Ø'Ø%Ø'Ø"7Ø#9Ø+ØØðA
ð A
ð ðA
ð A
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜-¨¨¨¨=¸!¸!¸!Ð(;Ô<Ñ=Ô=ˆàˆØÐØ%�4Ô%Ðp¨V¸FÈtÌ{ÔOeÐpÐpÐioÐpÐpˆDå0ØØØ#Ô3Ø!Ô/ØÔ)Ø$Ô5ð
ñ 
ô 
ð 	
r>   )NNNNNNNNNNNr   )r`   ra   rb   r   r   rP   rg   Úlistr­   rf   r   r   r®   r   r_   rm   r>   r=   rË   rË   e  s[  € € € € € ØØð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø59Ø6:Ø&*Ø59Ø!%Ø-.ð=
ð =
à”< $Ñ&ð=
ð œ tÑ+ð=
ð œ tÑ+ð	=
ð
 ”| dÑ*ð=
ð ”l TÑ)ð=
ð ”| dÑ*ð=
ð  %œ|¨dÑ2ð=
ð !&¤¨tÑ 3ð=
ð ”˜tÑ#ð=
ð ˜eœlÔ+¨dÑ2ð=
ð ˜$‘;ð=
ð ˜eœlÑ*ð=
ð Ð+Ô,ð=
ð 
ˆuŒ|Ô	Ð@Ñ	@ð=
ð =
ð =
ñ „^ñ Ôð=
ð =
ð =
r>   rË   c                   ó8  — e Zd ZdddœZee	 	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
ej        dz  dej        dz  dej        dz  dej        dz  dee	         de
ej                 ez  fd„¦   «         ¦   «         ZdS )ÚErnieForMaskedLMr³   r´   rµ   Nr?   r™   r@   rA   rB   rC   rš   r›   r¶   rž   rE   c
                 óB  —  | j         |f|||||||ddœ|
¤Ž}|d         }|                      |¦  «        }d}|	�Kt          ¦   «         } ||                     d| j        j        ¦  «        |	                     d¦  «        ¦  «        }t          |||j        |j        ¬¦  «        S )as  
        task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should be in `[-100, 0, ...,
            config.vocab_size]` (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]`
        T)r™   r@   rA   rB   rC   rš   r›   rº   r   NrG   ©r»   rÎ   r|   r}   )	r{   r¾   r   r¿   r;   rÀ   r   r|   r}   )r:   r?   r™   r@   rA   rB   rC   rš   r›   r¶   rž   rÁ   rª   rÂ   rÆ   rÅ   s                   r=   r_   zErnieForMaskedLM.forward®  sÙ   € ð4 �$”*Øð
à)Ø)Ø'Ø%Ø'Ø"7Ø#9Øð
ð 
ð ð
ð 
ˆð " !œ*ˆØ ŸHšH _Ñ5Ô5ÐàˆØÐÝ'Ñ)Ô)ˆHØ%˜XÐ&7×&<Ò&<¸RÀÄÔAWÑ&XÔ&XÐZ`×ZeÒZeÐfhÑZiÔZiÑjÔjˆNåØØ$Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r>   )	NNNNNNNNN)r`   ra   rb   rÉ   r   r   rP   rg   r   r   r®   r   r_   rm   r>   r=   rÔ   rÔ   ¨  s1  € € € € € à(>Ø*Sðð Ðð
 Øð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø59Ø6:Ø&*ð2
ð 2
à”< $Ñ&ð2
ð œ tÑ+ð2
ð œ tÑ+ð	2
ð
 ”| dÑ*ð2
ð ”l TÑ)ð2
ð ”| dÑ*ð2
ð  %œ|¨dÑ2ð2
ð !&¤¨tÑ 3ð2
ð ”˜tÑ#ð2
ð Ð+Ô,ð2
ð 
ˆuŒ|Ô	˜~Ñ	-ð2
ð 2
ð 2
ñ „^ñ Ôð2
ð 2
ð 2
r>   rÔ   c                   ó  — e Zd Zee	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee         d
e	ej                 e
z  fd„¦   «         ¦   «         ZdS )ÚErnieForNextSentencePredictionNr?   r™   r@   rA   rB   rC   r¶   rž   rE   c           
      ó*  —  | j         |f|||||ddœ|¤Ž}	|	d         }
|                      |
¦  «        }d}|�At          ¦   «         } ||                     dd¦  «        |                     d¦  «        ¦  «        }t	          |||	j        |	j        ¬¦  «        S )a‡  
        task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the next sequence prediction (classification) loss. Input should be a sequence pair
            (see `input_ids` docstring). Indices should be in `[0, 1]`:

            - 0 indicates sequence B is a continuation of sequence A,
            - 1 indicates sequence B is a random sequence.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, ErnieForNextSentencePrediction
        >>> import torch

        >>> tokenizer = AutoTokenizer.from_pretrained("nghuyong/ernie-1.0-base-zh")
        >>> model = ErnieForNextSentencePrediction.from_pretrained("nghuyong/ernie-1.0-base-zh")

        >>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
        >>> next_sentence = "The sky is blue due to the shorter wavelength of blue light."
        >>> encoding = tokenizer(prompt, next_sentence, return_tensors="pt")

        >>> outputs = model(**encoding, labels=torch.LongTensor([1]))
        >>> logits = outputs.logits
        >>> assert logits[0, 0] < logits[0, 1]  # next sentence was random
        ```
        Tr¹   r-   NrG   r   rÖ   )r{   r¾   r   r¿   r   r|   r}   )r:   r?   r™   r@   rA   rB   rC   r¶   rž   rÁ   r«   Úseq_relationship_scoresrÇ   rÅ   s                 r=   r_   z&ErnieForNextSentencePrediction.forwardæ  sÌ   € ðZ �$”*Øð	
à)Ø)Ø'Ø%Ø'Øð	
ð 	
ð ð	
ð 	
ˆð   œ
ˆà"&§(¢(¨=Ñ"9Ô"9Ðà!ÐØÐÝ'Ñ)Ô)ˆHØ!) Ð*A×*FÒ*FÀrÈ1Ñ*MÔ*MÈvÏ{Ê{Ð[]ÉÌÑ!_Ô!_Ðå*Ø#Ø*Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r>   ©NNNNNNN)r`   ra   rb   r   r   rP   rg   r   r   r®   r   r_   rm   r>   r=   rØ   rØ   å  s  € € € € € ØØð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø&*ðD
ð D
à”< $Ñ&ðD
ð œ tÑ+ðD
ð œ tÑ+ð	D
ð
 ”| dÑ*ðD
ð ”l TÑ)ðD
ð ”| dÑ*ðD
ð ”˜tÑ#ðD
ð Ð+Ô,ðD
ð 
ˆuŒ|Ô	Ð:Ñ	:ðD
ð D
ð D
ñ „^ñ ÔðD
ð D
ð D
r>   rØ   c                   ó  — e Zd Zee	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee         d
e	ej                 e
z  fd„¦   «         ¦   «         ZdS )ÚErnieForSequenceClassificationNr?   r™   r@   rA   rB   rC   r¶   rž   rE   c           
      óˆ  —  | j         |f|||||ddœ|¤Ž}	|	d         }
|                      |
¦  «        }
|                      |
¦  «        }d}|��Z| j        j        €f| j        dk    rd| j        _        nN| j        dk    r7|j        t          j        k    s|j        t          j	        k    rd| j        _        nd| j        _        | j        j        dk    rWt          ¦   «         }| j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }nŽ |||¦  «        }n�| j        j        dk    rGt          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }n*| j        j        dk    rt          ¦   «         } |||¦  «        }t          |||	j        |	j        ¬	¦  «        S )
a^  
        task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        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 regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        Tr¹   r-   NÚ
regressionÚsingle_label_classificationÚmulti_label_classificationrG   rÖ   )r{   rY   Ú
classifierr;   Úproblem_typeÚ
num_labelsrJ   rP   rS   rf   r   Úsqueezer   r¿   r   r   r|   r}   )r:   r?   r™   r@   rA   rB   rC   r¶   rž   rÁ   r«   rÎ   r»   rÅ   s                 r=   r_   z&ErnieForSequenceClassification.forward0  sÞ  € ð0 �$”*Øð	
à)Ø)Ø'Ø%Ø'Øð	
ð 	
ð ð	
ð 	
ˆð   œ
ˆàŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆàˆØÑØŒ{Ô'Ð/Ø”? aÒ'Ð'Ø/;�D”KÔ,Ð,Ø”_ qÒ(Ð(¨f¬l½e¼jÒ.HÐ.HÈFÌLÕ\aÔ\eÒLeÐLeØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”? aÒ'Ð'Ø#˜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°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�å'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r>   rÛ   )r`   ra   rb   r   r   rP   rg   r   r   r®   r   r_   rm   r>   r=   rÝ   rÝ   /  s  € € € € € ØØð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø&*ðB
ð B
à”< $Ñ&ðB
ð œ tÑ+ðB
ð œ tÑ+ð	B
ð
 ”| dÑ*ðB
ð ”l TÑ)ðB
ð ”| dÑ*ðB
ð ”˜tÑ#ðB
ð Ð+Ô,ðB
ð 
ˆuŒ|Ô	Ð7Ñ	7ðB
ð B
ð B
ñ „^ñ ÔðB
ð B
ð B
r>   rÝ   c                   ó  — e Zd Zee	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee         d
e	ej                 e
z  fd„¦   «         ¦   «         ZdS )ÚErnieForMultipleChoiceNr?   r™   r@   rA   rB   rC   r¶   rž   rE   c           
      óT  — |�|j         d         n|j         d         }	|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�=|                     d|                     d¦  «        |                     d¦  «        ¦  «        nd} | j        |f|||||ddœ|¤Ž}
|
d         }|                      |¦  «        }|                      |¦  «        }|                     d|	¦  «        }d}|�t          ¦   «         } |||¦  «        }t          |||
j        |
j	        ¬¦  «        S )a9	  
        input_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`):
            Indices of input sequence tokens in the vocabulary.

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

            [What are input IDs?](../glossary#input-ids)
        token_type_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
            Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
            1]`:

            - 0 corresponds to a *sentence A* token,
            - 1 corresponds to a *sentence B* token.

            [What are token type IDs?](../glossary#token-type-ids)
        task_type_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        position_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *optional*):
            Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
            config.max_position_embeddings - 1]`.

            [What are position IDs?](../glossary#position-ids)
        inputs_embeds (`torch.FloatTensor` of shape `(batch_size, num_choices, 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.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the multiple choice classification loss. Indices should be in `[0, ...,
            num_choices-1]` where `num_choices` is the size of the second dimension of the input tensors. (See
            `input_ids` above)
        Nr-   rG   éþÿÿÿTr¹   rÖ   )
rO   r¿   rL   r{   rY   râ   r   r   r|   r}   )r:   r?   r™   r@   rA   rB   rC   r¶   rž   Únum_choicesrÁ   r«   rÎ   Úreshaped_logitsr»   rÅ   s                   r=   r_   zErnieForMultipleChoice.forwardx  sì  € ð` -6Ð,A�i”o aÔ(Ð(À}ÔGZÐ[\ÔG]ˆà>GÐ>S�I—N’N 2 y§~¢~°bÑ'9Ô'9Ñ:Ô:Ð:ÐY]ˆ	ØM[ÐMg˜×,Ò,¨R°×1DÒ1DÀRÑ1HÔ1HÑIÔIÐIÐmqˆØM[ÐMg˜×,Ò,¨R°×1DÒ1DÀRÑ1HÔ1HÑIÔIÐIÐmqˆØGSÐG_�|×(Ò(¨¨\×->Ò->¸rÑ-BÔ-BÑCÔCÐCÐeiˆð Ð(ð ×Ò˜r =×#5Ò#5°bÑ#9Ô#9¸=×;MÒ;MÈbÑ;QÔ;QÑRÔRÐRàð 	ð �$”*Øð	
à)Ø)Ø'Ø%Ø'Øð	
ð 	
ð ð	
ð 	
ˆð   œ
ˆàŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆØ Ÿ+š+ b¨+Ñ6Ô6ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜O¨VÑ4Ô4ˆDå(ØØ"Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r>   rÛ   )r`   ra   rb   r   r   rP   rg   r   r   r®   r   r_   rm   r>   r=   rç   rç   w  s  € € € € € ØØð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø&*ðU
ð U
à”< $Ñ&ðU
ð œ tÑ+ðU
ð œ tÑ+ð	U
ð
 ”| dÑ*ðU
ð ”l TÑ)ðU
ð ”| dÑ*ðU
ð ”˜tÑ#ðU
ð Ð+Ô,ðU
ð 
ˆuŒ|Ô	Ð8Ñ	8ðU
ð U
ð U
ñ „^ñ ÔðU
ð U
ð U
r>   rç   c                   ó  — e Zd Zee	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee         d
e	ej                 e
z  fd„¦   «         ¦   «         ZdS )ÚErnieForTokenClassificationNr?   r™   r@   rA   rB   rC   r¶   rž   rE   c           
      ó^  —  | j         |f|||||ddœ|¤Ž}	|	d         }
|                      |
¦  «        }
|                      |
¦  «        }d}|�Ft          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }t          |||	j        |	j        ¬¦  «        S )a¬  
        task_type_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Task type embedding is a special embedding to represent the characteristic of different tasks, such as
            word-aware pre-training task, structure-aware pre-training task and semantic-aware pre-training task. We
            assign a `task_type_id` to each task and the `task_type_id` is in the range `[0,
            config.task_type_vocab_size-1]
        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]`.
        Tr¹   r   NrG   rÖ   )	r{   rY   râ   r   r¿   rä   r   r|   r}   )r:   r?   r™   r@   rA   rB   rC   r¶   rž   rÁ   rª   rÎ   r»   rÅ   s                 r=   r_   z#ErnieForTokenClassification.forwardÓ  s×   € ð, �$”*Øð	
à)Ø)Ø'Ø%Ø'Øð	
ð 	
ð ð	
ð 	
ˆð " !œ*ˆàŸ,š, Ñ7Ô7ˆØ—’ Ñ1Ô1ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬OÑ<Ô<¸f¿kºkÈ"¹o¼oÑNÔNˆDå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r>   rÛ   )r`   ra   rb   r   r   rP   rg   r   r   r®   r   r_   rm   r>   r=   rí   rí   Ò  sõ   € € € € € ØØð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø&*ð.
ð .
à”< $Ñ&ð.
ð œ tÑ+ð.
ð œ tÑ+ð	.
ð
 ”| dÑ*ð.
ð ”l TÑ)ð.
ð ”| dÑ*ð.
ð ”˜tÑ#ð.
ð Ð+Ô,ð.
ð 
ˆuŒ|Ô	Ð4Ñ	4ð.
ð .
ð .
ñ „^ñ Ôð.
ð .
ð .
r>   rí   c                   ó  — e Zd Zee	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
ee         de	ej                 e
z  fd„¦   «         ¦   «         ZdS )ÚErnieForQuestionAnsweringNr?   r™   r@   rA   rB   rC   Ústart_positionsÚend_positionsrž   rE   c	           
      óH  —  | j         |f|||||ddœ|	¤Ž}
|
d         }|                      |¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }d}|�ç|�åt          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }t          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }|                     d¦  «        }|                     d|¦  «        }|                     d|¦  «        }t          |¬¦  «        } |||¦  «        } |||¦  «        }||z   d	z  }t          ||||
j
        |
j        ¬
¦  «        S )r    Tr¹   r   r-   rG   )rH   N)Úignore_indexr   )r»   Ústart_logitsÚ
end_logitsr|   r}   )r{   Ú
qa_outputsÚsplitrå   Ú
contiguousÚlenrL   Úclampr   r   r|   r}   )r:   r?   r™   r@   rA   rB   rC   rñ   rò   rž   rÁ   rª   rÎ   rõ   rö   rÄ   Úignored_indexrÅ   Ú
start_lossÚend_losss                       r=   r_   z!ErnieForQuestionAnswering.forward  sÒ  € ð* �$”*Øð	
à)Ø)Ø'Ø%Ø'Øð	
ð 	
ð ð	
ð 	
ˆð " !œ*ˆà—’ Ñ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>   rÈ   )r`   ra   rb   r   r   rP   rg   r   r   r®   r   r_   rm   r>   r=   rð   rð     s	  € € € € € ØØð *.Ø.2Ø.2Ø-1Ø,0Ø-1Ø/3Ø-1ð<
ð <
à”< $Ñ&ð<
ð œ tÑ+ð<
ð œ tÑ+ð	<
ð
 ”| dÑ*ð<
ð ”l TÑ)ð<
ð ”| dÑ*ð<
ð œ¨Ñ,ð<
ð ”| dÑ*ð<
ð Ð+Ô,ð<
ð 
ˆuŒ|Ô	Ð;Ñ	;ð<
ð <
ð <
ñ „^ñ Ôð<
ð <
ð <
r>   rð   )
rË   rÔ   rç   rØ   r²   rð   rÝ   rí   r’   rz   )Nrc   rP   Útorch.nnr5   r   r   r   Ú r   r‚   Úcache_utilsr   r	   r
   Úmodeling_outputsr   r   r   r   r   r   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úbert.modeling_bertr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Úconfiguration_ernier.   Ú
get_loggerr`   Úloggerr0   rk   rp   rr   rt   rv   rx   rz   r’   r°   r²   rË   rÔ   rØ   rÝ   rç   rí   rð   Ú__all__rm   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ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð .Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& -Ð ,Ð ,Ð ,Ð ,Ð ,ð 
ˆÔ	˜HÑ	%Ô	%€ð=ð =ð =ð =ð =�nñ =ô =ð =ð@	ð 	ð 	ð 	ð 	Ð*ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð,ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�*ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð0ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�;ñ 	ô 	ð 	ð ð/ð /ð /ð /ð /˜?ñ /ô /ñ „ð/ð2[
ð [
ð [
ð [
ð [
�ñ [
ô [
ð [
ð|	ð 	ð 	ð 	ð 	Ð 8ñ 	ô 	ð 	ðP
ð P
ð P
ð P
ð P
Ð,ñ P
ô P
ð P
ðf@
ð @
ð @
ð @
ð @
�ñ @
ô @
ð @
ðF:
ð :
ð :
ð :
ð :
�ñ :
ô :
ð :
ðzG
ð G
ð G
ð G
ð G
Ð%Bñ G
ô G
ð G
ðTE
ð E
ð E
ð E
ð E
Ð%Bñ E
ô E
ð E
ðPX
ð X
ð X
ð X
ð X
Ð2ñ X
ô X
ð X
ðv1
ð 1
ð 1
ð 1
ð 1
Ð"<ñ 1
ô 1
ð 1
ðh?
ð ?
ð ?
ð ?
ð ?
Ð 8ñ ?
ô ?
ð ?
ðDð ð €€€r>   