+
    œ°³j×s  ã                   óÈ  € R t ^ RIt^ RIt^ RIt^ RIHt ^RIHt ^RI	H
t
 ^RIHtHt ^RIHt ^RIHtHt ^RIHt ^R	IHtHt ^R
IHt ^RIHt ]P8                  ! ]4      t ! R R]P>                  4      t ]PB                  PD                  R 4       t#R t$ ! R R]P>                  4      t% ! R R]P>                  4      t& ! R R]P>                  4      t' ! R R]P>                  4      t(R t)R t* ! R R]P>                  4      t+ ! R R]4      t, ! R R]P>                  4      t-] ! R  R!]4      4       t.] ! R" R#].4      4       t/]! R$R%7       ! R& R']].4      4       t0. R(Ot1R# ))zPyTorch ViTDet backbone.N)Únn)Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutput)ÚPreTrainedModel)Úauto_docstringÚlogging)Úcan_return_tuple©ÚVitDetConfigc                   óN   a a€ ] tR t^$t oRtV 3R ltR tV3R lR ltRtVt	V ;t
# )ÚVitDetEmbeddingsz«
This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
`hidden_states` (patch embeddings) to be consumed by a Transformer.
c                óÆ  <€ \         SV `  4        VP                  VP                  r2VP                  VP
                  rT\        V\        P                  P                  4      '       d   TMW"3p\        V\        P                  P                  4      '       d   TMW33pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          pW n
        W0n        W@n        W`n        VP                  '       dE   V^,           p\        P                  ! \        P                   ! ^WqP
                  4      4      V n        MRV n        \        P$                  ! WEW3R7      V n        R# )é   N)Úkernel_sizeÚstride)ÚsuperÚ__init__Úpretrain_image_sizeÚ
patch_sizeÚnum_channelsÚhidden_sizeÚ
isinstanceÚcollectionsÚabcÚIterableÚ
image_sizeÚnum_patchesÚ use_absolute_position_embeddingsr   Ú	ParameterÚtorchÚzerosÚposition_embeddingsÚConv2dÚ
projection)	ÚselfÚconfigr    r   r   r   r!   Únum_positionsÚ	__class__s	   &&      €Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/vitdet/modeling_vitdet.pyr   ÚVitDetEmbeddings.__init__*   s  ø€ Ü‰ÑÔØ!'×!;Ñ!;¸V×=NÑ=N�JØ$*×$7Ñ$7¸×9KÑ9K�kä#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ü#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø! !•}¨
°1­Õ5¸*ÀQ½-È:ÐVWÍ=Õ:XÕYˆØ$ŒØ$ŒØ(ÔØ&Ôà×2×2Ð2à'¨!�OˆMÜ')§|¢|´E·K²KÀÀ=×RdÑRdÓ4eÓ'fˆDÕ$à'+ˆDÔ$äŸ)š) LÈ:ÔiˆŽó    c                óô  € V'       d
   VR,          pVP                   ^,          p\        \        P                  ! V4      4      pWf,          V8w  d   \	        R4      h\
        P                  P                  4       '       g   Wc8w  g   Wd8w  d\   \        P                  P                  VP                  ^WfR4      P                  ^ ^^^4      W43RRR7      pVP                  ^ ^^^4      # VP                  ^W4R4      # )a?  
Calculate absolute positional embeddings. If needed, resize embeddings and remove cls_token dimension for the
original embeddings.

Args:
    abs_pos_embeddings (`torch.Tensor`):
        Absolute positional embeddings with (1, num_position, num_channels).
    has_cls_token (`bool`):
        If true, has 1 embedding in abs_pos_embeddings for cls token.
    height (`int`):
        Height of input image tokens.
    width (`int`):
        Width of input image tokens.

Returns:
    Absolute positional embeddings after processing with shape (1, height, width, num_channels)
z5Absolute position embeddings must be a square number.ÚbicubicF)ÚsizeÚmodeÚalign_corners)ºNNNºr   NNéÿÿÿÿ)ÚshapeÚintÚmathÚsqrtÚ
ValueErrorr$   ÚjitÚ
is_tracingr   Ú
functionalÚinterpolateÚreshapeÚpermute)r)   Úabs_pos_embeddingsÚhas_cls_tokenÚheightÚwidthÚnum_positionr2   Únew_abs_pos_embeddingss   &&&&&   r-   Úget_absolute_positionsÚ'VitDetEmbeddings.get_absolute_positions@   sÜ   € ÷$ Ø!3°EÕ!:ÐØ)×/Ñ/°Õ2ˆÜ”4—9’9˜\Ó*Ó+ˆØ�;˜,Ô&ÜÐTÓUÐUä�9‰9×Ñ×!Ò! d¤n¸¼ä%'§]¡]×%>Ñ%>Ø"×*Ñ*¨1¨d¸"Ó=×EÑEÀaÈÈAÈqÓQØ�_ØØ#ð	 &?ó &Ð"ð *×1Ñ1°!°Q¸¸1Ó=Ð=à%×-Ñ-¨a°ÀÓCÐCr/   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )é   Úpixel_valuesÚreturn©r$   ÚTensor)ÚformatÚ__classdict__s   "€r-   Ú__annotate__ÚVitDetEmbeddings.__annotate__f   s#   ø€ ÷ ñ ¡E§L¡Lð ±U·\±\ñ r/   c                óž  € VP                   ^,          pW P                  8w  d   \        RV P                   RV R24      hV P                  V4      pV P                  eo   VP                  ^ ^^^4      pW0P                  V P                  RVP                   ^,          VP                   ^,          4      ,           pVP                  ^ ^^^4      pV# )r   zoMake sure that the channel dimension of the pixel values match with the one set in the configuration. Expected z	 but got Ú.T)r8   r   r<   r(   r&   rB   rI   )r)   rM   r   Ú
embeddingss   &&  r-   ÚforwardÚVitDetEmbeddings.forwardf   sÕ   € Ø#×)Ñ)¨!Õ,ˆØ×,Ñ,Ô,ÜðØ!×.Ñ.Ð/¨y¸¸ÀaðIóð ð —_‘_ \Ó2ˆ
à×#Ñ#Ò/à#×+Ñ+¨A¨q°!°QÓ7ˆJà#×&AÑ&AØ×(Ñ(¨$°
×0@Ñ0@ÀÕ0CÀZ×EUÑEUÐVWÕEXó'õ ˆJð $×+Ñ+¨A¨q°!°QÓ7ˆJàÐr/   )r    r   r!   r   r&   r(   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   rI   rX   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r,   rR   s   @@r-   r   r   $   s&   ù‡ € ñõ
jò,$D÷L÷ ð r/   r   c                óÀ  € \        ^\        W4      ,          ^,
          4      pVP                  ^ ,          V8w  dy   \        P                  P                  VP                  ^VP                  ^ ,          R4      P                  ^ ^^4      VRR7      pVP                  RV4      P                  ^^ 4      pMTp\        P                  ! V 4      R,          \        W,          R4      ,          p\        P                  ! V4      R,          \        W,          R4      ,          pWV,
          V^,
          \        W,          R4      ,          ,           pWGP                  4       ,          # )aq  
