Ë
    ÛÓ^jìx  ã                   ó
  — d Z ddlZddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ dd	lmZ dd
lmZmZmZmZmZ ddlmZ ddlmZ  e«       r	ddlmZmZ nd„ Zd„ Z ed¬«      e G d„ de«      «       «       Z ed¬«      e G d„ de«      «       «       Z ed¬«      e G d„ de«      «       «       Z G d„ dej>                  «      Z  G d„ dej>                  «      Z! G d„ d ej>                  «      Z" G d!„ d"ej>                  «      Z# G d#„ d$ej>                  «      Z$ G d%„ d&ej>                  «      Z% G d'„ d(ej>                  «      Z& G d)„ d*ej>                  «      Z' G d+„ d,ej>                  «      Z( G d-„ d.ej>                  «      Z) G d/„ d0ej>                  «      Z* G d1„ d2ej>                  «      Z+e G d3„ d4e«      «       Z,e G d5„ d6e,«      «       Z- ed7¬«       G d8„ d9e,«      «       Z. ed:¬«       G d;„ d<e	e,«      «       Z/g d=¢Z0y)>z9PyTorch Dilated Neighborhood Attention Transformer model.é    N)Ú	dataclass)Únné   )ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚBackboneOutput)ÚPreTrainedModel)ÚModelOutputÚOptionalDependencyNotAvailableÚauto_docstringÚis_natten_availableÚrequires_backends)Úcan_return_tupleé   )ÚDinatConfig)Ú
natten2davÚnatten2dqkrpbc                  ó   — t        «       ‚©N©r   ©ÚargsÚkwargss     ús/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/dinat/modeling_dinat.pyr   r   )   ó   € Ü,Ó.Ð.ó    c                  ó   — t        «       ‚r   r   r   s     r   r   r   ,   r   r   zO
    Dinat encoder's outputs, with potential hidden states and attentions.
    )Úcustom_introc                   óÐ   — e Zd ZU dZdZej                  dz  ed<   dZe	ej                  df   dz  ed<   dZ
e	ej                  df   dz  ed<   dZe	ej                  df   dz  ed<   y)ÚDinatEncoderOutputaí  
    reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
        Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
        shape `(batch_size, hidden_size, height, width)`.

        Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
        include the spatial dimensions.
    NÚlast_hidden_state.Úhidden_statesÚ
attentionsÚreshaped_hidden_states)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   ÚtorchÚFloatTensorÚ__annotations__r#   Útupler$   r%   © r   r   r!   r!   0   s}   … ñð 37Ð�u×(Ñ(¨4Ñ/Ó6Ø:>€M�5˜×*Ñ*¨CÐ/Ñ0°4Ñ7Ó>Ø7;€J��e×'Ñ'¨Ð,Ñ-°Ñ4Ó;ØCGÐ˜E %×"3Ñ"3°SÐ"8Ñ9¸DÑ@ÔGr   r!   zW
    Dinat model's outputs that also contains a pooling of the last hidden states.
    c                   óø   — e Zd ZU dZdZej                  dz  ed<   dZej                  dz  ed<   dZ	e
ej                  df   dz  ed<   dZe
ej                  df   dz  ed<   dZe
ej                  df   dz  ed<   y)	ÚDinatModelOutputa±  
    pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size)`, *optional*, returned when `add_pooling_layer=True` is passed):
        Average pooling of the last layer hidden-state.
    reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
        Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
        shape `(batch_size, hidden_size, height, width)`.

        Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
        include the spatial dimensions.
    Nr"   Úpooler_output.r#   r$   r%   )r&   r'   r(   r)   r"   r*   r+   r,   r1   r#   r-   r$   r%   r.   r   r   r0   r0   F   s’   … ñ	ð 37Ð�u×(Ñ(¨4Ñ/Ó6Ø.2€M�5×$Ñ$ tÑ+Ó2Ø:>€M�5˜×*Ñ*¨CÐ/Ñ0°4Ñ7Ó>Ø7;€J��e×'Ñ'¨Ð,Ñ-°Ñ4Ó;ØCGÐ˜E %×"3Ñ"3°SÐ"8Ñ9¸DÑ@ÔGr   r0   z1
    Dinat outputs for image classification.
    c                   óø   — e Zd ZU dZdZej                  dz  ed<   dZej                  dz  ed<   dZ	e
ej                  df   dz  ed<   dZe
ej                  df   dz  ed<   dZe
ej                  df   dz  ed<   y)	ÚDinatImageClassifierOutputa7  
    loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
        Classification (or regression if config.num_labels==1) loss.
    logits (`torch.FloatTensor` of shape `(batch_size, config.num_labels)`):
        Classification (or regression if config.num_labels==1) scores (before SoftMax).
    reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
        Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
        shape `(batch_size, hidden_size, height, width)`.

        Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
        include the spatial dimensions.
    NÚlossÚlogits.r#   r$   r%   )r&   r'   r(   r)   r4   r*   r+   r,   r5   r#   r-   r$   r%   r.   r   r   r3   r3   _   s‘   … ñð &*€Dˆ%×
Ñ
˜dÑ
"Ó)Ø'+€FˆE×Ñ Ñ$Ó+Ø:>€M�5˜×*Ñ*¨CÐ/Ñ0°4Ñ7Ó>Ø7;€J��e×'Ñ'¨Ð,Ñ-°Ñ4Ó;ØCGÐ˜E %×"3Ñ"3°SÐ"8Ñ9¸DÑ@ÔGr   r3   c                   óf   ‡ — e Zd ZdZˆ fd„Zdej                  dz  deej                     fd„Z	ˆ xZ
S )ÚDinatEmbeddingsz6
    Construct the patch and position embeddings.
    c                 óÒ   •— t         ‰| �  «        t        |«      | _        t	        j
                  |j                  «      | _        t	        j                  |j                  «      | _
        y r   )ÚsuperÚ__init__ÚDinatPatchEmbeddingsÚpatch_embeddingsr   Ú	LayerNormÚ	embed_dimÚnormÚDropoutÚhidden_dropout_probÚdropout©ÚselfÚconfigÚ	__class__s     €r   r:   zDinatEmbeddings.__init__   sG   ø€ Ü‰ÑÔä 4°VÓ <ˆÔä—L‘L ×!1Ñ!1Ó2ˆŒ	Ü—z‘z &×"<Ñ"<Ó=ˆ�r   Úpixel_valuesNÚreturnc                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r   )r<   r?   rB   )rD   rG   Ú
embeddingss      r   ÚforwardzDinatEmbeddings.forward‡   s4   € Ø×*Ñ*¨<Ó8ˆ
Ø—Y‘Y˜zÓ*ˆ
à—\‘\ *Ó-ˆ
àÐr   )r&   r'   r(   r)   r:   r*   r+   r-   ÚTensorrK   Ú__classcell__©rF   s   @r   r7   r7   z   s4   ø„ ñô>ð E×$5Ñ$5¸Ñ$<ð ÀÀuÇ|Á|ÑAT÷ r   r7   c                   ó`   ‡ — e Zd ZdZˆ fd„Zdej                  dz  dej                  fd„Zˆ xZ	S )r;   zï
    This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
    `hidden_states` (patch embeddings) of shape `(batch_size, height, width, hidden_size)` to be consumed by a
    Transformer.
    c           
      óP  •— t         ‰| �  «        |j                  }|j                  |j                  }}|| _        |dk(  rnt        d«      ‚t        j                  t        j                  | j                  |dz  ddd¬«      t        j                  |dz  |ddd¬«      «      | _	        y )Né   z2Dinat only supports patch size of 4 at the moment.é   ©r   r   ©rR   rR   ©r   r   )Úkernel_sizeÚstrideÚpadding)
