ó
    ‡Ž¡jÓO  ã                   óv  • S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJr  SS	KJr  SS
KJr  SSKJrJr  SSKJr  SSKJrJr  SSKJr  \R8                  " \5      rS\S\S\R@                  4S jr!S\R@                  S\R@                  4S jr"S\R@                  S\R@                  S\R@                  S\R@                  4S jr# " S S\RH                  5      r% " S S\RH                  5      r& " S S\5      r'\ " S  S!\5      5       r(\ " S" S#\(5      5       r)\" S$S%9 " S& S'\(\5      5       r*/ S(Qr+g))zPyTorch CodeGen model.é    N)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)ÚPreTrainedModel)Úauto_docstringÚloggingé   )ÚCodeGenConfigÚnum_posÚdimÚreturnc           	      ó†  • SS[         R                  " SUS[         R                  S9U-  -  -  n[         R                  " S[         R                  " U [         R                  S9R	                  5       U5      R	                  5       n[         R
                  " [         R                  " U5      [         R                  " U5      4SS9$ )	Ng      ð?i'  r   é   )Údtypezi , j -> i jr   ©r   )ÚtorchÚarangeÚint64ÚeinsumÚfloatÚcatÚsinÚcos)r   r   Úinv_freqÚsinusoid_inps       ÚºC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/models/codegen/modeling_codegen.pyÚcreate_sinusoidal_positionsr%   (   s…   € Ø�e¤§¢¨Q°°Q¼e¿k¹kÑ JÈSÑ PÑQÑR€HÜ—<’< ´·²¸WÌEÏKÉKÑ0X×0^Ñ0^Ó0`ÐbjÓk×qÑqÓs€LÜ�9Š9”e—i’i Ó-¬u¯yªy¸Ó/FÐGÈQÑOÐOó    Úxc                 óœ   • U S S 2S S 2S S 2S S S24   nU S S 2S S 2S S 2SS S24   n[         R                  " U* U4SS9n U R                  S5      $ )Nr   r   éÿÿÿÿr   éþÿÿÿ)r   ÚstackÚflatten)r'   Úx1Úx2s      r$   Úrotate_every_twor/   /   sS   € Ø	