Get relative positional embeddings according to the relative positions of query and key sizes.

Args:
    q_size (`int`):
        Size of query q.
    k_size (`int`):
        Size of key k.
    rel_pos (`torch.Tensor`):
        Relative position embeddings (num_embeddings, num_channels).

Returns:
    Extracted positional embeddings according to relative positions.
Úlinear)r2   r3   g      ð?r7   )r5   N)Nr5   )r9   Úmaxr8   r   r?   r@   rA   rB   r$   ÚarangeÚlong)Úq_sizeÚk_sizeÚrel_posÚmax_rel_distÚrel_pos_resizedÚq_coordsÚk_coordsÚrelative_coordss   &&&     r-   Úget_rel_posrp   |   s  € ô  �qœ3˜vÓ.Õ.°Õ2Ó3€Là‡}�}�QÕ˜<Ô'äŸ-™-×3Ñ3Ø�O‰O˜A˜wŸ}™}¨QÕ/°Ó4×<Ñ<¸QÀÀ1ÓEØØð 4ó 
ˆð
 *×1Ñ1°"°lÓC×KÑKÈAÈqÓQ‰à!ˆô �|Š|˜FÓ# GÕ,¬s°6µ?ÀCÓ/HÕH€HÜ�|Š|˜FÓ# GÕ,¬s°6µ?ÀCÓ/HÕH€HØÕ*¨v¸­z¼SÀÅÐRUÓ=VÕ.VÕV€Oà×/Ñ/Ó1Õ2Ð2r/   c                ó|  € Vw  rgVw  r‰\        WhV4      p
\        WyV4      pVP                  w  rÍpVP                  WÆW~4      p\        P                  ! RWú4      p
\        P                  ! RWû4      pV P                  WÆWxV	4      V
R,          ,           VR,          ,           P                  WÆV,          W‰,          4      p V # )ax  
Calculate decomposed Relative Positional Embeddings as introduced in
[MViT2](https://github.com/facebookresearch/mvit/blob/19786631e330df9f3622e5402b4a419a263a2c80/mvit/models/attention.py).

Args:
    attn (`torch.Tensor`):
        Attention map.
    queries (`torch.Tensor`):
        Query q in the attention layer with shape (batch_size, queries_height * queries_width, num_channels).
    rel_pos_h (`torch.Tensor`):
        Relative position embeddings (Lh, num_channels) for height axis.
    rel_pos_w (`torch.Tensor`):
        Relative position embeddings (Lw, num_channels) for width axis.
    q_size (`tuple[int]`):
        Spatial sequence size of query q with (queries_height, queries_width).
    k_size (`tuple[int]`):
        Spatial sequence size of key k with (keys_height, keys_width).

Returns:
    attn (Tensor): attention map with added relative positional embeddings.
zbhwc,hkc->bhwkzbhwc,wkc->bhwk)r5   r5   r5   r5   N)r5   r5   r5   Nr5   )rp   r8   rA   r$   ÚeinsumÚview)ÚattnÚqueriesÚ	rel_pos_hÚ	rel_pos_wrh   ri   Úqueries_heightÚqueries_widthÚkeys_heightÚ
keys_widthÚrelative_heightÚrelative_widthÚ
batch_sizeÚ_ÚdimÚr_qÚrelative_weights   &&&&&&           r-   Ú!add_decomposed_relative_positionsrƒ   ¡   s¼   € ð, %+Ñ!€NØ$Ñ€KÜ! .¸yÓI€OÜ  ¸IÓF€Nà Ÿ™Ñ€J�3Ø
�/‰/˜*°mÓ
I€CÜ—l’lÐ#3°SÓJ€OÜ—l’lÐ#3°SÓI€Oð 	�	‰	�*¨mÈ*ÓUØ
Ð*Õ
+õ	,à
Ð*Õ
+õ	,÷ �dˆ:¨Õ5°{Õ7OÓPð	 	ð €Kr/   c                   óD   a a€ ] tR t^Êt oRtRV 3R lltRR ltRtVtV ;t	# )ÚVitDetAttentionz=Multi-head Attention block with relative position embeddings.c                ó|  <€ \         SV `  4        VP                  pVP                  pW@n        W4,          pVR,          V n        \        P                  ! W3^,          VP                  R7      V n	        \        P                  ! W34      V n
        VP                  V n        V P                  '       d�   \        P                  ! \        P                  ! ^V^ ,          ,          ^,
          V4      4      V n        \        P                  ! \        P                  ! ^V^,          ,          ^,
          V4      4      V n        R# R# )zÄ
