Ë
    ÛÓ^jDÙ  ã                   ó\  — d Z ddlZddlZddlm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 ddlmZmZm Z m!Z!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/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7  e/jp                  e9«      Z:dejv                  de<de<fd„Z= G d„ dej|                  «      Z? G d„ dej|                  «      Z@	 	 dJdej‚                  dejv                  d ejv                  d!ejv                  d"ejv                  dz  d#eBdz  d$eBd%e)e+   fd&„ZC G d'„ d(ej‚                  «      ZD G d)„ d*e«      ZE G d+„ d,e«      ZF G d-„ d.ej‚                  «      ZGe, G d/„ d0e'«      «       ZH G d1„ d2eH«      ZI G d3„ d4eH«      ZJ G d5„ d6eH«      ZK G d7„ d8eH«      ZLe, G d9„ d:eH«      «       ZM e,d;¬<«       G d=„ d>eHe«      «       ZN e,d?¬<«       G d@„ dAeH«      «       ZOe, G dB„ dCeH«      «       ZP G dD„ dEeH«      ZQ e,dF¬<«       G dG„ dHeHe«      «       ZRg dI¢ZSy)KzPyTorch BART model.é    N)ÚCallable)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutputÚ#Seq2SeqQuestionAnsweringModelOutputÚSeq2SeqSequenceClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚis_torchdynamo_compilingÚloggingÚtorch_compilable_check)Úmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputsé   )Ú
BartConfigÚ	input_idsÚpad_token_idÚdecoder_start_token_idc                 óÖ   — | j                  | j                  «      }| dd…dd…f   j                  «       |dd…dd…f<   ||dd…df<   |€t        d«      ‚|j	                  |dk(  |«       |S )z1
    Shift input ids one token to the right.
    Néÿÿÿÿr&   r   z1self.model.config.pad_token_id has to be defined.iœÿÿÿ)Ú	new_zerosÚshapeÚcloneÚ
ValueErrorÚmasked_fill_)r(   r)   r*   Úshifted_input_idss       úq/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/bart/modeling_bart.pyÚshift_tokens_rightr4   :   s}   € ð "×+Ñ+¨I¯O©OÓ<ÐØ(ª¨C¨R¨C¨Ñ0×6Ñ6Ó8Ð’a˜™�eÑØ4Ð’a˜�dÑàÐÜÐLÓMÐMà×"Ñ"Ð#4¸Ñ#<¸lÔKàÐó    c                   óv   ‡ — e Zd ZdZdedefˆ fd„Z	 d
dej                  dedej                  dz  fˆ fd	„Zˆ xZ	S )ÚBartLearnedPositionalEmbeddingzN
    This module learns positional embeddings up to a fixed maximum size.
    Únum_embeddingsÚembedding_dimc                 óN   •— d| _         t        ‰| �	  || j                   z   |«       y ©Né   )ÚoffsetÚsuperÚ__init__)Úselfr8   r9   Ú	__class__s      €r3   r?   z'BartLearnedPositionalEmbedding.__init__O   s$   ø€ ð ˆŒÜ‰Ñ˜¨$¯+©+Ñ5°}ÕEr5   Nr(   Úpast_key_values_lengthÚposition_idsc                 ó$  •— |€a|j                   dd \  }}t        j                  |||z   t        j                  | j                  j
                  ¬«      j                  |d«      }n|j                  d«      }t        ‰| �%  || j                  z   «      S )z3`input_ids' shape is expected to be [bsz x seqlen].Nr<   )ÚdtypeÚdevicer,   r   )r.   ÚtorchÚarangeÚlongÚweightrF   ÚexpandÚ	unsqueezer>   Úforwardr=   )r@   r(   rB   rC   ÚbszÚseq_lenrA   s         €r3   rM   z&BartLearnedPositionalEmbedding.forwardU   sˆ   ø€ ð
 ÐØ$Ÿ?™?¨2¨AÐ.‰LˆC�Ü Ÿ<™<Ø&Ð(>ÀÑ(HÔPU×PZÑPZÐcg×cnÑcn×cuÑcuôç‰f�S˜"‹oñ ð (×1Ñ1°!Ó4ˆLä‰w‰˜|¨d¯k©kÑ9Ó:Ð:r5   )r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr?   rG   ÚTensorrM   Ú__classcell__©rA   s   @r3   r7   r7   J   sW   ø„ ñðF sð F¸3õ Fð mqñ;ØŸ™ð;Ø?Bð;ØV[×VbÑVbÐeiÑVi÷;ñ ;r5   r7   c            
       ó`   ‡ — e Zd ZdZd
dededededz  fˆ fd„Zdej                  fˆ fd	„Z	ˆ xZ
S )ÚBartScaledWordEmbeddingz\
    This module overrides nn.Embeddings' forward by multiplying with embeddings scale.
    r8   r9   Úpadding_idxÚembed_scaleNc                 ó6   •— t         ‰| �  |||«       || _        y ©N)r>   r?   r[   )r@   r8   r9   rZ   r[   rA   s        €r3   r?   z BartScaledWordEmbedding.__init__j   s   ø€ Ü‰Ñ˜¨¸ÔDØ&ˆÕr5   r(   c                 ó<   •— t         ‰| �  |«      | j                  z  S r]   )r>   rM   r[   )r@   r(   rA   s     €r3   rM   zBartScaledWordEmbedding.forwardn   s   ø€ Ü‰w‰˜yÓ)¨D×,<Ñ,<Ñ<Ð<r5   )ç      ð?©rP   rQ   rR   rS   rT   Úfloatr?   rG   rU   rM   rV   rW   s   @r3   rY   rY   e   sE   ø„ ññ' sð '¸3ð 'ÈSð 'Ð_dÐgkÑ_kõ 'ð= §¡÷ =ñ =r5   rY   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutÚkwargsc                 óœ  — |€|j                  d«      dz  }t        j                  ||j                  dd«      «      |z  }|�||z   }t        j
                  j                  |d¬«      }t        j
                  j                  ||| j                  ¬«      }t        j                  ||«      }	|	j                  dd«      j                  «       }	|	|fS )Nr,   ç      à¿r<   r   ©Údim©ÚpÚtrainingr&   )
ÚsizerG   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrh   rp   Ú
contiguous)
rb   rc   rd   re   rf   rg   rh   ri   Úattn_weightsÚattn_outputs
             r3   Úeager_attention_forwardry   s   s»   € ð €Ø—*‘*˜R“. DÑ(ˆô —<‘<  s§}¡}°Q¸Ó':Ó;¸gÑE€LàÐ!Ø# nÑ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨¸È6Ï?É?Ð(Ó[€Lä—,‘,˜|¨UÓ3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€Kà˜Ð$Ð$r5   c                   ó  ‡ — e Zd ZdZ	 	 	 	 	 	 ddedededededed	edz  d
edz  fˆ fd„Z	 	 	 dde	j                  de	j                  dz  dedz  de	j                  dz  dee   dee	j                  e	j                  dz  f   fd„Zˆ xZS )ÚBartAttentionz=Multi-headed attention from 'Attention Is All You Need' paperNÚ	embed_dimÚ	num_headsrh   Ú
is_decoderÚbiasÚ	is_causalÚconfigÚ	layer_idxc	                 óŽ  •— t         ‰	| �  «        || _        || _        || _        ||z  | _        || _        | j
                  |z  | j                  k7  rt        d| j                  › d|› d�«      ‚| j
                  dz  | _        || _	        || _
        || _        |€9| j                  r-t        j                  d| j                  j                  › d�«       t!        j"                  |||¬«      | _        t!        j"                  |||¬«      | _        t!        j"                  |||¬«      | _        t!        j"                  |||¬«      | _        y )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).rk   zInstantiating a decoder z¸ without passing `layer_idx` is not recommended and will lead to errors during the forward call, if caching is used. Please make sure to provide a `layer_idx` when creating this class.©r   )r>   r?   r|   r}   rh   Úhead_dimr�   r0   rg   r~   r€   r‚   ÚloggerÚwarning_oncerA   rP   r   ÚLinearÚk_projÚv_projÚq_projÚout_proj)
