HEX
Server: Apache
System: Linux vps35971 6.8.0-79-generic #79~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 15 16:54:53 UTC 2 x86_64
User: haitiopendh (6209306)
PHP: 8.1.32
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/botocore/__pycache__/handlers.cpython-310.pyc
o

.&�aŵ�@sdZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZm
Z
mZmZmZmZmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lm Z m!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddl%m&Z&ddl%Z%ddl'Z%ddl%m(Z(ddl%m)Z)ddlm*Z*ddlm+Z+ddlm,Z,e�-e.�Z/e0�Z1e0�Z2e�3d�Z4dZ5dZ6e�3d�7e5e6g��Z8e�3d�Z9ddiZ:dd�Z;d d!�Z<d"d#�Z=d$d%�Z>d&d'�Z?d(d)�Z@d*d+�ZAd,d-�ZBd.d/�ZCd0d1�ZDd2d3�ZEd4d5�ZFd�d7d8�ZGd9d:�ZHd;d<�ZId=d>�ZJGd?d@�d@e0�ZKdAdB�ZLdCdD�ZMdEdF�ZNdGdH�ZOdIdJ�ZPdKdL�ZQdMdN�ZRdOdP�ZSdQdR�ZTdSdT�ZUdUdV�ZVdWdX�ZWdYdZ�ZXd[d\�ZYd]d^�ZZd_d`�Z[dadb�Z\dcdd�Z]dedf�Z^dgdh�Z_didj�Z`dkdl�Zadmdn�Zbdodp�Zcdqdr�Zddsdt�Zedudv�Zfdwdx�Zgdydz�Zhd{d|�Zid}d~�ZjGdd��d�e0�ZkGd�d��d�e0�ZlGd�d��d�e0�Zmd�d��Znd�d��Zogd�e;f�d�eld��f�d�eie2f�d�eie2f�d�ef�d�ef�d�ebf�d�eof�d�eTf�d�e@f�d�eCf�d�eVf�d�eAf�d�eDf�d�edf�d�edf�d�edf�d�eMf�d�eMf�d�eYf�d�eYf�d�eYf�d�eLf�d�eLf�d�eJf�d�e\f�d�e]f�d�e#f�d�e#f�d�e<f�d�e<f�d�e^f�d�e^f�d�eRf�d�eaf�d�e=e1f�d�e=e1f�d�e=e1f�d�eIf�d�eIf�d�eIf�d�eIf�d�eIf�d�eIf�d�e?f�d�eEf�d�eEf�d�eEf�d�eEf�d�eFf�d�eEf�d�eEf�d�eEf�d�eFf�d�eWf�d�eWf�d�eZf�d�e[f�d�eef�d�eff�d�egf�d�ecf�d�ed�d��jpf�d�edÃjpf�d�edÃjpf�d�e_�f�d�e`f�d�eXdȃf�d�eXdȃf�d�ed˃jpf�d�ed̃jpf�d�ed΃jpf�d�edσjpf�d�eXdуf�d�ed�d�gdԢ�jqf�d�ef�d�eSf�d�eSf�d�eSf�d�eSf�d�eSf�d�ed܃jpf�d�ed܃jpf�d�ed܃jpf�d�ed܃jpf�d�ed܃jpf�d�eSf�d�eSf�d�ed܃jpf�d�ed܃jpf�d�eSf�d�eSf�d�ed܃jpf�d�ed܃jpf�d�eKd�jrf�d�enf�Zsejes�dS)�z_Builtin event handlers.