Š1Ša’‘C�a�Cˆ<‰€BØ	
Š1Ša’�A�D�q�Dˆ=Ñ	€BÜ�Š�b�S˜"�I 2Ñ&€AØ�9‰9�R‹=Ðr&   Útensorr    r!   c                 ó¼   • [         R                  " US S 2S S 2S S S 24   SS5      n[         R                  " US S 2S S 2S S S 24   SS5      nX-  [        U 5      U-  -   $ )Nr   r   )r   Úrepeat_interleaver/   )r0   r    r!   s      r$   Úapply_rotary_pos_embr3   7   s\   € Ü
×
!Ò
! #¢aª¨D²! mÑ"4°a¸Ó
;€CÜ
×
!Ò
! #¢aª¨D²! mÑ"4°a¸Ó
;€CØ‰LÔ-¨fÓ5¸Ñ;Ñ<Ð<r&   c                   ót  ^ • \ rS rSrSU 4S jjrS rS r SS jr     SS\R                  S-  S\
S-  S	\R                  S-  S
\R                  S-  S\S-  S\S-  S\\R                  \\R                     4   \\R                  \\R                     \\R                  S4   4   -  S-  4S jjrSrU =r$ )ÚCodeGenAttentioné=   Nc                 óD  >• [         TU ]  5         UR                  U l        [        R
                  " UR                  5      U l        [        R
                  " UR                  5      U l	        X l
        Uc-  [        R                  SU R                  R                   S35        UR                  U l        UR"                  U l        U R                   U R"                  -  U l        U R$                  U R"                  -  U R                   :w  a&  ['        SU R                    SU R"                   S35      e[(        R*                  " U R$                  5      U l        [        R.                  " U R                   U R                   S-  SS9U l        [        R.                  " U R                   U R                   SS9U l        UR4                  U l        U R4                  =(       d    U R                   U l        [        R8                  " [;        U R                  U R6                  5      SS	9U l        g )
NzInstantiating z¹ without passing a `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.zEembed_dim must be divisible by num_attention_heads (got `embed_dim`: z and `num_attention_heads`: z).r   F)Úbias)Ú
persistent)ÚsuperÚ__init__Úmax_position_embeddingsÚmax_positionsr   ÚDropoutÚ
attn_pdropÚattn_dropoutÚresid_pdropÚresid_dropoutÚ	layer_idxÚloggerÚwarning_onceÚ	__class__Ú__name__Úhidden_sizeÚ	embed_dimÚnum_attention_headsÚhead_dimÚ
ValueErrorÚmathÚsqrtÚ
scale_attnÚLinearÚqkv_projÚout_projÚ
rotary_dimÚpos_embd_dimÚBufferr%   Úembed_positions)ÚselfÚconfigrC   rF   s      €r$   r;   ÚCodeGenAttention.__init__>   s¢  ø€ Ü‰ÑÔà#×;Ñ;ˆÔÜŸJšJ v×'8Ñ'8Ó9ˆÔÜŸZšZ¨×(:Ñ(:Ó;ˆÔØ"ŒØÑÜ×ÑØ  §¡×!8Ñ!8Ð 9ð :,ð ,ôð  ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ ØŸ™¨$×*BÑ*BÑBˆŒØ�=‰=˜4×3Ñ3Ñ3°t·~±~ÓEÜØWÐX\×XfÑXfÐWgð h+Ø+/×+CÑ+CÐ*DÀBðHóð ô Ÿ)š) D§M¡MÓ2ˆŒÜŸ	š	 $§.¡.°$·.±.À1Ñ2DÈ5ÑQˆŒäŸ	š	 $§.¡.°$·.±.ÀuÑMˆŒØ ×+Ñ+ˆŒØ ŸO™O×=¨t¯~©~ˆÔÜ!ŸyšyÜ'¨×(:Ñ(:¸D×<MÑ<MÓNÐ[`ñ 
ˆÕr&   c                 ó²   • UR                  UR                  S S X$-  U4-   5      nUR                  UR                  S S S-   UR                  SS  -   5      nU$ )Nr)   r*   )r)   )ÚreshapeÚshape)rW   r'   Ún_headÚdim_headÚmp_numÚreshapeds         r$   Ú_split_headsÚCodeGenAttention._split_heads^   s[   € Ø—9‘9˜QŸW™W S b˜\¨VÑ-=¸xÐ,HÑHÓIˆØ×#Ñ# A§G¡G¨C¨R L°5Ñ$8¸8¿>¹>È"È#Ð;NÑ$NÓOˆØˆr&   c                 óŠ  • [        UR                  5      S:X  a$  UR                  SSSSS5      R                  5       nO][        UR                  5      S:X  a#  UR                  SSSS5      R                  5       nO![	        S[        UR                  5       35      eUR                  5       SS	 X#-  4-   nUR                  U5      $ )
z=
Merges attn_head_size dim and num_attn_heads dim into n_ctx
é   r   r   r   r   é   z3Input tensor rank should be one of [4, 5], but is: Nr*   )Úlenr\   ÚpermuteÚ
contiguousrL   ÚsizeÚview)rW   r0   rJ   Úattn_head_sizeÚ	new_shapes        r$   Ú_merge_headsÚCodeGenAttention._merge_headsc   s°   € ô ˆv�|‰|Ó Ó!Ø—^‘^ A q¨!¨Q°Ó2×=Ñ=Ó?‰FÜ�—‘Ó !Ó#Ø—^‘^ A q¨!¨QÓ/×:Ñ:Ó<‰FäÐRÔSVÐW]×WcÑWcÓSdÐReÐfÓgÐgØ—K‘K“M # 2Ð&Ð*=Ñ*NÐ)PÑPˆ	Ø�{‰{˜9Ó%Ð%r&   c                 ó²  • UR                  [        R                  5      nUR                  [        R                  5      n[        R                  " XR	                  SS5      5      nUb  XT-   nXPR
                  -  n[        R                  " SS9" U5      nUR                  UR                  5      nU R                  U5      n[        R                  " XS5      nXe4$ )Nr)   r*   r   )
Útor   Úfloat32ÚmatmulÚ	transposerO   r   ÚSoftmaxr   r@   )rW   ÚqueryÚkeyÚvalueÚattention_maskÚattn_weightsÚattn_outputs          r$   Ú_attnÚCodeGenAttention._attnp   s§   € ð —‘œŸ™Ó'ˆØ�f‰f”U—]‘]Ó#ˆä—|’| E¯=©=¸¸RÓ+@ÓAˆàÑ%Ø'Ñ8ˆLà#§o¡oÑ5ˆÜ—z’z bÒ)¨,Ó7ˆØ#—‘ u§{¡{Ó3ˆØ×(Ñ(¨Ó6ˆä—l’l <Ó7ˆàÐ(Ð(r&   Úhidden_statesÚ
layer_pastrx   Úposition_idsÚ	use_cacheÚoutput_attentionsr   .c                 ó  • U R                  U5      nSnUR                  UR                  S S US4-   5      n	U R                  U R                  -  U-  n
[
        R                  " XšSS9u  p¼nU R                  X°R                  U R                  US9nU R                  XÐR                  U R                  US9nU R                  XÀR                  U R                  US9nUR                  SSSS5      nU R                  nUR                  UR                  :w  a!  UR                  UR                  5      nXàl	        Xä   n[
        R                  " XÿR                  S   S-  SS9u  nnU R                  bµ  US S 2S S 2S S 2S U R                  24   nUS S 2S S 2S S 2U R                  S 24   nUS S 2S S 2S S 2S U R                  24   nUS S 2S S 2S S 2U R                  S 24   n[        UUU5      n[        UUU5      n[
        R                  " UU/SS9n[
        R                  " UU/SS9nO[        UUU5      n[        UUU5      nUR                  SSSS5      nUR                  SSSS5      nUb7  UR                  UR                  UR                   5      XÀR"                  5      u  pÜU R%                  X½XÃ5      u  nnU R'                  UU R                  U R                  5      nU R)                  U5      nU R+                  U5      nUU4$ )	Nre   r)   r   )r_   r   r   r   r   )rQ   r[   r\   rK   rJ   r   Úsplitra   rg   rV   Údevicerp   rS   r3   r   Úupdater   rC   r{   rm   rR   rB   )rW   r}   r~   rx   r   r€   r�   Úqkvr_   Ú	qkv_splitÚ	local_dimru   rw   rv   rV   Úsincosr    r!   Úk_rotÚk_passÚq_rotÚq_passrz   ry   s                           r$   ÚforwardÚCodeGenAttention.forward‰   sÒ  € ð �m‰m˜MÓ*ˆàˆØ—K‘K §	¡	¨#¨2 °&¸"°Ñ =Ó>ˆ	à—M‘M D×$<Ñ$<Ñ<ÀÑFˆ	Ü!ŸKšK¨	À"ÑEÑˆ�cØ×!Ñ! %×)AÑ)AÀ4Ç=Á=ÐY_Ð!Ð`ˆØ×Ñ ×%=Ñ%=¸t¿}¹}ÐU[ÐÐ\ˆà×!Ñ! %×)AÑ)AÀ4Ç=Á=ÐY_Ð!Ð`ˆØ—‘˜a  A qÓ)ˆà×.Ñ.ˆØ×!Ñ! \×%8Ñ%8Ó8Ø-×0Ñ0°×1DÑ1DÓEˆOØ#2Ô à Ñ.ˆÜ—;’;˜v§|¡|°BÑ'7¸1Ñ'<À"ÑE‰ˆˆSà�?‰?Ñ&Øšš1šaÐ!2 4§?¡?Ð!2Ð2Ñ3ˆEØššAšq $§/¡/Ñ"3Ð3Ñ4ˆFàš!šQ¢Ð#4 T§_¡_Ð#4Ð4Ñ5ˆEØš1ša¢ D§O¡OÑ$5Ð5Ñ6ˆFä(¨°°SÓ9ˆEÜ(¨°°SÓ9ˆEä—)’)˜U F˜O°Ñ4ˆCÜ—I’I˜u f˜o°2Ñ6‰Eä& s¨C°Ó5ˆCÜ(¨°°SÓ9ˆEà�k‰k˜!˜Q  1Ó%ˆØ—‘˜a  A qÓ)ˆð Ñ!Ø#×*Ñ*¨3¯6©6°-×2EÑ2EÓ+FÈÏ~É~Ó^‰JˆCð %)§J¡J¨u¸5Ó$QÑ!ˆ�\à×'Ñ'¨°T×5MÑ5MÈtÏ}É}Ó]ˆØ—m‘m KÓ0ˆØ×(Ñ(¨Ó5ˆØ˜LÐ(Ð(r&   )r@   rI   rV   rK   rC   r=   rJ   rR   rT   rQ   rB   rS   rO   ©N©NNNFF)rG   Ú
__module__Ú__qualname__Ú__firstlineno__r;   ra   rm   r{   r   ÚFloatTensorr   Ú
LongTensorÚboolÚtupleÚTensorrŽ   Ú__static_attributes__Ú__classcell__©rF   s   @r$   r5   r5   =   s  ø† ÷
ò@ò
&ð$ ô)ð8 $(Ø37Ø04Ø!&Ø).ñ@)à×(Ñ(¨4Ñ/ð@)ð ˜D‘Lð@)ð ×)Ñ)¨DÑ0ð	@)ð
 ×&Ñ&¨Ñ-ð@)ð ˜$‘;ð@)ð   $™;ð@)ð 	ˆe�l‰l˜E %§,¡,Ñ/Ð/Ñ0Ø