r@   r|   r}   rh   r~   r   r€   r�   r‚   rA   s
            €r3   r?   zBartAttention.__init__’   s$  ø€ ô 	‰ÑÔØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒØˆŒà�M‰M˜IÑ%¨$¯.©.Ò8ÜØMÈdÏnÉnÐM]Ø$ Y K¨rð3óð ð —}‘} dÑ*ˆŒØ$ˆŒØ"ˆŒØ"ˆŒØÐ §¢Ü×ÑØ*¨4¯>©>×+BÑ+BÐ*Cð D,ð ,ôô —i‘i 	¨9¸4Ô@ˆŒÜ—i‘i 	¨9¸4Ô@ˆŒÜ—i‘i 	¨9¸4Ô@ˆŒÜŸ	™	 )¨Y¸TÔBˆ�r5   Úhidden_statesÚkey_value_statesÚpast_key_valuesrf   ri   Úreturnc                 óØ  — |du}|j                   dd }g |¢d‘| j                  ‘­}| j                  |«      j                  |«      j	                  dd«      }	d}
|�St        |t        «      rA|j                  j                  | j                  «      }
|r|j                  }n|j                  }n|}|r|n|}|rK|�I|
rGj                  | j                     j                  }|j                  | j                     j                  }nÑ| j                  |«      }| j!                  |«      }g |j                   dd ¢d‘| j                  ‘­}|j                  |«      j	                  dd«      }|j                  |«      j	                  dd«      }|�Kj#                  ||| j                  «      \  }}|r)t        |t        «      rd|j                  | j                  <   t%        j&                  | j(                  j*                  t,        «      } || |	|||f| j.                  sdn| j0                  | j2                  dœ|¤Ž\  }} |j4                  g |¢d‘­Ž j7                  «       }| j9                  |«      }||fS )	z#Input shape: Batch x Time x ChannelNr,   r&   r<   FTç        )rh   rg   )r.   r…   r‹   Úviewrs   Ú
isinstancer   Ú
is_updatedÚgetr‚   Úcross_attention_cacheÚself_attention_cacheÚlayersÚkeysÚvaluesr‰   rŠ   Úupdater   Úget_interfacer�   Ú_attn_implementationry   rp   rh   rg   Úreshaperv   rŒ   )r@   r�   rŽ   r�   rf   ri   Úis_cross_attentionÚinput_shapeÚhidden_shapeÚquery_statesr•   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚkv_shapeÚattention_interfacerx   rw   s                      r3   rM   zBartAttention.forward¹   sd  € ð .°TÐ9Ðð $×)Ñ)¨#¨2Ð.ˆà8˜Ð8 bÐ8¨$¯-©-Ñ8ˆð —{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆàˆ
ØÐ&Ü˜/Ô+>Ô?Ø,×7Ñ7×;Ñ;¸D¿N¹NÓK�
Ù%à+:×+PÑ+PÑ(à+:×+OÑ+OÑ(à'6Ð$á-?Ñ)À]ˆÙ /Ð"=Á*à-×4Ñ4°T·^±^ÑD×IÑIˆJØ/×6Ñ6°t·~±~ÑF×MÑM‰LàŸ™ ^Ó4ˆJØŸ;™; ~Ó6ˆLØF˜×-Ñ-¨c¨rÐ2ÐF°BÐF¸¿¹ÑFˆHØ#Ÿ™¨Ó2×<Ñ<¸QÀÓBˆJØ'×,Ñ,¨XÓ6×@Ñ@ÀÀAÓFˆLàÐ*Ø+?×+FÑ+FÀzÐS_Ðae×aoÑaoÓ+pÑ(�
˜Lá%¬*°_ÔFYÔ*ZØAE�O×.Ñ.¨t¯~©~Ñ>ä(?×(MÑ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}š}‘C°$·,±,Ø—L‘Lñ	%
ð ñ	%
Ñ!ˆ�\ð *�k×)Ñ)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—m‘m KÓ0ˆà˜LÐ(Ð(r5   )r’   FTFNN©NNN)rP   rQ   rR   rS   rT   ra   Úboolr'   r?   rG   rU   r   r   r   ÚtuplerM   rV   rW   s   @r3   r{   r{   �   s  ø„ ÙGð Ø ØØØ$(Ø $ñ%Càð%Cð ð%Cð ð	%Cð
 ð%Cð ð%Cð ð%Cð ˜TÑ!ð%Cð ˜‘:õ%CðT 15Ø(,Ø.2ñH)à—|‘|ðH)ð  Ÿ,™,¨Ñ-ðH)ð  ™ð	H)ð
 Ÿ™ tÑ+ðH)ð Ð-Ñ.ðH)ð 
ˆu�|‰|˜UŸ\™\¨DÑ0Ð0Ñ	1÷H)r5   r{   c                   óŠ   ‡ — e Zd Zd
dededz  fˆ fd„Zdej                  dej                  dee	   dej                  fd	„Zˆ xZS )ÚBartEncoderLayerNr�   r‚   c                 ój  •— t         ‰| �  «        |j                  | _        t	        | j                  |j
                  |j                  ||¬«      | _        t        j                  | j                  «      | _
        |j                  | _        t        |j                     | _        |j                  | _        t        j                   | j                  |j"                  «      | _        t        j                   |j"                  | j                  «      | _        t        j                  | j                  «      | _        y )N)r|   r}   rh   r�   r‚   )r>   r?   Úd_modelr|   r{   Úencoder_attention_headsÚattention_dropoutÚ	self_attnr   Ú	LayerNormÚself_attn_layer_normrh   r
   Úactivation_functionÚactivation_fnÚactivation_dropoutrˆ   Úencoder_ffn_dimÚfc1Úfc2Úfinal_layer_norm©r@   r�   r‚   rA   s      €r3   r?   zBartEncoderLayer.__init__  sÔ   ø€ Ü‰ÑÔØŸ™ˆŒä&Ø—n‘nØ×4Ñ4Ø×,Ñ,ØØô
ˆŒô %'§L¡L°·±Ó$@ˆÔ!Ø—~‘~ˆŒÜ# F×$>Ñ$>Ñ?ˆÔØ"(×";Ñ";ˆÔÜ—9‘9˜TŸ^™^¨V×-CÑ-CÓDˆŒÜ—9‘9˜V×3Ñ3°T·^±^ÓDˆŒÜ "§¡¨T¯^©^Ó <ˆÕr5   r�   rf   ri   r�   c                 óF  — |} | j                   |fd|i|¤Ž\  }}t        j                  j                  || j                  | j                  ¬«      }||z   }| j                  |«      }|}| j                  | j                  |«      «      }t        j                  j                  || j                  | j                  ¬«      }| j                  |«      }t        j                  j                  || j                  | j                  ¬«      }||z   }| j                  |«      }|j                  t        j                  k(  rht        j                  |«      j                  «       sEt        j                   |j                  «      j"                  dz
  }t        j$                  || |¬«      }|S )Nrf   rn   iè  )ÚminÚmax)r³   r   rt   rh   rp   rµ   r·   rº   r¸   r»   r¼   rE   rG   Úfloat16ÚisfiniteÚallÚfinforÀ   Úclamp)r@   r�   rf   ri   ÚresidualÚ_Úclamp_values          r3   rM   zBartEncoderLayer.forward  sh  € ð !ˆØ)˜4Ÿ>™>Øñ
à)ð
ð ñ
Ñˆ�qô
 Ÿ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆØ×1Ñ1°-Ó@ˆà ˆØ×*Ñ*¨4¯8©8°MÓ+BÓCˆÜŸ™×-Ñ-¨m¸t×?VÑ?VÐae×anÑanÐ-ÓoˆØŸ™ Ó/ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆØ×-Ñ-¨mÓ<ˆà×Ñ¤%§-¡-Ò/¼¿¹À}Ó8U×8YÑ8YÔ8[ÜŸ+™+ m×&9Ñ&9Ó:×>Ñ>ÀÑEˆKÜ!ŸK™K¨¸K¸<È[ÔYˆMàÐr5   r]   )rP   rQ   rR   r'   rT   r?   rG   ÚFloatTensorr   r   rU   rM   rV   rW   s   @r3   r®   r®     s[   ø„ ñ=˜zð =°c¸D±jõ =ð&à×(Ñ(ðð ×)Ñ)ðð Ð+Ñ,ð	ð
 