r9   r:   Ú
patch_sizeÚnum_channelsr>   Ú
ValueErrorr   Ú
SequentialÚConv2dÚ
projection)rD   rE   rY   rZ   Úhidden_sizerF   s        €r   r:   zDinatPatchEmbeddings.__init__—   sš   ø€ Ü‰ÑÔØ×&Ñ&ˆ
Ø$*×$7Ñ$7¸×9IÑ9I�kˆØ(ˆÔà˜Š?Øô ÐQÓRÐRäŸ-™-Ü�I‰I�d×'Ñ'¨¸Ñ)9ÀvÐV\ÐflÔmÜ�I‰I�k QÑ&¨ÀÐPVÐ`fÔgó
ˆ�r   rG   NrH   c                 ó¦   — |j                   \  }}}}|| j                  k7  rt        d«      ‚| j                  |«      }|j	                  dddd«      }|S )NzeMake sure that the channel dimension of the pixel values match with the one set in the configuration.r   rR   r   r   )ÚshaperZ   r[   r^   Úpermute)rD   rG   Ú_rZ   ÚheightÚwidthrJ   s          r   rK   zDinatPatchEmbeddings.forward¨   s`   € Ø)5×);Ñ);Ñ&ˆˆ<˜ Ø˜4×,Ñ,Ò,ÜØwóð ð —_‘_ \Ó2ˆ
Ø×'Ñ'¨¨1¨a°Ó3ˆ
àÐr   )
r&   r'   r(   r)   r:   r*   r+   rL   rK   rM   rN   s   @r   r;   r;   �   s/   ø„ ñô
ð"	 E×$5Ñ$5¸Ñ$<ð 	ÀÇÁ÷ 	r   r;   c                   ó”   ‡ — e Zd ZdZej
                  fdedej                  ddfˆ fd„Zde	j                  de	j                  fd„Zˆ xZS )	ÚDinatDownsamplerzâ
    Convolutional Downsampling Layer.

    Args:
        dim (`int`):
            Number of input channels.
        norm_layer (`nn.Module`, *optional*, defaults to `nn.LayerNorm`):
            Normalization layer class.
    ÚdimÚ