This module contains builtin handlers for events emitted by botocore.
�N)�unquote�json�six�unquote_str�ensure_bytes�get_md5�OrderedDict�urlsplit�
urlunsplit�
XMLParseError�ETree)�AutoPopulatedParam)�HideParamFromOperations)�AppendParamDocumentation)�add_generate_presigned_url)�add_generate_presigned_post)�add_generate_db_auth_token)�ParamValidationError)�AliasConflictParameterError)�UnsupportedTLSVersionWarning)�percent_encode�
SAFE_CHARS��switch_host_with_param)�conditionally_calculate_md5)�is_global_accesspoint)�utils)�retryhandler)�	translate)�
MD5_AVAILABLE)�MissingServiceIdError)�hyphenize_service_idz^[a-zA-Z0-9.\-_]{1,255}$z]^arn:(aws).*:(s3|s3-object-lambda):[a-z\-0-9]*:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-.]{1,63}$zt^arn:(aws).*:s3-outposts:[a-z\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\-]{1,63}$�|z\?versionId=[^\s]+$zruntime.sagemakerzsagemaker-runtimecKst�||�S�N)�SERVICE_NAME_ALIASES�get)�service_name�kwargs�r(�3/usr/lib/python3/dist-packages/botocore/handlers.py�handle_service_name_aliasS�r*cKsz|d}d}d|vrd}|�dd�}d|vrd}|�dd�}|s"dS||d<d|d	vr;|d	d=t|fi|��dSdS)
N�bodyF�
Ts&#xD;�
s&#xA;zContent-MD5�headers)�replacer)�paramsr'r,�replacedr(r(r)�escape_xml_payloadWs
�r3cKs6|durdS|\}}t|�rt�d|�d|_dSdS)NzWError found for response with 200 status code, errors: %s, changing status code to 500.i�)�_looks_like_special_case_error�logger�debug�status_code)�responser'�
http_response�parsedr(r(r)�check_for_200_errorqs�
�r;cCs\|jdkr,ztjt��dd�}|�|j�|��}Wn
ty$YdSw|jdkr,dSdS)N���utf-8��target�encodingT�ErrorF)	r7r�	XMLParser�TreeBuilder�feed�content�closer�tag)r9�parser�rootr(r(r)r4�s
��
r4cKs`|�d�}|s	dS|dkrtjS|�d�r.d}|dkr$t|�r"d}nd}|dkr,d	|d
<|SdS)a( Choose the operation-specific signer.

    Individual operations may have a different auth type than the service as a
    whole. This will most often manifest as operations that should not be
    authenticated at all, but can include other auth modes such as sigv4
    without body signing.
    �	auth_typeN�none�v4�s3�s3v4a�s3v4zv4-unsigned-bodyF�payload_signing_enabled)r%�botocore�UNSIGNED�
startswithr)�context�signing_namer'rJ�signature_versionr(r(r)�set_operation_specific_signer�s

�rWc
Ks`d|vr.zt�t�|d���dd�}||d<WdStttfy-tj	ddd�YdSwdS)N�Outputr=r0zError decoding base64T��exc_info)
�base64�	b64decoder�b�decode�
ValueError�	TypeError�AttributeErrorr5r6�r:r'�valuer(r(r)�decode_console_output�s���rdcKs>|jD]}||vrtt���||<t�d|||f�qdS)Nz1injecting idempotency token (%s) into param '%s'.)�idempotent_members�str�uuid�uuid4r5r6)r1�modelr'�namer(r(r)�generate_idempotent_uuid�s

���rkc	Cs<z
t�t|��}W|Sttfytjddd�Y|Sw)NzError loading quoted JSONTrY)r�loadsrr_r`r5r6)rcr(r(r)�decode_quoted_jsondoc�s��rmc	KsTd|vr(ztj|dtd�}||d<WdSttfy'tjddd�YdSwdS)N�TemplateBody)�object_pairs_hookzerror loading JSONTrY)rrlrr_r`r5r6rbr(r(r)�json_decode_template_body�s���rpcKsLd|vrdS|d}t�|�s"t�|�s$d|tjtjf}t|d��dSdS)N�BucketzdInvalid bucket name "%s": Bucket name must match the regex "%s" or be an ARN matching the regex "%s"��report)�VALID_BUCKET�search�VALID_S3_ARN�patternr)r1r'�bucket�	error_msgr(r(r)�validate_bucket_name�s
���
�rzcK�t|d�dS)z�
    S3 server-side encryption requires the encryption key to be sent to the
    server base64 encoded, as well as a base64-encoded MD5 hash of the
    encryption key. This handler does both if the MD5 has not been set by
    the caller.
    �SSECustomerN��_sse_md5�r1r'r(r(r)�sse_md5��r�cKr{)a1
    S3 server-side encryption requires the encryption key to be sent to the
    server base64 encoded, as well as a base64-encoded MD5 hash of the
    encryption key. This handler does both if the MD5 has not been set by
    the caller specifically if the parameter is for the copy-source sse-c key.
    �CopySourceSSECustomerNr}rr(r(r)�copy_source_sse_md5r�r�r|cCsxt||�sdS|d}|d}||}t|tj�r|�d�}t�t|�����	d�}t�|��	d�}|||<|||<dS)N�Key�KeyMD5r=)