�‰÷r5   r®   c                   óì   ‡ — e Zd Zddededz  fˆ fd„Z	 	 	 	 	 ddej                  dej                  dz  dej                  dz  dej                  dz  d	edz  d
e	dz  de
e   dej                  fd„Zˆ xZS )ÚBartDecoderLayerNr�   r‚   c           	      ó  •— t         ‰| �  «        |j                  | _        t	        | j                  |j
                  |j                  dd||¬«      | _        |j                  | _        t        |j                     | _        |j                  | _        t        j                  | j                  «      | _        t	        | j                  |j
                  |j                  d||¬«      | _        t        j                  | j                  «      | _        t        j$                  | j                  |j&                  «      | _        t        j$                  |j&                  | j                  «      | _        t        j                  | j                  «      | _        y )NT)r|   r}   rh   r~   r€   r�   r‚   )rh   r~   r�   r‚   )r>   r?   r°   r|   r{   Údecoder_attention_headsr²   r³   rh   r
   r¶   r·   r¸   r   r´   rµ   Úencoder_attnÚencoder_attn_layer_normrˆ   Údecoder_ffn_dimrº   r»   r¼   r½   s      €r3   r?   zBartDecoderLayer.__init__8  s   ø€ Ü‰ÑÔØŸ™ˆŒä&Ø—n‘nØ×4Ñ4Ø×,Ñ,ØØØØô
ˆŒð —~‘~ˆŒÜ# F×$>Ñ$>Ñ?ˆÔØ"(×";Ñ";ˆÔä$&§L¡L°·±Ó$@ˆÔ!Ü)Ø�N‰NØ×*Ñ*Ø×,Ñ,ØØØô
ˆÔô (*§|¡|°D·N±NÓ'CˆÔ$Ü—9‘9˜TŸ^™^¨V×-CÑ-CÓDˆŒÜ—9‘9˜V×3Ñ3°T·^±^ÓDˆŒÜ "§¡¨T¯^©^Ó <ˆÕr5   r�   rf   Úencoder_hidden_statesÚencoder_attention_maskr�   Ú	use_cacheri   r�   c                 ó  — |} | j                   |f||dœ|¤Ž\  }}	t        j                  j                  || j                  | j                  ¬«      }||z   }| j                  |«      }|�h|} | j                  |f|||dœ|¤Ž\  }}	t        j                  j                  || j                  | j                  ¬«      }||z   }| j                  |«      }|}| j                  | j                  |«      «      }t        j                  j                  || j                  | j                  ¬«      }| j                  |«      }t        j                  j                  || j                  | j                  ¬«      }||z   }| j                  |«      }|S )N)r�   rf   rn   )rŽ   rf   r�   )r³   r   rt   rh   rp   rµ   rÎ   rÏ   r·   rº   r¸   r»   r¼   )
r@   r�   rf   rÑ   rÒ   r�   rÓ   ri   rÆ   rÇ   s
             r3   rM   zBartDecoderLayer.forwardW  s—  € ð !ˆð *˜4Ÿ>™>Øð
à+Ø)ñ
ð ñ	
Ñˆ�qô Ÿ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆØ×1Ñ1°-Ó@ˆð !Ð,Ø$ˆHà0˜t×0Ñ0Øð à!6Ø5Ø /ñ	 ð
 ñ ÑˆM˜1ô ŸM™M×1Ñ1°-À4Ç<Á<ÐZ^×ZgÑZgÐ1ÓhˆMØ$ }Ñ4ˆMØ ×8Ñ8¸ÓGˆMð !ˆØ×*Ñ*¨4¯8©8°MÓ+BÓCˆÜŸ™×-Ñ-¨m¸t×?VÑ?VÐae×anÑanÐ-ÓoˆØŸ™ Ó/ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-ÓdˆØ  =Ñ0ˆØ×-Ñ-¨mÓ<ˆàÐr5   r]   )NNNNT)rP   rQ   rR   r'   rT   r?   rG   rU   r   r«   r   r   rM   rV   rW   s   @r3   rË   rË   7  s°   ø„ ñ=˜zð =°c¸D±jõ =ðD /3Ø59Ø6:Ø(,Ø!%ñ/à—|‘|ð/ð Ÿ™ tÑ+ð/ð  %Ÿ|™|¨dÑ2ð	/ð
 !&§¡¨tÑ 3ð/ð  ™ð/ð ˜$‘;ð/ð Ð+Ñ,ð/ð 
�‰÷/r5   rË   c                   ól   ‡ — e Zd ZdZdedededefˆ fd„Zdej                  dej                  fd	„Z	ˆ xZ
S )
ÚBartClassificationHeadz-Head for sentence-level classification tasks.Ú	input_dimÚ	inner_dimÚnum_classesÚpooler_dropoutc                 óÄ   •— t         ‰| �  «        t        j                  ||«      | _        t        j
                  |¬«      | _        t        j                  ||«      | _        y )N)ro   )r>   r?   r   rˆ   ÚdenseÚDropoutrh   rŒ   )r@   r×   rØ   rÙ   rÚ   rA   s        €r3   r?   zBartClassificationHead.__init__Œ  sD   ø€ ô 	‰ÑÔÜ—Y‘Y˜y¨)Ó4ˆŒ
