+
    i                     P   R t ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIHtH	t	 ^ RI
HtHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RI H!t! ^ R	I"H#t#H$t$ ]PJ                  ! ]&4      t'R
t(R/ /t) ! R R4      t* ! R R]*4      t+ ! R R],]4      t- ! R R4      t.R# )zResolves regions and endpoints.

This module implements endpoint resolution, including resolving endpoints for a
given service and region and resolving the available endpoints for a service
in a specific AWS partition.
N)Enum)UNSIGNED
xform_name)AUTH_TYPE_MAPSHAS_CRTCRT_SUPPORTED_AUTH_TYPES)EndpointProvider)EndpointProviderErrorEndpointVariantError!InvalidEndpointConfigurationErrorInvalidHostLabelErrorMissingDependencyExceptionNoRegionErrorParamValidationError$UnknownEndpointResolutionBuiltInNameUnknownRegionErrorUnknownSignatureVersionError*UnsupportedS3AccesspointConfigurationErrorUnsupportedS3ConfigurationErrorUnsupportedS3ControlArnError&UnsupportedS3ControlConfigurationError)register_feature_id)ensure_booleaninstance_cachez{service}.{region}.{dnsSuffix}	endpointsc                   >   a  ] tR t^7t o RtRR ltR tRR ltRtV t	R# )	BaseEndpointResolverz3Resolves regions and endpoints. Must be subclassed.Nc                    \         h)a  Resolves an endpoint for a service and region combination.

:type service_name: string
:param service_name: Name of the service to resolve an endpoint for
    (e.g., s3)

:type region_name: string
:param region_name: Region/endpoint name to resolve (e.g., us-east-1)
    if no region is provided, the first found partition-wide endpoint
    will be used if available.

:rtype: dict
:return: Returns a dict containing the following keys:
    - partition: (string, required) Resolved partition name
    - endpointName: (string, required) Resolved endpoint name
    - hostname: (string, required) Hostname to use for this endpoint
    - sslCommonName: (string) sslCommonName to use for this endpoint.
    - credentialScope: (dict) Signature version 4 credential scope
      - region: (string) region name override when signing.
      - service: (string) service name override when signing.
    - signatureVersions: (list<string>) A list of possible signature
      versions, including s3, v4, v2, and s3v4
    - protocols: (list<string>) A list of supported protocols
      (e.g., http, https)
    - ...: Other keys may be included as well based on the metadata
NotImplementedError)selfservice_nameregion_names   &&&2/usr/lib/python3/dist-packages/botocore/regions.pyconstruct_endpoint'BaseEndpointResolver.construct_endpoint:   s
    6 "!    c                    \         h)zLists the partitions available to the endpoint resolver.

:return: Returns a list of partition names (e.g., ["aws", "aws-cn"]).
r   )r!   s   &r$   get_available_partitions-BaseEndpointResolver.get_available_partitionsW   s
    
 "!r'   c                    \         h)ar  Lists the endpoint names of a particular partition.

:type service_name: string
:param service_name: Name of a service to list endpoint for (e.g., s3)

:type partition_name: string
:param partition_name: Name of the partition to limit endpoints to.
    (e.g., aws for the public AWS endpoints, aws-cn for AWS China
    endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc.

:type allow_non_regional: bool
:param allow_non_regional: Set to True to include endpoints that are
     not regional endpoints (e.g., s3-external-1,
     fips-us-gov-west-1, etc).
:return: Returns a list of endpoint names (e.g., ["us-east-1"]).
r   )r!   r"   partition_nameallow_non_regionals   &&&&r$   get_available_endpoints,BaseEndpointResolver.get_available_endpoints^   s
    & "!r'    N)awsF)
__name__
__module____qualname____firstlineno____doc__r%   r)   r.   __static_attributes____classdictcell____classdict__s   @r$   r   r   7   s     =":"" "r'   r   c                      a  ] tR t^tt o RtRR.tRR ltRR ltR tRR l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V tR# )EndpointResolverz7Resolves endpoints based on partition endpoint metadatazaws-isoz	aws-iso-bc                B    RV9  d   \        R4      hWn        W n        R# )z
:type endpoint_data: dict
:param endpoint_data: A dict of partition data.

