Ë
    éÓ^j�U  ã                   óê  — d dl Z d dlZd dlZd dlmZ d dlmZ d dl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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#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,  ejZ                  e.«      Z/da0da1 e2ejf                  ji                  dd «      «      d kD  Z5g d¢Z6 edejn                  ¬«      Z8de
e9ef   dee9e9f   fd„Z:d4de;ddfd„Z<d4de;ddfd„Z=	 	 	 d5dejn                  dee
e9ef      dee	   deee9ef      ddf
d„Z>	 	 	 	 	 	 d6dejn                  dee
e9ef      de2de2d ee	   d!e;deee9ef      ddfd"„Z?de
e9ef   de
e9ef   fd#„Z@d$e
e9ef   d%ee9   ddfd&„ZAd7d'„ZB	 	 d8d(e9deee9e
e9ef   f      d)ee
e9ef      de(fd*„ZC	 	 	 	 	 	 	 	 d9d+eee8   e	d,e8f   f   d(e9d-e;dee
   d)ee
   d.ee   d/ee
   d0e;d1ee	   deee9ef      d2eee9      de8fd3„ZDy):é    N)Údeepcopy)ÚPath)	ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚTypeÚTypeVarÚUnion)Únn)Úload_state_dict_from_url)ÚFeatureListNetÚFeatureDictNetÚFeatureHookNetÚFeatureGetterNet)ÚFeatureGraphNet)Úload_state_dict)Ú
has_hf_hubÚdownload_cached_fileÚcheck_cached_fileÚload_state_dict_from_hfÚload_state_dict_from_pathÚload_custom_from_hf)Úadapt_input_conv)ÚPretrainedCfg)Úadapt_model_from_file)Úget_pretrained_cfgFÚTIMM_USE_OLD_CACHE)Ú set_pretrained_download_progressÚset_pretrained_check_hashÚload_custom_pretrainedÚload_pretrainedÚpretrained_cfg_for_featuresÚresolve_pretrained_cfgÚbuild_model_with_cfgÚModelT)ÚboundÚpretrained_cfgÚreturnc                 óì  — | j                  dd«      }| j                  dd «      }| j                  dd «      }| j                  dd «      }| j                  dd «      }d}d}|dk(  rt        d¬	«      r	d}|sJ ‚|}n[|d
k(  rd
}|}nQ|rd}|}t        |t        «      s;J ‚|rd}|}n2d}t        r|rt        |«      nd}|s|rt        d¬	«      rd}|}n|rd}|}|dk(  r| j                  dd «      r|| d   f}||fS )NÚsourceÚ ÚurlÚfileÚ
state_dictÚ	hf_hub_idúhf-hubT)Ú	necessaryú	local-dirFÚhf_hub_filename)Úgetr   Ú
isinstanceÚdictÚ_USE_OLD_CACHEr   )	r*   Ú
cfg_sourceÚpretrained_urlÚpretrained_fileÚpretrained_sdr2   Ú	load_fromÚpretrained_locÚold_cache_valids	            ú_/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/_builder.pyÚ_resolve_pretrained_sourcerC   +   s5  € Ø×#Ñ# H¨bÓ1€JØ#×'Ñ'¨¨tÓ4€NØ$×(Ñ(¨°Ó6€OØ"×&Ñ& |°TÓ:€MØ×"Ñ" ;°Ó5€Ið €IØ€NØ�XÒ¤*°tÕ"<àˆ	ÙÐˆyØ"‰Ø	�{Ò	"Øˆ	Ø(‰ñ à$ˆIØ*ˆNÜ˜n¬dÔ3Ð3Ð3ÙàˆIØ,‰Nà#ˆOÝáGUÔ"3°NÔ"CÐ[`�Ù"¡y´ZÈ$Õ5Oà$�	Ø!*‘ÙØ!�	Ø!/�à�HÒ ×!3Ñ!3Ð4EÀtÔ!Là'¨Ð8IÑ)JÐJˆØ�nÐ$Ð$ó    Úenablec                 ó   — | a y)zA Set download progress for pretrained weights on/off (globally). N)Ú_DOWNLOAD_PROGRESS©rE   s    rB   r!   r!   [   s
   € ð  ÑrD   c                 ó   — | a y)z= Set hash checking for pretrained weights on/off (globally). N)Ú_CHECK_HASHrH   s    rB   r"   r"   a   s	   € ð �KrD   ÚmodelÚload_fnÚ	cache_dirc                 óŽ  — |xs t        | dd«      }|st        j                  d«       yt        |«      \  }}|st        j                  d«       y|dk(  rt        j                  d«       n|dk(  rt	        |t
        t        |¬«      }|�
 || |«       yt        | d	«      r| j                  |«       yt        j                  d
«       y)a$  Loads a custom (read non .pth) weight file

    Downloads checkpoint file into cache-dir like torch.hub based loaders, but calls
    a passed in custom load fun, or the `load_pretrained` model member fn.

    If the object is already present in `model_dir`, it's deserialized and returned.
    The default value of `model_dir` is ``<hub_dir>/checkpoints`` where
    `hub_dir` is the directory returned by :func:`~torch.hub.get_dir`.

    Args:
        model: The instantiated model to load weights into
        pretrained_cfg: Default pretrained model cfg
        load_fn: An external standalone fn that loads weights into provided model, otherwise a fn named
            'load_pretrained' on the model will be called if it exists
        cache_dir: Override model checkpoint cache dir for this load
    r*   Nz/Invalid pretrained config, cannot load weights.zHNo pretrained weights exist for this model. Using random initialization.r3   zKHugging Face hub not currently supported for custom load pretrained models.r/   )Ú
