ó
    Eñiî€  ã                   ó’  • 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	J
r
  S SKrS SK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JrJr  S
SKJr  S
SKJrJr  / SQr\ " S S5      5       r S\\!   S\!4S jr"S\RF                  S\!S\!S\$\RF                  \!4   4S jr%S\RF                  S\!S\!S\!S\RF                  4
S jr&\RN                  RQ                  S5        \RN                  RQ                  S5         " S S\RR                  5      r*S\RF                  S\!S\RF                  4S  jr+S!\RF                  S"\RF                  S#\$\!\!\!4   S$\$\!\!\!4   S%\RF                  S&\RF                  S'\RF                  S\RF                  4S( jr,S\RF                  S)\RF                  S*\-4S+ jr.\RN                  RQ                  S,5        \RN                  RQ                  S-5         " S. S/\RR                  5      r/ " S0 S1\RR                  5      r0 " S2 S3\RR                  5      r1 " S4 S5\RR                  5      r2S6\3\    S7\4S8\
\   S9\-S:\S\24S; jr5 " S< S=\5      r6 " S> S?\5      r7\" 5       \" S@\6Rp                  4SA9SSBSC.S8\
\6   S9\-S:\S\24SD jj5       5       r9\" 5       \" S@\7Rp                  4SA9SSBSC.S8\
\7   S9\-S:\S\24SE jj5       5       r:g)Fé    N)ÚSequence)Ú	dataclass)Úpartial)ÚAnyÚCallableÚOptionalé   )ÚMLPÚStochasticDepth)ÚVideoClassification)Ú_log_api_usage_onceé   )Úregister_modelÚWeightsÚWeightsEnum)Ú_KINETICS400_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)ÚMViTÚMViT_V1_B_WeightsÚ	mvit_v1_bÚMViT_V2_S_WeightsÚ	mvit_v2_sc                   ót   • \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   \\   \S'   \\   \S'   \\   \S'   S	rg
)ÚMSBlockConfigé   Ú	num_headsÚinput_channelsÚoutput_channelsÚkernel_qÚ	kernel_kvÚstride_qÚ	stride_kv© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚ__annotations__ÚlistÚ__static_attributes__r$   ó    ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/models/video/mvit.pyr   r      s;   ‡ àƒNØÓØÓØ�3‰iÓØ�C‰yÓØ�3‰iÓØ�C‰yÖr-   r   ÚsÚreturnc                 ó$   • SnU  H  nX-  nM	     U$ ©Né   r$   )r/   ÚproductÚvs      r.   Ú_prodr6   '   s   € Ø€GÛˆØ‰Šñ à€Nr-   ÚxÚ
target_dimÚ
expand_dimc                 óš   • U R                  5       nX1S-
  :X  a  U R                  U5      n X4$ X1:w  a  [        SU R                   35      eX4$ )Nr3   zUnsupported input dimension )ÚdimÚ	unsqueezeÚ
ValueErrorÚshape©r7   r8   r9   Ú
tensor_dims       r.   Ú
_unsqueezerA   .   sV   € Ø—‘“€JØ !‘^Ó#Ø�K‰K˜
Ó#ˆð ˆ=Ðð 
Ó	!ÜÐ7¸¿¹°yÐAÓBÐBØˆ=Ðr-   r@   c                 ó8   • X1S-
  :X  a  U R                  U5      n U $ r2   )Úsqueezer?   s       r.   Ú_squeezerD   7   s   € Ø !‘^Ó#Ø�I‰I�jÓ!ˆØ€Hr-   rA   rD   c                   óð   ^ • \ rS rSr  SS\R
                  S\\R
                     S\\R
                     S\SS4