:type uses_builtin_data: boolean
:param uses_builtin_data: Whether the endpoint data originates in the
    package's data directory.

partitionsz%Missing "partitions" in endpoint dataN)
ValueError_endpoint_datauses_builtin_data)r!   endpoint_datarB   s   &&&r$   __init__EndpointResolver.__init__y   s$     },DEE+!2r'   c                    V P                   R ,           F3  pVR,          V8w  d   K  VR,          pW9  d   K$  WA,          R,          u # 	  R# )r?   	partitionservicesr   N)rA   )r!   r"   r,   rG   rH   s   &&&  r$   get_service_endpoints_data+EndpointResolver.get_service_endpoints_data   sK    ,,\::I%7 ,H+)+66 ;r'   c                n    . pV P                   R ,           F  pVP                  VR,          4       K  	  V# )r?   rG   )rA   append)r!   resultrG   s   &  r$   r)   )EndpointResolver.get_available_partitions   s5    ,,\::IMM)K01 ;r'   Nc                   . pV P                   R ,           F  pVR,          V8w  d   K  VR,          pW9  d   K$  Wq,          R,          pV Fv  p	WR,          9   p
V'       d>   V
'       d6   V P                  W,          V4      pV'       d   VP                  V	4       KQ  KS  V'       g   V
'       g   Ke  VP                  V	4       Kx  	  K  	  V# )r?   rG   rH   r   regions)rA   _retrieve_variant_datarL   )r!   r"   r,   r-   endpoint_variant_tagsrM   rG   rH   service_endpointsendpoint_nameis_regional_endpointvariant_datas   &&&&&       r$   r.   (EndpointResolver.get_available_endpoints   s     ,,\::I%7 ,H+ ( 6{ C!2'4)8L'L$(-A#'#>#>)8:O$L $m4 $'+?+?MM-0 "3 ;$ r'   c                    V P                   R ,           Fc  pVR,          V8X  g   K  V'       d@   V P                  VP                  R4      V4      pV'       d   RV9   d   VR,          u # KX  KZ  VR,          u # 	  R# )r?   rG   defaults	dnsSuffixN)rA   rQ   get)r!   r,   rR   rG   variants   &&&  r$   get_partition_dns_suffix)EndpointResolver.get_partition_dns_suffix   s{     ,,\::I%7("99!j13HG ;'#9&{33 $:w %[11 ; r'   c                   VR 8X  d   V'       d   Vf   RpVeM   RpV P                   R,           F  pVR,          V8X  g   K  TpK  	  Ve   V P                  VVVVVR4      pV# R# V P                   R,           FF  pV'       d   VR,          V P                  9   d   K%  V P                  VVVVV4      pV'       g   KD  Vu # 	  R# )s3Nz	us-east-1r?   rG   T)rA   _endpoint_for_partition!_UNSUPPORTED_DUALSTACK_PARTITIONS)	r!   r"   r#   r,   use_dualstack_endpointuse_fips_endpointvalid_partitionrG   rM   s	   &&&&&&   r$   r%   #EndpointResolver.construct_endpoint   s     D &#%K%"O!00>>	[)^;&/O ? *55# *%  ,,\::I%+&99: 11&!F v ;r'   c                    V P                   R ,           F%  pV P                  W!4      '       g   K  VR,          u # 	  \        VRR7      h)r?   rG   z,No partition found for provided region_name.)r#   	error_msg)rA   _region_matchr   )r!   r#   rG   s   && r$   get_partition_for_region)EndpointResolver.get_partition_for_region   sK    ,,\::I!!)99 -- ; !#D
 	
r'   c                   VR ,          pV'       d%   WpP                   9   d   RV R2p\        R.VR7      hVR,          P                  V\        4      p	Vf   RV	9   d   V	R,          pM
\	        4       hR VRVR	V	R
VRVRV/p
W9R,          9   d   V P
                  ! R/ V
B # V P                  W4      '       g	   V'       d   V	P                  R4      pV	P                  RR4      pV'       d7   V'       g/   \        P                  RVVV4       WR
&   V P
                  ! R/ V