Ü—z‘z NÔ3ˆŒÜŸ	™	 )¨[Ó9ˆ�r5   r�   r�   c                 ó¸   — | j                  |«      }| j                  |«      }t        j                  |«      }| j                  |«      }| j	                  |«      }|S r]   )rh   rÜ   rG   ÚtanhrŒ   )r@   r�   s     r3   rM   zBartClassificationHead.forward˜  sN   € ØŸ™ ]Ó3ˆØŸ
™
 =Ó1ˆÜŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ mÓ4ˆØÐr5   r`   rW   s   @r3   rÖ   rÖ   ‰  sL   ø„ Ù7ð
:àð
:ð ð
:ð ð	
:ð
 õ
:ð U§\¡\ð °e·l±l÷ r5   rÖ   c                   óh   ‡ — e Zd ZU eed<   dZdZddgZddgZdgZ	dZ
dZdZdZˆ fd	„Zed
„ «       Zˆ xZS )ÚBartPreTrainedModelr�   ÚmodelTzencoder.versionzdecoder.versionr®   rË   r�   c                 ó„   •— t         ‰| �  |«       t        |t        «      r t	        j
                  |j                  «       y y r]   )r>   Ú_init_weightsr”   ÚBartForConditionalGenerationÚinitÚzeros_Úfinal_logits_bias)r@   rb   rA   s     €r3   rä   z!BartPreTrainedModel._init_weights¯  s2   ø€ Ü‰Ñ˜fÔ%Ü�fÔ:Ô;Ü�K‰K˜×0Ñ0Õ1ð <r5   c                 ó®   — | j                   j                  }t        j                  g d¢dddd|gg| j                  ¬«      }|j                  |«      |dœ}|S )N)r   é   é
   é   r<   r   é   é   r<   ©rF   )rf   r(   )r�   r)   rG   ÚtensorrF   Úne)r@   Ú	pad_tokenr(   Údummy_inputss       r3   ró   z BartPreTrainedModel.dummy_inputs´  sW   € à—K‘K×,Ñ,ˆ	Ü—L‘LÒ"2°Q¸¸2¸qÀ)Ð4LÐ!MÐVZ×VaÑVaÔbˆ	à'Ÿl™l¨9Ó5Ø"ñ
ˆð Ðr5   )rP   rQ   rR   r'   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ"_keys_to_ignore_on_load_unexpectedÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphrä   Úpropertyró   rV   rW   s   @r3   rá   rá   ¡  sf   ø… àÓØÐØ&*Ð#Ø*;Ð=NÐ)OÐ&Ø,Ð.AÐBÐØ#4Ð"5ÐØÐØ€NØÐà!Ðô2ð
 ñó ôr5   rá   c                   ó   — e Zd Zd„ Zy)ÚPretrainedBartModelc                 ó8   — t        j                  dt        «       y ©Nz_The class `PretrainedBartModel` has been depreciated, please use `BartPreTrainedModel` instead.©ÚwarningsÚwarnÚFutureWarning©r@   s    r3   Ú__init_subclass__z%PretrainedBartModel.__init_subclass__À  ó   € Ü�‰ØmÜõ	
r5   N©rP   rQ   rR   r  © r5   r3   r   r   ¿  ó   „ ó
r5   r   c                   ó   — e Zd Zd„ Zy)ÚBartPretrainedModelc                 ó8   — t        j                  dt        «       y r  r  r  s    r3   r  z%BartPretrainedModel.__init_subclass__È  r	  r5   Nr
  r  r5   r3   r  r  Ç  r  r5   r  c                   óÈ   ‡ — e Zd ZdZeedœZdefˆ fd„Ze	e
e	 	 	 ddej                  dz  dej                  dz  dej                  dz  d	ee   d
ef
d„«       «       «       Zˆ xZS )ÚBartEncoderzà
    Transformer encoder consisting of *config.encoder_layers* self attention layers. Each layer is a
    [`BartEncoderLayer`].

    Args:
        config: BartConfig
        embed_tokens (nn.Embedding): output embedding
    )r�   Ú
attentionsr�   c           	      óˆ  •— t         ‰| �  |«       |j                  | _        |j                  | _        |j
                  }|j                  | _        |j                  | _	        |j                  rt        j                  |«      nd}t        |j                  || j                  |¬«      | _        t!        |j                  |«      | _        t%        j&                  t)        |j*                  «      D �cg c]  }t-        ||¬«      ‘Œ c}«      | _        t%        j0                  |«      | _        d| _        | j7                  «        y c c}w ©Nr_   ©r[   )r‚   F)r>   r?   rh   Úencoder_layerdropÚ	layerdropr°   r)   rZ   Úmax_position_embeddingsÚmax_source_positionsÚscale_embeddingÚmathÚsqrtrY   Ú
vocab_sizeÚembed_tokensr7   Úembed_positionsr   Ú
ModuleListÚrangeÚencoder_layersr®   r™   r´   Úlayernorm_embeddingÚgradient_checkpointingÚ	post_init)r@   r�   r|   r[   ÚirA   s        €r3   r?   zBartEncoder.__init__Þ  sý   ø€ Ü‰Ñ˜Ô à—~‘~ˆŒØ×1Ñ1ˆŒà—N‘Nˆ	Ø!×.Ñ.ˆÔØ$*×$BÑ$BˆÔ!Ø.4×.DÒ.D”d—i‘i 	Ô*È#ˆä3Ø×Ñ˜y¨$×*:Ñ*:Èô
ˆÔô  >Ø×*Ñ*Øó 
ˆÔô —m‘mÔTYÐZ`×ZoÑZoÓTpÖ$qÈqÔ%5°fÈÖ%JÒ$qÓrˆŒÜ#%§<¡<°	Ó#:ˆÔ à&+ˆÔ#à�‰Õùò %rs   Ã-D?Nr(   rf   Úinputs_embedsri   r�   c                 óX  — |d u |d uz  rt        d«      ‚|€| j                  |«      }| j                  |d d …d d …df   «      }|j                  |j                  «      }||z   }| j                  |«      }t        j                  j                  || j                  | j                  ¬«      }t        | j                  ||¬«      }t        | j                  «      D ]F  \  }}d}	| j                  r&t        j                  g «      }
|
| j                   k  rd}	|	rŒ= |||fi |¤Ž}ŒH t#        |¬«      S )Nz:You must specify exactly one of input_ids or inputs_embedsr,   rn   )r�   r'  rf   FT)Úlast_hidden_state)r0   r  r  ÚtorF   r#  r   rt   rh   rp   r   r�   Ú	enumerater™   rG   Úrandr  r   )r@   r(   rf   r'  ri   Ú	embed_posr�   ÚidxÚencoder_layerÚto_dropÚdropout_probabilitys              r3   rM   zBartEncoder.forwardø  s7  € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZàÐ Ø ×-Ñ-¨iÓ8ˆMà×(Ñ(¨²qº!¸R°xÑ)@ÓAˆ	Ø—L‘L ×!5Ñ!5Ó6ˆ	à%¨	Ñ1ˆØ×0Ñ0°Ó?ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ódˆä2Ø—;‘;Ø'Ø)ô
ˆô
 #,¨D¯K©KÓ"8ò 	ÑˆC�àˆGØ�}Š}Ü&+§j¡j°£nÐ#Ø&¨¯©Ò7Ø"�GâÙ -Ø!Ø"ñ!ð ñ!‘ð	ô Ø+ô
ð 	
r5   rª   )rP   rQ   rR   rS   r®   r{   Ú_can_record_outputsr'   r?   r#   r%   r   rG   Ú
LongTensorrU   rÉ   r   r   r   rM   rV   rW   s   @r3   r  r  Ï  s¨   ø„ ñð *Ø#ñÐð
˜zõ ð4  ØØð .2Ø.2Ø26ñ	*
à×#Ñ# dÑ*ð*
ð Ÿ™ tÑ+ð*
ð ×(Ñ(¨4Ñ/ð	*
ð
 Ð+Ñ,ð*
ð 
ò*
ó ó ó  ô*
r5   r  c                   óF  ‡ — e Zd ZdZe eedd¬«       eedd¬«      dœZdefˆ 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d	z  dej                   d	z  ded	z  dee   defd„«       «       «       Zˆ xZS )ÚBartDecoderzÌ
    Transformer decoder consisting of *config.decoder_layers* layers. Each layer is a [`BartDecoderLayer`]

    Args:
        config: BartConfig
        embed_tokens (nn.Embedding): output embedding
    r&   r³   )ÚindexÚ
layer_namerÎ   )r�   r  Úcross_attentionsr�   c           	      óÀ  •— t         ‰| �  |«       |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  rt        j                  |j                  «      nd}t        |j                  |j                  | j                  |¬«      | _        t!        |j                  |j                  «      | _        t%        j&                  t)        |j*                  «      D �cg c]  }t-        ||¬«      ‘Œ c}«      | _        t%        j0                  |j                  «      | _        d| _        | j7                  «        y c c}w r  )r>   r?   rh   Údecoder_layerdropr  r)   rZ   r  Úmax_target_positionsr  r  r  r°   rY   r  r  r7   r  r   r   r!  Údecoder_layersrË   r™   r´   r#  r$  r%  )r@   r�   r[   r&  rA   s       €r3   r?   zBartDecoder.__init__7  s  ø€ Ü‰Ñ˜Ô Ø—~‘~ˆŒØ×1Ñ1ˆŒØ!×.Ñ.ˆÔØ$*×$BÑ$BˆÔ!Ø39×3IÒ3I”d—i‘i §¡Ô/Èsˆä3Ø×Ñ˜vŸ~™~¨t×/?Ñ/?È[ô
ˆÔô  >Ø×*Ñ*Ø�N‰Nó 
ˆÔô —m‘mÔTYÐZ`×ZoÑZoÓTpÖ$qÈqÔ%5°fÈÖ%JÒ$qÓrˆŒä#%§<¡<°·±Ó#?ˆÔ à&+ˆÔ#à�‰Õùò %rs   Ã?ENr(   rf   rÑ   rÒ   r�   r'  rÓ   ri   r�   c                 óˆ  — |d u |d uz  rt        d«      ‚|€| j                  |«      }|rd|€b|€| j                  j                  r4t	        t        | j                  ¬«      t        | j                  ¬«      «      nt        | j                  ¬«      }|j                  «       d d \  }	}
|�|j                  «       nd}t        j                  |
|j                  ¬«      |z   }|€1t        «       s'||
z   }t        j                  |	||j                  ¬«      }t        |t        «      r|j                  n|}t        | j                  |||¬«      }t!        | j                  |||¬«      }| j#                  |||¬«      }|j%                  |j                  «      }||z   }| j'                  |«      }t(        j*                  j-                  || j,                  | j.                  ¬	«      }t1        | j2                  «      D ]E  \  }}| j.                  r%t        j4                  g «      }|| j6                  k  rŒ7 ||||f|||d
œ|¤Ž}ŒG t9        ||¬«      S )NzJYou must specify exactly one of decoder_input_ids or decoder_inputs_embeds)r�   r,   r   rï   )r�   r'  rf   r�   )r�   r'  rf   rÑ   )rC   rn   )rÒ   r�   rÓ   )r)  r�   )r0   r  r�   Úis_encoder_decoderr   r   rq   Úget_seq_lengthrG   rH   rF   r    Úonesr”   r˜   r   r   r  r*  r#  r   rt   rh   rp   r+  r™   r,  r  r   )r@   r(   rf   rÑ   rÒ   r�   r'  rÓ   ri   Ú
batch_sizeÚ
seq_lengthrB   rC   Úmask_seq_lengthÚself_attn_cacheÚ	positionsr�   r.  Údecoder_layerr1  s                       r3   rM   zBartDecoder.forwardO  sP  € ð ˜Ð -°tÐ";Ò<ÜÐiÓjÐjàÐ Ø ×-Ñ-¨iÓ8ˆMñ ˜Ð0ð )Ð4¸¿¹×8VÒ8Vô $¤L¸¿¹Ô$DÄlÐZ^×ZeÑZeÔFfÔgä!¨¯©Ô5ð ð "/×!3Ñ!3Ó!5°c°rÐ!:Ñˆ
�JØETÐE` ×!?Ñ!?Ô!AÐfgÐÜ—|‘| J°}×7KÑ7KÔLÐOeÑeˆàÐ!Ô*BÔ*Dà4°zÑAˆOÜ"ŸZ™Z¨
°OÈM×L`ÑL`ÔaˆNô ˜/Ô+>Ô?ð ×0Ò0à ð 	ô ,Ø—;‘;Ø'Ø)Ø+ô	
ˆô ";Ø—;‘;Ø'Ø1Ø"7ô	"
Ðð ×(Ñ(¨Ð4JÐYeÐ(Ófˆ	Ø—L‘L ×!5Ñ!5Ó6ˆ	à%¨	Ñ1ˆØ×0Ñ0°Ó?ˆäŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ódˆä"+¨D¯K©KÓ"8ò 	ÑˆC�à�}Š}Ü&+§j¡j°£nÐ#Ø&¨¯©Ò7Øá)ØØØ%ðð (>Ø /Ø#ñð ñ‰Mð	ô" 9Ø+Ø+ô
ð 	
r5   )NNNNNNN)rP   rQ   rR   rS   rË   r$   r{   r2  r'   r?   r#   r%   r   rG   r3  rU   rÉ   r   r«   r   r   r   rM   rV   rW   s   @r3   r5  r5  (  s  ø„ ñð *Ù$ ]¸!ÈÔTÙ*¨=ÀÈnÔ]ñÐð˜zõ ð0  ØØð .2Ø.2Ø:>Ø:>Ø(,Ø26Ø!%ñR
à×#Ñ# dÑ*ðR
ð Ÿ™ tÑ+ðR
ð  %×0Ñ0°4Ñ7ð	R
ð
 !&× 0Ñ 0°4Ñ 7ðR
ð  ™ðR
ð ×(Ñ(¨4Ñ/ðR
ð ˜$‘;ðR
ð Ð+Ñ,ðR
ð 
3òR
ó ó ó  ôR
r5   r5  c                   ój  ‡ — e Zd ZdddœZdefˆ fd„Zd„ 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e
j                     dz  dedz  de
j                  dz  de
j                  dz  dedz  dee   deez  fd„«       «       Zˆ xZS )Ú	BartModelzshared.weight)zdecoder.embed_tokens.weightzencoder.embed_tokens.weightr�   c                 óJ  •— t         ‰| �  |«       |j                  |j                  }}|j                  rt        j                  |j                  «      nd}t        ||j                  ||¬«      | _	        t        |«      | _        t        |«      | _        | j                  «        y )Nr_   r  )r>   r?   r)   r  r  r  r  r°   rY   Úsharedr  Úencoderr5  Údecoderr%  )r@   r�   rZ   r  r[   rA   s        €r3   r?   zBartModel.__init__®  s|   ø€ Ü‰Ñ˜Ô à"(×"5Ñ"5°v×7HÑ7H�ZˆØ39×3IÒ3I”d—i‘i §¡Ô/ÈsˆÜ-¨j¸&¿.¹.È+ÐcnÔoˆŒä" 6Ó*ˆŒÜ" 6Ó*ˆŒð 	�‰Õr5   c                 ó   — | j                   S r]   )rJ  r  s    r3   Úget_input_embeddingszBartModel.get_input_embeddings»  s   € Ø�{‰{Ðr5   c                 ó~   — || _         | j                   | j                  _        | j                   | j                  _        y r]   )rJ  rK  r  rL  ©r@   re   s     r3   Úset_input_embeddingszBartModel.set_input_embeddings¾  s)   € ØˆŒØ$(§K¡Kˆ�‰Ô!Ø$(§K¡Kˆ�‰Õ!r5   Nr(   rf   Údecoder_input_idsÚdecoder_attention_maskÚencoder_outputsr�   r'  Údecoder_inputs_embedsrÓ   ri   r�   c
                 óN  — |€D|€B|€t        d«      ‚t        || j                  j                  | j                  j                  «      }|€ | j
                  d