�—‘˜e E§L¡LÑ1°5¸¿¹ÀsÐ9JÑ3KÐKÑ
Lñ	Mà
ñ	÷@)ó @)r&   r5   c                   óh   ^ • \ rS rSrU 4S jrS\R                  S-  S\R                  4S jrSrU =r	$ )Ú
CodeGenMLPéÍ   c                 ó   >• [         TU ]  5         UR                  n[        R                  " X15      U l        [        R                  " X5      U l        [        UR                     U l	        [        R                  " UR                  5      U l        g r�   )r:   r;   Ún_embdr   rP   Úfc_inÚfc_outr   Úactivation_functionÚactr>   rA   Údropout)rW   Úintermediate_sizerX   rI   rF   s       €r$   r;   ÚCodeGenMLP.__init__Î   s`   ø€ Ü‰ÑÔØ—M‘Mˆ	ä—Y’Y˜yÓ<ˆŒ
Ü—i’iÐ 1Ó=ˆŒä˜&×4Ñ4Ñ5ˆŒÜ—z’z &×"4Ñ"4Ó5ˆ�r&   r}   Nr   c                 óŽ   • U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU$ r�   )r¢   r¥   r£   r¦   )rW   r}   s     r$   rŽ   ÚCodeGenMLP.forwardØ   s@   € ØŸ
™
 =Ó1ˆØŸ™ Ó/ˆØŸ™ MÓ2ˆØŸ™ ]Ó3ˆØÐr&   )r¥   r¦   r¢   r£   )