norm_layerrH   Nc                 ó–   •— t         ‰| �  «        || _        t        j                  |d|z  dddd¬«      | _         |d|z  «      | _        y )NrR   rS   rT   rU   F)rV   rW   rX   Úbias)r9   r:   rh   r   r]   Ú	reductionr?   )rD   rh   ri   rF   s      €r   r:   zDinatDownsampler.__init__¿   sE   ø€ Ü‰ÑÔØˆŒÜŸ™ 3¨¨C©¸VÈFÐ\bÐinÔoˆŒÙ˜q 3™wÓ'ˆ�	r   Úinput_featurec                 ó’   — | j                  |j                  dddd«      «      j                  dddd«      }| j                  |«      }|S )Nr   r   r   rR   )rl   rb   r?   )rD   rm   s     r   rK   zDinatDownsampler.forwardÅ   sJ   € ØŸ™ }×'<Ñ'<¸QÀÀ1ÀaÓ'HÓI×QÑQÐRSÐUVÐXYÐ[\Ó]ˆØŸ	™	 -Ó0ˆØÐr   )r&   r'   r(   r)   r   r=   ÚintÚModuler:   r*   rL   rK   rM   rN   s   @r   rg   rg   ´   sJ   ø„ ñð :<¿¹ñ (˜Cð (¨R¯Y©Yð (È$õ (ð U§\¡\ð °e·l±l÷ r   rg   c                   ój   ‡ — e Zd Zˆ fd„Z	 ddej
                  dedz  deej
                     fd„Zˆ xZ	S )ÚNeighborhoodAttentionc                 ó*  •— t         ‰| �  «        ||z  dk7  rt        d|› d|› d�«      ‚|| _        t	        ||z  «      | _        | j                  | j
                  z  | _        || _        || _        t        j                  t        j                  |d| j                  z  dz
  d| j                  z  dz
  «      «      | _        t        j                  | j                  | j                  |j                  ¬«      | _        t        j                  | j                  | j                  |j                  ¬«      | _        t        j                  | j                  | j                  |j                  ¬«      | _        t        j&                  |j(                  «      | _        y )Nr   zThe hidden size (z6) is not a multiple of the number of attention heads (ú)rR   r   )rk   )r9   r:   r[   Únum_attention_headsro   Úattention_head_sizeÚall_head_sizerV   Údilationr   Ú	Parameterr*   ÚzerosÚrpbÚLinearÚqkv_biasÚqueryÚkeyÚvaluer@   Úattention_probs_dropout_probrB   ©rD   rE   rh   Ú	num_headsrV   rx   rF   s         €r   r:   zNeighborhoodAttention.__init__Ì   sD  ø€ Ü‰ÑÔØ�‰?˜aÒÜØ# C 5Ð(^Ð_hÐ^iÐijÐkóð ð $-ˆÔ Ü#& s¨Y¡Ó#7ˆÔ Ø!×5Ñ5¸×8PÑ8PÑPˆÔØ&ˆÔØ ˆŒô —<‘<¤§¡¨I¸¸D×<LÑ<LÑ8LÈqÑ8PÐTUÐX\×XhÑXhÑThÐklÑTlÓ nÓoˆŒä—Y‘Y˜t×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
Ü—9‘9˜T×/Ñ/°×1CÑ1CÈ&Ï/É/ÔZˆŒÜ—Y‘Y˜t×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
ä—z‘z &×"EÑ"EÓFˆ�r   r#   Úoutput_attentionsNrH   c                 óp  — |j                   d d }g |¢d‘| j                  ‘­}| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }| j                  |«      j                  |«      j	                  dd«      }|t        j                  | j                  «      z  }t        ||| j                  | j                  | j                  «      }t        j                  j                  |d¬«      }	| j!                  |	«      }	t#        |	|| j                  | j                  «      }
|
j%                  ddddd«      j'                  «       }
|
j)                  «       d d | j*                  fz   }|
j                  |«      }
|r|
|	f}|S |
f}|S )	Néÿÿÿÿr   rR   )rh   r   r   rQ   éþÿÿÿ)ra   rv   r~   ÚviewÚ	transposer   r€   ÚmathÚsqrtr   r{   rV   rx   r   Ú
functionalÚsoftmaxrB   r   rb   Ú
contiguousÚsizerw   )rD   r#   r„   Úinput_shapeÚhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚattention_scoresÚattention_probsÚcontext_layerÚnew_context_layer_shapeÚoutputss                r   rK   zNeighborhoodAttention.forwardâ   s¦  € ð
 $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆØ—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆØ—H‘H˜]Ó+×0Ñ0°Ó>×HÑHÈÈAÓNˆ	Ø—j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆð
 "¤D§I¡I¨d×.FÑ.FÓ$GÑGˆô )¨°iÀÇÁÈ4×K[ÑK[Ð]a×]jÑ]jÓkÐô Ÿ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆð Ÿ,™, Ó7ˆä" ?°KÀ×AQÑAQÐSW×S`ÑS`ÓaˆØ%×-Ñ-¨a°°A°q¸!Ó<×GÑGÓIˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÑ"SÐØ%×*Ñ*Ð+BÓCˆá6G�= /Ð2ˆàˆð O\ÐM]ˆàˆr   ©F©
r&   r'   r(   r:   r*   rL   Úboolr-   rK   rM   rN   s   @r   rr   rr   Ë   s@   ø„ ôGð2 */ñ!à—|‘|ð!ð   $™;ð!ð 
ˆu�|‰|Ñ	÷	!r   rr   c                   ón   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  dej
                  fd„Zˆ xZS )ÚNeighborhoodAttentionOutputc                 ó    •— t         ‰| �  «        t        j                  ||«      | _        t        j
                  |j                  «      | _        y r   )r9   r:   r   r|   Údenser@   r�   rB   ©rD   rE   rh   rF   s      €r   r:   z$NeighborhoodAttentionOutput.__init__  s6   ø€ Ü‰ÑÔÜ—Y‘Y˜s CÓ(ˆŒ
Ü—z‘z &×"EÑ"EÓFˆ�r   r#   Úinput_tensorrH   c                 óJ   — | j                  |«      }| j                  |«      }|S r   ©r    rB   )rD   r#   r¢   s      r   rK   z#NeighborhoodAttentionOutput.forward  s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆàÐr   ©r&   r'   r(   r:   r*   rL   rK   rM   rN   s   @r   rž   rž     s2   ø„ ôGð
 U§\¡\ð ÀÇÁð ÐRW×R^ÑR^÷ r   rž   c                   ój   ‡ — e Zd Zˆ fd„Z	 ddej
                  dedz  deej
                     fd„Zˆ xZ	S )ÚNeighborhoodAttentionModulec                 ól   •— t         ‰| �  «        t        |||||«      | _        t	        ||«      | _        y r   )r9   r:   rr   rD   rž   Úoutputr‚   s         €r   r:   z$NeighborhoodAttentionModule.__init__  s0   ø€ Ü‰ÑÔÜ)¨&°#°yÀ+ÈxÓXˆŒ	Ü1°&¸#Ó>ˆ�r   r#   r„   NrH   c                 óf   — | j                  ||«      }| j                  |d   |«      }|f|dd  z   }|S ©Nr   r   )rD   r©   )rD   r#   r„   Úself_outputsÚattention_outputr™   s         r   rK   z#NeighborhoodAttentionModule.forward  sC   € ð
 —y‘y Ð0AÓBˆØŸ;™; |°A¡¸ÓFÐØ#Ð%¨°Q°RÐ(8Ñ8ˆØˆr   rš   r›   rN   s   @r   r§   r§     s?   ø„ ô?ð */ñà—|‘|ðð   $™;ðð 
