Ë
    éÓ^j˜ð  ã                   óô  — d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
Z
ddlmZ ddlmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z' dd	l(m)Z) dd
l*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0 dgZ1 G d„ dejd                  «      Z3 G d„ dejd                  «      Z4 G d„ dejd                  «      Z5eefeefeefeefeefeefdœZ6de	ee7f   de8de9fd„Z: G d„ dejd                  «      Z;�d
dejd                  dee7   de9ddfd„Z<d„ Z=�dd „Z>�dd!„Z?�dd"„Z@ e.i d# e?d$d%d&d¬'«      “d( e?d$d%d&d¬'«      “d) e?d$d*d*¬+«      “d, e?d$d*d*d-¬.«      “d/ e?d0d$d&d%¬1«      “d2 e?d3d$d&d%¬1«      “d4 e?d5d%¬6«      “d7 e?d8d$d&d%¬1«      “d9 e?d:d$d&d%¬1«      “d; e?d<d$d&d%¬1«      “d= e?d>d$d%d&d¬?«      “d@ e?d$d%d&d¬'«      “dA e?dBd$d%d&d¬?«      “dC e?dDd$d%d&d¬?«      “dE e?dFd$d%d&d¬?«      “dG e?d$dHdId¬J«      “dK e?d$dHdIddL¬M«      “i dN e?d$dHdIddL¬M«      “dO e?d$d%dP¬Q«      “dR e?d$dHdIddP¬S«      “dT e?d$dHdIddP¬S«      “dU e?d$d%dP¬Q«      “dV e?d$d%dP¬Q«      “dW e?dXd$d&d¬1«      “dY e?dZd$d&d¬1«      “d[ e?d\d$d&d¬1«      “d] e?d^d$d&d¬1«      “d_ e?d`d$d&d¬1«      “da e?dbd$d&d¬1«      “dc e?ddd$d&d¬1«      “de e?dfd$d&d¬1«      “dg e?dhd$d&d¬1«      “di e?djd$dHdIddL¬k«      “dl e?dmd$dHdIddL¬k«      “¥i dn e?dod$dHdIddL¬k«      “dp e?dqd$dHdIddL¬k«      “dr e?dsd$dHdIddL¬k«      “dt e?dud$dv¬w«      “dx e?dyd$dv¬w«      “dz e?d{d$dv¬w«      “d| e?d}d$dv¬w«      “d~ e?dd$dv¬w«      “d€ e@d�d$d&d¬1«      “d‚ e@dƒd$dHdIddL¬k«      “d„ e@d…d$d&d¬1«      “d† e@d‡d$dHdIddL¬k«      “dˆ e@d‰d$d&d¬1«      “dŠ e@d‹d$dHdIddL¬k«      “dŒ e@d�d$d&d¬1«      “dŽ e@d�d$dHdIddL¬k«      “d� e@d‘d$dHdIddL¬k«      “¥i d’ e@d“d$d”d•ddL¬k«      “d– e@d—d$d&d%¬1«      “d˜ e@d™d$d&d%¬1«      “dš e@d›d$d&d%¬1«      “dœ e@d�d$d&d¬1«      “dž e@dŸd$d&d¬1«      “d  e@d¡d$d&d¬1«      “d¢ e@d£d$d&d¬1«      “d¤ e@d¥d$d&d¬1«      “d¦ e@d§d$d¬w«      “d¨ e@d©d$d¬w«      “dª e@d«d$d¬w«      “d¬ e@d­d$d¬w«      “d® e@d¯d$d¬w«      “d° e@d±d$d¬w«      “d² e@d³d$d¬w«      “d´ e@dµd$d¬w«      “¥i d¶ e?«       “d· e?d$eed5d¸d¬¹«      “dº e?d$eedHdIddL¬»«      “d¼ e?d$eed½d¾d¬¹«      “d¿ e?d$eedHdIddL¬»«      “dÀ e?d$eed5d¸d¬¹«      “dÁ e?d$eedHdId¬¹«      “dÂ e?d$eed5d¸d¬¹«      “dÃ e?d$eedHdIddL¬»«      “dÄ e?d$eed5d¸d¬¹«      “dÅ e?d$eedPd5d¸d¬Æ«      “dÇ e?d$eedPd½d¾d¬Æ«      “dÈ e?d$eedPdHdIddL¬É«      “dÊ e?d$eedPdHdIddL¬É«      “dË e?d$eedPd5d¸d¬Æ«      “dÌ e?d$eed5d¸ddÍ¬Î«      “dÏ e?d$eed5d¸ddÍ¬Î«      “¥i dÐ e?d$eed5d¸ddÍ¬Î«      “dÑ e?d$eed½d¾ddÍ¬Î«      “dÒ e?d$eed½d¾ddÍ¬Î«      “dÓ e?d$eed5d¸ddÔ¬Î«      “dÕ e?d$eed½d¾ddÔ¬Î«      “dÖ e?d$eed½d¾ddÔ¬Î«      “d× e?d$eed5d¸ddØ¬Î«      “dÙ e?d$eed5d¸ddØ¬Î«      “dÚ e?d$dddÛ¬Ü«      “dÝ e?d$dddÛ¬Ü«      “dÞ e?d$dddÛ¬Ü«      “dß e?d$dddÛ¬Ü«      “dà e?d$d5d¸dddá¬â«      “dã e?d$d5d¸dddá¬â«      “dä e?d$d5d¸dddá¬â«      “då e?d$d*d*dædçd%¬¹«      “dè e?d$d*d*dædçd%¬¹«      “¥dé e?d$d*d*dædçd%¬¹«      i¥«      ZAe/�dde;fdê„«       ZBe/�dde;fdë„«       ZCe/�dde;fdì„«       ZDe/�dde;fdí„«       ZEe/�dde;fdî„«       ZFe/�dde;fdï„«       ZGe/�dde;fdð„«       ZHe/�dde;fdñ„«       ZIe/�dde;fdò„«       ZJe/�dde;fdó„«       ZKe/�dde;fdô„«       ZLe/�dde;fdõ„«       ZMe/�dde;fdö„«       ZNe/�dde;fd÷„«       ZOe/�dde;fdø„«       ZPe/�dde;fdù„«       ZQe/�dde;fdú„«       ZRe/�dde;fdû„«       ZSe/�dde;fdü„«       ZTe/�dde;fdý„«       ZUe/�dde;fdþ„«       ZVe/�dde;fdÿ„«       ZWe/�dde;f�d „«       ZXe/�dde;f�d„«       ZYe/�dde;f�d„«       ZZe/�dde;f�d„«       Z[e/�dde;f�d„«       Z\e/�dde;f�d„«       Z]e/�dde;f�d„«       Z^e/�dde;f�d„«       Z_e/�dde;f�d„«       Z` e0eadWdYd[d]d_didldndpdrdtdxdzd|d~�d	œ«       y(  ax   ConvNeXt

Papers:
* `A ConvNet for the 2020s` - https://arxiv.org/pdf/2201.03545.pdf
@Article{liu2022convnet,
  author  = {Zhuang Liu and Hanzi Mao and Chao-Yuan Wu and Christoph Feichtenhofer and Trevor Darrell and Saining Xie},
  title   = {A ConvNet for the 2020s},
  journal = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  year    = {2022},
}

* `ConvNeXt-V2 - Co-designing and Scaling ConvNets with Masked Autoencoders` - https://arxiv.org/abs/2301.00808
@article{Woo2023ConvNeXtV2,
  title={ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders},
  author={Sanghyun Woo, Shoubhik Debnath, Ronghang Hu, Xinlei Chen, Zhuang Liu, In So Kweon and Saining Xie},
  year={2023},
  journal={arXiv preprint arXiv:2301.00808},
}

Original code and weights from:
* https://github.com/facebookresearch/ConvNeXt, original copyright below
* https://github.com/facebookresearch/ConvNeXt-V2, original copyright below

Model defs atto, femto, pico, nano and _ols / _hnf variants are timm originals.

Modifications and additions for timm hacked together by / Copyright 2022, Ross Wightman
é    )Úpartial)ÚCallableÚDictÚListÚOptionalÚTupleÚUnionN)ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STDÚOPENAI_CLIP_MEANÚOPENAI_CLIP_STD)Útrunc_normal_ÚAvgPool2dSameÚDropPathÚcalculate_drop_path_ratesÚMlpÚGlobalResponseNormMlpÚLayerNorm2dÚ	LayerNormÚ	RmsNorm2dÚRmsNormÚSimpleNorm2dÚ
SimpleNormÚcreate_conv2dÚget_act_layerÚget_norm_layerÚmake_divisibleÚ	to_ntupleÚNormMlpClassifierHeadÚClassifierHeadé   )Úbuild_model_with_cfg)Úfeature_take_indices)Únamed_applyÚcheckpoint_seq)Úgenerate_default_cfgsÚregister_modelÚregister_model_deprecationsÚConvNeXtc                   óz   ‡ — e Zd ZdZ	 	 	 	 ddededededdf
ˆ fd„Zd	ej                  dej                  fd
„Zˆ xZ	S )Ú
DownsamplezDownsample module for ConvNeXt.NÚin_chsÚout_chsÚstrideÚdilationÚreturnc                 óP  •— ||dœ}t         ‰
| �  «        |dk(  r|nd}|dkD  s|dkD  r2|dk(  r|dkD  rt        nt        j                  }	 |	d|dd¬«      | _        nt        j                  «       | _        ||k7  rt        ||dfddi|¤Ž| _        yt        j                  «       | _        y)	zåInitialize Downsample module.

        Args:
            in_chs: Number of input channels.
            out_chs: Number of output channels.
            stride: Stride for downsampling.
            dilation: Dilation rate.
        ©ÚdeviceÚdtyper!   é   TF)Ú	ceil_modeÚcount_include_padr.   N)	ÚsuperÚ__init__r   ÚnnÚ	AvgPool2dÚpoolÚIdentityr   Úconv)Úselfr,   r-   r.   r/   r3   r4   ÚddÚ