rG   r’   r“   r”   r;   r   r•   rŽ   rš   r›   rœ   s   @r$   rž   rž   Í   s1   ø† õ6ð U×%6Ñ%6¸Ñ%=ð À%×BSÑBS÷ ò r&   rž   c                   ó"  ^ • \ rS rSrSU 4S jjr     SS\R                  S-  S\S-  S\R                  S-  S\R                  S-  S\	S-  S	\	S-  S
\
\R                     \
\R                  \
\R                  S4   4   -  S-  4S jjrSrU =r$ )ÚCodeGenBlockéá   Nc                 ó  >• [         TU ]  5         UR                  b  UR                  OSUR                  -  n[        R
                  " UR                  UR                  S9U l        [        X5      U l	        [        X15      U l        g )Nre   ©Úeps)r:   r;   Ún_innerr¡   r   Ú	LayerNormÚlayer_norm_epsilonÚln_1r5   Úattnrž   Úmlp)rW   rX   rC   Ú	inner_dimrF   s       €r$   r;   ÚCodeGenBlock.__init__ã   s_   ø€ Ü‰ÑÔØ&,§n¡nÑ&@�F—N’NÀaÈ&Ï-É-ÑFWˆ	Ü—L’L §¡°F×4MÑ4MÑNˆŒ	Ü$ VÓ7ˆŒ	Ü˜iÓ0ˆ�r&   r}   r~   rx   r   r€   r�   r   .c           	      óŠ   • UnU R                  U5      nU R                  UUUUUUS9u  pšU R                  U5      nX›-   U-   nX4$ )N)r}   r~   rx   r   r€   r�   )r´   rµ   r¶   )rW   r}   r~   rx   r   r€   r�   ÚkwargsÚresidualÚattn_outputsry   Úfeed_forward_hidden_statess               r$   rŽ   ÚCodeGenBlock.forwardê   sf   € ð !ˆØŸ	™	 -Ó0ˆØ%)§Y¡YØ'Ø!Ø)Ø%ØØ/ð &/ð &
Ñ"ˆð &*§X¡X¨mÓ%<Ð"Ø$ÑAÀHÑLˆàÐ*Ð*r&   )rµ   r´   r¶   r�   r‘   )rG   r’   r“   r”   r;   r   r•   r   r–   r—   r˜   r™   rŽ   rš   r›   rœ   s   @r$   r¬   r¬   á   sÆ   ø† ÷1ð $(Ø37Ø04Ø!&Ø).ñ+à×(Ñ(¨4Ñ/ð+ð ˜D‘Lð+ð ×)Ñ)¨DÑ0ð	+ð
 ×&Ñ&¨Ñ-ð+ð ˜$‘;ð+ð   $™;ð+ð 