�_needs_s3_sse_customization�
isinstancer�	text_type�encoder[�	b64encoder�digestr^)r1�sse_member_prefix�sse_key_member�sse_md5_member�key_as_bytes�key_md5_str�key_b64_encodedr(r(r)r~
s


��r~cCs|�|d�duo|d|vS)Nr�r��r%)r1r�r(r(r)r�s
�r�cKstjS)zk
    This handler disables request signing by setting the signer
    name to a special sentinel value.
    )rQrR)r'r(r(r)�disable_signing!sr�cKsR|j�dd�dvrdSd|vr%|d}t|d�r't�d�d|dd	<dSdSdS)
N�method�)�PUT�POSTr,�readz-Adding expect 100 continue header to request.z100-continuer/�Expect)�httpr%�hasattrr5r6)rir1r'r,r(r(r)�add_expect_header)s

�r�c@�eZdZdd�Zdd�ZdS)�DeprecatedServiceDocumentercC�
||_dSr#)�_replacement_service_name)�self�replacement_service_namer(r(r)�__init__6�
z$DeprecatedServiceDocumenter.__init__cKs>|j��|�d�|j�|j|j�|�d�|j��dS)Nz.This service client is deprecated. Please use z	 instead.)�style�start_important�write�refr��
end_important)r��section�
event_namer'r(r(r)�inject_deprecation_notice9s

�
z5DeprecatedServiceDocumenter.inject_deprecation_noticeN)�__name__�
__module__�__qualname__r�r�r(r(r(r)r�5sr�c	Ks�d|vr|�d�}|�d�}|�d�}|��|�d�dSd|vrE|�d�}|�d�}|��|�d�|�d	�}|��|�d
�dSdS)Nzrequest-example�structure-value�
CopySource�member-valuezH'string' or {'Bucket': 'string', 'Key': 'string', 'VersionId': 'string'}zrequest-params�
param-typez:type CopySource: str or dictzparam-documentationaqThe name of the source bucket, key name of the source object, and optional version ID of the source object.  You can either provide this value as a string or a dictionary.  The string form is {bucket}/{key} or {bucket}/{key}?versionId={versionId} if you want to copy a specific version.  You can also provide this value as a dictionary.  The dictionary format is recommended over the string format because it is more explicit.  The dictionary format is: {'Bucket': 'bucket', 'Key': 'key', 'VersionId': 'id'}.  Note that the VersionId key is optional and may be omitted. To specify an S3 access point, provide the access point ARN for the ``Bucket`` key in the copy source dictionary. If you want to provide the copy source for an S3 access point as a string instead of a dictionary, the ARN provided must be the full S3 access point object ARN (i.e. {accesspoint_arn}/object/{key})��get_section�
clear_textr�)	r�r�r'�parent�
param_line�
value_portion�
param_section�type_section�doc_sectionr(r(r)�document_copy_source_formDs"






��r�cKsP|�d�}|durdSt|tj�rt|�|d<dSt|t�r&t|�|d<dSdS)aHConvert CopySource param for CopyObject/UploadPartCopy.

    This handler will deal with two cases:

        * CopySource provided as a string.  We'll make a best effort
          to URL encode the key name as required.  This will require
          parsing the bucket and version id from the CopySource value
          and only encoding the key.
        * CopySource provided as a dict.  In this case we're
          explicitly given the Bucket, Key, and VersionId so we're
          able to encode the key and ensure this value is serialized
          and correctly sent to S3.

    r�N)r%r�r�string_types�_quote_source_header�dict�_quote_source_header_from_dict)r1r'�sourcer(r(r)�handle_copy_source_paramgs