ˆu�|‰|Ñ	÷	r   r§   c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚDinatIntermediatec                 ó  •— t         ‰| �  «        t        j                  |t	        |j
                  |z  «      «      | _        t        |j                  t        «      rt        |j                     | _        y |j                  | _        y r   )r9   r:   r   r|   ro   Ú	mlp_ratior    Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnr¡   s      €r   r:   zDinatIntermediate.__init__%  sa   ø€ Ü‰ÑÔÜ—Y‘Y˜s¤C¨×(8Ñ(8¸3Ñ(>Ó$?Ó@ˆŒ
Ü�f×'Ñ'¬Ô-Ü'-¨f×.?Ñ.?Ñ'@ˆDÕ$à'-×'8Ñ'8ˆDÕ$r   r#   rH   c                 óJ   — | j                  |«      }| j                  |«      }|S r   )r    rµ   ©rD   r#   s     r   rK   zDinatIntermediate.forward-  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr   r¥   rN   s   @r   r¯   r¯   $  s#   ø„ ô9ð U§\¡\ð °e·l±l÷ r   r¯   c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚDinatOutputc                 óÌ   •— t         ‰| �  «        t        j                  t	        |j
                  |z  «      |«      | _        t        j                  |j                  «      | _	        y r   )
r9   r:   r   r|   ro   r±   r    r@   rA   rB   r¡   s      €r   r:   zDinatOutput.__init__4  sF   ø€ Ü‰ÑÔÜ—Y‘Yœs 6×#3Ñ#3°cÑ#9Ó:¸CÓ@ˆŒ
Ü—z‘z &×"<Ñ"<Ó=ˆ�r   r#   rH   c                 óJ   — | j                  |«      }| j                  |«      }|S r   r¤   r·   s     r   rK   zDinatOutput.forward9  s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØÐr   r¥   rN   s   @r   r¹   r¹   3  s#   ø„ ô>ð
 U§\¡\ð °e·l±l÷ r   r¹   c                   ór   ‡ — e Zd ZdZd	deddfˆ fd„Zdej                  dej                  fd„Zde	fd„Z
ˆ xZS )
ÚDinatDropPathzÏ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>`_.
    Ú	drop_probrH   Nc                 ó0   •— t         ‰| �  «        || _        y r   )r9   r:   r¾   )rD   r¾   rF   s     €r   r:   zDinatDropPath.__init__G  s   ø€ Ü‰ÑÔØ"ˆ�r   r#   c                 óP  — | j                   dk(  s| j                  s|S d| j                   z
  }|j                  d   fd|j                  dz
  z  z   }t	        j
                  ||j                  |j                  ¬«      }t	        j                  ||z   «      }|j                  |«      |z  S )Nç        r   r   )r   )ÚdtypeÚdevice)
r¾   Útrainingra   Úndimr*   ÚrandrÂ   rÃ   ÚfloorÚdiv)rD   r#   Ú	keep_probra   Úrandom_tensors        r   rK   zDinatDropPath.forwardK  s—   € Ø�>‰>˜SÒ ¨¯ªØ Ð Ø˜Ÿ™Ñ&ˆ	Ø×$Ñ$ QÑ'Ð)¨D°M×4FÑ4FÈÑ4JÑ,KÑKˆÜŸ
™
 5°×0CÑ0CÈM×L`ÑL`ÔaˆÜŸ™ M°IÑ$=Ó>ˆØ× Ñ  Ó+¨mÑ;Ð;r   c                 ó    — d| j                   › �S )Nzp=)r¾   ©rD   s    r   Ú
extra_reprzDinatDropPath.extra_reprT  s   € Ø�D—N‘NÐ#Ð$Ð$r   ©rÁ   )r&   r'   r(   r)   Úfloatr:   r*   rL   rK   r´   rÍ   rM   rN   s   @r   r½   r½   @  sB   ø„ ññ# %ð #°$õ #ð< U§\¡\ð <°e·l±ló <ð%˜C÷ %r   r½   c            	       óŠ   ‡ — e Zd Zdˆ fd„	Zd„ Z	 d	dej                  dedz  deej                  ej                  f   fd„Z	ˆ xZ
S )
Ú
DinatLayerc                 óÚ  •— t         ‰| �  «        |j                  | _        |j                  | _        || _        | j                  | j                  z  | _        t        j                  ||j                  ¬«      | _	        t        |||| j                  | j                  ¬«      | _        |dkD  rt        |«      nt        j                  «       | _        t        j                  ||j                  ¬«      | _        t!        ||«      | _        t%        ||«      | _        |j(                  dkD  r?t        j*                  |j(                  t-        j.                  d|f«      z  d¬«      | _        y d | _        y )N©Úeps)rV   rx   rÁ   r   rR   T)Úrequires_grad)r9   r:   Úchunk_size_feed_forwardrV   rx   Úwindow_sizer   r=   Úlayer_norm_epsÚlayernorm_beforer§   Ú	attentionr½   ÚIdentityÚ	drop_pathÚlayernorm_afterr¯   Úintermediater¹   r©   Úlayer_scale_init_valuery   r*   ÚonesÚlayer_scale_parameters)rD   rE   rh   rƒ   rx   Údrop_path_raterF   s         €r   r:   zDinatLayer.__init__Y  s(  ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$Ø!×-Ñ-ˆÔØ ˆŒØ×+Ñ+¨d¯m©mÑ;ˆÔÜ "§¡¨S°f×6KÑ6KÔ LˆÔÜ4Ø�C˜°×0@Ñ0@È4Ï=É=ô
ˆŒð ;IÈ3Ò:Nœ ~Ô6ÔTV×T_ÑT_ÓTaˆŒÜ!Ÿ|™|¨C°V×5JÑ5JÔKˆÔÜ-¨f°cÓ:ˆÔÜ! &¨#Ó.ˆŒð ×,Ñ,¨qÒ0ô �L‰L˜×6Ñ6¼¿¹ÀQÈÀHÓ9MÑMÐ]aÔbð 	Õ#ð ð 	Õ#r   c                 óÎ   — | j                   }d}||k  s||k  rJdx}}t        d||z
  «      }t        d||z
  «      }	dd||||	f}t        j                  j	                  ||«      }||fS )N)r   r   r   r   r   r   r   )r×   Úmaxr   rŒ   Úpad)
rD   r#   rd   re   r×   Ú
pad_valuesÚpad_lÚpad_tÚpad_rÚpad_bs
             r   Ú	maybe_padzDinatLayer.maybe_padm  s€   € Ø×&Ñ&ˆØ'ˆ
Ø�KÒ 5¨;Ò#6ØÐˆE�EÜ˜˜;¨Ñ.Ó/ˆEÜ˜˜;¨Ñ/Ó0ˆEØ˜Q  u¨e°UÐ;ˆJÜŸM™M×-Ñ-¨m¸ZÓHˆMØ˜jÐ(Ð(r   r#   r„   NrH   c                 ó€  — |j                  «       \  }}}}|}| j                  |«      }| j                  |||«      \  }}|j                  \  }	}
}}	| j	                  ||¬«      }|d   }|d   dkD  xs |d   dkD  }|r|d d …d |…d |…d d …f   j                  «       }| j                  �| j                  d   |z  }|| j                  |«      z   }| j                  |«      }| j                  | j                  |«      «      }| j                  �| j                  d   |z  }|| j                  |«      z   }|r	||d   f}|S |f}|S )N)r„   r   r   é   r   )r�   rÙ   rë   ra   rÚ   rŽ   rá   rÜ   rÝ   r©   rÞ   )rD   r#   r„   Ú
batch_sizerd   re   ÚchannelsÚshortcutræ   rc   Ú
height_padÚ	width_padÚattention_outputsr­   Ú
was_paddedÚlayer_outputÚlayer_outputss                    r   rK   zDinatLayer.forwardx  s|  € ð
 /<×.@Ñ.@Ó.BÑ+ˆ
�F˜E 8Ø ˆà×-Ñ-¨mÓ<ˆà$(§N¡N°=À&È%Ó$PÑ!ˆ�zà&3×&9Ñ&9Ñ#ˆˆ:�y !à ŸN™N¨=ÐL]˜NÓ^Ðà,¨QÑ/Ðà ‘] QÑ&Ò;¨*°Q©-¸!Ñ*;ˆ
ÙØ/²°7°F°7¸F¸U¸FÂAÐ0EÑF×QÑQÓSÐà×&Ñ&Ð2Ø#×:Ñ:¸1Ñ=Ð@PÑPÐà  4§>¡>Ð2BÓ#CÑCˆà×+Ñ+¨MÓ:ˆØ—{‘{ 4×#4Ñ#4°\Ó#BÓCˆà×&Ñ&Ð2Ø×6Ñ6°qÑ9¸LÑHˆLà$ t§~¡~°lÓ'CÑCˆá@Q˜Ð'8¸Ñ';Ð<ˆØÐð YeÐWfˆØÐr   rÎ   rš   )r&   r'   r(   r:   rë   r*   rL   rœ   r-   rK   rM   rN   s   @r   rÑ   rÑ   X  sM   ø„ õ
ò(	)ð */ñ$à—|‘|ð$ð   $™;ð$ð 
ˆu�|‰|˜UŸ\™\Ð)Ñ	*÷	$r   rÑ   c                   ój   ‡ — e Zd Zˆ fd„Z	 ddej
                  dedz  deej
                     fd„Zˆ xZ	S )Ú
DinatStagec                 ó<  •— t         ‰	| �  «        || _        || _        t	        j
                  t        |«      D �cg c]  }t        |||||   ||   ¬«      ‘Œ c}«      | _        |�% ||t        j                  ¬«      | _
        d| _        y d | _
        d| _        y c c}w )N)rE   rh   rƒ   rx   râ   )rh   ri   F)r9   r:   rE   rh   r   Ú
ModuleListÚrangerÑ   Úlayersr=   Ú
downsampleÚpointing)
rD   rE   rh   Údepthrƒ   Ú	dilationsrâ   rý   ÚirF   s
            €r   r:   zDinatStage.__init__   sŸ   ø€ Ü‰ÑÔØˆŒØˆŒÜ—m‘mô ˜u›ö	ð ô Ø!ØØ'Ø& q™\Ø#1°!Ñ#4öò	ó
ˆŒð Ð!Ù(¨S¼R¿\¹\ÔJˆDŒOð ˆ�ð #ˆDŒOàˆ�ùò%	s   ºBr#   r„   NrH   c                 óà   — |j                  «       \  }}}}t        | j                  «      D ]  \  }} |||«      }|d   }Œ |}	| j                  �| j                  |	«      }||	f}
|r|
dd  z  }
|
S r«   )r�   Ú	enumeraterü   rý   )rD   r#   r„   rc   rd   re   r  Úlayer_modulerö   Ú!hidden_states_before_downsamplingÚstage_outputss              r   rK   zDinatStage.forward¹  s”   € ð
 ,×0Ñ0Ó2Ñˆˆ6�5˜!Ü(¨¯©Ó5ò 	-‰OˆAˆ|Ù(¨Ð8IÓJˆMØ)¨!Ñ,‰Mð	-ð -:Ð)Ø�?‰?Ð&Ø ŸO™OÐ,MÓNˆMà&Ð(IÐJˆáØ˜]¨1¨2Ð.Ñ.ˆMØÐr   rš   r›   rN   s   @r   rø   rø   Ÿ  s?   ø„ ôð8 */ñà—|‘|ðð   $™;ðð 
ˆu�|‰|Ñ	÷	r   rø   c                   óz   ‡ — e Zd Zˆ fd„Z	 	 	 	 d
dej
                  dedz  dedz  dedz  dedz  deez  fd	„Z	ˆ xZ
S )ÚDinatEncoderc                 óÄ  •— t         ‰| �  «        t        |j                  «      | _        || _        t        j                  d|j                  t        |j                  «      d¬«      D �cg c]  }|j                  «       ‘Œ }}t        j                  t        | j                  «      D �cg c]ž  }t        |t        |j                   d|z  z  «      |j                  |   |j"                  |   |j$                  |   |t        |j                  d | «      t        |j                  d |dz    «       || j                  dz
  k  rt&        nd ¬«      ‘Œ  c}«      | _        y c c}w c c}w )Nr   Úcpu)rÃ   rR   r   )rE   rh   rÿ   rƒ   r   râ   rý   )r9   r:   ÚlenÚdepthsÚ
num_levelsrE   r*   Úlinspacerâ   ÚsumÚitemr   rú   rû   rø   ro   r>   rƒ   r   rg   Úlevels)rD   rE   ÚxÚdprÚi_layerrF   s        €r   r:   zDinatEncoder.__init__Ï  s,  ø€ Ü‰ÑÔÜ˜fŸm™mÓ,ˆŒØˆŒÜ!&§¡°°6×3HÑ3HÌ#ÈfÏmÉmÓJ\ÐejÔ!kÖl˜Aˆq�v‰v�xÐlˆÐlÜ—m‘mô  % T§_¡_Ó5öð ô Ø!Ü˜F×,Ñ,¨q°'©zÑ9Ó:Ø Ÿ-™-¨Ñ0Ø$×.Ñ.¨wÑ7Ø$×.Ñ.¨wÑ7Ø#&¤s¨6¯=©=¸¸'Ð+BÓ'CÄcÈ&Ï-É-ÐXeÐZaÐdeÑZeÐJfÓFgÐ#hØ4;¸d¿o¹oÐPQÑ>QÒ4QÕ/ÐX\öòó
ˆ�ùò mùòs   Á)EÂ(B#Er#   r„   NÚoutput_hidden_statesÚ(output_hidden_states_before_downsamplingÚreturn_dictrH   c                 ó¾  — |rdnd }|rdnd }|rdnd }|r |j                  dddd«      }	||fz  }||	fz  }t        | j                  «      D ]l  \  }
} |||«      }|d   }|d   }|r#|r!|j                  dddd«      }	||fz  }||	fz  }n$|r"|s |j                  dddd«      }	||fz  }||	fz  }|sŒe||dd  z  }Œn |st        d„ |||fD «       «      S t	        ||||¬«      S )Nr.   r   r   r   rR   c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr   r.   )Ú.0Úvs     r   ú	<genexpr>z'DinatEncoder.forward.<locals>.<genexpr>
  s   è ø€ Òm˜qÐ_`Ñ_lœÑmùs   ‚Š)r"   r#   r$   r%   )rb   r  r  r-   r!   )rD   r#   r„   r  r  r  Úall_hidden_statesÚall_reshaped_hidden_statesÚall_self_attentionsÚreshaped_hidden_stater  r  rö   r  s                 r   rK   zDinatEncoder.forwardã  s]  € ñ #7™B¸DÐÙ+?¡RÀTÐ"Ù$5™b¸4Ðáà$1×$9Ñ$9¸!¸QÀÀ1Ó$EÐ!Ø -Ð!1Ñ1ÐØ&Ð+@Ð*BÑBÐ&ä(¨¯©Ó5ò 	9‰OˆAˆ|Ù(¨Ð8IÓJˆMà)¨!Ñ,ˆMØ0=¸aÑ0@Ð-á#Ñ(Pà(I×(QÑ(QÐRSÐUVÐXYÐ[\Ó(]Ð%Ø!Ð&GÐ%IÑIÐ!Ø*Ð/DÐ.FÑFÑ*Ù%Ñ.Và(5×(=Ñ(=¸aÀÀAÀqÓ(IÐ%Ø! mÐ%5Ñ5Ð!Ø*Ð/DÐ.FÑFÐ*â Ø# }°Q°RÐ'8Ñ8Ñ#ð%	9ñ( ÜÑm ]Ð4EÐGZÐ$[ÔmÓmÐmä!Ø+Ø+Ø*Ø#=ô	
ð 	
r   )FFFT)r&   r'   r(   r:   r*   rL   rœ   r-   r!   rK   rM   rN   s   @r   r  r  Î  so   ø„ ô
ð. */Ø,1Ø@EØ#'ñ.
à—|‘|ð.
ð   $™;ð.
ð # T™kð	.
ð
 37¸±+ð.