Args:
    config (`VitDetConfig`):
        Model configuration.
    input_size (`tuple[int]`, *optional*):
        Input resolution, only required in case relative position embeddings are added.
©ÚbiasNg      à¿)r   r   r   Únum_attention_headsÚ	num_headsÚscaler   ÚLinearÚqkv_biasÚqkvÚprojÚ use_relative_position_embeddingsr#   r$   r%   rv   rw   )r)   r*   Ú
input_sizer€   rŠ   Úhead_dimr,   s   &&&   €r-   r   ÚVitDetAttention.__init__Í   sÙ   ø€ ô 	‰ÑÔà× Ñ ˆØ×.Ñ.ˆ	à"ŒØÕ#ˆØ˜t•^ˆŒ
ä—9’9˜S¨¥'°·±Ô@ˆŒÜ—I’I˜cÓ'ˆŒ	à06×0WÑ0WˆÔ-Ø×0×0Ð0äŸ\š\¬%¯+ª+°a¸*ÀQ½-Õ6GÈ!Õ6KÈXÓ*VÓWˆDŒNÜŸ\š\¬%¯+ª+°a¸*ÀQ½-Õ6GÈ!Õ6KÈXÓ*VÓWˆDŽNñ 1r/   c           	     óh  € VP                   w  r4rVV P                  V4      P                  W4V,          ^V P                  R4      P	                  ^^ ^^^4      pVP                  ^W0P                  ,          WE,          R4      P                  ^ 4      w  r‰p
W€P                  ,          V	P                  RR4      ,          pV P                  '       d&   \        W¸V P                  V P                  WE3WE34      pVP                  RR7      pWÊ,          pVP                  W0P                  WER4      pVP	                  ^ ^^^^4      pVP                  W4VR4      pV P                  V4      pV'       dE   VP                  W0P                  VP                   R,          VP                   R,          4      pW3pV# V3pV# )é   )r€   r7   éþÿÿÿ)r8   rŽ   rA   rŠ   rB   Úunbindr‹   Ú	transposer�   rƒ   rv   rw   Úsoftmaxrs   r�   )r)   Úhidden_stateÚoutput_attentionsr~   rE   rF   r   rŽ   ru   ÚkeysÚvaluesÚattention_scoresÚattention_probsÚoutputss   &&&           r-   rX   ÚVitDetAttention.forwardç   s’  € Ø'3×'9Ñ'9Ñ$ˆ
˜Eà�h‰h�|Ó$×,Ñ,¨ZÀ%½ÈÈDÏNÉNÐ\^Ó_×gÑgÐhiÐklÐnoÐqrÐtuÓvˆà #§¡¨A¨z¿N¹NÕ/JÈFÍNÐ\^Ó _× fÑ fÐghÓ iÑˆ�và#§j¡jÕ0°D·N±NÀ2ÀrÓ4JÕJÐà×0×0Ð0Ü@Ø ¨4¯>©>¸4¿>¹>ÈFÈ?Ð]cÐ\kó Ðð +×2Ñ2°rÐ2Ó:ˆà&Õ/ˆØ#×(Ñ(¨·^±^ÀVÐTVÓWˆØ#×+Ñ+¨A¨q°!°Q¸Ó:ˆØ#×+Ñ+¨JÀÀrÓJˆØ—y‘y Ó.ˆçØ-×5Ñ5ØŸN™N¨O×,AÑ,AÀ"Õ,EÀ×G\ÑG\Ð]_ÕG`óˆOð $Ð5ˆGð ˆð $�oˆGàˆr/   )rŠ   r�   rŽ   rv   rw   r‹   r�   ©N©F©
rZ   r[   r\   r]   r^   r   rX   r_   r`   ra   rb   s   @@r-   r…   r…   Ê   s   ù‡ € ÙG÷X÷4ô r/   r…   c                   ó@   a a€ ] tR tRt oRtRV 3R lltR tRtVtV ;t	# )ÚVitDetLayerNormi  a<  
A LayerNorm variant, popularized by Transformers, that performs point-wise mean and variance normalization over the
channel dimension for inputs that have shape (batch_size, channels, height, width).
https://github.com/facebookresearch/ConvNeXt/blob/d1fa8f6fef0a165b27399986cc2bdacc92777e40/models/convnext.py#L119
c                óü   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        \        P                  ! \        P                  ! V4      4      V n        W n	        V3V n
        R # r¢   )r   r   r   r#   r$   ÚonesÚweightr%   rˆ   ÚepsÚnormalized_shape)r)   r«   rª   r,   s   &&&€r-   r   ÚVitDetLayerNorm.__init__  sR   ø€ Ü‰ÑÔÜ—l’l¤5§:¢:Ð.>Ó#?Ó@ˆŒÜ—L’L¤§¢Ð-=Ó!>Ó?ˆŒ	ØŒØ!1Ð 3ˆÖr/   c                óF  € VP                  ^RR7      pW,
          P                  ^4      P                  ^RR7      pW,
          \        P                  ! W0P                  ,           4      ,          pV P
                  R,          V,          V P                  R,          ,           pV# )r   T)Úkeepdim)r5   NN)ÚmeanÚpowr$   r;   rª   r©   rˆ   )r)   ÚxÚuÚss   &&  r-   rX   ÚVitDetLayerNorm.forward  st   € Ø�F‰F�1˜dˆFÓ#ˆØ�U�K‰K˜‹N×Ñ ¨4ÐÓ0ˆØ�U”e—j’j §X¡X¥Ó.Õ.ˆØ�K‰K˜Õ&¨Õ*¨T¯Y©Y°}Õ-EÕEˆØˆr/   )rˆ   rª   r«   r©   )g�íµ ÷Æ°>r¤   rb   s   @@r-   r¦   r¦     s   ù‡ € ñ÷4÷ò r/   r¦   c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚVitDetResBottleneckBlocki  z�
The standard bottleneck residual block without the last activation layer. It contains 3 conv layers with kernels
1x1, 3x3, 1x1.
c                óª  <€ \         SV `  4        \        P                  ! W$^RR7      V n        \        V4      V n        \        VP                  ,          V n	        \        P                  ! WD^^RR7      V n
        \        V4      V n        \        VP                  ,          V n        \        P                  ! WC^RR7      V n        \        V4      V n        R# )a"  