avg_strideÚavg_pool_fnÚ	__class__s             €ú_/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/convnext.pyr9   zDownsample.__init__O   s�   ø€ ð" ¨Ñ/ˆÜ‰ÑÔØ'¨1š}‘V°!ˆ
Ø�AŠ:˜ AšØ+5¸ª?¸xÈ!º|�-ÔQS×Q]ÑQ]ˆKÙ# A z¸TÐUZÔ[ˆD�IäŸ™›ˆDŒIà�WÒÜ% f¨g°qÑIÀÐIÀbÑIˆD�IäŸ™›ˆD�Ió    Úxc                 óJ   — | j                  |«      }| j                  |«      }|S ©úForward pass.)r<   r>   ©r?   rF   s     rD   ÚforwardzDownsample.forwardn   s!   € à�I‰I�a‹LˆØ�I‰I�a‹LˆØˆrE   )r!   r!   NN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr9   ÚtorchÚTensorrK   Ú__classcell__©rC   s   @rD   r+   r+   L   sd   ø„ Ù)ð ØØØñ&àð&ð ð&ð ð	&ð
 ð&ð 
õ&ð>˜Ÿ™ð ¨%¯,©,÷ rE   r+   c                   óÞ   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddedee   dededeeeeef   f   dede	d	e	d
e	dee   dee
ef   dee   defˆ fd„Zdej                  dej                  fd„Zˆ xZS )ÚConvNeXtBlockab  ConvNeXt Block.

    There are two equivalent implementations:
      (1) DwConv -> LayerNorm (channels_first) -> 1x1 Conv -> GELU -> 1x1 Conv; all in (N, C, H, W)
      (2) DwConv -> Permute to (N, H, W, C); LayerNorm (channels_last) -> Linear -> GELU -> Linear; Permute back

    Unlike the official impl, this one allows choice of 1 or 2, 1x1 conv can be faster with appropriate
    choice of LayerNorm impl, however as model size increases the tradeoffs appear to change and nn.Linear
    is a better choice. This was observed with PyTorch 1.10 on 3090 GPU, it could change over time & w/ different HW.
    r,   r-   Úkernel_sizer.   r/   Ú	mlp_ratioÚconv_mlpÚ	conv_biasÚuse_grnÚls_init_valueÚ	act_layerÚ
norm_layerÚ	drop_pathc           	      ó²  •— ||dœ}t         ‰| �  «        |xs |} t        d«      |«      }t        |«      }|s|rt        nt
        }t        |	rt        nt        |¬«      }|| _	        t        ||f|||d   d|dœ|¤Ž| _         ||fi |¤Ž| _         ||t        ||z  «      fd|i|¤Ž| _        |
�,t        j                   |
t#        j$                  |fi |¤Žz  «      nd| _        ||k7  s|d	k7  s|d   |d	   k7  rt)        ||f||d   d
œ|¤Ž| _        nt        j,                  «       | _        |dkD  rt/        |«      | _        yt        j,                  «       | _        y)a[  

        Args:
            in_chs: Block input channels.
            out_chs: Block output channels (same as in_chs if None).
            kernel_size: Depthwise convolution kernel size.
            stride: Stride of depthwise convolution.
            dilation: Tuple specifying input and output dilation of block.
            mlp_ratio: MLP expansion ratio.
            conv_mlp: Use 1x1 convolutions for MLP and a NCHW compatible norm layer if True.
            conv_bias: Apply bias for all convolution (linear) layers.
            use_grn: Use GlobalResponseNorm in MLP (from ConvNeXt-V2)
            ls_init_value: Layer-scale init values, layer-scale applied if not None.
            act_layer: Activation layer.
            norm_layer: Normalization layer (defaults to LN if not specified).
            drop_path: Stochastic depth probability.
        r2   r5   )Úuse_convr   T)rW   r.   r/   Ú	depthwiseÚbiasr]   Nr!   )r.   r/   ç        )r8   r9   r   r   r   r   r   r   r   Úuse_conv_mlpr   Úconv_dwÚnormrP   Úmlpr:   Ú	ParameterrQ   ÚonesÚgammar+   Úshortcutr=   r   r_   )r?   r,   r-   rW   r.   r/   rX   rY   rZ   r[   r\   r]   r^   r_   r3   r4   r@   Ú	mlp_layerrC   s                     €rD   r9   zConvNeXtBlock.__init__�   sw  ø€ ðF ¨Ñ/ˆÜ‰ÑÔØÒ#˜VˆØ”9˜Q“< Ó)ˆÜ! )Ó,ˆ	ÙÙ(0�´iˆJÜ±WÕ1Ä#ÐPXÔYˆ	Ø$ˆÔÜ$ØØð	
ð $ØØ˜a‘[ØØñ	
ð ñ	
ˆŒñ ˜wÑ-¨"Ñ-ˆŒ	ÙØÜ�	˜GÑ#Ó$ñ
ð  ð
ð ñ	
ˆŒð Q^ÐPi”R—\‘\ -´%·*±*¸WÑ2KÈÑ2KÑ"KÔLÐosˆŒ
Ø�WÒ ¨!¢¨x¸©{¸hÀq¹kÒ/IÜ& v¨wÐb¸vÐPXÐYZÑP[ÑbÐ_aÑbˆD�MäŸK™K›MˆDŒMØ09¸B²œ )Ó,ˆ�ÄBÇKÁKÃMˆ�rE   rF   r0   c                 óÖ  — |}| j                  |«      }| j                  r#| j                  |«      }| j                  |«      }nJ|j	                  dddd«      }| j                  |«      }| j                  |«      }|j	                  dddd«      }| j
                  �-|j                  | j
                  j                  dddd«      «      }| j                  |«      | j                  |«      z   }|S )rI   r   r5   é   r!   éÿÿÿÿ)
rf   re   rg   rh   Úpermuterk   ÚmulÚreshaper_   rl   )r?   rF   rl   s      rD   rK   zConvNeXtBlock.forwardÅ   sÇ   € àˆØ�L‰L˜‹OˆØ×ÒØ—	‘	˜!“ˆAØ—‘˜“‰Aà—	‘	˜!˜Q  1Ó%ˆAØ—	‘	˜!“ˆAØ—‘˜“ˆAØ—	‘	˜!˜Q  1Ó%ˆAØ�:‰:Ð!Ø—‘�d—j‘j×(Ñ(¨¨B°°1Ó5Ó6ˆAà�N‰N˜1Ó §¡¨hÓ 7Ñ7ˆØˆrE   )Né   r!   ©r!   r!   é   FTFç�íµ ÷Æ°>ÚgeluNrd   NN)rL   rM   rN   rO   rP   r   r	   r   ÚfloatÚboolÚstrr   r9   rQ   rR   rK   rS   rT   s   @rD   rV   rV   u   s  ø„ ñ	ð &*Ø ØØ4:Ø Ø"Ø"Ø!Ø-1Ø.4Ø-1Ø!ØØñ!BRàðBRð ˜c‘]ðBRð ð	BRð
 ðBRð ˜C  s¨C x¡Ð0Ñ1ðBRð ðBRð ðBRð ðBRð ðBRð $ E™?ðBRð ˜S (˜]Ñ+ðBRð ! Ñ*ðBRð õBRðH˜Ÿ™ð ¨%¯,©,÷ rE   rV   c                   óâ   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddedededededeeef   d	eee      d
ede	de	de	de
eef   dee   dee   ddfˆ fd„Zdej                  dej                  fd„Zˆ xZS )ÚConvNeXtStagez!ConvNeXt stage (multiple blocks).Nr,   r-   rW   r.   Údepthr/   Údrop_path_ratesr\   rY   rZ   r[   r]   r^   Únorm_layer_clr0   c                 ó  •— ||dœ}t         ‰| �  «        d| _        ||k7  s|dkD  s|d   |d   k7  rY|dkD  s|d   |d   k7  rdnd}|d   dkD  rdnd}t        j                   ||fi |¤Žt        ||f|||d   ||
dœ|¤Ž«      | _        |}nt        j                  «       | _        |xs dg|z  }g }t        |«      D ]4  }|j                  t        d||||d   ||   ||	|
|||	r|n|d	œ|¤Ž«       |}Œ6 t        j                  |Ž | _        y
)aö  Initialize ConvNeXt stage.

        Args:
            in_chs: Number of input channels.
            out_chs: Number of output channels.
            kernel_size: Kernel size for depthwise convolution.
            stride: Stride for downsampling.
            depth: Number of blocks in stage.
            dilation: Dilation rates.
            drop_path_rates: Drop path rates for each block.
            ls_init_value: Initial value for layer scale.
            conv_mlp: Use convolutional MLP.
            conv_bias: Use bias in convolutions.
            use_grn: Use global response normalization.
            act_layer: Activation layer.
            norm_layer: Normalization layer.
            norm_layer_cl: Normalization layer for channels last.
        r2   Fr!   r   r5   Úsame)rW   r.   r/   Úpaddingrc   rd   )r,   r-   rW   r/   r_   r\   rY   rZ   r[   r]   r^   N© )r8   r9   Úgrad_checkpointingr:   Ú