ð ˜D‘[ð.
ð 
Ð#Ñ	#÷.
r   r  c                   ó$   — e Zd ZU eed<   dZdZdZy)ÚDinatPreTrainedModelrE   ÚdinatrG   )ÚimageN)r&   r'   r(   r   r,   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesr.   r   r   r"  r"    s   … àÓØÐØ$€OØ!Ñr   r"  c                   óˆ   ‡ — e Zd Zd
ˆ fd„	Zd„ Ze	 	 	 	 ddej                  dz  dedz  dedz  dedz  de	e
z  f
d	„«       Zˆ xZS )Ú
DinatModelc                 óÖ  •— t         ‰| �  |«       t        | dg«       || _        t	        |j
                  «      | _        t        |j                  d| j                  dz
  z  z  «      | _	        t        |«      | _        t        |«      | _        t        j                  | j                  |j                   ¬«      | _        |rt        j$                  d«      nd| _        | j)                  «        y)zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        ÚnattenrR   r   rÓ   N)r9   r:   r   rE   r  r  r  ro   r>   Únum_featuresr7   rJ   r  Úencoderr   r=   rØ   Ú	layernormÚAdaptiveAvgPool1dÚpoolerÚ	post_init)rD   rE   Úadd_pooling_layerrF   s      €r   r:   zDinatModel.__init__  s³   ø€ ô
 	‰Ñ˜Ô ä˜$  