|||dœ|
¤Ž}nGt        |t        «      s7t        |d   t        |«      dkD  r|d   ndt        |«      dkD  r|d   nd¬«      } | j                  d
|||d   ||||	dœ|
¤Ž}t        |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  ¬	«      S )áË  
        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)

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

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

            If you want to change padding behavior, you should read [`modeling_bart._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        Nz°If no `decoder_input_ids` or `decoder_inputs_embeds` are passed, `input_ids` cannot be `None`. Please pass either `input_ids` or `decoder_input_ids` or `decoder_inputs_embeds`.)r(   rf   r'  r   r&   r<   )r)  r�   r  ©r(   rf   rÑ   rÒ   r�   r'  rÓ   )r)  r�   Údecoder_hidden_statesÚdecoder_attentionsr8  Úencoder_last_hidden_staterÑ   Úencoder_attentionsr  )r0   r4   r�   r)   r*   rK  r”   r   ÚlenrL  r   r)  r�   r�   r  r8  )r@   r(   rf   rR  rS  rT  r�   r'  rU  rÓ   ri   Údecoder_outputss               r3   rM   zBartModel.forwardÃ  sd  € ðP Ð$Ð)>Ð)FØÐ Ü ðUóð ô !3Ø˜4Ÿ;™;×3Ñ3°T·[±[×5WÑ5Wó!Ðð Ð"Ø/;¨t¯|©|ð 0Ø#Ø-Ø+ñ0ð ñ	0‰Oô ˜O¬_Ô=Ü-Ø"1°!Ñ"4Ü47¸Ó4HÈ1Ò4L˜o¨aÒ0ÐRVÜ14°_Ó1EÈÒ1I˜?¨1Ò-ÈtôˆOð FRÀTÇ\Á\ð 	F
Ø'Ø1Ø"1°!Ñ"4Ø#1Ø+Ø/Øñ	F
ð ñ	F
ˆô "Ø-×?Ñ?Ø+×;Ñ;Ø"1×"?Ñ"?Ø.×9Ñ9Ø,×=Ñ=Ø&5×&GÑ&GØ"1×"?Ñ"?Ø.×9Ñ9ô	
ð 		
r5   ©	NNNNNNNNN)rP   rQ   rR   Ú_tied_weights_keysr'   r?   rN  rQ  r   r   rG   r3  rU   ÚlistrÉ   r   r«   r   r   r¬   r   rM   rV   rW   s   @r3   rH  rH  §  s?  ø„ ð (7Ø'6ñÐð
˜zõ òò0ð
 Øð .2Ø.2Ø59Ø:>Ø:>Ø(,Ø26Ø:>Ø!%ñT
à×#Ñ# dÑ*ðT
ð Ÿ™ tÑ+ðT
ð !×+Ñ+¨dÑ2ð	T
ð
 !&× 0Ñ 0°4Ñ 7ðT
ð ˜e×/Ñ/Ñ0°4Ñ7ðT
ð  ™ðT
ð ×(Ñ(¨4Ñ/ðT
ð  %×0Ñ0°4Ñ7ðT
ð ˜$‘;ðT
ð Ð+Ñ,ðT
ð 
Ð#Ñ	#òT
ó ó ôT
r5   rH  zV
    The BART Model with a language modeling head. Can be used for summarization.
    )Úcustom_introc                   óð  ‡ — e Zd ZdZddiZdgZdefˆ fd„Z	 dded	edz  d
e	de
j                  fˆ fd„Zdeddfd„Z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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e   deez  fd„«       «       Zdej$                  fd„Zˆ xZS )rå   râ   úlm_head.weightzmodel.shared.weightrè   r�   c                 óx  •— t         ‰| �  |«       t        |«      | _        | j	                  dt        j                  d| j                  j                  j                  f«      «       t        j                  |j                  | j                  j                  j                  d¬«      | _        | j                  «        y )Nrè   r&   Fr„   )r>   r?   rH  râ   Úregister_bufferrG   ÚzerosrJ  r8   r   rˆ   r°   Úlm_headr%  ©r@   r�   rA   s     €r3   r?   z%BartForConditionalGeneration.__init__(  s€   ø€ Ü‰Ñ˜Ô Ü˜vÓ&ˆŒ
Ø×ÑÐ0´%·+±+¸qÀ$Ç*Á*×BSÑBS×BbÑBbÐ>cÓ2dÔeÜ—y‘y §¡°·±×1BÑ1B×1QÑ1QÐX]Ô^ˆŒð 	�‰Õr5   NÚnew_num_tokensÚpad_to_multiple_ofÚmean_resizingr�   c                 óz   •— t         ‰| �  |||«      }| j                  |j                  j                  d   «       |S )Nr   )r>   Úresize_token_embeddingsÚ_resize_final_logits_biasrJ   r.   )r@   rj  rk  rl  Únew_embeddingsrA   s        €r3   rn  z4BartForConditionalGeneration.resize_token_embeddings1  s?   ø€ ô ™Ñ8¸ÐI[Ð]jÓkˆØ×&Ñ& ~×'<Ñ'<×'BÑ'BÀ1Ñ'EÔFØÐr5   c                 ó6  — | j                   j                  d   }||k  r| j                   d d …d |…f   }nSt        j                  d||z
  f| j                   j                  ¬«      }t        j
                  | j                   |gd¬«      }| j                  d|«       y )Nr,   r&   rï   rl   rè   )rè   r.   rG   rg  rF   Úcatrf  )r@   rj  Úold_num_tokensÚnew_biasÚ
extra_biass        r3   ro  z6BartForConditionalGeneration._resize_final_logits_bias8  sŒ   € Ø×/Ñ/×5Ñ5°bÑ9ˆØ˜^Ò+Ø×-Ñ-ªa°°.°Ð.@ÑA‰HäŸ™ a¨¸.Ñ)HÐ%IÐRV×RhÑRh×RoÑRoÔpˆJÜ—y‘y $×"8Ñ"8¸*Ð!EÈ1ÔMˆHØ×ÑÐ0°(Õ;r5   r(   rf   rR  rS  rT  r�   r'  rU  ÚlabelsrÓ   ri   c                 óØ  — |	�R|
rt         j                  d«       d}
|€7|€5t        |	| j                  j                  | j                  j
                  «      } | j                  |f||||||||
dœ|¤Ž}| j                  |d   «      }|| j                  j                  |j                  «      z   }d}|	�a|	j                  |j                  «      }	t        «       } ||j                  d| j                  j                  «      |	j                  d«      «      }t        |||j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  ¬«	      S )a  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

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

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

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

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

            If you want to change padding behavior, you should read [`modeling_bart._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example summarization:

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

        >>> model = BartForConditionalGeneration.from_pretrained("facebook/bart-large-cnn")
        >>> tokenizer = AutoTokenizer.from_pretrained("facebook/bart-large-cnn")

        >>> ARTICLE_TO_SUMMARIZE = (
        ...     "PG&E stated it scheduled the blackouts in response to forecasts for high winds "
        ...     "amid dry conditions. The aim is to reduce the risk of wildfires. Nearly 800 thousand customers were "
        ...     "scheduled to be affected by the shutoffs which were expected to last through at least midday tomorrow."
        ... )
        >>> inputs = tokenizer([ARTICLE_TO_SUMMARIZE], max_length=1024, return_tensors="pt")

        >>> # Generate Summary
        >>> summary_ids = model.generate(inputs["input_ids"], num_beams=2, min_length=0, max_length=20)
        >>> tokenizer.batch_decode(summary_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
        'PG&E scheduled the blackouts in response to forecasts for high winds amid dry conditions'
        ```

        Mask filling example:

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

        >>> tokenizer = AutoTokenizer.from_pretrained("facebook/bart-base")
        >>> model = BartForConditionalGeneration.from_pretrained("facebook/bart-base")

        >>> TXT = "My friends are <mask> but they eat too many carbs."
        >>> input_ids = tokenizer([TXT], return_tensors="pt")["input_ids"]
        >>> logits = model(input_ids).logits

        >>> masked_index = (input_ids[0] == tokenizer.mask_token_id).nonzero().item()
        >>> probs = logits[0, masked_index].softmax(dim=0)
        >>> values, predictions = probs.topk(5)

        >>> tokenizer.decode(predictions).split()
        ['not', 'good', 'healthy', 'great', 'very']
        ```
        NzJThe `use_cache` argument is changed to `False` since `labels` is provided.F)rf   rR  rT  rS  r�   r'  rU  rÓ   r   r,   ©	ÚlossÚlogitsr�   rY  rZ  r8  r[  rÑ   r\  )r†   Úwarningr4   r�   r)   r*   râ   rh  rè   r*  rF   r   r“   r  r   r�   rY  rZ  r8  r[  rÑ   r\  )r@   r(   rf   rR  rS  rT  r�   r'  rU  rv  rÓ   ri   ÚoutputsÚ	lm_logitsÚmasked_lm_lossÚloss_fcts                   r3   rM   z$BartForConditionalGeneration.forwardA  sj  € ðh ÐÙÜ—‘ÐkÔlØˆIØ Ð(Ð-BÐ-JÜ$6Ø˜DŸK™K×4Ñ4°d·k±k×6XÑ6Xó%Ð!ð '1 d§j¡jØð'
à)Ø/Ø+Ø#9Ø+Ø'Ø"7Øñ'
ð ñ'
ˆð —L‘L ¨¡Ó,ˆ	Ø × 6Ñ 6× 9Ñ 9¸)×:JÑ:JÓ KÑKˆ	àˆØÐØ—Y‘Y˜y×/Ñ/Ó0ˆFÜ'Ó)ˆHÙ% i§n¡n°R¸¿¹×9OÑ9OÓ&PÐRX×R]ÑR]Ð^`ÓRaÓbˆNäØØØ#×3Ñ3Ø")×"?Ñ"?Ø&×9Ñ9Ø$×5Ñ5Ø&-×&GÑ&GØ")×"?Ñ"?Ø&×9Ñ9ô