�r�c
Cs�z!|d}|d}|�d�}t�|�rd||f}nd||f}Wnty6}z	tdt|�d��d}~wwt|tdd	�}|durI|d
|7}|S)Nrqr��	VersionIdz%s/object/%sz%s/%szMissing required parameter: %srr�/��safez
?versionId=%s)r%rvru�KeyErrorrrfrr)�source_dictrx�key�
version_id�final�er(r(r)r��s$

�
���r�cCsXt�|�}|durt|tdd�S|d|���||��d�}}t|tdd�|S)Nr�r�)�VERSION_ID_SUFFIXrurr�start)rc�result�firstr�r(r(r)r��s

"r�cCsLt�|�}||dd<|d�||�|d<d|d<i|d<|j|||jd�S)Nr,�DestinationRegion�url�GETr�r/)�region_name�operation_name)�copy�deepcopyr0�generate_presigned_urlrj)�request_signer�request_dictri�
source_region�destination_region�request_dict_copyr(r(r)�_get_cross_region_presigned_url�s

��r�cCs|j}|�d�}||fS)N�SourceRegion)�_region_namer%)r�r1r�r�r(r(r)�1_get_presigned_url_source_and_destination_regions�s
r�cKsNd|dvrdSt||d�\}}t|||||�}||dd<||dd<dS)N�PresignedUrlr,r��r�r��r1r�rir'�src�destr�r(r(r)�inject_presigned_url_ec2�s�
�r�cKs\d|dvrdSt||d�\}}|dd=d|dvrdSt|||||�}||dd<dS)Nr�r,�PreSignedUrlr�r�r(r(r)�inject_presigned_url_rds�s�

�r�cKs"|j}|durt||j�dSdSr#)�output_shape�_decode_policy_types)r:rir'r�r(r(r)�json_decode_policies�s�r�cCs�d}|jdkr3|j��D]&\}}|jdkr'|j|kr'||vr't||�||<q||vr2t|||�q|jdkrE|j}|D]	}t||�q=dSdS)N�policyDocumentType�	structure�string�list)�	type_name�members�itemsrjrmr��member)r:�shape�
shape_name�member_name�member_shape�shape_member�itemr(r(r)r��s$



��
�r�cKsJ|jdurdS|j}tjt��dd�}|�|�|��}|j}||d<dS)Nr=r>�LocationConstraint)�rawrErrBrCrDrF�text)r:r9r'�
response_bodyrHrI�regionr(r(r)�parse_get_bucket_location�s
�
rcKsJd|vr#t|dtj�r|d�d�|d<t�|d��d�|d<dSdS)N�UserDatar=)r�rr�r�r[r�r^rr(r(r)�base64_encode_user_datas�
��rcCsd}t||�}|jS)Nzw**This value will be base64 encoded automatically. Do not base64 encode this value prior to performing the operation.**�r�append_documentation)�param�description�appendr(r(r)�document_base64_encodings
r	c	Ksn|�d�}|rt|t�sdS|��D]"\}}z|�d�|�d�Wqty4d||f}t|d��wdS)aEVerify S3 Metadata only contains ascii characters.

    From: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

    "Amazon S3 stores user-defined metadata in lowercase. Each name, value pair
    must conform to US-ASCII when using REST and UTF-8 when using SOAP or
    browser-based uploads via POST."

    �MetadataN�asciizvNon ascii characters found in S3 metadata for key "%s", value: "%s".  