Sequentialr   Ú
downsampler=   ÚrangeÚappendrV   Úblocks)r?   r,   r-   rW   r.   r~   r/   r   r\   rY   rZ   r[   r]   r^   r€   r3   r4   r@   Úds_ksÚpadÚstage_blocksÚirC   s                         €rD   r9   zConvNeXtStage.__init__Û   sc  ø€ ðJ ¨Ñ/ˆÜ‰ÑÔØ"'ˆÔà�WÒ ¨¢
¨h°q©k¸XÀa¹[Ò.HØ !š x°¡{°h¸q±kÒ'A‘AÀqˆEØ$ Q™K¨!šO‘&°ˆCÜ Ÿm™mÙ˜6Ñ( RÑ(ÜØØð	ð !&Ø!Ø% a™[ØØ"ñ	ð ñ	óˆDŒOð ‰Fä Ÿk™k›mˆDŒOà)Ò9¨b¨T°E©\ˆØˆÜ�u“ò 	ˆAØ×Ñ¤ð !ØØØ'Ø! !™Ø)¨!Ñ,Ø+Ø!Ø#ØØ#Ù)1™:°}ñ!ð ñ!ô ð ‰Fð	ô  —m‘m \Ð2ˆ�rE   rF   c                 óÎ   — | j                  |«      }| j                  r6t        j                  j	                  «       st        | j                  |«      }|S | j                  |«      }|S rH   )r‡   r…   rQ   ÚjitÚis_scriptingr%   rŠ   rJ   s     rD   rK   zConvNeXtStage.forward,  sS   € à�O‰O˜AÓˆØ×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.ˆAð ˆð —‘˜A“ˆAØˆrE   )rt   r5   r5   ru   Nç      ð?FTFrx   NNNN)rL   rM   rN   rO   rP   r   r   r   ry   rz   r	   r{   r   r9   rQ   rR   rK   rS   rT   s   @rD   r}   r}   Ø   s  ø„ Ù+ð  !ØØØ(.Ø59Ø#&Ø"Ø"Ø!Ø.4Ø-1Ø04ØØñ#O3àðO3ð ðO3ð ð	O3ð
 ðO3ð ðO3ð ˜C ˜H‘oðO3ð & d¨5¡kÑ2ðO3ð !ðO3ð ðO3ð ðO3ð ðO3ð ˜S (˜]Ñ+ðO3ð ! Ñ*ðO3ð $ HÑ-ðO3ð$ 
õ%O3ðb˜Ÿ™ð ¨%¯,©,÷ rE   r}   )Ú	layernormÚlayernorm2dÚ
simplenormÚsimplenorm2dÚrmsnormÚ	rmsnorm2dr^   rY   Únorm_epsc                 óü   — | xs d} | t         v rF|rt         |    d   nt         |    d   }t         |    d   } |�t        | |¬«      } t        ||¬«      }| |fS |sJ d«       ‚t        | «      } | }|�t        ||¬«      }| |fS )Nr“   r   r!   )ÚepszcIf a norm_layer is specified, conv MLP must be used so all norm expect rank-4, channels-first input)Ú	_NORM_MAPr   r   )r^   rY   r™   r€   s       rD   Ú_get_norm_layersr�   @  s®   € ØÒ*˜{€JØ”YÑÙ4<œ	 *Ñ-¨aÒ0Ä)ÈJÑBWÐXYÑBZˆÜ˜zÑ*¨1Ñ-ˆ
ØÐÜ  °Ô:ˆJÜ# M°xÔ@ˆMð �}Ð$Ð$ñ ð 	rØqó	rˆxä# JÓ/ˆ
Ø"ˆØÐÜ# M°xÔ@ˆMØ�}Ð$Ð$rE   c            +       ó   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/dededededeedf   d	eedf   d
eeeedf   f   dee	   dedede	de
dee   de
de
de
deeef   deeeef      dee	   de	de	f*ˆ fd„Zej                  j                  d0de
deeeeef   f   fd„«       Zej                  j                  d1de
ddfd„«       Zej                  j                  dej*                  fd„«       Zd2dedee   ddfd „Z	 	 	 	 	 d3d!ej0                  d"eeeee   f      d#e
d$e
d%ed&e
deeej0                     eej0                  eej0                     f   f   fd'„Z	 	 	 d4d"eeee   f   d(e
d)e
dee   fd*„Zd!ej0                  dej0                  fd+„Zd0d!ej0                  d,e
dej0                  fd-„Zd!ej0                  dej0                  fd.„Zˆ xZS )5r)   z|ConvNeXt model architecture.

    A PyTorch impl of : `A ConvNet for the 2020s`  - https://arxiv.org/pdf/2201.03545.pdf
    NÚin_chansÚnum_classesÚglobal_poolÚoutput_strideÚdepths.ÚdimsÚkernel_sizesr\   Ú	stem_typeÚ
patch_sizeÚhead_init_scaleÚhead_norm_firstÚhead_hidden_sizerY   rZ   r[   r]   r^   r™   Ú	drop_rateÚdrop_path_ratec                 óì  •— t         ‰%| �  «        ||dœ}|dv sJ ‚ t        d«      |«      }t        |||«      \  }}t	        |«      }|| _        || _        || _        g | _        |	dv sJ ‚|	dk(  rDt        j                  t        j                  ||d   f|
|
|dœ|¤Ž ||d   fi |¤Ž«      | _        |
}n�d|	v rt        |d   d	z  «      n|d   }t        j                  t        d
t        j                  ||fdd	d|dœ|¤Žd|	v r |«       nd
t        j                  ||d   fdd	d|dœ|¤Ž ||d   fi |¤Žg«      Ž | _        d}t        j                  «       | _        t!        ||d¬«      }g }|d   }|}d} t#        d«      D ]Ž  }!|d	k(  s|!dkD  rd	nd}"||k\  r|"dkD  r| |"z  } d}"||"z  }| dv rdnd	}#||!   }$|j%                  t'        ||$f||!   |"|#| f||!   ||!   |||||||dœ|¤Ž«       |$}| xj                  t)        ||d|!› �¬«      gz  c_        Œ� t        j                  |Ž | _        |x| _        | _        |rF|rJ ‚ || j*                  fi |¤Ž| _        t1        | j*                  |f|| j                  dœ|¤Ž| _        n`t        j4                  «       | _        t7        | j*                  |f||| j                  |ddœ|¤Ž| _        | j2                  j*                  | _        t9        t;        t<        |¬«      | «       y
)a  
        Args:
            in_chans: Number of input image channels.
            num_classes: Number of classes for classification head.
            global_pool: Global pooling type.
            output_stride: Output stride of network, one of (8, 16, 32).
            depths: Number of blocks at each stage.
            dims: Feature dimension at each stage.
            kernel_sizes: Depthwise convolution kernel-sizes for each stage.
            ls_init_value: Init value for Layer Scale, disabled if None.
            stem_type: Type of stem.
            patch_size: Stem patch size for patch stem.
            head_init_scale: Init scaling value for classifier weights and biases.
            head_norm_first: Apply normalization before global pool + head.
            head_hidden_size: Size of MLP hidden layer in head if not None and head_norm_first == False.
            conv_mlp: Use 1x1 conv in MLP, improves speed for small networks w/ chan last.
            conv_bias: Use bias layers w/ all convolutions.
            use_grn: Use Global Response Norm (ConvNeXt-V2) in MLP.
            act_layer: Activation layer type.
            norm_layer: Normalization layer type.
            drop_rate: Head pre-classifier dropout rate.
            drop_path_rate: Stochastic depth drop rate.
        r2   )é   é   é    rv   )ÚpatchÚoverlapÚoverlap_tieredÚoverlap_actr±   r   )rW   r.   rc   Útieredr5   Nro   r!   )rW   r.   rƒ   rc   ÚactT)Ú	stagewise)r!   r5   )rW   r.   r/   r~   r   r\   rY   rZ   r[   r]   r^   r€   zstages.)Únum_chsÚ	reductionÚmodule)Ú	pool_typer«   rx   )Úhidden_sizer»   r«   r^   r]   )r¨   )r8   r9   r   r�   r   r    rŸ   r«   Úfeature_infor:   r†   ÚConv2dÚstemr   ÚfilterÚstagesr   rˆ   r‰   r}   ÚdictÚnum_featuresrª   Únorm_prer    Úheadr=   r   r$   r   Ú_init_weights)&r?   rŸ   r    r¡   r¢   r£   r¤   r¥   r\   r¦   r§   r¨   r©   rª   rY   rZ   r[   r]   r^   r™   r«   r¬   r3   r4   r@   r€   Ústem_strideÚmid_chsÚdp_ratesrÁ   Úprev_chsÚcurr_strider/   rŽ   r.   Úfirst_dilationr-   rC   s&                                        €rD   r9   zConvNeXt.__init__X  s�  ø€ ôb 	‰ÑÔØ¨Ñ/ˆØ Ñ+Ð+Ð+Ø#”y “| LÓ1ˆÜ$4°ZÀÈ8Ó$TÑ!ˆ