B # \        P                  RVV4       V P
                  ! R/ V
B # R# )rG   z4Dualstack endpoints are currently not supported for z
 partition	dualstacktagsrh   rH   NpartitionEndpointr"   service_datarT   rc   rd   r   isRegionalizedTz'Using partition endpoint for %s, %s: %sz*Creating a regex based endpoint for %s, %sr0   )	rb   r   r[   DEFAULT_SERVICE_DATAr   _resolveri   LOGdebug)r!   rG   r"   r#   rc   rd   force_partitionr,   rh   rq   resolve_kwargspartition_endpointis_regionalizeds   &&&&&&&      r$   ra   (EndpointResolver._endpoint_for_partition   sp    #;/""H"HH&'z3  '[MYOO !,00.
 "l2*+>?#o% LL[$&<!2
 {33==2>22 i55!-!1!12E!F*../?FO!/		= &	 3E/}}6~66II<
 ==2>22% :Ir'   c                    W!R ,          9   d   R# RV9   d-   \         P                  ! VR,          4      P                  V4      # R# )rP   TregionRegexF)recompilematch)r!   rG   r#   s   &&&r$   ri   EndpointResolver._region_match=  s:    I..I%::i67==kJJr'   c                    VP                  R . 4      pV F7  p\        VR,          4      \        V4      8X  g   K%  VP                  4       pVu # 	  R# )variantsro   N)r[   setcopy)r!   rC   ro   r   r\   rM   s   &&&   r$   rQ   'EndpointResolver._retrieve_variant_dataD  sC     $$Z4G76?#s4y0   r'   c                n    . pV'       d   VP                  R 4       V'       d   VP                  R4       V# )rm   fips)rL   )r!   rc   rd   ro   s   &&& r$   _create_tag_list!EndpointResolver._create_tag_listK  s*    !KK$KKr'   c                x    / pW#V3 F/  pV P                  Wa4      pV'       g   K  V P                  Wu4       K1  	  V# r1   )rQ   _merge_keys)r!   ro   rC   service_defaultspartition_defaultsrM   r   r\   s   &&&&&   r$   _resolve_variant!EndpointResolver._resolve_variantS  sD     &:LMH11(AGw  1 N r'   c                   VP                  R / 4      P                  V/ 4      pVP                  R4      '       d   \        P                  RV4       VP                  R/ 4      pVP                  R/ 4      p	V P                  WV4      p
V
'       d@   V P	                  WW4      pV/ 8X  d   RV RV 2p\        WR7      hV P                  W{4       MTpRV9  d   VR,          VR&   VR,          VR&   WKR	&   V P                  W4       V P                  W4       V P                  VVR
,          VVVR,          4      VR
&   RV9   d'   V P                  VVR,          VVVR,          4      VR&   V# )r   
deprecatedz5Client is configured with the deprecated endpoint: %srY   zEndpoint does not exist for z in region rn   rZ   rG   endpointNamehostnamesslCommonName)r[   ru   warningr   r   r   r   _expand_template)r!   rG   r"   rq   rT   rc   rd   rC   r   r   ro   rM   rh   s   &&&&&&&      r$   rt   EndpointResolver._resolve]  s    %((b9==2
 \**KKG
 (++J;&]]:r:$$%;O**%5F |2<. A!!.1  +JJ]3"F f$"+K"8F;'4{!.~ 	)2+4!22:;
z f$&*&;&;'{#'F?# r'   c                <    V F  pW29  g   K  W,          W#&   K  	  R # r1   r0   )r!   	from_datarM   keys   &&& r$   r   EndpointResolver._merge_keys  s    C 'n r'   c                (    VP                  W4VR 7      # ))serviceregionrZ   )format)r!   rG   templater"   rT   rZ   s   &&&&&&r$   r   !EndpointResolver._expand_template  s      )  
 	