ˆu�|‰|Ñ	˜u U§\¡\°5¸×9JÑ9JÈCÐ9OÑ3PÐ%PÑQÑ	QÐTXÑ	X÷+ó +r&   r¬   c                   óL   ^ • \ rS rSr% \\S'   SrSrS/rS/r	Sr
U 4S jrSrU =r$ )	ÚCodeGenPreTrainedModeli  rX   ÚtransformerTr¬   Úpast_key_valuesc                 óÎ   >• [         TU ]  U5        [        U[        5      (       a@  [        R
                  " UR                  [        UR                  UR                  5      5        g g r�   )
r:   Ú_init_weightsÚ
isinstancer5   ÚinitÚcopy_rV   r%   r=   rT   )rW   ÚmodulerF   s     €r$   rÄ   Ú$CodeGenPreTrainedModel._init_weights  sL   ø€ Ü‰Ñ˜fÔ%Ü�fÔ.×/Ñ/Ü�JŠJ�v×-Ñ-Ô/JÈ6×K_ÑK_Ðag×atÑatÓ/uÕvð 0r&   © )rG   r’   r“   r”   r   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_can_compile_fullgraphrÄ   rš   r›   rœ   s   @r$   rÀ   rÀ     s9   ø‡ àÓØ%ÐØ&*Ð#Ø'Ð(ÐØ#4Ð"5ÐØ!Ð÷wó wr&   rÀ   c                   ó2  ^ • \ rS rSrU 4S jrS rS r\          SS\R                  S-  S\
S-  S\R                  S-  S	\R                  S-  S
\R                  S-  S\R                  S-  S\S-  S\S-  S\S-  S\S-  S\\-  4S jj5       rSrU =r$ )ÚCodeGenModeli  c           
      ó–  >• [         TU ]  U5        UR                  U l        UR                  U l        [
        R                  " UR                  U R                  5      U l        [
        R                  " UR                  5      U l
        [
        R                  " [        UR                  5       Vs/ s H  n[        XS9PM     sn5      U l        [
        R                   " U R                  UR"                  S9U l        ['        UR(                  UR*                  UR,                  -  5      U l        SU l        U R1                  5         g s  snf )N)rC   r¯   F)r:   r;   r¡   rI   Ú
vocab_sizer   Ú	EmbeddingÚwter>   Ú
embd_pdropÚdropÚ
ModuleListÚrangeÚn_layerr¬   Úhr²   r³   Úln_fÚminrS   Ún_ctxrJ   Úgradient_checkpointingÚ	post_init)rW   rX   ÚirF   s      €r$   r;   ÚCodeGenModel.__init__  så   ø€ Ü‰Ñ˜Ô àŸ™ˆŒØ ×+Ñ+ˆŒÜ—<’< × 1Ñ 1°4·>±>ÓBˆŒÜ—J’J˜v×0Ñ0Ó1ˆŒ	Ü—’Ì5ÐQW×Q_ÑQ_ÔK`ÓaÒK`Àa¤¨VÔ AÑK`ÑaÓbˆŒÜ—L’L §¡°V×5NÑ5NÑOˆŒ	Ü˜f×/Ñ/°·±À×A[ÑA[Ñ1[Ó\ˆŒà&+ˆÔ#ð 	�‰Õùò  bs   Â/Ec                 ó   • U R                   $ r�   ©rÖ   )rW   s    r$   Úget_input_embeddingsÚ!CodeGenModel.get_input_embeddings%  s   € Ø�x‰xˆr&   c                 ó   • Xl         g r�   rå   )rW   Únew_embeddingss     r$   Úset_input_embeddingsÚ!CodeGenModel.set_input_embeddings(  s   € Ø!�r&   NÚ	input_idsrÂ   rx   Útoken_type_idsr   Úinputs_embedsr€   r�   Úoutput_hidden_statesÚreturn_dictr   c           
      ó  • Ub  UOU R                   R                  nU	b  U	OU R                   R                  n	Ub  UOU R                   R                  nU
b  U
OU R                   R                  n
USL USL-  (       a  [        S5      eU R                  (       a/  U R                  (       a  U(       a  [        R                  S5        SnUc  U R                  U5      nU(       a  Uc  [        U R                   S9nUR                  S   nUcU  Ub  UR                  5       OSn[        R                  " UR                  S   UR                   S9U-   nUR#                  S5      n[%        U R                   UUUUS	9nUnUb(  UR'                  S
U5      nU R                  U5      nUU-   nU R)                  U5      nS
XÏR+                  S
5      4nU(       a  SOSnU	(       a  SOSn[-        U R.                  5       H5  u  nnU	(       a  UU4-   nU" UUUUUUS9nUS   nU(       d  M,  UUS   4-   nM7     U R1                  U5      nUR'                  U5      nU	(       a  UU4-   nU
(       d  [3        S XòUU4 5       5      $ [5        UUUUS9$ )au  
inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_dim)`, *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.
Nz:You must specify exactly one of input_ids or inputs_embedszZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...F)rX   r   r   )r„   )rX   rî   rx   rÂ   r   r)   rÊ   )r~   rx   r   r€   r�   c              3   ó.   #   • U  H  oc  M  Uv •  M     g 7fr�   rÊ   )Ú.0Úvs     r$   Ú	<genexpr>Ú'CodeGenModel.forward.<locals>.<genexpr>Š  s   é € ð Úc�a—‘Òcùs   ‚Œ	)Úlast_hidden_staterÂ   r}   Ú
attentions)rX   r�   rï   r€   rð   rL   rà   ÚtrainingrD   rE   rÖ   r   r\   Úget_seq_lengthr   r   r„   Ú	unsqueezer
   rj   rØ   ri   Ú	enumeraterÜ   rÝ   r˜   r   )rW   rì   rÂ   rx   rí   r   rî   r€   r�   rï   rð   rº   Ú