S3 metadata can only contain ASCII characters. rr)r%r�r�r�r��UnicodeEncodeErrorr)r1r'�metadatar�rcryr(r(r)�validate_ascii_metadatas"


�����rcKsp|j}|r
t|d�sdSdd�|j��D�}|D]}||vr5||}|�d�d||<t�d||||�qdS)z�
    Check for and split apart Route53 resource IDs, setting
    only the last piece. This allows the output of one operation
    (e.g. ``'foo/1234'``) to be used as input in another
    operation (e.g. it expects just ``'1234'``).
    r�NcSsg|]\}}|jdvr|�qS))�
ResourceId�DelegationSetId)rj)�.0rjr�r(r(r)�
<listcomp>Js
�z#fix_route53_ids.<locals>.<listcomp>r����z%s %s -> %s)�input_shaper�r�r��splitr5r6)r1rir'rr�rj�
orig_valuer(r(r)�fix_route53_ids?s��rcKs|�d�dur
d|d<dSdS)N�	accountId�-r�rr(r(r)�inject_account_idTs�rcKs|}|jd|dd<dS)N�
apiVersionr/zx-amz-glacier-version)r
�rir1r'r�r(r(r)�add_glacier_version]s�rcKs,|d�dd�dur|}d|dd<dSdS)Nr/�Acceptzapplication/jsonr�rr(r(r)�add_accept_headercs�rcKsz|}|d}|d}t|tj�rt�|�}|��}d|vr&tj|dd�|d<|�|�d|vr6t�|�|d<|�|�dS)z�Add glacier checksums to the http request.

    This will add two headers to the http request:

        * x-amz-content-sha256
        * x-amz-sha256-tree-hash

    These values will only be added if they are not present
    in the HTTP request.

    r/r,zx-amz-content-sha256T)�as_hexzx-amz-sha256-tree-hashN)	r�r�binary_type�BytesIO�tellr�calculate_sha256�seek�calculate_tree_hash)r1r'r�r/r,�starting_positionr(r(r)�add_glacier_checksumsis

�
r(cCsd}td|�jS)Na�
        This is a required field.

        Ideally you will want to compute this value with checksums from
        previous uploaded parts, using the algorithm described in
        `Glacier documentation <http://docs.aws.amazon.com/amazonglacier/latest/dev/checksum-calculations.html>`_.

        But if you prefer, you can also use botocore.utils.calculate_tree_hash()
        to compute it from raw file by::

            checksum = calculate_tree_hash(open('your_file.txt', 'rb'))

        �checksumr)�docr(r(r)�#document_glacier_tree_hash_checksum�s
r+cKsrd|vr|�d�}|�d�}|��|�d�dSd|vr7|�d�}|�d�}|�d�}|��|�d�dSdS)	Nzresponse-paramsrnr�z(*dict*) --zresponse-exampler�r�z{}r�)r�r�r'�template_body_sectionr�r�r�r�r(r(r)�0document_cloudformation_get_template_return_type�s




