ó
    cÛ–iJ ã                   ó   • S SK r S SKrS SKrS SKJrJr  S SKJ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  S S	KJr  S S
KJr  S SKJrJrJr  S SKJrJr  S SKJr  S SKJr  S SKJrJrJ r J!r!  S r" " S S\#5      r$g)é    N)Ú	b64decodeÚ	b64encode)Údsdb)Úcommon)Úmisc)Údrsuapi)Ú
ndr_unpackÚndr_pack)Údrsblobs)Údsdb_Dn)Úsecurity)Úget_wellknown_sdsÚget_deletedobjects_descriptorÚget_diff_sds)Úsystem_sessionÚadmin_session)ÚCommandError)Úget_fsmo_roleowner)Úc_REDÚc_DARK_YELLOWÚc_DARK_CYANÚc_DARK_GREENc                 óÒ   • / nU  H$  n UR                  UR                  S5      5        M&     SR	                  U5      $ ! [         a    UR                  [        U5      5         M`  f = f)z Stringify a value list, using utf-8 if possible (which some tests
want), or the python bytes representation otherwise (with leading
'b' and escapes like b' ').
zutf-8Ú,)ÚappendÚdecodeÚUnicodeDecodeErrorÚreprÚjoin)ÚvalsÚresultÚvalues      Ú1/usr/lib/python3/dist-packages/samba/dbchecker.pyÚdump_attr_valuesr$   *   s_   € ð
 €FÛˆð	'Ø�M‰M˜%Ÿ,™, wÓ/Ö0ñ ð
 �8‰8�FÓÐøô "ó 	'Ø�M‰Mœ$˜u›+×&ð	'ús   ‰ >¾$A&Á%A&c                   ó  • \ rS rSrSr0 r      SNS jrS rS\R                  SS4S jr
S rS rSOS	 jrS
 rS rSPS jrS rS rS rS rS rS rS rS rSQS jrS rS rS rS rS rS rS r S r!S r"S r# SPS  jr$S! r%S" r&S# r'S$ r(S% r)S& r*S' r+S( r,S) r-S* r.S+ r/S, r0S- r1S. r2S/ r3S0 r4S1 r5S2 r6S3 r7S4 r8S5 r9S6 r:S7 r;S8 r<S9 r=S: r>S; r?S< r@S= rAS> rBS? rCS@ rDSA rESB rFSC rGSD rHSE rISF rJSG rKSH rLSRSI jrMSJ rNSK rOSL rPSMrQg)SÚdbchecké8   zcheck a SAM database for errorsNc           
      ó  • Xl         S U l        U=(       d    UU l        X0l        X@l        XPl        X`l        X°l        SU l        SU l	        SU l
        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        [7        5       U l        SU l        SU l        SU l        SU l         SU l!        SU l"        SU l#        SU l$        SU l%        SU l&        SU l'        SU l(        SU l)        SU l*        SU l+        SU l,        SU l-        X€l.        X�l/        X l0        SU l1        SU l2        Xpl3        [h        Rj                  " USURm                  5       -   5      U l7        [h        Rj                  " USURq                  5       -  5      U l9        URu                  5       U l;        [h        Rj                  " USURm                  5       -   5      U l<        [h        Rj                  " XR{                  5       5      U l>        0 U l?        [�        U R                   5      U lA        SU lB        SU lC        SU lD        SU lE        SU lF        [�        5       U lH        0 U lI        0 U lJ         SU R—                  UR™                  5       [š        Rœ                  5      -  nURŸ                  U[h        R                   S/S9n[£        [¤        R¦                  US   S   S   5      n[©        U5      U R”                  S	'   [±        5       U lY        [µ        S UR·                  5       5      U l\        U R                   RŸ                  U R|                  [h        R                   S
S/S9nS
US   ;   a  US   S
   U l]        OSUS   ;   a  US   S   U l]        OS U l]        U R                   RŸ                  S[h        R                   S/S9n/ U l^        / U l_        / U l`         US   S   U la        U RÂ                   Hm  n U R—                  [h        Rj                  " U R                   URÉ                  S5      5      [š        RÊ                  5      nU R¼                  RÍ                  U5        Mo     SU R                   R™                  5       -  nSU R                   RÏ                  5       -  nU R                   RŸ                  [h        RÐ                  SS/U R                   RÓ                  5       SU-  S9n[Õ        U5      S:X  a?  U RÀ                  RÍ                  [h        Rj                  " U R                   U5      US   45        U R                   RŸ                  [h        RÐ                  SS/U R                   RÓ                  5       SU-  S9n[Õ        U5      S:X  a?  U RÀ                  RÍ                  [h        Rj                  " U R                   U5      US   45        [h        Rj                  " U R                   SU R                   Rm                  5       -   5      n[×        U R                   US5      n[h        Rj                  " U R                   U R                   R{                  5       5      U:X  a  SU ll        OSU ll        U R                   RŸ                  [h        Rj                  " U R                   U R                   RÛ                  5       5      [h        R                   S/S9n[h        Rj                  " U R                   US   S   S   RÉ                  S5      5      U ln        U R                   RŸ                  U RÜ                  [h        R                   S/S9nSUS   ;   a?  [h        Rj                  " U R                   US   S   S   RÉ                  S5      5      U lo        OS U lo        SU R                   Rq                  5       Rá                  5       -  nURŸ                  U[h        R                   SS/S9nSUS   ;   a  [ã        US   S   S   5      U lr        OSU lr        / U ls        / U lt         U R                   RŸ                  [h        R                   SS S!/S"9nS US   ;   a  US   S    U ls        S!US   ;   a  US   S!   U lt        g g ! [h        Rª                   a/  nUR¬                  u  nnU[h        R®                  :w  a  e  S nAGN£S nAff = f! [Ä         a     GNÓ[Æ         a     GNßf = f! [Ä         aN    U R¾                  RÍ                  [h        Rj                  " U R                   URÉ                  S5      5      5         GM.  f = f! [h        Rª                   a.  nUR¬                  u  nnU[h        R®                  :w  a  e  S nAg S nAff = f)#NFr   zCN=Infrastructure,zCN=Partitions,%szCN=RID Manager$,CN=System,zCN=DnsAdmins,%sÚ	objectSid©ÚbaseÚscopeÚattrsÚ	DnsAdminszmsDS-hasMasterNCsÚhasMasterNCsÚ ÚnamingContextsÚutf8zDC=DomainDnsZones,%szDC=ForestDnsZones,%súmsDS-NC-Replica-LocationsúmsDS-NC-RO-Replica-Locationsz$(&(objectClass=crossRef)(ncName=%s)))r,   r-   r+   Ú
expressioné   ÚridTÚserverReferenceÚrIDSetReferencesz1CN=Directory Service,CN=Windows NT,CN=Services,%sz(objectClass=nTDSService)ÚtombstoneLifetime)r+   r,   r5   r-   é´   z@SAMBA_DSDBÚcompatibleFeaturesÚrequiredFeatures)r,   r+   r-   )uÚsamdbÚdict_oid_nameÚsamdb_schemaÚverboseÚfixÚyesÚquietÚcolourÚremove_all_unknown_attributesÚremove_all_empty_attributesÚfix_all_normalisationÚfix_all_duplicatesÚfix_all_DN_GUIDsÚfix_all_binary_dnÚ#remove_implausible_deleted_DN_linksÚ!remove_plausible_deleted_DN_linksÚ$fix_all_string_dn_component_mismatchÚ"fix_all_GUID_dn_component_mismatchÚ!fix_all_SID_dn_component_mismatchÚ fix_all_SID_dn_component_missingÚ(fix_all_old_dn_string_component_mismatchÚfix_all_metadataÚfix_time_metadataÚfix_undead_linked_attributesÚfix_all_missing_backlinksÚfix_all_orphaned_backlinksÚfix_all_missing_forward_linksÚdictÚduplicate_link_cacheÚrecover_all_forward_linksÚfix_rmd_flagsÚfix_ntsecuritydescriptorÚ$fix_ntsecuritydescriptor_owner_groupÚseize_fsmo_roleÚmove_to_lost_and_foundÚfix_instancetypeÚ"fix_replmetadata_zero_invocationidÚ fix_replmetadata_duplicate_attidÚfix_replmetadata_wrong_attidÚfix_replmetadata_unsorted_attidÚfix_deleted_deleted_objectsÚfix_dnÚfix_base64_userparametersÚfix_utf8_userparametersÚfix_doubled_userparametersÚfix_sid_rid_set_conflictÚquick_membership_checksÚreset_well_known_aclsÚcheck_expired_tombstonesÚexpired_tombstonesÚreset_all_well_known_aclsÚin_transactionÚldbÚDnÚ	domain_dnÚinfrastructure_dnÚget_config_basednÚ	naming_dnÚget_schema_basednÚ	schema_dnÚrid_dnÚget_dsServiceNameÚntds_dsaÚclass_schemaIDGUIDr   Úwellknown_sdsÚfix_all_missing_objectclassÚfix_missing_deleted_objectsÚfix_replica_locationsÚfix_missing_rid_set_masterÚfix_changes_after_deletion_bugÚsetÚdn_setÚlink_id_cacheÚname_mapÚget_wellknown_dn_cachedÚget_default_basednr   ÚDS_GUID_USERS_CONTAINERÚsearchÚ
SCOPE_BASEr	   r   Údom_sidÚstrÚLdbErrorÚargsÚERR_NO_SUCH_OBJECTr   Úsystem_session_infor   Úget_domain_sidÚadmin_session_infoÚ	write_ncsÚdeleted_objects_containersÚncs_lacking_deleted_containersÚdns_partitionsÚncsÚKeyErrorÚ
IndexErrorr   Ú!DS_GUID_DELETED_OBJECTS_CONTAINERr   Úget_root_basednÚSCOPE_ONELEVELÚget_partitions_dnÚlenr   Úis_rid_masterÚget_serverNameÚserver_ref_dnÚ
rid_set_dnÚget_linearizedÚintr:   r<   r=   )Úselfr>   r@   rA   rB   rC   rD   rq   rl   rm   rn   rE   Úbase_dnÚresÚdnsadmins_sidÚe5ÚenumÚestrÚncÚdnÚdomaindns_zoneÚforestdns_zoneÚdomainÚforestÚfsmo_dnÚ
rid_masterÚntds_service_dnÚe6s                               r#   Ú__init__Údbcheck.__init__=   s�  € ð Œ
Ø!ˆÔØ)×2¨UˆÔØŒØŒØŒØŒ
ØŒØ-2ˆÔ*Ø+0ˆÔ(Ø%*ˆÔ"Ø"'ˆÔØ %ˆÔØ!&ˆÔØ38ˆÔ0Ø16ˆÔ.Ø49ˆÔ1Ø27ˆÔ/Ø16ˆÔ.Ø05ˆÔ-Ø8=ˆÔ5Ø %ˆÔØ!&ˆÔØ,1ˆÔ)Ø).ˆÔ&Ø*/ˆÔ'Ø-2ˆÔ*Ü$(£FˆÔ!Ø).ˆÔ&Ø"ˆÔØ(-ˆÔ%Ø49ˆÔ1Ø$ˆÔØ&+ˆÔ#Ø %ˆÔØ27ˆÔ/Ø05ˆÔ-Ø,1ˆÔ)Ø/4ˆÔ,Ø+0ˆÔ(ØˆŒØ).ˆÔ&Ø',ˆÔ$Ø*/ˆÔ'Ø(-ˆÔ%Ø'>Ô$Ø%:Ô"Ø(@Ô%Ø"#ˆÔØ).ˆÔ&Ø,ÔÜ!$§¢¨Ð/CÀeÇoÁoÓFWÑ/WÓ!XˆÔÜŸš Ð'9¸E×<SÑ<SÓ<UÑ'UÓVˆŒØ×0Ñ0Ó2ˆŒÜ—f’f˜UÐ$@À5Ç?Á?ÓCTÑ$TÓUˆŒÜŸš˜u×&=Ñ&=Ó&?Ó@ˆŒØ"$ˆÔÜ.¨t¯z©zÓ:ˆÔØ+0ˆÔ(Ø+0ˆÔ(Ø%*ˆÔ"Ø*/ˆÔ'Ø.3ˆÔ+ä“eˆŒØˆÔØˆŒð	Ø'¨$×*FÑ*FØ×(Ñ(Ó*Ü×,Ñ,ó+.ñ .ˆGð —,‘, G´3·>±>Ø&1 ]ð ð 4ˆCä&¤x×'7Ñ'7¸¸Q¹ÀÑ9LÈQÑ9OÓPˆMÜ),¨]Ó);ˆD�M‰M˜+Ñ&ô $2Ó#3ˆÔ Ü"/°°e×6JÑ6JÓ6LÓ"MˆÔà�j‰j×Ñ T§]¡]¼#¿.¹.ÐQdÐftÐPuÐÐvˆØ # a¡&Ó(Ø  ™VÐ$7Ñ8ˆD�Nð   Q¡Ó'Ø!$ Q¡¨Ñ!7�•à!%�”à�j‰j×Ñ R¬s¯~©~ÐFVÐEWÐÐXˆØ*,ˆÔ'Ø.0ˆÔ+Ø ˆÔð	Ø˜1‘vÐ.Ñ/ˆDŒHð —(”(ˆBðbØ×1Ñ1´#·&²&¸¿¹ÀRÇYÁYÈvÓEVÓ2WÜ26×2XÑ2XóZ�à×/Ñ/×6Ñ6°rÖ:ñ	 ð 0°$·*±*×2OÑ2OÓ2QÑQˆØ/°$·*±*×2LÑ2LÓ2NÑNˆØ—‘×"Ñ"¬×);Ñ);Ø*EÐGeÐ)fØ(,¯
©
×(DÑ(DÓ(FØ.TÐWeÑ.eð #ð gˆô ˆv‹;˜!ÓØ×Ñ×&Ñ&¬¯ª¨t¯z©z¸>Ó(JÈFÐSTÉIÐ'VÔWà—‘×"Ñ"¬×);Ñ);Ø*EÐGeÐ)fØ(,¯
©
×(DÑ(DÓ(FØ.TÐWeÑ.eð #ð gˆô ˆv‹;˜!ÓØ×Ñ×&Ñ&¬¯ª¨t¯z©z¸>Ó(JÈFÐSTÉIÐ'VÔWä—&’&˜Ÿ™Ð%AÀDÇJÁJ×DXÑDXÓDZÑ%ZÓ[ˆÜ'¨¯
©
°G¸UÓCˆ
Ü�6Š6�$—*‘*˜dŸj™j×:Ñ:Ó<Ó=ÀÓKØ!%ˆDÕà!&ˆDÔð �j‰j×Ñ¤S§V¢V¨D¯J©J¸¿
¹
×8QÑ8QÓ8SÓ%TÜ&)§n¡nÐ=NÐ<Oð  ð Qˆô !ŸVšV D§J¡J°°A±Ð7HÑ0IÈ!Ñ0L×0SÑ0SÐTZÓ0[Ó\ˆÔð �j‰j×Ñ T×%7Ñ%7Ü&)§n¡nÐ=OÐ<Pð  ð Rˆà  Q¡Ó'Ü!Ÿfšf T§Z¡Z°°Q±Ð8JÑ1KÈAÑ1N×1UÑ1UÐV\Ó1]Ó^ˆD�Oà"ˆDŒOàMØŸ*™*×6Ñ6Ó8×GÑGÓIñJˆà�l‰l Ü!$§¡Ø&AØ"5Ð!6ð ð 8ˆð  # a¡&Ó(Ü%(¨¨Q©Ð0CÑ)DÀQÑ)GÓ%HˆDÕ"à%(ˆDÔ"à"$ˆÔØ "ˆÔð	Ø—*‘*×#Ñ#¬#¯.©.Ø)6Ø+?Ø+=ð+?ð $ð @ˆCð $ s¨1¡vÓ-Ø*-¨a©&Ð1EÑ*F�Ô'Ø! S¨¡VÓ+Ø(+¨A©Ð/AÑ(B�Õ%ð ,øôG �|‰|ó 	ØŸ7™7‰LˆT�4Ø”s×-Ñ-Ó-Øõ .ûð	ûô6 ó 	ÚÜó 	Úð	ûô ó bØ×3Ñ3×:Ñ:¼3¿6º6À$Ç*Á*ÈbÏiÉiÐX^ÓN_Ó;`×aÐaðbûô@ �|‰|ó 	ØŸ7™7‰LˆT�4Ø”s×-Ñ-Ó-Øô .ûð	ús^   ÊBb Ï8c ÐA)c(à,Ae âcâ$cãcã
c%ã	c%ã$c%ã(Ae ä?e åfå$f æ fc                 ó.  • U R                   R                  [        U5      5      nS nUb  UR                  U5      nUcW  U R                  R	                  X5      nUc  U$ Uc0  0 U R                   [        U5      '   U R                   [        U5         nXCU'   U$ ©N)Úhash_well_knownÚgetrŽ   r>   Úget_wellknown_dn)r§   Únc_rootÚwkguidÚh_ncr¯   s        r#   rˆ   Údbcheck.get_wellknown_dn_cachedø   s‘   € Ø×#Ñ#×'Ñ'¬¨G«Ó5ˆØˆØÑØ—‘˜&Ó!ˆBØ‰:Ø—‘×,Ñ,¨WÓ=ˆBØ‰zØ�	Ø‰|Ø57�×$Ñ$¤S¨£\Ñ2Ø×+Ñ+¬C°«LÑ9�Ø�‰LØˆ	ó    c                 ó  • U R                   R                  XS/US9nU R                  S[        U5      -  5        SnSU l        X`R                  5       -  n[        5       U l        U HM  nU R                  R                  [        UR                  5      5        X`R                  UR                  US9-  nMO     Uc  X`R                  5       -  nU R                  S:”  a  U R                  SU R                  -  5        U R                  S[        U5      X`R                  -   4-  5        U R                  S:w  a  U R                  SU R                   S	35        US:w  a&  U R                  (       d  U R                  S
U S35        U$ )z>perform a database check, returning the number of errors foundr¯   ©r+   r,   r-   ÚcontrolszChecking %u objectsr   )Úrequested_attrsz†NOTICE: found %d expired tombstones, 'samba' will remove them daily, 'samba-tool domain tombstones expunge' would do that immediately.zChecked %u objects (%u errors)z	WARNING: z/ of these errors cannot be automatically fixed.z-Please use 'samba-tool dbcheck --fix' to fix z errors)r>   r‹   Úreportr    Úunfixable_errorsÚ check_deleted_objects_containersr„   Úattribute_or_class_idsr…   ÚaddrŽ   r¯   Úcheck_objectÚcheck_rootdsero   rB   )r§   ÚDNr,   rÆ   r-   r©   Úerror_countÚobjects           r#   Úcheck_databaseÚdbcheck.check_database  sz  € ð �j‰j×Ñ R¸T¸FÈXÐÐVˆØ�‰Ð)¬C°«HÑ4Ô5ØˆØ !ˆÔà×<Ñ<Ó>Ñ>ˆä&)£eˆÔ#ãˆFØ�K‰K�O‰OœC §	¡	›NÔ+Ø×,Ñ,¨V¯Y©YÈÐ,ÐNÑNŠKñ ð ‰:Ø×-Ñ-Ó/Ñ/ˆKà×"Ñ" QÓ&Ø�K‰Kð 5ð ×/Ñ/ñ	1ô 2ð 	�‰Ð4Ü˜“X˜{×-BÑ-BÑBÐCñDô 	Eð × Ñ  AÓ%Ø�K‰K˜) D×$9Ñ$9Ð#:ð ;Ið Iô Jð ˜!Ó D§H§HØ�K‰KÐGØ&˜- wð0ô 1ð ÐrÃ   c           
      ó6	  • SnU R                    GHÚ  nX R                  :X  a  M  US-  nU R                  SU-  5        U R                  SU-  S5      (       d  MJ  [        R
                  " U R                  S5      nUR                  U5        Sn U R                  R                  U[        R                  / / SQS	9n[        U5      S:w  ap  US   R                  R                  S
5      n[        R
                  " U R                  S[        [        R                  " U5      5      -  5      nUR                  U5        Ub   U R                  R'                  X4/ SQ5        U R                  R                  U[        R                  S// SQS	9n[        U5      S:w  a  U R                  SU-  5          gUS   S   n/ nSnU H–  n[)        U R                  UR+                  S5      [,        R.                  5      nU R1                  U5      (       a/  U R                  SU-  5        UR                  R                  S
5      nUR3                  [        U5      5        M˜     Ub#  S[        [        R                  " U5      5      -  nO-S[,        R4                  -  nUR3                  U< SU< 35        Sn[6        R8                  " U R                  R;                  5       5      n[=        UU R>                  S9n[A        U5      R+                  S5      nU R                  RC                  SU< SU< SU< 3SS/S 9  [        RD                  " 5       n[        R
                  " U R                  [        US   S!   5      5      Ul        [        RF                  " U[        RH                  S5      US'   U RK                  US/S"U-  S#S$9(       a  U R                  S%U-  5        U RL                  R3                  U5        GMÝ     U$ ! [        R                    aG  nUR"                  u  p‰U[        R$                  :X  a   SnAGNóU R                  SU	-  5         SnA  gSnAff = f! [        R                    a6  n
U
R"                  u  p‰U R                  SU< SU< SU	< 35         Sn
A
  gSn
A
ff = f)&zXThis function only fixes conflicts on the Deleted Objects
containers, not the attributesr   r6   z=ERROR: NC %s lacks a reference to a Deleted Objects containerz-Fix missing Deleted Objects container for %s?r€   zCN=Deleted ObjectsN)úshow_deleted:1úextended_dn:1:1úshow_recycled:1úreveal_internals:0rÅ   ÚGUIDzCN=Deleted Objects\0ACNF:%sz<Couldn't check for conflicting Deleted Objects container: %s)rÕ   úrelax:0r×   z/Couldn't move old Deleted Objects placeholder: ú to z: ÚwellKnownObjects)rÕ   úextended_dn:0r×   rØ   z(wellKnownObjects was not found for NC %sr2   z7wellKnownObjects had duplicate Deleted Objects value %sz
objectGUID: %szB:32:%sÚ:r0   ©r‡   údn: zµ
objectClass: top
objectClass: container
description: Container for deleted objects
isDeleted: TRUE
isCriticalSystemObject: TRUE
showInAdvancedViewOnly: TRUE
nTSecurityDescriptor:: z
systemFlags: -1946157056rÚ   úprovision:0©rÆ   r¯   z"NC %s lacks Deleted Objects WKGUIDF©ÚvalidatezAdded %s well known guid link)'r—   ry   rÈ   Úconfirm_allrr   rs   r>   Úadd_baser‹   rŒ   r    r¯   Úget_extended_componentrŽ   r   rÙ   r�   r�   r‘   Úrenamer   r   r   ÚDSDB_SYNTAX_BINARY_DNÚis_deleted_objects_dnr   rœ   r   r�   r“   r   r‡   r   Úadd_ldifÚMessageÚMessageElementÚFLAG_MOD_REPLACEÚ	do_modifyr–   )r§   rÐ   r®   r¯   Úconflict_dnr©   ÚguidÚe2r¬   r­   Úe1ÚwkoÚlistwkoÚproposed_objectguidÚoÚdsdb_dnÚguid_suffixÚ
wko_prefixÚ
domain_sidÚsec_descÚsec_desc_b64Údeltas                         r#   rÊ   Ú(dbcheck.check_deleted_objects_containers.  s  € ð ˆØ×5Õ5ˆBØ—^‘^Ó#ÙØ˜1ÑˆKØ�K‰KÐWÐZ\Ñ\Ô]Ø×#Ñ#Ð$SÐWYÑ$ZÐ\y×zÑzÙä—’˜Ÿ
™
Ð$8Ó9ˆBØ�K‰K˜ŒOàˆKðà—j‘j×'Ñ'¨R´s·~±~ÈRò2[ð (ð \�ô �s“8˜q“=Ø˜q™6Ÿ9™9×;Ñ;¸FÓC�DÜ"%§&¢&¨¯©Ø)GÌ#ÌdÏiÊiÐX\ËoÓJ^Ñ)^ó#`�Kà×(Ñ(¨Ô,ð Ñ&ðØ—J‘J×%Ñ% bÒ7gÔhð —*‘*×#Ñ#¨´3·>±>Ø+=Ð*>ò.Wð $ð XˆCô �3‹x˜1‹}Ø—‘ÐFÈÑKÔLÙð �a‘&Ð+Ñ,ˆCØˆGØ"&ÐÛ�Ü! $§*¡*¨a¯h©h°vÓ.>Ä×@ZÑ@ZÓ[�Ø×-Ñ-¨g×6Ñ6Ø—K‘KÐ YÐ\]Ñ ]Ô^ð +2¯*©*×*KÑ*KÈFÓ*SÐ'Ø—‘œs 1›vÖ&ñ ð #Ñ.Ø0´3´t·y²yÐATÓ7UÓ3VÑV‘à&¬×)OÑ)OÑO�
Ø—‘«*²bÐ9Ô:Ø �ô "×)Ò)¨$¯*©*×*CÑ*CÓ*EÓFˆJÜ4°ZØ>B¿m¹mñMˆHä$ XÓ.×5Ñ5°fÓ=ˆLð �J‰J×Òó "$£\²;ð!@ð +4°]Ð)Cð  ñ 	Eô —K’K“MˆEÜ—v’v˜dŸj™j¬#¨c°!©f°T©lÓ*;Ó<ˆEŒHÜ(+×(:Ò(:¸7Ü;>×;OÑ;OØ;Mó)OˆEÐ$Ñ%ð
 �~‰~˜e i [ØBÀRÑGØ',ð ö .ð —‘Ð;¸bÑ@ÔAà×+Ñ+×2Ñ2°2×6ñG 6ðJ Ðøô] —<‘<ó Ø!Ÿw™w‘�Øœ3×1Ñ1Ó1Ýà—K‘KÐ ^ÐaeÑ eÔfÝûðûô —|‘|ó Ø#%§7¡7‘L�TØ—K’KÓacÓepÒrvÐ wÔxÝûðús7   ÂB+O0Ä=QÏ0QÐ"QÐ,QÑQÑRÑ"+RÒRc                 ó>  • U R                   (       a  gU R                  (       aï  UR                  S5      (       a  [        S5      USS -   nOÇUR                  S5      (       a  [	        S5      USS -   nOŸUR                  S5      (       a  [        S5      USS -   nOwUR                  S5      (       a  [        S5      US	S -   nOOUR                  S
5      (       a  [        S
5      USS -   nO'UR                  S5      (       a  [        S5      USS -   n[        U5        g)z#print a message unless quiet is setNÚERRORé   ÚWARNINGé   ÚINFOé   ÚNOTICEé   ÚNOTEÚSKIPPINGé   )rD   rE   Ú
startswithr   r   r   r   Úprint)r§   Úmsgs     r#   rÈ   Údbcheck.report™  sñ   € à�:�:ØØ�;�;Ø�~‰~˜g×&Ñ&Ü˜G“n s¨1¨2 wÑ.‘Ø—‘ 	×*Ñ*Ü# IÓ.°°Q°R°Ñ8‘Ø—‘ ×'Ñ'Ü! &Ó)¨C°°¨GÑ3‘Ø—‘ ×)Ñ)Ü! (Ó+¨c°!°"¨gÑ5‘Ø—‘ ×'Ñ'Ü! &Ó)¨C°°¨GÑ3‘Ø—‘ 
×+Ñ+Ü" :Ó.°°Q°R°Ñ8�äˆc�
rÃ   c                 ó°   • U R                   (       d  gU R                  (       a  U R                  $ U R                  (       a  Sn[        R                  " XUS9$ )zconfirm a changeFT©ÚforcedÚ	allow_all)rB   rD   rC   r   Úconfirm)r§   r  r  r  s       r#   r  Údbcheck.confirm­  s9   € à�x�xØØ�:�:Ø—8‘8ˆOØ�8�8ØˆFÜ�~Š~˜c¸IÑFÐFrÃ   c                 ó"  • U R                   (       d  g[        X5      S:X  a  g[        X5      S:X  a  SnOU R                  nU R                  (       a  U$ [        R
                  " XSS9nUS:X  a  [        XS5        gUS:X  a  [        XS5        gU$ )z(confirm a change with support for "all" FÚNONEÚALLTr  )rB   ÚgetattrrC   rD   r   r  Úsetattr)r§   r  Úall_attrr  Úcs        r#   rå   Údbcheck.confirm_all¹  s€   € à�x�xØÜ�4Ó" fÓ,ØÜ�4Ó" eÓ+Ø‰Fà—X‘XˆFØ�:�:ØˆMÜ�NŠN˜3¸Ñ>ˆØ�‹:Ü�D EÔ*ØØ�‹;Ü�D FÔ+ØØˆrÃ   c                 óT  • U R                   (       a  U R                  SU-  5         US[        R                  -  /-   nU R                  R                  XS9  g! [         aE  nU R                  (       a  [        U< SU< 35      eU R                  U< SU< 35         SnAgSnAff = f)z&delete dn with optional verbose outputzdelete DN %súlocal_oid:%s:0râ   ú : NFT)	rA   rÈ   r   ÚDSDB_CONTROL_DBCHECKr>   ÚdeleteÚ	Exceptionrq   r   )r§   r¯   rÆ   r  Úerrs        r#   Ú	do_deleteÚdbcheck.do_deleteÎ  s‘   € à�<�<Ø�K‰K˜¨Ñ+Ô,ð	ØÐ#3´d×6OÑ6OÑ#OÐ"PÑPˆHØ�J‰J×Ñ˜bÐÑ4ð øô ó 	Ø×"×"Ü"³²SÐ#9Ó:Ð:Ø�K‰K£Sª#Ð.Ô/Üûð		ús   §0A Á
B'Á";B"Â"B'c                 óÈ  • US[         R                  -  /-   nU R                  (       aM  U R                  U R                  R                  U[        R                  5      5        U R                  SU-  5         U R                  R                  XUS9  g! [         aE  nU R                  (       a  [        U< SU< 35      eU R                  U< SU< 35         SnAgSnAff = f)z-perform a modify with optional verbose outputr  zcontrols: %r)rÆ   rä   r   NFT)r   r!  rA   rÈ   r>   Ú
write_ldifrr   ÚCHANGETYPE_MODIFYÚmodifyr#  rq   r   )r§   ÚmrÆ   r  rä   r$  s         r#   rï   Údbcheck.do_modifyÜ  s¶   € àÐ/´$×2KÑ2KÑKÐLÑLˆØ�<�<Ø�K‰K˜Ÿ
™
×-Ñ-¨a´×1FÑ1FÓGÔHØ�K‰K˜¨Ñ1Ô2ð	Ø�J‰J×Ñ˜a¸XÐÑFð øô ó 	Ø×"×"Ü"³²SÐ#9Ó:Ð:Ø�K‰K£Sª#Ð.Ô/Üûð		ús   Á7B Â
C!Â;CÃC!c           
      ó¦  • U R                   (       a8  U R                  S[        U5      < S[        U5      < S[        U5      < 35         X#-   nUS[        R                  -  /-   nU R
                  R                  XUS9  g	! [         aE  nU R                  (       a  [        U< SU< 35      eU R                  U< SU< 35         SnAgSnAff = f)
z-perform a rename with optional verbose outputrà   z
changeType: modrdn
newrdn: z
deleteOldRdn: 1
newSuperior: r  râ   r   NFT)
rA   rÈ   rŽ   r   r!  r>   rè   r#  rq   r   )r§   Úfrom_dnÚto_rdnÚto_baserÆ   r  Úto_dnr$  s           r#   Ú	do_renameÚdbcheck.do_renameë  s±   € à�<�<Ø�KŠKô ˜'–l¤C¨¦K´°Wµð	?ô @ð
	ØÑ$ˆEØÐ#3´d×6OÑ6OÑ#OÐ"PÑPˆHØ�J‰J×Ñ˜g°xÐÑ@ð øô ó 	Ø×"×"Ü"³²SÐ#9Ó:Ð:Ø�K‰K£Sª#Ð.Ô/Üûð		ús   Á5B Â
CÂ;CÃCc                 óä   • XR                   ;   a  U R                   U   $ U R                  R                  U5      nU(       a  U R                  R                  U5      nOS nX#4U R                   U'   X#4$ r»   )r†   r@   Úget_linkId_from_lDAPDisplayNameÚ!get_backlink_from_lDAPDisplayName)r§   ÚattrnameÚlinkIDÚrevnames       r#   Ú get_attr_linkID_and_reverse_nameÚ(dbcheck.get_attr_linkID_and_reverse_nameþ  sn   € Ø×)Ñ)Ó)Ø×%Ñ% hÑ/Ð/Ø×"Ñ"×BÑBÀ8ÓLˆÞØ×'Ñ'×IÑIÈ(ÓS‰GàˆGØ(.Ð'8ˆ×Ñ˜8Ñ$ØˆÐrÃ   c                 óˆ  • U R                  SU< SU< 35        U R                  SU< SU< S3S5      (       d  U R                  SU-  5        g[        R                  " 5       nXl        [        R
                  " S	[        R                  U5      X2'   U R                  US
S/SU-  SS9(       a  U R                  SU-  5        gg)zfix empty attributeszERROR: Empty attribute ú in zRemove empty attribute ú from Ú?rG   zNot fixing empty attribute %sNr0   rÚ   r×   z#Failed to remove empty attribute %sFrã   zRemoved empty attribute %s)rÈ   rå   rr   rì   r¯   rí   ÚFLAG_MOD_DELETErï   )r§   r¯   r7  r+  s       r#   Úerr_empty_attributeÚdbcheck.err_empty_attribute	  s­   € à�Š»Â2ÐFÔGØ×ÒËÓRTÐ UÐWt×uÑuØ�K‰KÐ7¸(ÑBÔCØä�KŠK‹MˆØŒÜ×(Ò(¨¬S×-@Ñ-@À(ÓKˆ‰Ø�>‰>˜!˜iÐ):Ð;Ø?À(ÑJÐUZð ö \à�K‰KÐ4°xÑ?Õ@ð\rÃ   c                 óŠ  • U R                  SU< SU< 35        / nU HŸ  nU R                  R                  U R                  X%/5      n[	        U5      S:w  a)  U R                  SU-  5        UR                  US45        Mb  US   U:w  d  Mm  U R                  SU< SUS   < S	35        UR                  XVS   45        M¡     U R                  S
U< SU< S3S5      (       d  U R                  SU-  5        g[        R                  " 5       nXl	        [        S[	        U5      5       Hi  nXH   u  pY[        R                  " U[        R                  U5      USU-  '   U	S:w  d  M=  [        R                  " U	[        R                  U5      USU-  '   Mk     U R                  USS/SU-  SS9(       a  U R                  SU-  5        gg)z?fix attribute normalisation errors, without altering sort orderz)ERROR: Normalisation error for attribute r=  r6   zUnable to normalise value '%s'r0   r   zvalue 'z' should be 'Ú'zFix normalisation for r>  r?  rH   zNot fixing attribute %sNzvalue_%uznormv_%urÚ   r×   ú Failed to normalise attribute %sFrã   úNormalised attribute %s)rÈ   r>   Údsdb_normalise_attributesr@   r    r   rå   rr   rì   r¯   Úrangerí   r@  ÚFLAG_MOD_ADDrï   )
r§   r¯   r7  ÚvaluesÚmod_listÚvalÚ
normalisedr+  ÚiÚnvals
             r#   Úerr_normalise_mismatchÚdbcheck.err_normalise_mismatch  s—  € à�ŠË8ÒUWÐXÔYØˆÛˆCØŸ™×=Ñ=Ø×!Ñ! 8¨Uó4ˆJä�:‹ !Ó#Ø—‘Ð<¸sÑBÔCØ—‘  b 	Ö*Ø˜Q‘- 3Õ&Ø—’»3À
È1ÄÐNÔOØ—‘ °¡mÐ 4Ö5ñ ð ×ÒÃxÓQSÐ TÐVm×nÑnØ�K‰KÐ1°HÑ<Ô=Øä�KŠK‹MˆØŒÜ�qœ#˜h›-Ö(ˆAØ"™+‰KˆSÜ #× 2Ò 2°3¼×8KÑ8KÈXÓ VˆAˆj˜1‰nÑØ�r�zÜ$'×$6Ò$6°t¼S×=MÑ=MØ7?ó%A��*˜q‘.Ó!ñ	 )ð �>‰>˜!˜iÐ):Ð;Ø<¸xÑGØ#(ð ö *ð �K‰KÐ1°HÑ<Õ=ð*rÃ   c                 ó<  • U R                   R                  U R                  X#5      n[        U5      U:X  a  gU R	                  SU< SU< S35        U R	                  SU< S[        U5      < S35        U R                  SU< S	U< S
3S5      (       d  U R	                  SU-  5        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      XR'   U R                  USS/SU-  SS9(       a  U R	                  SU-  5        gg)z.fix attribute normalisation and/or sort errorsNz*ERROR: Normalisation error for attribute 'ú' in 'rD  z*Values/Order of values do/does not match: Ú/Ú!zFix normalisation for 'ú' from 'ú'?rH   úNot fixing attribute '%s'rÚ   r×   rE  Frã   rF  )r>   rG  r@   ÚlistrÈ   rå   rr   rì   r¯   rí   rî   rï   )r§   r¯   r7  rJ  rM  r+  s         r#   Úerr_normalise_mismatch_replaceÚ&dbcheck.err_normalise_mismatch_replace6  sò   € à—Z‘Z×9Ñ9¸$×:KÑ:KÈXÓ^ˆ
Ü�
Ó˜vÓ%àØ�ŠËxÓY[Ð\Ô]Ø�ŠË&ÔRVÐWaÖRbÐcÔdØ×ÒË8ÓUWÐ XÐZq×rÑrØ�K‰KÐ3°hÑ>Ô?Øä�KŠK‹MˆØŒÜ×(Ò(¨´S×5IÑ5IÈ8ÓTˆ‰à�>‰>˜!˜iÐ):Ð;Ø<¸xÑGØ#(ð ö *ð �K‰KÐ1°HÑ<Õ=ð*rÃ   c                 óâ  • U R                  SU< SU< S35        U R                  S[        U5      < S[        U5      < S35        U R                  SU< SU< S	3S
5      (       d  U R                  SU-  5        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      XR'   U R                  USS/SU-  SS9(       a  U R                  SU-  5        gg)zfix duplicate attribute valuesz'ERROR: Duplicate values for attribute 'rS  rD  zValues contain a duplicate: [z]/[z]!zFix duplicates for 'rV  rW  rI   rX  NrÚ   r×   z0Failed to remove duplicate value on attribute %sFrã   z'Removed duplicate value on attribute %s)	rÈ   r$   rå   rr   rì   r¯   rí   rî   rï   )r§   r¯   r7  Ú
dup_valuesrJ  r+  s         r#   Úerr_duplicate_valuesÚdbcheck.err_duplicate_valuesK  sÑ   € à�ŠËHÓVXÐYÔZØ�ŠÜ% jÖ1Ô3CÀFÖ3KðMô 	Nà×ÒËÓRTÐ UÐWk×lÑlØ�K‰KÐ3°hÑ>Ô?Øä�KŠK‹MˆØŒÜ×(Ò(¨´×1EÑ1EÀxÓPˆ‰à�>‰>˜!˜iÐ):Ð;ØLÈxÑWØ#(ð ö *ð �K‰KÐAÀHÑLÕMð*rÃ   c                 óB   • UR                   S[        R                  -  :H  $ )z2see if a dsdb_Dn is the special Deleted Objects DNzB:32:%s:)Úprefixr   rœ   )r§   rø   s     r#   rê   Údbcheck.is_deleted_objects_dn]  s   € à�~‰~ ¬d×.TÑ.TÑ!TÑTÐTrÃ   c                 ó*  • U R                  SU< SU R                  R                  U5      < S35        U R                  SU-  S5      (       d  U R                  SU-  5        gU R	                  US/S	U-  5      (       a  U R                  S
U-  5        gg)z!handle object without objectclassz%ERROR: missing objectclass in object zw.  If you have another working DC, please run 'samba-tool drs replicate --full-sync --local <destinationDC> <sourceDC> rD  zIIf you cannot re-sync from another DC, do you wish to delete object '%s'?r   z1Not deleting object with missing objectclass '%s'NrÚ   úFailed to remove DN %súRemoved DN %s)rÈ   r>   Úget_nc_rootrå   r%  ©r§   r¯   s     r#   Úerr_missing_objectclassÚdbcheck.err_missing_objectclassa  s¼   € à�Šó  |~ð  @D÷  @Jñ  @J÷  @Vñ  @Vð  WYö  @Zð  [ô  	\Ø×ÑÐ kÐnpÑ pð  sP÷  Qñ  QØ�K‰KÐKÈbÑPÔQØØ�>‰>˜"˜y˜kØ2°RÑ7÷9ñ 9à�K‰K˜¨"Ñ,Õ-ð9rÃ   c                 ó®  • U(       dd  U R                  SU< SU< SU< 35        U R                  S[        U5      -  5        U R                  SS5      (       d  U R                  S5        gOcU R                  S	U< SU< SU< 35        U R                  S[        U5      -  5        U R                  S
S5      (       d  U R                  S5        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      US'   U R                  USS[        R                  -  /SU-  5      (       a  U R                  SU-  5        gg)z(handle a DN pointing to a deleted objectz ERROR: target DN is deleted for ú in object ú - z#Target GUID points at deleted DN %rzRemove DN link?rL   zNot removingNz"WARNING: target DN is deleted for zRemove stale DN link?rM   Ú	old_valuer×   r  z(Failed to remove deleted DN attribute %sz"Removed deleted DN on attribute %s)rÈ   rŽ   rå   rr   rì   r¯   rí   r@  rï   r   Ú DSDB_CONTROL_REPLMD_VANISH_LINKS)r§   r¯   r7  rL  rø   Ú
correct_dnÚremove_plausibler+  s           r#   Úerr_deleted_dnÚdbcheck.err_deleted_dnk  s)  € æØ�KŠKÓRZÓ\^Ò`cÐdÔeØ�K‰KÐ=ÄÀJÃÑOÔPØ×#Ñ#Ð$5Ð7\×]Ñ]Ø—‘˜NÔ+Øð ^ð �KŠKÓT\Ó^`ÒbeÐfÔgØ�K‰KÐ=ÄÀJÃÑOÔPØ×#Ñ#Ð$;Ð=`×aÑaØ—‘˜NÔ+Øä�KŠK‹MˆØŒÜ×+Ò+¨C´×1DÑ1DÀhÓOˆˆ+‰Ø�>‰>˜!Ð/Ø.´×1VÑ1VÑVðXàDÀxÑO÷Qñ Qð �K‰KÐ<¸xÑGÕHðQrÃ   c           
      ó^  • [        U5      R                  S5      S:w  a/  U R                  SU< SU< SU< 35        U R                  S5        gU R                  U5      u  pVUS-  S:X  GaK  [        U5      R                  S5      S:X  Ga,  U R                  U5      u  pWUb/  U R                  S
U< SU< SU< 35        U R                  S5        gU R                  R                  U5      n U R                  R                  UR                  5      n	U	c=  U R                  SU< SUR                  < SU< SU< 35        U R                  S5        gX‰:w  a/  U R                  SU< SU< SU< 35        U R                  S5        gU R                  SU< SU< SU< 35        U R                  XUXDS5        gU R                  SU< SU< SU< 35        U R                  XX4US5        g! [        R                   a0  n
U
R                  u  p¼U[        R                  :w  a  e S	n	 S	n
A
GNS	n
A
ff = f)zphandle a missing target DN (if specified, GUID form can't be found,
and otherwise DN string form can't be found)z\0ADELéÿÿÿÿz8WARNING: no target object found for GUID component link z in deleted object rl  z`Not removing dangling one-way link on deleted object (tombstone garbage collection in progress?)r   r6   NzLWARNING: no target object found for GUID component for one-way forward link rk  z"Not removing dangling forward linkz<WARNING: no target object found for GUID component for link z in object to z outside our NCszhNot removing dangling one-way left-over link outside our NCs (we might be building a renamed/lab domain)zLWARNING: no target object found for GUID component for cross-partition link zPNot removing dangling one-way cross-partition link (we might be mid-replication)z@WARNING: no target object found for GUID component for DN value Tz:ERROR: no target object found for GUID component for link F)rŽ   ÚfindrÈ   r:  r>   rf  r¯   rr   r�   r�   r‘   rq  )r§   r¯   r7  rL  rø   r8  Ú_Úreverse_link_namer¿   Útarget_nc_rootÚer¬   r­   s                r#   Úerr_missing_target_dn_or_GUIDÚ%dbcheck.err_missing_target_dn_or_GUID‚  s  € ô
 ˆr‹7�<‰<˜	Ó" bÓ(ð �KŠKã%-«r²3ð8ô 9ð �K‰Kð Fô Gð ð ×9Ñ9¸(ÓC‰	ˆØ�Q‰J˜!ŒO¤ W£×!2Ñ!2°9Ó!=ÀÔ!Cð ×7Ñ7¸ÓAñ &ˆFà Ñ,Ø—’ó *2³2²sð<ô =ð —‘Ð@ÔAØà—j‘j×,Ñ,¨RÓ0ˆGð&Ø!%§¡×!7Ñ!7¸¿
¹
Ó!C�ð Ñ%ð —’ó *2°7·:´:»rÂ3ðHô Ið —‘ð Jô Kð àÓ(ð —’ó *2³2²sð<ô =ð —‘ð <ô =ð ð �KŠKã%-«r²3ð8ô 9ð ×Ñ ¨cØ '°$ô8àð 	�Šã!)«2ªsð4ô 	5ð 	×Ñ˜B¨#¸ÀÔGØøôe —<‘<ó &Ø Ÿv™v‘�Øœ3×1Ñ1Ó1ØØ!%–ûð	&ús   Ã+%G( Ç(H,Ç<%H'È'H,c           
      ó8  • U R                  SU< SU< SU< SU< 35        SS/n U R                  R                  [        UR                  5      [
        R                  / US9n[        U5      S:X  a1  U R                  SUR                  -  5        U R                  XX45        gUS   R                  Ul        U R                  S[        U5      -  S5      (       d  U R                  SU-  5        g[
        R                  " 5       nXl        [
        R                  " U[
        R                  U5      US'   [
        R                  " [        U5      [
        R                   U5      US'   U R#                  US/SU< SU< 35      (       a  U R                  SU< SU< 35        gg! [
        R                   ac  nUR                  u  pšU R                  SUR                  < S	U
< S
35        U	[
        R                  :w  a  e U R                  XX45         SnAgSnAff = f)z+handle a missing GUID extended DN componentúERROR: ú component for rk  rl  rÖ   r×   rÅ   zunable to find object for DN z - (Ú)Nr   zunable to find object for DN %súChange DN to %s?rJ   úNot fixing %srm  Ú	new_valueúFailed to fix ú on attribute úFixed )rÈ   r>   r‹   rŽ   r¯   rr   rŒ   r�   r�   r‘   rz  r    rå   rì   rí   r@  rI  rï   )r§   r¯   r7  rL  rø   ÚerrstrrÆ   r©   Úe7r¬   r­   r+  s               r#   Úerr_missing_dn_GUID_componentÚ%dbcheck.err_missing_dn_GUID_component×  s´  € à�ŠÃfËhÓXZÒ\_Ð`ÔaØ%Ð'8Ð9ˆð		Ø—*‘*×#Ñ#¬¨W¯Z©Z«ÄÇÁØ*,°xð $ð AˆCô ˆs‹8�q‹=Ø�K‰KÐ9¸G¿J¹JÑFÔGØ×.Ñ.¨r¸SÔJØØ˜‘V—Y‘YˆŒ
à×ÑÐ 2´S¸³\Ñ AÐCU×VÑVØ�K‰K˜¨&Ñ0Ô1ØÜ�KŠK‹MˆØŒÜ×+Ò+¨C´×1DÑ1DÀhÓOˆˆ+‰Ü×+Ò+¬C°«L¼#×:JÑ:JÈHÓUˆˆ+‰à�>‰>˜!Ð/Ñ0Û@FÊÐQ÷Sñ Sà�KŠK³fºhÐGÕHðSøô+ �|‰|ó 	ØŸ7™7‰LˆTØ�KŠKÀGÇJÄJÓPTÐUÔVØ”s×-Ñ-Ó-ØØ×.Ñ.¨r¸SÔJÜûð	ús   §=F" Æ"HÆ6AHÈHc           
      ó  • U R                  SU< SU< SU< SU< 35        U R                  S[        U5      -  S5      (       d  U R                  SU-  5        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      US	'   [        R                  " [        U5      [        R                  U5      US
'   U R                  US/SU< SU< 35      (       a  U R                  SU< SU< 35        gg)z'handle an incorrect binary DN componentr}  z binary component for rk  rl  r€  rK   r�  Nrm  r‚  r×   rƒ  r„  r…  )
rÈ   rå   rŽ   rr   rì   r¯   rí   r@  rI  rï   )r§   r¯   r7  rL  rø   r†  r+  s          r#   Úerr_incorrect_binary_dnÚdbcheck.err_incorrect_binary_dn÷  sÖ   € à�ŠËVÓU]Ó_aÒcfÐgÔhà×ÑÐ 2´S¸³\Ñ AÐCV×WÑWØ�K‰K˜¨&Ñ0Ô1ØÜ�KŠK‹MˆØŒÜ×+Ò+¨C´×1DÑ1DÀhÓOˆˆ+‰Ü×+Ò+¬C°«L¼#×:JÑ:JÈHÓUˆˆ+‰à�>‰>˜!Ð/Ñ0Û@FÊÐQ÷Sñ Sà�KŠK³fºhÐGÕHðSrÃ   c                 ó&  • U R                  SU< SU< SU< 35        XTl        U R                  S[        U5      -  S5      (       d  U R                  S5        g[        R
                  " 5       nXl        [        R                  " U[        R                  U5      US'   [        R                  " [        U5      [        R                  U5      US	'   U R                  US
S[        R                  -  /SU-  5      (       a  U R                  SU-  5        gg)z<handle a DN string being incorrect due to a rename or deletez<NOTE: old (due to rename or delete) DN string component for rk  rl  r€  rR   zNot fixing old string componentNrm  r‚  r×   úlocal_oid:%s:1z+Failed to fix old DN string on attribute %sz#Fixed old DN string on attribute %s)rÈ   r¯   rå   rŽ   rr   rì   rí   r@  rI  rï   r   Ú%DSDB_CONTROL_DBCHECK_FIX_LINK_DN_NAME)r§   r¯   r7  rL  rø   ro  r+  s          r#   Úerr_dn_string_component_oldÚ#dbcheck.err_dn_string_component_old  sï   € à�ŠÓjrÓtvÒx{Ð|Ô}ØŒ
à×ÑÐ 2´S¸³\Ñ AØ J÷Lñ Là�K‰KÐ9Ô:ØÜ�KŠK‹MˆØŒÜ×+Ò+¨C´×1DÑ1DÀhÓOˆˆ+‰Ü×+Ò+¬C°«L¼#×:JÑ:JÈHÓUˆˆ+‰Ø�>‰>˜!Ð/Ø.´×1[Ñ1[Ñ[ð]àGÈ8ÑT÷Vñ Vð �K‰KÐ=ÀÑJÕKðVrÃ   c           
      ó*  • U R                  SU< SU< SU< SU< 35        XTl        U R                  S[        U5      -  SU-  5      (       d  U R                  SU-  5        g[        R
                  " 5       nXl        [        R                  " U[        R                  U5      US	'   [        R                  " [        U5      [        R                  U5      US
'   U R                  US/SU< SU< 35      (       a  U R                  SU< SU< 35        gg)z"handle a DN string being incorrectzERROR: incorrect DN r~  rk  rl  r€  z fix_all_%s_dn_component_mismatchz Not fixing %s component mismatchNrm  r‚  r×   zFailed to fix incorrect DN r„  zFixed incorrect DN )
rÈ   r¯   rå   rŽ   rr   rì   rí   r@  rI  rï   )r§   r¯   r7  rL  rø   ro  Úmismatch_typer+  s           r#   Ú err_dn_component_target_mismatchÚ(dbcheck.err_dn_component_target_mismatch  sê   € à�ŠÓS`ÓbjÓlnÒpsÐtÔuØŒ
à×ÑÐ 2´S¸³\Ñ AØ BÀ]Ñ R÷Tñ Tà�K‰KÐ:¸]ÑJÔKØÜ�KŠK‹MˆØŒÜ×+Ò+¨C´×1DÑ1DÀhÓOˆˆ+‰Ü×+Ò+¬C°«L¼#×:JÑ:JÈHÓUˆˆ+‰Ø�>‰>˜!Ð/Ñ0ÛMZÒ\dÐe÷gñ gà�KŠKÃ=ÒRZÐ[Õ\ðgrÃ   c                 óv  • U R                  SU< SU< SU< 35        [        UR                  5      S:w  a  U R                  S5        g[        R                  " U R
                  UR                  R                  5       5      nUR                  SU5        U R                  SUR                  5       -  S	5      (       d  U R                  S
5        gUR                  S5      n[        R                  " U R
                  S5      nUR                  SU5        UR                  SU5        [        R                  " 5       n	Xl        [        R                  " UR                  5       [        R                  U5      U	S'   SS[        R                  -  /n
U R!                  XšSU-  5      (       a  U R                  SU-  5        gg)z*fix missing <SID=...> on linked attributesz$ERROR: missing DN SID component for rk  rl  r   z3Not fixing missing DN SID on DN+BINARY or DN+STRINGNÚSIDr€  rQ   z#Not fixing missing DN SID componentrÙ   r0   r‚  r×   rŽ  z,Failed to ADD missing DN SID on attribute %sz$Fixed missing DN SID on attribute %s)rÈ   r    ra  rr   rs   r>   r¯   Úextended_strÚset_extended_componentrå   rç   rì   rí   rI  r   Ú$DSDB_CONTROL_DBCHECK_FIX_LINK_DN_SIDrï   )r§   r¯   r7  rL  rø   Útarget_sid_blobro  Útarget_guid_blobÚguid_sid_dnr+  rÆ   s              r#   Ú#err_dn_component_missing_target_sidÚ+dbcheck.err_dn_component_missing_target_sid*  sp  € à�ŠÓRZÓ\^Ò`cÐdÔeäˆw�~‰~Ó !Ó#Ø�K‰KÐMÔNØä—V’V˜DŸJ™J¨¯
©
×(?Ñ(?Ó(AÓBˆ
Ø×)Ñ)¨%°ÔAà×ÑÐ 2°Z×5LÑ5LÓ5NÑ NØ B÷Dñ Dà�K‰KÐ=Ô>Øà%×<Ñ<¸VÓDÐÜ—f’f˜TŸZ™Z¨Ó,ˆØ×*Ñ*¨6Ð3CÔDØ×*Ñ*¨5°/ÔBä�KŠK‹MˆØŒÜ×+Ò+¨K×,DÑ,DÓ,FÌ×HXÑHXÐZbÓcˆˆ+‰àØœt×HÑHÑHð
ˆð �>‰>˜!ØHÈHÑU÷Wñ Wà�K‰KÐ>À(ÑKÕLðWrÃ   c                 óª  • U R                  SU< SUR                  < 35        U R                  SU-  S5      (       d  U R                  SU-  5        g[        R                  " 5       nUR                  Ul        [        R
                  " / [        R                  U5      US'   U R                  USS	/S
U-  5      (       a  U R                  SU-  5        gg)z!handle an unknown attribute errorzERROR: unknown attribute 'ú' in zRemove unknown attribute %srF   zNot removing %sNrm  rÚ   r×   z%Failed to remove unknown attribute %szRemoved unknown attribute %s)rÈ   r¯   rå   rr   rì   rí   r@  rï   )r§   Úobjr7  r+  s       r#   Úerr_unknown_attributeÚdbcheck.err_unknown_attributeJ  s·   € à�Š»XÀsÇvÃvÐNÔOØ×ÑÐ =ÀÑ HÐJi×jÑjØ�K‰KÐ)¨HÑ4Ô5ØÜ�KŠK‹MˆØ�v‰vˆŒÜ×+Ò+¨B´×0CÑ0CÀXÓNˆˆ+‰Ø�>‰>˜!˜iÐ):Ð;ØAÀHÑL÷Nñ Nà�K‰KÐ6¸(ÑCÕDðNrÃ   c                 óØ  • U R                  SU< SU< SUR                  < 35        U R                  SU-  S5      (       d  U R                  SU-  5        g[        R                  " 5       nUR                  Ul        [        R
                  " U[        R                  U5      US'   U R                  US	S
SS[        R                  -  /SU-  5      (       a  U R                  SU-  5        gg)z:handle a link that should not be there on a deleted objectzERROR: linked attribute 'z' to 'z' is present on deleted object zRemove linked attribute %srU   z Not removing linked attribute %sNrm  r×   rÕ   rØ   r  z Failed to delete forward link %szFixed undead forward link %s)
rÈ   r¯   rå   rr   rì   rí   r@  rï   r   rn  )r§   r¢  r7  rL  r+  s        r#   Úerr_undead_linked_attributeÚ#dbcheck.err_undead_linked_attributeW  s×   € à�ŠÛ+3³S¸#¿&»&ðBô 	Cà×ÑÐ <¸xÑ GÐIg×hÑhØ�K‰KÐ:¸XÑEÔFØÜ�KŠK‹MˆØ�v‰vˆŒÜ×+Ò+¨C´×1DÑ1DÀhÓOˆˆ+‰à�>‰>˜!Ð/Ð1AÐCWØ.´×1VÑ1VÑVðXà<¸xÑG÷Iñ Ið �K‰KÐ6¸(ÑCÕDðIrÃ   c           
      ó¤  • U R                  SU< SU< SU< SUR                  < 35        U R                  SU-  S5      (       d  U R                  SU-  5        g[        R                  " 5       nXVl        [        R
                  " U[        R                  U5      US	'   U R                  US
S/SU-  5      (       a  U R                  SU-  5        gg)zhandle a missing backlink valuez#ERROR: missing backlink attribute 'r¡  ú
 for link r=  zFix missing backlink %srV   zNot fixing missing backlink %sNr‚  r×   rÚ   z!Failed to fix missing backlink %szFixed missing backlink %s)rÈ   r¯   rå   rr   rì   rí   rI  rï   )r§   r¢  r7  rL  Úbacklink_nameÚ	target_dnr+  s          r#   Úerr_missing_backlinkÚdbcheck.err_missing_backlinkg  sÉ   € à�ŠÓXeÓgpÓrzÐ|÷  }Có  }Cð  Dô  	EØ×ÑÐ 9¸MÑ IÐKf×gÑgØ�K‰KÐ8¸=ÑHÔIØÜ�KŠK‹MˆØŒÜ×+Ò+¨C´×1AÑ1AÀ=ÓQˆˆ+‰Ø�>‰>˜!Ð/°Ð;Ø=ÀÑM÷Oñ Oà�K‰KÐ3°}ÑEÕFðOrÃ   c                 ó0  • [        UR                  R                  S5      5      nU R                  SXBUR                  UR                  R	                  5       4-  5        U R                  SU-  S5      (       d  U R                  SU-  5        g[        R                  " 5       nUR                  Ul        [        R                  " [        U5      [        R                  U5      US'   U R                  U/ SQS	U-  5      (       a  U R                  S
U-  5        gg)z"handle a incorrect RMD_FLAGS valueÚ	RMD_FLAGSzHERROR: incorrect RMD_FLAGS value %u for attribute '%s' in %s for link %szFix incorrect RMD_FLAGS %ur\   z!Not fixing incorrect RMD_FLAGS %uNrm  )r×   rØ   úshow_deleted:0z$Failed to fix incorrect RMD_FLAGS %uzFixed incorrect RMD_FLAGS %u)r¦   r¯   rç   rÈ   r˜  rå   rr   rì   rí   rŽ   r@  rï   )r§   r¢  r7  Úrevealed_dnÚ	rmd_flagsr+  s         r#   Úerr_incorrect_rmd_flagsÚdbcheck.err_incorrect_rmd_flagst  s  € ä˜Ÿ™×=Ñ=¸kÓJÓKˆ	Ø�‰Ð^ÐbkÐwz×w}Ñw}ð  @K÷  @Nñ  @N÷  @[ñ  @[ó  @]ð  b^ñ  ^ô  	_Ø×ÑÐ <¸yÑ HÈ/×ZÑZØ�K‰KÐ;¸iÑGÔHØÜ�KŠK‹MˆØ�v‰vˆŒÜ×+Ò+¬C°Ó,<¼c×>QÑ>QÐS[Ó\ˆˆ+‰Ø�>‰>˜!ÒXØ@À9ÑL÷Nñ Nà�K‰KÐ6¸)ÑDÕEðNrÃ   c                 ó  • USL a=  U R                  XEU5      (       a&  U R                  SSU< SU< SU< SU< S3	-   5        gU R                  SU< SU< S	U< S
U< 35        U R                  SU-  S5      (       d  U R                  SU-  5        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      US'   U R                  USS/SU-  5      (       a  U R                  SU-  5        gg)z handle a orphaned backlink valueTz*WARNING: Keep orphaned backlink attribute rD  rS  z' for link 'Nz$ERROR: orphaned backlink attribute 'r¡  r©  r=  zRemove orphaned backlink %srW   z!Not removing orphaned backlink %sr"   r×   rÚ   z"Failed to fix orphaned backlink %szFixed orphaned backlink %s)	Úhas_duplicate_linksrÈ   rå   rr   rì   r¯   rí   r@  rï   )	r§   Úobj_dnÚbacklink_attrÚbacklink_valr«  Úforward_attrÚforward_syntaxÚcheck_duplicatesr+  s	            r#   Úerr_orphaned_backlinkÚdbcheck.err_orphaned_backlink‚  s  € ð ˜tÒ#¨×(@Ñ(@ÀÐZh×(iÑ(iØ�K‰KÑDã)«6³<ÃðLñLô Mð Ø�ŠÓYfÓhnÓp|ò  Hð  Iô  	JØ×ÑÐ =ÀÑ MÐOk×lÑlØ�K‰KÐ;¸mÑKÔLØÜ�KŠK‹MˆØŒÜ×'Ò'¨´c×6IÑ6IÈ=ÓYˆˆ'‰
Ø�>‰>˜!Ð/°Ð;Ø>ÀÑN÷Pñ Pà�K‰KÐ4¸ÑFÕGðPrÃ   c                 ód  • U R                  SU< SUR                  < S35        U R                  SU-  S5      (       d%  U R                  SU< SUR                  < S35        g[        R                  " 5       nUR                  Ul        [        R
                  " U[        R                  U5      US	'   U R                  US
[        R                  -  /SU-  5      (       aQ  U R                  SU-  5        [        UR                  5      < SU< 3nXPR                  ;   d   eSU R                  U'   gg)zhandle a duplicate links valuezERECHECK: 'Missing/Duplicate/Correct link' lines above for attribute 'rS  rD  zDCommit fixes for (missing/duplicate) forward links in attribute '%s'r[   zENot fixing corrupted (missing/duplicate) forward links in attribute 'ú' of 'Nr"   rŽ  z/Failed to fix duplicate links in attribute '%s'z'Fixed duplicate links in attribute '%s'rÞ   F)rÈ   r¯   rå   rr   rì   rí   rî   rï   r   Ú(DSDB_CONTROL_DBCHECK_FIX_DUPLICATE_LINKSrŽ   rZ   )r§   r¢  rº  Úforward_valsr+  Úduplicate_cache_keys         r#   Úerr_recover_forward_linksÚ!dbcheck.err_recover_forward_links–  s  € ð 	�ŠÓjvÐx{×x~Ôx~Ðô  	Aà×ÑÐ fÐiuÑ uð  xS÷  Tñ  TØ�KŠKÛ$ c§f¤fð.ô /àÜ�KŠK‹MˆØ�v‰vˆŒÜ×'Ò'¨´c×6JÑ6JÈLÓYˆˆ'‰
Ø�>‰>˜!Ð.´×1^Ñ1^Ñ^Ð_ØKÈlÑZ÷\ñ \à�K‰KÐAÀ\ÑRÔSÜ-0°·±®[º,Ð"GÐØ&×*CÑ*CÓCÐCÐCØ=BˆD×%Ñ%Ð&9Ò:ð\rÃ   c                 ó²  • U R                  SUR                  -  5        U R                  R                  S[        R
                  S/S9n[        U5      S:X  d   e[        US   S   S   5      nU R                  SUR                  < SU< 3S	5      (       d$  U R                  S
UR                  < SU< 35        g[        R                  " 5       nUR                  Ul        [        R                  " U[        R                  S5      US'   U R                  U/ SUR                  < SU< 35      (       a$  U R                  SUR                  < SU< 35        gg)zhandle a missing fSMORoleOwnerz*ERROR: fSMORoleOwner not found for role %sr0   ÚdsServiceName)r,   r-   r6   r   zSeize role z) onto current DC by adding fSMORoleOwner=r_   zNot Seizing role NÚfSMORoleOwnerr"   zFailed to seize role zSeized role )rÈ   r¯   r>   r‹   rr   rŒ   r    rŽ   rå   rì   rí   rI  rï   )r§   r¢  r©   ÚserviceNamer+  s        r#   Úerr_no_fsmoRoleOwnerÚdbcheck.err_no_fsmoRoleOwner©  s(  € à�‰Ð@ÀCÇFÁFÑKÔLØ�j‰j×Ñ Ü&)§n¡n¸_Ð<Mð  ð Oˆä�3‹x˜1‹}Ðˆ}Ü˜#˜a™& Ñ1°!Ñ4Ó5ˆØ×ÒÐ^a×^dÔ^dÒfqÐ rð  uF÷  Gñ  GØ�KŠKÐ\_×\bÔ\bÒdoÐpÔqØÜ�KŠK‹MˆØ�v‰vˆŒÜ×'Ò'¨´S×5EÑ5EÀÓWˆˆ'‰
Ø�>‰>˜!™RØbe×bhÔbhÒjuÐv÷xñ xà�KŠKÐWZ×W]ÔW]Ò_jÐkÕlðxrÃ   c                 óê  • U R                  SUR                  -  5        U R                  SUR                  -  S5      (       d  U R                  SUR                  -  5        gSnU R                  R	                  5          U R                  R                  UR                  5      nU R                  U[        R                  5      n[        R                  " U R                  [        UR                  5      5      nUR                  [        U5      S-
  5        U R                  UR                  XTSS	/S
UR                  < SXT-   < 35      (       aÊ  U R                  SUR                  < SXT-   < 35        [        R                  " 5       nUR                  Ul        [        R                   " [        UR                  R#                  5       5      [        R$                  S5      US'   U R'                  U/ SXT-   -  5      (       a  U R                  SXT-   -  5        SnU(       a  U R                  R+                  5         gU R                  R)                  5         g!   U R                  R)                  5         e = f)zhandle a missing parentz%ERROR: parent object not found for %sz!Move object %s into LostAndFound?r`   z&Not moving object %s into LostAndFoundNFr6   r°  rÚ   úFailed to rename object z into lostAndFound at zRenamed object ÚlastKnownParentz:Failed to set lastKnownParent on lostAndFound object at %sz0Set lastKnownParent on lostAndFound object at %sT)rÈ   r¯   rå   r>   Útransaction_startrf  rˆ   r   ÚDS_GUID_LOSTANDFOUND_CONTAINERrr   rs   rŽ   Úremove_base_componentsr    r2  rì   rí   Úparentrî   rï   Útransaction_cancelÚtransaction_commit)r§   r¢  Úkeep_transactionr¿   Úlost_and_foundÚnew_dnr+  s          r#   Úerr_missing_parentÚdbcheck.err_missing_parentº  sà  € à�‰Ð;¸s¿v¹vÑFÔGØ×ÑÐ CÀsÇvÁvÑ NÐPh×iÑiØ�K‰KÐ@ÀCÇFÁFÑKÔLØà ÐØ�
‰
×$Ñ$Ô&ð	Ø—j‘j×,Ñ,¨S¯V©VÓ4ˆGØ!×9Ñ9¸'Ä4×CfÑCfÓgˆNÜ—V’V˜DŸJ™J¬¨C¯F©F«Ó4ˆFØ×)Ñ)¬#¨f«+¸©/Ô:Ø�~‰~˜cŸf™f fÐ?OÐQZÑ>[ØVY×V\ÔV\Ð^dÓ^uÐv÷xñ xà—’È3Ï6Ì6ÐSYÓSjÐkÔlä—K’K“M�Ø—v‘v�”Ü'*×'9Ò'9¼#¸c¿f¹f¿m¹m»oÓ:NÔPS×PdÑPdÐfwÓ'x�Ð#Ñ$à—>‘> ! RØ"^ÐbhÑbyÑ"z÷|ñ |à—K‘KÐ RÐV\ÑVmÑ nÔoØ'+Ð$ö
 Ø�J‰J×)Ñ)Õ+à�J‰J×)Ñ)Õ+øð	Ø�J‰J×)Ñ)Ô+Øús   Á?FI ÉI2c           
      ó†  • [         R                  " U R                  [        U5      5      nUR	                  [        U5      S-
  5        UR                  5       nSn	XE:w  a  X“< SU< S3-  n	U	SU-  -  n	U R                  SUR                  < SU	< SU< S	35        U R                  S
UR                  < SU< S3S5      (       d$  U R                  SUR                  < SU< 35        gU R                  UR                  XxUSUR                  < SU< 35      (       a$  U R                  SUR                  < SU< 35        gg)zhandle a wrong dnr6   r0   Ú=Ú zname=%rzERROR: wrong dn[z] z new_dn[Ú]zRename rÛ   r?  rg   zNot renaming NrÍ  z into zRenamed )rr   rs   r>   rŽ   rÑ  r    rÒ  rÈ   r¯   rå   r2  )
r§   r¢  r×  Úrdn_attrÚrdn_valÚname_valrÆ   Únew_rdnÚ
new_parentÚ
attributess
             r#   Úerr_wrong_dnÚdbcheck.err_wrong_dnÝ  sö   € ô —&’&˜Ÿ™¤S¨£[Ó1ˆØ×&Ñ&¤s¨7£|°aÑ'7Ô8Ø—]‘]“_ˆ
àˆ
ØÓØ¢h³Ð8Ñ8ˆJØ�i 8Ñ,Ñ,ˆ
à�Š¸3¿6¼6Ã:ËvÐVÔWØ×Ò°c·f´f»fÐ EÀx×PÑPØ�KŠK°3·6´6º6ÐBÔCØà�>‰>˜#Ÿ&™& '±xØBEÇ&Ä&Ê&ÐQ÷Sñ Sà�KŠK°·´ºÐ?Õ@ðSrÃ   c                 óJ  • U R                  SUS   UR                  U4-  5        U R                  SUS   X!R                  4-  S5      (       d$  U R                  SUS   X!R                  4-  5        g[        R                  " 5       nUR                  Ul        [        R
                  " [        U5      [        R                  S5      US'   U R                  US[        R                  -  /S	UR                  U4-  5      (       a!  U R                  S
UR                  U4-  5        gg)zhandle a wrong instanceTypez0ERROR: wrong instanceType %s on %s, should be %dÚinstanceTypez(Change instanceType from %s to %d on %s?ra   z-Not changing instanceType from %s to %d on %sNr"   r  zGFailed to correct missing instanceType on %s by setting instanceType=%dz7Corrected instancetype on %s by setting instanceType=%d)rÈ   r¯   rå   rr   rì   rí   rŽ   rî   rï   r   Ú&DSDB_CONTROL_DBCHECK_MODIFY_RO_REPLICA)r§   r¢  Úcalculated_instancetyper+  s       r#   Úerr_wrong_instancetypeÚdbcheck.err_wrong_instancetypeò  sF  € à�‰ÐFÈ#ÈnÑJ]Ð_b×_eÑ_eÐg~ÐIÑô  	AØ×ÑÐ JÈcÐR`ÑNaÐcz÷  }Cñ  }Cð  NDñ  !Dð  FX÷  Yñ  YØ�K‰KÐGÈ3È~ÑK^Ð`w×yÑyð  KAñ  Aô  BØä�KŠK‹MˆØ�v‰vˆŒÜ×'Ò'¬Ð,CÓ(DÄc×FZÑFZÐ\jÓkˆˆ'‰
Ø�>‰>˜!Ð.´×1\Ñ1\Ñ\Ð]ØcÐgj×gmÑgmð  pGð  gHñ  H÷Iñ Ià�K‰KÐQÐUX×U[ÑU[Ð]tÐTuÑuÕvðIrÃ   c                 ó’   • U R                  SUR                  < SU R                  R                  UR                  5      < S35        g )Nú0ERROR: incorrect userParameters value on object z—.  If you have another working DC that does not give this warning, please run 'samba-tool drs replicate --full-sync --local <destinationDC> <sourceDC> rD  ©rÈ   r¯   r>   rf  )r§   r¢  r7  r"   s       r#   Úerr_short_userParametersÚ dbcheck.err_short_userParameters   si   € à�Šð  gj÷  gmô  gmð  os÷  oyñ  oy÷  oEñ  oEð  FI÷  FLñ  FLö  oMð  Nõ  	OrÃ   c                 ó  • U R                  SU< SUR                  < S35        U R                  SUR                  -  S5      (       d  U R                  SUR                  -  5        g[        R                  " 5       nUR                  Ul        [        R
                  " [        X   S   5      [        R                  S	5      US
'   U R                  U/ SUR                  -  5      (       a  U R                  SUR                  -  5        gg)z6handle a userParameters that is wrongly base64 encodedz(ERROR: wrongly formatted userParameters ú on z, should not be base64-encodedz2Convert userParameters from base64 encoding on %s?rh   z6Not changing userParameters from base64 encoding on %sNr   ÚuserParametersr"   zOFailed to correct base64-encoded userParameters on %s by converting from base64zGCorrected base64-encoded userParameters on %s by converting from base64)	rÈ   r¯   rå   rr   rì   rí   r   rî   rï   ©r§   r¢  r7  r"   r+  s        r#   Úerr_base64_userParametersÚ!dbcheck.err_base64_userParameters  sÞ   € à�ŠÓhmÐor×ouÔouÐvÔwØ×ÑÐ TÐX[×X^ÑX^Ñ _Ða|×}Ñ}Ø�K‰KÐPÐTW×TZÑTZÑ[Ô\Øä�KŠK‹MˆØ�v‰vˆŒÜ×'Ò'¬	°#±-ÀÑ2BÓ(CÄS×EYÑEYÐ[kÓlˆˆ'‰
Ø�>‰>˜!˜RØkÐor×ouÑouÑv÷xñ xà�K‰KÐaÐeh×ekÑekÑlÕmðxrÃ   c                 ó2  • U R                  SUR                  -  5        U R                  SUR                  -  S5      (       d  U R                  SUR                  -  5        g[        R                  " 5       nUR                  Ul        [        R
                  " X   S   R                  S5      R                  S5      [        R                  S	5      US
'   U R                  U/ SUR                  -  5      (       a  U R                  SUR                  -  5        gg)z5handle a userParameters that is wrongly utf-8 encodedzPERROR: wrongly formatted userParameters on %s, should not be pseudo-UTF8 encodedz0Convert userParameters from UTF8 encoding on %s?ri   z4Not changing userParameters from UTF8 encoding on %sNr   r2   ú	utf-16-leró  r"   zQFailed to correct psudo-UTF8 encoded userParameters on %s by converting from UTF8zICorrected psudo-UTF8 encoded userParameters on %s by converting from UTF8©
rÈ   r¯   rå   rr   rì   rí   r   Úencoderî   rï   rô  s        r#   Úerr_utf8_userParametersÚdbcheck.err_utf8_userParameters  sù   € à�‰ð 8Ø;>¿6¹6ñCô 	Dà×ÑÐ RÐVY×V\ÑV\Ñ ]Ð_x×yÑyØ�K‰KÐNÐRU×RXÑRXÑYÔZØä�KŠK‹MˆØ�v‰vˆŒÜ×'Ò'¨©°aÑ(8×(?Ñ(?ÀÓ(G×(NÑ(NÈ{Ó([Ü(+×(<Ñ(<Ð>NóPˆˆ'‰
à�>‰>˜!˜RØmÐqt×qwÑqwÑx÷zñ zà�K‰KÐcÐgj×gmÑgmÑnÕoðzrÃ   c                 ó2  • U R                  SUR                  -  5        U R                  SUR                  -  S5      (       d  U R                  SUR                  -  5        g[        R                  " 5       nUR                  Ul        [        R
                  " X   S   R                  S5      R                  S5      [        R                  S	5      US
'   U R                  U/ SUR                  -  5      (       a  U R                  SUR                  -  5        gg)z:handle a userParameters that has been utf-16 encoded twicezQERROR: wrongly formatted userParameters on %s, should not be double UTF16 encodedz:Convert userParameters from doubled UTF-16 encoding on %s?rj   z>Not changing userParameters from doubled UTF-16 encoding on %sNr   rø  r2   ró  r"   zJFailed to correct doubled-UTF16 encoded userParameters on %s by convertingzBCorrected doubled-UTF16 encoded userParameters on %s by convertingrù  rô  s        r#   Úerr_doubled_userParametersÚ"dbcheck.err_doubled_userParameters"  s  € à�‰ÐgÐkn×kqÑkqÑrÔsØ×ÑÐ \Ð`c×`fÑ`fÑ gð  jF÷  Gñ  GØ�K‰KÐXÐ\_×\bÑ\bÑcÔdØä�KŠK‹MˆØ�v‰vˆŒô ×'Ò'¨©°aÑ(8×(?Ñ(?ÀÓ(L×(SÑ(SÐTZÓ([Ü(+×(<Ñ(<Ð>NóPˆˆ'‰
ð �>‰>˜!˜RØfÐjm×jpÑjpÑq÷sñ sà�K‰KÐ\Ð`c×`fÑ`fÑgÕhðsrÃ   c                 ó’   • U R                  SUR                  < SU R                  R                  UR                  5      < S35        g)z?Fix a truncated userParameters due to a pre 4.1 replication bugrí  z¤ (odd length).  If you have another working DC that does not give this warning, please run 'samba-tool drs replicate --full-sync --local <destinationDC> <sourceDC> rD  Nrî  )r§   r¢  r7  s      r#   Úerr_odd_userParametersÚdbcheck.err_odd_userParameters<  si   € à�Šð  tw÷  tzô  tzð  |@÷  |Fñ  |F÷  |Rñ  |Rð  SV÷  SYñ  SYö  |Zð  [õ  	\rÃ   c                 óF  • U R                   R                  U[        R                  U// SQS9nU R                  R                  U5      nUS   U    HM  n[        U R                   UR                  S5      U5      nUR                  R                  S5      nX8:X  d  MK  Us  $    g)z#return a revealed link in an object)r°  rÝ   rØ   rÅ   r   r2   rÙ   N)
r>   r‹   rr   rŒ   r@   Ú#get_syntax_oid_from_lDAPDisplayNamer   r   r¯   rç   )	r§   r¯   r7  rñ   r©   Ú
syntax_oidrL  rø   Úguid2s	            r#   Úfind_revealed_linkÚdbcheck.find_revealed_link@  s’   € à�j‰j×Ñ R¬s¯~©~ÀhÀZÚ)bð  ð dˆà×&Ñ&×JÑJÈ8ÓTˆ
Ø�q‘6˜(Ô#ˆCÜ˜dŸj™j¨#¯*©*°VÓ*<¸jÓIˆGØ—J‘J×5Ñ5°fÓ=ˆEØ�}Ø’ñ	 $ð
 rÃ   c                 óÒ  • Sn[        5       n[        5       nUS-  (       a  XgU4$ Uc  XgU4$ [        UR                  5      < SU< 3n	X�R                  ;  a  SU R                  U	'   X    GHá  n
[	        U R
                  U
R                  S5      U5      nUR                  R                  S5      nUc  MJ  [        [        R                  " U5      5      nXÛR                  -   nXè;  a  X¸U'   M‚  US-  nXç;  a"  [        5       X~'   SX~   S'   [        5       X~   S	'   [        XŽ   R                  R                  S
5      5      n[        UR                  R                  S
5      5      nUU:”  a"  XŽ   X~   S'   X~   S	   R                  U5        GM   UU:  a&  X·U   S'   X~   S	   R                  XŽ   5        X¸U'   GML  [        XŽ   R                  R                  S5      5      n[        UR                  R                  S5      5      nUU:¼  a"  XŽ   X~   S'   X~   S	   R                  U5        GM¾  X·U   S'   X~   S	   R                  XŽ   5        X¸U'   GMä     US:w  a  SU R                  U	'   XgU4$ )ú1check a linked values for duplicate forward linksr   r6   NrÞ   Fr2   rÙ   Úkeepr"  ÚRMD_VERSIONÚRMD_LOCAL_USNT)rY   rŽ   r¯   rZ   r   r>   r   rç   r   rÙ   ra  rY  r¦   r   )r§   r¢  rº  r»  Úforward_linkIDr¸  rÐ   Úduplicate_dictÚunique_dictrÃ  rL  rø   rñ   ÚguidstrÚkeystrÚv1Úv2Úu1Úu2s                      r#   Úcheck_duplicate_linksÚdbcheck.check_duplicate_linksL  st  € àˆä›ˆÜ“fˆð ˜A×à°Ð=Ð=àÑ Ø°Ð=Ð=ä),¨S¯V©V®²lÐCÐØ×&?Ñ&?Ó?Ø=BˆD×%Ñ%Ð&9Ñ:àÕ$ˆCÜ˜dŸj™j¨#¯*©*°VÓ*<¸nÓMˆGð —:‘:×4Ñ4°VÓ<ˆDØ‰|ÙÜœ$Ÿ)š) D›/Ó*ˆGØŸ~™~Ñ-ˆFØÓ(Ø&-˜FÑ#ÙØ˜1ÑˆKØÓ+Ü)-«�Ñ&Ø15�Ñ& vÑ.Ü37³6�Ñ& xÑ0ô �[Ñ(×+Ñ+×BÑBÀ=ÓQÓRˆBÜ�W—Z‘Z×6Ñ6°}ÓEÓFˆBØ�B‹wØ1<Ñ1D�Ñ& vÑ.ØÑ& xÑ0×7Ñ7¸Ô@ÚØ�B‹wØ18˜vÑ& vÑ.ØÑ& xÑ0×7Ñ7¸Ñ8KÔLØ&-˜FÑ#Úä�[Ñ(×+Ñ+×BÑBÀ?ÓSÓTˆBÜ�W—Z‘Z×6Ñ6°ÓGÓHˆBØ�R‹xØ1<Ñ1D�Ñ& vÑ.ØÑ& xÑ0×7Ñ7¸Ô@ÚØ-4˜6Ñ" 6Ñ*ØÑ" 8Ñ,×3Ñ3°KÑ4GÔHØ")˜ÔñO %ðR ˜!ÓØ=AˆD×%Ñ%Ð&9Ñ:à¨[Ð9Ð9rÃ   c                 óü  • Sn[        U5      < SU< 3nXPR                  ;   a  U R                  U   $ U R                  U5      u  pgU/nSS/n	 U R                  R	                  [        U5      [
        R                  X‰S9n
U
S   nU R                  XâX6U5      u  pOnXPR                  ;   a  U R                  U   $ g! [
        R                   a-  nUR                  u  pÍU[
        R                  :w  a  e  SnAgSnAff = f)r
  r   rÞ   rÖ   rØ   rÅ   NF)rŽ   rZ   r:  r>   r‹   rr   rŒ   r�   r�   r‘   r  )r§   r¯   rº  r»  rÐ   rÃ  r  r¸  r-   rÆ   r©   Úe8r¬   r­   r¢  r  r  s                    r#   r¶  Údbcheck.has_duplicate_links�  s  € àˆä),¨R®²,Ð?ÐØ×";Ñ";Ó;Ø×,Ñ,Ð-@ÑAÐAà(,×(MÑ(MÈlÓ([Ñ%ˆà�ˆØ%Ð';Ð<ˆð	Ø—*‘*×#Ñ#¬¨R«¼¿¹Ø*/ð $ð DˆCð �!‰fˆà×&Ñ& s¸.ÐZgÓhñ 	1ˆ [ð ×";Ñ";Ó;Ø×,Ñ,Ð-@ÑAÐAàøô �|‰|ó 	ØŸ7™7‰LˆTØ”s×-Ñ-Ó-Øäûð	ús   Á2B: Â:C;Ã#C6Ã6C;c                 ó8  • / nSnUc  Xg4$ U[         R                  :w  a  U R                  SU-  5        Xg4$ SU R                  ;   a  U R                  S5        Xg4$  US   S   n[	        [        [        R                  U5      5      n	SU< SU	< S	3n
U R                  R                  U
[         R                  S// S
QS9nU GH)  n[        U R                  UR                  R                  5       U5      nUR                  R!                  S5      n[	        [        R                  " U5      5      nUU;   a  Mu  [        ["        R$                  US   S   5      nUR&                  R(                   H;  nUR*                  nUR,                  nUR.                  [0        R2                  :X  d  M;    O   [        R                  " S5      nSnWnUnSnUnUnWnSnUR                  R5                  S[	        U5      5        UR                  R5                  S[	        U5      5        UR                  R5                  S[	        U5      5        UR                  R5                  S[7        U5      5        UR                  R5                  S[	        U5      5        UR                  R5                  S[	        U5      5        UR                  R5                  S[	        U5      5        US-  nUR9                  U5        GM,     Xg4$ ! [         R                   a  nUR                  u  pÞe SnAff = f)zMFind all backlinks linking to obj_guid_str not already in forward_unique_dictr   Nz5Not checking for missing forward links for syntax: %sÚsortedLinkszQNot checking for missing forward links because the db has the sortedLinks featureÚ
objectGUIDÚ(z=<GUID=z>))rÖ   úsearch_options:1:2zpaged_results:1:1000)r5   r,   r-   rÆ   rÙ   ÚreplPropertyMetadataz$ffffffff-4700-4700-4700-000000b13228r6   ÚRMD_ADDTIMEÚRMD_CHANGETIMEr¯  ÚRMD_INVOCIDÚRMD_ORIGINATING_USNr  r  )rr   Ú	SYNTAX_DNrÈ   r<   rŽ   r	   r   rÙ   r>   r‹   ÚSCOPE_SUBTREEr�   r�   r   r¯   r˜  rç   r   ÚreplPropertyMetaDataBlobÚctrÚarrayÚ	local_usnÚoriginating_change_timeÚattidr   ÚDRSUAPI_ATTID_objectClassr™  r
   r   ) r§   r¢  rº  r»  r¸  Úforward_unique_dictÚmissing_forward_linksrÐ   Úobj_guidÚobj_guid_strÚfilterr©   Úe9r¬   r­   Úrr«  rñ   r  Úreplr÷   r+  ÚtÚoriginating_invocidÚoriginating_usnÚrmd_addtimeÚrmd_changetimer²  Úrmd_invocidÚrmd_originating_usnÚrmd_local_usnÚrmd_versions                                    r#   Ú)find_missing_forward_links_from_backlinksÚ1dbcheck.find_missing_forward_links_from_backlinks®  sÄ  € ð !#ÐØˆàÑ Ø)Ð7Ð7àœSŸ]™]Ó*Ø�K‰KÐOØ&ñ'ô (à)Ð7Ð7à˜D×3Ñ3Ó3Ø�K‰Kð 6ô 7à)Ð7Ð7ð	Ø˜<Ñ(¨Ñ+ˆHÜœz¬$¯)©)°XÓ>Ó?‰LÛ)6»ÐEˆFà—*‘*×#Ñ#¨vÜ*-×*;Ñ*;ÀLÀ>ò.Fð $ð GˆCô ˆAÜ §
¡
¨A¯D©D×,=Ñ,=Ó,?ÀÓPˆIà—<‘<×6Ñ6°vÓ>ˆDÜœ$Ÿ)š) D›/Ó*ˆGØÐ-Ó-Ùô( œh×?Ñ?Ø!Ð"8Ñ9¸!Ñ<ó>ˆDà—X‘X—^”^�ØŸK™K�	Ø×-Ñ-�Ø—7‘7œg×?Ñ?Õ?Ùñ	 $ô #'§)¢)Ð,RÓ"SÐØˆOàˆKØˆNØˆIØ-ˆKØ"1ÐØ%ˆMØˆKà�L‰L×/Ñ/°¼sÀ;Ó?OÔPØ�L‰L×/Ñ/Ð0@Ä#ÀnÓBUÔVØ�L‰L×/Ñ/°¼SÀ»^ÔLØ�L‰L×/Ñ/°¼xÈÓ?TÔUØ�L‰L×/Ñ/Ð0EÄsÐK^ÓG_Ô`Ø�L‰L×/Ñ/°ÄÀ]ÓASÔTØ�L‰L×/Ñ/°¼sÀ;Ó?OÔPà˜1ÑˆKØ!×(Ñ(¨×3ñ} ð@ &Ð3Ð3øôI �|‰|ó 	ØŸ7™7‰LˆTØûð	ús   ÁA#K1 Ë1LÌLÌLc                 óþ  • SnUS   S   nU R                  U5      u  pgUb  U R                  R                  U5      nOSnUS;   n	U	(       a  U R                  (       a  0 n
OU R	                  XUXg5      u  pJn[        U
5      S:w  Gaª  U R                  UX#UW5      u  pÍXM-  nUR                  5        Vs/ s H  oîPM     nnUS:w  a%  U R                  SU< SUR                  < S35        O$U R                  SU< SUR                  < S35        U Hy  nU R                  S	U-  5        U R                  S
U-  S5      (       dB  U R                  UR                  UUR                  R                  5       UR                  X#SS9  Ms  UU/-  nM{     U
R                  5        H?  nU
U   nUS    H  nU R                  SU-  5        M     U R                  SUS   -  5        MA     [        U5       Vs/ s H  n[        U5      PM     nnU R!                  XU5        ["        R$                  " USU5      X'   X    G	HT  n['        U R(                  UR+                  S5      U5      nUR                  R-                  S5      nUc&  US-  nU R/                  UR                  UUUS5        Mn  [        [0        R2                  " U5      5      nSS/n[        U5      R5                  5       S:X  a.  UR                  U R6                  :X  a  SnUR9                  S5        OSnUb  UR9                  U5         U R(                  R;                  SU-  ["        R<                  U/ SQS9nU(       aw  S[G        US   S   S   5      -  Ul$        S[G        US   S   S   5      -  Ul%        [        U5      [        U5      :w  a'  US-  nU RM                  UR                  UUUS 5        GM   SU;   =(       a"    [        US   S   5      RO                  5       S!:H  nSUS   ;   =(       a%    [        US   S   S   5      RO                  5       S!:H  n U(       a;  UR                  U RP                  ;  a!  U(       a  U RS                  XU5        US-  nGMD  U (       Ga7  U RU                  U5      (       Gd   U(       Ga  US-  nUR                  R-                  S"5      n!U!(       aÁ  SUS   ;   a¸  [W        [X        RZ                  US   S#   S   5      n"Sn#U"R\                  R^                   HB  n$U$R`                  [b        Rd                  :X  d  M#  U$Rf                  n%U%[G        U!5      :¼  d  M@  Sn#  O   U#(       a0  U Ri                  UR                  UUUUS   R                  S5        GMS  U Ri                  UR                  UUUUS   R                  S5        GMƒ  UR                  R-                  S$5      n&Sn'U&b  [G        U&5      n'U'S-  (       dg  Ubd  [        US   R                  5      [        UR                  5      :w  a5  US-  nU Rk                  UR                  UUUUS   R                  S%5        GM  US   R                  R-                  S5      UR                  R-                  S5      :w  a5  US-  nU Rk                  UR                  UUUUS   R                  S5        GM�  US   R                  R-                  S&5      n(UR                  R-                  S&5      n)U)c*  U(b'  US-  nU Rm                  UR                  UUUU(5        GMõ  U)U(:w  a5  US-  nU Rk                  UR                  UUUUS   R                  S&5        GM0  Uc‹  US:X  a‚  [        US   R                  5      [        UR                  5      :w  aS  URH                  UR                  Ro                  5       -   n*U Rq                  UR                  UU*UUS   R                  5        GM¾  U	(       a  U R                  (       a  GMÙ  Sn+UUS   ;   a“  US   U    H‡  n,['        U R(                  U,R+                  S5      5      n-U-R                  R-                  S5      n.U-R                  R-                  S$5      n/Sn0U/b  [G        U/5      n0U0S-  (       a  Mz  U.U:X  d  M‚  U+S-  n+M‰     U+S:w  a“  U[r        Rt                  :X  d  U[r        Rt                  :X  ak  US-  (       da  Sn1X    HN  n2['        U R(                  U2R+                  S5      5      R                  R-                  S5      n3U3U:X  d  MI  U1S-  n1MP     U+U1:X  a  GM  Sn4X    H‡  n,['        U R(                  U,R+                  S5      5      n-U-R                  R-                  S5      n.U-R                  R-                  S$5      n/Sn0U/b  [G        U/5      n0U0S-  (       a  Mz  U.U:X  d  M‚  U4S-  n4M‰     U+U4:X  a  GMª  U4U+-
  n5US-  (       a{  U+S:X  a2  US-  nU R                  UR                  UUUR                  UU5        GMñ  U R                  S'UU4[        UR                  5      UU+[        UR                  5      4-  5        GM4  U (       a   eU R                  S(UU4[        UR                  5      UU+[        UR                  5      4-  5        U5S:w  d  GM†  US-  nU5S:”  ar  U+S:”  d  U5S:”  a*  U R                  S)[        UR                  5      -  5        GMÇ  U Rw                  XUR                  R                  5       UUR                  5        U5S-  n5OIU R                  US   R                  UUR                  R                  5       UR                  X#5        U5S-  n5U5S:w  a  MÎ  G	MW     U$ s  snf s  snf ! ["        R>                   aP  nUR@                  u  nnU["        RB                  :w  a  e X@RE                  UR                  UUU5      -  n SnAG	MÄ  SnAff = f)*z$check a DN attribute for correctnessr   r  N)ÚmemberÚmemberOfz@ERROR: Missing and duplicate forward link values for attribute 'rS  rD  z4ERROR: Duplicate forward link values for attribute 'zMissing   link '%s'z8Schedule re-adding missing forward link for attribute %srX   F)r¼  r"  zDuplicate link '%s'zCorrect   link '%s'r  r2   rÙ   r6   zmissing GUIDÚ	isDeletedÚreplPropertyMetaDatazmsds-hasinstantiatedncsTrç  ú	<GUID=%s>)rÖ   r×   rØ   rÅ   z	B:8:%08X:z%08Xz(incorrect instanceType part of Binary DNÚTRUEr  r!  r¯  Ústringr—  zHWARNING: Link (back) mismatch for '%s' (%d) on '%s' to '%s' (%d) on '%s'zIERROR: Link (forward) mismatch for '%s' (%d) on '%s' to '%s' (%d) on '%s'z5ERROR: Can't fix missing multi-valued backlinks on %s)<r:  r@   r  rl   r  r    r@  rJ  rÈ   r¯   rå   r½  r˜  ÚkeysÚsortedrŽ   rÄ  rr   rí   r   r>   r   rç   rˆ  r   rÙ   Úlowerr|   r   r‹   rŒ   r�   r�   r‘   rz  r¦   ra  Úbinaryr‹  Úupperr–   r¦  rê   r	   r   r(  r)  r*  r-  r   ÚDRSUAPI_ATTID_isDeletedr+  rq  r”  rž  r¥   r�  r   ré   r¬  )6r§   r¢  r7  r  rÐ   r1  r8  rw  Úreverse_syntax_oidÚis_member_linkr  r  r0  Úmissing_error_countr¯   Úforward_linksr+  r  ÚdÚddr    rL  rø   rñ   r  r-   Úfixing_msDS_HasInstantiatedNCsr©   Úe3r¬   r­   Ú
is_deletedÚtarget_is_deletedr+  r6  Ú
found_datar÷   Údeleted_usnÚrmd_blobr²  Ú
target_sidÚlink_sidÚbad_dnÚmatch_countÚvÚv_dnÚv_guidÚv_blobÚv_rmd_flagsÚforward_countÚwÚw_guidÚexpected_countÚ
diff_counts6                                                         r#   Úcheck_dnÚdbcheck.check_dn  sG  € àˆØ�|Ñ$ QÑ'ˆà$(×$IÑ$IÈ(Ó$SÑ!ˆØÑ(Ø!%×!2Ñ!2×!VÑ!VÐWhÓ!iÑà!%Ðà!Ð%;Ñ;ˆÞ˜d×:×:Ø‰Nð ×*Ñ*¨3¸*Ø+1óFñ 5ˆK¨ô ˆ~Ó !Ô#ð ×>Ñ>¸sØ?GØ?PØ?JóLñ 7Ð!ð
 Ñ.ˆKà*5×*<Ñ*<Ô*>Ó?Ò*> BšRÑ*>ˆMÐ?à" aÓ'Ø—’Û$ c§f¤fð.õ /ð —’ÓaiÐkn×kqÔkqÐrÔsÛ*�Ø—‘Ð1°QÑ7Ô8Ø×'Ñ'Ð(bÐemÑ(mØ(G÷Iñ Ià×.Ñ.¨q¯t©tÐ5FØ/2¯v©v×/BÑ/BÓ/DÀcÇfÁfØ/7Ø@Eð /ñ Gñ Ø ! Ñ$’ñ +ð )×-Ñ-Ö/�Ø" 6Ñ*�Ø˜Hœ+�BØ—K‘KÐ 5¸Ñ :Ö;ñ &à—‘Ð1°A°f±IÑ=Ö>ñ	 0ô '-¨]Ô&;Ó<Ò&; ”C˜–GÑ&;ˆDÐ<Ø×*Ñ*¨3¸$Ô?ä×.Ò.¨t°Q¸ÓAˆC‰Mà•=ˆCÜ˜dŸj™j¨#¯*©*°VÓ*<¸jÓIˆGð —:‘:×4Ñ4°VÓ<ˆDØ‰|Ø˜qÑ �Ø×2Ñ2°3·6±6¸8ÀSÈ'Ø3AôCáäœ$Ÿ)š) D›/Ó*ˆGØ Ð"8Ð9ˆEä�H“×#Ñ#Ó%Ð)BÓBÈÏÉÐSW×S`ÑS`ÓI`Ø15Ð.Ø—‘˜^Õ,à16Ð.à Ñ,Ø—‘Ð.Ô/ðØ—j‘j×'Ñ'¨[¸7Ñ-BÌ#Ï.É.Ø.3ò ?Að (ð B�ö  .Ø!,¬s°3°q±6¸.Ñ3IÈ!Ñ3LÓ/MÑ!M�”Ø!'¬#¨c°!©f°^Ñ.DÀQÑ.GÓ*HÑ!H�”ä�w“<¤3 s£8Ó+Ø 1Ñ$�KØ×0Ñ0°·±¸À3ÈÐQ{Ô|Úð %¨Ñ+×Z´°C¸Ñ4DÀQÑ4GÓ0H×0NÑ0NÓ0PÐTZÑ0ZˆJØ +¨s°1©vÑ 5× g¼#¸cÀ!¹fÀ[Ñ>QÐRSÑ>TÓ:U×:[Ñ:[Ó:]ÐagÑ:gÐæ˜cŸf™f¨D×,KÑ,KÓKÖPVð
 ×0Ñ0°ÀÔDØ˜qÑ �Úß"¨4×+EÑ+EÀg×+NÒ+N×SYð ˜qÑ �Ø#ŸJ™J×=Ñ=¸oÓN�	ÞØ-°°Q±Ó7Ü)¬(×*KÑ*KØ*-¨a©&Ð1GÑ*HÈÑ*Kó M˜à%*˜
Ø!%§¡§¤˜AØ Ÿw™w¬'×*IÑ*IÕIØ./¯k©k Ø#.´#°i³.Õ#@ð 26 JÙ$)ñ "0ö &Ø ×/Ñ/°·±¸Ø03°W¸cÀ!¹f¿i¹iÈôOâ$à×#Ñ# C§F¡F¨H°c¸7ÀCÈÁFÇIÁIÈuÔUÚð
 —z‘z×8Ñ8¸ÓEˆHØˆIØÑ#Ü ›M�	ð ˜q—=Ð%6Ñ%BÜ�s˜1‘v—y‘y“>¤S¨¯©£_Ó4Ø 1Ñ$�KØ×9Ñ9¸#¿&¹&À(ÈCÐQXØ:=¸a¹&¿)¹)ÀXôOâà�1‰v�y‰y×/Ñ/°Ó7¸7¿:¹:×;\Ñ;\Ð]cÓ;dÓdØ˜qÑ �Ø×5Ñ5°c·f±f¸hÈÈWØ69¸!±f·i±iÀôIâà˜Q™Ÿ™×9Ñ9¸%Ó@ˆJØ—z‘z×8Ñ8¸Ó?ˆHØÑ JÑ$:Ø˜qÑ �Ø×8Ñ8¸¿¹ÀÈ3Ø9@À*ôNâØ˜:Ó%Ø˜qÑ �Ø×5Ñ5°c·f±f¸hÈÈWØ69¸!±f·i±iÀôHâð !Ñ(Ø˜Q“;¤3 s¨1¡v§y¡y£>´S¸¿¹³_Ó#Dð
 %Ÿ^™^¨g¯j©j×.GÑ.GÓ.IÑI�FØ×4Ñ4°S·V±V¸XÀvØ5<¸cÀ!¹f¿i¹iôIâæ $×">×">Úð ˆKØ  C¨¡FÓ*Ø˜Q™Ð 1Ô2�AÜ" 4§:¡:¨q¯x©x¸Ó/?Ó@�DØ!ŸW™W×;Ñ;¸FÓC�FØ!ŸW™W×;Ñ;¸KÓH�FØ"#�KØÑ)Ü&)¨&£k˜Ø" Q—Ù Ø Õ)Ø# qÑ(šñ 3ð ˜aÓØ¤×!;Ñ!;Ó;Ð?QÔUY×UoÑUoÓ?oØ! AŸ:à()˜Ø!$¤˜AÜ%,¨T¯Z©Z¸¿¹À&Ó9IÓ%J×%MÑ%M×%dÑ%dÐekÓ%l˜FØ%¨�~Ø -°Ñ 2¢ñ "/ð
 '¨-Ó7Ú$ØˆNØ”]�Ü˜tŸz™z¨1¯8©8°FÓ+;Ó<�ØŸ™×7Ñ7¸Ó?�ØŸ™×7Ñ7¸ÓD�Ø�ØÑ%Ü"% f£+�KØ —?ÙØ˜T•>Ø" aÑ'’Nñ #ð ˜nÓ,Úà'¨+Ñ5ˆJà˜�zð  !Ó#Ø 1Ñ$�KØ×.Ñ.¨s¯v©v°xØ/2°G·J±JØ/@Ø/AôCò à—‘ÐfØ$ n´c¸#¿&¹&³kØ-¨{¼CÀÇ
Á
»OðjMñ Mô Nò æ(Ð(Ð(à�K‰KÐcØ  .´#°c·f±f³+Ø)¨;¼¸G¿J¹J»ðgIñ Iô Jð  –/Ø˜qÑ �Ø “>Ø" Q“¨*°q«.àŸ™ð %CÜEHÈÏÉÃ_ñ%Uô VâØ×-Ñ-¨cØ.1¯f©f×.AÑ.AÓ.CØ.?Ø.5¯j©jô:ð  !‘O‘Jà×.Ñ.¨s°1©v¯y©yÐ:KØ/2¯v©v×/BÑ/BÓ/DÀcÇfÁfØ/7ôEð  !‘O�Jð#  —/�/ñu !ðZ ÐùòY @ùò4 =øôD —<‘<ó 
Ø!Ÿw™w‘��tØœ3×1Ñ1Ó1Øð ×AÑAÀ#Ç&Á&ØBJØBEØBIó Kñ K�ö ûð
ús%   Â1nÇ,nÌ&/nîo<î,Ao7ï7o<c                 óf   • UR                   R                   H  nUR                  U:X  d  M  Us  $    g r»   )r)  r*  r-  )r§   r6  r-  r÷   s       r#   Úfind_repl_attidÚdbcheck.find_repl_attid>  s*   € Ø—‘—”ˆAØ�w‰w˜%ÕØ’ñ  ð rÃ   c                 óx   • [        [        R                  U5      nU R                  X25      nUb  UR                  $ g)zƒRead metadata properties and return the originating time for
a given attributeId.

:return: the originating time or 0 if not found
r   )r	   r   r(  rn  r,  )r§   rL  r-  r6  r÷   s        r#   Úget_originating_timeÚdbcheck.get_originating_timeE  s:   € ô œ(×;Ñ;¸SÓAˆØ× Ñ  Ó-ˆØ‰=Ø×,Ñ,Ð,ØrÃ   c                 ó$  • [        5       n[        5       n/ nUR                  U R                  5      n[        [        R
                  U5      nUR                  R                   H¨  nU R                  R                  UR                  5      n	UR                  U	R                  5       5        UR                  UR                  5        U R                  R                  U	US9n
X¨R                  :w  d  M�  UR                  UR                  5        Mª     X5U4$ )z\Read metadata properties and list attributes in it.
raises KeyError if the attid is unknown.©Úis_schema_nc)r„   Úis_child_ofry   r	   r   r(  r)  r*  r@   Úget_lDAPDisplayName_by_attidr-  rÌ   rL  r   Úget_attid_from_lDAPDisplayName)r§   r¯   rL  Úset_attÚwrong_attidsÚ
list_attidÚin_schema_ncr6  r÷   ÚattÚcorrect_attids              r#   Úprocess_metadataÚdbcheck.process_metadataR  sÖ   € ô “%ˆÜ“uˆØˆ
Ø—~‘~ d§n¡nÓ5ˆäœ(×;Ñ;¸SÓAˆà—‘—”ˆAØ×#Ñ#×@Ñ@ÀÇÁÓIˆCØ�K‰K˜Ÿ	™	›Ô$Ø×Ñ˜aŸg™gÔ&Ø ×-Ñ-×LÑLÈSØZfð Mð hˆMà§¡Õ'Ø× Ñ  §¡Ö)ñ  ð  \Ð2Ð2rÃ   c                 óð  • [        [        [        R                  US   S   5      5      n[        R
                  " U R                  SU-  5      nU R                  R                  U[        R                  U/SS/S9nUS   n[        R                  " 5       nXGl
        [        R                  " Xb   [        R                  U5      Xr'   U R                  U/ SQSU-  5      (       a  U R                  S	U-  5        g
g
)z…re-write replPropertyMetaData elements for a single attribute for a
object. This is used to fix missing replPropertyMetaData elementsr  r   rG  r   r×   rÅ   )rÚ   rá   r×   ú'Failed to fix metadata for attribute %szFixed metadata for attribute %sN)rŽ   r	   r   rÙ   rr   rs   r>   r‹   rŒ   rì   r¯   rí   rî   rï   rÈ   )r§   r¢  ÚattrÚguid_strr¯   r©   r  Únmsgs           r#   Úfix_metadataÚdbcheck.fix_metadatah  sÝ   € ô ”z¤$§)¡)¨S°Ñ->¸qÑ-AÓBÓCˆÜ�VŠV�D—J‘J ¨hÑ 6Ó7ˆØ�j‰j×Ñ R¬s¯~©~ÀdÀVØ*>Ø*;ð*=ð  ð >ˆð �!‰fˆÜ�{Š{‹}ˆØŒÜ×'Ò'¨©	´3×3GÑ3GÈÓNˆ‰
Ø�>‰>˜$Ò MØCÀdÑJ÷Lñ Là�K‰KÐ9¸DÑ@ÕAðLrÃ   c                 óú  • UR                   [        R                  -  (       a  g SnUR                  [        R                  :X  a  SnObUR                  [        R
                  :X  a  SnOAUR                  [        R                  :X  a  SnO UR                  [        R                  :X  a  SnU(       d  g UR                  R                   [        R                  -  (       d  g [        UR                  R                  5      $ )NFT)Úflagsr   ÚSEC_ACE_FLAG_INHERIT_ONLYÚtypeÚ"SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECTÚ!SEC_ACE_TYPE_ACCESS_DENIED_OBJECTÚ SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECTÚ SEC_ACE_TYPE_SYSTEM_ALARM_OBJECTrÑ   Ú%SEC_ACE_INHERITED_OBJECT_TYPE_PRESENTrŽ   Úinherited_type)r§   ÚaceÚchecks      r#   Ú ace_get_effective_inherited_typeÚ(dbcheck.ace_get_effective_inherited_typex  s®   € Ø�9‰9”x×9Ñ9×9ØàˆØ�8‰8”x×BÑBÓBØ‰EØ�X‰Xœ×CÑCÓCØ‰EØ�X‰Xœ×BÑBÓBØ‰EØ�X‰Xœ×BÑBÓBØˆEæØà�z‰z×Ñ¤(×"PÑ"P×PØä�3—:‘:×,Ñ,Ó-Ð-rÃ   c                 ó  • XR                   ;   a  U R                   U   $ SU-  nU R                  R                  U R                  US/S9n[	        [        [        R                  US   S   S   5      5      nX@R                   U'   U$ )Nz0(&(ldapDisplayName=%s)(objectClass=classSchema))ÚschemaIDGUID)r+   r5   r-   r   )r}   r>   r‹   ry   rŽ   r	   r   rÙ   )r§   ÚclsÚfltr©   r7  s        r#   Úlookup_class_schemaIDGUIDÚ!dbcheck.lookup_class_schemaIDGUIDŽ  s‰   € Ø×)Ñ)Ó)Ø×*Ñ*¨3Ñ/Ð/à@À3ÑFˆØ�j‰j×Ñ T§^¡^Ø+.Ø'5Ð&6ð  ð 8ˆô ”
œ4Ÿ9™9 c¨!¡f¨^Ñ&<¸QÑ&?Ó@ÓAˆà'(×Ñ Ñ$ØˆrÃ   c                 óx  • SnX#   n[        [        R                  US   5      nSU;   =(       a"    [        US   S   5      R	                  5       S:H  nU(       a  US 4$ [        R                  " 5       nUR
                  Ul        UR                  Ul        UR                  Ul        UR                  Ul        SnS n	/ n
UR                  b  UR                  R                  n
[        S[        U
5      5       H`  nX«   nUR                  [        R                  -  (       d  UR                  U5        M<  U R!                  U5      nUc  MR  U	b	  XÙ:w  a  SnM^  Un	Mb     / n
UR"                  b  UR"                  R                  n
[        S[        U
5      5       H`  nX«   nUR                  [        R                  -  (       d  UR%                  U5        M<  U R!                  U5      nUc  MR  U	b	  XÙ:w  a  SnM^  Un	Mb     U(       a  Xu4$ U	c  US 4$ S n US   S   nUcs  U R(                  R+                  U[,        R.                  SS/S	/S
9nUS   nSU;   =(       a"    [        US   S   5      R	                  5       S:H  nU(       a  US 4$ US   S   nU R1                  U5      nXÙ:w  a  Xu4$ US 4$ ! [&         a
  n S nAN¢S nAff = f)NÚnTSecurityDescriptorr   rE  rH  FTÚobjectClassrt  r×   rÅ   )r	   r   Ú
descriptorrŽ   rN  Ú	owner_sidÚ	group_sidr‹  ÚrevisionÚsaclÚacesrH  r    r‰  ÚSEC_ACE_FLAG_INHERITED_ACEÚsacl_addr”  ÚdaclÚdacl_addrš   r>   r‹   rr   rŒ   rš  )r§   r¯   r¢  Úsd_attrÚsd_valÚsdrX  Úsd_cleanÚbrokenÚlast_inherited_typer¤  rN  r’  r7  r˜  ry  r©   r÷   s                     r#   Ú
process_sdÚdbcheck.process_sd›  sÅ  € Ø(ˆØ‘ˆäœ×+Ñ+¨V°A©YÓ7ˆà  CÑ'×V¬C°°KÑ0@ÀÑ0CÓ,D×,JÑ,JÓ,LÐPVÑ,Vˆ
Þà˜�:Ðä×&Ò&Ó(ˆØŸ\™\ˆÔØŸ\™\ˆÔØŸ™ˆŒØŸK™KˆÔàˆØ"ÐàˆØ�7‰7ÑØ—7‘7—<‘<ˆDÜ�qœ#˜d›)Ö$ˆAØ‘'ˆCà—9‘9œx×BÑB×BØ×!Ñ! #Ô&Ùà×5Ñ5°cÓ:ˆAØ‰yÙà"Ñ.ØÓ+ð "�FÙà"#Òñ+ %ð. ˆØ�7‰7ÑØ—7‘7—<‘<ˆDÜ�qœ#˜d›)Ö$ˆAØ‘'ˆCà—9‘9œx×BÑB×BØ×!Ñ! #Ô&Ùà×5Ñ5°cÓ:ˆAØ‰yÙà"Ñ.ØÓ+ð "�FÙà"#Òñ+ %ö. Ø�>Ð!àÑ&à˜�:Ðàˆð	Ø�mÑ$ RÑ(ˆCð ‰;Ø—*‘*×#Ñ#¨´3·>±>Ø+6¸Ð*FØ.?Ð-@ð $ð BˆCð �A‘ˆAØ$¨Ñ)×V¬c°!°K±.ÀÑ2CÓ.D×.JÑ.JÓ.LÐPVÑ.VˆJÞà˜D�zÐ!Ø�MÑ" 2Ñ&ˆCà×*Ñ*¨3Ó/ˆàÓ#à�>Ð!ð �DˆzÐøô+ ó 	Üûð	ús   È
J% Ê%
J9Ê4J9c                 óÐ  • Sn[        U5      n[        R                  [        R                  -  nU R	                  SU< SU< S3S5      (       d  U R                  SU< SU< S35        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      Xt'   U R                  US	U-  /S
U-  5      (       a  U R                  SU< SU< S35        gg)z/re-write the SD due to incorrect inherited ACEsr�  úFix rò  r?  r]   úNot fixing Ú
Núsd_flags:1:%dúFailed to fix attribute %súFixed attribute 'rÀ  ú'
)r
   r   ÚSECINFO_DACLÚSECINFO_SACLrå   rÈ   rr   rì   r¯   rí   rî   rï   )r§   r¯   r«  Ú	sd_brokenr©  rª  Úsd_flagsr…  s           r#   Úerr_wrong_sdÚdbcheck.err_wrong_sd  s½   € à(ˆÜ˜"“ˆÜ×(Ñ(¬8×+@Ñ+@Ñ@ˆà×Ò³7»BÐ ?ÐA[×\Ñ\Ø�KŠK³7»BÐ?Ô@Øä�{Š{‹}ˆØŒÜ×*Ò*¨6´3×3GÑ3GÈÓQˆ‰Ø�>‰>˜$ °8Ñ!;Ð <Ø6¸Ñ@÷Bñ Bà�KŠK»GÃRÐHÕIðBrÃ   c                 óV  • Sn[        U5      n[        R                  [        R                  -  nUR                  b  U[        R
                  -  nUR                  b  U[        R                  -  nU R                  SU< SU< SU< 3S5      (       d  U R                  SU< SU< S35        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      Xt'   U R                  US	U-  /S
U-  5      (       a  U R                  SU< SU< S35        gg)zare-write the SD due to not matching the default (optional mode for fixing an incorrect provision)r�  NzReset rò  z back to provision default?
rp   zNot resetting r´  rµ  zFailed to reset attribute %sr·  rÀ  r¸  )r
   r   r¹  rº  r   ÚSECINFO_OWNERr¡  ÚSECINFO_GROUPrå   rÈ   rr   rì   r¯   rí   rî   rï   )r§   r¯   r«  Údiffr©  rª  r¼  r+  s           r#   Úerr_wrong_default_sdÚdbcheck.err_wrong_default_sd  s   € à(ˆÜ˜"“ˆÜ×(Ñ(¬8×+@Ñ+@Ñ@ˆØ�<‰<Ñ#Øœ×.Ñ.Ñ.ˆHØ�<‰<Ñ#Øœ×.Ñ.Ñ.ˆHà×ÒÓSZÓ\^Ò`dÐ eð  hC÷  Dñ  DØ�KŠK³g»rÐBÔCØä�KŠK‹MˆØŒÜ×'Ò'¨´×0DÑ0DÀgÓNˆ‰
Ø�>‰>˜!˜o°Ñ8Ð9Ø8¸7ÑB÷Dñ Dà�KŠK»GÃRÐHÕIðDrÃ   c                 ób  • Sn[        U5      n[        R                  [        R                  -  nU R	                  SU< SU< S3S5      (       d  U R                  SU< SU< S35        g[        R                  " 5       nXl        [        R                  " U[        R                  U5      Xc'   U R                  R                  U R                  5        U R                  US	U-  /S
U-  5      (       a  U R                  SU< SU< S35        U R                  R                  U R                  5        g)z/re-write the SD due to a missing owner or groupr�  zFix missing owner or group in rò  r?  r^   z"Not fixing missing owner or group r´  Nrµ  r‚  r·  rÀ  r¸  )r
   r   rÀ  rÁ  rå   rÈ   rr   rì   r¯   rí   rî   r>   Úset_session_infor”   rï   r’   )r§   r¯   r«  r©  rª  r¼  r…  s          r#   Úerr_missing_sd_ownerÚdbcheck.err_missing_sd_owner*  sõ   € à(ˆÜ˜"“ˆÜ×)Ñ)¬H×,BÑ,BÑBˆà×ÒËWÓVXÐ Yð  \B÷  Cñ  CØ�KŠKË'ÓSUÐVÔWØä�{Š{‹}ˆØŒÜ×*Ò*¨6´3×3GÑ3GÈÓQˆ‰ð 	�
‰
×#Ñ# D×$;Ñ$;Ô<Ø�>‰>˜$ °8Ñ!;Ð <ØCÀgÑM÷Oñ Oà�KŠK»GÃRÐHÔIØ�
‰
×#Ñ# D×$<Ñ$<Õ=rÃ   c                 óœ  • U R                   (       a  gXR                  ;   a  g[        [        R                  U5      nU R                  U[        R                  5      n[        R                  " UR                  5      n[        R                  " 5       nU R                  S-  nXe-
  nX‡::  a  gXW-   n	US-  n
U
S::  aB  U R                  SU-  5        U R                  S[        R                  " U	5      US-  4-  5        O>U R                  SU-  5        U R                  S[        R                  " U	5      U
4-  5        U R                  S	UR                  UR                   UR"                  UR$                  UR&                  [        R                  " [        R                  " UR                  5      5      4-  5        U =R(                  S
-  sl        g)NFé€Q é   z`SKIPPING additional checks on object %s which very recently became an expired tombstone (normal)zbINFO: it is expected this will be expunged by the next daily task some time after %s, %d hours agoi  z+SKIPPING: object %s is an expired tombstonezTINFO: it was expected this object would have been expunged soon after%s, %d days agozHisDeleted: attid=0x%08x version=%d invocation=%s usn=%s (local=%s) at %sr6   T)rn   r–   r	   r   r(  rn  r   rO  ÚsambaÚnttime2unixr,  Útimer:   rÈ   Úctimer-  ÚversionÚoriginating_invocation_idr9  r+  ro   )r§   r¯   Úrepl_valr6  rE  Údelete_timeÚcurrent_timeÚtombstone_deltarþ   Úexpunge_timeÚ
delta_dayss              r#   Úis_expired_tombstoneÚdbcheck.is_expired_tombstoneI  s¯  € Ø×(×(ð à×0Ñ0Ó0ð äœ(×;Ñ;¸XÓFˆà×(Ñ(¨¬w×/NÑ/NÓOˆ	ä×'Ò'¨	×(IÑ(IÓJˆÜ—y’y“{ˆà×0Ñ0°LÑAˆàÑ*ˆØÓ#Øà"Ñ4ˆà˜lÑ+ˆ
à˜‹?Ø�K‰Kð ?àACñDô Eð �K‰Kð 'ô  Ÿ:š: lÓ3°U¸wÑ5GÐHñIõ Jð
 �K‰KÐEÈÑJÔKØ�K‰Kð *ô  Ÿ:š: lÓ3°ZÐ@ñAô Bð
 	�‰Ð^Ø—O‘OØ×%Ñ%Ø×7Ñ7Ø×-Ñ-Ø×'Ñ'Ü—J’Jœu×0Ò0°×1RÑ1RÓSÓTðbVñ Vô 	Wð 	×Ò 1Ñ$ÕØrÃ   c                 ó@  • [        [        R                  U5      nU R                  U[        R
                  5      n[        R                  " UR                  5      nU R                  S-  n/ nUR                  R                   H—  nUR                  [        R
                  :X  a  M#  UR                  UR                  ::  a  M?  UR                  UR                  ::  a  M[  [        R                  " UR                  5      nX„-
  n	X•::  a  M†  UR                  U5        M™     Xc4$ )NrÊ  )r	   r   r(  rn  r   rO  rÌ  rÍ  r,  r:   r)  r*  r-  r+  r   )
r§   rÒ  r6  rE  rÓ  rÕ  Úfoundr÷   Úchange_timerþ   s
             r#   Úfind_changes_after_deletionÚ#dbcheck.find_changes_after_deletion  sé   € Üœ(×;Ñ;¸XÓFˆà×(Ñ(¨¬w×/NÑ/NÓOˆ	ä×'Ò'¨	×(IÑ(IÓJˆà×0Ñ0°LÑAˆàˆØ—‘—”ˆAØ�w‰wœ'×9Ñ9Ó9Ùà�{‰{˜i×1Ñ1Ó1Ùà×(Ñ(¨I×,MÑ,MÓMÙä×+Ò+¨A×,EÑ,EÓFˆKàÑ-ˆEØÓ'Ùð �L‰L˜ŽOñ)  ð, ÐÐrÃ   c                 ó²   ^ • T R                  U5      u  p4[        U5      S:X  a  gU 4S jnT R                  SU-  5        U" U5        U H  nU" U5        M     g)Nr   Fc                 óŒ  >•  TR                   R                  U R                  5      nTR	                  SXR                  U R
                  U R                  U R                  U R                  [        R                  " [        R                  " U R                  5      5      4-  5        g ! [         a    SU R                  -  n Nšf = f)Nú<unknown:0x%x08x>zA%s: attid=0x%08x version=%d invocation=%s usn=%s (local=%s) at %s)r@   rw  r-  rš   rÈ   rÐ  rÑ  r9  r+  rÎ  rÏ  rÌ  rÍ  r,  )r÷   Úattnamer§   s     €r#   Úreport_attidÚ8dbcheck.has_changes_after_deletion.<locals>.report_attid¦  s£   ø€ ð8Ø×+Ñ+×HÑHÈÏÉÓQ�ð �K‰KÐ[Ø§¡¨!¯)©)Ø×3Ñ3Ø×)Ñ)ØŸ™ÜŸ
š
¤5×#4Ò#4°Q×5NÑ5NÓ#OÓPð_Rñ Rõ Søô ó 8Ø-°·±Ñ7’ð8ús   ƒ%B' Â'CÃCz,ERROR: object %s, has changes after deletionT)rÝ  r    rÈ   )r§   r¯   rÒ  rÛ  rE  rã  r÷   s   `      r#   Úhas_changes_after_deletionÚ"dbcheck.has_changes_after_deletion¡  s\   ø€ Ø×;Ñ;¸HÓEÑˆÜˆu‹:˜‹?Øõ	Sð 	�‰ÐBÀRÑGÔHÙ�YÔÛˆAÙ˜ŽOñ ð rÃ   c                 ó|  • U R                  U5      u  p4UR                  U R                  5      nUR                  5       nU R                  R                  UUS9n/ nU HŒ  n	U	R                  U:X  a  M  U	R                  [        R                  :X  a  M5  U	R                  [        R                  :X  a  MU   U R                  R                  U	R                  5      n
UR                  U
5        MŽ     [        U5      S:”  a5  U R                  SSR                  U5      -  5        U R                  S5        g U R!                  SU< SU R"                  < S	3S
5      (       d  U R                  S5        g U R%                  US/SU-  5      (       a  U R                  SU-  5        g g ! [         a    SU	R                  -  n
 Nâf = f)Nrt  rá  r   zUnexpeted attributes: %sr   z%Not fixing changes after deletion bugzDelete broken tombstone object z	 deleted z
 days ago?rƒ   rÚ   rd  re  )rÝ  rv  ry   Úget_rdn_namer@   rx  r-  r   ÚDRSUAPI_ATTID_nameÚDRSUAPI_ATTID_lastKnownParentrw  rš   r   r    rÈ   r   rå   r:   r%  )r§   r¯   rÒ  rÛ  rE  r|  rÞ  Ú	rdn_attidÚ
unexpectedr÷   râ  s              r#   Úerr_changes_after_deletionÚ"dbcheck.err_changes_after_deletionº  s“  € Ø×;Ñ;¸HÓEÑˆà—~‘~ d§n¡nÓ5ˆØ—?‘?Ó$ˆØ×%Ñ%×DÑDÀXØBNð Eð Pˆ	ð ˆ
ÛˆAØ�w‰w˜)Ó#ÙØ�w‰wœ'×4Ñ4Ó4ÙØ�w‰wœ'×?Ñ?Ó?Ùð8Ø×+Ñ+×HÑHÈÏÉÓQ�ð ×Ñ˜gÖ&ñ ô ˆz‹?˜QÓØ�K‰KÐ2°S·X±X¸jÓ5IÑIÔJØ�K‰KÐ?Ô@Øà×ÒÛ " D×$:Ô$:ð!<Ø=]÷_ñ _à�K‰KÐ?Ô@Øà�>‰>˜"˜y˜kØ2°RÑ7÷9ñ 9à�K‰K˜¨"Ñ,Õ-ð9øô ó 8Ø-°·±Ñ7’ð8ús   Â3%FÆF;Æ:F;c                 ó¸  • [        [        R                  U5      nUR                  nSnUR                   H¡  nUR
                  [        R                  " S5      :w  a  M)  SnU R                  SXR                  UR                  [        R                  " [        R                  " UR                  5      5      U R                   R#                  5       4-  5        M£     U$ )NFú$00000000-0000-0000-0000-000000000000Ta  ERROR: on replPropertyMetaData of %s, the instanceType on attribute 0x%08x,
                           version %d changed at %s is 00000000-0000-0000-0000-000000000000,
                           but should be non-zero.  Proposed fix is to set to our invocationID (%s).)r	   r   r(  r)  r*  rÑ  r   rÙ   rÈ   r-  rÐ  rÎ  rÏ  rÌ  rÍ  r,  r>   Úget_invocation_id)r§   r¯   Úrepl_meta_datar6  r)  rÛ  r÷   s          r#   Ú"has_replmetadata_zero_invocationidÚ*dbcheck.has_replmetadata_zero_invocationidÞ  s²   € Üœ(×;Ñ;Ø(ó*ˆà�h‰hˆØˆØ—”ˆAà×*Ñ*¬d¯iªiÐ8^Ó._Ó_ÙàˆEØ�K‰Kð hð Ÿw™w¨¯	©	ÜŸ:š:¤e×&7Ò&7¸×8QÑ8QÓ&RÓSØŸ:™:×7Ñ7Ó9ð;ñ;ö <ñ ð ˆrÃ   c           	      óV  • [        [        R                  U5      nUR                  n[        R
                  " [        [        R                  " 5       5      5      nSnUR                   H­  nUR                  [        R                  " S5      :w  a  M)  SnU R                  R                  [        R                  5      n	UR                   S-   Ul        Xhl        [        R                  " U R                  R%                  5       5      Ul	        X˜l        X˜l        M¯     U(       Ga
  [+        U5      n
[        R,                  " 5       nXl        U R1                  SU< SU< SU R                  R%                  5       < S3S	5      (       d  U R3                  S
U< SU< S35        g [        R,                  " 5       nXl        [        R4                  " U
[        R6                  U5      XÂ'   U R9                  US[:        R<                  -  S/SU-  5      (       a  U R3                  SU< SU< S35        g g g )NFrð  Tr6   r²  rò  zK by setting originating_invocation_id on some elements to our invocationID r?  rb   z-Not fixing zero originating_invocation_id in r´  r  ú#local_oid:1.3.6.1.4.1.7165.4.3.14:0r¶  r·  rÀ  r¸  )r	   r   r(  r)  rÌ  Úunix2nttimer¦   rÎ  r*  rÑ  r   rÙ   r>   Úsequence_numberrr   ÚSEQ_NEXTrÐ  r,  rñ  r9  r+  r
   rì   r¯   rå   rÈ   rí   rî   rï   r   rè  )r§   r¯   rƒ  rò  r6  r)  ÚnowrÛ  r÷   ÚseqÚreplBlobr  r…  s                r#   Ú"err_replmetadata_zero_invocationidÚ*dbcheck.err_replmetadata_zero_invocationidò  s¨  € Üœ(×;Ñ;Ø(ó*ˆà�h‰hˆÜ×Ò¤¤D§I¢I£KÓ 0Ó1ˆØˆØ—”ˆAà×*Ñ*¬d¯iªiÐ8^Ó._Ó_ÙàˆEØ—*‘*×,Ñ,¬S¯\©\Ó:ˆCØŸ	™	 A™ˆAŒIØ(+Ô%Ü*.¯)ª)°D·J±J×4PÑ4PÓ4RÓ*SˆAÔ'Ø #ÔØŽKñ ÷ Ü “~ˆHÜ—+’+“-ˆCØŒFà×#Ò#Û'+«R°·±×1MÑ1MÖ1Oð%QØRv÷xñ xà—’ÓY]Ó_aÐbÔcØä—;’;“=ˆDØŒGÜ×+Ò+¨H´c×6JÑ6JÈDÓQˆD‰JØ�~‰~˜dÐ%5¼×8cÑ8cÑ%cØ%Jð%Là:¸TÑA÷Cñ Cð —’ÃÃbÐIÕJðCð rÃ   c                 ó$  • [        [        R                  U5      nUR                  nUR                   H)  n U R
                  R                  UR                  5      nM+     g ! [         a$    U R                  SUR                  X!4-  5           g f = f)NzIERROR: attributeID 0X%0X is not known in our schema, not fixing %s on %s
)
r	   r   r(  r)  r*  r@   rw  r-  rš   rÈ   )r§   r¯   rƒ  rò  r6  r)  r÷   r}  s           r#   Úerr_replmetadata_unknown_attidÚ&dbcheck.err_replmetadata_unknown_attid  s€   € Üœ(×;Ñ;Ø(ó*ˆà�h‰hˆØ—”ˆAðØ×'Ñ'×DÑDÀQÇWÁWÓM’ò øô ó Ø—‘ÐhÐlm×lsÑlsÐuyÐk~Ñ~ÔÚðús   ·%A!Á!*BÂBc           
      ó¦  • [        [        R                  U5      nSn[        5       n[        5       n0 n	UR	                  U R
                  5      n
UR                  n[        UR                  S S  S S9Ul        [        UR                  5       GHŠ  n[        SXR                  4-  5        U R                  R                  UR                  5      nUR                  5       U;   Ga  U R                  SU< SU< SU< S35        U R!                  S	X!UR                  XÙU   R                  4-  S
5      (       d#  U R                  SUR                  XÒU4-  5          g SnUR#                  UR                  5        UR$                  X�   R$                  :”  a_  UR&                  X�   l        UR(                  X�   l        UR*                  X�   l        UR,                  X�   l        UR$                  X�   l        GMg  XÉU'   UR#                  UR                  5       5        GM�     UR                   Vs/ s H  oÌR                  U;  d  M  UPM     nn[/        U5      S:”  aê  U HÌ  nUR                  U;   d  M  U R                  R                  UR                  5      nU R                  R1                  XÚS9nU R                  SU< SU< S35        U R!                  SX!UR                  XÙU   R                  4-  S5      (       d#  U R                  SUR                  XýX!4-  5          g SnXül        MÎ     U(       a  [        US S  S S9US S & U(       dU  U R                  SU< SU< S35        U R!                  SU< SU< S3S5      (       d  U R                  SU< SU< S35        g [/        U5      Ul        Xël        [5        U5      n[6        R8                  " 5       nUUl        [6        R<                  " U[6        R>                  U5      UU'   U RA                  US[B        RD                  -  SS/SU-  5      (       a  U R                  SU< SU< S35        g g s  snf ) NFc                 ó   • U R                   $ r»   ©r-  ©r÷   s    r#   Ú<lambda>Ú:dbcheck.err_replmetadata_incorrect_attid.<locals>.<lambda>2  s   € °q·w²wrÃ   )Úkeyz
%s: 0x%08xz(ERROR: duplicate attributeID values for r=  rò  r´  zLFix %s on %s by removing the duplicate value 0x%08x for %s (keeping 0x%08x)?rc   z5Not fixing duplicate value 0x%08x for %s in %s on %s
Tr   rt  z'ERROR: incorrect attributeID values in zEFix %s on %s by replacing incorrect value 0x%08x for %s (new 0x%08x)?rd   zANot fixing incorrect value 0x%08x with 0x%08x for %s in %s on %s
c                 ó   • U R                   $ r»   r  r  s    r#   r  r  i  s   € ÀÇÂrÃ   z&ERROR: unsorted attributeID values in r²  z by sorting the attribute list?re   r³  r  rö  z#local_oid:1.3.6.1.4.1.7165.4.3.25:0r¶  r·  rÀ  r¸  )#r	   r   r(  r„   rv  ry   r)  rK  r*  Úreversedr  r-  r@   rw  rL  rÈ   rå   rÌ   r+  rÐ  r,  rÑ  r9  r    rx  Úcountr
   rr   rì   r¯   rí   rî   rï   r   rè  )r§   r¯   rƒ  rò  rz  r6  rB   ry  Úremove_attidÚhash_attr|  r)  r÷   r}  Únew_listr~  rü  r…  s                     r#   Ú err_replmetadata_incorrect_attidÚ(dbcheck.err_replmetadata_incorrect_attid#  sÃ  € Üœ(×;Ñ;Ø(ó*ˆàˆä“%ˆÜ“uˆØˆà—~‘~ d§n¡nÓ5ˆà�h‰hˆô ˜3Ÿ9™9¡Q˜<Ñ->Ñ?ˆŒ	ô ˜#Ÿ)™)×$ˆAÜ�, "§g¡g Ñ.Ô/Ø×#Ñ#×@Ñ@ÀÇÁÓIˆCØ�y‰y‹{˜gÔ%Ø—’ÓZ]Ó_cÓegÐhÔiØ×'Ñ'Ð(vØ+/°Q·W±W¸cÈCÁ=×CVÑCVÐ*Wñ)Xà(J÷Lñ Lð —K‘KÐ XØ#$§7¡7¨C°rÐ":ñ!;ô <áØ�Ø× Ñ  §¡Ô)ð —;‘; ¡×!8Ñ!8Ó8ð
 -.¯I©I�H‘MÔ)Ø<=×<UÑ<U�H‘MÔ9Ø>?×>YÑ>Y�H‘MÔ;Ø45×4EÑ4E�H‘MÔ1Ø./¯k©k�H‘MÔ+ò à�S‰MØ�K‰K˜Ÿ	™	›×$ñ? %ðD  #ŸyšyÓHšy˜!¯G©G¸<Ñ,G—A™yˆÐHä�Ó Ó!Û�Ø—7‘7˜lÕ*Ø×+Ñ+×HÑHÈÏÉÓQ�CØ$(×$5Ñ$5×$TÑ$TÐUXÐ$TÐ$t�MØ—K’KÓW[Ó]_Ð `ÔaØ×+Ñ+Ð,sØ/3¸¿¹À#ÐPSÁ}×GZÑGZÐ.[ñ-\Ø]{÷}ñ }àŸ™Ð$hØ'(§w¡w°ÀDÐ&Mñ%Nô OáØ�CØ+–Gñ ö ä$ X©a [Ñ6GÑH�™�ö Ø�KŠKËdÓTVÐWÔXØ×#Ò#Û'+«Rð%1Ø2S÷Uñ Uà—’³t»RÐ@ÔAØô ˜“MˆŒ	ØŒ	Ü˜D“>ˆä�{Š{‹}ˆØˆŒÜ×'Ò'¨´#×2FÑ2FÈÓMˆˆT‰
Ø�>‰>˜$Ð!1´D×4_Ñ4_Ñ!_Ø!FØ!Fð!Hð 7¸Ñ=÷?ñ ?ð �KŠK»DÃ"ÐEÕFð	?ùòI Is   È)QÉ Qc                 óÞ  • SnSU;  a   U R                  SUR                  -  5        SnSU;  d#  [        US   S   5      R                  5       S:X  a   U R                  SUR                  -  5        SnS	U;  a   U R                  S
UR                  -  5        SnSU;  d#  [        US   S   5      R                  5       S:X  a   U R                  SUR                  -  5        SnSU;   a   U R                  SUR                  -  5        SnSU;   aC  [        US   S   5      R                  5       S:X  a   U R                  SUR                  -  5        SnSU;  d<  [	        US   5      S:w  d*  [        US   S   5      S:w  d  [        US   S   5      S:w  a   U R                  SUR                  -  5        SnSU;  d  [        US   S   5      S:w  a   U R                  SUR                  -  5        SnU$ )NFÚdescriptionz>ERROR: description not present on Deleted Objects container %sTÚshowInAdvancedViewOnlyr   ÚFALSEzIERROR: showInAdvancedViewOnly not present on Deleted Objects container %sÚobjectCategoryzAERROR: objectCategory not present on Deleted Objects container %sÚisCriticalSystemObjectzIERROR: isCriticalSystemObject not present on Deleted Objects container %sÚ
isRecycledz9ERROR: isRecycled present on Deleted Objects container %srE  z8ERROR: isDeleted not set on Deleted Objects container %srž  rË  Útopr6   Ú	containerzBERROR: objectClass incorrectly set on Deleted Objects container %sÚsystemFlagsú-1946157056zBERROR: systemFlags incorrectly set on Deleted Objects container %s)rÈ   r¯   rŽ   rN  r    )r§   r¢  Úfaultys      r#   Úis_deleted_deleted_objectsÚ"dbcheck.is_deleted_deleted_objects‚  sô  € ØˆØ Ó#Ø�K‰KÐXÐ[^×[aÑ[aÑaÔbØˆFØ#¨3Ó.´#°cÐ:RÑ6SÐTUÑ6VÓ2W×2]Ñ2]Ó2_ÐcjÓ2jØ�K‰KÐcÐfi×flÑflÑlÔmØˆFØ 3Ó&Ø�K‰KÐ[Ð^a×^dÑ^dÑdÔeØˆFØ#¨3Ó.´#°cÐ:RÑ6SÐTUÑ6VÓ2W×2]Ñ2]Ó2_ÐcjÓ2jØ�K‰KÐcÐfi×flÑflÑlÔmØˆFØ˜3ÓØ�K‰KÐSÐVY×V\ÑV\Ñ\Ô]ØˆFØ˜#Ó¤# c¨+Ñ&6°qÑ&9Ó":×"@Ñ"@Ó"BÀgÓ"MØ�K‰KÐRÐUX×U[ÑU[Ñ[Ô\ØˆFØ Ó#¬¨C°Ñ,>Ó(?À1Ó(DÜ(+¨C°Ñ,>¸qÑ,AÓ(BÀeÓ(KÜ(+¨C°Ñ,>¸qÑ,AÓ(BÀkÓ(QØ�K‰KÐ\Ð_b×_eÑ_eÑeÔfØˆFØ Ó#¤s¨3¨}Ñ+=¸aÑ+@Ó'AÀ]Ó'RØ�K‰KÐ\Ð_b×_eÑ_eÑeÔfØˆFØˆrÃ   c                 óþ  • [         R                  " 5       nUR                  =Ul        nSU;  a)  [         R                  " S[         R                  S5      US'   SU;  a)  [         R                  " S[         R                  S5      US'   SU;  a6  [         R                  " SU R
                  -  [         R                  S5      US'   SU;  a)  [         R                  " S[         R                  S5      US'   SU;   a)  [         R                  " S[         R                  S5      US'   [         R                  " S[         R                  S	5      US	'   [         R                  " S
[         R                  S5      US'   [         R                  " SS/[         R                  S5      US'   U R                  SU-  S5      (       d  U R                  SU-  5        g U R                  US/SU-  5      (       a  U R                  SU-  5        g g )Nr  zContainer for deleted objectsr  rH  r  zCN=Container,%sr  r  rE  r  r  r  r  rž  zAFix Deleted Objects container %s by restoring default attributes?rf   ú.Not fixing missing/incorrect attributes on %s
rÚ   z+Failed to fix Deleted Objects container  %sz%Fixed Deleted Objects container '%s'
)
rr   rì   r¯   rí   rî   ry   r@  rå   rÈ   rï   )r§   r¢  r…  r¯   s       r#   Úerr_deleted_deleted_objectsÚ#dbcheck.err_deleted_deleted_objects   sÑ  € Ü�{Š{‹}ˆØ—v‘vÐˆŒ�"à Ó#Ü"%×"4Ò"4Ð5TÔVY×VjÑVjÐlyÓ"zˆD�ÑØ#¨3Ó.Ü-0×-?Ò-?ÀÌ×H\ÑH\Ð^vÓ-wˆDÐ)Ñ*Ø 3Ó&Ü%(×%7Ò%7Ð8IÈDÏNÉNÑ8ZÔ\_×\pÑ\pð  sCó  &DˆDÐ!Ñ"Ø#¨3Ó.Ü-0×-?Ò-?ÀÌ×H\ÑH\Ð^vÓ-wˆDÐ)Ñ*Ø˜3ÓÜ!$×!3Ò!3°F¼C×<OÑ<OÐQ]Ó!^ˆD�Ñä×.Ò.¨v´s×7KÑ7KÈ[ÓYˆˆ[ÑÜ!×0Ò0°Ä×@TÑ@TÐVcÓdˆˆ]ÑÜ!×0Ò0°%¸Ð1EÄs×G[ÑG[Ð]jÓkˆˆ]Ñà×ÑÐ cØ#%ñ!'Ø(E÷Gñ Gà�K‰KÐIÈRÑPÔQØà�>‰>˜$  ØGÈ"ÑL÷Nñ Nà�K‰KÐ@ÀBÑGÕHðNrÃ   c                 óh  • [         R                  " 5       nX$l        U R                  R	                  5       nU R                  R                  5       (       a%  U R                  SU< SUR                  < S35        g U R                  SUR                  -  S5      (       d  U R                  SUR                  -  5        g [         R                  " U[         R                  U5      XC'   U R                  U/ SU< SUR                  < 35      (       a$  U R                  S	U< SUR                  < 35        g g )
Nr³  rÜ  z for the RODCz-Add yourself to the replica locations for %s?r�   r   zFailed to add ú for r…  )rr   rì   r¯   r>   r{   Úam_rodcrÈ   rå   rí   rI  rï   )r§   r¢  Ú	cross_refrƒ  r…  Útargets         r#   Úerr_replica_locationsÚdbcheck.err_replica_locations¼  sâ   € Ü�{Š{‹}ˆØŒØ—‘×-Ñ-Ó/ˆà�:‰:×Ñ×ÑØ�KŠK»4ÀÇÄÐHÔIØà×ÑÐ OØ#&§6¡6ñ!+Ø,C÷Eñ Eà�K‰KÐIÈSÏVÉVÑTÔUØä×'Ò'¨´×0@Ñ0@À$ÓGˆ‰
Ø�>‰>˜$¡ÃÀsÇvÃvÐ$N×OÑOØ�KŠK«T°3·6³6Ð:Õ;ð PrÃ   c                 ó¸   • XR                   R                  :X  a  gXR                  :X  a  gXR                  :X  a  gXR                  :X  a  gXR
                  :X  a  gg)NTF)r>   rt   ru   rw   ry   rz   rg  s     r#   Úis_fsmo_roleÚdbcheck.is_fsmo_roleÎ  sN   € Ø—‘×%Ñ%Ó%ØØ×'Ñ'Ó'ØØ—‘ÓØØ—‘ÓØØ—‘ÓØàrÃ   c                 óB  • SnU R                   R                  U5      nX:X  a`  U[        R                  -  n U R                   R	                  UR                  5       [        R                  / S/S9  U[        R                  -  nU R                  bF  [        U5      U R                   Vs/ s H  n[        U5      PM     sn;   a  U[        R                  -  nU$ ! [        R                   a-  nUR                  u  pVU[        R                  :w  a  e  S nAN‘S nAff = fs  snf )Nr   r×   rÅ   )r>   rf  r   ÚINSTANCE_TYPE_IS_NC_HEADr‹   rÒ  rr   rŒ   ÚINSTANCE_TYPE_NC_ABOVEr�   r�   r‘   r•   rŽ   ÚINSTANCE_TYPE_WRITE)r§   r¯   Úinstancetyper¿   Úe4r¬   r­   Úxs           r#   Úcalculate_instancetypeÚdbcheck.calculate_instancetypeÜ  sï   € ØˆØ—*‘*×(Ñ(¨Ó,ˆØ‹=ØœD×9Ñ9Ñ9ˆLð<Ø—
‘
×!Ñ! r§y¡y£{¼#¿.¹.ÐPRÐ^oÐ]pÐ!Ñqð ¤× ;Ñ ;Ñ;�Ø�>‰>Ñ%¬#¨g«,È4Ï>Ê>Ó:ZÊ>Àa¼3¸q¾6É>Ñ:ZÓ*ZØœD×4Ñ4Ñ4ˆLàÐøô —<‘<ó Ø!Ÿw™w‘�Øœ3×1Ñ1Ó1Øô 2ûðüò ;[s   ·9C Â(DÃDÃ,#DÄDc           	      óô   • U R                    Hc  u  p#X:X  d  M  [        R                  " U R                  R	                  5       5      n[        [        R                  U" UU R                  S95      s  $    [        e)Nrß   )	r~   r   r�   r>   r“   r	   rŸ  r‡   rš   )r§   r¯   Úsd_dnÚdescriptor_fnrû   s        r#   Úget_wellknown_sdÚdbcheck.get_wellknown_sdî  sg   € Ø&*×&8Ô&8Ñ"ˆUØ�{Ü%×-Ò-¨d¯j©j×.GÑ.GÓ.IÓJ�
Ü!¤(×"5Ñ"5Ù"/°
Ø9=¿¹ñ#HóIò Iñ '9ô ˆrÃ   c                 óü  ^^	• Uc  S/mO[        U5      m[        S T 5       5      m	UU	4S jnST	;   d(  ST	;   d"  UR                  5       R                  5       T	;   a"  TR	                  S5        T	R                  S5        ST	;   a"  UR                  5       SS4 H  nU" U5        M     S	nST	;   a  S
nO2T H,  nU R                  U5      u  pgUS:X  a  M  US-  (       a  M*  S
n  O   U(       a  U" S5        U" S5        TT	4$ )zÕA helper function for check_object() that calculates the list of
attributes that need to be checked, and returns that as a list
in the original case, and a set normalised to lowercase (for
easy existence checks).
Ú*c              3   ó@   #   • U  H  oR                  5       v •  M     g 7fr»   )rL  )Ú.0r3  s     r#   Ú	<genexpr>Ú/dbcheck.find_checkable_attrs.<locals>.<genexpr>	  s   é € Ð0ª% Q—w‘w—y�yª%ùs   ‚c                 ó�   >• U R                  5       T;  a1  TR                  U 5        TR                  U R                  5       5        g g r»   )rL  r   rÌ   )Úar-   Úlc_attrss    €€r#   Úadd_attrÚ.dbcheck.find_checkable_attrs.<locals>.add_attr	  s3   ø€ Ø�w‰w‹y Ó(Ø—‘˜Q”Ø—‘˜QŸW™W›YÕ'ð )rÃ   r¯   ÚdistinguishednameÚnamerE  r  FTr   r6   rF  r  )rY  r„   rè  rL  r   rÌ   r:  )
r§   r¯   rÇ   rD  rB  Úneed_replPropertyMetaDatar8  rv  r-   rC  s
           @@r#   Úfind_checkable_attrsÚdbcheck.find_checkable_attrsø  s  ù€ ð Ñ"Ø�E‰Eä˜Ó)ˆEäÑ0©%Ó0Ó0ˆö	(ð
 �HÓØ 8Ó+Ø�O‰OÓ×#Ñ#Ó%¨Ó1Ø�L‰L˜Ô Ø�L‰L˜Ô à�XÓØ—o‘oÓ'Ø!Ø#ó%�ñ ˜–ñ%ð
 %*Ð!Ø�(‹?Ø(,Ñ%ã�Ø ×AÑAÀ!ÓD‘	�Ø˜Q“;ÙØ˜A—:ÙØ,0Ð)Ùñ ö %ÙÐ+Ô,á�Ôà�hˆÐrÃ   c           
      ó(+  • U R                   (       a  U R                  SU-  5        U R                  X5      u  p4 SnU[        R                  -  nU[        R
                  -  nU[        R                  -  nU[        R                  -  nU R                  R                  U[        R                  SSSSU-  S/US9n[!        U5      S:w  a  U R                  SU-  5        gUS   n
Sn[#        5       n[#        5       nSnU R                  R%                  U
R&                  5      n U R)                  U[*        R,                  R.                  5      nS
nS
nS
nSnSnS
nU
 Hq  nUR3                  5       S:X  a  [5        U
U   S   5      S:w  a  SnUR3                  5       S:X  a  [7        U
U   S   5      nUR3                  5       S:X  d  Mi  U
U   S   nMs     U(       aP  U(       aI  U R9                  UU5      (       a  US-  nU R;                  UU5        U$ U R=                  UU5      (       a  U$ U
 GHb  nUS:X  d  US:X  a  M  UR3                  5       S:X  a  SnUR3                  5       S:X  ao  [!        U
U   5      S:w  aL  U =R>                  S-  sl        U R                  S[!        U
U   5      U[5        U
R&                  5      4-  5        O[5        U
U   S   5      nUR3                  5       [5        U
R&                  RA                  5       5      R3                  5       :X  aq  Un[!        U
U   5      S:w  aL  U =R>                  S-  sl        U R                  S[!        U
U   5      U[5        U
R&                  5      4-  5        O[5        U
U   S   5      nUR3                  5       S:X  að  U RC                  XU   S   5      (       a  US-  nU RE                  UUU
U   S   5         U RG                  XU   S   5      u  nnn[!        U5      [!        U5      :  d  [!        U5      S:”  d  [K        U5      U:w  a   US-  nU RM                  UUU
U   S   U5        OAUS   S:w  a8  U =R>                  S-  sl        U R                  SU< S[5        U5      < S35        GMc  UR3                  5       S:X  Ga   U RO                  X5      u  nnUb  U RQ                  UUU5        US-  nGMª  URR                  b  URT                  c  U RW                  UU5        US-  nGMÞ  UU:X  d  U RX                  (       a    U R[                  U5      n[]        [        R^                  U
U   S   5      nSnU RX                  (       d  Sn[a        UU[        Rb                  " U R                  Re                  5       5      US9nUS:w  a  U Rg                  UUU5        US-  nGM•  GM˜  UR3                  5       S:X  aŠ  U R                  Ri                  U Rj                  UU
U   5      n [K        U 5      [K        U
U   5      :w  d  U S   U
U   S   :w  d  U S   U
U   S   :w  a$  U Rm                  UU[o        U
U   5      5        US-  nGM6  UR3                  5       S:X  Ga!  U
U   S   n!U!S :X  a  US-  nU Rq                  U
UU
U   5        GMw  U!S
S! S":X  a  GMƒ  U!S
S# S$:X  a  US-  nU Rs                  U
UU
U   5        GMª  U!S   S:w  aB  U!S%   S:w  a9  U!S&   S:w  a0  U!S'   S:w  a'  U!S(   S:w  a  US-  nU Ru                  U
UU
U   5        GMõ  [!        U!5      S)-  S:w  a  US-  nU Rw                  U
U5        GM!  U!S   S:X  aB  U!S)   S:X  a9  U!S%   S:X  a0  U!S*   S:w  a'  U!S&   S:X  a  US-  nU Ry                  U
UU
U   5        GMl  UR3                  5       S+:X  d  UR3                  5       S,:X  a{  U
U   S   U Rz                  ;   aD  U =R>                  S-  sl        U R                  S-U< S.U
R&                  < S/U
U   S   < S035        O!U Rz                  R}                  U
U   S   5        U
U    H"  n"U"S1:X  d  M  U R                  UU5        US-  nM$      U Rj                  R�                  U5      n#U R‡                  U5      u  n%n&U Rj                  R‰                  U5      n'U'[,        RŠ                  -  (       d>  U'[,        RŒ                  -  (       d&  U%(       d  UR}                  UR3                  5       5        U#[,        RŽ                  [,        R�                  [,        R’                  [        R”                  4;   a  X°R—                  U
UU#5      -  nOÆ[#        5       n(U
U    Hq  n"U(R}                  U"5        U R                  Ri                  U Rj                  UU"/5      n [!        U 5      S:w  d  U S   U":w  d  MV  U R™                  UUU
U   5        US-  n  O   [!        U
U   5      [!        U(5      :w  a'  U R›                  UUU
U   [o        U(5      5        US-  n  OnUR3                  5       S2:X  d  GM  U R�                  U5      n)[!        U
S3   5      S:w  d  [7        U
S3   S   5      U):w  d  GMK  US-  nU RŸ                  U
U)5        GMe     U(       d"  S4U;   d  SU;   a  US-  nU R¡                  U5        S4U;   d  SU;   aœ  Uc<  U =R>                  S-  sl        U R                  S5[5        U
R&                  5      -  5        UcZ  U =R>                  S-  sl        U R                  S6U
R&                  RA                  5       < S[5        U
R&                  5      < S735        UGbX  S
n*SS8/n+U(       a;  U[*        R,                  R¢                  -  (       d  Un*U+S9[,        R¤                  -  /-  n+U*c  U
R&                  R§                  5       n* [        R¨                  " U R                  S:U*-  5      n,U,R«                  SU
R&                  RA                  5       U5        U
R&                  U:X  a  U
R&                  n,U,U
R&                  :w  a  US-  nU R­                  U
U,UUUU+5        O[U
R&                  R¯                  5       U:w  a=  U =R>                  S-  sl        U R                  S;U< S<U< S=U
R&                  < S735        Sn.U(       Gab  U
R&                  U:X  aÂ  S@n/SAn0U R³                  UU/5      n1U1U0:w  a¦  U Rµ                  SB[5        U5      -  SC5      (       af  [        R¶                  " 5       n2UU2l        [        R¸                  " SD[        Rº                  SE5      U2SE'   US-  nU R                  R½                  U2SF/SG9  OU R                  SH[5        U5      -  5        UR¿                  U5       H{  n3U.(       a  U R                  SIU-  5        Sn.US-  nU R                  SJU3-  5        U Rµ                  SKU3-  SL5      (       d  U R                  SMU3-  5        Mi  U RÁ                  U
U35        M}     U RÃ                  U5      (       a(  SNU
;  a"  S4U;   d  SOU;   a  U RÅ                  U
5        US-  n XR                  RÇ                  5       :w  a`  [5        UR§                  5       5      U RÈ                  ;  a9  U R                  R                  UR§                  5       [        R                  SS/SP9nXRÌ                  ;   a2  S4U;   a,  U RÏ                  U
5      (       a  U RÑ                  U
5        US-  nU RÒ                   HÇ  u  n5n$UU5:X  d  M  SSU
;   d  M  STn6U R                  RÕ                  5       (       a  SUn6U6U$;  a$  U R×                  U
U$R&                  U65        US-  nMc  Sn7U$U6    H.  n8[5        U85      U R                  RÙ                  5       :X  d  M,  Sn7M0     U7(       a  M¥  U R×                  U
U$R&                  U65        US-  nMÉ     XRÚ                  :X  aÂ  S4U;   d  SVU;   a¶  SWU
;  a°  US-  nU RÜ                  (       ag  U Rµ                  SXSY5      (       aO  U R                  Rß                  5          U R                  Rá                  5         U R                  Rå                  5         O3U R                  RÕ                  5       (       d  U R                  SZU-  5        XRæ                  :X  Ga  S[S\/n9U R                  R                  U Ræ                  [        R                  U9S]9nU9 Hi  n:U:US   ;  a  M  [7        US   U:   S   5      n;U;S^-	  n<S_U;-  n=U;S:w  d  M4  U=U<:¼  d  M<  U R                  S`U=U<U=U<4-  5        U =R>                  S-  sl        Mk     S[US   ;  a)  U R                  SaU-  5        U =R>                  S-  sl         U R                  Ré                  5       u  n>n<U R                  Re                  5       n?U>U<::  aõ  SbU?U>4-  n@ U R                  R                  ScU@-  [        R                  / S]9nUb±  U R                  SdW@< SeUS   R&                  < SfU< 35        US-  nU Rµ                  SgU@< ShU< Si3Sj5      (       a_  U R                  Rß                  5           U R                  Rë                  5       nAUAU>:¼  a  WAS-   n>OM(  U R                  Rå                  5         O U$ U>S-  n>U>U<::  a  Mõ  U$ U$ ! [        R                   aW  nUR                  u  p‰U[        R                  :X  a/  U R                  (       a  U R                  S	U-  5         S
nAg S
nAge S
nAff = f! [0         a    S
n GNf = f! [0         a     US-  nU RI                  UUU
U   5         GMn  f = f! [0         a     GM€  f = f! [‚         a#  n$U R…                  U
U5        US-  n S
n$A$GM¬  S
n$A$ff = f! [°         a5  n-U =R>                  S-  sl        U R                  S>U* S?35         S
n-A-GNZS
n-A-ff = f! [        R                   a€  n4U4R                  u  p‰U[        R                  :X  aX  U(       a5  U R                  SQU
R&                  -  5        U R                  SR5         S
n4A4GN¬U RË                  U
5        US-  n S
n4A4GNÈe S
n4A4ff = f!   U R                  Rã                  5         e = f! [        R                   a0  n-U-R                  u  p‰U[        R                  :w  a  e S
n S
n-A-GNíS
n-A-ff = f!   U R                  Rã                  5         e = f! [        R                   aB  nBUBR                  u  p‰U R                  SkU	-  5        U =R>                  S-  sl         S
nBABU$ S
nBABff = f)lzcheck one objectúChecking object %sr   rÖ   r×   rÕ   rµ  rØ   )r+   r,   rÆ   r-   z)ERROR: Object %s disappeared during checkNr6   z,ERROR: Object %s failed to load during checkFÚ	isdeletedr  TÚsystemflagsÚreplpropertymetadatar¯   ÚdistinguishedNameÚobjectclassrG  z1ERROR: Not fixing num_values(%d) for '%s' on '%s'z4ERROR: Not fixing incorrect initial attributeID in 'z' on 'z', it should be objectClassÚntsecuritydescriptor)ÚignoreAdditionalACEsr0   rt  Úuserparametersó    é   s                   é   s   IAAgACAAIAAgACAAIAAgé   r  r  é	   rË  r  ÚattributeidÚ	governsidzError: rÜ  rò  z. already exists as an attributeId or governsIdrÃ   r1  rç  r<  z(ERROR: Not fixing missing 'name' on '%s'zERROR: Not fixing missing 'rD  rÚ   rŽ  z
RDN=RDN,%szERROR: Not fixing rÛ  z on 'z#ERROR: could not handle parent DN 'z': skipping RDN checksi0  l   €)¨x1cB& z-Fix isDeleted originating_change_time on '%s'rT   rH  rE  rá   râ   z4Not fixing isDeleted originating_change_time on '%s'zOn object %sz7ERROR: Attribute %s not present in replication metadataz-Fix missing replPropertyMetaData element '%s'rS   z4Not fixing missing replPropertyMetaData element '%s'rÈ  Úfsmoroleowner)r+   r,   rÆ   z'WARNING: parent object not found for %szFNot moving to LostAndFound (tombstone garbage collection in progress?)ÚrepsFromr3   r4   Úridsetreferencesr9   z,Allocate the missing RID set for RID master?r‚   z^No RID Set found for this server: %s, and we are not the RID Master (so can not self-allocate)ÚrIDAllocationPoolÚrIDPreviousAllocationPoolr*   é    l   ÿÿ z!Invalid RID pool %d-%d, %d >= %d!z No rIDAllocationPool found in %sz%s-%dz<SID=%s>zSID r$  z' conflicts with our current RID set in zFix conflict between SID z and RID pool in z by allocating a new RID?rk   zCouldn't get available RIDs: %s)vrA   rÈ   rI  r   rÀ  rÁ  r¹  rº  r>   r‹   rr   rŒ   r�   r�   r‘   rq   r    r„   rf  r¯   rˆ   rÌ  r   rœ   rš   rL  rŽ   r¦   rå  rí  rØ  rÉ   rè  ró  rý  r  r   rK  r  r¯  r½  r   r¡  rÇ  rm   r9  r	   rŸ  r   r�   r“   rÃ  rG  r@   rZ  rY  rï  rõ  rû  r  rþ  rË   rÌ   rA  r  r#  r£  r:  Ú$get_systemFlags_from_lDAPDisplayNameÚDS_FLAG_ATTR_NOT_REPLICATEDÚDS_FLAG_ATTR_IS_CONSTRUCTEDré   ÚDSDB_SYNTAX_OR_NAMEÚDSDB_SYNTAX_STRING_DNr&  rk  rP  r^  r4  rê  rh  Ú#SYSTEM_FLAG_DISALLOW_MOVE_ON_DELETEr�  rÒ  rs   Úset_componenträ  Úget_rdn_valueÚ
ValueErrorrq  rå   rì   rí   rî   r*  Ú
differencer†  r+  rÊ  r�   r…   rØ  r–   r  r!  r˜   r%  r(  r{   r£   r¡   rÏ  Úcreate_own_rid_setrÓ  rÔ  r¤   Úfree_rid_boundsÚallocate_rid)Cr§   r¯   rÇ   Úsearch_attrsrC  r¼  r©   Úe10r¬   r­   r¢  rÐ   Úset_attrs_from_mdÚset_attrs_seenÚgot_objectclassÚnc_dnÚdeleted_objects_dnÚobject_rdn_attrÚobject_rdn_valrà  rE  r  Úrepl_meta_data_valr7  Úlist_attid_from_mdrz  r«  r»  Úwell_known_sdÚ
current_sdrS  rÂ  rM  Ú
userparamsrL  r  r  r8  rw  ÚflagrJ  ré  Ú	parent_dnrÆ   Úexpected_dnry  Úshow_dnÚisDeletedAttIdÚexpectedTimeDoÚoriginatingr…  r}  Úe11Údns_partÚlocationrÛ  ÚlocÚ
pool_attrsÚ	pool_attrÚpoolÚhighÚlowÚnext_free_ridrû   ÚsidÚallocated_ridr$  sC                                                                      r#   rÍ   Údbcheck.check_object)	  s¨  € à�<�<Ø�K‰KÐ,¨rÑ1Ô2ð "&×!:Ñ!:¸2Ó!OÑˆð	ØˆHØœ×.Ñ.Ñ.ˆHØœ×.Ñ.Ñ.ˆHØœ×-Ñ-Ñ-ˆHØœ×-Ñ-Ñ-ˆHà—*‘*×#Ñ#¨´3·>±>à(9Ø(9Ø(8Ø(7¸(Ñ(BØ(<ð.&ð +7ð $ð 8ˆCô" ˆs‹8�q‹=Ø�K‰KÐFÈÑKÔLØØ�!‰fˆØˆÜ›EÐÜ›ˆØˆà—
‘
×&Ñ& s§v¡vÓ.ˆð	&Ø!%×!=Ñ!=¸eÜ>C¿j¹j×>jÑ>jó"lÐð ˆØˆØˆØˆ	ØˆØ!ÐãˆHØ�~‰~Ó ;Ó.Ü�s˜8‘} QÑ'Ó(¨GÓ3Ø $�Ià�~‰~Ó =Ó0Ü! # h¡-°Ñ"2Ó3�à�~‰~ÓÐ#9Õ9Ø%(¨¡]°1Ñ%5Ò"ñ ö Ö+Ø×.Ñ.¨rÐ3E×FÑFØ˜qÑ �Ø×/Ñ/°Ð4FÔGØ"Ð"Ø×(Ñ(¨Ð-?×@Ñ@Ø"Ð"äˆHØ˜4Ó 8Ð/BÓ#BÙà�~‰~Ó =Ó0Ø"&�à�~‰~Ó 6Ó)Ü�s˜8‘}Ó%¨Ó*Ø×)Ò)¨QÑ.Õ)Ø—K‘KÐ SÜ!$ S¨¡]Ó!3°X¼sÀ3Ç6Á6»{Ð Kñ!Lõ Mô  # 3 x¡=°Ñ#3Ó4�Hà�~‰~Ó¤3 s§v¡v×':Ñ':Ó'<Ó#=×#CÑ#CÓ#EÓEØ"*�Ü�s˜8‘}Ó%¨Ó*Ø×)Ò)¨QÑ.Õ)Ø—K‘KÐ SÜ!$ S¨¡]Ó!3°X¼sÀ3Ç6Á6»{Ð Kñ!Lõ Mô &)¨¨X©°qÑ)9Ó%:�Nà�~‰~ÓÐ#9Ó9Ø×:Ñ:¸2À8¹}ÈQÑ?O×PÑPØ 1Ñ$�KØ×;Ñ;¸BÀÈ#ÈhÉ-ÐXYÑJZÔ[ðà×/Ñ/°¸±MÀ!Ñ4DÓEñ JÐ&Ð(:¸Lô Ð(Ó)¬CÐ0BÓ,CÓCÜ˜,Ó'¨!Ó+ÜÐ/Ó0Ð4FÓFØ 1Ñ$�KØ×9Ñ9¸"¸hÈÈHÉÐVWÑHXÐZfÕgð
 *¨!Ñ,°Ó1Ø×-Ò-°Ñ2Õ-ØŸšÛ%-¬s°2®wð%8ô 9ò à�~‰~ÓÐ#9Ô9Ø"&§/¡/°"Ó":‘��YØÑ(Ø×%Ñ% b¨"¨iÔ8Ø 1Ñ$�KÚà—<‘<Ñ'¨2¯<©<Ñ+?Ø×-Ñ-¨b°"Ô5Ø 1Ñ$�KÚàÐ+Ó+¨t×/I×/Ið!Ø(,×(=Ñ(=¸bÓ(A˜ô ",¬H×,?Ñ,?Ø,/°©M¸!Ñ,<ó">�Jð ,1Ð(Ø×5×5Ø/3Ð,ä'¨°zÜ(0×(8Ò(8¸¿¹×9RÑ9RÓ9TÓ(UØ=QñS�Dð ˜r“zØ×1Ñ1°"°mÀTÔJØ# qÑ(˜Ú Úà�~‰~Ó =Ó0Ø!ŸZ™Z×AÑAÀ$×BSÑBSÐU]Ð_bÐckÑ_lÓm�
ô ˜*Ó%¬°°H±Ó)>Ó>Ø  ‘m s¨8¡}°QÑ'7Ó7Ø  ‘n¨¨H©°bÑ(9Ó9Ø×7Ñ7¸¸HÄdÈ3ÈxÉ=ÓFYÔZØ 1Ñ$�KÚà�~‰~ÓÐ#3Ô3Ø  ™]¨1Ñ-�
Ø Ó%Ø 1Ñ$�KØ×1Ñ1°#°xÀÀXÁÔOÚà  �_¨Ó7âà  �_Ð(?Ó?à 1Ñ$�KØ×2Ñ2°3¸À#ÀhÁ-ÔPÚð ! ‘m qÓ(Ø  ‘m qÓ(Ø  ‘m qÓ(Ø  ‘m qÓ(Ø  ‘m qÓ(ð   1Ñ$�KØ×0Ñ0°°hÀÀHÁÔNÚä˜“_ qÑ(¨AÓ-à 1Ñ$�KØ×/Ñ/°°XÔ>Úà  ‘m qÓ(Ø  ‘m qÓ(Ø  ‘m qÓ(Ø  ‘m qÓ(Ø  ‘m qÓ(ð   1Ñ$�KØ×3Ñ3°C¸À3ÀxÁ=ÔQÚà�~‰~Ó =Ó0°H·N±NÓ4DÈÓ4SØ�x‘= Ñ# t×'BÑ'BÓBØ×)Ò)¨QÑ.Õ)Ø—K’KÛ#+¨S¯V¬V°S¸±]À1Ô5Eð!Gõ Hð ×/Ñ/×3Ñ3°C¸±MÀ!Ñ4DÔEð ˜8”}�Ø˜#•:Ø×,Ñ,¨R°Ô:Ø 1Ñ$�KÙñ	 %ðØ!×.Ñ.×RÑRÐS[Ó\�
ð )-×(MÑ(MÈhÓ(WÑ%ˆFÐ%à×$Ñ$×IÑIÈ(ÓSˆDØœ4×;Ñ;×;Øœt×?Ñ?×?ÞØ×"Ñ" 8§>¡>Ó#3Ô4àœd×8Ñ8¼$×:RÑ:RÜ"×8Ñ8¼#¿-¹-ðIó Ið Ÿ}™}¨S°(¸JÓGÑG‘ô ›�à˜xœ=�CØ—J‘J˜s”Oà!%§¡×!EÑ!EÀd×FWÑFWÐYaÐdgÐchÓ!i�JÜ˜:“¨!Ó+¨z¸!©}ÀÕ/CØ×3Ñ3°B¸À#ÀhÁ-ÔPØ# qÑ(˜Ùñ )ô �s˜8‘}Ó%¬¨V«Ó4Ø×-Ñ-¨b°(¸CÀ¹MÌ4ÐPVË<ÔXØ 1Ñ$�KÙà�~‰~Ó >Ö1Ø*.×*EÑ*EÀbÓ*IÐ'Ü�s˜>Ñ*Ó+¨qÓ0´C¸¸NÑ8KÈAÑ8NÓ4OÐSjÖ4jØ 1Ñ$�KØ×/Ñ/°Ð5L×Mñk ön  C¨8£O°}ÈÓ7PØ˜1ÑˆKØ×(Ñ(¨Ô,à�8‹O˜v¨Ó1ØÑØ×%Ò%¨Ñ*Õ%Ø—‘ÐFÌ#ÈcÏfÉfË+ÑVÔWØÑ&Ø×%Ò%¨Ñ*Õ%Ø—’ÈÏÉ×H[ÑH[ÖH]Ô_bÐcf×ciÑciÖ_jÐkÔlàÒØˆIØ)¨9Ð5ˆHÞØ#¤e§j¡j×&TÑ&T×TØ 2�IØÐ-´×0ZÑ0ZÑZÐ[Ñ[�ØÑ ØŸF™FŸM™M›O�	ðNÜ!Ÿfšf T§Z¡Z°ÀÑ1KÓL�ð ×)Ñ)¨!¨S¯V©V×-@Ñ-@Ó-BÀHÔMà—6‘6Ð/Ó/Ø"%§&¡&�Kà #§&¡&Ó(Ø 1Ñ$�KØ×%Ñ% c¨;¸Ø*¨H°hõ@à—V‘V×)Ñ)Ó+¨~Ó=Ø×)Ò)¨QÑ.Õ)Ø—K’KÃ_ÛESØEHÇVÄVð!Mô Nð ˆßØ�v‰vÐ+Ó+Ø!'�ð "5�Ø"×7Ñ7Ð8JÈNÓ[�Ø .Ó0Ø×'Ñ'Ð(WÔZ]Ð^`ÓZaÑ(aÐcv×wÑwÜ"Ÿ{š{›}˜Ø"$˜œÜ,/×,>Ò,>¸vÄs×G[ÑG[Ð]hÓ,i˜˜[Ñ)Ø# qÑ(˜ØŸ
™
×)Ñ)¨$¸-¸Ð)ÒIð Ÿ™Ð$ZÔ]`ÐacÓ]dÑ$dÔeà%×0Ñ0Ð1BÖC�ÞØ—K‘K °Ñ 3Ô4Ø#�GØ˜qÑ �Ø—‘ÐUÐX[Ñ[Ô\Ø×'Ñ'Ð(WÐZ]Ñ(]Ð_q×rÑrØ—K‘KÐ VÐY\Ñ \Ô]ÙØ×!Ñ! # sÖ+ñ Dð ×Ñ˜R× Ñ Ø cÓ)¨s°h«À/ÐU]ÓB]Ø×)Ñ)¨#Ô.Ø˜qÑ �ð	Ø—Z‘Z×/Ñ/Ó1Ó1´c¸"¿)¹)»+Ó6FÈdÏkÉkÓ6YØ—j‘j×'Ñ'¨R¯Y©Y«[ÄÇÁØ2CÐEUÐ1Vð (ð X�ð ×0Ñ0Ó0°S¸H³_Ø×.Ñ.¨s×3Ñ3Ø×0Ñ0°Ô5Ø˜qÑ �à#×2Ô2‰OˆX�sØ�X�~ *°Õ"3Ø6�Ø—:‘:×%Ñ%×'Ñ'Ø=�Hà 3Ó&à×.Ñ.¨s°C·F±F¸HÔEØ 1Ñ$�KÙà�Ø˜xœ=�CÜ˜3“x 4§:¡:×#?Ñ#?Ó#AÕAØ $šñ )÷ �uà×.Ñ.¨s°C·F±F¸HÔEØ 1Ñ$’Kñ'  3ð* ×#Ñ#Ó#à�h‹Ð"4¸Ó"@Ø%¨SÓ0ð   1Ñ$�Kà×)×)à×+Ñ+ð -:à,H÷Jñ Jð !ŸJ™J×8Ñ8Ô:ð&Ø $§
¡
× =Ñ =Ô ?ð !ŸJ™J×9Ñ9Ô;øà!ŸZ™Z×/Ñ/×1Ñ1ØŸ™ð %9à;=ñ%>ô ?ð6 —‘Ô Ø-Ð/JÐKˆJà—*‘*×#Ñ#¨¯©ÄÇÁØ*4ð $ð 6ˆCó (�	Ø C¨¡FÓ*Ùä˜3˜q™6 )Ñ,¨QÑ/Ó0�à˜r‘z�Ø  4Ñ'�à˜1•9 ¨¥Ø—K‘KÐ CØ!$ d¨C°Ð 6ñ!7ô 8à×)Ò)¨QÑ.×)ñ (ð #¨#¨a©&Ó0Ø—‘Ð>ÀÑCÔDØ×%Ò%¨Ñ*Õ%ð7+Ø&*§j¡j×&@Ñ&@Ó&BÑ#�˜tð "ŸZ™Z×6Ñ6Ó8�
Ø# tÓ+Ø! Z°Ð$?Ñ?�Cð#Ø"Ÿj™j×/Ñ/°ZÀ#Ñ5EÜ69·n±nØ68ð 0ð :˜ð ‘ØŸšÛ7:¸CÀ¹F¿I¼IÂrð%Kô Là# qÑ(˜à×+Ò+ó 03³Bð-8ð -G÷	Hñ Hð
 !ŸJ™J×8Ñ8Ô:ð&Ø&*Ø48·J±J×4KÑ4KÓ4M MØ'4¸Ó'EØ8EÈÑ8I¨Ø(-ñ	 '+ð !ŸJ™J×9Ñ9Õ;à!ð Ðð &¨Ñ*˜ðY $ tÕ+ð\ Ðˆ{Ðøô_ �|‰|ó 	ØŸ8™8‰LˆTØ”s×-Ñ-Ó-Ø×&×&Ø—K‘KÐ KÈbÑ PÔQÜÜØûð	ûô* ó 	&ð "&Óð	&ûôB  ó Ø 1Ñ$�KØ×7Ñ7¸¸HÀcÈ(ÁmÔTÛðûôH $ó !Û ð!ûôP ó Ø×*Ñ*¨3°Ô9Ø˜qÑ �ÞûðûôB ó 3Ø×%Ò%¨Ñ*Õ%Ø—‘ÐAÀ)Àð M2ð 2÷ 3ò 3ûð3ûôv �|‰|ó 	ØŸ8™8‰LˆTØ”s×-Ñ-Ó-ÞØ—K‘KÐ IÈSÏVÉVÑ TÔUØ—K‘Kð !N÷ Oò Oð ×+Ñ+¨CÔ0Ø 1Ñ$–Kàûð	ûð|&Ø $§
¡
× =Ñ =Ô ?Ø %ûôR Ÿ<™<ó #Ø'(§v¡v™˜Ø¤3×#9Ñ#9Ó9Ø!Ø"žûð	#ûð<&Ø $§
¡
× =Ñ =Ô ?Ø %ûô_ —<‘<ó +Ø ŸX™X‘
�Ø—‘Ð=ÀÑDÔEØ×%Ò%¨Ñ*×%Ñ%ðh Ðûðo+úsD  ºB AK+ Ä!*AM ÏAM,ÔANá"AN+ï	$AO ù&A=AP ÁA$AR4 ÁF5AT; ÁG:,AS ÁJ&AT ÁJ:AT ÁK+AMÁK?AAMÁMAMÁMAMÁMAM)ÁM(AM)ÁM,%ANÁNANÁN
AN(ÁN'AN(ÁN+
AOÁN5AOÁOAOÁO
APÁO%*APÁPAPÁPAR1ÁP1AAR,ÁRAR,ÁR+AR,ÁR,AR1ÁR4ASÁSATÁS(%ATÁTATÁTAT8ÁT;AVÁU7AVÁVAVc                 ó
  • [         R                  " U R                  S5      nU R                  (       a  U R	                  SU-  5        U R                  R                  U[         R                  S9n[        U5      S:w  a  U R	                  SU-  5        gUS   nSnSU;  a  U R	                  S5        US-   $ [        US   S   5      R                  S	5      (       Gd'  U R	                  S
5        US-  nU R                  S5      (       d  U$ U R                  R                  [         R                  " U R                  US   S   R                  S5      5      [         R                  S/S9n[        [        [        R                  US   S   S   5      5      n[         R                  " 5       nXl        [         R"                  " SU-  [         R$                  S5      US'   U R'                  U/ SSS9(       a  U R	                  S5        U$ )z!check the @ROOTDSE special objectz@ROOTDSErL  )r+   r,   r6   z"Object %s disappeared during checkr   rÇ  z(ERROR: dsServiceName missing in @ROOTDSEz<GUID=z1ERROR: dsServiceName not in GUID form in @ROOTDSEz"Change dsServiceName to GUID form?r2   r  r*   rG  z+Failed to change dsServiceName to GUID formFrã   z"Changed dsServiceName to GUID form)rr   rs   r>   rA   rÈ   r‹   rŒ   r    rŽ   r  r  r   r	   r   rÙ   rì   r¯   rí   rî   rï   )r§   r¯   r©   r¢  rÐ   r„  r+  s          r#   rÎ   Údbcheck.check_rootdseU  s¹  € ä�VŠV�D—J‘J 
Ó+ˆØ�<�<Ø�K‰KÐ,¨rÑ1Ô2Ø�j‰j×Ñ R¬s¯~©~ÐÐ>ˆÜˆs‹8�q‹=Ø�K‰KÐ<¸rÑAÔBØØ�!‰fˆØˆð  #Ó%Ø�K‰KÐBÔCØ ‘?Ð"ä�3�Ñ'¨Ñ*Ó+×6Ñ6°x×@Ò@Ø�K‰KÐKÔLØ˜1ÑˆKØ—<‘<Ð D×EÑEØ"Ð"Ø—*‘*×#Ñ#¬¯ª°·
±
¸CÀÑ<PÐQRÑ<S×<ZÑ<ZÐ[aÓ<bÓ)cÜ*-¯.©.ÀÀð $ð PˆCäœ:¤d§i¡i°°Q±¸Ñ1EÀaÑ1HÓIÓJˆHÜ—’“ˆAØŒDÜ!$×!3Ò!3°KÀ(Ñ4JÜ47×4HÑ4HÈ/ó"[ˆAˆoÑà�~‰~˜a Ð%RÐ]bˆ~ÖcØ—‘Ð@ÔAØÐrÃ   c                 ó@  • [         R                  " 5       n[         R                  " U R                  S5      Ul        [         R
                  " S[         R                  S5      US'   [         R
                  " S[         R                  S5      US'   U R                  U/ SSS9$ )	zre-index the whole databasez@ATTRIBUTESr  Úforce_reindexrÌ   r"  zre-indexed databaseFrã   )	rr   rì   rs   r>   r¯   rí   rI  r@  rï   ©r§   r+  s     r#   Úreindex_databaseÚdbcheck.reindex_databasey  sw   € ä�KŠK‹MˆÜ�vŠv�d—j‘j -Ó0ˆŒÜ×(Ò(¨´×1AÑ1AÀ?ÓSˆˆ%‰Ü×(Ò(¨´×1DÑ1DÀoÓVˆˆ(‰Ø�~‰~˜a Ð%:ÀUˆ~ÐKÐKrÃ   c                 óî   • [         R                  " 5       n[         R                  " U R                  S5      Ul        [         R
                  " S[         R                  S5      US'   U R                  U/ SSS9$ )zOreset @MODULES to that needed for current sam.ldb (to read a very old database)z@MODULESÚ
samba_dsdbz@LISTzreset @MODULES on databaseFrã   )rr   rì   rs   r>   r¯   rí   rî   rï   r•  s     r#   Úreset_modulesÚdbcheck.reset_modulesƒ  sY   € ä�KŠK‹MˆÜ�vŠv�d—j‘j *Ó-ˆŒÜ×'Ò'¨´c×6JÑ6JÈGÓTˆˆ'‰
Ø�~‰~˜a Ð%AÈEˆ~ÐRÐRrÃ   )Qr”   rË   rn   r}   rE   r<   r–   r?   r…   r˜   rZ   ro   rB   rJ   rO   rP   rQ   rK   rI   rS   rV   rX   r   rH   rR   rW   rN   rh   rƒ   rf   rg   rj   ra   r€   r‚   r]   r^   r�   rc   re   rd   rb   r\   rk   rT   rU   ri   rq   ru   r¡   r†   r`   r‡   rw   r™   r—   r|   rl   rD   r[   rG   rF   rL   rM   r=   rp   rm   rz   r¤   r>   r@   ry   r_   r£   r’   r:   rÉ   rA   r~   r•   rC   )
NFFFFFFFFF)FF)T)Fr»   )RÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r¼   r¸   rˆ   rr   r'  rÒ   rÊ   rÈ   r  rå   r%  rï   r2  r:  rA  rP  rZ  r^  rê   rh  rq  rz  rˆ  r‹  r�  r”  rž  r£  r¦  r¬  r³  r½  rÄ  rÊ  rØ  rä  rê  rï  rõ  rû  rþ  r  r  r  r¶  r@  rk  rn  rq  r  r†  r”  rš  r¯  r½  rÃ  rÇ  rØ  rÝ  rå  rí  ró  rý  r   r  r  r!  r(  r+  r4  r9  rI  rÍ   rÎ   r–  rš  Ú__static_attributes__© rÃ   r#   r&   r&   8   sÜ  † Ù)à€OàDIØ8=Ø).Ø',Ø*/Øôyòvð !%¨C×,=Ñ,=ÈØ!ô%òNiòVô(Gòò*ôòò&	òAò>ò>>ò*Nò$Uò.ôIò.SòjIò@Iò Lò$]ò"Mò@EòEò GòFð  04ôHò(Cò&mò"!,òFAò*wòOònòpò iò4\ò
ò?:òBòBd4òLhòT	òò3ò,Bò .ò,ògòRJò"Jò*>ò>4òl  òDò2".òHò(#KòJ
ò]Gò~ò<Iò8<ò$òò$ò/ôbhòXòHLõSrÃ   r&   )%rr   rÌ  rÎ  Úbase64r   r   r   r   Úsamba.dcerpcr   r   Ú	samba.ndrr	   r
   r   Úsamba.samdbr   r   Úsamba.descriptorr   r   r   Ú
samba.authr   r   Úsamba.netcmdr   Úsamba.netcmd.fsmor   Úsamba.colourr   r   r   r   r$   rÑ   r&   r¢  rÃ   r#   Ú<module>r¬     s[   ðó( Û Û ß 'Ý Ý Ý Ý  ß *Ý !Ý Ý !÷ñ ÷
 5Ý %Ý 0ß HÓ HòôP-Sˆfõ P-SrÃ   