Args:
    config (`VitDetConfig`):
        Model configuration.
    in_channels (`int`):
        Number of input channels.
    out_channels (`int`):
        Number of output channels.
    bottleneck_channels (`int`):
        Number of output channels for the 3x3 "bottleneck" conv layers.
Fr‡   )Úpaddingrˆ   N)r   r   r   r'   Úconv1r¦   Únorm1r   Ú
hidden_actÚact1Úconv2Únorm2Úact2Úconv3Únorm3)r)   r*   Úin_channelsÚout_channelsÚbottleneck_channelsr,   s   &&&&&€r-   r   Ú!VitDetResBottleneckBlock.__init__$  sœ   ø€ ô 	‰ÑÔÜ—Y’Y˜{ÀÈÔOˆŒ
Ü$Ð%8Ó9ˆŒ
Ü˜6×,Ñ,Õ-ˆŒ	ä—Y’YÐ2ÈÐTUÐ\aÔbˆŒ
Ü$Ð%8Ó9ˆŒ
Ü˜6×,Ñ,Õ-ˆŒ	ä—Y’YÐ2À!È%ÔPˆŒ
Ü$ \Ó2ˆŽ
r/   c                óX   € TpV P                  4        F  pV! V4      pK  	  W,           pV# r¢   )Úchildren)r)   r±   ÚoutÚlayers   &&  r-   rX   Ú VitDetResBottleneckBlock.forward<  s.   € ØˆØ—]‘]–_ˆEÙ˜“*ŠCñ %ð �gˆØˆ
r/   )r¼   r¿   r¹   r½   rÀ   rº   r¾   rÁ   r¤   rb   s   @@r-   r¶   r¶     s   ù‡ € ñõ
3÷0ò r/   r¶   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú	VitDetMlpiE  c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )rL   Úin_featuresÚhidden_featuresrN   N)r9   )rQ   rR   s   "€r-   rS   ÚVitDetMlp.__annotate__F  s"   ø€ ÷ 4ñ 4©Cð 4Á#ð 4È$ñ 4r/   c                ó  <€ \         SV `  4        \        P                  ! W#4      V n        \
        VP                  ,          V n        \        P                  ! W24      V n        \        P                  ! VP                  4      V n        R # r¢   )r   r   r   rŒ   Úfc1r   r»   ÚactÚfc2ÚDropoutÚdropout_probÚdrop)r)   r*   rÎ   rÏ   r,   s   &&&&€r-   r   ÚVitDetMlp.__init__F  sV   ø€ Ü‰ÑÔÜ—9’9˜[Ó:ˆŒÜ˜&×+Ñ+Õ,ˆŒÜ—9’9˜_Ó:ˆŒÜ—J’J˜v×2Ñ2Ó3ˆŽ	r/   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )rL   r±   rN   rO   )rQ   rR   s   "€r-   rS   rÐ   M  s#   ø€ ÷ ñ ™Ÿ™ð ©%¯,©,ñ r/   c                ó°   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# r¢   )rÒ   rÓ   r×   rÔ   )r)   r±   s   &&r-   rX   ÚVitDetMlp.forwardM  sH   € Ø�H‰H�Q‹KˆØ�H‰H�Q‹KˆØ�I‰I�a‹LˆØ�H‰H�Q‹KˆØ�I‰I�a‹Lˆàˆr/   )rÓ   r×   rÒ   rÔ   ©	rZ   r[   r\   r]   r   rX   r_   r`   ra   rb   s   @@r-   rÌ   rÌ   E  s   ù‡ € ÷4ó 4÷÷ ð r/   rÌ   c           	     ól  € V P                   w  r#rEV) V,          pV) V,          p\        P                  P                  V ^ ^ ^ V^ V34      p W6,           WG,           r˜W�,          p
W‘,          pV P	                  W*WW4      p V P                  ^ ^^^^^4      P                  4       P	                  RWV4      pWÈV	33# )aá  
Partition into non-overlapping windows with padding if needed.

Args:
    hidden_state (`torch.Tensor`):
        Input tokens with [batch_size, height, width, num_channels].
    window_size (`int`):
        Window size.

Returns:
    `tuple(torch.FloatTensor)` comprising various elements:
    - windows: windows after partition with [batch_size * num_windows, window_size, window_size, num_channels].
    - (padded_height, padded_width): padded height and width before partition
r7   )r8   r   r?   Úpadrs   rB   Ú
contiguous)rš   Úwindow_sizer~   rE   rF   r   Ú
pad_heightÚ	pad_widthÚpadded_heightÚpadded_widthÚn_hÚn_wÚwindowss   &&           r-   Úwindow_partitionrè   W  sÃ   € ð /;×.@Ñ.@Ñ+€J˜ð �'˜[Õ(€JØ�˜;Õ&€IÜ—=‘=×$Ñ$ \°A°q¸!¸YÈÈ:Ð3VÓW€LØ"(Õ"5°uÕ7H�<à
Õ
&€CØ
Õ
%€CØ×$Ñ$ Z°kÈÓb€LØ×"Ñ" 1 a¨¨A¨q°!Ó4×?Ñ?ÓA×FÑFÀrÈ;ÐeqÓr€GØ LÐ1Ð1Ð1r/   c                óF  € Vw  rEVw  rgWA,          pWQ,          p	V P                   ^ ,          W‰,          ,          p
V P                  W¨W‘VR4      pVP                  ^ ^^^^^4      P                  4       pVP                  W¤VR4      pVRRV1RV1R3,          P                  4       # )a  
Window unpartition into original sequences and removing padding.