�r-cKst|d�dS)N�PredictEndpointr��requestr'r(r(r)�switch_host_machinelearning�sr1cKsJddl}z|j}|dkrt�d|jt�WdSWdSty$YdSw)Nr)�rr2z�Currently installed openssl version: %s does not support TLS 1.2, which is required for use of iot-data. Please use python installed with openssl version 1.0.1 or higher.)�ssl�OPENSSL_VERSION_INFO�warnings�warn�OPENSSL_VERSIONrra)r'r3�openssl_version_tupler(r(r)�&check_openssl_supports_tls_version_1_2�s�
��
�r9cKsF|jdkrd|jvr!d|jd<d|_|j�dd�\|_|_dSdSdS)Nr��?z!application/x-www-form-urlencodedzContent-Typer�r2)r�r�r/r�datar/r(r(r)�change_get_to_post�s

�r<cKs d|vrd|d<d|d<dSdS)N�EncodingTypeT�encoding_type_auto_setr�r()r1rTr'r(r(r)�"set_list_objects_encoding_type_url�s�r?cK�tgd�ddg||d�dS)N)�	Delimiter�Marker�
NextMarker��Contentsr���CommonPrefixes�Prefix��top_level_keys�nested_keysr:rT��_decode_list_object�r:rTr'r(r(r)�decode_list_object�s	
�rOcKr@)N)rArH�
StartAfterrDrFrIrLrNr(r(r)�decode_list_object_v2�s
�rQcKstgd�gd�||d�dS)N)�	KeyMarker�
NextKeyMarkerrHrA))�Versionsr�)�
DeleteMarkersr�rFrIrLrNr(r(r)�decode_list_object_versions�s
�rVcCsz|�d�dkr7|�d�r9|D]}||vrt||�||<q|D]\}}||vr6||D]
}t||�||<q+qdSdSdS)Nr=r�r>)r%r)rJrKr:rTr��top_key�	child_keyr�r(r(r)rMs���rMcKs`d|vr,t|dtj�rt�t|d��|d<dSt|dtj�r.t�|d�|d<dSdSdS)N�Body)r�rr�r"rr!rr(r(r)� convert_body_to_file_like_objects�rZc	Csrdddd�}|��D],\}}|�dd�\}}t||�}d||jtf}d|d	|jf}|�|�|�|�q
dS)
N�Filters�fromTime�returnFields)zec2.*.Filterzlogs.CreateExportTask.fromzcloudsearchdomain.Search.return�.r2zbefore-parameter-build.zdocs.*.z.complete-section)r��rsplit�ParameterAlias�alias_parameter_in_call�REGISTER_FIRST� alias_parameter_in_documentationr)	�handler_list�aliases�original�new_name�
event_portion�
original_name�parameter_alias�#parameter_build_event_handler_tuple�docs_event_handler_tupler(r(r)�_add_parameter_aliasess"�
�
�
�rmc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
r`cCs||_||_dSr#)�_original_name�_alias_name)r�ri�
alias_namer(r(r)r�9s
zParameterAlias.__init__cKs^|jr)|j|jjvr+|j|vr-|j|vrt|j|j|jd��|�|j�||j<dSdSdSdS)N)rf�alias�	operation)rrnr�rorrj�pop)r�r1rir'r(r(r)ra=s

��z&ParameterAlias.alias_parameter_in_callcKs�|�d�r)|j|jvr
dS|�|j�}|�d�}|�|�|�d�}|�|�dS|�d�rH|�d�}|j|jvr;dS|�|j�}|�|�dSdS)Nzdocs.request-paramsr�z
param-namezdocs.request-exampler�)rSrn�available_sectionsr��_replace_content)r�r�r�r'r��param_type_section�param_name_sectionr(r(r)rcMs





�z/ParameterAlias.alias_parameter_in_documentationcCs4|���d�}|�|j|j�}|��|�|�dS)Nr=)�getvaluer^r0rnror�r�)r�r�rE�updated_contentr(r(r)ruas�zParameterAlias._replace_contentN)r�r�r�r�rarcrur(r(r(r)r`8s
r`c@r�)�ClientMethodAliascCs
||_dS)z� Aliases a non-extant method to an existing method.

        :param actual_name: The name of the method that actually exists on
            the client.
        N)�_actual)r��actual_namer(r(r)r�js
zClientMethodAlias.__init__cKst||j�Sr#)�getattrr{)r��clientr'r(r(r)�__call__rr+zClientMethodAlias.__call__N)r�r�r�r�rr(r(r(r)rzisrzc@s>eZdZdZe�dej�Zdd�Zdd�Z	dd�Z
d	d
�ZdS)�HeaderToHostHoisterz@Takes a header and moves it to the front of the hoststring.
    z(?!-)[a-z\d-]{1,63}(?<!-)$cCr�r#)�_header_name)r��header_namer(r(r)r�|r�zHeaderToHostHoister.__init__cKsJ|j|dvr	dS|d|j}|�|�|d}|�||�}||d<dS)aHoist a header to the hostname.

        Hoist a header to the beginning of the hostname with a suffix "." after
        it. The original header should be removed from the header map. This
        method is intended to be used as a target for the before-call event.
        r/Nr�)r��_ensure_header_is_valid_host�_prepend_to_host)r�r1r'�header_value�original_url�new_urlr(r(r)�hoists