�MÜ! )Ó,ˆ	à&ˆÔØ ˆŒØ"ˆŒØˆÔàÐQÑQÐQÐQØ˜ÒäŸ™Ü—	‘	˜( D¨¡GÐm¸ÈJÐ]fÑmÐjlÑmÙ˜4 ™7Ñ) bÑ)óˆDŒIð %‰Kà6>À)Ñ6K”n T¨!¡W°¡\Ô2ÐQUÐVWÑQXˆGÜŸ™¤v¨dÜ—	‘	˜( GÐf¸À1ÈaÐV_ÑfÐceÑfØ$¨	Ñ1‘	”°tÜ—	‘	˜' 4¨¡7Ðe¸À!ÈQÐU^ÑeÐbdÑeÙ˜4 ™7Ñ) bÑ)ð	5ó (ð ˆDŒIð ˆKä—m‘m“oˆŒÜ,¨^¸VÈtÔTˆØˆØ˜‘7ˆØ!ˆØˆä�q“ò 	gˆAØ%¨Ò*¨a°!ªe‘Q¸ˆFØ˜mÒ+°¸²
Ø˜FÑ"�Ø�Ø˜6Ñ!ˆKØ"*¨fÑ"4™Q¸!ˆNØ˜1‘gˆGØ�M‰Mœ-ØØðð )¨™OØØ(¨(Ð3Ø˜Q‘iØ (¨¡Ø+Ø!Ø#ØØ#Ø%Ø+ñð ñô ð" ˆHà×Ò¤$¨xÀ;ÐY`ÐabÐ`cÐWdÔ"eÐ!fÑfÖð7	gô8 —m‘m VÐ,ˆŒØ4<Ð<ˆÔ˜DÔ1ñ Ù'Ð'Ð'Ù& t×'8Ñ'8Ñ?¸BÑ?ˆDŒMÜ&Ø×!Ñ!Øðð &ØŸ.™.ñ	ð
 ñˆD�Iô ŸK™K›MˆDŒMÜ-Ø×!Ñ!Øð	ð -Ø%ØŸ.™.Ø%Ø ñ	ð ñ	ˆDŒIð %)§I¡I×$:Ñ$:ˆDÔ!Ü”GœM¸?ÔKÈTÕRrE   Úcoarser0   c                 ó2   — t        d|rd¬«      S g d¢¬«      S )z¾Create regex patterns for parameter grouping.

        Args:
            coarse: Use coarse grouping.

        Returns:
            Dictionary mapping group names to regex patterns.
        z^stemz^stages\.(\d+)))z^stages\.(\d+)\.downsample)r   )z^stages\.(\d+)\.blocks\.(\d+)N)z	^norm_pre)iŸ† )r¿   rŠ   )rÂ   )r?   rÍ   s     rD   Úgroup_matcherzConvNeXt.group_matcherè  s)   € ô ØÙ(.Ð$ô
ð 	
ò5ô
ð 	
rE   Úenablec                 ó4   — | j                   D ]	  }||_        Œ y)zEnable or disable gradient checkpointing.

        Args:
            enable: Whether to enable gradient checkpointing.
        N)rÁ   r…   )r?   rÐ   Úss      rD   Úset_grad_checkpointingzConvNeXt.set_grad_checkpointingû  s   € ð —‘ò 	*ˆAØ#)ˆAÕ ñ	*rE   c                 ó.   — | j                   j                  S )zGet the classifier module.)rÅ   Úfc)r?   s    rD   Úget_classifierzConvNeXt.get_classifier  s   € ð �y‰y�|‰|ÐrE   c                 óJ   — || _         | j                  j                  ||«       y)zŸReset the classifier head.

        Args:
            num_classes: Number of classes for new classifier.
            global_pool: Global pooling type.
        N)r    rÅ   Úreset)r?   r    r¡   s      rD   Úreset_classifierzConvNeXt.reset_classifier
  s   € ð 'ˆÔØ�	‰	�‰˜ [Õ1rE   rF   Úindicesrg   Ú
stop_earlyÚ
output_fmtÚintermediates_onlyc                 ó  — |dv sJ d«       ‚g }t        t        | j                  «      |«      \  }}	| j                  |«      }t        | j                  «      dz
  }
t        j
                  j                  «       s|s| j                  }n| j                  d|	dz    }t        |«      D ]K  \  }} ||«      }||v sŒ|r&||
k(  r!|j                  | j                  |«      «       Œ;|j                  |«       ŒM |r|S |
k(  r| j                  |«      }||fS )aK  Forward features that returns intermediates.

        Args:
            x: Input image tensor.
            indices: Take last n blocks if int, all if None, select matching indices if sequence.
            norm: Apply norm layer to compatible intermediates.
            stop_early: Stop iterating over blocks when last desired intermediate hit.
            output_fmt: Shape of intermediate feature outputs.
            intermediates_only: Only return intermediate features.

        Returns:
            List of intermediate features or tuple of (final features, intermediates).
        )ÚNCHWzOutput shape must be NCHW.r!   N)
r#   ÚlenrÁ   r¿   rQ   r�   r‘   Ú	enumerater‰   rÄ   )r?   rF   rÚ   rg   rÛ   rÜ   rÝ   ÚintermediatesÚtake_indicesÚ	max_indexÚlast_idxrÁ   Úfeat_idxÚstages                 rD   Úforward_intermediateszConvNeXt.forward_intermediates  s  € ð, ˜YÑ&ÐDÐ(DÓDÐ&ØˆÜ"6´s¸4¿;¹;Ó7GÈÓ"QÑˆ�ið �I‰I�a‹Lˆä�t—{‘{Ó# aÑ'ˆÜ�9‰9×!Ñ!Ô#©:Ø—[‘[‰Fà—[‘[  )¨a¡-Ð0ˆFÜ(¨Ó0ò 	,‰OˆH�eÙ�a“ˆAØ˜<Ò'Ù˜H¨Ò0Ø!×(Ñ(¨¯©°qÓ)9Õ:à!×(Ñ(¨Õ+ð	,ñ Ø Ð à�xÒØ—‘˜aÓ ˆAà�-ÐÐrE   Ú
prune_normÚ
prune_headc                 óÖ   — t        t        | j                  «      |«      \  }}| j                  d|dz    | _        |rt        j                  «       | _        |r| j                  dd«       |S )aE  Prune layers not required for specified intermediates.

        Args:
            indices: Indices of intermediate layers to keep.
            prune_norm: Whether to prune normalization layer.
            prune_head: Whether to prune the classifier head.

        Returns:
            List of indices that were kept.
        Nr!   r   Ú )r#   rà   rÁ   r:   r=   rÄ   rÙ   )r?   rÚ   ré   rê   rã   rä   s         rD   Úprune_intermediate_layersz"ConvNeXt.prune_intermediate_layersF  s]   € ô  #7´s¸4¿;¹;Ó7GÈÓ"QÑˆ�iØ—k‘k . 9¨q¡=Ð1ˆŒÙÜŸK™K›MˆDŒMÙØ×!Ñ! ! RÔ(ØÐrE   c                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S )z/Forward pass through feature extraction layers.)r¿   rÁ   rÄ   rJ   s     rD   Úforward_featureszConvNeXt.forward_features^  s/   € à�I‰I�a‹LˆØ�K‰K˜‹NˆØ�M‰M˜!ÓˆØˆrE   Ú
pre_logitsc                 óN   — |r| j                  |d¬«      S | j                  |«      S )zÊForward pass through classifier head.

        Args:
            x: Feature tensor.
            pre_logits: Return features before final classifier.

        Returns:
            Output tensor.
        T)rð   )rÅ   )r?   rF   rð   s      rD   Úforward_headzConvNeXt.forward_heade  s&   € ñ 1;ˆt�y‰y˜ tˆyÓ,ÐLÀÇ	Á	È!ÃÐLrE   c                 óJ   — | j                  |«      }| j                  |«      }|S rH   )rï   rò   rJ   s     rD   rK   zConvNeXt.forwardq  s'   € à×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆrE   )ro   éè  Úavgr°   ©ro   ro   é	   ro   ©é`   éÀ   é€  é   rt   rw   r±   rv   r’   FNFTFrx   NNrd   rd   NN©F)T)N)NFFrß   F)r!   FT)rL   rM   rN   rO   rP   r{   r   r	   r   ry   rz   r   r9   rQ   r�   Úignorer   r   rÏ   rÓ   r:   ÚModulerÖ   rÙ   rR   rè   rí   rï   rò   rK   rS   rT   s   @rD   r)   r)   R  s‡  ø„ ñð Ø#Ø$Ø!#Ø&2Ø$7Ø89Ø-1Ø$ØØ%'Ø$)Ø.2Ø"Ø"Ø!Ø.4Ø9=Ø(,Ø!Ø$&ØØñ1NSàðNSð ðNSð ð	NSð
 ðNSð ˜#˜s˜(‘OðNSð ˜˜S˜‘/ðNSð    U¨3°¨8¡_Ð 4Ñ5ðNSð $ E™?ðNSð ðNSð ðNSð #ðNSð "ðNSð ' s™mðNSð ðNSð  ð!NSð" ð#NSð$ ˜S (˜]Ñ+ð%NSð& !  s¨H }Ñ!5Ñ6ð'NSð( ˜u‘oð)NSð* ð+NSð, "õ-NSð` ‡Y�Y×Ññ
 Dð 
°T¸#¸uÀSÈ$ÀYÑ?OÐ:OÑ5Pò 
ó ð
ð$ ‡Y�Y×Ññ*¨Tð *¸Tò *ó ð*ð ‡Y�Y×Ñð §	¡	ò ó ðñ2¨Cð 2¸hÀs¹mð 2ÐW[ó 2ð 8<ØØ$Ø$Ø',ñ0 à�|‰|ð0 ð ˜e C¨¨c© NÑ3Ñ4ð0 ð ð	0 ð
 ð0 ð ð0 ð !%ð0 ð 
ˆt�E—L‘LÑ! 5¨¯©°t¸E¿L¹LÑ7IÐ)IÑ#JÐJÑ	Kó0 ðh ./Ø$Ø#ñ	à˜3  S¡	˜>Ñ*ðð ðð ð	ð
 
ˆc‰óð0 %§,¡,ð °5·<±<ó ñ
M˜eŸl™lð 
M¸ð 
MÈÏÉó 
Mð˜Ÿ™ð ¨%¯,©,÷ rE   r’   rº   Únamer¨   r0   c                 ó.  — t        | t        j                  «      rNt        | j                  d¬«       | j
                  �*t        j                  j                  | j
                  «       yyt        | t        j                  «      r“t        | j                  d¬«       t        j                  j                  | j
                  «       |rPd|v rK| j                  j                  j                  |«       | j
                  j                  j                  |«       yyyy)z©Initialize model weights.

    Args:
        module: Module to initialize.
        name: Module name.
        head_init_scale: Scale factor for head initialization.
    g{®Gáz”?)ÚstdNúhead.)Ú
