+
    4SsiR                        ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	H
t
HtHt ^t^t/ ^Rb^Rb^Rb^R	b^R
b^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb^Rb/ ^Rb^Rb^Rb^Rb^ Rb^!Rb^"Rb^#Rb^$Rb^%R b^&R!b^'R"b^(R#b^)R$b^*R%b^+R&b^,R'bC/ ^-R(b^.R)b^/R*b^0R+b^1R,b^2R-b^3R.b^4R/b^5R0b^6R1b^7R2b^8R3b^9R4b^:R5b^;R6b^<R7b^=R8bC/ ^>R9b^?R:b^@R;b^AR<b^BR=b^CR>b^DR?b^ER@b^FRAb^GRBb^HRCb^IRDb^JREb^KRFb^LRGb^MRHb^NRIbC/ ^ORJb^PRKb^QRLb^RRMb^SRNb^TROb^URPb^VRQb^WRRb^XRSb^YRTb^ZRUb^[RVb^\RWb^]RXb^^RYb^_RZbC/ ^`R[b^aR\b^bR]b^cR^b^dR_b^eR`b^fRab^gRbb^hRcb^iRdb^jReb^kRfb^lRgb^mRhb^nRib^oRjb^pRkbC/ ^qRlb^rRmb^sRnb^tRob^uRpb^vRqb^wRrb^xRsb^yRtb^zRub^{Rvb^}Rwb^~Rxb^Ryb^Rzb^R{b^R|bC^R}^R~^R^R^R^R^R^R^R^R^R^R/Ct]^N]	^S]
^]^]^/t]^]	^]
^]^]^/t^|.t ! R R]4      t ! R R]4      tR# )    N)sd_utils)security)
setup_path)DS_DOMAIN_FUNCTION_2008DS_DOMAIN_FUNCTION_2008_R2DS_DOMAIN_FUNCTION_2012DS_DOMAIN_FUNCTION_2012_R2DS_DOMAIN_FUNCTION_2016z$27a03717-5963-48fc-ba6f-69faa33e70edz$3467dae5-dedd-4648-9066-f48ac186b20az$33b7ee33-1386-47cf-baa1-b03e06473253z$e9ee8d55-c2fb-4723-a333-c80ff4dfbf45z$ccfae63a-7fb5-454c-83ab-0e8e1214974ez$ad3c7909-b154-4c16-8bf7-2c3a7870bb3dz$26ad2ebf-f8f5-44a4-b97c-a616c8b9d09az$4444c516-f43a-4c12-9c4b-b5c064941d61z$436a1a4b-f41a-46e6-ac86-427720ef29f3z$b2b7fb45-f50d-41bc-a73b-8f580f3b636az$1bdf6366-c3db-4d0b-b8cb-f99ba9bce20fz$63c0f51a-067c-4640-8a4f-044fb33f1049z$dae441c0-366e-482e-98d9-60a99a1898ccz$7dd09ca6-f0d6-43bf-b7f8-ef348f435617z$6b800a81-affe-4a15-8e41-6ea0c7aa89e4z$dd07182c-3174-4c95-902a-d64fee285bbfz$ffa5ee3c-1405-476d-b344-7ad37d69cc25z$099f1587-af70-49c6-ab6c-7b3e82be0fe2z$1a3f6b15-55f2-4752-ba27-3d38a8232c4dz$dee21a17-4e8e-4f40-a58c-c0c009b685a7z$9bd98bb4-4047-4de5-bf4c-7bd1d0f6d21dz$3fe80fbf-bf39-4773-b5bd-3e5767a30d2dz$f02915e2-9141-4f73-b8e7-2804662782daz$39902c52-ef24-4b4b-8033-2c9dfdd173a2z$20bf09b4-6d0b-4cd1-9c09-4231edf1209bz$94f238bb-831c-11d6-977b-00c04f613221z$94f238bc-831c-11d6-977b-00c04f613221z$94f238bd-831c-11d6-977b-00c04f613221z$94f238be-831c-11d6-977b-00c04f613221z$94f238bf-831c-11d6-977b-00c04f613221z$94f238c0-831c-11d6-977b-00c04f613221z$eda27b47-e610-11d6-9793-00c04f613221z$eda27b48-e610-11d6-9793-00c04f613221z$eda27b49-e610-11d6-9793-00c04f613221z$eda27b4a-e610-11d6-9793-00c04f613221z$26d9c510-e61a-11d6-9793-00c04f613221z$26d9c511-e61a-11d6-9793-00c04f613221z$ea08c04c-f474-4212-b19e-5e754f9210d4z$4c0672a2-437c-4944-b953-5db8f111d665z$4c022fd1-adab-4d84-a7f1-9580f03da856z$c03b1f37-c240-4910-93c8-1544a452b4b5z$560cf82d-9572-48a3-9024-6f2b56f1f866z$abd97102-88dd-4013-a009-0e2c2f967ff6z$134428a8-0043-48a6-bcda-63310d9ec4ddz$d668ad1f-cedd-4565-ab02-9385926ce4f5z$8f86b825-c322-4101-adc4-579f12d445dbz$9fea28ff-387f-4d57-866d-3893c50f373fz$782370ce-3d38-438d-8b0c-464220a3039dz$002fb291-0d00-4b0c-8c00-fe7f50ce6f8dz$dcb3c95d-deb7-4c51-ad13-43a7d5d06fc7z$ef010a1e-bd88-48c8-a7af-2affd250d77dz$bd3413c0-9559-469b-9f3d-51d7faabd81az$f814097b-3e3d-49ba-8a3a-092c25085f06z$6eb8eaf9-3403-4ba5-8b4b-ce349a4680adz$07e57d28-ad40-44fc-8334-8a0dc119b3f4z$6fd48655-1698-497a-ac8d-8267ce01c80bz$10338d31-2423-4dff-b4b5-ef025144b01fz$a96e2ed5-7a7c-4d5c-9d5d-965eca0051daz$613bd063-e8e9-4a62-8f4c-cda566f7eb6fz$2a858903-5696-4364-b4e5-4cac027ca7a6z$0fc5a978-0059-4b0a-9dc2-9896e8e389a1z$4d753a29-26ac-4d1a-bc80-311f947e4f0az$3b3adbdb-4485-4559-aed8-9811c4bf90e4z$56040c71-fe93-4037-8fe9-1a4d1a283009z$caa2bfad-0cca-483b-8d00-347f943292a8z$2b9e0609-6d75-498a-9727-c9fcc93f0e42z$96541a16-910a-4b66-acde-720a0dff03c7z$429a6334-1a00-4515-bf48-676deb55954az$21ae657c-6649-43c4-bbb3-7f184fdf58c1z$dca8f425-baae-47cd-b424-e3f6c76ed08bz$a662b036-dbbe-4166-b4ba-21abea17f9ccz$9d17b863-18c3-497d-9bde-45ddb95fcb65z$11c39bed-4bee-45f5-b195-8da0e05b573az$4664e973-cb20-4def-b3d5-559d6fe123e0z$2972d92d-a07a-44ac-9cb0-bf243356f345z$09a49cb3-6c54-4b83-ab20-8370838ba149z$77283e65-ce02-4dc3-8c1e-bf99b22527c2z$0afb7f53-96bd-404b-a659-89e65c269420z$c7f717ef-fdbe-4b4b-8dfc-fa8b839fbcfaz$00232167-f3a4-43c6-b503-9acb7a81b01cz$73a9515b-511c-44d2-822b-444a33d3bd33z$e0c60003-2ed7-4fd3-8659-7655a7e79397z$ed0c8cca-80ab-4b6b-ac5a-59b1d317e11fz$b6a6c19a-afc9-476b-8994-61f5b14b3f05z$defc28cd-6cb6-4479-8bcb-aabfb41e9713z$d6bd96d4-e66b-4a38-9c6b-e976ff58c56dz$bb8efc40-3090-4fa2-8a3f-7cd1d380e695z$2d6abe1b-4326-489e-920c-76d5337d2dc5z$6b13dfb5-cecc-4fb8-b28d-0505cea24175z$92e73422-c68b-46c9-b0d5-b55f9c741410z$c0ad80b4-8e84-4cc4-9163-2f84649bcc42z$992fe1d0-6591-4f24-a163-c820fcb7f308z$ede85f96-7061-47bf-b11b-0c0d999595b5z$ee0f3271-eb51-414a-bdac-8f9ba6397a39z$587d52e0-507e-440e-9d67-e6129f33bb68z$ce24f0f6-237e-43d6-ac04-1e918ab04aacz$7f77d431-dd6a-434f-ae4d-ce82928e498fz$ba14e1f6-7cd1-4739-804f-57d0ea74edf4z$156ffa2a-e07c-46fb-a5c4-fbd84a4e5ccez$7771d7dd-2231-4470-aa74-84a6f56fc3b6z$49b2ae86-839a-4ea0-81fe-9171c1b98e83z$1b1de989-57ec-4e96-b933-8279a8119da4z$281c63f0-2c9a-4cce-9256-a238c23c0db9z$4c47881a-f15a-4f6c-9f49-2742f7a11f4bz$2aea2dc6-d1d3-4f0c-9994-66c1da21de0fz$ae78240c-43b9-499e-ae65-2b6e0f0e202az$261b5bba-3438-4d5c-a3e9-7b871e5f57f0z$3fb79c05-8ea1-438c-8c7a-81f213aa61c2z$0b2be39a-d463-4c23-8290-32186759d3b1z$f0842b44-bc03-46a1-a860-006e8527fccdz$93efec15-4dd9-4850-bc86-a1f2c8e2ebb9z$9e108d96-672f-40f0-b6bd-69ee1f0b7ac4z$1e269508-f862-4c4a-b01f-420d26c4ff8cz$e1ab17ed-5efb-4691-ad2d-0424592c5755z$0e848bd4-7c70-48f2-b8fc-00fbaa82e360z$016f23f7-077d-41fa-a356-de7cfdb01797z$49c140db-2de3-44c2-a99a-bab2e6d2ba81z$e0b11c80-62c5-47f7-ad0d-3734a71b8312z$2ada1a2d-b02f-4731-b4fe-59f955e24f71z$b83818c1-01a6-4f39-91b7-a3bb581c3ae3z$bbbb9db0-4009-4368-8c40-6674e980d3c3z$f754861c-3692-4a7b-b2c2-d0fa28ed0b0bz$d32f499f-3026-4af0-a5bd-13fe5a331bd2z$38618886-98ee-4e42-8cf1-d9a2cd9edf8bz$328092fb-16e7-4453-9ab8-7592db56e9c4z$3a1c887f-df0a-489f-b3f2-2d0409095f6ez$232e831f-f988-4444-8e3e-8a352e2fd411z$ddddcf0c-bec9-4a5a-ae86-3cfe6cc6e110z$a0a45aac-5550-42df-bb6a-3cc5c46b52f2z$3e7645f3-3ea5-4567-b35a-87630449c70cz$e634067b-e2c4-4d79-b6e8-73c619324d5ec                       ] tR t^tRtR# )ForestUpdateException N)__name__
__module____qualname____firstlineno____static_attributes__r       5/usr/lib/python3/dist-packages/samba/forest_update.pyr   r      s    r   r   c                      a  ] tR t^t o RtRR ltRR ltR tRR ltR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ForestUpdatez2Check and update a SAM database for forest updatesc                V   ^ RI Hp Wn        W0n        W n        W@n        RV n        V P                  P                  4       V n        V P                  P                  4       V n	        V P                  P                  4       V n        \        P                  ! V4      V n        \        P                  ! VP!                  4       4      V n        V P                  P                  4       V n         V P$                  P'                  R4       T P                  P                  4       T n         T P.                  P'                  R4       / T n        T! \3        R4      T P0                  R7       R	#   \(        P*                   d    \-        R4      hi ; i  \(        P*                   d    \-        R4      hi ; i)
z
:param samdb: LDB database
:param verbose: Show the ldif changes
:param fix: Apply the update if the container is missing
:param add_update_container: Add the container at the end of the change
:raise ForestUpdateException:
)read_ms_markdownFzCN=Operations,CN=ForestUpdatesz+Failed to add forest update container childz)CN=ActiveDirectoryUpdate,CN=ForestUpdatesz#Failed to add revision object childz/adprep/WindowsServerDocs/Forest-Wide-Updates.md)out_dictN) samba.ms_forest_updates_markdownr   samdbfixverboseadd_update_containercheck_update_appliedget_config_basedn	config_dn	domain_dnget_schema_basedn	schema_dnr   SDUtilsr   dom_sidget_domain_sid
domain_sidforestupdate_container	add_childldbLdbErrorr   revision_objectstored_ldifr   )selfr   r   r   r   r   s   &&&&& r   __init__ForestUpdate.__init__   sX    	F
$8!$)!557--/557 ((/"**5+?+?+AB&*jj&B&B&D#	W''112RS  $zz;;=	O  **+VW
 $UV"&"2"2	4 || 	W'(UVV	W || 	O'(MNN	Os   'E# "F #!F!F(Nc                2   V P                   P                  V P                  R.\        P                  R7      p\
        V,          pV'       d   \
        V,          pV^,          pM\        pV P                  We4       \        V,          p\        V^ ,          R,          ^ ,          4      pV'       dh   W8  d`   V P                  '       g   \        RVV3,          4      hV P                   P                  R\        V P                  4      V3,          4       R# R# R# )z
Apply all updates for a given old and new functional level
:param functional_level: constant
:param old_functional_level: constant
:param update_revision: modify the stored version
:raise ForestUpdateException:
revision)baseattrsscopezERevision is not high enough. Fix is set to False.
Expected: %dGot: %dz:dn: %s
changetype: modify
replace: revision
revision: %d
 N)r   searchr-   r+   
SCOPE_BASEfunctional_level_to_max_update
MIN_UPDATEcheck_updates_rangefunctional_level_to_versionintr   r   modify_ldifstr)	r/   functional_levelold_functional_levelupdate_revisionresexpected_update
min_updateexpected_versionfound_versions	   &&&&     r   check_updates_functional_level+ForestUpdate.check_updates_functional_level   s    jjT%9%9'1l#..   J 99IJ78LMJ!OJ#J  =67GHCF:.q12}?888+ -DGWGTGV-V W W JJ"" $ 	D  !#34	$5 6  @?r   c                   V F  pV\         8  g   V\        8  d   \        R4      h^TTu;8:  d   ^W8:  d   M MV P                  V4       KI  ^[Tu;8:  d   ^~8:  d   M MV P                  V4       Kn  ^Tu;8:  d   ^8:  d   M MV P                  V4       K  ^Tu;8:  d   ^8:  d   M MV P                  V4       K  \	        V RV,          4      ! V4       K  	  R# )z
Apply a list of updates which must be within the valid range of updates
:param iterator: Iterable specifying integer update numbers to apply
:raise ForestUpdateException:
Update number invalid.operation_%dN)r:   
MAX_UPDATEr   operation_ldifgetattr)r/   iteratorops   && r   check_updates_iterator#ForestUpdate.check_updates_iterator  s     BJ"z/+,DEER~2~##B'rS##B'!c!##B'!c!##B' nr1226 r   c                   TpV\         8  g   W8  g   V\        8  d   \        R4      hW28:  d   V\        9   d   M^TTu;8:  d   ^W8:  d   M MV P	                  V4       M^[Tu;8:  d   ^~8:  d   M MV P	                  V4       Ma^Tu;8:  d   ^8:  d   M MV P	                  V4       M=^Tu;8:  d   ^8:  d   M MV P	                  V4       M\        V RV,          4      ! V4       V^,          pK  R# )z
Apply a range of updates which must be within the valid range of updates
:param start: integer update to begin
:param end: integer update to end (inclusive)
:raise ForestUpdateException:
rK   rL   N)r:   rM   r   missing_updatesrN   rO   )r/   startendrQ   s   &&& r   r;    ForestUpdate.check_updates_range-  s     :j0@'(@AAi_$rR##B'rS##B'!c!##B'!c!##B' nr1226!GB r   c                   R\         V,          : RV P                  : 2p V P                  P                  V\        P
                  . R7      p\        T4      ^8X  g   Q h\        RT\         T,          3,          4       R#   \        P                   d0   pTP                  w  rVT\        P                  8w  d   h  Rp?R# Rp?ii ; i)zL
:param op: Integer update number
:return: True if update exists else False
zCN=,)r4   r6   r5   NFzSkip Forest Update %u: %sT)
update_mapr)   r   r7   r+   r8   r,   argsERR_NO_SUCH_OBJECTlenprint)r/   rQ   	update_dnrC   enummsgs   &&     r   update_existsForestUpdate.update_existsH  s    
 #-R..$2M2MN		**##*-..*, $ .C 3x1}})RB,@@A || 	JSc,,,		s   ,B   C$B??Cc                    V P                   P                  R\        V,          : R\        V P                  4      : R24       \        RV\        V,          3,          4       R# )zW
Add the corresponding container object for the given update
:param op: Integer update
zdn: CN=rZ   z
objectClass: container
zApplied Forest Update %u: %sN)r   add_ldifr[   r?   r)   r_   r/   rQ   s   &&r   
update_addForestUpdate.update_add\  sJ    
 	

"~~s46679 	: 	,JrN/CCDr   c                   V P                  V4      '       d   R # \        V,          pW P                  9   d   V P                  V,          pMVP                  4       V P                  9   d#   V P                  VP                  4       ,          pMTVP	                  4       V P                  9   d#   V P                  VP	                  4       ,          pM\        RW3,          4      h\        P                  ! VR\        V P                  4      R\        V P                  4      R\        V P                  4      /4      pV P                  '       d   \        RV,          4       \        V4        V P                  P                  V4       V P(                  '       d   V P+                  V4       R# R#   \         P"                   d0   pTP$                  w  rgT\         P&                  8w  d   Th Rp?LfRp?ii ; i)Tz#OPERATION %d: ldif for %s not found	CONFIG_DNFOREST_ROOT_DOMAIN	SCHEMA_DNz!UPDATE (LDIF) ------ OPERATION %dN)rd   r[   r.   lowerupperr   sambasubstitute_varr?   r!   r"   r$   r   r_   r   r>   r+   r,   r\   ERR_ATTRIBUTE_OR_VALUE_EXISTSr   ri   )r/   rQ   guidldifsub_ldifra   rb   rc   s   &&      r   rN   ForestUpdate.operation_ldiff  s}   b!!"~#####D)DZZ\T---##DJJL1DZZ\T---##DJJL1D'(M)+
)3 4 4 ''{/24>>/B/C/24>>/B/:/24>>/B/D E <<<5:;(O	JJ""8, $$$OOB % || 	JSc777		s   &F( (G,=%G''G,c                N    V P                   '       g   \        RV,          4      hR# )zc
Raises an exception if not set to fix.
:param op: Integer operation
:raise ForestUpdateException:
z3Missing operation %d. Fix is currently set to FalseN)r   r   rh   s   &&r   raise_if_not_fixForestUpdate.raise_if_not_fix  s$     xxx'(]`b(bcc r   c                \   V P                  V4      '       d   R # V P                  V4       Rp\        P                  ! V P                  R\        V P                  4      ,          4      pV P                  P                  VRV.R7       V P                  '       d   V P                  V4       R # R # )NY(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)CN=Sam-Domain,%sdefaultSecurityDescriptor	sddl_attradd_acesrd   ry   r+   Dnr   r?   r$   r   update_aces_in_daclr   ri   r/   rQ   acer$   s   &&  r   operation_88ForestUpdate.operation_88      b!!b!iFF4::'9C<O'OP	)))4O475 	* 	: $$$OOB %r   c                \   V P                  V4      '       d   R # V P                  V4       Rp\        P                  ! V P                  R\        V P                  4      ,          4      pV P                  P                  VRV.R7       V P                  '       d   V P                  V4       R # R # )Nr|   CN=Domain-DNS,%sr~   r   r   r   s   &&  r   operation_89ForestUpdate.operation_89  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # Nr   rd   ri   rh   s   &&r   operation_90ForestUpdate.operation_90  3    $$$T-?-?-C-COOB .D$r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_127ForestUpdate.operation_127  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_128ForestUpdate.operation_128  r   r   c                \   V P                  V4      '       d   R # V P                  V4       Rp\        P                  ! V P                  R\        V P                  4      ,          4      pV P                  P                  VRV.R7       V P                  '       d   V P                  V4       R # R # )N7(OA;CIOI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)r}   r~   r   r   r   s   &&  r   operation_129ForestUpdate.operation_129      b!!b!GFF4::'9C<O'OP	)))4O475 	* 	: $$$OOB %r   c                \   V P                  V4      '       d   R # V P                  V4       Rp\        P                  ! V P                  R\        V P                  4      ,          4      pV P                  P                  VRV.R7       V P                  '       d   V P                  V4       R # R # )Nr   r   r~   r   r   r   s   &&  r   operation_130ForestUpdate.operation_130  r   r   c                   V P                  V4      '       d   R # V P                  V4       V P                  P                  RV P                  ,          RR.R7       V P
                  '       d   V P                  V4       R # R # )Nzdn: CN=ad://ext/AuthenticationSilo,CN=Claim Types,CN=Claims Configuration,CN=Services,%s
changetype: modify
replace: msDS-ClaimIsValueSpaceRestricted
msDS-ClaimIsValueSpaceRestricted: FALSE
zrelax:0zprovision:0)controls)rd   ry   r   r>   r!   r   ri   rh   s   &&r   operation_135ForestUpdate.operation_135  sx    b!!b!

   nn	 
 *3M(B 	 	D $$$OOB %r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_11ForestUpdate.operation_11  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_54ForestUpdate.operation_54	  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_79ForestUpdate.operation_79  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_80ForestUpdate.operation_80  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_81ForestUpdate.operation_81  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_82ForestUpdate.operation_82  r   r   c                    V P                   '       d-   V P                  V4      '       g   V P                  V4       R # R # R # r   r   rh   s   &&r   operation_83ForestUpdate.operation_83  r   r   )r   r   r!   r"   r(   r   r)   r-   r   r$   r   r.   r   )FFT)NF)r   r   )r   r   r   r   __doc__r0   rH   rR   r;   rd   ri   rN   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classdictcell__)__classdict__s   @r   r   r      s     <(4T"6H7,6(E# Jd , " 
 
 
 " " &         r   r   )r+   rq   r   samba.dcerpcr   samba.provision.commonr   
samba.dsdbr   r   r   r	   r
   r:   rM   r[   r9   r<   rU   	Exceptionr   objectr   r   r   r   <module>r      s"  &    ! -  

I.I .I .	I
 .I .I .I .I .I .I .I .I .I .I .I  .!I" .#I$ .%I& .'I( .)I* .+I, .-I. ./I0 .1I2 .3I4 .5I6 .7I8 .9I: .;I< .=I> .?I@ .AIB .CID .EIF .GIH .IIJ .KIL .MIN .OIP .QIR .SIT .UIV .WIX .YIZ .[I\ .]I^ ._I` .aIb .cId .eIf .gIh .iIj .kIl .mIn .oIp .qIr .sIt .uIv .wIx .yIz .{I| .}I~ .I@ .AIB .CID .EIF .GIH .IIJ .KIN .OIP .QIR .SIT .UIV .WIZ .[I\ .]I^ ._I` .aIb .cId .eIf .gIh .iIj .kIl .mIn .oIp .qIr .sIt .uIv .wIx .yIz 	/{I| 	/}I~ 	/I@ 	/AIB 	/CID 	/EIF 	/GIH 	/IIJ 	/KIL 	/MIN 	/OIP 	/QIR 	/SIT 	/UIV 	/WIX 	/YIZ 	/[I\ 	/]I^ 	/_I` 	/aIb 	/cId 	/eIf 	/gIh 	/iIj 	/kIl 	/mIn 	/oIp 	/qIr 	/sIt 	/uIx 	/	/	/	/	/	/	/	/	/	/	/	/QI
X RSS"  QRR  %	I 	Y 6 Y r   