ð 
	
r5   c                 ól   — t        || j                  j                  | j                  j                  «      S r]   )r4   r�   r)   r*   )r@   rv  s     r3   Ú%prepare_decoder_input_ids_from_labelszBBartForConditionalGeneration.prepare_decoder_input_ids_from_labelsÀ  s%   € Ü! &¨$¯+©+×*BÑ*BÀDÇKÁK×DfÑDfÓgÐgr5   )NT©
NNNNNNNNNN)rP   rQ   rR   rõ   r`  Ú_keys_to_ignore_on_load_missingr'   r?   rT   r«   r   Ú	Embeddingrn  ro  r   r   rG   r3  rU   ra  rÉ   r   r   r   r¬   r   rM   r�  rV   rW   s   @r3   rå   rå     s¸  ø„ ð  ÐàÐ/ðÐð (;Ð&;Ð#ð˜zõ ð aeñØ!ðØ7:¸T±zðØY]ðà	�‰õð<¸ð <Àó <ð Øð .2Ø.2Ø59Ø:>Ø:>Ø(,Ø26Ø:>Ø*.Ø!%ñ{
à×#Ñ# dÑ*ð{
ð Ÿ™ tÑ+ð{
ð !×+Ñ+¨dÑ2ð	{
ð
 !&× 0Ñ 0°4Ñ 7ð{
ð ˜e×/Ñ/Ñ0°4Ñ7ð{
ð  ™ð{
ð ×(Ñ(¨4Ñ/ð{
ð  %×0Ñ0°4Ñ7ð{
ð × Ñ  4Ñ'ð{
ð ˜$‘;ð{
ð Ð+Ñ,ð{
ð 
�Ñ	 ò{
ó ó ð{
ðzh¸E¿L¹L÷ hr5   rå   z…
    Bart model with a sequence classification/head on top (a linear layer on top of the pooled output) e.g. for GLUE
    tasks.
    c                   óh  ‡ — e Zd Zdefˆ fd„Zee	 	 	 	 	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  dej                  dz  de
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e   deez  fd„«       «       Zˆ xZS )ÚBartForSequenceClassificationr�   c                 óÜ   •— t        ‰| �  |fi |¤Ž t        |«      | _        t	        |j
                  |j
                  |j                  |j                  «      | _        | j                  «        y r]   )
r>   r?   rH  râ   rÖ   r°   Ú
num_labelsÚclassifier_dropoutÚclassification_headr%  )r@   r�   ri   rA   s      €r3   r?   z&BartForSequenceClassification.__init__Ë  sZ   ø€ Ü‰Ñ˜Ñ* 6Ò*Ü˜vÓ&ˆŒ
Ü#9Ø�N‰NØ�N‰NØ×ÑØ×%Ñ%ó	$
ˆÔ ð 	�‰Õr5   Nr(   rf   rR  rS  rT  r'  rU  rv  rÓ   ri   r�   c
                 óä  — |�d}	|€$|�"t        d| j                  j                  › �«      ‚ | j                  |f|||||||	dœ|
¤Ž}|d   }|j	                  | j
                  j                  «      j                  |j                  «      }t        t        j                  |j                  d«      «      j                  «       dk(  d«       ||dd…f   }t        |j                  d   |j                  d   z  dk\  d«       |j                  |j!                  d«      d	|j!                  d	«      «      dd…d	dd…f   }| j#                  |«      }d}|��Ê|j                  |j                  «      }| j
                  j$                  €¡| j
                  j&                  dk(  rd
| j
                  _        nv| j
                  j&                  dkD  rL|j(                  t        j*                  k(  s|j(                  t        j,                  k(  rd| j
                  _        nd| j
                  _        | j
                  j$                  d
k(  rSt/        «       }| j
                  j&                  dk(  r& ||j1                  «       |j1                  «       «      }n– |||«      }nŒ| j
                  j$                  dk(  rGt3        «       } ||j                  d	| j
                  j&                  «      |j                  d	«      «      }n,| j
                  j$                  dk(  rt5        «       } |||«      }t7        |||j8                  |j:                  |j<                  |j>                  |j@                  |jB                  |jD                  ¬«	      S )aõ  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

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

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

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

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

            If you want to change padding behavior, you should read [`modeling_bart._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        NFz8Passing input embeddings is currently not supported for ©rf   rR  rS  rT  r'  rU  rÓ   r   r&   z7All examples must have the same number of <eos> tokens.z3Each example must contain at least one <eos> token.r,   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationrx  )#ÚNotImplementedErrorrA   rP   râ   Úeqr�   Úeos_token_idr*  rF   r"   rG   Úunique_consecutiveÚsumÚnumelr.   r“   rq   rŠ  Úproblem_typerˆ  rE   rI   rT   r   Úsqueezer   r   r   r�   rY  rZ  r8  r[  rÑ   r\  )r@   r(   rf   rR  rS  rT  r'  rU  rv  rÓ   ri   r|  r�   Úeos_maskÚselectedÚsentence_representationrz  ry  r  s                      r3   rM   z%BartForSequenceClassification.forwardØ  s	  € ðR ÐØˆIàÐ Ð!:Ü%ØJÈ4Ï>É>×KbÑKbÐJcÐdóð ð '1 d§j¡jØð