Args:
    windows (`torch.Tensor`):
        Input tokens with [batch_size * num_windows, window_size, window_size, num_channels].
    window_size (`int`):
        Window size.
    pad_height_width (`tuple[int]`):
        Padded height and width (padded_height, padded_width).
    height_width (`tuple[int]`):
        Original height and width before padding.

Returns:
    hidden_state: unpartitioned sequences with [batch_size, height, width, num_channels].
r5   Nr7   )r8   rs   rB   rß   )rç   rà   Úpad_height_widthÚheight_widthrã   rä   rE   rF   rå   ræ   r~   rš   s   &&&&        r-   Úwindow_unpartitionrì   v  s©   € ð" #3Ñ€MØ �M€FØ
Õ
&€CØ
Õ
%€CØ—‘˜qÕ! c¥iÕ0€JØ—<‘< 
°À;ÐPRÓS€LØ×'Ñ'¨¨1¨a°°A°qÓ9×DÑDÓF€LØ×$Ñ$ ZÀÈbÓQ€Là˜˜7˜F˜7 F U F¨AÐ-Õ.×9Ñ9Ó;Ð;r/   c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚVitDetDropPathi”  zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )rL   Ú	drop_probrN   N)Úfloat)rQ   rR   s   "€r-   rS   ÚVitDetDropPath.__annotate__›  s   ø€ ÷ #ñ #¡%ð #°$ñ #r/   c                ó0   <€ \         SV `  4        Wn        R # r¢   )r   r   rð   )r)   rð   r,   s   &&€r-   r   ÚVitDetDropPath.__init__›  s   ø€ Ü‰ÑÔØ"Žr/   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )rL   Úhidden_statesrN   rO   )rQ   rR   s   "€r-   rS   rò   Ÿ  s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r/   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )ç        )ÚdtypeÚdevice)r   )
rð   Útrainingr8   Úndimr$   Úrandrù   rú   ÚfloorÚdiv)r)   rö   Ú	keep_probr8   Úrandom_tensors   &&   r-   rX   ÚVitDetDropPath.forwardŸ  s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r/   c                ó    <€ V ^8„  d   QhRS[ /# ©rL   rN   )Ústr)rQ   rR   s   "€r-   rS   rò   ¨  s   ø€ ÷ %ñ %™Cñ %r/   c                ó    € R V P                    2# )zp=©rð   ©r)   s   &r-   Ú
extra_reprÚVitDetDropPath.extra_repr¨  s   € Ø�D—N‘NÐ#Ð$Ð$r/   r  )rø   )rZ   r[   r\   r]   r^   r   rX   r	  r_   r`   ra   rb   s   @@r-   rî   rî   ”  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r/   rî   c                   ó\   a a€ ] tR tRt oRtRV3R lV 3R llltR	V3R lR lltRtVtV ;t	# )
ÚVitDetLayeri¬  zCThis corresponds to the Block class in the original implementation.c          
      ó6   <€ V ^8„  d   QhRS[ RS[RS[RS[RR/# )rL   r*   Údrop_path_raterà   Úuse_residual_blockrN   N)r   rñ   r9   Úbool)rQ   rR   s   "€r-   rS   ÚVitDetLayer.__annotate__¯  s5   ø€ ÷ !ñ !Ù"ð!Ù49ð!ÙLOð!Ùimð!à	ñ!r/   c                ó>  <€ \         S	V `  4        VP                  pVP                  p\	        V\
        \        34      '       d   TMWf3pVP                  p\	        V\
        \        34      '       d   TMWw3pV^ ,          V^ ,          ,          V^,          V^,          ,          3p\        P                  ! WQP                  R7      V n        \        Y^ 8X  d   TMW33R7      V n        VR8”  d   \        V4      M\        P                  ! 4       V n        \        P                  ! WQP                  R7      V n        \%        W\'        WQP(                  ,          4      R7      V n        W0n        W@n        V P.                  '       d   \1        VVVV^,          R7      V n        R# R# )é    )rª   )r‘   rø   )r*   rÎ   rÏ   )r*   rÂ   rÃ   rÄ   N)r   r   r   r    r   ÚlistÚtupler   r   Ú	LayerNormÚlayer_norm_epsrº   r…   Ú	attentionrî   ÚIdentityÚ	drop_pathr¾   rÌ   r9   Ú	mlp_ratioÚmlprà   r  r¶   Úresidual)
r)   r*   r  rà   r  r€   r    r   r‘   r,   s
   &&&&&    €r-   r   ÚVitDetLayer.__init__¯  sI  ø€ ô 	‰ÑÔà× Ñ ˆà×&Ñ&ˆ
Ü#-¨j¼4Ä¸-×#HÒ#H‘ZÈzÐNfˆ
à×&Ñ&ˆ
Ü#-¨j¼4Ä¸-×#HÒ#H‘ZÈzÐNfˆ
à  •m z°!¥}Õ4°jÀµmÀzÐRSÅ}Õ6TÐUˆ
Ü—\’\ #×+@Ñ+@ÔAˆŒ
Ü(Ø¸AÔ-=™zÀKÐC]ô
ˆŒð <JÈCÔ;Oœ¨Ô7ÔUW×U`ÒU`ÓUbˆŒÜ—\’\ #×+@Ñ+@ÔAˆŒ
Ü FÌSÐQT×WgÑWgÕQgÓMhÔiˆŒà&Ôà"4ÔØ×"×"Ð"ä4ØØØ Ø$'¨1¥Hô	ˆDŽMñ #r/   c                ó²   <€ V ^8„  d   QhRS[ P                  RS[RS[S[ P                  S[ P                  3,          S[S[ P                  ,          ,          /# )rL   rö   r›   rN   )r$   rP   r  r  )rQ   rR   s   "€r-   rS   r  Ò  sM   ø€ ÷ 'ñ 'á—|‘|ð'ñ  ð'ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*©U±5·<±<Õ-@Õ	@ñ	'r/   c                ó¦  € VP                  ^ ^^^4      pTpV P                  V4      pV P                  ^ 8”  d=   VP                  ^,          VP                  ^,          rT\	        WP                  4      w  rV P                  VVR7      pV^ ,          pVR,          pV P                  ^ 8”  d   \        WP                  XXX34      pW0P                  V4      ,           pWP                  V P                  V P                  V4      4      4      ,           pVP                  ^ ^^^4      pV P                  '       d   V P                  V4      pV3V,           pV# )r  )r›   r6   )rB   rº   rà   r8   rè   r  rì   r  r  r¾   r  r  )	r)   rö   r›   ÚshortcutrE   rF   rê   Úself_attention_outputsr    s	   &&&      r-   rX   ÚVitDetLayer.forwardÒ  sA  € ð
 &×-Ñ-¨a°°A°qÓ9ˆà ˆàŸ
™
 =Ó1ˆð ×Ñ˜aÔØ)×/Ñ/°Õ2°M×4GÑ4GÈÕ4J�EÜ.>¸}×N^ÑN^Ó._Ñ+ˆMà!%§¡ØØ/ð "0ó "