isinstancer:   r¾   r   Úweightrc   ÚinitÚzeros_ÚLinearÚdataÚmul_)rº   r   r¨   s      rD   rÆ   rÆ   x  s¸   € ô �&œ"Ÿ)™)Ô$Ü�f—m‘m¨Õ-Ø�;‰;Ð"Ü�G‰G�N‰N˜6Ÿ;™;Õ'ð #ä	�FœBŸI™IÔ	&Ü�f—m‘m¨Õ-Ü
�‰�‰�v—{‘{Ô#Ù�G˜t‘OØ�M‰M×Ñ×#Ñ# OÔ4Ø�K‰K×Ñ×!Ñ! /Õ2ð $ˆ4ð 
'rE   c                 ó`  — d| v sd| v r| S d| v r| d   } i }d| v rÁ| j                  «       D ��ci c]*  \  }}|j                  d«      sŒ|j                  dd«      |“Œ, }}}d| v r2| d   |d<   t        j                  | d   j
                  d	   «      |d
<   |S d| v r@| d   |d<   | d   |d<   | d   |d<   t        j                  | d   j
                  d	   «      |d
<   |S d	dl}| j                  «       D �]5  \  }}|j                  d«      rŒ|j                  dd«      }|j                  dd|«      }|j                  dd|«      }|j                  dd«      }|j                  dd«      }d|v rB|j                  dd«      }|j                  dd «      }|j                  |j
                  d!   «      }|j                  d"d#«      }|j                  d$«      r|j                  d%d&«      }|j                  d'k(  r2d(|vr.|j                  «       |   j
                  }|j                  |«      }|||<   �Œ8 |S c c}}w ))z Remap FB checkpoints -> timm zhead.norm.weightznorm_pre.weightÚmodelzvisual.trunk.stem.0.weightzvisual.trunk.rì   zvisual.head.proj.weightzhead.fc.weightr   zhead.fc.biaszvisual.head.mlp.fc1.weightzhead.pre_logits.fc.weightzvisual.head.mlp.fc1.biaszhead.pre_logits.fc.biaszvisual.head.mlp.fc2.weightN)zprojectors.znorms.zdownsample_layers.0.zstem.zstages.([0-9]+).([0-9]+)zstages.\1.blocks.\2z#downsample_layers.([0-9]+).([0-9]+)zstages.\1.downsample.\2Údwconvrf   Úpwconvzmlp.fcÚgrnzgrn.betazmlp.grn.biasz	grn.gammazmlp.grn.weightrp   r  zhead.fc.znorm.rg   z	head.normr5   rÅ   )ÚitemsÚ
startswithÚreplacerQ   ÚzerosÚshapeÚreÚsubrs   ÚndimÚ
state_dict)r  r  Úout_dictÚkÚvr  Úmodel_shapes          rD   Úcheckpoint_filter_fnr  Œ  sd  € à˜ZÑ'Ð+<À
Ñ+JØÐØ�*ÑØ Ñ(ˆ
à€HØ# zÑ1ØBL×BRÑBRÓBT×v¹$¸!¸QÐXY×XdÑXdÐetÕXu�A—I‘I˜o¨rÓ2°AÑ5ÐvˆÑvØ$¨
Ñ2Ø)3Ð4MÑ)NˆHÐ%Ñ&Ü',§{¡{°:Ð>WÑ3X×3^Ñ3^Ð_`Ñ3aÓ'bˆH�^Ñ$ð ˆð *¨ZÑ7Ø4>Ð?[Ñ4\ˆHÐ0Ñ1Ø2<Ð=WÑ2XˆHÐ.Ñ/Ø)3Ð4PÑ)QˆHÐ%Ñ&Ü',§{¡{°:Ð>ZÑ3[×3aÑ3aÐbcÑ3dÓ'eˆH�^Ñ$ØˆãØ× Ñ Ó"ó ‰ˆˆ1Ø�<‰<Ð1Ô2àØ�I‰IÐ,¨gÓ6ˆØ�F‰FÐ.Ð0FÈÓJˆØ�F‰FÐ9Ð;UÐWXÓYˆØ�I‰I�h 	Ó*ˆØ�I‰I�h Ó)ˆØ�A‰:Ø—	‘	˜* nÓ5ˆAØ—	‘	˜+Ð'7Ó8ˆAØ—	‘	˜!Ÿ'™' "™+Ó&ˆAØ�I‰I�g˜zÓ*ˆØ�<‰<˜Ô Ø—	‘	˜& +Ó.ˆAØ�6‰6�QŠ;˜6¨™?Ø×*Ñ*Ó,¨QÑ/×5Ñ5ˆKØ—	‘	˜+Ó&ˆAØˆ�‹ð'ð* €OùóC ws   ­H*ÁH*c                 óœ   — |j                  dd«      dk(  r|j                  dd«       t        t        | |ft        t        dd¬«      d	œ|¤Ž}|S )
NÚpretrained_cfgrì   ÚfcmaeÚpretrained_strictF)r   r!   r5   ro   T)Úout_indicesÚflatten_sequential)Úpretrained_filter_fnÚfeature_cfg)ÚgetÚ
setdefaultr"   r)   r  rÂ   )ÚvariantÚ
pretrainedÚkwargsr  s       rD   Ú_create_convnextr+  ¹  s]   € Ø‡z�zÐ" BÓ'¨7Ò2ð 	×ÑÐ-¨uÔ5ä Ü�'˜:ðä1Ü \ÀdÔKñð ñ	€Eð
 €LrE   c                 ó2   — | dddddt         t        dddd	œ|¥S )
Nrô   ©ro   éà   r.  ©rt   rt   ç      ì?Úbicubicústem.0úhead.fcz
apache-2.0)Úurlr    Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanr  Ú
first_convÚ
classifierÚlicense©r
   r   ©r4  r*  s     rD   Ú_cfgr?  Ç  s3   € àØ¨=ÀvØ¨IÜ%Ô.BØ¨iØñð $*ðð rE   c                 ó8   — | dddddt         t        dddd	d