'
à)Ø/Ø#9Ø+Ø'Ø"7Øñ
'
ð ñ
'
ˆð   ™
ˆà—<‘< §¡× 8Ñ 8Ó9×<Ñ<¸]×=QÑ=QÓRˆäÜ×$Ñ$ X§\¡\°!£_Ó5×;Ñ;Ó=ÀÑBØEô	
ð ! ª1 Ñ-ˆÜØ�N‰N˜1Ñ ×!4Ñ!4°QÑ!7Ñ7¸1Ñ<ØAô	
ð #+§-¡-°×0BÑ0BÀ1Ó0EÀrÈ=×K]ÑK]Ð^`ÓKaÓ"bÒcdÐfhÒjkÐckÑ"lÐØ×)Ñ)Ð*AÓBˆàˆØÑØ—Y‘Y˜vŸ}™}Ó-ˆFØ�{‰{×'Ñ'Ð/Ø—;‘;×)Ñ)¨QÒ.Ø/;�D—K‘KÕ,Ø—[‘[×+Ñ+¨aÒ/°V·\±\ÄUÇZÁZÒ5OÐSY×S_ÑS_Ôch×clÑclÒSlØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ò7Ü"›9�Ø—;‘;×)Ñ)¨QÒ.Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# F¨FÓ3‘DØ—‘×)Ñ)Ð-JÒJÜ+Ó-�Ù §¡¨B°·±×0FÑ0FÓ GÈÏÉÐUWËÓY‘Ø—‘×)Ñ)Ð-IÒIÜ,Ó.�Ù ¨Ó/�ä.ØØØ#×3Ñ3Ø")×"?Ñ"?Ø&×9Ñ9Ø$×5Ñ5Ø&-×&GÑ&GØ")×"?Ñ"?Ø&×9Ñ9ô

ð 
	
r5   r_  )rP   rQ   rR   r'   r?   r   r   rG   r3  rU   ra  rÉ   r«   r   r   r¬   r   rM   rV   rW   s   @r3   r†  r†  Ä  s,  ø„ ð˜zõ ð Øð .2Ø.2Ø59Ø:>Ø:>Ø26Ø:>Ø*.Ø!%ñl
à×#Ñ# dÑ*ðl
ð Ÿ™ tÑ+ðl
ð !×+Ñ+¨dÑ2ð	l
ð
 !&× 0Ñ 0°4Ñ 7ðl
ð ˜e×/Ñ/Ñ0°4Ñ7ðl
ð ×(Ñ(¨4Ñ/ðl
ð  %×0Ñ0°4Ñ7ðl
ð × Ñ  4Ñ'ðl
ð ˜$‘;ðl
ð Ð+Ñ,ðl
ð 
Ð0Ñ	0òl
ó ó ôl
r5   r†  c                   ó‚  ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  dej                  dz  de	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e   deez  fd„«       «       Zˆ xZS )ÚBartForQuestionAnsweringc                 óò   •— t         ‰| �  |«       d|_        |j                  | _        t        |«      | _        t        j                  |j                  |j                  «      | _        | j                  «        y r;   )
r>   r?   rˆ  rH  râ   r   rˆ   Úhidden_sizeÚ
qa_outputsr%  ri  s     €r3   r?   z!BartForQuestionAnswering.__init__K  s[   ø€ Ü‰Ñ˜Ô àˆÔØ ×+Ñ+ˆŒä˜vÓ&ˆŒ
ÜŸ)™) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰Õr5   Nr(   rf   rR  rS  rT  Ústart_positionsÚend_positionsr'  rU  rÓ   ri   r�   c                 óD  — |�|�d}
 | j                   |f||||||	|
dœ|¤Ž}|d   }| j                  |«      }|j                  dd¬«      \  }}|j                  d«      j	                  «       }|j                  d«      j	                  «       }d}|�·|�µt        |j                  «       «      dkD  r|j                  d«      }t        |j                  «       «      dkD  r|j                  d«      }|j                  d«      }|j                  d|«      }|j                  d|«      }t        |¬«      } |||«      } |||«      }||z   d	z  }t        ||||j                  |j                  |j                  |j                  |j                  |j                  |j                   ¬
«
      S )rW  NFrŒ  r   r&   r,   rl   )Úignore_indexr<   )
ry  Ústart_logitsÚ
end_logitsr�   rY  rZ  r8  r[  rÑ   r\  )râ   rŸ  Úsplitr—  rv   r]  rq   rÅ   r   r   r�   rY  rZ  r8  r[  rÑ   r\  )r@   r(   rf   rR  rS  rT  r   r¡  r'  rU  rÓ   ri   r|  Úsequence_outputrz  r¤  r¥  Ú
total_lossÚignored_indexr  Ú
start_lossÚend_losss                         r3   rM   z BartForQuestionAnswering.forwardW  sÄ  € ðN Ð&¨=Ð+DØˆIà&0 d§j¡jØð
'
à)Ø/Ø#9Ø+Ø'Ø"7Øñ
'
ð ñ
'
ˆð " !™*ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ó#:Ñ ˆ�jØ#×+Ñ+¨BÓ/×:Ñ:Ó<ˆØ×'Ñ'¨Ó+×6Ñ6Ó8ˆ
àˆ
ØÐ&¨=Ð+Dä�?×'Ñ'Ó)Ó*¨QÒ.Ø"1×"9Ñ"9¸"Ó"=�Ü�=×%Ñ%Ó'Ó(¨1Ò,Ø -× 5Ñ 5°bÓ 9�à(×-Ñ-¨aÓ0ˆMØ-×3Ñ3°A°}ÓEˆOØ)×/Ñ/°°=ÓAˆMä'°]ÔCˆHÙ! ,°Ó@ˆJÙ 
¨MÓ:ˆHØ$ xÑ/°1Ñ4ˆJä2ØØ%Ø!Ø#×3Ñ3Ø")×"?Ñ"?Ø&×9Ñ9Ø$×5Ñ5Ø&-×&GÑ&GØ")×"?Ñ"?Ø&×9Ñ9ô
ð 	
r5   r‚  )rP   rQ   rR   r?   r   r   rG   rU   r3  ra  rÉ   r«   r   r   r¬   r   rM   rV   rW   s   @r3   rœ  rœ  I  s<  ø„ ô
ð Øð *.Ø.2Ø59Ø:>Ø:>Ø37Ø15Ø26Ø:>Ø!%ñW
à—<‘< $Ñ&ðW
ð Ÿ™ tÑ+ðW
ð !×+Ñ+¨dÑ2ð	W
ð
 !&× 0Ñ 0°4Ñ 7ðW