check_hashÚprogressrM   r$   zXValid function to load pretrained weights is not available, using random initialization.)	ÚgetattrÚ_loggerÚwarningrC   r   rJ   rG   Úhasattrr$   )rK   r*   rL   rM   r?   r@   s         rB   r#   r#   g   s¸   € ð, $ÒM¤w¨uÐ6FÈÓ'M€NÙÜ�‰ÐIÔJØä :¸>Ó JÑ€Iˆ~ÙÜ�‰ÐbÔcØØ�HÒÜ�‰ÐeÕfØ	�eÒ	Ü-ØÜ"Ü'Øô	
ˆð ÐÙ��~Õ&Ü	�Ð)Ô	*Ø×Ñ˜nÕ-ä�‰ÐrÕsrD   Únum_classesÚin_chansÚ	filter_fnÚstrictc                 ó`  — |xs t        | dd«      }|st        d«      ‚t        |«      \  }}|dk(  rt        j	                  d«       |}	�n¾|dk(  rJt        j	                  d|› d�«       |j                  d	d
«      r| j                  |«       yt        |«      }	�no|dk(  rot        j	                  d|› d�«       |j                  d	d
«      r)t        |t        t        |¬«      }| j                  |«       y	 t        |dt        t        d|¬«      }	nû|dk(  r‚t        j	                  d|› d�«       t        |t        t        f«      rD|j                  d	d
«      }
t        |
t         «      r|
dk(  rt#        g |¢| ‘­d|iŽ yt%        |d|iŽ}	nƒt%        |d|¬«      }	nt|dk(  rNt        j	                  d|› d�«       t'        |«      }|j)                  «       rt+        |«      }	n/t        d|› �«      ‚|j                  dd«      }t        d|› d�«      ‚|�
	  ||	| «      }	|j                  dd«      }|�S|dk7  rNt        |t         «      r|f}|D ]6  }|d z   }	 t-        ||	|   «      |	|<   t        j	                  d!|› d"|› d#�«       Œ8 |j                  d&d«      }|j                  d'd(«      }|��t        |t         «      r|f}||d)   k7  r4|D ],  }|	j3                  |d z   d«       |	j3                  |d*z   d«       Œ. d
}n2|d(kD  r-|D ](  }|	|d z      }||d |	|d z   <   |	|d*z      }||d |	|d*z   <   Œ* | j                  |	|¬+«      }|j4                  r2t        j	                  d,d-j7                  |j4                  «      › d.�«       |j8                  r3t        j1                  d/d-j7                  |j8                  «      › d0�«       yy# t        $ r t        |dt        t        |¬«      }	Y �ŒÏw xY w# t        $ r} ||	«      }	Y d}~�ŒÞd}~ww xY w# t.        $ r)}|	|= d
}t        j1                  d$|› d%�«       Y d}~�Œåd}~ww xY w)1a   Load pretrained checkpoint

    Args:
        model: PyTorch module
        pretrained_cfg: Configuration for pretrained weights / target dataset
        num_classes: Number of classes for target model. Will adapt pretrained if different.
        in_chans: Number of input chans for target model. Will adapt pretrained if different.
        filter_fn: state_dict filter fn for load (takes state_dict, model as args)
        strict: Strict load of checkpoint
        cache_dir: Override model checkpoint cache dir for this load
    r*   NzWInvalid pretrained config, cannot load weights. Use `pretrained=False` for random init.r1   z*Loading pretrained weights from state dictr0   z&Loading pretrained weights from file (ú)Úcustom_loadFr/   z%Loading pretrained weights from url ()rP   rO   rM   ÚcpuT)Úmap_locationrP   rO   Úweights_onlyÚ	model_dir)r]   rP   rO   r_   r3   z2Loading pretrained weights from Hugging Face hub (ÚhfrM   )r^   rM   r5   z1Loading pretrained weights from local directory (z#Specified path is not a directory: Úarchitecturez
this modelz No pretrained weights exist for z). Use `pretrained=False` for random init.Ú
first_convé   z.weightzConverted input conv z pretrained weights from 3 to z channel(s)zUnable to convert pretrained z+ weights, using random init for this layer.Ú
classifierÚlabel_offsetr   rU   z.bias)rX   zMissing keys (z, zZ) discovered while loading pretrained weights. This is expected if model is being adapted.zUnexpected keys (zY) found while loading pretrained weights. This may be expected if model is being adapted.)rQ   ÚRuntimeErrorrC   rR   Úinfor7   r$   r   r   rG   rJ   r   Ú	TypeErrorr8   ÚlistÚtupleÚstrr   r   r   Úis_dirr   r   ÚNotImplementedErrorrS   ÚpopÚmissing_keysÚjoinÚunexpected_keys)rK   r*   rU   rV   rW   rX   rM   r?   r@   r1   r[   Úpretrained_pathÚ
model_nameÚeÚinput_convsÚinput_conv_nameÚweight_nameÚclassifiersre   Úclassifier_nameÚclassifier_weightÚclassifier_biasÚload_results                          rB   r$   r$   ˜   s¿  € ð( $ÒM¤w¨uÐ6FÈÓ'M€NÙÜÐtÓuÐuä :¸>Ó JÑ€Iˆ~Ø�LÒ Ü�‰ÐAÔCØ#Š
Ø	�fÒ	Ü�‰Ð=¸nÐ=MÈQÐOÔPØ×Ñ˜m¨UÔ3Ø×!Ñ! .Ô1Øä(¨Ó8ŠJØ	�eÒ	Ü�‰Ð<¸^Ð<LÈAÐNÔOØ×Ñ˜m¨UÔ3Ü1ØÜ+Ü&Ø#ô	ˆNð ×!Ñ! .Ô1ØðÜ5Ø"Ø!&Ü/Ü*Ø!%Ø'ô‘
ð  
�hÒ	Ü�‰ÐIÈ.ÐIYÐYZÐ[Ô\Ü�n¤t¬U mÔ4Ø(×,Ñ,¨]¸EÓBˆKÜ˜+¤sÔ+°¸tÒ0CÜ#ÐP ^ÐP°UÒPÀiÒPØä4°nÐZÐPYÑZ‘
ä0°ÈdÐ^gÔh‰JØ	�kÒ	!Ü�‰ÐHÈÐHXÐXYÐZÔ[Ü˜~Ó.ˆØ×!Ñ!Ô#Ü2°?ÓC‰JäÐ!DÀ^ÐDTÐUÓVÐVà#×'Ñ'¨¸ÓEˆ
ÜÐ=¸j¸\ÐIrÐsÓtÐtàÐð	/Ù" :¨uÓ5ˆJð
 !×$Ñ$ \°4Ó8€KØÐ 8¨q¢=Ü�k¤3Ô'Ø&˜.ˆKØ*ò 
	rˆOØ)¨IÑ5ˆKðrÜ*:¸8ÀZÐP[ÑE\Ó*]�
˜;Ñ'Ü—‘Ø+¨OÐ+<Ð<ZÐ[cÐZdÐdoÐpõrð	
	rð !×$Ñ$ \°4Ó8€KØ!×%Ñ% n°aÓ8€LØÐÜ�k¤3Ô'Ø&˜.ˆKØ˜.¨Ñ7Ò7Ø#.ò @�à—‘˜°Ñ:¸DÔAØ—‘˜°Ñ8¸$Õ?ð@ð ‰FØ˜AÒØ#.ò W�à$.¨ÀÑ/JÑ$KÐ!Ø:KÈLÈMÐ:Z�
˜?¨YÑ6Ñ7Ø",¨_¸wÑ-FÑ"G�Ø8GÈÈÐ8V�
˜?¨WÑ4Ò5ðWð ×'Ñ'¨
¸6Ð'ÓB€KØ×ÒÜ�‰Ø˜TŸY™Y {×'?Ñ'?Ó@ÐAð B;ð <ô	=ð ×"Ò"Ü�‰Ø §	¡	¨+×*EÑ*EÓ FÐGð H?ð @õ	Að #øô[ ò Ü5Ø"Ø!&Ü/Ü*Ø'ô“
ðûôB ò 	/á" :Ó.ŽJûð	/ûô 'ò rØ˜{Ð+Ø�Ü—‘Ø3°OÐ3DÐDoÐp÷rò rûðrúsB   Ã4N4 È	O É.O;Î4!OÏOÏ	O8Ï%O3Ï3O8Ï;	P-ÐP(Ð(P-c                 óR   — t        | «      } d}|D ]  }| j                  |d «       Œ | S )N)rU   rd   Úglobal_pool)r   rn   )r*   Ú	to_removeÚtrs      rB   r%   r%   #  s6   € Ü˜nÓ-€Nà<€IØò %ˆØ×Ñ˜2˜tÕ$ð%àÐrD   ÚkwargsÚnamesc                 ó@   — | r|sy |D ]  }| j                  |d «       Œ y )N)rn   )r�   r‚   Úns      rB   Ú_filter_kwargsr…   ,  s'   € Ù™ØØò ˆØ�
‰
�1�dÕñrD   c                 ó  — d}| j                  dd«      r|dz  }|D ]â  }|dk(  r;| j                  dd«      }|€Œt        |«      dk(  sJ ‚|j                  ||d	d «       ŒC|d
k(  r;| j                  dd«      }|€Œ]t        |«      dk(  sJ ‚|j                  ||d   «       Œƒ|dk(  r1| j                  |d«      }|€Œ�|dk\  sŒ£|j                  || |   «       Œ¹| j                  |d«      }|€ŒÎ|j                  || |   «       Œä t        ||¬«       y)a&   Update the default_cfg and kwargs before passing to model

    Args:
        pretrained_cfg: input pretrained cfg (updated in-place)
        kwargs: keyword args passed to model build fn (updated in-place)
        kwargs_filter: keyword arg keys that must be removed before model __init__
    )rU   r~   rV   Úfixed_input_sizeF)Úimg_sizerˆ   Ú
input_sizeNrc   éþÿÿÿrV   r   rU   )r‚   )r7   ÚlenÚ
setdefaultr…   )r*   r�   Úkwargs_filterÚdefault_kwarg_namesr„   r‰   Údefault_vals          rB   Ú_update_default_model_kwargsr�   3  s9  € ð EÐØ×ÑÐ,¨eÔ4à˜}Ñ,Ðà ò 8ˆð �
Š?Ø'×+Ñ+¨L¸$Ó?ˆJØÑ%Ü˜:“¨!Ò+Ð+Ð+Ø×!Ñ! ! Z°° _Õ5Ø�*Š_Ø'×+Ñ+¨L¸$Ó?ˆJØÑ%Ü˜:“¨!Ò+Ð+Ð+Ø×!Ñ! ! Z°¡]Õ3Ø�-ÒØ(×,Ñ,¨Q°Ó5ˆKàÑ&¨;¸!Ó+;Ø×!Ñ! ! ^°AÑ%6Õ7à(×,Ñ,¨Q°Ó5ˆKØÑ&Ø×!Ñ! ! ^°AÑ%6Õ7ð+8ô0 �6 Ö/rD   ÚvariantÚpretrained_cfg_overlayc                 ót  — | }d}|r0t        |t        «      rt        di |¤Ž}nt        |t        «      r|}d}|s |rdj	                  | |g«      }t        |«      }|s#t        j                  d|› d�«       t        «       }|xs i }|j                  s|j                  d| «       t        j                  |fi |¤Ž}|S )z6Resolve pretrained configuration from various sources.Nú.z*No pretrained configuration specified for ze model. Using a default. Please add a config to the model pretrained_cfg registry or pass explicitly.ra   © )r8   r9   r   rk   rp   r   rR   rS   ra   rŒ   ÚdataclassesÚreplace)r‘   r*   r’   Úmodel_with_tagÚpretrained_tags        rB   r&   r&   \  sÏ   € ð €NØ€NÙÜ�n¤dÔ+ä*Ñ<¨^Ñ<‰NÜ˜¬Ô,Ø+ˆNØ!ˆNñ ÙØ ŸX™X w°Ð&?Ó@ˆNÜ+¨NÓ;ˆáÜ�‰Ø8¸Ð8Hð I\ð ]ô	^ô '›ˆà3Ò9°rÐØ×&Ò&Ø×)Ñ)¨.¸'ÔBÜ ×(Ñ(¨ÑRÐ;QÑR€NàÐrD   Ú	model_cls.Ú
pretrainedÚ	model_cfgÚfeature_cfgÚpretrained_strictÚpretrained_filter_fnr�   c           	      ó  — |j                  dd«      }d}|xs i }t        |||¬«      }|j                  «       }t        |||
«       |j                  dd«      rDd}|j	                  dd«       d|v r|j                  d«      |d<   d|v r|j                  d«      |d<   |€	 | di |¤Ž}n
 | dd
|i|¤Ž}||_        |j
                  |_        |rt        ||«      }|rdnt        |d|j                  dd«      «      }|r"t        ||||j                  dd«      |||	¬«       |rçd}d|v rŽ|j                  d«      }t        |t        «      rs|j                  «       }|dvr|j                  dd	«       d|v rt        }nB|dk(  rt        }n6|dk(  rt         }n*|dk(  rt"        }n|dk(  r	d}t$        }nJ d|› �«       ‚t        }t        |dd	«      }|�|s|j	                  d|«        ||fi |¤Ž}t'        |«      |_        |j
                  |_        |S )aH   Build model with specified default_cfg and optional model_cfg

    This helper fn aids in the construction of a model including:
      * handling default_cfg and associated pretrained weight loading
      * passing through optional model_cfg for models with config based arch spec
      * features_only model adaptation
      * pruning config / model adaptation

    Args:
        model_cls: Model class
        variant: Model variant name
        pretrained: Load the pretrained weights
        pretrained_cfg: Model's pretrained weight/task config
        pretrained_cfg_overlay: Entries that will override those in pretrained_cfg
        model_cfg: Model's architecture config
        feature_cfg: Feature extraction adapter config
        pretrained_strict: Load pretrained weights strictly
        pretrained_filter_fn: Filter callable for pretrained weights
        cache_dir: Override model cache dir for Hugging Face Hub and Torch checkpoints
        kwargs_filter: Kwargs keys to filter (remove) before passing to model
        **kwargs: Model args passed through to model __init__
    ÚprunedF)r*   r’   Úfeatures_onlyTÚout_indices)r   é   é   rc   é   Úfeature_clsNÚcfgr   rU   éè  rV   rc   )r*   rU   rV   rW   rX   rM   )r9   ri   ÚhookÚflatten_sequentialrª   ri   r9   ÚfxÚgetterzUnknown feature class Ú
output_fmtr•   )rn   r&   Úto_dictr�   rŒ   r*   Údefault_cfgr   rQ   r7   r$   r8   rk   Úlowerr   r   r   r   r   r%   )rš   r‘   r›   r*   r’   rœ   r�   rž   rŸ   rM   r�   r�   r¡   ÚfeaturesrK   Únum_classes_pretrainedÚ
use_getterr§   r®   s                      rB   r'   r'   €  sM  € ðH �Z‰Z˜ %Ó(€FØ€HØÒ# €Kô ,ØØ%Ø5ô€Nð
 $×+Ñ+Ó-€Nä  °¸ÔGð ‡z�z�/ 5Ô)ØˆØ×Ñ˜}¨oÔ>Ø˜FÑ"Ø)/¯©°MÓ)BˆK˜Ñ&Ø˜FÑ"Ø)/¯©°MÓ)BˆK˜Ñ&ð ÐÙÑ#˜FÑ#‰áÑ2˜iÐ2¨6Ñ2ˆØ)€EÔØ×,Ñ,€EÔáÜ% e¨WÓ5ˆñ #+™Q´¸¸}ÈfÏjÉjÐYfÐhlÓNmÓ0nÐÙÜØØ)Ø.Ø—Z‘Z 
¨AÓ.Ø*Ø$Øõ	
ñ Øˆ
Ø˜KÑ'Ø%Ÿ/™/¨-Ó8ˆKÜ˜+¤sÔ+Ø)×/Ñ/Ó1�ð Ð&>Ñ>Ø—O‘OÐ$8¸$Ô?à˜[Ñ(Ü"0‘KØ  FÒ*Ü"0‘KØ  FÒ*Ü"0‘KØ  DÒ(Ü"1‘KØ  HÒ,Ø!%�JÜ"2‘KàHÐ$:¸;¸-Ð"HÓH˜5ä(ˆKä˜U L°$Ó7ˆ
ØÐ!©*Ø×"Ñ" <°Ô<á˜EÑ1 [Ñ1ˆÜ:¸>ÓJˆÔØ!×0Ñ0ˆÔà€LrD   )T)NNN)Nr©   rc   NTN)r+   N)NN)NNNNTNNN)Er–   ÚloggingÚosÚcopyr   Úpathlibr   Útypingr   r   r   r   r	   r
   r   r   r   Útorchr   Ú	torch.hubr   Útimm.models._featuresr   r   r   r   Útimm.models._features_fxr   Útimm.models._helpersr   Útimm.models._hubr   r   r   r   r   r   Útimm.models._manipulater   Útimm.models._pretrainedr   Útimm.models._pruner   Útimm.models._registryr   Ú	getLoggerÚ__name__rR   rG   rJ   ÚintÚenvironr7   r:   Ú__all__ÚModuler(   rk   rC   Úboolr!   r"   r#   r$   r%   r…   r�   r&   r'   r•   rD   rB   ú<module>rË      su  ðÛ Û Û 	Ý Ý ß S× SÕ Så Ý .ç bÓ bÝ 4Ý 0÷3÷ 3å 4Ý 1Ý 4Ý 4à
ˆ'×
Ñ
˜HÓ
%€ð Ð Ø€Ù�R—Z‘Z—^‘^Ð$8¸!Ó<Ó=ÀÑA€ò€ñ 
� §¡Ô	+€ð-%¨t°C¸°H©~ð -%À%ÈÈSÈÁ/ó -%ñ` ¨Tð  ¸Tó  ñ dð °dó ð 48Ø&*Ø04ñ	.tØ�y‰yð.tà   c¨3 h¡Ñ0ð.tð ˜(Ñ#ð.tð ˜E # t )Ñ,Ñ-ð	.tð
 
ó.tðf 48ØØØ(,ØØ04ñHAØ�y‰yðHAà   c¨3 h¡Ñ0ðHAð ðHAð ð	HAð
 ˜HÑ%ðHAð ðHAð ˜E # t )Ñ,Ñ-ðHAð 
óHAðV°°S¸#°X±ð À4ÈÈSÈÁ>ó ð˜4  S ™>ð °$°s±)ð Àó ó&0ðV @DØ;?ñ!Øð!à   s¨D°°c°©NÐ':Ñ!;Ñ<ð!ð !)¨¨c°3¨h©Ñ 8ð!ð ó	!ðP *.Ø15Ø#'Ø&*Ø"&Ø37Ø04Ø.2ñwØ˜˜f™ x°°V°Ñ'<Ð<Ñ=ðwàðwð ðwð ! ™ð	wð
 !)¨¡ðwð ˜C‘=ðwð ˜d‘^ðwð  ðwð ' xÑ0ðwð ˜E # t )Ñ,Ñ-ðwð    c¡
Ñ+ðwð ôwrD   