Ô+àˆŒÜ˜fŸm™mÓ,ˆŒÜ × 0Ñ 0°1¸¿¹È1Ñ9LÑ3MÑ MÓNˆÔä)¨&Ó1ˆŒÜ# FÓ+ˆŒäŸ™ d×&7Ñ&7¸V×=RÑ=RÔSˆŒÙ1B”b×*Ñ*¨1Ô-ÈˆŒð 	�‰Õr   c                 ó.   — | j                   j                  S r   ©rJ   r<   rÌ   s    r   Úget_input_embeddingszDinatModel.get_input_embeddings4  ó   € Ø�‰×/Ñ/Ð/r   NrG   r„   r  r  rH   c                 óR  — |�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j                  }|€t	        d«      ‚| j                  |«      }| j                  ||||¬«      }|d   }| j                  |«      }d }	| j                  �G| j                  |j                  dd«      j                  dd«      «      }	t        j                  |	d«      }	|s||	f|dd  z   }
|
S t        ||	|j                  |j                  |j                  ¬«      S )Nz You have to specify pixel_values©r„   r  r  r   r   rR   )r"   r1   r#   r$   r%   )rE   r„   r  r  r[   rJ   r-  r.  r0  Úflattenr‰   r*   r0   r#   r$   r%   )rD   rG   r„   r  r  r   Úembedding_outputÚencoder_outputsÚsequence_outputÚpooled_outputr©   s              r   rK   zDinatModel.forward7  sA  € ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆàÐÜÐ?Ó@Ð@àŸ?™?¨<Ó8ÐàŸ,™,ØØ/Ø!5Ø#ð	 'ó 
ˆð *¨!Ñ,ˆØŸ.™.¨Ó9ˆàˆØ�;‰;Ð"Ø ŸK™K¨×(?Ñ(?ÀÀ1Ó(E×(OÑ(OÐPQÐSTÓ(UÓVˆMÜ!ŸM™M¨-¸Ó;ˆMáØ% }Ð5¸ÈÈÐ8KÑKˆFàˆMäØ-Ø'Ø)×7Ñ7Ø&×1Ñ1Ø#2×#IÑ#Iô
ð 	
r   )T)NNNN)r&   r'   r(   r:   r5  r   r*   r+   rœ   r-   r0   rK   rM   rN   s   @r   r)  r)    s|   ø„ õò,0ð ð 26Ø)-Ø,0Ø#'ñ-
à×'Ñ'¨$Ñ.ð-
ð   $™;ð-
ð # T™kð	-
ð
 ˜D‘[ð-
ð 
Ð!Ñ	!ò-
ó ô-
r   r)  z¦
    Dinat Model transformer with an image classification head on top (a linear layer on top of the final hidden state
    of the [CLS] token) e.g. for ImageNet.
    c                   ó    ‡ — e Zd Zˆ fd„Ze	 	 	 	 	 d