ð ˜e×/Ñ/Ñ0°4Ñ7ðW
ð ×)Ñ)¨DÑ0ðW
ð ×'Ñ'¨$Ñ.ðW
ð ×(Ñ(¨4Ñ/ðW
ð  %×0Ñ0°4Ñ7ðW
ð ˜$‘;ðW
ð Ð+Ñ,ðW
ð 
Ð4Ñ	4òW
ó ó ôW
r5   rœ  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚBartDecoderWrapperz½
    This wrapper class is a helper class to correctly load pretrained checkpoints when the causal language model is
    used in combination with the [`EncoderDecoderModel`] framework.
    c                 ód   •— t         ‰| �  |«       t        |«      | _        | j	                  «        y r]   )r>   r?   r5  rL  r%  ri  s     €r3   r?   zBartDecoderWrapper.__init__¹  s&   ø€ Ü‰Ñ˜Ô Ü" 6Ó*ˆŒØ�‰Õr5   c                 ó&   —  | j                   |i |¤ŽS r]   )rL  )r@   Úargsri   s      r3   rM   zBartDecoderWrapper.forward¾  s   € Øˆt�|‰|˜TÐ, VÑ,Ð,r5   )rP   rQ   rR   rS   r?   rM   rV   rW   s   @r3   r­  r­  ³  s   ø„ ñô
ö
-r5   r­  zu
    BART decoder with a language modeling head on top (linear layer with weights tied to the input embeddings).
    c                   ó\  ‡ — e Zd ZddiZˆ fd„Zd„ 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dz  de	j                  dz  de	j                  dz  dedz  dee	j                  z  dee   deez  fd„«       «       Zˆ xZS )ÚBartForCausalLMrd  z!model.decoder.embed_tokens.weightc                 óâ   •— d|_         d|_        t        ‰| �  |«       t	        |«      | _        t        j                  |j                  |j                  d¬«      | _
        | j                  «        y )NTFr„   )r~   r>  r>   r?   r­  râ   r   rˆ   rž  r  rh  r%  ri  s     €r3   r?   zBartForCausalLM.__init__Ì  sX   ø€ Ø ˆÔØ$)ˆÔ!Ü‰Ñ˜Ô Ü'¨Ó/ˆŒ
ä—y‘y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Õr5   c                 óB   — | j                   j                  j                  S r]   ©râ   rL  r  r  s    r3   rN  z$BartForCausalLM.get_input_embeddings×  s   € Ø�z‰z×!Ñ!×.Ñ.Ð.r5   c                 ó:   — || j                   j                  _        y r]   rµ  rP  s     r3   rQ  z$BartForCausalLM.set_input_embeddingsÚ  s   € Ø*/ˆ�
‰
×ÑÕ'r5   Nr(   rf   rÑ   rÒ   r�   r'  rv  rÓ   Úlogits_to_keepri   r�   c
                 ó  —  | j                   j                  d|||||||dœ|
¤Ž}|d   }t        |	t        «      rt	        |	 d«      n|	}| j                  |dd…|dd…f   «      }d}|�a|j                  |j                  «      }t        «       } ||j                  d| j                  j                  «      |j                  d«      «      }t        |||j                  |j                  |j                  |j                   ¬«      S )a@  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

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

        >>> tokenizer = AutoTokenizer.from_pretrained("facebook/bart-base")
        >>> model = BartForCausalLM.from_pretrained("facebook/bart-base")
        >>> assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
        >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
        >>> outputs = model(**inputs)

        >>> logits = outputs.logits
        >>> expected_shape = [1, inputs.input_ids.shape[-1], model.config.vocab_size]
        >>> list(logits.shape) == expected_shape
        True
        ```rX  r   Nr,   )ry  rz  r�   r�   r  r8  r  )râ   rL  r”   rT   Úslicerh  r*  rF   r   r“   r�   r  r   r�   r�   r  r8  )r@   r(   rf   rÑ   rÒ   r�   r'  rv  rÓ   r·  ri   r|  r�   Úslice_indicesrz  ry  r  s                    r3   rM   zBartForCausalLM.forwardÝ  s  € ðL >P¸T¿Z¹Z×=OÑ=Oð 	>
ØØ)Ø"7Ø#9Ø+Ø'Øñ	>
ð ñ	>
ˆð   ™
ˆä8BÀ>ÔSVÔ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÐØ—Y‘Y˜vŸ}™}Ó-ˆFÜ'Ó)ˆHÙ˜FŸK™K¨¨D¯K©K×,BÑ,BÓCÀVÇ[Á[ÐQSÃ_ÓUˆDä0ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø$×5Ñ5ô
ð 	
r5   )	NNNNNNNNr   )rP   rQ   rR   r`  r?   rN  rQ  r   r   rG   r3  rU   rÉ   r   r«   rT   r   r   r¬   r   rM   rV   rW   s   @r3   r²  r²  Â  s1  ø„ ð 	Ð=ðÐô	ò/ò0ð Øð .2Ø.2Ø:>Ø;?Ø(,Ø26Ø*.Ø!%Ø-.ñA
à×#Ñ# dÑ*ðA
ð Ÿ™ tÑ+ðA
ð  %×0Ñ0°4Ñ7ð	A
ð
 !&× 1Ñ 1°DÑ 8ðA
ð  ™ðA
ð ×(Ñ(¨4Ñ/ðA
ð × Ñ  4Ñ'ðA
ð ˜$‘;ðA
ð ˜eŸl™lÑ*ðA
ð Ð+Ñ,ðA
ð 
Ð2Ñ	2òA
ó ó ôA
r5   r²  )r²  rå   rœ  r†  rH  rá   r  r   )Nr’   )TrS   r  r  Úcollections.abcr   rG   r   Útorch.nnr   r   r   Ú r	   ræ   Úactivationsr
   Úcache_utilsr   r   r   Ú
generationr   Úmasking_utilsr   r   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r    r!   r"   Úutils.genericr#   Úutils.output_capturingr$   r%   Úconfiguration_bartr'   Ú
get_loggerrP   r†   rU   rT   r4   r„  r7   rY   ÚModulera   ry   r{   r®   rË   rÖ   rá   r   r  r  r5  rH  rå   r†  rœ  r­  r²  Ú__all__r  r5   r3   ú<module>rÎ     s¢  ðñ ã Û Ý $ã Ý ß AÑ Aå &Ý !ß CÑ CÝ )ß JÝ BÝ 9÷÷ ñ ÷ GÝ &÷÷ õ 8ß EÝ *ð 
ˆ×	Ñ	˜HÓ	%€ð %§,¡,ð ¸cð Ð[^ó ô ; R§\¡\ô ;ô6
=˜bŸl™lô 
=ð( !Øñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ñ(ó%ô8r)�B—I‘Iô r)ôj0Ð1ô 0ôfOÐ1ô Oôd˜RŸY™Yô ð0 ô˜/ó ó ðô:
Ð-ô 
ô
Ð-ô 
ôV
Ð%ô V
ôr|
Ð%ô |
ð~ ôq
Ð#ó q
ó ðq
ñh ðôô
`hÐ#6¸ó `hóð
`hñF ðôô|
Ð$7ó |
óð|
ð~ ôf
Ð2ó f
ó ðf
ôR-Ð,ô -ñ ðôô
Y
Ð)¨?ó Y
óð
Y
òx	�r5   