ó
    cÛ–iI  ã                   óÌ   • S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
JrJrJrJrJrJr   " S S\5      rS	 rSS
 jrS r     SS jr       SS jrS rS rg)é    N)ÚLdbError)Úwerror)Ú
ndr_unpack)ÚmiscÚdnsp)ÚDNS_TYPE_NSÚ
DNS_TYPE_AÚDNS_TYPE_AAAAÚDNS_TYPE_CNAMEÚDNS_TYPE_SRVÚDNS_TYPE_PTRc                   ó$   • \ rS rSrSrS rS rSrg)ÚDemoteExceptioné   zBase element for demote errorsc                 ó   • Xl         g ©N©Úvalue)Úselfr   s     Ú1/usr/lib/python3/dist-packages/samba/remove_dc.pyÚ__init__ÚDemoteException.__init__    s   € Ø�
ó    c                 ó    • SU R                   -   $ )NzDemoteException: r   )r   s    r   Ú__str__ÚDemoteException.__str__#   s   € Ø" T§Z¡ZÑ/Ð/r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__© r   r   r   r      s   † Ù(òõ0r   r   c           	      óö  • U R                  5       nSSU-  4 H„  n[        R                  " X5      n UR                  U R	                  5       5         UR                  S5        UR                  SSU5         UR                  S	U-  5        U R                  U5        M†     S
 H„  n[        R                  " X5      n UR                  U R                  5       5         UR                  S5        UR                  SSU5         UR                  S	U-  5        U R                  U5        M†     g ! [        R
                   a"    [        SU< SU R	                  5       < 35      ef = f! [        R
                   a    [        SU-  5      ef = f! [        R
                   a/  nUR                  u  pxU[        R                  :X  a   S nAGM¯  e S nAff = f! [        R
                   a"    [        SU< SU R                  5       < 35      ef = f! [        R
                   a    [        SU< SU< S35      ef = f! [        R
                   a/  n	U	R                  u  pxU[        R                  :X  a   S n	A	GMÐ  e S n	A	ff = f)Nz3CN=Enterprise,CN=Microsoft System Volumes,CN=Systemz+CN=%s,CN=Microsoft System Volumes,CN=SystemzFailed constructing DN z by adding base zCN=Xz.Failed constructing DN %s by adding child CN=Xr   ÚCNzRemoving Sysvol reference: %s)zMCN=Domain System Volumes (SYSVOL share),CN=File Replication Service,CN=SystemzDCN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=Systemz% by adding child CN=X (soon to be CN=Ú))Údomain_dns_nameÚldbÚDnÚadd_baseÚget_config_basednr   r   Ú	add_childÚset_componentÚinfoÚdeleteÚargsÚERR_NO_SUCH_OBJECTÚget_default_basedn)
ÚsamdbÚloggerÚdc_nameÚrealmÚsÚdnÚeÚenumÚestrÚe1s
             r   Úremove_sysvol_referencesr=   '   sS  € à×!Ñ!Ó#€EØCØ;¸eÑCóEˆä�VŠV�EÓˆð	EØ�K‰K˜×/Ñ/Ó1Ô2ð	*Ø�L‰L˜Ô ð 	×Ñ˜˜D 'Ô*ð	Ø�K‰KÐ7¸"Ñ<Ô=Ø�L‰L˜Öñ'Eó8Vˆô �VŠV�EÓˆð	FØ�K‰K˜×0Ñ0Ó2Ô3ð	MØ�L‰L˜Ô ð 	×Ñ˜˜D 'Ô*ð	Ø�K‰KÐ7¸"Ñ<Ô=Ø�L‰L˜Öò'Vøô) �|‰|ó 	EÝ!Û%'¨×)@Ñ)@Õ)Bð#Dó Eð Eð	Eûô
 �|‰|ó 	*Ü!Ð"RØ%'ñ#)ó *ð *ð	*ûô �|‰|ó 	ØŸ6™6‰LˆTØ”s×-Ñ-Ó-Þàûð	ûô �|‰|ó 	FÝ!Û%'¨×)AÑ)AÕ)Cð#Eó Fð Fð	Fûô
 �|‰|ó 	MÝ!Û?AÃ7ð#Ló Mð Mð	Mûô �|‰|ó 	ØŸ7™7‰LˆTØ”s×-Ñ-Ó-Þàûð	úsk   ²D+ÁE$Á7%F
Â<GÃH	Ä%H5Ä+6E!Å$#FÆ
GÆ"GÇGÇGÇ6HÈ	)H2È5I8É	"I3É2I3É3I8c           
      ó’  ^ ^^• T R                  S[        R                  S/ S/S9n[        U5      S:X  a  g UR	                  5       n T R                  U5      u  nmT R                  U/ 5        T R                  S[        R                  S/S	9n
[        U
5      S
:X  d   eU
S   S   nU 4S jm[        U4S jU 5       5      nU4S jnU H§  n UR!                  SU-  5        T R                  U5      u  nn[        U5      nU Vs/ s H  nU" U5      (       a  M  UPM     nn[        U5      U:w  d  Mi  UR#                  SU[        U5      U[        U5      -
  4-  5        T R                  UU5        M©     [        T XU5        g ! [         ah  nUR                  u  p‰U[        R                  :X  d  U[        R                  :X  a  U(       a  [        T UUU5         S nAg [        SU< SU	< 35      eS nAff = f! [         a@  nUR                  u  p‰U[        R                  :X  a   S nA  g [        SU< SU	< 35      eS nAff = fs  snf )NÚ z.(&(objectClass=dnsZone)(!(dc=RootDNSServers)))úsearch_options:0:2)ÚbaseÚscopeÚ
expressionÚattrsÚcontrolsr   z
lookup of z	 failed: ÚnamingContexts©rB   rD   é   c                 ót   >• [         R                  " TU 5      R                  5       R                  SS5      S   $ )NÚ/rH   r   )r(   r)   Úcanonical_strÚsplit)r8   r3   s    €r   Údns_name_from_dnÚ/remove_dns_references.<locals>.dns_name_from_dn‰   s1   ø€ ô �vŠv�e˜RÓ ×.Ñ.Ó0×6Ñ6°s¸AÓ>¸qÑAÐAr   c              3   óF   >#   • U  H  nT" [        U5      5      v •  M     g 7fr   )Ústr)Ú.0r8   rM   s     €r   Ú	<genexpr>Ú(remove_dns_references.<locals>.<genexpr>”   s   øé € Ð6²#¨BÑœs 2›w×'Ð'²#ùs   ƒ!c                 óØ   >• U R                   [        :X  d  U R                   [        :X  aA  T H;  nUR                   U R                   :X  d  M  UR                  U R                  :X  d  M;    g   g©NTF)ÚwTyper	   r
   Údata)Ú	dnsRecordÚrecÚprimary_recss     €r   Úa_rec_to_removeÚ.remove_dns_references.<locals>.a_rec_to_remove–   sK   ø€ Ø�?‰?œjÓ(¨I¯O©O¼}Ó,LÛ#�Ø—9‘9 	§¡Õ/°C·H±HÀ	ÇÁÕ4NÙñ $ð r   z(checking for DNS records to remove on %sú1updating %s keeping %d values, removing %s values)Úsearchr(   ÚSCOPE_SUBTREEÚlenÚupperÚ
dns_lookupÚRuntimeErrorr0   r   Ú"WERR_DNS_ERROR_NAME_DOES_NOT_EXISTÚWERR_DNS_ERROR_RCODE_NAME_ERRORÚremove_hanging_dns_referencesr   Údns_replaceÚ
SCOPE_BASEÚsetÚdebugr.   )r3   r4   ÚdnsHostNameÚignore_no_nameÚzonesÚdnsHostNameUpperr8   Úe4r:   r;   ÚresÚncsÚa_names_to_remove_fromr[   Úa_nameÚa_rec_dnÚa_recsÚe2Úorig_num_recsÚrrM   rZ   s   `                   @@r   Úremove_dns_referencesry   b   s<  ú€ ð �L‰L˜b¬×(9Ñ(9Ø$TØ!Ø#7Ð"8ð ð :€Eô ˆ5ƒz�QƒØà"×(Ñ(Ó*ÐðOØ"×-Ñ-¨kÓ:Ñˆˆ\ð 
×Ñ�k 2Ô&à
�,‰,�rÜ Ÿ^™^Ð4DÐ3Eð ð G€Cäˆs‹8�q‹=Ðˆ=Ø
ˆa‰&Ð!Ñ
"€CõBô Ô6±#Ó6Ó
6ð õó )ˆð	NØ�L‰LÐCÀfÑLÔMØ!&×!1Ñ!1°&Ó!9ÑˆX�vô ˜F›ˆÙ#Ó>šV˜©?¸1×+=—!™VˆÐ>äˆv‹;˜-Õ'Ø�K‰KÐKØ¤ V£¨m¼cÀ&»kÑ.IÐJñKô Là×Ñ˜f fÖ-ñ! )ô$ " %¨À5ÕIøô ó 	OØ—w‘w‰ˆØ”F×=Ñ=Ó=Ø”F×:Ñ:Ó:ÞÜ-¨e°VØ.>Ø.3ô5ô Ý»;ÊÐMÓNÐNûð	Oûôb ó 	NØŸ7™7‰LˆTØ”v×@Ñ@Ó@ÝÝ!»vÂtÐ"LÓMÐMûð		Nüò ?sI   ÁF Ã(G7ÄIÄIÆ
G4ÆAG/ÇG/Ç/G4Ç7
IÈ"H<È)H<È<Ic                 ó^  ^• U4S jnU GH	  nUR                  SUR                  -  5        U R                  UR                  [        R                  SS/S9nU H¶  n US   nU V	s/ s H+  o”" U	5      (       a  M  [        [        R                  U	5      PM-     n
n	[        U
5      [        U5      :w  d  M[  UR                  SUR                  [        U
5      [        U5      [        U
5      -
  4-  5        U R                  UR                  U
5        M¸     GM     g ! [
         a     MÍ  f = fs  sn	f )Nc                 ón  >• [        [        R                  U 5      nUR                  [        :X  d(  UR                  [
        :X  d  UR                  [        :X  a!  UR                  R                  5       T:X  a  g gUR                  [        :X  a)  UR                  R                  R                  5       T:X  a  ggrU   )r   r   ÚDnssrvRpcRecordrV   r   r   r   rW   ra   r   Ú
nameTarget)r   rX   rn   s     €r   Ú	to_removeÚ0remove_hanging_dns_references.<locals>.to_remove·   sŒ   ø€ Üœt×3Ñ3°UÓ;ˆ	Ø�?‰?œkÓ)Ø�o‰o¤Ó/Ø�o‰o¤Ó-Ø�~‰~×#Ñ#Ó%Ð)9Ó9Øð :ð
 ð �_‰_¤Ó,Ø�~‰~×(Ñ(×.Ñ.Ó0Ð4DÓDØØr   zchecking %sz/(&(objectClass=dnsNode)(!(dNSTombstoned=TRUE)))rX   )rA   rB   rC   rD   r]   )rj   r8   r^   r(   r_   ÚKeyErrorr   r   r|   r`   r.   Údns_replace_by_dn)r3   r4   rn   rm   r~   ÚzoneÚrecordsÚrecordÚorig_valuesÚvÚvaluess     `        r   rf   rf   ²   s"  ø€ õ

ô ˆØ�‰�] T§W¡WÑ,Ô-Ø—,‘, D§G¡G´3×3DÑ3Dð+:à&1 ]ð ð 4ˆó ˆFðØ$ [Ñ1�ñ  +ó@Ú*˜!°)¸A·,ó :”j¤×!5Ñ!5°qÖ9Ù*ð ð @ô �6‹{œc +Ó.Õ.Ø—‘ÐOØ%Ÿy™y¬#¨f«+Ü" ;Ó/´#°f³+Ñ=ð?ñ?ô @ð ×'Ñ'¨¯	©	°6Ö:ô# ò øô ó Úðüò@s   ÁDÁ&D*Á:D*Ä
D'Ä&D'c                 óX  • U R                  S[        R                  S/S9n[        U5      S:X  d   eUS   S   S   n	U R                  U/ SQ[        R                  SS9n
U
S   n[	        US	   S   5      n [        R
                  " XS
   S   R                  S5      5      n [	        US   S   5      nU(       a  U R                  US/5        Ubë  U R                  US/ SQ[        R                  S9nSUS   ;   a9  [	        US   S   S   5      nUR                  SU-  5        U R                  U5        SUS   ;   a9  [	        US   S   S   5      nUR                  SU-  5        U R                  U5        U(       a'  UR                  SU-  5        U R                  US/5        SU;   a  [	        US   S   5      nU(       a™  U R                  S[        R                  " U5      < SU< S3/ [        R                  U R                  5       S9n[        U5      S:X  a?  UR                  SUS   R                  -  5        U R                  US   R                  5        Ub  U(       a  [        XU5        U(       a  [        XU5        g g ! [         a    S n GNôf = f! [         a    S n GNõf = f)Nr?   ÚdsServiceNamerG   rH   r   )ÚserverReferenceÚcnrk   z(objectClass=server)©rA   rD   rB   rC   r‹   rŠ   Úutf8rk   útree_delete:0zobjectclass=computer)úmsDS-KrbTgtLinkÚrIDSetReferencesr‹   ©rA   rC   rD   rB   r�   zRemoving RID Set: %sr�   zRemoving RODC KDC account: %sz5Removing computer account: %s (and any child objects)z(&(objectclass=user)(cn=dns-z)(servicePrincipalName=DNS/z)))rC   rD   rB   rA   z/Removing Samba-specific DNS service account: %s)r^   r(   rh   r`   rP   r)   Údecoder€   r/   r.   Úbinary_encoder_   r2   r8   ry   r=   )r3   r4   Ú	server_dnÚremove_computer_objÚremove_server_objÚremove_sysvol_objÚremove_dns_namesÚremove_dns_accountrp   Úmy_serviceNameÚmsgsÚmsgr5   Úcomputer_dnrk   Úcomputer_msgsÚ
rid_set_dnÚkrbtgt_link_dns                     r   Úoffline_remove_serverr¡   Ý   s±  € ð �,‰,�rÜ Ÿ^™^°OÐ3Dð ð F€Cäˆs‹8�q‹=Ðˆ=Ø˜‘V˜OÑ,¨QÑ/€Nð �<‰<˜Yò.ä!Ÿn™nØ#9ð	 ð ;€Dð
 ˆq‰'€CÜ�#�d‘)˜A‘,Ó€GðÜ—f’f˜UÐ(9Ñ$:¸1Ñ$=×$DÑ$DÀVÓ$LÓMˆðÜ˜#˜mÑ,¨QÑ/Ó0ˆö ð 	�‰�Y Ð 1Ô2àÑØŸ™¨+Ø0Fò,2ô ,/¯>©>ð %ð ;ˆð  ¨qÑ!1Ó1Ü˜]¨1Ñ-Ð.@ÑAÀ!ÑDÓEˆJØ�K‰KÐ.°Ñ;Ô<Ø�L‰L˜Ô$Ø ¨aÑ 0Ó0Ü  ¨qÑ!1Ð2CÑ!DÀQÑ!GÓHˆNØ�K‰KÐ7¸.ÑHÔIØ�L‰L˜Ô(æà�K‰KÐOÐR]Ñ]Ô^Ø�L‰L˜ Ð&7Ô8à˜CÓÜ˜c -Ñ0°Ñ3Ó4ˆKæØ�lŠlÜ×-Ò-¨gÖ6»ð'Eà!#¬3×+<Ñ+<Ø %× 8Ñ 8Ó :ð ð <ˆô ˆs‹8�q‹=Ø�K‰KÐIÈCÐPQÉFÏIÉIÑUÔVØ�L‰L˜˜Q™Ÿ™Ô#àÑÖ#3Ü˜e¨[Ô9æÜ  °Õ8ð øôc ó Ø‹ðûô
 ó Ø‹ðús$   Á6+J Â"J ÊJÊJÊJ)Ê(J)c
                 ó6  • U R                  S[        R                  S/S9n
[        U
5      S:X  d   e[        R                  " X
S   S   S   R                  S5      5      nUR                  5       nX²:X  a  [        SU-  5      e U R                  USS	/[        R                  S
9n[        U5      S:X  a   [        U< SU R                  5       < 35      eUS   nUR                  R                  5       S:w  d  UR                  R                  5       S:w  a  [        SU-  5      e[        [         R"                  US	   S   5      nU(       ac  U R                  U R%                  5       SU-  S9nU H<  nUR'                  SUR                  -  5        U R)                  UR                  5        M>     U(       a¼  U R                  S[        R*                  SU-  S/S9nU H’  n[-        U5      n[        R.                  " 5       nUR                  Ul        [        R0                  " U[        R2                  S5      US'   UR5                  SUR                  < SU< S35        U R7                  U5        M”      UR'                  SU-  5        U R)                  US/5        [9        XUUUUUU	S9  g ! [         a7  nUR                  u  nnU[        R                  :X  a  [        SU-  5      ee S nAff = f! [         a"  nUR                  u  nn[        SU-  5      eS nAff = f)Nr?   r‰   rG   rH   r   r�   z#Refusing to demote our own DSA: %s zobjectClass=ntdsDSAÚ
objectGUIDr‘   zGiven DN %s doesn't existz is not an ntdsda in r%   zNTDS Settingsz)Given DN (%s) wasn't the NTDS Settings DNz5(&(objectclass=nTDSConnection)(fromServer=<GUID=%s>)))rA   rC   zRemoving nTDSConnection: %sz(fsmoRoleOwner=<GUID=%s>))r@   )rA   rB   rC   rE   ÚfsmoRoleOwnerr   zSeizing FSMO role on: z (now owned by r&   z'Removing nTDSDSA: %s (and any children)rŽ   z,Failed to remove the DCs NTDS DSA object: %s©r•   r–   r—   r˜   r™   )r^   r(   rh   r`   r)   r’   Úparentr   r   r0   r1   r'   r8   Úget_rdn_nameÚget_rdn_valuer   r   ÚGUIDr+   r.   r/   r_   rP   ÚMessageÚMessageElementÚFLAG_MOD_REPLACEÚwarningÚmodifyr¡   )r3   r4   Úntds_dnr•   r–   Úremove_connection_objÚseize_stale_fsmor—   r˜   r™   rp   rš   r”   r›   Úe5r:   r;   rœ   Ú	ntds_guidÚstale_connectionsÚconnÚstale_fsmo_rolesÚroleÚvalÚmÚe6s                             r   Úoffline_remove_ntds_dcr»   )  s  € ð �,‰,�rÜ Ÿ^™^°OÐ3Dð ð F€Cäˆs‹8�q‹=Ðˆ=Ü—V’V˜E q¡6¨/Ñ#:¸1Ñ#=×#DÑ#DÀVÓ#LÓM€NØ—‘Ó €IàÓ ÜÐCÀnÑTÓUÐUðØ�|‰| Ð5JØ#/ .¼¿¹ð ð Hˆô 	ˆD‹	�Q‹ÜÛ!(¨%×*?Ñ*?Õ*AðCó Dð 	Dð ˆq‰'€CØ�‰×ÑÓ Ó%Ø�‰×ÑÓ /Ó1ÜÐIØ%ñ&ó 'ð 	'ô œ4Ÿ9™9 c¨,Ñ&7¸Ñ&:Ó;€Iæð "ŸL™L¨e×.EÑ.EÓ.Gð5CØENñ5Oð )ð PÐó &ˆDØ�K‰KÐ5¸¿¹Ñ?Ô@Ø�L‰L˜Ÿ™Ö!ñ &ö Ø Ÿ<™<¨R´s×7HÑ7HØ3OØ*3ñ44à2FÐ1Gð (ð IÐó %ˆDÜ�nÓ%ˆCÜ—’“ˆAØ—7‘7ˆAŒDÜ×+Ò+¨C´×1EÑ1EØ,;ó=ˆAˆg‰Jà�NŠNØ"Ÿgœg£~ð7ô 8à�L‰L˜ŽOñ %ð&Ø�‰Ð=ÀÑGÔHØ�‰�W˜Ð/Ô0ô ˜%¨Ø.AØ,=Ø,=Ø+;Ø-?óAøôo ó Ø—w‘w‰ˆˆtØ”3×)Ñ)Ó)Ü!Ð"=ÀÑ"GÓHÐHàûðûôd ó &Ø—w‘w‰ˆˆtÜÐLØ $ñ%ó &ð 	&ûð&ús0   Â!J( É1'K, Ê(
K)Ê22K$Ë$K)Ë,
LË6LÌLc                 óˆ  • U R                  5         S n [        R                  " US9nSU-  n U R	                  U/ [        R"                  SS9n
[        U
5      S:X  aC  Uc0  U R                  5         [        U< S	U R                  5       < 35      e['        XUSSSSSS9  O[)        XU
S   R                  SSSSSSSS9
  U R+                  5         g ! [         a÷     U R	                  U R                  5       / S[        R                  " U5      -  S9nOE! [         a8  nUR                  u  p‰[        SU< SU R                  5       < SU	< 35      eS nAff = f[        U5      S:X  a0  U R                  5         [        U< S	U R                  5       < 35      eUS   R                  n[        R                  " U S
5      nUR!                  U5         GN¢f = f! [         ad  nUR                  u  p‰U[        R$                  :X  a  / n
 S nAGN¹U R                  5         [        SU< SU R                  5       < SU	< 35      eS nAff = f)N)Úhexz	<GUID=%s>z(&(objectClass=server)(cn=%s)))rA   rD   rC   zFailure checking if z is an server object in z: r   z is not an AD DC in zCN=NTDS Settingsz(objectClass=ntdsdsa)rŒ   z is an NTDS DSA in Tr¥   )r•   r–   r°   r±   r—   r˜   r™   )Útransaction_startÚuuidÚUUIDÚ
ValueErrorr^   r+   r(   r“   r   r0   r   r'   r`   Útransaction_cancelr8   r)   r*   rh   r1   r¡   r»   Útransaction_commit)r3   r4   r5   r”   r³   r¯   Úserver_msgsÚe3r:   r;   Ú	ntds_msgsÚe7s               r   Ú	remove_dcrÈ   ~  sS  € ð
 
×ÑÔà€Ið$Ü—I’I 'Ñ*ˆ	Ø 	Ñ)ˆð0:Ø—L‘L g°R¼s¿~¹~Ø,Cð !ð Eˆ	ô 	ˆI‹˜!ÓØÑØ×$Ñ$Ô&Ü!Û%,¨e×.CÑ.CÕ.Eð#Gó Hð Hô 	˜eØ'Ø26Ø04Ø04Ø/3Ø15ó	7ô 	˜uØ(¨™|Ÿ™Ø37Ø15Ø59Ø04Ø15Ø04Ø26ò	8ð 
×ÑÕøô} ó $ð
	NØŸ,™,¨E×,CÑ,CÓ,EØ-/ð32ä),×):Ò):¸7Ó)Cñ3Dð 'ð E‰Køô
 ó 	NØŸ7™7‰LˆTÝ!ã%,¨e×.CÑ.CÖ.EÂtð#Mó Nð Nûð	Núô �Ó Ó!Ø×$Ñ$Ô&Ü!Û%,¨e×.CÑ.CÕ.Eð#Gó Hð Hà ‘N×%Ñ%ˆ	ä—&’&˜Ð 2Ó3ˆØ×Ñ˜×#ð)$ûô4 ó :Ø—w‘w‰ˆØ”3×)Ñ)Ó)ØŽIà×$Ñ$Ô&Ý!ã˜%×/Ñ/Ö1²4ð9ó:ð :ûð:úsS   ”C ® G Ã
GÃ6DÄGÄ
EÄ3EÅEÅA9GÇGÇ
IÇ$H<È5H<È<Ic                 ó\   • U R                  5         [        XS 5        U R                  5         g r   )Ústart_transactionr»   Úcommit_transaction)r3   r¯   s     r   Ú offline_remove_dc_RemoveDsServerrÌ   Ì  s$   € à	×ÑÔä˜5¨4Ô0à	×ÑÕr   )F)FFFFF)FFFFFFF)r¿   r(   r   Úsambar   Ú	samba.ndrr   Úsamba.dcerpcr   r   Úsamba.dcerpc.dnspr   r	   r
   r   r   r   Ú	Exceptionr   r=   ry   rf   r¡   r»   rÈ   rÌ   r#   r   r   Ú<module>rÒ      s†   ðó& Û 
Ý Ý Ý  ß #÷/÷ /ô0�iô 0ò8ôvMJò`(;ðZ /4Ø,1Ø,1Ø+0Ø-2ôI9ð^ 05Ø-2Ø16Ø,1Ø-2Ø,1Ø.3ôRAòjKó\r   