ddœ|¥S )Nrô   r-  r/  r0  r1  r2  r3  zcc-by-nc-4.0zarXiv:2301.00808zGConvNeXt-V2: Co-designing and Scaling ConvNets with Masked Autoencodersz/https://github.com/facebookresearch/ConvNeXt-V2)r4  r    r5  r6  r7  r8  r9  r  r:  r;  r<  Ú	paper_idsÚ
paper_nameÚ
origin_urlr=  r>  s     rD   Ú_cfgv2rD  Ò  s<   € àØ¨=ÀvØ¨IÜ%Ô.BØ¨iØ!Ð0BØ_ØGñ
ð ð
ð 
rE   zconvnext_tiny.in12k_ft_in1kztimm/gffffffî?)ro   é   rE  )Ú	hf_hub_idr7  Útest_input_sizeÚtest_crop_pctzconvnext_small.in12k_ft_in1kz&convnext_zepto_rms.ra4_e3600_r224_in1k)ç      à?rI  rI  )rF  r9  r  z*convnext_zepto_rms_ols.ra4_e3600_r224_in1kgÍÌÌÌÌÌì?)rF  r9  r  r7  zconvnext_atto.d2_in1kzrhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_atto_d2-01bb0f51.pth)r4  rF  rG  rH  zconvnext_atto_ols.a2_in1kzvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_atto_ols_a2-78d1c8f3.pthzconvnext_atto_rms.untrained)ro   é   rJ  )rG  rH  zconvnext_femto.d1_in1kzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_femto_d1-d71d5b4c.pthzconvnext_femto_ols.d1_in1kzwhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_femto_ols_d1-246bf2ed.pthzconvnext_pico.d1_in1kzrhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_pico_d1-10ad7f0d.pthzconvnext_pico_ols.d1_in1kzvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_pico_ols_d1-611f0ca7.pth)r4  rF  r7  rG  rH  zconvnext_nano.in12k_ft_in1kzconvnext_nano.d1h_in1kzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_nano_d1h-7eb4bdea.pthzconvnext_nano_ols.d1h_in1kzwhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_nano_ols_d1h-ae424a9a.pthzconvnext_tiny_hnf.a2h_in1kzwhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-rsb-weights/convnext_tiny_hnf_a2h-ab7e9df2.pthz convnext_nano.r384_in12k_ft_in1k)ro   rû   rû   )é   rK  )rF  r5  r6  r7  zconvnext_tiny.in12k_ft_in1k_384Úsquash)rF  r5  r6  r7  Ú	crop_modez convnext_small.in12k_ft_in1k_384zconvnext_nano.in12ki-.  )rF  r7  r    zconvnext_nano.r384_in12k)rF  r5  r6  r7  r    zconvnext_nano.r384_ad_in12kzconvnext_tiny.in12kzconvnext_small.in12kzconvnext_tiny.fb_in22k_ft_in1kzDhttps://dl.fbaipublicfiles.com/convnext/convnext_tiny_22k_1k_224.pthzconvnext_small.fb_in22k_ft_in1kzEhttps://dl.fbaipublicfiles.com/convnext/convnext_small_22k_1k_224.pthzconvnext_base.fb_in22k_ft_in1kzDhttps://dl.fbaipublicfiles.com/convnext/convnext_base_22k_1k_224.pthzconvnext_large.fb_in22k_ft_in1kzEhttps://dl.fbaipublicfiles.com/convnext/convnext_large_22k_1k_224.pthz convnext_xlarge.fb_in22k_ft_in1kzJhttps://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_1k_224_ema.pthzconvnext_tiny.fb_in1kzDhttps://dl.fbaipublicfiles.com/convnext/convnext_tiny_1k_224_ema.pthzconvnext_small.fb_in1kzEhttps://dl.fbaipublicfiles.com/convnext/convnext_small_1k_224_ema.pthzconvnext_base.fb_in1kzDhttps://dl.fbaipublicfiles.com/convnext/convnext_base_1k_224_ema.pthzconvnext_large.fb_in1kzEhttps://dl.fbaipublicfiles.com/convnext/convnext_large_1k_224_ema.pthz"convnext_tiny.fb_in22k_ft_in1k_384zDhttps://dl.fbaipublicfiles.com/convnext/convnext_tiny_22k_1k_384.pth)r4  rF  r5  r6  r7  rM  z#convnext_small.fb_in22k_ft_in1k_384zEhttps://dl.fbaipublicfiles.com/convnext/convnext_small_22k_1k_384.pthz"convnext_base.fb_in22k_ft_in1k_384zDhttps://dl.fbaipublicfiles.com/convnext/convnext_base_22k_1k_384.pthz#convnext_large.fb_in22k_ft_in1k_384zEhttps://dl.fbaipublicfiles.com/convnext/convnext_large_22k_1k_384.pthz$convnext_xlarge.fb_in22k_ft_in1k_384zJhttps://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_1k_384_ema.pthzconvnext_tiny.fb_in22kzAhttps://dl.fbaipublicfiles.com/convnext/convnext_tiny_22k_224.pthiQU  )r4  rF  r    zconvnext_small.fb_in22kzBhttps://dl.fbaipublicfiles.com/convnext/convnext_small_22k_224.pthzconvnext_base.fb_in22kzAhttps://dl.fbaipublicfiles.com/convnext/convnext_base_22k_224.pthzconvnext_large.fb_in22kzBhttps://dl.fbaipublicfiles.com/convnext/convnext_large_22k_224.pthzconvnext_xlarge.fb_in22kzChttps://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_224.pthz#convnextv2_nano.fcmae_ft_in22k_in1kzWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_nano_22k_224_ema.ptz'convnextv2_nano.fcmae_ft_in22k_in1k_384zWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_nano_22k_384_ema.ptz#convnextv2_tiny.fcmae_ft_in22k_in1kzWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_tiny_22k_224_ema.ptz'convnextv2_tiny.fcmae_ft_in22k_in1k_384zWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_tiny_22k_384_ema.ptz#convnextv2_base.fcmae_ft_in22k_in1kzWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_base_22k_224_ema.ptz'convnextv2_base.fcmae_ft_in22k_in1k_384zWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_base_22k_384_ema.ptz$convnextv2_large.fcmae_ft_in22k_in1kzXhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_large_22k_224_ema.ptz(convnextv2_large.fcmae_ft_in22k_in1k_384zXhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_large_22k_384_ema.ptz'convnextv2_huge.fcmae_ft_in22k_in1k_384zWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_huge_22k_384_ema.ptz'convnextv2_huge.fcmae_ft_in22k_in1k_512zWhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im22k/convnextv2_huge_22k_512_ema.pt)ro   é   rN  )é   rO  zconvnextv2_atto.fcmae_ft_in1kzUhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_atto_1k_224_ema.ptzconvnextv2_femto.fcmae_ft_in1kzVhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_femto_1k_224_ema.ptzconvnextv2_pico.fcmae_ft_in1kzUhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_pico_1k_224_ema.ptzconvnextv2_nano.fcmae_ft_in1kzUhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_nano_1k_224_ema.ptzconvnextv2_tiny.fcmae_ft_in1kzUhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_tiny_1k_224_ema.ptzconvnextv2_base.fcmae_ft_in1kzUhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_base_1k_224_ema.ptzconvnextv2_large.fcmae_ft_in1kzVhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_large_1k_224_ema.ptzconvnextv2_huge.fcmae_ft_in1kzUhttps://dl.fbaipublicfiles.com/convnext/convnextv2/im1k/convnextv2_huge_1k_224_ema.ptzconvnextv2_atto.fcmaezZhttps://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_atto_1k_224_fcmae.ptzconvnextv2_femto.fcmaez[https://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_femto_1k_224_fcmae.ptzconvnextv2_pico.fcmaezZhttps://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_pico_1k_224_fcmae.ptzconvnextv2_nano.fcmaezZhttps://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_nano_1k_224_fcmae.ptzconvnextv2_tiny.fcmaezZhttps://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_tiny_1k_224_fcmae.ptzconvnextv2_base.fcmaezZhttps://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_base_1k_224_fcmae.ptzconvnextv2_large.fcmaez[https://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_large_1k_224_fcmae.ptzconvnextv2_huge.fcmaezZhttps://dl.fbaipublicfiles.com/convnext/convnextv2/pt_only/convnextv2_huge_1k_224_fcmae.ptzconvnextv2_small.untrainedz/convnext_base.clip_laion2b_augreg_ft_in12k_in1k)r®   r®   )rF  r9  r  r5  r6  r7  z3convnext_base.clip_laion2b_augreg_ft_in12k_in1k_384)rF  r9  r  r5  r6  r7  rM  z6convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_320)ro   é@  rP  )é
   rQ  z6convnext_large_mlp.clip_laion2b_soup_ft_in12k_in1k_384z)convnext_base.clip_laion2b_augreg_ft_in1kz,convnext_base.clip_laiona_augreg_ft_in1k_384z.convnext_large_mlp.clip_laion2b_augreg_ft_in1kz2convnext_large_mlp.clip_laion2b_augreg_ft_in1k_384z*convnext_xxlarge.clip_laion2b_soup_ft_in1kz*convnext_base.clip_laion2b_augreg_ft_in12k)rF  r9  r  r    r5  r6  r7  z1convnext_large_mlp.clip_laion2b_soup_ft_in12k_320z3convnext_large_mlp.clip_laion2b_augreg_ft_in12k_384)rF  r9  r  r    r5  r6  r7  rM  z1convnext_large_mlp.clip_laion2b_soup_ft_in12k_384z+convnext_xxlarge.clip_laion2b_soup_ft_in12kzconvnext_base.clip_laion2bé€  )rF  r9  r  r5  r6  r7  r    z!convnext_base.clip_laion2b_augregzconvnext_base.clip_laionazconvnext_base.clip_laiona_320z$convnext_base.clip_laiona_augreg_320z&convnext_large_mlp.clip_laion2b_augregrü   z&convnext_large_mlp.clip_laion2b_ft_320z+convnext_large_mlp.clip_laion2b_ft_soup_320z"convnext_xxlarge.clip_laion2b_soupé   z$convnext_xxlarge.clip_laion2b_rewindzconvnext_tiny.dinov3_lvd1689mzdinov3-license)rF  r7  r    r<  zconvnext_small.dinov3_lvd1689mzconvnext_base.dinov3_lvd1689mzconvnext_large.dinov3_lvd1689mzconvnext_tiny.eupe_lvd1689mz#fair-noncommercial-research-license)rF  r5  r6  r7  r    r<  zconvnext_small.eupe_lvd1689mzconvnext_base.eupe_lvd1689mztest_convnext.r160_in1k)ro   é    rT  )é   rU  ztest_convnext2.r160_in1kztest_convnext3.r160_in1kc           	      óR   — t        dddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )N©r5   r5   rv   r5   ©r°   é@   é€   rJ  Tr•   ©r£   r¤   rY   r^   r)  )Úconvnext_zepto_rms©rÂ   r+  ©r)  r*  Ú