seq_lengthÚpast_seen_tokensÚcausal_maskr}   Útoken_type_embedsÚoutput_shapeÚall_self_attentionsÚall_hidden_statesrâ   ÚblockÚoutputss                          r$   rŽ   ÚCodeGenModel.forward+  s£  € ð* 2CÑ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ñ$DÑ È$Ï+É+×JjÑJjð 	ð "+Ñ!6‘I¸D¿K¹K×<QÑ<Qˆ	Ø%0Ñ%<‘kÀ$Ç+Á+×BYÑBYˆà˜Ð -°tÐ";×<ÜÐYÓZÐZà×&×&¨4¯=¯=ÞÜ×#Ñ#Øpôð "�	àÑ Ø ŸH™H YÓ/ˆMæ˜Ñ0Ü*°$·+±+Ñ>ˆOà"×(Ñ(¨Ñ+ˆ
ØÑØCRÑC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÑ(>À}×G[ÑG[Ñ\Ð_oÑoˆLØ'×1Ñ1°!Ó4ˆLä(Ø—;‘;Ø'Ø)Ø+Ø%ñ
ˆð &ˆàÑ%Ø+×0Ñ0°°ZÓ@ˆNØ $§¡¨Ó 8ÐØ)Ð,=Ñ=ˆMàŸ	™	 -Ó0ˆØ˜J×(:Ñ(:¸2Ó(>Ð?ˆæ$5™b¸4ÐÞ"6™B¸DÐÜ! $§&¡&Ö)‰HˆAˆuÞ#Ø$5¸Ð8HÑ$HÐ!áØØ*Ø*Ø)Ø#Ø"3ñˆGð $ A™JˆMß Ð Ø&9¸WÀQ¹Z¸MÑ&IÒ#ñ *ð" Ÿ	™	 -Ó0ˆà%×*Ñ*¨<Ó8ˆæØ 1°]Ð4DÑ DÐæÜñ Ø)Ð<MÐObÑcóó ð ô 'Ø+Ø+Ø+Ø*ñ	
ð 	
r&   )rØ   rI   rà   rÜ   rÝ   rS   rÔ   rÖ   )
NNNNNNNNNN)rG   r’   r“   r”   r;   ræ   rê   r   r   r–   r   r•   r—   r˜   r   rŽ   rš   r›   rœ   s   @r$   rÒ   rÒ     s  ø† õò ò"ð ð .2Ø(,Ø37Ø26Ø04Ø26Ø!%Ø)-Ø,0Ø#'ñg
à×#Ñ# dÑ*ðg
ð  ™ðg
ð ×)Ñ)¨DÑ0ð	g
ð
 ×(Ñ(¨4Ñ/ðg
ð ×&Ñ&¨Ñ-ðg
ð ×(Ñ(¨4Ñ/ðg
ð ˜$‘;ðg
ð   $™;ðg
ð # T™kðg
ð ˜D‘[ðg
ð 
Ð(Ñ	(ôg
ó ög
r&   rÒ   zM
    The CodeGen Model transformer with a language modeling head on top.
    )Úcustom_introc                   ón  ^ • \ rS rSrSS0rU 4S jr\            SS\R                  S-  S\	S-  S\R                  S-  S	\R                  S-  S
\R                  S-  S\R                  S-  S\R                  S-  S\S-  S\S-  S\S-  S\S-  S\\R                  -  S\\-  4S jj5       rSrU =r$ )ÚCodeGenForCausalLMi–  zlm_head.weightztransformer.wte.weightc                 óÄ   >• [         TU ]  U5        [        U5      U l        [        R
                  " UR                  UR                  5      U l        U R                  5         g r�   )
r:   r;   rÒ   rÁ   r   rP   r¡   rÔ   Úlm_headrá   )rW   rX   rF   s     €r$   r;   ÚCodeGenForCausalLM.__init__ž  sE   ø€ Ü‰Ñ˜Ô Ü'¨Ó/ˆÔÜ—y’y §¡°×0AÑ0AÓBˆŒð 	�‰Õr&   Nrì   rÂ   rx   rí   r   rî   Úlabelsr€   r�   rï   rð   Úlogits_to_keepr   c                 óØ  • Ub  UOU R                   R                  nU R                  UUUUUUUU	U
US9
nUS   n[        U[        5      (       a  [        U* S5      OUnU R                  USS2USS24   5      nSnUb)  U R                  " SUXpR                   R                  S.UD6nU(       d  U4USS -   nUb  U4U-   $ U$ [        UUUR                  UR                  UR                  S9$ )aÿ  
inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_dim)`, *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, sequence_length)`, *optional*):
    Labels for language modeling. Note that the labels **are shifted** inside the model, i.e. you can set
    `labels = input_ids` Indices are selected in `[-100, 0, ..., config.vocab_size]` All labels set to `-100`
    are ignored (masked), the loss is only computed for labels in `[0, ..., config.vocab_size]`
N)	rÂ   rx   rí   r   rî   r€   r�   rï   rð   r   )Úlogitsr  rÔ   r   )Úlossr  rÂ   r}   rø   rÊ   )rX   rð   rÁ   rÅ   ÚintÚslicer  Úloss_functionrÔ   r   rÂ   r}   rø   )rW   rì   rÂ   rx   rí   r   rî   r  r€   r�   rï   rð   r  rº   Útransformer_outputsr}   Úslice_indicesr  r  Úoutputs                       r$   rŽ   ÚCodeGenForCausalLM.forward¦  s  € ð6 &1Ñ%<‘kÀ$Ç+Á+×BYÑBYˆà"×.Ñ.ØØ+Ø)Ø)Ø%Ø'ØØ/Ø!5Ø#ð /ð 
Ðð ,¨AÑ.ˆä8BÀ>ÔSV×8WÑ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÑØ×%Ò%Ðp¨V¸FÏ{É{×OeÑOeÑpÐioÑpˆDæØ�YÐ!4°Q°RÐ!8Ñ8ˆFØ)-Ñ)9�T�G˜fÑ$ÐE¸vÐEä%ØØØ/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ñ
ð 	
r&   )r  rÁ   )NNNNNNNNNNNr   )rG   r’   r“   r”   Ú_tied_weights_keysr;   r   r   r–   r   r•   r—   r  r™   r˜   r   rŽ   rš   r›   rœ   s   @r$   r	  r	  –  s5  ø† ð +Ð,DÐEÐõð ð .2Ø(,Ø37Ø26Ø04Ø26Ø*.Ø!%Ø)-Ø,0Ø#'Ø-.ñ<
à×#Ñ# dÑ*ð<
ð  ™ð<
ð ×)Ñ)¨DÑ0ð	<
ð
 ×(Ñ(¨4Ñ/ð<
ð ×&Ñ&¨Ñ-ð<
ð ×(Ñ(¨4Ñ/ð<
ð × Ñ  4Ñ'ð<
ð ˜$‘;ð<
ð   $™;ð<
ð # T™kð<
ð ˜D‘[ð<
ð ˜eŸl™lÑ*ð<
ð 
Ð'Ñ	'ô<
ó ö<
r&   r	  )r	  rÒ   rÀ   ),Ú__doc__rM   r   r   Ú r   rÆ   Úactivationsr   Úcache_utilsr   r   Ú
generationr	   Úmasking_utilsr
   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   Úutilsr   r   Úconfiguration_codegenr   Ú
get_loggerrG   rD   r  r™   r%   r/   r3   ÚModuler5   rž   r¬   rÀ   rÒ   r	  Ú__all__rÊ   r&   r$   Ú<module>r(     s[  ðñ ã ã Ý å &Ý !ß .Ý )Ý /Ý 9ß OÝ -÷õ 1ð 
×	Ò	˜HÓ	%€ðP¨ð P°3ð P¸5¿<¹<ô Pð˜Ÿ™ð ¨¯©ô ð= §¡ð =°E·L±Lð =ÀuÇ|Á|ð =ÐX]×XdÑXdô =ôL)�r—y‘yô L)ô`�—‘ô ô( +Ð-ô  +ðF ôw˜_ó wó ðwð ô
Ð)ó 
ó ð
ñD ðñô
H
Ð/°ó H
óð
H
òV K�r&   