dej                  dz  dej                  dz  dedz  dedz  dedz  de	e
z  fd	„«       Zˆ xZS )ÚDinatForImageClassificationc                 óX  •— t         ‰| �  |«       t        | dg«       |j                  | _        t	        |«      | _        |j                  dkD  r4t        j                  | j
                  j                  |j                  «      nt        j                  «       | _
        | j                  «        y )Nr+  r   )r9   r:   r   Ú
num_labelsr)  r#  r   r|   r,  rÛ   Ú
classifierr1  rC   s     €r   r:   z$DinatForImageClassification.__init__o  s„   ø€ Ü‰Ñ˜Ô ä˜$  
Ô+à ×+Ñ+ˆŒÜ Ó'ˆŒ
ð FL×EVÑEVÐYZÒEZŒB�I‰I�d—j‘j×-Ñ-¨v×/@Ñ/@ÔAÔ`b×`kÑ`kÓ`mð 	Œð
 	�‰Õr   NrG   Úlabelsr„   r  r  rH   c                 óT  — |�|n| j                   j                  }| j                  ||||¬«      }|d   }| j                  |«      }	d}
|�| j	                  ||	| j                   «      }
|s|	f|dd z   }|
�|
f|z   S |S t        |
|	|j                  |j                  |j                  ¬«      S )aŠ  
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        Nr8  r   rR   )r4   r5   r#   r$   r%   )	rE   r  r#  rB  Úloss_functionr3   r#   r$   r%   )rD   rG   rC  r„   r  r  r   r™   r=  r5   r4   r©   s               r   rK   z#DinatForImageClassification.forward  sÏ   € ð  &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆà—*‘*ØØ/Ø!5Ø#ð	 ó 
ˆð   ™
ˆà—‘ Ó/ˆàˆØÐØ×%Ñ% f¨f°d·k±kÓBˆDáØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä)ØØØ!×/Ñ/Ø×)Ñ)Ø#*×#AÑ#Aô
ð 	
r   )NNNNN)r&   r'   r(   r:   r   r*   r+   Ú
LongTensorrœ   r-   r3   rK   rM   rN   s   @r   r?  r?  h  s�   ø„ ôð  ð 26Ø*.Ø)-Ø,0Ø#'ñ*
à×'Ñ'¨$Ñ.ð*
ð × Ñ  4Ñ'ð*
ð   $™;ð	*
ð
 # T™kð*