Ðð /¨qÕ1ˆØ(¨Õ,ˆð ×Ñ˜aÔÜ.¨}×>NÑ>NÐP`ÐciÐkpÐbqÓrˆMð !§>¡>°-Ó#@Õ@ˆà%¯©°t·x±xÀÇ
Á
È=Ó@YÓ7ZÓ([Õ[ˆà%×-Ñ-¨a°°A°qÓ9ˆà×"×"Ð"Ø ŸM™M¨-Ó8ˆMà Ð" WÕ,ˆàˆr/   )r  r  r  rº   r¾   r  r  rà   )r  r  Fr£   r¤   rb   s   @@r-   r  r  ¬  s"   ù‡ € ÙM÷!õ !÷F'÷ 'ò 'r/   r  c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚVitDetEncoderiü  c                ó$   <€ V ^8„  d   QhRS[ RR/# )rL   r*   rN   Nr   )rQ   rR   s   "€r-   rS   ÚVitDetEncoder.__annotate__ý  s   ø€ ÷ ,ñ ,™|ð ,°ñ ,r/   c           
     óÖ  <€ \         SV `  4        Wn        VP                  p\        P
                  ! ^ VP                  VRR7       Uu. uF  q3P                  4       NK  	  pp. p\        V4       FO  pTP                  \        TWF,          WaP                  9   d   VP                  M^ WaP                  9   R7      4       KQ  	  \        P                  ! V4      V n        RV n        R# u upi )r  Úcpu)rú   )r  rà   r  FN)r   r   r*   Únum_hidden_layersr$   Úlinspacer  ÚitemÚrangeÚappendr  Úwindow_block_indicesrà   Úresidual_block_indicesr   Ú
ModuleListrÉ   Úgradient_checkpointing)r)   r*   Údepthr±   r  ÚlayersÚir,   s   &&     €r-   r   ÚVitDetEncoder.__init__ý  sÄ   ø€ Ü‰ÑÔØŒØ×(Ñ(ˆô -2¯NªN¸1¸f×>SÑ>SÐUZÐchÕ,iÓjÑ,i qŸ&™&ž(Ñ,iˆÐjàˆÜ�u–ˆAØ�M‰MÜØØ#1Õ#4Ø67×;VÑ;VÔ6V × 2Ò 2Ð\]Ø'(×,IÑ,IÑ'Iô	öñ ô —]’] 6Ó*ˆŒ
Ø&+ˆÖ#ùò ks   ÁC&c                ó\   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[RS[S[,          /# )rL   rö   r›   Úoutput_hidden_statesÚreturn_dictrN   ©r$   rP   r  r  r	   )rQ   rR   s   "€r-   rS   r'    sF   ø€ ÷ 
ñ 
á—|‘|ð
ñ  ð
ñ #ð	
ñ
 ð
ñ 
‘Õ	 ñ
r/   c                ó”  € V'       d   RMR pV'       d   RMR p\        V P                  4       FA  w  rxV'       d
   WQ3,           pV! W4      p	V	^ ,          pV'       g   K1  Wi^,          3,           pKC  	  V'       d
   WQ3,           pV'       g1   \        ;QJ d    . R WV3 4       F  NK  	  5# ! R WV3 4       4      # \        VVVR7      # )Nc              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5ir¢   © )Ú.0Úvs   & r-   Ú	<genexpr>Ú(VitDetEncoder.forward.<locals>.<genexpr>,  s   é € ÐmÑ$[˜qŸšÓ$[ùs   ‚Œ
©Úlast_hidden_staterö   Ú
attentionsr=  )Ú	enumeraterÉ   r  r	   )
r)   rö   r›   r8  r9  Úall_hidden_statesÚall_self_attentionsr5  Úlayer_moduleÚlayer_outputss
   &&&&&     r-   rX   ÚVitDetEncoder.forward  s¿   € ÷ #7™B¸DÐß$5™b¸4Ðä(¨¯©Ö4‰OˆAß#Ø$5Ð8HÕ$HÐ!á(¨ÓJˆMà)¨!Õ,ˆMç Ñ Ø&9È1Õ=MÐ<OÕ&OÒ#ñ  5÷  Ø 1Ð4DÕ DÐçß”5Ñm ]ÐGZÑ$[Óm—5Ðm�5Ñm ]ÐGZÑ$[ÓmÓmÐmÜØ+Ø+Ø*ô