U 4S jjjrS	\	R                  S
\\\\4   S\\	R                  \\\\4   4   4S jrSrU =r$ )ÚPooléA   NÚpoolÚnormÚ
activationÚnorm_before_poolr0   c                 óÐ   >• [         TU ]  5         Xl        / nUb  UR                  U5        Ub  UR                  U5        U(       a  [        R
                  " U6 OS U l        X@l        g )N)ÚsuperÚ__init__rH   ÚappendÚnnÚ
SequentialÚnorm_actrK   )ÚselfrH   rI   rJ   rK   ÚlayersÚ	__class__s         €r.   rN   ÚPool.__init__B   sX   ø€ ô 	‰ÑÔØŒ	ØˆØÑØ�M‰M˜$ÔØÑ!Ø�M‰M˜*Ô%Þ28œŸš vÑ.¸dˆŒØ 0Õr-   r7   Úthwc                 ó~  • [        USS5      u  p[        R                  " USSS9u  pAUR                  SS5      nUR                  S S u  pVnUR                  XV-  U4U-   5      R                  5       nU R                  (       a  U R                  b  U R                  U5      nU R                  U5      nUR                  SS  u  p‰n
UR                  XVUS5      R                  SS5      n[        R                  " XA4SS9nU R                  (       d  U R                  b  U R                  U5      n[        USSU5      nXXš44$ )	Né   r3   )r3   r   )Úindicesr;   r	   éÿÿÿÿ©r;   )rA   ÚtorchÚtensor_splitÚ	transposer>   ÚreshapeÚ
contiguousrK   rR   rH   ÚcatrD   )rS   r7   rW   r@   Úclass_tokenÚBÚNÚCÚTÚHÚWs              r.   ÚforwardÚPool.forwardS   s!  € Ü" 1 a¨Ó+‰ˆô ×+Ò+¨A°tÀÑC‰ˆØ�K‰K˜˜1ÓˆØ—'‘'˜"˜1�+‰ˆˆaØ�I‰I�q‘u˜a�j 3Ñ&Ó'×2Ñ2Ó4ˆð × ×  T§]¡]Ñ%>Ø—‘˜aÓ ˆAð �I‰I�a‹LˆØ—'‘'˜!˜"�+‰ˆˆaØ�I‰I�a˜A˜rÓ"×,Ñ,¨Q°Ó2ˆÜ�IŠI�{Ð&¨AÑ.ˆà×$×$¨¯©Ñ)BØ—‘˜aÓ ˆAä�Q˜˜1˜jÓ)ˆØ�a�)ˆ|Ðr-   )rR   rK   rH   )NF)r%   r&   r'   r(   rP   ÚModuler   ÚboolrN   r]   ÚTensorÚtupler)   rj   r,   Ú__classcell__©rU   s   @r.   rF   rF   A   s§   ø† ð
 +/Ø!&ñ1à�i‰ið1ð �r—y‘yÑ!ð1ð ˜RŸY™YÑ'ð	1ð
 ð1ð 
÷1ð 1ð"˜Ÿ™ð ¨E°#°s¸C°-Ñ,@ð ÀUÈ5Ï<É<ÐY^Ð_bÐdgÐilÐ_lÑYmÐKmÑEn÷ ò r-   rF   Ú	embeddingÚdc                 óæ   • U R                   S   U:X  a  U $ [        R                  R                  U R	                  SS5      R                  S5      USS9R                  S5      R	                  SS5      $ )Nr   r3   Úlinear)ÚsizeÚmode)r>   rP   Ú
functionalÚinterpolateÚpermuter<   rC   )rr   rs   s     r.   Ú_interpolater{   m   sn   € Ø‡��qÑ˜QÓØÐô 	�‰×!Ñ!Ø×Ñ˜a Ó#×-Ñ-¨aÓ0ØØð 	"ð 	
÷
 
‰�‹ß	‰��A‹ðr-   ÚattnÚqÚq_thwÚk_thwÚ	rel_pos_hÚ	rel_pos_wÚ	rel_pos_tc                 ó¢  • Uu  pxn	Uu  p«n[        S[        X‹5      -  S-
  5      n[        S[        Xœ5      -  S-
  5      n[        S[        Xz5      -  S-
  5      n[        X¸-  S5      n[        X‹-  S5      n[        R                  " U5      S S 2S 4   U-  [        R                  " U5      S S S 24   SU-
  -   U-  -
  n[        XÉ-  S5      n[        Xœ-  S5      n[        R                  " U	5      S S 2S 4   U-  [        R                  " U5      S S S 24   SU-
  -   U-  -
  n[        X§-  S5      n[        Xz-  S5      n[        R                  " U5      S S 2S 4   U-  [        R                  " U
5      S S S 24   SU
-
  -   U-  -
  n[	        XM5      n[	        X^5      n[	        Xo5      nUUR                  5          nUUR                  5          nUUR                  5          nUR                  u  nnnnUS S 2S S 2SS 24   R                  UUXxU	U5      n [        R                  " SU U5      n![        R                  " SU U5      n"U R                  SSSSSS	5      R                  UUU-  U-  U	-  U5      n [        R                  " U UR                  SS5      5      R                  SS5      n#U#R                  UUX‰Xz5      R                  SSSSSS	5      n#U!S S 2S S 2S S 2S S 2S S 2S S S 2S 4   U"S S 2S S 2S S 2S S 2S S 2S S S S 24   -   U#S S 2S S 2S S 2S S 2S S 2S S 2S S 4   -   R                  UUXx-  U	-  X«-  U-  5      n$U S S 2S S 2SS 2SS 24==   U$-  ss'   U $ )
Nr   r3   ç      ð?zbythwc,hkc->bythwkzbythwc,wkc->bythwkr   r	   rY   é   )r)   Úmaxr]   Úaranger{   Úlongr>   r`   Úeinsumrz   Úmatmulr_   Úview)%r|   r}   r~   r   r€   r�   r‚   Úq_tÚq_hÚq_wÚk_tÚk_hÚk_wÚdhÚdwÚdtÚ	q_h_ratioÚ	k_h_ratioÚdist_hÚ	q_w_ratioÚ	k_w_ratioÚdist_wÚ	q_t_ratioÚ	k_t_ratioÚdist_tÚRhÚRwÚRtrd   Ún_headÚ_r;   Úr_qÚrel_h_qÚrel_w_qÚrel_q_tÚrel_poss%                                        r.   Ú_add_rel_posr¨   |   sS  € ð �M€CˆcØ�M€CˆcÜ	ˆQ”�S“Ñ Ñ"Ó	#€BÜ	ˆQ”�S“Ñ Ñ"Ó	#€BÜ	ˆQ”�S“Ñ Ñ"Ó	#€Bô �C‘I˜sÓ#€IÜ�C‘I˜sÓ#€IÜ�\Š\˜#Óšq $˜wÑ'¨)Ñ3´u·|²|ÀCÓ7HÈÊqÈÑ7QÐUXÐ[^ÑU^Ñ7_ÐclÑ6lÑl€FÜ�C‘I˜sÓ#€IÜ�C‘I˜sÓ#€IÜ�\Š\˜#Óšq $˜wÑ'¨)Ñ3´u·|²|ÀCÓ7HÈÊqÈÑ7QÐUXÐ[^ÑU^Ñ7_ÐclÑ6lÑl€FÜ�C‘I˜sÓ#€IÜ�C‘I˜sÓ#€IÜ�\Š\˜#Óšq $˜wÑ'¨)Ñ3´u·|²|ÀCÓ7HÈÊqÈÑ7QÐUXÐ[^ÑU^Ñ7_ÐclÑ6lÑl€Fô ˜YÓ+€IÜ˜YÓ+€IÜ˜YÓ+€IØ	�6—;‘;“=Ñ	!€BØ	�6—;‘;“=Ñ	!€BØ	�6—;‘;“=Ñ	!€BàŸ™Ñ€A€vˆq�#à
ŠAŠq�!‘"ˆH‰+×
Ñ
˜a ¨°3¸Ó
<€CÜ�lŠlÐ/°°bÓ9€GÜ�lŠlÐ/°°bÓ9€Gà
�+‰+�a˜˜A˜q ! QÓ
'×
/Ñ
/°°Q¸±ZÀ#Ñ5EÈÑ5KÈSÓ
Q€Cä�lŠl˜3 §¡¨Q°Ó 2Ó3×=Ñ=¸aÀÓC€Gà�l‰l˜1˜f c°Ó9×AÑAÀ!ÀQÈÈ1ÈaÐQRÓS€Gð 	’’1’aššA˜t¢Q¨Ð,Ñ-Ø
’!’Qšš1ša  tªQÐ.Ñ
/ñ	0à
’!’Qšš1ša¢ D¨$Ð.Ñ
/ñ	0÷ �gˆa�˜™ S™¨#©)°c©/Ó:ð	 ð 	ŠŠAˆq‰r�1‘2ˆÓ˜'Ñ!Óà€Kr-   ÚshortcutÚresidual_with_cls_embedc           	      óŠ   • U(       a  U R                  U5        U $ U S S 2S S 2SS 2S S 24==   US S 2S S 2SS 2S S 24   -  ss'   U $ r2   )Úadd_)r7   r©   rª   s      r.   Ú_add_shortcutr­   ¸   sF   € ÞØ	�‰ˆxÔð €Hð 	
Š!ŠQ�‘’Aˆ+‹˜(¢1¢a¨©ªQ ;Ñ/Ñ/‹Ø€Hr-   r¨   r­   c                   ó  ^ • \ rS rSrS\R
                  4S\\   S\S\S\S\\   S\\   S	\\   S
\\   S\S\S\S\	S\
S\R                  4   SS4U 4S jjjrS\R                  S\\\\4   S\\R                  \\\\4   4   4S jrSrU =r$ )ÚMultiscaleAttentionéÄ   ç        Ú
input_sizeÚ	embed_dimÚ
output_dimr   r    r!   r"   r#   Úresidual_poolrª   Úrel_pos_embedÚdropoutÚ
norm_layer.r0   Nc                 ó*  >• [         TU ]  5         X l        X0l        X@l        X4-  U l        S[        R                  " U R
                  5      -  U l        X�l	        X l
        [        R                  " USU-  5      U l        [        R                  " X35      /nUS:”  a$  UR                  [        R                  " USS95        [        R                   " U6 U l        S U l        ['        U5      S:”  d  ['        U5      S:”  au  U Vs/ s H  n[)        US-  5      PM     nn[+        [        R,                  " U R
                  U R
                  UUUU R
                  SS	9U" U R
                  5      5      U l        S U l        S U l        ['        U5      S:”  d  ['        U5      S:”  aÌ  U Vs/ s H  n[)        US-  5      PM     nn[+        [        R,                  " U R
                  U R
                  UUUU R
                  SS	9U" U R
                  5      5      U l        [+        [        R,                  " U R
                  U R
                  UUUU R
                  SS	9U" U R
                  5      5      U l        S U l        S U l        S U l        U(       Ga„  [9        USS  5      n[;        U5      S
:”  a  UUS   -  OUn[;        U5      S
:”  a  UUS   -  OUnS[9        UU5      -  S-
  nSUS
   -  S-
  n[        R<                  " [>        R@                  " UU R
                  5      5      U l        [        R<                  " [>        R@                  " UU R
                  5      5      U l        [        R<                  " [>        R@                  " UU R
                  5      5      U l        [        RB                  RE                  U R2                  SS9  [        RB                  RE                  U R4                  SS9  [        RB                  RE                  U R6                  SS9  g g s  snf s  snf )Nr„   r	   r±   T©Úinplacer3   r   F)ÚstrideÚpaddingÚgroupsÚbiasr   ç{®Gáz”?©Ústd)#rM   rN   r³   r´   r   Úhead_dimÚmathÚsqrtÚscalerrµ   rª   rP   ÚLinearÚqkvrO   ÚDropoutrQ   ÚprojectÚpool_qr6   r)   rF   ÚConv3dÚpool_kÚpool_vr€   r�   r‚   r†   ÚlenÚ	Parameterr]   ÚzerosÚinitÚtrunc_normal_)rS   r²   r³   r´   r   r    r!   r"   r#   rµ   rª   r¶   r·   r¸   rT   r}   Ú	padding_qÚkvÚ
padding_kvrv   Úq_sizeÚkv_sizeÚspatial_dimÚtemporal_dimrU   s                           €r.   rN   ÚMultiscaleAttention.__init__Å   s@  ø€ ô  	‰ÑÔØ"ŒØ$ŒØ"ŒØ"Ñ/ˆŒØœDŸIšI d§m¡mÓ4Ñ4ˆŒØ*ÔØ'>Ô$ä—9’9˜Y¨¨J©Ó7ˆŒÜ#%§9¢9¨ZÓ#DÐ"EˆØ�S‹=Ø�M‰Mœ"Ÿ*š* W°dÑ;Ô<Ü—}’} fÐ-ˆŒà+/ˆŒÜ�‹?˜QÓ¤%¨£/°AÓ"5Ù.6Ó7ªh¨œ˜Q !™Vž©hˆIÐ7ÜÜ—	’	Ø—M‘MØ—M‘MØØ#Ø%ØŸ=™=Øññ ˜4Ÿ=™=Ó)óˆDŒKð ,0ˆŒØ+/ˆŒÜ�Ó˜aÓ¤5¨Ó#3°aÓ#7Ù1:Ó;²¨2œ#˜b A™gž,±ˆJÐ;ÜÜ—	’	Ø—M‘MØ—M‘MØØ$Ø&ØŸ=™=Øññ ˜4Ÿ=™=Ó)óˆDŒKô Ü—	’	Ø—M‘MØ—M‘MØØ$Ø&ØŸ=™=Øññ ˜4Ÿ=™=Ó)óˆDŒKð 26ˆŒØ15ˆŒØ15ˆŒßÜ�z ! "�~Ó&ˆDÜ,/°«M¸AÓ,=�T˜X a™[Ò(À4ˆFÜ.1°)«n¸qÓ.@�d˜i¨™lÒ*ÀdˆGØœc &¨'Ó2Ñ2°QÑ6ˆKØ˜z¨!™}Ñ,¨qÑ0ˆLÜŸ\š\¬%¯+ª+°kÀ4Ç=Á=Ó*QÓRˆDŒNÜŸ\š\¬%¯+ª+°kÀ4Ç=Á=Ó*QÓRˆDŒNÜŸ\š\¬%¯+ª+°lÀDÇMÁMÓ*RÓSˆDŒNÜ�G‰G×!Ñ! $§.¡.°dÐ!Ñ;Ü�G‰G×!Ñ! $§.¡.°dÐ!Ñ;Ü�G‰G×!Ñ! $§.¡.°dÐ!Ò;ð ùò] 8ùò" <s   Ä PÆ!Pr7   rW   c           	      óÄ  • UR                   u  p4nU R                  U5      R                  X4SU R                  U R                  5      R                  SS5      R                  SS9u  pgnU R                  b  U R                  Xr5      u  pyOUn	U R                  b  U R                  X‚5      S   nU R                  b  U R                  Xb5      u  pb[        R                  " U R                  U-  UR                  SS5      5      n
U R                  bI  U R                  b<  U R                  b/  [!        U
UUU	U R                  U R                  U R                  5      n
U
R#                  SS9n
[        R                  " X¨5      nU R$                  (       a  ['        XU R(                  5        UR                  SS5      R                  USU R*                  5      nU R-                  U5      nX4$ )Nr	   r3   r   r\   r   r[   )r>   rÈ   r`   r   rÃ   r_   ÚunbindrÍ   rÎ   rË   r]   rŠ   rÆ   r€   r�   r‚   r¨   Úsoftmaxrµ   r­   rª   r´   rÊ   )rS   r7   rW   rd   re   rf   r}   Úkr5   r   r|   s              r.   rj   ÚMultiscaleAttention.forward!  s‰  € Ø—'‘'‰ˆˆaØ—(‘(˜1“+×%Ñ% a¨A¨t¯~©~¸t¿}¹}ÓM×WÑWÐXYÐ[\Ó]×dÑdÐijÐdÐk‰ˆˆaà�;‰;Ñ"Ø—{‘{ 1Ó*‰HˆAˆuàˆEØ�;‰;Ñ"Ø—‘˜AÓ# AÑ&ˆAØ�;‰;Ñ"Ø—[‘[ Ó(‰FˆAä�|Š|˜DŸK™K¨!™O¨Q¯[©[¸¸AÓ->Ó?ˆØ�>‰>Ñ%¨$¯.©.Ñ*DÈÏÉÑIcÜØØØØØ—‘Ø—‘Ø—‘óˆDð �|‰| ˆ|Ð#ˆä�LŠL˜Ó!ˆØ××Ü˜! × <Ñ <Ô=Ø�K‰K˜˜1Ó×%Ñ% a¨¨T¯_©_Ó=ˆØ�L‰L˜‹Oˆàˆvˆr-   )r³   rÃ   r   r´   rÍ   rË   rÎ   rÊ   rÈ   r€   r‚   r�   rµ   rª   rÆ   )r%   r&   r'   r(   rP   Ú	LayerNormr+   r)   rm   Úfloatr   rl   rN   r]   rn   ro   rj   r,   rp   rq   s   @r.   r¯   r¯   Ä   s!  ø† ð Ø/1¯|©|ñZ<à˜‘IðZ<ð ðZ<ð ð	Z<ð
 ðZ<ð �s‘)ðZ<ð ˜‘9ðZ<ð �s‘)ðZ<ð ˜‘9ðZ<ð ðZ<ð "&ðZ<ð ðZ<ð ðZ<ð ˜S "§)¡)˜^Ñ,ðZ<ð 
÷Z<ð Z<ðx ˜Ÿ™ð  ¨E°#°s¸C°-Ñ,@ð  ÀUÈ5Ï<É<ÐY^Ð_bÐdgÐilÐ_lÑYmÐKmÑEn÷  ò  r-   r¯   c                   óö   ^ • \ rS rSrSS\R
                  4S\\   S\S\	S\	S\	S\	S	\
S
\
S\S\R                  4   SS4U 4S jjjrS\R                  S\\\\4   S\\R                  \\\\4   4   4S jrSrU =r$ )ÚMultiscaleBlockiD  r±   r²   Úcnfrµ   rª   r¶   Úproj_after_attnr·   Ústochastic_depth_probr¸   .r0   Nc
                 ó  >• [         TU ]  5         X`l        S U l        [	        UR
                  5      S:”  ar  UR
                   V
s/ s H  oªS:”  a  U
S-   OU
PM     nn
U Vs/ s H  n[        US-  5      PM     nn[        [        R                  " X²R
                  US9S 5      U l        U(       a  UR                  OUR                  nU	" UR                  5      U l        U	" U5      U l        [        U R                  [        R                  5      U l        [#        UUR                  UUR$                  UR&                  UR(                  UR
                  UR*                  UUUUU	S9U l        [/        USU-  UR                  /[        R0                  US S9U l        [5        US5      U l        S U l        UR                  UR                  :w  a1  [        R:                  " UR                  UR                  5      U l        g g s  sn
f s  snf )Nr3   r   )r¼   r½   )	r    r!   r"   r#   r¶   rµ   rª   r·   r¸   rY   )Úactivation_layerr·   r»   Úrow)rM   rN   ræ   Ú	pool_skipr6   r"   r)   rF   rP   Ú	MaxPool3dr   r   Únorm1Únorm2Ú
isinstanceÚBatchNorm1dÚneeds_transposalr¯   r   r    r!   r#   r|   r
   ÚGELUÚmlpr   Ústochastic_depthrÊ   rÇ   )rS   r²   rå   rµ   rª   r¶   ræ   r·   rç   r¸   r/   Úkernel_skiprß   Úpadding_skipÚattn_dimrU   s                  €r.   rN   ÚMultiscaleBlock.__init__E  s³  ø€ ô 	‰ÑÔØ.Ôà.2ˆŒÜ�—‘Ó Ó"Ø:=¿,º,ÓGº,°Q¨£E˜1˜qš5¨qÒ0¹,ˆKÐGÙ1<Ó=²¨AœC  Q¡žK±ˆLÐ=Ü!Ü—’˜[·±À|ÑTÐVZóˆDŒNö +:�3×&Ò&¸s×?QÑ?Qˆá × 2Ñ 2Ó3ˆŒ
Ù Ó)ˆŒ
Ü *¨4¯:©:´r·~±~Ó FˆÔä'ØØ×ÑØØ�M‰MØ—\‘\Ø—m‘mØ—\‘\Ø—m‘mØ'Ø'Ø$;ØØ!ñ
ˆŒ	ô ØØ�‰\˜3×.Ñ.Ð/ÜŸW™WØØñ
ˆŒô !0Ð0EÀuÓ MˆÔà,0ˆŒØ×Ñ ×!4Ñ!4Ó4ÜŸ9š9 S×%7Ñ%7¸×9LÑ9LÓMˆD�Lð 5ùòM HùÚ=s   ÁG=Á Hr7   rW   c                 óì  • U R                   (       a1  U R                  UR                  SS5      5      R                  SS5      OU R                  U5      nU R                  X25      u  pEU R                  b  U R
                  (       d  UOU R	                  U5      nU R                  c  UOU R                  X5      S   nX`R                  U5      -   nU R                   (       a1  U R                  UR                  SS5      5      R                  SS5      OU R                  U5      nU R                  b  U R
                  (       a  UOU R	                  U5      nX€R                  U R                  U5      5      -   U4$ )Nr3   r   r   )
rñ   rí   r_   r|   rÊ   ræ   rë   rô   rî   ró   )	rS   r7   rW   Úx_norm1Úx_attnÚthw_newÚx_skipÚx_norm2Úx_projs	            r.   rj   ÚMultiscaleBlock.forward  s#  € ØCG×CX×CX�$—*‘*˜QŸ[™[¨¨AÓ.Ó/×9Ñ9¸!¸QÔ?Ð^b×^hÑ^hÐijÓ^kˆØŸ)™) GÓ1‰ˆØ—‘Ñ%¨T×-A×-A‰AÀtÇ|Á|ÐT[ÓG\ˆØ—n‘nÑ,‘°$·.±.ÀÓ2HÈÑ2KˆØ×*Ñ*¨6Ó2Ñ2ˆàCG×CX×CX�$—*‘*˜QŸ[™[¨¨AÓ.Ó/×9Ñ9¸!¸QÔ?Ð^b×^hÑ^hÐijÓ^kˆØ—l‘lÑ*¨d×.B×.B‘ÈÏÉÐU\ÓH]ˆà×-Ñ-¨d¯h©h°wÓ.?Ó@Ñ@À'ÐIÐIr-   )	r|   ró   rñ   rí   rî   rë   ræ   rÊ   rô   )r%   r&   r'   r(   rP   rá   r+   r)   r   rm   râ   r   rl   rN   r]   rn   ro   rj   r,   rp   rq   s   @r.   rä   rä   D  sí   ø† ð Ø'*Ø/1¯|©|ñ8Nà˜‘Ið8Nð ð8Nð ð	8Nð
 "&ð8Nð ð8Nð ð8Nð ð8Nð  %ð8Nð ˜S "§)¡)˜^Ñ,ð8Nð 
÷8Nð 8Nðt
J˜Ÿ™ð 
J¨E°#°s¸C°-Ñ,@ð 
JÀUÈ5Ï<É<ÐY^Ð_bÐdgÐilÐ_lÑYmÐKmÑEn÷ 
Jò 
Jr-   rä   c            
       ó„   ^ • \ rS rSrS\S\\\4   S\S\SS4
U 4S jjrS	\R                  S\R                  4S
 jr
SrU =r$ )ÚPositionalEncodingiŒ  Ú
embed_sizeÚspatial_sizeÚtemporal_sizer¶   r0   Nc                 ó>  >• [         TU ]  5         X l        X0l        [        R
                  " [        R                  " U5      5      U l        S U l	        S U l
        S U l        U(       d·  [        R
                  " [        R                  " U R                  S   U R                  S   -  U5      5      U l	        [        R
                  " [        R                  " U R                  U5      5      U l
        [        R
                  " [        R                  " U5      5      U l        g g )Nr   r3   )rM   rN   r  r  rP   rÐ   r]   rÑ   rc   Úspatial_posÚtemporal_posÚ	class_pos)rS   r  r  r  r¶   rU   s        €r.   rN   ÚPositionalEncoding.__init__�  sÇ   ø€ Ü‰ÑÔØ(ÔØ*ÔäŸ<š<¬¯ª°JÓ(?Ó@ˆÔØ37ˆÔØ48ˆÔØ15ˆŒÞÜ!Ÿ|š|¬E¯KªK¸×8IÑ8IÈ!Ñ8LÈt×O`ÑO`ÐabÑOcÑ8cÐeoÓ,pÓqˆDÔÜ "§¢¬U¯[ª[¸×9KÑ9KÈZÓ-XÓ YˆDÔÜŸ\š\¬%¯+ª+°jÓ*AÓBˆD�Nð r-   r7   c                 ó®  • U R                   R                  UR                  S5      S5      R                  S5      n[        R
                  " X!4SS9nU R                  b÷  U R                  bê  U R                  bÝ  U R                  R                  u  p4[        R                  " U R                  USS9nUR                  U R                  R                  S5      R                  U R                  SS5      R                  SU5      5        [        R
                  " U R                  R                  S5      U4SS9R                  S5      nUR                  U5        U$ )Nr   r[   r3   r\   )rc   Úexpandrv   r<   r]   rb   r  r  r	  r>   Úrepeat_interleaver¬   r  r`   )rS   r7   rc   Úhw_sizer  Úpos_embeddings         r.   rj   ÚPositionalEncoding.forward›  s  € Ø×&Ñ&×-Ñ-¨a¯f©f°Q«i¸Ó<×FÑFÀqÓIˆÜ�IŠI�{Ð&¨AÑ.ˆà×ÑÑ'¨D×,=Ñ,=Ñ,IÈdÏnÉnÑNhØ"&×"2Ñ"2×"8Ñ"8ÑˆGÜ!×3Ò3°D×4EÑ4EÀwÐTUÑVˆMØ×Ñ˜t×/Ñ/×9Ñ9¸!Ó<×CÑCÀD×DVÑDVÐXZÐ\^Ó_×gÑgÐhjÐlvÓwÔxÜ!ŸIšI t§~¡~×'?Ñ'?ÀÓ'BÀMÐ&RÐXYÑZ×dÑdÐefÓgˆMØ�F‰F�=Ô!àˆr-   )r	  rc   r  r  r  r  )r%   r&   r'   r(   r)   ro   rm   rN   r]   rn   rj   r,   rp   rq   s   @r.   r  r  Œ  s\   ø† ðC 3ð C°e¸CÀ¸H±oð CÐVYð CÐjnð CÐsw÷ Cð˜Ÿ™ð ¨%¯,©,÷ ò r-   r  c            $       ó<  ^ • \ rS rSr         SS\\\4   S\S\\   S\S\S\S	\S
\	S\	S\	S\S\
\S\R                  4      S\
\S\R                  4      S\\\\4   S\\\\4   S\\\\4   SS4"U 4S jjjrS\R                   S\R                   4S jrSrU =r$ )r   i©  Nr  r  Úblock_settingrµ   rª   r¶   ræ   r·   Úattention_dropoutrç   Únum_classesÚblock.r¸   Úpatch_embed_kernelÚpatch_embed_strideÚpatch_embed_paddingr0   c                 óP  >• [         TU ]  5         [        U 5        [        U5      nUS:X  a  [	        S5      eUc  [
        nUc  [        [        R                  SS9n[        R                  " SUS   R                  UUUS9U l        [        U4U-   U R                  R                  5       VVs/ s H  u  nnUU-  PM     nnn[        US   R                  US   US	   4US   US
9U l        [        R                   " 5       U l        [%        U5       H�  u  nnU
U-  US-
  -  nU R"                  R'                  U" UUUUUUU	UUS9	5        [        UR(                  5      S:”  d  MS  [        UUR(                  5       VVs/ s H  u  nnUU-  PM     nnnMƒ     U" US   R*                  5      U l        [        R.                  " [        R0                  " USS9[        R2                  " US   R*                  U5      5      U l        U R7                  5        GH‡  n[9        U[        R2                  5      (       a„  [        R:                  R=                  UR>                  SS9  [9        U[        R2                  5      (       a;  UR@                  b,  [        R:                  RC                  UR@                  S5        M£  M¥  M§  [9        U[        R                  5      (       at  UR>                  b*  [        R:                  RC                  UR>                  S5        UR@                  b-  [        R:                  RC                  UR@                  S5        GM7  GM:  [9        U[        5      (       d  GMR  URE                  5        H!  n[        R:                  R=                  USS9  M#     GMŠ     gs  snnf s  snnf )a$  
MViT main class.

Args:
    spatial_size (tuple of ints): The spacial size of the input as ``(H, W)``.
    temporal_size (int): The temporal size ``T`` of the input.
    block_setting (sequence of MSBlockConfig): The Network structure.
    residual_pool (bool): If True, use MViTv2 pooling residual connection.
    residual_with_cls_embed (bool): If True, the addition on the residual connection will include
        the class embedding.
    rel_pos_embed (bool): If True, use MViTv2's relative positional embeddings.
    proj_after_attn (bool): If True, apply the projection after the attention.
    dropout (float): Dropout rate. Default: 0.0.
    attention_dropout (float): Attention dropout rate. Default: 0.0.
    stochastic_depth_prob: (float): Stochastic depth rate. Default: 0.0.
    num_classes (int): The number of classes.
    block (callable, optional): Module specifying the layer which consists of the attention and mlp.
    norm_layer (callable, optional): Module specifying the normalization layer to use.
    patch_embed_kernel (tuple of ints): The kernel of the convolution that patchifies the input.
    patch_embed_stride (tuple of ints): The stride of the convolution that patchifies the input.
    patch_embed_padding (tuple of ints): The padding of the convolution that patchifies the input.
r   z+The configuration parameter can't be empty.Ng�íµ ÷Æ°>)Úepsr	   )Úin_channelsÚout_channelsÚkernel_sizer¼   r½   r3   r   )r  r  r  r¶   r„   )	r²   rå   rµ   rª   r¶   ræ   r·   rç   r¸   r[   Trº   rÀ   rÁ   r±   )#rM   rN   r   rÏ   r=   rä   r   rP   rá   rÌ   r   Ú	conv_projÚzipr¼   r  Úpos_encodingÚ
ModuleListÚblocksÚ	enumeraterO   r"   r   rI   rQ   rÉ   rÇ   ÚheadÚmodulesrï   rÒ   rÓ   Úweightr¿   Ú	constant_Ú
parameters)rS   r  r  r  rµ   rª   r¶   ræ   r·   r  rç   r  r  r¸   r  r  r  Útotal_stage_blocksrv   r¼   r²   Ústage_block_idrå   Úsd_probÚmÚweightsrU   s                             €r.   rN   ÚMViT.__init__ª  s  ø€ ôR 	‰ÑÔô
 	˜DÔ!Ü  Ó/ÐØ Ó"ÜÐJÓKÐKà‰=Ü#ˆEàÑÜ ¤§¡°4Ñ8ˆJô ŸšØØ& qÑ)×8Ñ8Ø*Ø%Ø'ñ
ˆŒô :=¸mÐ=MÐP\Ñ=\Ð^b×^lÑ^l×^sÑ^sÔ9tÔuÒ9t©¨¨v�d˜f”nÑ9tˆ
Ñuô /Ø$ QÑ'×6Ñ6Ø$ Q™-¨°A©Ð7Ø$ Q™-Ø'ñ	
ˆÔô —m’m“oˆŒÜ#,¨]Ö#;ÑˆN˜Cà+¨nÑ<Ð@RÐUXÑ@XÑYˆGà�K‰K×ÑÙØ)ØØ"/Ø,CØ"/Ø$3Ø-Ø*1Ø)ñ
ôô �3—<‘<Ó  1Õ$ÜADÀZÐQT×Q]ÑQ]ÔA^Ô_ÒA^±°°v˜d fœnÑA^�
Ñ_‘
ñ' $<ñ( ˜}¨RÑ0×@Ñ@ÓAˆŒ	ô —M’MÜ�JŠJ�w¨Ñ-Ü�IŠI�m BÑ'×7Ñ7¸ÓEó
ˆŒ	ð
 —‘—ˆAÜ˜!œRŸY™Y×'Ñ'Ü—‘×%Ñ% a§h¡h°DÐ%Ñ9Ü˜a¤§¡×+Ñ+°·±Ñ0BÜ—G‘G×%Ñ% a§f¡f¨cÖ2ñ 1CÑ+ä˜AœrŸ|™|×,Ñ,Ø—8‘8Ñ'Ü—G‘G×%Ñ% a§h¡h°Ô4Ø—6‘6Ñ%Ü—G‘G×%Ñ% a§f¡f¨c×2ò &ä˜AÔ1×2Ô2Ø Ÿ|™|ž~�GÜ—G‘G×)Ñ)¨'°tÐ)Ó<ô  .ò  ùóQ vùó> `s   Â,NÅ;N"r7   c                 ó˜  • [        USS5      S   nU R                  U5      nUR                  S5      R                  SS5      nU R	                  U5      nU R                  R
                  4U R                  R                  -   nU R                   H  nU" X5      u  pM     U R                  U5      nUS S 2S4   nU R                  U5      nU$ )Nr…   r   r   r3   )
rA   r  Úflattenr_   r   r  r  r"  rI   r$  )rS   r7   rW   r  s       r.   rj   ÚMViT.forward"  s¿   € ä�q˜!˜QÓ Ñ"ˆà�N‰N˜1ÓˆØ�I‰I�a‹L×"Ñ" 1 aÓ(ˆð ×Ñ˜aÓ ˆð × Ñ ×.Ñ.Ð0°4×3DÑ3D×3QÑ3QÑQˆØ—[”[ˆEÙ˜1“]‰FˆA‰sñ !à�I‰I�a‹Lˆð Ša�ˆd‰GˆØ�I‰I�a‹Lˆàˆr-   )r"  r  r$  rI   r   )	g      à?r±   r±   i�  NN)r	   é   r2  )r   rY   rY   )r3   r	   r	   )r%   r&   r'   r(   ro   r)   r   r   rm   râ   r   r   rP   rl   rN   r]   rn   rj   r,   rp   rq   s   @r.   r   r   ©  sX  ø† ð Ø#&Ø'*ØØ48Ø9=Ø3<Ø3<Ø4=ñ#v=à˜C ˜H‘oðv=ð ðv=ð   Ñ.ð	v=ð
 ðv=ð "&ðv=ð ðv=ð ðv=ð ðv=ð !ðv=ð  %ðv=ð ðv=ð ˜  b§i¡i Ñ0Ñ1ðv=ð ˜X c¨2¯9©9 nÑ5Ñ6ðv=ð " # s¨C -Ñ0ðv=ð  " # s¨C -Ñ0ð!v=ð" # 3¨¨S =Ñ1ð#v=ð$ 
÷%v=ð v=ðp˜Ÿ™ð ¨%¯,©,÷ ò r-   r   r  rç   r-  ÚprogressÚkwargsc                 ó>  • Ub  [        US[        UR                  S   5      5        UR                  S   S   UR                  S   S   :X  d   e[        USUR                  S   5        [        USUR                  S   5        UR                  SS	5      nUR                  SS
5      n[	        SUUU UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      US.UD6nUb  UR                  UR                  USS95        U$ )Nr  Ú
categoriesÚmin_sizer   r3   r  r  Úmin_temporal_size©éà   r:  é   rµ   Frª   Tr¶   ræ   )r  r  r  rµ   rª   r¶   ræ   rç   )r3  Ú
check_hashr$   )r   rÏ   ÚmetaÚpopr   Úload_state_dictÚget_state_dict)r  rç   r-  r3  r4  r  r  Úmodels           r.   Ú_mvitrB  9  s$  € ð ÑÜ˜f m´S¸¿¹ÀlÑ9SÓ5TÔUØ�|‰|˜JÑ'¨Ñ*¨g¯l©l¸:Ñ.FÀqÑ.IÓIÐIÐIÜ˜f n°g·l±lÀ:Ñ6NÔOÜ˜f o°w·|±|ÐDWÑ7XÔYØ—:‘:˜n¨jÓ9€LØ—J‘J˜°Ó3€Mäð 
Ø!Ø#Ø#Ø—j‘j °%Ó8Ø &§
¡
Ð+DÀdÓ KØ—j‘j °%Ó8ØŸ
™
Ð#4°eÓ<Ø3ñ
ð ñ
€Eð ÑØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÐXÔYà€Lr-   c                   óV   • \ rS rSr\" S\" \SSSSS9SS\S	S
SSSSS.0SSS.	S9r\r	Sr
g)r   iZ  z:https://download.pytorch.org/models/mvit_v1_b-dbeb1030.pthr9  ©é   ©çÍÌÌÌÌÌÜ?rG  rG  ©çÍÌÌÌÌÌÌ?rI  rI  ©Ú	crop_sizeÚresize_sizeÚmeanrÂ   r;  zShttps://github.com/facebookresearch/pytorchvideo/blob/main/docs/source/model_zoo.mdúœThe weights were ported from the paper. The accuracies are estimated on video-level with parameters `frame_rate=7.5`, `clips_per_video=5`, and `clip_len=16`ip¢.úKinetics-400gJ+‡žS@gh‘í|?eW@©zacc@1zacc@5gu“V¦Q@gœÄ °rxa@©	r7  r8  r6  ÚrecipeÚ_docsÚ
num_paramsÚ_metricsÚ_opsÚ
_file_size©ÚurlÚ
transformsr=  r$   N©r%   r&   r'   r(   r   r   r   r   ÚKINETICS400_V1ÚDEFAULTr,   r$   r-   r.   r   r   Z  sf   † ÙØHÙØØ ØØ#Ø%ñ
ð #Ø!#Ø1Økð[ð #àØ#Ø#ñ!ðð Ø!ñ#
ñ€Nð: ƒGr-   r   c                   óV   • \ rS rSr\" S\" \SSSSS9SS\S	S
SSSSS.0SSS.	S9r\r	Sr
g)r   i{  z:https://download.pytorch.org/models/mvit_v2_s-ae3be167.pthr9  rD  rF  rH  rJ  r;  zChttps://github.com/facebookresearch/SlowFast/blob/main/MODEL_ZOO.mdrN  irO  gœÄ °r0T@gÃõ(\�ªW@rP  gu“VP@g?5^ºI|`@rQ  rX  r$   Nr[  r$   r-   r.   r   r   {  sf   † ÙØHÙØØ ØØ#Ø%ñ
ð #Ø!#Ø1Ø[ð[ð #àØ#Ø#ñ!ðð Ø!ñ#
ñ€Nð: ƒGr-   r   Ú
pretrained)r-  T)r-  r3  c                 ó|  • [         R                  U 5      n / SQ/ SQ/ SQ/ / SQ/ / SQ/ / / / / / / / / / / SQ/ // SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ// / SQ/ / SQ/ / / / / / / / / / / SQ/ // SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/S	.n/ n[        [        US
   5      5       HK  nUR	                  [        US
   U   US   U   US   U   US   U   US   U   US   U   US   U   S	95        MM     [        SSSUSSUR                  SS5      U US.UD6$ )aw  
Constructs a base MViTV1 architecture from
`Multiscale Vision Transformers <https://arxiv.org/abs/2104.11227>`__.

.. betastatus:: video module

Args:
    weights (:class:`~torchvision.models.video.MViT_V1_B_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.video.MViT_V1_B_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.video.MViT``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/video/mvit.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.video.MViT_V1_B_Weights
    :members:
©r3   r   r   rY   rY   rY   rY   rY   rY   rY   rY   rY   rY   rY   é   rb  ©é`   éÀ   re  é€  rf  rf  rf  rf  rf  rf  rf  rf  rf  rf  é   rg  )re  re  rf  rf  rf  rf  rf  rf  rf  rf  rf  rf  rf  rg  rg  rg  ©r	   r	   r	   ©r3   r   r   ©r3   rb  rb  ©r3   rY   rY   ©r3   r3   r3   ©r   r   r   r    r!   r"   r#   r   r   r   r    r!   r"   r#   r9  r;  Frç   çš™™™™™É?)r  r  r  rµ   rª   rç   r-  r3  r$   )r   ÚverifyÚrangerÏ   rO   r   rB  r>  ©r-  r3  r4  Úconfigr  Úis         r.   r   r   œ  s¹  € ô2  ×&Ñ& wÓ/€Gò FÚiÚkØš Bª	°2°r¸2¸rÀ2ÀrÈ2ÈrÐSUÐWYÒ[dÐfhÐiâÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð!
ð$ š Bª	°2°r¸2¸rÀ2ÀrÈ2ÈrÐSUÐWYÒ[dÐfhÐiâÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð!
ñ1*€FðX €MÜ”3�v˜kÑ*Ó+Ö,ˆØ×ÑÜØ  Ñ-¨aÑ0Ø%Ð&6Ñ7¸Ñ:Ø &Ð'8Ñ 9¸!Ñ <Ø 
Ñ+¨AÑ.Ø  Ñ-¨aÑ0Ø 
Ñ+¨AÑ.Ø  Ñ-¨aÑ0ñö
	
ñ -ô ð 
ØØØ#ØØ %Ø$Ÿj™jÐ)@À#ÓFØØñ
ð ñ
ð 
r-   c                 óè  • [         R                  U 5      n / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ// SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/S	.n/ n[        [        US
   5      5       HK  nUR	                  [        US
   U   US   U   US   U   US   U   US   U   US   U   US   U   S	95        MM     [        SSSUSSSSUR                  SS5      U US.
UD6$ )a÷  Constructs a small MViTV2 architecture from
`Multiscale Vision Transformers <https://arxiv.org/abs/2104.11227>`__ and
`MViTv2: Improved Multiscale Vision Transformers for Classification
and Detection <https://arxiv.org/abs/2112.01526>`__.

.. betastatus:: video module

Args:
    weights (:class:`~torchvision.models.video.MViT_V2_S_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.video.MViT_V2_S_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.video.MViT``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/video/mvit.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.video.MViT_V2_S_Weights
        :members:
ra  )rd  rd  re  re  rf  rf  rf  rf  rf  rf  rf  rf  rf  rf  rf  rg  rc  rh  rl  ri  rj  rk  rm  r   r   r   r    r!   r"   r#   r9  r;  TFrç   rn  )
r  r  r  rµ   rª   r¶   ræ   rç   r-  r3  r$   )r   ro  rp  rÏ   rO   r   rB  r>  rq  s         r.   r   r   þ  sß  € ô4  ×&Ñ& wÓ/€Gò FÚhÚjâÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð!
ò& ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð!
ò& ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð!
ò& ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð!
ñuL€Fð\ €MÜ”3�v˜kÑ*Ó+Ö,ˆØ×ÑÜØ  Ñ-¨aÑ0Ø%Ð&6Ñ7¸Ñ:Ø &Ð'8Ñ 9¸!Ñ <Ø 
Ñ+¨AÑ.Ø  Ñ-¨aÑ0Ø 
Ñ+¨AÑ.Ø  Ñ-¨aÑ0ñö
	
ñ -ô ð ØØØ#ØØ %ØØØ$Ÿj™jÐ)@À#ÓFØØñð ñð r-   );rÄ   Úcollections.abcr   Údataclassesr   Ú	functoolsr   Útypingr   r   r   r]   Útorch.fxÚtorch.nnrP   Úopsr
   r   Útransforms._presetsr   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__r   r)   r6   rn   ro   rA   rD   ÚfxÚwraprl   rF   r{   r¨   rm   r­   r¯   rä   r  r   r+   râ   rB  r   r   r\  r   r   r$   r-   r.   Ú<module>r„     s[  ðÛ Ý $Ý !Ý ß *Ñ *ã Û Ý ç 'Ý 6Ý (ß 7Ñ 7Ý +ß Cò€ð ÷ð ó ððˆX�c‰]ð ˜sô ð�%—,‘,ð ¨Cð ¸Sð ÀUÈ5Ï<É<ÐY\ÐK\ÑE]ô ð�—‘ð ¨#ð ¸3ð ÈCð ÐTY×T`ÑT`ô ð ‡�‡�ˆlÔ Ø ‡�‡�ˆjÔ ô)ˆ2�9‰9ô )ðX˜EŸL™Lð ¨Sð °U·\±\ô ð9Ø
�,‰,ð9à‡|�|ð9ð ��c˜3�Ñð9ð ��c˜3�Ñð	9ð
 �|‰|ð9ð �|‰|ð9ð �|‰|ð9ð ‡\�\ô9ðx�U—\‘\ð ¨U¯\©\ð ÐTXô ð ‡�‡�ˆnÔ Ø ‡�‡�ˆoÔ ô}˜"Ÿ)™)ô }ô@EJ�b—i‘iô EJôP˜Ÿ™ô ô:Mˆ2�9‰9ô Mð`Ø˜Ñ&ðà ðð �kÑ"ðð ð	ð
 ðð 
ôôB˜ô ôB˜ô ñB ÓÙ ,Ð0A×0PÑ0PÐ!QÑRØ8<Ètò ]˜(Ð#4Ñ5ð ]Èð ]Ð_bð ]Ðgkô ]ó Só ð]ñ@ ÓÙ ,Ð0A×0PÑ0PÐ!QÑRØ8<Ètò B˜(Ð#4Ñ5ð BÈð BÐ_bð BÐgkô Bó Só ñBr-   