zHeaderToHostHoister.hoistcCs|j�|�}|s
tdd��dS)Nz`Hostnames must contain only - and alphanumeric characters, and between 1 and 63 characters long.rr)�_VALID_HOSTNAME�matchr)r��headerr�r(r(r)r��s��z0HeaderToHostHoister._ensure_header_is_valid_hostcCsHt|�}|j�d�}|g|}d�|�}|j||j|jdf}t|�}|S)Nr^r�)r	�netlocr�join�scheme�path�queryr
)r�r��prefix�url_components�parts�
new_netloc�new_componentsr�r(r(r)r��s

�z$HeaderToHostHoister._prepend_to_hostN)r�r�r��__doc__�re�compile�
IGNORECASEr�r�r�r�r�r(r(r(r)r�wsr�cKs|jsdS|jj|dd<dS)Nr/zx-amz-api-version)�is_endpoint_discovery_operation�
service_model�api_version)rir1r'r(r(r)�#inject_api_version_header_if_needed�sr�cKsd|vr	|d=dSdS)z>Operation requires h2 which is currently unsupported in Python�start_conversationNr()�class_attributesr'r(r(r)� remove_lex_v2_start_conversation�s
�r�zchoose-service-namez/getattr.mturk.list_hi_ts_for_qualification_type� list_hits_for_qualification_typez$before-parameter-build.s3.UploadPartz#before-parameter-build.s3.PutObjectzcreating-client-classzcreating-client-class.s3zcreating-client-class.iot-dataz$creating-client-class.lex-runtime-v2zafter-call.iamzafter-call.ec2.GetConsoleOutputz%after-call.cloudformation.GetTemplatezafter-call.s3.GetBucketLocationzbefore-parameter-buildzbefore-parameter-build.s3z%before-parameter-build.s3.ListObjectsz'before-parameter-build.s3.ListObjectsV2z,before-parameter-build.s3.ListObjectVersionsz$before-parameter-build.s3.CopyObjectz(before-parameter-build.s3.UploadPartCopyz/before-parameter-build.s3.CreateMultipartUploadz%docs.*.s3.CopyObject.complete-sectionz)docs.*.s3.UploadPartCopy.complete-sectionzbefore-call.s3zbefore-call.glacierzbefore-call.apigatewayzbefore-call.s3.PutObjectzbefore-call.s3.UploadPartzbefore-call.s3.DeleteObjectsz.before-call.s3.PutBucketLifecycleConfigurationz!before-call.glacier.UploadArchivez'before-call.glacier.UploadMultipartPartzbefore-call.ec2.CopySnapshotz'request-created.machinelearning.Predictzneeds-retry.s3.UploadPartCopyzneeds-retry.s3.CopyObjectz&needs-retry.s3.CompleteMultipartUploadz$choose-signer.cognito-identity.GetIdz-choose-signer.cognito-identity.GetOpenIdTokenz-choose-signer.cognito-identity.UnlinkIdentityz8choose-signer.cognito-identity.GetCredentialsForIdentityz$choose-signer.sts.AssumeRoleWithSAMLz+choose-signer.sts.AssumeRoleWithWebIdentityz
choose-signerz$before-parameter-build.s3.HeadObjectz#before-parameter-build.s3.GetObjectz'before-parameter-build.ec2.RunInstancesz<before-parameter-build.autoscaling.CreateLaunchConfigurationzbefore-parameter-build.route53zbefore-parameter-build.glacierzafter-call.s3.ListObjectszafter-call.s3.ListObjectsV2z after-call.s3.ListObjectVersionsz(request-created.cloudsearchdomain.Searchz!docs.*.glacier.*.complete-sectionrzJNote: this parameter is set to "-" bydefault if no value is not specified.z-docs.*.glacier.UploadArchive.complete-sectionr)z3docs.*.glacier.UploadMultipartPart.complete-sectionzDdocs.request-params.glacier.CompleteMultipartUpload.complete-sectionz2docs.*.cloudformation.GetTemplate.complete-sectionz(docs.*.ec2.RunInstances.complete-sectionrz=docs.*.autoscaling.CreateLaunchConfiguration.complete-sectionz(docs.*.ec2.CopySnapshot.complete-sectionr�r�zdocs.*.s3.*.complete-section�SSECustomerKeyMD5�CopySourceSSECustomerKeyMD5z1docs.*.lambda.UpdateFunctionCode.complete-section�ZipFilerM�
ContentMD5)
�
DeleteObjects�PutBucketAcl�
PutBucketCors�PutBucketLifecycle�PutBucketLogging�PutBucketNotification�PutBucketPolicy�PutBucketReplication�PutBucketRequestPayment�PutBucketTagging�PutBucketVersioning�PutBucketWebsite�PutObjectAclzcreating-client-class.rdsz%before-call.rds.CopyDBClusterSnapshotzbefore-call.rds.CreateDBClusterzbefore-call.rds.CopyDBSnapshotz+before-call.rds.CreateDBInstanceReadReplicaz:before-call.rds.StartDBInstanceAutomatedBackupsReplicationz1docs.*.rds.CopyDBClusterSnapshot.complete-sectionr�z+docs.*.rds.CreateDBCluster.complete-sectionz*docs.*.rds.CopyDBSnapshot.complete-sectionz7docs.*.rds.CreateDBInstanceReadReplica.complete-sectionzFdocs.*.rds.StartDBInstanceAutomatedBackupsReplication.complete-sectionz)before-call.neptune.CopyDBClusterSnapshotz#before-call.neptune.CreateDBClusterz5docs.*.neptune.CopyDBClusterSnapshot.complete-sectionz/docs.*.neptune.CreateDBCluster.complete-sectionz'before-call.docdb.CopyDBClusterSnapshotz!before-call.docdb.CreateDBClusterz3docs.*.docdb.CopyDBClusterSnapshot.complete-sectionz-docs.*.docdb.CreateDBCluster.complete-sectionzdocs.title.sms-voicezpinpoint-sms-voicezbefore-call)r|)tr�r[�loggingr�r�r5rg�botocore.compatrrrrrrrr	r
rr�botocore.docs.utilsr
rr�botocore.signersrrr�botocore.exceptionsrrr�botocore.utilsrrrrrrQr�
botocore.authrrrr r!�	getLoggerr�r5�objectrb�
REGISTER_LASTr�rt�_ACCESSPOINT_ARN�_OUTPOST_ARNr�rvr�r$r*r3r;r4rWrdrkrmrprzr�r�r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	rrrrrr(r+r-r1r9r<r?rOrQrVrMrZrmr`rzr�r�r��document_auto_populated_param�
hide_paramr��BUILTIN_HANDLERSr(r(r(r)�<module>sT
4

��
�$




#		 	 	

 1/
��������	�
������������������ �!�"��$�%�'�(�)�*�+�,�-�.�/�0�1�2�3�4��6�7�8�9��;�<�=�>�?�@�A�B�C�D�E�F�G�H��J�K�L�M�N�Q��T��X��Z��\��_��c��e��i��k��n��q��t��w�����������
������������������������ ���"���&���(���.���0���4���6���<���>��A