r'   )rA   rB   )F)r2   )r2   FNr1   )NNFF)r3   r4   r5   r6   r7   rb   rD   rI   r)   r.   r]   r%   rj   ra   ri   rQ   r   r   rt   r   r   r8   r9   r:   s   @r$   r=   r=   t   sg     A)2K(@%3780d
?3B@D-

 
r'   r=   c                   J    ] 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# )EndpointResolverBuiltinsi  zAWS::RegionzAWS::UseFIPSzAWS::UseDualStackzAWS::STS::UseGlobalEndpointzAWS::S3::UseGlobalEndpointzAWS::S3::AcceleratezAWS::S3::ForcePathStylezAWS::S3::UseArnRegionzAWS::S3Control::UseArnRegionz'AWS::S3::DisableMultiRegionAccessPointszSDK::EndpointzAWS::Auth::AccountIdz AWS::Auth::AccountIdEndpointModer0   N)r3   r4   r5   r6   
AWS_REGIONAWS_USE_FIPSAWS_USE_DUALSTACKAWS_STS_USE_GLOBAL_ENDPOINTAWS_S3_USE_GLOBAL_ENDPOINTAWS_S3_ACCELERATEAWS_S3_FORCE_PATH_STYLEAWS_S3_USE_ARN_REGIONAWS_S3CONTROL_USE_ARN_REGIONAWS_S3_DISABLE_MRAPSDK_ENDPOINT
ACCOUNT_IDACCOUNT_ID_ENDPOINT_MODEr8   r0   r'   r$   r   r     sZ    J "L , #@ ">-7 4 $B C"L'JAr'   r   c                      a  ] tR tRt o RtRR ltR tR tR tR t	R	 t
R
 tR tR t]R 4       t]R 4       t]R 4       tR tR tR tR tR tR tRtV tR# )EndpointRulesetResolveri  z5Resolves endpoints using a service's endpoint rulesetNc	                    \        VVR 7      V n        V P                  P                  P                  V n        W0n        W@n        WPn        W`n        Wpn	        Wn
        / V n        R# ))ruleset_datapartition_dataN)r	   	_providerruleset
parameters_param_definitions_service_model	_builtins_client_context_event_emitter_use_ssl_requested_auth_scheme_instance_cache)	r!   endpoint_ruleset_datar   service_modelbuiltinsclient_contextevent_emitteruse_sslrequested_auth_schemes	   &&&&&&&&&r$   rD    EndpointRulesetResolver.__init__  sZ     *.)
 #'.."8"8"C"C+!-+&;#!r'   c           	        Vf   / pVf   / pV P                  WV4      p\        P                  RV4        V P                  P                  ! R
/ VB p\        P                  RTP                  4       T P                  '       gO   TP                  P                  R4      '       d.   RT9  d'   TP                  RTP                  R,           2R7      pTP                  TP                  P                  4        UU	u/ uF  w  rY^ ,          bK  	  up	pR	7      pT#   \
         d   pT P                  Yd4      pTf   h YvhRp?ii ; iu up	pi )zAInvokes the provider with params defined in the service's rulesetNz-Calling endpoint provider with parameters: %szEndpoint provider result: %szhttps://Endpointzhttp://:   NN)url)headersr0   )_get_provider_paramsru   rv   r   resolve_endpointr
   #ruleset_error_to_botocore_exceptionr   r   
startswith_replacer   items)
r!   operation_model	call_argsrequest_contextprovider_paramsprovider_resultexbotocore_exceptionr   vals
   &&&&      r$   r%   *EndpointRulesetResolver.construct_endpoint  sX    I" O33
 			;_	
	1"nn== !O 			0/2E2EF ##..z::/1-66o11"567 7 O *22,;,C,C,I,I,K,KV,K 3 
 ; % 	1!%!I!I" ")(0	10s   D :E
E$D<<Ec                0   / pV P                  WV4      pV P                  P                  4        Fc  w  rgV P                  VVVR7      pVf,   VP                  e   V P                  VP                  VR7      pVf   KN  WV&   V P                  Wh4       Ke  	  V# )aU  Resolve a value for each parameter defined in the service's ruleset

The resolution order for parameter values is:
1. Operation-specific static context values from the service definition
2. Operation-specific dynamic context values from API parameters
3. Client-specific context parameters
4. Built-in values such as region, FIPS usage, ...
)
param_namer   r   )builtin_namer   )_get_customized_builtinsr   r   _resolve_param_from_contextbuiltin_resolve_param_as_builtin_register_endpoint_feature_ids)	r!   r   r   r   r   customized_builtinsr   	param_def	param_vals	   &&&&     r$   r   ,EndpointRulesetResolver._get_provider_params   s      #;;
 &*%<%<%B%B%D!J88% /# 9 I
  Y%6%6%B ::!*!2!20 ; 	 $.7