ð 	
r/   )r*   r2  rÉ   )FFTrÜ   rb   s   @@r-   r%  r%  ü  s   ù‡ € ÷,ó ,÷,
÷ 
ò 
r/   r%  c                   ó†   a a€ ] tR tRt oRtRtR	tRt. t]	P                  ! 4       V3R lV 3R ll4       tV3R ltRtVtV ;t# )
ÚVitDetPreTrainedModeli4  ÚvitdetrM   Tc                ó€   <€ V ^8„  d   QhRS[ P                  S[ P                  ,          S[ P                  ,          RR/# )rL   ÚmodulerN   N)r   rŒ   r'   r  )rQ   rR   s   "€r-   rS   Ú"VitDetPreTrainedModel.__annotate__>  s1   ø€ ÷ +ñ +¡B§I¡I±·	±	Õ$9¹B¿L¹LÕ$Hð +ÈTñ +r/   c                óÎ  <€ \         SV `  V4       \        V\        P                  \        P
                  34      '       dj   \        P                  ! VP                  RV P                  P                  R7       VP                  e#   \        P                  ! VP                  4       R# R# \        V\        4      '       d:   \        P                  ! VP                  RV P                  P                  R7       R# \        V\        4      '       d�   V P                  P                   '       dq   \        P                  ! VP"                  RV P                  P                  R7       \        P                  ! VP$                  RV P                  P                  R7       R# \        V\&        4      '       Ed4   VP(                  VP*                  VP,                  3 FW  p\        P.                  ! VP                  RRR7       VP                  f   K6  \        P0                  ! VP                  ^ 4       KY  	  VP2                  VP4                  3 FC  p\        P6                  ! VP                  4       \        P                  ! VP                  4       KE  	  \        P                  ! VP8                  P                  4       \        P                  ! VP8                  P                  4       R# R# )zInitialize the weightsrø   )r¯   ÚstdNÚfan_outÚrelu)r3   Únonlinearity)r   Ú_init_weightsr   r   rŒ   r'   ÚinitÚtrunc_normal_r©   r*   Úinitializer_rangerˆ   Úzeros_r   r&   r…   r�   rv   rw   r¶   r¹   r½   rÀ   Úkaiming_normal_Ú	constant_rº   r¾   Úones_rÁ   )r)   rO  rÉ   r,   s   && €r-   rV  Ú#VitDetPreTrainedModel._init_weights=  sÆ  ø€ ô 	‰Ñ˜fÔ%Ü�fœrŸy™y¬"¯)©)Ð4×5Ò5Ü×Ò˜vŸ}™}°3¸D¿K¹K×<YÑ<YÕZØ�{‰{Ò&Ü—’˜FŸK™KÖ(ñ 'ä˜Ô 0×1Ò1Ü×Ò˜v×9Ñ9ÀÈÏÉ×IfÑIf×gÜ˜¤×0Ò0°T·[±[×5a×5aÐ5aÜ×Ò˜v×/Ñ/°c¸t¿{¹{×?\Ñ?\Õ]Ü×Ò˜v×/Ñ/°c¸t¿{¹{×?\Ñ?\×]Ü˜Ô 8×9Ó9Ø Ÿ,™,¨¯©°f·l±lÓC�Ü×$Ò$ U§\¡\¸	ÐPVÕWØ—:‘:Ô)Ü—N’N 5§:¡:¨qÖ1ñ Dð !Ÿ,™,¨¯©Ó5�Ü—
’
˜5Ÿ<™<Ô(Ü—’˜EŸJ™JÖ'ñ 6ô �KŠK˜Ÿ™×+Ñ+Ô,Ü�KŠK˜Ÿ™×)Ñ)Ö*ñ :r/   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©rL   r*   r   )rQ   rR   s   "€r-   rS   rP  4  s   ø‡ ‚ áÑò r/   r=  )Úimage)rZ   r[   r\   r]   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesr$   Úno_gradrV  Ú__annotate_func__r_   r`   ra   rb   s   @@r-   rL  rL  4  sH   ù‡ € ð !ÐØ$€OØ!ÐØ&*Ð#ØÐà
‡]‚]ƒ_÷+ò +ó ð+÷ … r/   rL  c                   óp   a a€ ] tR tRt oV3R lV 3R lltV3R lR lt]R	V3R lR ll4       tRtVt	V ;t
# )
ÚVitDetModeliW  c                ó    <€ V ^8„  d   QhRS[ /# r`  r   )rQ   rR   s   "€r-   rS   ÚVitDetModel.__annotate__Y  s   ø€ ÷ ñ ™|ñ r/   c                ó’   <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        V P                  4        R # r¢   )r   r   r*   r   rW   r%  ÚencoderÚ	post_init)r)   r*   r,   s   &&€r-   r   ÚVitDetModel.__init__Y  s9   ø€ Ü‰Ñ˜Ô ØŒä*¨6Ó2ˆŒÜ$ VÓ,ˆŒð 	�‰Ör/   c                ó    <€ V ^8„  d   QhRS[ /# r  ©r   )rQ   rR   s   "€r-   rS   rl  c  ó   ø€ ÷ *ñ *Ñ&6ñ *r/   c                ó.   € V P                   P                  # r¢   ©rW   r(   r  s   &r-   Úget_input_embeddingsÚ VitDetModel.get_input_embeddingsc  ó   € Ø�‰×)Ñ)Ð)r/   c                ó”   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# )rL   rM   Nr›   r8  r9  rN   r:  )rQ   rR   s   "€r-   rS   rl  g  sW   ø€ ÷ 5
ñ 5
á—l‘l TÕ)ð5
ñ   $�;ð5
ñ # T�kð	5
ñ
 ˜D•[ð5
ñ 
‘Õ	 ñ5
r/   c                óœ  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pVf   \	        R4      hV P                  V4      pV P                  VVVVR7      pV^ ,          pV'       g   V3VR,          ,           # \        VVP                  VP                  R7      # )aw  
Examples:

```python
>>> from transformers import VitDetConfig, VitDetModel
>>> import torch

>>> config = VitDetConfig()
>>> model = VitDetModel(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 768, 14, 14]
```z You have to specify pixel_values)r›   r8  r9  r6   rB  )
r*   r›   r8  r9  r<   rW   rn  r	   rö   rD  )	r)   rM   r›   r8  r9  ÚkwargsÚembedding_outputÚencoder_outputsÚsequence_outputs	   &&&&&,   r-   rX   ÚVitDetModel.forwardf  sÖ   € ð8 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒÜÐ?Ó@Ð@àŸ?™?¨<Ó8ÐàŸ,™,ØØ/Ø!5Ø#ð	 'ó 
ˆð *¨!Õ,ˆçØ#Ð%¨¸Õ(;Õ;Ð;äØ-Ø)×7Ñ7Ø&×1Ñ1ô
ð 	
r/   )r*   rW   rn  )NNNN)rZ   r[   r\   r]   r   rv  r   rX   r_   r`   ra   rb   s   @@r-   rj  rj  W  s7   ù‡ € ÷ó ÷*ð *ð ÷5
ñ 5
ó ÷5
ð 5
r/   rj  zF
    ViTDet backbone, to be used with frameworks like Mask R-CNN.
    )Úcustom_introc                   óx   a a€ ] tR tRt oV 3R ltV3R lR lt]]]RV3R lR ll4       4       4       t	Rt
VtV ;t# )	ÚVitDetBackboneiŸ  c                ó  <€ \         SV `  V4       \        V4      V n        \	        V4      V n        \        VP                  ^,           4       Uu. uF  q!P                  NK  	  upV n	        V P                  4        R# u upi )r   N)r   r   r   rW   r%  rn  r-  r*  r   Únum_featuresro  )r)   r*   r   r,   s   && €r-   r   ÚVitDetBackbone.__init__¥  sh   ø€ Ü‰Ñ˜Ô ä*¨6Ó2ˆŒÜ$ VÓ,ˆŒÜ9>¸v×?WÑ?WÐZ[Õ?[Ô9\Ó]Ñ9\°A×/Ô/Ñ9\Ñ]ˆÔð 	�‰Öùò ^s   ÁA=c                ó    <€ V ^8„  d   QhRS[ /# r  rr  )rQ   rR   s   "€r-   rS   ÚVitDetBackbone.__annotate__¯  rs  r/   c                ó.   € V P                   P                  # r¢   ru  r  s   &r-   rv  Ú#VitDetBackbone.get_input_embeddings¯  rx  r/   c          
      óv   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[R,          RS[R,          RS[/# )rL   rM   r8  Nr›   r9  rN   )r$   rP   r  r   )rQ   rR   s   "€r-   rS   r‡  µ  sM   ø€ ÷ <
ñ <
á—l‘lð<
ñ # T�kð<
ñ   $�;ð	<
ñ
 ˜D•[ð<
ñ 
ñ<
r/   c                ól  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV P	                  V4      pV P                  VRVVR7      pV'       d   VP                  MV^,          pRp	\        V P                  V4       F   w  r«W P                  9   g   K  W›3,          p	K"  	  V'       g/   V'       d   V	3VR,          ,           pV# V	3VR,          ,           pV# \        T	V'       d   VP                  MRVP                  R7      # )ap  
Examples:

```python
>>> from transformers import VitDetConfig, VitDetBackbone
>>> import torch

>>> config = VitDetConfig()
>>> model = VitDetBackbone(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 14, 14]
```NT)r8  r›   r9  r6   :rL   NN)Úfeature_mapsrö   rD  r=  )r*   r9  r8  r›   rW   rn  rö   ÚzipÚstage_namesÚout_featuresr   rD  )r)   rM   r8  r›   r9  r{  r|  r    rö   rŒ  Ústagerš   Úoutputs   &&&&&,       r-   rX   ÚVitDetBackbone.forward²  s'  € ð< &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐàŸ?™?¨<Ó8Ðà—,‘,ØØ!%Ø/Ø#ð	 ó 
ˆ÷ 2=˜×-Ò-À'È!Å*ˆàˆÜ#& t×'7Ñ'7¸Ö#GÑˆEØ×)Ñ)Ö)Ø Õ/’ñ $H÷ ß#Ø&˜¨7°2­;Õ6�ð ˆMð '˜¨7°2­;Õ6�ØˆMäØ%ß3G˜'×/Ò/ÈTØ×)Ñ)ô
ð 	
r/   )rW   rn  r„  )NNN)rZ   r[   r\   r]   r   rv  r   r   r   rX   r_   r`   ra   rb   s   @@r-   r‚  r‚  Ÿ  sB   ù‡ € õ÷*ð *ð Ø Ø÷<
ñ <
ó ó !ó ÷<
ð <
r/   r‚  )rj  rL  r‚  )2r^   Úcollections.abcr   r:   r$   r   Ú r   rW  Úactivationsr   Úbackbone_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r	   Úmodeling_utilsr
   Úutilsr   r   Úutils.genericr   Úconfiguration_vitdetr   Ú
get_loggerrZ   ÚloggerÚModuler   r=   Úscript_if_tracingrp   rƒ   r…   r¦   r¶   rÌ   rè   rì   rî   r  r%  rL  rj  r‚  Ú__all__r=  r/   r-   Ú<module>r¢     sh  ðñ ã Û ã Ý å &Ý !ß HÝ 9ß ?Ý -ß ,Ý -Ý .ð 
×	Ò	˜HÓ	%€ôU�r—y‘yô Uðp ‡�×Ññ!3ó ð!3òH&ôR;�b—i‘iô ;ô|�b—i‘iô ô,$˜rŸy™yô $ôN�—	‘	ô ò$2ò><ô<%�R—Y‘Yô %ô0MÐ,ô Mô`5
�B—I‘Iô 5
ðp ô+˜Oó +ó ð+ðD ôD
Ð'ó D
ó ðD
ñN ðôô
M
�]Ð$9ó M
óð
M
ò` E‚r/   