model_argsr  s       rD   r\  r\  �  s9   € ô ˜\Ð0BÈTÐ^jÔk€JÜÑg¸jÐgÌDÐQ[ÑLfÐ_eÑLfÑg€EØ€LrE   c           	      óT   — t        ddddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )	NrW  rX  Tr•   r´   )r£   r¤   rY   r^   r¦   r)  )Úconvnext_zepto_rms_olsr]  r^  s       rD   ra  ra  ¥  sA   € ô ØÐ"4¸tÐP\Ðhuôw€JäÑkÀ*ÐkÔPTÐU_ÑPjÐciÑPjÑk€EØ€LrE   c           	      óP   — t        ddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )N©r5   r5   é   r5   ©é(   éP   rT  rP  T©r£   r¤   rY   r)  )Úconvnext_attor]  r^  s       rD   ri  ri  ®  s5   € ô ˜\Ð0BÈTÔR€JÜÑb¸ÐbÄtÈJÑGaÐZ`ÑGaÑb€EØ€LrE   c           	      óR   — t        dddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  re  Tr³   ©r£   r¤   rY   r¦   r)  )Úconvnext_atto_olsr]  r^  s       rD   rl  rl  ¶  s9   € ô ˜\Ð0BÈTÐ]mÔn€JÜÑf¸ZÐfÌ4ÐPZÑKeÐ^dÑKeÑf€EØ€LrE   c           	      óR   — t        dddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  re  Tr˜   r[  r)  )Úconvnext_atto_rmsr]  r^  s       rD   rn  rn  ¾  s9   € ô ˜\Ð0BÈTÐ^iÔj€JÜÑf¸ZÐfÌ4ÐPZÑKeÐ^dÑKeÑf€EØ€LrE   c           	      óP   — t        ddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  ©é0   rù   rú   rû   Trh  r)  )Úconvnext_femtor]  r^  s       rD   rr  rr  Æ  s5   € ô ˜\Ð0BÈTÔR€JÜÑc¸*ÐcÌÈZÑHbÐ[aÑHbÑc€EØ€LrE   c           	      óR   — t        dddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  rp  Tr³   rk  r)  )Úconvnext_femto_olsr]  r^  s       rD   rt  rt  Î  s9   € ô ˜\Ð0BÈTÐ]mÔn€JÜÑg¸jÐgÌDÐQ[ÑLfÐ_eÑLfÑg€EØ€LrE   c           	      óP   — t        ddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  ©rY  rZ  rJ  rN  Trh  r)  )Úconvnext_picor]  r^  s       rD   rw  rw  Ö  ó5   € ô ˜\Ð0CÈdÔS€JÜÑb¸ÐbÄtÈJÑGaÐZ`ÑGaÑb€EØ€LrE   c           	      óR   — t        dddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  rv  Tr³   rk  r)  )Úconvnext_pico_olsr]  r^  s       rD   rz  rz  Þ  s9   € ô ˜\Ð0CÈdÐ_oÔp€JÜÑf¸ZÐfÌ4ÐPZÑKeÐ^dÑKeÑf€EØ€LrE   c           	      óP   — t        ddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )N©r5   r5   r®   r5   ©rg  rT  rP  rR  Trh  r)  )Úconvnext_nanor]  r^  s       rD   r~  r~  æ  rx  rE   c           	      óR   — t        dddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr|  r}  Tr²   rk  r)  )Úconvnext_nano_olsr]  r^  s       rD   r€  r€  î  s9   € ô ˜\Ð0CÈdÐ^gÔh€JÜÑf¸ZÐfÌ4ÐPZÑKeÐ^dÑKeÑf€EØ€LrE   c           	      óR   — t        dddd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrö   rø   T)r£   r¤   r©   rY   r)  )Úconvnext_tiny_hnfr]  r^  s       rD   r‚  r‚  ö  s:   € ô ˜\Ð0CÐUYÐdhÔi€JÜÑf¸ZÐfÌ4ÐPZÑKeÐ^dÑKeÑf€EØ€LrE   c           	      óN   — t        dd¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrö   rø   ©r£   r¤   r)  )Úconvnext_tinyr]  r^  s       rD   r…  r…  þ  s1   € ä˜\Ð0CÔD€JÜÑb¸ÐbÄtÈJÑGaÐZ`ÑGaÑb€EØ€LrE   c           	      óV   — t        g d¢g d¢¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )N©ro   ro   é   ro   rø   r„  r)  )Úconvnext_smallr]  r^  s       rD   r‰  r‰    s1   € äš]Ò1DÔE€JÜÑc¸*ÐcÌÈZÑHbÐ[aÑHbÑc€EØ€LrE   c           	      óV   — t        g d¢g d¢¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  ©rZ  rJ  rN  rS  r„  r)  )Úconvnext_baser]  r^  s       rD   rŒ  rŒ    s1   € äš]Ò1FÔG€JÜÑb¸ÐbÄtÈJÑGaÐZ`ÑGaÑb€EØ€LrE   c           	      óV   — t        g d¢g d¢¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  ©rú   rû   rü   é   r„  r)  )Úconvnext_larger]  r^  s       rD   r�  r�    s1   € äš]Ò1FÔG€JÜÑc¸*ÐcÌÈZÑHbÐ[aÑHbÑc€EØ€LrE   c           	      óX   — t        g d¢g d¢d¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  rŽ  r�  )r£   r¤   rª   r)  )Úconvnext_large_mlpr]  r^  s       rD   r’  r’    s5   € äš]Ò1FÐY]Ô^€JÜÑg¸jÐgÌDÐQ[ÑLfÐ_eÑLfÑg€EØ€LrE   c           	      óV   — t        g d¢g d¢¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  )rJ  rN  rS  i   r„  r)  )Úconvnext_xlarger]  r^  s       rD   r”  r”  !  s1   € äš]Ò1GÔH€JÜÑd¸:ÐdÌÈjÑIcÐ\bÑIcÑd€EØ€LrE   c           	      óx   — t        g d¢g d¢|j                  dd«      ¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )N)ro   rv   é   ro   )rû   rü   r�  i   r™   çñhãˆµøä>)r£   r¤   r™   r)  )Úconvnext_xxlarge©rÂ   Úpopr+  r^  s       rD   r˜  r˜  (  sC   € äš]Ò1GÐRX×R\ÑR\Ð]gÐimÓRnÔo€JÜÑe¸JÐeÌ$ÈzÑJdÐ]cÑJdÑe€EØ€LrE   c           	      óT   — t        dddd d¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  re  T©r£   r¤   r[   r\   rY   r)  )Úconvnextv2_attor]  r^  s       rD   r�  r�  /  s?   € ô ØÐ"4¸dÐRVÐaeôg€JäÑd¸:ÐdÌÈjÑIcÐ\bÑIcÑd€EØ€LrE   c           	      óT   — t        dddd d¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  rp  Trœ  r)  )Úconvnextv2_femtor]  r^  s       rD   rŸ  rŸ  8  s?   € ô ØÐ"4¸dÐRVÐaeôg€JäÑe¸JÐeÌ$ÈzÑJdÐ]cÑJdÑe€EØ€LrE   c           	      óT   — t        dddd d¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrc  rv  Trœ  r)  )Úconvnextv2_picor]  r^  s       rD   r¡  r¡  A  ó?   € ô ØÐ"5¸tÐSWÐbfôh€JäÑd¸:ÐdÌÈjÑIcÐ\bÑIcÑd€EØ€LrE   c           	      óT   — t        dddd d¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr|  r}  Trœ  r)  )Úconvnextv2_nanor]  r^  s       rD   r¤  r¤  J  r¢  rE   c           	      óR   — t        dddd ¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nrö   rø   T©r£   r¤   r[   r\   r)  )Úconvnextv2_tinyr]  r^  s       rD   r§  r§  S  s6   € ä˜\Ð0CÈTÐaeÔf€JÜÑd¸:ÐdÌÈjÑIcÐ\bÑIcÑd€EØ€LrE   c           	      óZ   — t        g d¢g d¢dd ¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  rø   Tr¦  r)  )Úconvnextv2_smallr]  r^  s       rD   r©  r©  Z  s6   € äš]Ò1DÈdÐbfÔg€JÜÑe¸JÐeÌ$ÈzÑJdÐ]cÑJdÑe€EØ€LrE   c           	      óZ   — t        g d¢g d¢dd ¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  r‹  Tr¦  r)  )Úconvnextv2_baser]  r^  s       rD   r«  r«  a  s7   € äš]Ò1FÐPTÐdhÔi€JÜÑd¸:ÐdÌÈjÑIcÐ\bÑIcÑd€EØ€LrE   c           	      óZ   — t        g d¢g d¢dd ¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  rŽ  Tr¦  r)  )Úconvnextv2_larger]  r^  s       rD   r­  r­  h  s7   € äš]Ò1FÐPTÐdhÔi€JÜÑe¸JÐeÌ$ÈzÑJdÐ]cÑJdÑe€EØ€LrE   c           	      óZ   — t        g d¢g d¢dd ¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )Nr‡  )i`  iÀ  i€  i   Tr¦  r)  )Úconvnextv2_huger]  r^  s       rD   r¯  r¯  o  s7   € äš]Ò1GÐQUÐeiÔj€JÜÑd¸:ÐdÌÈjÑIcÐ\bÑIcÑd€EØ€LrE   c           	      óz   — t        g d¢g d¢|j                  dd«      d¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )	N)r!   r5   rv   r5   )é   r°   rq  rY  r™   r—  Ú	gelu_tanh©r£   r¤   r™   r]   r)  )Útest_convnextr™  r^  s       rD   r´  r´  v  sC   € äš\Ò0@È6Ï:É:ÐV`ÐbfÓKgÐs~Ô€JÜÑb¸ÐbÄtÈJÑGaÐZ`ÑGaÑb€EØ€LrE   c           	      óz   — t        g d¢g d¢|j                  dd«      d¬«      }t        dd| it        |fi |¤Ž¤Ž}|S )	N©r!   r!   r!   r!   ©r°   rY  rù   rZ  r™   r—  r²  r³  r)  )Útest_convnext2r™  r^  s       rD   r¸  r¸  }  sF   € äš\Ò0AÈFÏJÉJÐWaÐcgÓLhÐtô  A€JÜÑc¸*ÐcÌÈZÑHbÐ[aÑHbÑc€EØ€LrE   c           	      ó|   — t        g d¢g d¢|j                  dd«      dd¬«      }t        d	d| it        |fi |¤Ž¤Ž}|S )
Nr¶  r·  r™   r—  )rt   rU  rU  ro   Úsilu)r£   r¤   r™   r¥   r]   r)  )Útest_convnext3r™  r^  s       rD   r»  r»  „  sM   € äÚÒ"3¸f¿j¹jÈÐUYÓ>ZÐiuð  BHôI€JäÑc¸*ÐcÌÈZÑHbÐ[aÑHbÑc€EØ€LrE   )Úconvnext_tiny_in22ft1kÚconvnext_small_in22ft1kÚconvnext_base_in22ft1kÚconvnext_large_in22ft1kÚconvnext_xlarge_in22ft1kÚconvnext_tiny_384_in22ft1kÚconvnext_small_384_in22ft1kÚconvnext_base_384_in22ft1kÚconvnext_large_384_in22ft1kÚconvnext_xlarge_384_in22ft1kÚconvnext_tiny_in22kÚconvnext_small_in22kÚconvnext_base_in22kÚconvnext_large_in22kÚconvnext_xlarge_in22k)Nr’   rý   )rì   )brO   Ú	functoolsr   Útypingr   r   r   r   r   r	   rQ   Útorch.nnr:   Ú	timm.datar
   r   r   r   Útimm.layersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    Ú_builderr"   Ú	_featuresr#   Ú_manipulater$   r%   Ú	_registryr&   r'   r(   Ú__all__rÿ   r+   rV   r}   rœ   r{   rz   ry   r�   r)   rÆ   r  r+  r?  rD  Údefault_cfgsr\  ra  ri  rl  rn  rr  rt  rw  rz  r~  r€  r‚  r…  r‰  rŒ  r�  r’  r”  r˜  r�  rŸ  r¡  r¤  r§  r©  r«  r­  r¯  r´  r¸  r»  rL   r„   rE   rD   ú<module>rÖ     s3  ðñõN ß ?× ?ã Ý ç dÓ d÷÷ ÷ ÷ ÷ ñ õ* +Ý +ß 4ß YÑ Yàˆ,€ô&�—‘ô &ôR`�B—I‘Iô `ôF[�B—I‘Iô [ð~ ˜yÐ)Ø Ð+Ø Ð,Ø! :Ð.Ø˜7Ð#Ø˜WÐ%ñ€	ð%  x° }Ñ!5ð %Àð %ÐQVó %ô$cˆr�y‰yô còL	3˜"Ÿ)™)ð 3¨8°C©=ð 3ÐRWð 3Ðbfó 3ò(*ôZôôñ %ð z&à!¡4ØØ }ÀCô$Iðz&ð
 #¡DØØ }ÀCô%Iðz&ð -©dØØ /ô/3ðz&ð 1±$ØØ /Øô3ðz&ð  ™Tð AØØ%°Tô;ð!z&ð(  ¡ð EØØ%°Tô";ð)z&ð0 "¡4à%°Tô$;ð1z&ð6 ™dð BØØ%°Tô;ð7z&ð> !¡$ð FØØ%°Tô#;ð?z&ðF ™Tð AØØ%°Tô;ðGz&ðN  ¡ð EØØ }ÀCô"IðOz&ðV "¡4ØØ }ÀCô$IðWz&ð\ ™dð BØØ }ÀCôIð]z&ðd !¡$ð FØØ }ÀCô#Iðez&ðl !¡$ð FØØ }ÀCô#Iðmz&ðt '©ØØ ¨H¸sô)Dðuz&ð| &¡tØØ¨8¸sÈhô(Xñ}z&ðB '©ØØ ¨H¸sÈxô)YðCz&ðJ ™4ØØ 5ô*ðKz&ðP ¡ØØ ¨H¸sÐPUô!WðQz&ðV "¡4ØØ ¨H¸sÐPUô$WðWz&ð\ ™4ØØ 5ô*ð]z&ðb ™DØØ 5ô*ðcz&ðj %¡dØRØØ%°Sô':ðkz&ðr &¡tØSØØ%°Sô(:ðsz&ðz %¡dØRØØ%°Sô':ð{z&ðB &¡tØSØØ%°Sô(:ðCz&ðJ '©ØXØØ%°Sô):ðKz&ðT ™TØRØØ%°Sô:ðUz&ð\ ™dØSØØ%°Sô:ð]z&ðd ™TØRØØ%°Sô:ðez&ðl ™dØSØØ%°Sô:ðmz&ðv )©$ØRØØ ¨H¸sÈhô+Xðwz&ð~ *©4ØSØØ ¨H¸sÈhô,Xòz&ðF )©$ØRØØ ¨H¸sÈhô+XðGz&ðN *©4ØSØØ ¨H¸sÈhô,XðOz&ðV +©DØXØØ ¨H¸sÈhô-XðWz&ð` ™dØOØØôðaz&ðh ™tØPØØô ðiz&ðp ™dØOØØôðqz&ðx ™tØPØØô ðyz&ð@ ¡ØQØØô!ðAz&ðJ *©6ØeØØ%°Sô,:ðKz&ðR .©vØeØØ ¨H¸sÈhô0XðSz&ðZ *©6ØeØØ%°Sô,:ð[z&ðb .©vØeØØ ¨H¸sÈhô0Xðcz&ðj *©6ØeØØ%°Sô,:ðkz&ðr .©vØeØØ ¨H¸sÈhô0Xðsz&ðz +©FØfØØ%°Sô-:ð{z&ðB /±ØfØØ ¨H¸sÈhô1XðCz&ðJ .©vØeØØ ¨H¸sÈhô0XòKz&ðR .©vØeØØ ¨H¸sÈhô0XðSz&ð\ $¡VØcØØ%°Tô&;ð]z&ðd %¡fØdØØ%°Tô';ðez&ðl $¡VØcØØ%°Tô&;ðmz&ðt $¡VØcØØ%°Sô&:ðuz&ð| $¡VØcØØ%°Sô&:ð}z&ðD $¡VØcØØ%°Sô&:ðEz&ðL %¡fØdØØ%°Sô':ðMz&ðT $¡VØcØØ%°Sô&:ðUz&ð^ ™VØhØØôð_z&ðf ™fØiØØôðgz&ðn ™VØhØØôðoz&ðv ™VØhØØôðwz&ð~ ™VØhØØôðz&ðF ™VØhØØôðGz&ðN ™fØiØØôðOz&ðV ™VØhØØôòWz&ð` !¡$£&ðaz&ðf 6±tØØ ?Ø ¨F¸Sô8Bðgz&ðn :¹4ØØ ?Ø ¨H¸sÈhô<Xðoz&ðv =¹dØØ ?Ø ¨H¸sô?Dðwz&ð~ =¹dØØ ?Ø ¨H¸sÈhô?Xðz&ðH	 0±ØØ ?Ø ¨F¸Sô2BðI	z&ðP	 3±DØØ ?Ø ¨H¸sô5DðQ	z&ðX	 5±dØØ ?Ø ¨F¸Sô7ðY	z&ðb	 9¹$ØØ ?Ø ¨H¸sÈhô;ðc	z&ðl	 1±$ØØ ?Ø ¨F¸Sô3Bðm	z&ðv	 1±$ØØ ?ÀØ ¨F¸Sô3Bðw	z&ð~	 8¹ØØ ?ÀØ ¨H¸sô:Dð	z&ðF
 :¹4ØØ ?ÀØ ¨H¸sÈhô<XðG
z&ðN
 8¹ØØ ?ÀØ ¨H¸sÈhô:XðO
z&ðV
 2±4ØØ ?ÀØ ¨F¸Sô4BðW
z&ðb
 !¡$ØØ ?Ø ¨F¸SÈcô#Sðc
z&ðj
 (©ØØ ?Ø ¨F¸SÈcô*Sòk
z&ðr
  ¡ØØ ?Ø ¨F¸SÈcô"Sðs
z&ðz
 $¡TØØ ?Ø ¨H¸sÐPSô&Uð{
z&ðB +©DØØ ?Ø ¨H¸sÐPSô-UðCz&ðJ -©dØØ ?Ø ¨F¸SÈcô/SðKz&ðR -©dØØ ?Ø ¨H¸sÐPSô/UðSz&ðZ 2±4ØØ ?Ø ¨H¸sÐPSô4Uð[z&ðb )©$ØØ ?Ø ¨F¸SÈdô+Tðcz&ðj +©DØØ ?Ø ¨F¸SÈdô-Tðkz&ðx $¡TØØØØ ô	&ðyz&ðD %¡dØØØØ ô	'ðEz&ðP $¡TØØØØ ô	&ðQz&ð\ %¡dØØØØ ô	'ð]z&ðh "¡4ØØ ØØØØ5ô$ðiz&ðx #¡DØØ ØØØØ5ô%ðyz&ðH "¡4ØØ ØØØØ5ô$ðIz&ðZ ™tØØ /Ø ¨F¸Tô Cð[z&ðb ¡ØØ /Ø ¨F¸Tô!Cñcz&ðj ¡ØØ /Ø ¨F¸Tô!Cñkz&ó z€ðz ò°hò ó ðð ò¸(ò ó ðð ò°ò ó ðð ò°Xò ó ðð ò°Xò ó ðð ò°(ò ó ðð ò°hò ó ðð ò°ò ó ðð ò°Xò ó ðð ò°ò ó ðð ò°Xò ó ðð ò°Xò ó ðð ò°ò ó ðð ò°(ò ó ðð ò°ò ó ðð ò°(ò ó ðð ò°hò ó ðð ò°8ò ó ðð ò°Hò ó ðð ò°8ò ó ðð ò°Hò ó ðð ò°8ò ó ðð ò°8ó ó ðð ò°8ó ó ðð ò°Hó ó ðð ò°8ó ó ðð ò°Hó ó ðð ò°8ó ó ðð ò°ó ó ðð ò°(ó ó ðð ò°(ó ó ðñ ˜HØ>Ø@Ø>Ø@Ø BØ"FØ#HØ"FØ#HØ$JØ3Ø5Ø3Ø5Ø7ò'õ rE   