+33JJ &E r'   c                    V P                  W4      pVe   V# V P                  WV4      pVe   V# V P                  WV4      pVe   V# V P                  V4      # r1   )&_resolve_param_as_static_context_param'_resolve_param_as_dynamic_context_param)_resolve_param_as_operation_context_param&_resolve_param_as_client_context_param)r!   r   r   r   staticdynamicoperation_context_paramss   &&&&   r$   r   3EndpointRulesetResolver._resolve_param_from_contextB  s}     <<
 M>>
 N::Y 	!
 $/++:::FFr'   c                F    V P                  V4      pVP                  V4      # r1   )_get_static_context_paramsr[   )r!   r   r   static_ctx_paramss   &&& r$   r   >EndpointRulesetResolver._resolve_param_as_static_context_paramX  s&     !;;OL $$Z00r'   c                f    V P                  V4      pW9   d   WA,          pVP                  V4      # R # r1   )_get_dynamic_context_paramsr[   )r!   r   r   r   dynamic_ctx_paramsmember_names   &&&&  r$   r   ?EndpointRulesetResolver._resolve_param_as_dynamic_context_param^  s7     "==oN+,8K==-- ,r'   c                x    V P                  4       pW9   d$   W!,          pV P                  P                  V4      # R # r1   )_get_client_context_paramsr   r[   )r!   r   client_ctx_paramsclient_ctx_varnames   &&  r$   r   >EndpointRulesetResolver._resolve_param_as_client_context_paramf  s=     ;;=*!2!>''++,>?? +r'   c                t    VP                   pW9   d&   WA,          R ,          p\        P                  ! WS4      # R# )pathN)operation_context_parametersjmespathsearch)r!   r   r   r   operation_ctx_paramsr  s   &&&&  r$   r   AEndpointRulesetResolver._resolve_param_as_operation_context_paraml  s7      /KK-'3F;D??433 .r'   c                    V\         P                  P                  4       9  d   \        VR 7      hVP	                  V4      p\        V4      '       d   V! 4       # V# ))name)r   __members__valuesr   r[   callable)r!   r   r   r   s   &&& r$   r   1EndpointRulesetResolver._resolve_param_as_builtint  sK    7CCJJLL6LII,,|,G9r'   c                n    VP                    Uu/ uF  pVP                  VP                  bK  	  up# u upi )z=Mapping of param names to static param value for an operation)static_context_parametersr	  valuer!   r   params   && r$   r   2EndpointRulesetResolver._get_static_context_params|  s<    
 )BB
B JJ#B
 	
 
    2c                n    VP                    Uu/ uF  pVP                  VP                  bK  	  up# u upi )z7Mapping of param names to member names for an operation)context_parametersr	  r   r  s   && r$   r   3EndpointRulesetResolver._get_dynamic_context_params  s>    
 );;
; JJ)));
 	
 
r  c                    V P                   P                   Uu/ uF#  pVP                  \        VP                  4      bK%  	  up# u upi )z7Mapping of param names to client configuration variable)r   client_context_parametersr	  r   )r!   r  s   & r$   r   2EndpointRulesetResolver._get_client_context_params  sG    
 ,,FF
F JJ
5::..F
 	
 
s   )Ac                    V P                   P                  P                  4       p\        P                  ! V P                  4      pV P
                  P                  R V 2VVVVR7       V# )zbefore-endpoint-resolution.)r   modelparamscontext)r   