ð ˜D‘[ð*
ð 
Ð+Ñ	+ò*
ó ô*
r   r?  zL
    NAT backbone, to be used with frameworks like DETR and MaskFormer.
    c                   óŒ   ‡ — e Zd Zˆ fd„Zd„ Zeee	 	 	 d
dej                  de
dz  de
dz  de
dz  def
d	„«       «       «       Zˆ xZS )ÚDinatBackbonec           	      ó  •— t         ‰| �  |«       t        | dg«       t        |«      | _        t        |«      | _        |j                  gt        t        |j                  «      «      D �cg c]  }t        |j                  d|z  z  «      ‘Œ c}z   | _        i }t        | j                  | j                  «      D ]  \  }}t!        j"                  |«      ||<   Œ t!        j$                  |«      | _        | j)                  «        y c c}w )Nr+  rR   )r9   r:   r   r7   rJ   r  r-  r>   rû   r  r  ro   r,  ÚzipÚout_featuresrï   r   r=   Ú
ModuleDictÚhidden_states_normsr1  )rD   rE   r  rM  ÚstagerZ   rF   s         €r   r:   zDinatBackbone.__init__³  sä   ø€ Ü‰Ñ˜Ô ä˜$  
Ô+ä)¨&Ó1ˆŒÜ# FÓ+ˆŒØ#×-Ñ-Ð.ÔX]Ô^aÐbh×boÑboÓ^pÓXqÖ1rÐST´#°f×6FÑ6FÈÈAÉÑ6MÕ2NÒ1rÑrˆÔð !ÐÜ#& t×'8Ñ'8¸$¿-¹-Ó#Hò 	DÑˆE�<Ü)+¯©°lÓ)CÐ Ò&ð	Dä#%§=¡=Ð1DÓ#EˆÔ ð 	�‰Õùò 2ss   Á*"Dc                 ó.   — | j                   j                  S r   r4  rÌ   s    r   r5  z"DinatBackbone.get_input_embeddingsÅ  r6  r   NrG   r  r„   r  rH   c                 ó  — |�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j                  }| j	                  |«      }| j                  ||ddd¬«      }|j                  }d}	t        | j                  |«      D ]®  \  }
}|
| j                  v sŒ|j                  \  }}}}|j                  dddd«      j                  «       }|j                  |||z  |«      } | j                  |
   |«      }|j                  ||||«      }|j                  dddd«      j                  «       }|	|fz  }	Œ° |s|	f}|r||j                  fz  }|S t!        |	|r|j                  nd|j"                  ¬	«      S )
a€  
        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, AutoBackbone
        >>> import torch
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> processor = AutoImageProcessor.from_pretrained("shi-labs/nat-mini-in1k-224")
        >>> model = AutoBackbone.from_pretrained(
        ...     "shi-labs/nat-mini-in1k-224", out_features=["stage1", "stage2", "stage3", "stage4"]
        ... )

        >>> inputs = processor(image, return_tensors="pt")

        >>> outputs = model(**inputs)

        >>> feature_maps = outputs.feature_maps
        >>> list(feature_maps[-1].shape)
        [1, 512, 7, 7]
        ```NT)r„   r  r  r  r.   r   rR   r   r   )Úfeature_mapsr#   r$   )rE   r  r  r„   rJ   r-  r%   rJ  Ústage_namesrK  ra   rb   rŽ   rˆ   rM  r#   r	   r$   )rD   rG   r  r„   r  r   r:  r™   r#   rQ  rN  Úhidden_staterî   rZ   rd   re   r©   s                    r   rK   zDinatBackbone.forwardÈ  sµ  € ðL &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐàŸ?™?¨<Ó8Ðà—,‘,ØØ/Ø!%Ø59Øð ó 
ˆð  ×6Ñ6ˆàˆÜ#& t×'7Ñ'7¸Ó#Gò 	0ÑˆE�<Ø˜×)Ñ)Ò)Ø:F×:LÑ:LÑ7�
˜L¨&°%Ø+×3Ñ3°A°q¸!¸QÓ?×JÑJÓL�Ø+×0Ñ0°¸VÀe¹^È\ÓZ�Ø>˜t×7Ñ7¸Ñ>¸|ÓL�Ø+×0Ñ0°¸VÀUÈLÓY�Ø+×3Ñ3°A°q¸!¸QÓ?×JÑJÓL�Ø  Ñ/‘ð	0ñ Ø"�_ˆFÙ#Ø˜7×0Ñ0Ð2Ñ2�ØˆMäØ%Ù3G˜'×/Ò/ÈTØ×)Ñ)ô
ð 	
r   )NNN)r&   r'   r(   r:   r5  r   r   r   r*   rL   rœ   r	   rK   rM   rN   s   @r   rH  rH  ­  sƒ   ø„ ôò$0ð Ø Øð -1Ø)-Ø#'ñJ
à—l‘lðJ
ð # T™kðJ
ð   $™;ð	J
ð
 ˜D‘[ðJ
ð 
òJ
ó ó !ó ôJ
r   rH  )r?  r)  r"  rH  )1r)   rŠ   Údataclassesr   r*   r   Úactivationsr   Úbackbone_utilsr   r   Úmodeling_outputsr	   Úmodeling_utilsr
   Úutilsr   r   r   r   r   Úutils.genericr   Úconfiguration_dinatr   Únatten.functionalr   r   r!   r0   r3   rp   r7   r;   rg   rr   rž   r§   r¯   r¹   r½   rÑ   rø   r  r"  r)  r?  rH  Ú__all__r.   r   r   ú<module>r^     sB  ðñ @ã Ý !ã Ý å !ß HÝ .Ý -÷õ õ .Ý ,ñ Ôß;Ð;ò/ò/ñ ðôð
 ôH˜ó Hó óðHñ  ðôð
 ôH�{ó Hó óðHñ& ðôð
 ôH ó Hó óðHô*�b—i‘iô ô,!˜2Ÿ9™9ô !ôH�r—y‘yô ô.8˜BŸI™Iô 8ôv
 "§)¡)ô 
ô "§)¡)ô ô"˜Ÿ	™	ô ô	�"—)‘)ô 	ô%�B—I‘Iô %ô0D�—‘ô DôN,�—‘ô ,ô^C
�2—9‘9ô C
ðL ô"˜?ó "ó ð"ð ôH
Ð%ó H
ó ðH
ñV ðôô<
Ð"6ó <
óð<
ñ~ ðôô
c
�MÐ#7ó c
óð
c
òL a�r   