service_id	hyphenizer   r   r   emit)r!   r   r   r   r  r   s   &&&&  r$   r   0EndpointRulesetResolver._get_customized_builtins  sh     ((33==?
"ii7  )*6(!# 	! 	
 #"r'   c                  a  \        V\        4      '       d   \        V4      ^ 8X  d   \        R4      h\        P                  RRP                  V Uu. uF  pRVP                  R4       R2NK  	  up4      S P                  4       S P                  \        8X  d   R/ 3# V Uu. uF!  p/ VCRS P                  VR,          4      /CNK#  	  ppS P                  e    \        V 3R lV 4       4      w  rCM \        R	 V 4       4      w  rC/ pRV9   d   VR,          VR&   M9RV9   d3   \        VR,          4      ^ 8  d   RP                  VR,          4      VR&   RV9   d   VP#                  VR,          R7       RV9   d   \%        VR,          4      VR&   \        P                  RVR,          VV4       WG3# u upi u upi   \         d    R/ 3u # i ; i  \         d    R
pT Uu. uF  q"R,          NK  	  Mu upi pp\        '       g5   \        ;QJ d    R T 4       F  '       g   K   RM	  R
M! R T 4       4      pT'       d   \        RR7      h\!        RP                  T4      R7      hi ; i)a  Convert an Endpoint's authSchemes property to a signing_context dict

:type auth_schemes: list
:param auth_schemes: A list of dictionaries taken from the
    ``authSchemes`` property of an Endpoint object returned by
    ``EndpointProvider``.

:rtype: str, dict
:return: Tuple of auth type string (to be used in
    ``request_context['auth_type']``) and signing context dict (for use
    in ``request_context['signing']``).
z&auth_schemes must be a non-empty list.z_Selecting from endpoint provider's list of auth schemes: %s. User selected auth scheme is: "%s"z, "r	  noneNc              3      <"   T F>  pSP                  SP                  VR ,          4      '       g   K.  SP                  V3x  K@  	  R# 5ir	  N)._does_botocore_authname_match_ruleset_authnamer   ).0sr!   s   & r$   	<genexpr>FEndpointRulesetResolver.auth_schemes_to_signing_ctx.<locals>.<genexpr>  sB      $)JJ33QvY 5T00!4)s
   +A	A	c              3   `   "   T F$  pVR ,          \         9   g   K  VR ,          V3x  K&  	  R# 5ir'  )r   )r)  r*  s   & r$   r+  r,    s-      $)yN2 #QvYN)s   ..Fc              3   4   "   T F  pV\         9   x  K  	  R # 5ir1   r   )r)  schemes   & r$   r+  r,    s      +&7F "::&7s   TzbThis operation requires an additional dependency. Use pip install botocore[crt] before proceeding.msg)signature_versionsigningRegionr   signingRegionSet,signingName)signing_namedisableDoubleEncodingz?Selected auth type "%s" as "%s" with signing context params: %s)
isinstancelistlen	TypeErrorru   rv   joinr[   r   r   _strip_sig_prefixnextStopIterationr   anyr   r   updater   )r!   auth_schemesr*  r/  r	  fixable_with_crtauth_type_optionssigning_contexts   f&      r$   auth_schemes_to_signing_ctx3EndpointRulesetResolver.auth_schemes_to_signing_ctx  s    ,--\1Ba1GDEE		1II\B\155=/+\BC''		
 &&(22: '
& GvFvt55fVnEF& 	 
 &&2   $ $)$  f# $)$  6 f$(.(?OH%6)6,-.2,/HH-.-) F"""}0E"F"f,7E./8O34 			M6N		
 $$] C
  !   Rx	  !  $) 8D$E1vYY$E!$Ew'*s +&7+sss +&7+ ($
 $4L 
 7*.))4E*F %sH   F5#'F:F? 4G ?GGI.%G76I.I.)I.(I.c                F    VP                  R4      '       d
   VR,          # T# )z6Normalize auth type names by removing any "sig" prefixsig:   NN)r   )r!   	auth_names   &&r$   r>  )EndpointRulesetResolver._strip_sig_prefix  s!     ) 4 4U ; ;y}JJr'   c                    V P                  V4      pVP                  R4      ^ ,          pVR8w  d!   VP                  R4      '       d
   VR,          pW!8H  # )a  
Whether a valid string provided as signature_version parameter for
client construction refers to the same auth methods as a string
returned by the endpoint ruleset provider. This accounts for:

* The ruleset prefixes auth names with "sig"
* The s3 and s3control rulesets don't distinguish between v4[a] and
  s3v4[a] signers
* The v2, v3, and HMAC v1 based signers (s3, s3-*) are botocore legacy
  features and do not exist in the rulesets
* Only characters up to the first dash are considered

Example matches:
* v4, sigv4
* v4, v4
* s3v4, sigv4
* s3v7, sigv7 (hypothetical example)
* s3v4a, sigv4a
* s3v4-query, sigv4

Example mismatches:
* v4a, sigv4
* s3, sigv4
* s3-presign-post, sigv4
-r`   :   NN)r>  splitr   )r!   botonamersnames   &&&r$   r(  FEndpointRulesetResolver._does_botocore_authname_match_ruleset_authname
  sQ    4 ''/>>#&q)t 3 3D 9 9|H!!r'   c                n   VP                   P                  R4      pVf   R# VP                  R4      '       d&    VP                  R4      ^,          p\        VR7      # V P                  P                  pVR8X  d   VR8X  g   VR8X  d   \        VR	7      # VP                  R
4      '       gt   VP                  R4      '       g]   VP                  R4      '       gF   VP                  R4      '       g/   VP                  R4      '       g   VP                  R4      '       d   \        VR	7      # VP                  4       P                  R4      '       d   \        VR7      # VR8X  d   VP                  R4      '       d   VP                  R4      p\        WcR7      # VP                  R4      '       g   VP                  R4      '       d   \        VR	7      # VR8X  d   \        VR7      # VR8X  d7   VP                  R4      '       d   \        VR	7      # VR8X  d   \        VR	7      # R#   \         d    Tp ELi ; i)ztAttempts to translate ruleset errors to pre-existing botocore
exception types by string matching exception strings.
r1  NzInvalid region in ARN: `)labelr`   z/S3 Object Lambda does not support S3 Acceleratez#Accelerate cannot be used with FIPSr0  zS3 Outposts does not supportzS3 MRAP does not supportz!S3 Object Lambda does not supportzAccess Points do not supportzInvalid configuration:z#Client was configured for partitionzinvalid arn:)report	s3controlzInvalid ARN:Bucket)arnr1  z!AccountId is required but not seteventszUInvalid Configuration: FIPS is not supported with EventBridge multi-region endpoints.z&EndpointId must be a valid host label.)kwargsr[   r   rQ  
IndexErrorr   r   r"   r   r   lowerr   r   r   r   )r!   ruleset_exceptionr  r1  rW  r"   r[  s   &&&    r$   r   ;EndpointRulesetResolver.ruleset_error_to_botocore_exception*  s     &&**51;>>344		#q) )u55**774HH??63??=>>>>"<==>>"EFF>>"@AA>>":;;>>"GHHAcJJyy{%%n55+377;&~~n--jj*3EE~~6773>>5< < >#FF99+3778#~~6  9SAA>>8SAAQ  s   H# #H43H4c                x    VR 8X  d   \        RVP                  4        24       R# VR8X  d   \        R4       R# R# )AccountIdEndpointModeACCOUNT_ID_MODE_	AccountIdRESOLVED_ACCOUNT_IDN)r   upper)r!   r   r   s   &&&r$   r   6EndpointRulesetResolver._register_endpoint_feature_idsa  s9    00"29??3D2E FG;& 56 'r'   )	r   r   r   r   r   r   r   r   r   )TN)r3   r4   r5   r6   r7   rD   r%   r   r   r   r   r   r   r   r   r   r   r   r   rG  r>  r(  r   r   r8   r9   r:   s   @r$   r   r     s     ?"04l DG,1.@4 
 
 
 
 
 
#a%FK"@5n7 7r'   r   )/r7   r   loggingr~   enumr   r  botocorer   r   botocore.authr   r   botocore.crtr   botocore.endpoint_providerr	   botocore.exceptionsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   botocore.useragentr   botocore.utilsr   r   	getLoggerr3   ru   DEFAULT_URI_TEMPLATErs   r   r=   strr   r   r0   r'   r$   <module>ru     s      	   ) 1 1 7     3 9!7 #R( :" :"zu
+ u
p	 BsD  BFV7 V7r'   