§
    «eîi[~  ã                   ó„  — d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZmZ ddlmZmZmZmZ  e¦   «         Z G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d„ de¦  «        Z" G d „ d!e¦  «        Z# G d"„ d#¦  «        Z$ G d$„ d%¦  «        Z% G d&„ d'¦  «        Z& G d(„ d)¦  «        Z' G d*„ d+¦  «        Z( G d,„ d-¦  «        Z)d.S )/z-Abstractions to interact with service models.é    )Údefaultdict)Ú
NamedTupleÚUnion)Úresolve_auth_type)ÚOrderedDict)ÚMissingServiceIdErrorÚUndefinedModelAttributeErrorÚ UnsupportedServiceProtocolsError)Ú$PRIORITY_ORDERED_SUPPORTED_PROTOCOLSÚCachedPropertyÚhyphenize_service_idÚinstance_cachec                   ó   — e Zd ZdS )ÚNoShapeFoundErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    úR/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/botocore/model.pyr   r   #   ó   € € € € € Ø€Dr   r   c                   ó   — e Zd ZdS )ÚInvalidShapeErrorNr   r   r   r   r   r   '   r   r   r   c                   ó   — e Zd ZdS )ÚOperationNotFoundErrorNr   r   r   r   r   r   +   r   r   r   c                   ó   — e Zd ZdS )ÚInvalidShapeReferenceErrorNr   r   r   r   r   r   /   r   r   r   c                   ó   — e Zd Zd„ ZdS )Ú	ServiceIdc                 ó    — t          | ¦  «        S ©N)r   ©Úselfs    r   Ú	hyphenizezServiceId.hyphenize4   s   € Ý# DÑ)Ô)Ð)r   N)r   r   r   r%   r   r   r   r    r    3   s#   € € € € € ð*ð *ð *ð *ð *r   r    c                   ó’   — e Zd ZdZg d¢Zg d¢ZeZdd„Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d„ ¦   «         Zd	„ Zd
„ Zed„ ¦   «         ZdS )ÚShapez3Object representing a shape from the service model.)ÚlocationNameÚ	queryNameÚ	flattenedÚlocationÚpayloadÚ	streamingÚtimestampFormatÚxmlNamespaceÚresultWrapperÚxmlAttributeÚeventstreamÚeventÚeventheaderÚeventpayloadÚ	jsonvaluer.   Ú	hostLabel)ÚrequiredÚminÚmaxÚpatternÚ	sensitiveÚenumÚidempotencyTokenÚerrorÚ	exceptionÚendpointdiscoveryidÚ	retryableÚdocumentÚunionÚcontextParamÚclientContextParamsÚrequiresLengthNc                 ó®   — || _         |d         | _        |                     dd¦  «        | _        || _        |€t          ¦   «         }|| _        i | _        dS )a  

        :type shape_name: string
        :param shape_name: The name of the shape.

        :type shape_model: dict
        :param shape_model: The shape model.  This would be the value
            associated with the key in the "shapes" dict of the
            service model (i.e ``model['shapes'][shape_name]``)

        :type shape_resolver: botocore.model.ShapeResolver
        :param shape_resolver: A shape resolver object.  This is used to
            resolve references to other shapes.  For scalar shape types
            (string, integer, boolean, etc.), this argument is not
            required.  If a shape_resolver is not provided for a complex
            type, then a ``ValueError`` will be raised when an attempt
            to resolve a shape is made.

        ÚtypeÚdocumentationÚ N)ÚnameÚ	type_nameÚgetrJ   Ú_shape_modelÚUnresolvableShapeMapÚ_shape_resolverÚ_cache)r$   Ú
shape_nameÚshape_modelÚshape_resolvers       r   Ú__init__zShape.__init__f   s[   € ð( ˆŒ	Ø$ VÔ,ˆŒØ(Ÿ_š_¨_¸bÑAÔAˆÔØ'ˆÔØÐ!õ 2Ñ3Ô3ˆNØ-ˆÔØˆŒˆˆr   c                 óŒ   — | j         }i }| j        D ]}|| j         v r||         ||<   Œd|v r|                     d¦  «        |d<   |S )a  Serialization information about the shape.

        This contains information that may be needed for input serialization
        or response parsing.  This can include:

            * name
            * queryName
            * flattened
            * location
            * payload
            * streaming
            * xmlNamespace
            * resultWrapper
            * xmlAttribute
            * jsonvalue
            * timestampFormat

        :rtype: dict
        :return: Serialization information about the shape.

        r(   rL   )rO   ÚSERIALIZED_ATTRSÚpop)r$   ÚmodelÚserializationÚattrs       r   r[   zShape.serializationˆ   si   € ð. Ô!ˆØˆØÔ)ð 	2ð 	2ˆDØ�tÔ(Ð(Ð(Ø&+¨D¤k�˜dÑ#øà˜]Ð*Ð*Ø$1×$5Ò$5°nÑ$EÔ$EˆM˜&Ñ!ØÐr   c                 óT   — | j         }i }| j        D ]}|| j         v r||         ||<   Œ|S )aÍ  Metadata about the shape.

        This requires optional information about the shape, including:

            * min
            * max
            * pattern
            * enum
            * sensitive
            * required
            * idempotencyToken
            * document
            * union
            * contextParam
            * clientContextParams
            * requiresLength

        :rtype: dict
        :return: Metadata about the shape.

        )rO   ÚMETADATA_ATTRS)r$   rZ   Úmetadatar\   s       r   r_   zShape.metadata©   sD   € ð. Ô!ˆØˆØÔ'ð 	-ð 	-ˆDØ�tÔ(Ð(Ð(Ø!& t¤�˜‘øØˆr   c                 ó8   — | j                              dg ¦  «        S )zïA list of members that are required.

        A structure shape can define members that are required.
        This value will return a list of required members.  If there
        are no required members an empty list is returned.

        r8   ©r_   rN   r#   s    r   Úrequired_memberszShape.required_membersÇ   s   € ð Œ}× Ò  ¨RÑ0Ô0Ð0r   c                 ó6   — | j                              |¦  «        S r"   ©rQ   Úresolve_shape_ref©r$   Ú	shape_refs     r   Ú_resolve_shape_refzShape._resolve_shape_refÒ   ó   € ØÔ#×5Ò5°iÑ@Ô@Ð@r   c                 ó2   — d| j         j        › d| j        › d�S )Nú<ú(z)>©Ú	__class__r   rL   r#   s    r   Ú__repr__zShape.__repr__Õ   s"   € Ø:�4”>Ô*Ð:Ð:¨T¬YÐ:Ð:Ð:Ð:r   c                 ó   — d S r"   r   r#   s    r   Úevent_stream_namezShape.event_stream_nameØ   s   € àˆtr   r"   )r   r   r   Ú__doc__rX   r^   r   ÚMAP_TYPErV   r   r[   r_   rb   rh   ro   Úpropertyrq   r   r   r   r'   r'   8   sç   € € € € € Ø=Ð=ðð ð Ðð&ð ð €Nð$ €Hð ð  ð  ð  ðD ðð ñ „^ðð@ ðð ñ „^ðð: ð1ð 1ñ „^ð1ðAð Að Að;ð ;ð ;ð ðð ñ „Xðð ð r   r'   c                   ó|   — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚStructureShapec                 óì   — | j                              d|                      ¦   «         ¦  «        }|                      ¦   «         }|                     ¦   «         D ]\  }}|                      |¦  «        ||<   Œ|S )NÚmembers)rO   rN   rs   Úitemsrh   )r$   rx   Úshape_membersrL   rg   s        r   rx   zStructureShape.membersÞ   so   € àÔ#×'Ò'¨	°4·=²=±?´?ÑCÔCˆð Ÿš™œˆØ&Ÿ}š}™œð 	Eð 	E‰OˆD�)Ø"&×"9Ò"9¸)Ñ"DÔ"DˆM˜$ÑÐØÐr   c                 ó€   — | j                              ¦   «         D ]#\  }}|j                             d¦  «        r|c S Œ$d S )Nr2   )rx   ry   r[   rN   )r$   Úmember_nameÚmembers      r   rq   z StructureShape.event_stream_nameì   sS   € à#'¤<×#5Ò#5Ñ#7Ô#7ð 	#ð 	#ÑˆK˜ØÔ#×'Ò'¨Ñ6Ô6ð #Ø"Ð"Ð"Ð"ð#àˆtr   c                 ó²   — | j                              dd¦  «        sd S | j                              di ¦  «        }|                     d¦  «        }|r|S | j        S )Nr@   Fr?   Úcode)r_   rN   rL   )r$   Úerror_metadatar   s      r   Ú
error_codezStructureShape.error_codeó   s`   € àŒ}× Ò  ¨eÑ4Ô4ð 	Ø�4Øœ×*Ò*¨7°BÑ7Ô7ˆØ×!Ò! &Ñ)Ô)ˆØð 	ØˆKàŒyÐr   c                 ó8   — | j                              dd¦  «        S )NrC   Fra   r#   s    r   Úis_document_typezStructureShape.is_document_typeþ   s   € àŒ}× Ò  ¨UÑ3Ô3Ð3r   c                 ó8   — | j                              dd¦  «        S )NrD   Fra   r#   s    r   Úis_tagged_unionzStructureShape.is_tagged_union  s   € àŒ}× Ò  ¨%Ñ0Ô0Ð0r   N)	r   r   r   r   rx   rq   r�   rƒ   r…   r   r   r   rv   rv   Ý   s™   € € € € € Øðð ñ „^ðð ðð ñ „^ðð ðð ñ „^ðð ð4ð 4ñ „^ð4ð ð1ð 1ñ „^ð1ð 1ð 1r   rv   c                   ó$   — e Zd Zed„ ¦   «         ZdS )Ú	ListShapec                 óB   — |                       | j        d         ¦  «        S )Nr}   ©rh   rO   r#   s    r   r}   zListShape.member  s   € à×&Ò& tÔ'8¸Ô'BÑCÔCÐCr   N)r   r   r   r   r}   r   r   r   r‡   r‡     s2   € € € € € ØðDð Dñ „^ðDð Dð Dr   r‡   c                   ó:   — e Zd Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚMapShapec                 óB   — |                       | j        d         ¦  «        S )NÚkeyr‰   r#   s    r   r�   zMapShape.key  s   € à×&Ò& tÔ'8¸Ô'?Ñ@Ô@Ð@r   c                 óB   — |                       | j        d         ¦  «        S )NÚvaluer‰   r#   s    r   r�   zMapShape.value  s   € à×&Ò& tÔ'8¸Ô'AÑBÔBÐBr   N)r   r   r   r   r�   r�   r   r   r   r‹   r‹     sP   € € € € € ØðAð Añ „^ðAð ðCð Cñ „^ðCð Cð Cr   r‹   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚStringShapec                 ó8   — | j                              dg ¦  «        S )Nr=   ra   r#   s    r   r=   zStringShape.enum  s   € àŒ}× Ò  ¨Ñ,Ô,Ð,r   N)r   r   r   r   r=   r   r   r   r‘   r‘     s-   € € € € € Øð-ð -ñ „^ð-ð -ð -r   r‘   c                   ó4   — e Zd ZU eed<   eeef         ed<   dS )ÚStaticContextParameterrL   r�   N)r   r   r   ÚstrÚ__annotations__r   Úboolr   r   r   r”   r”     s0   € € € € € € Ø
€I€I�IØ��s�ÔÐÐÑÐÐr   r”   c                   ó$   — e Zd ZU eed<   eed<   dS )ÚContextParameterrL   r|   N©r   r   r   r•   r–   r   r   r   r™   r™   "  s'   € € € € € € Ø
€I€I�IØÐÐÑÐÐr   r™   c                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ÚClientContextParameterrL   rI   rJ   Nrš   r   r   r   rœ   rœ   '  s0   € € € € € € Ø
€I€I�IØ
€I€I�IØÐÐÑÐÐr   rœ   c                   óü  — e Zd ZdZdd„Zdd„Zd„ Zed„ ¦   «         Zd„ Z	ed„ ¦   «         Z
ed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zd„ Z dS )ÚServiceModelzQ

    :ivar service_description: The parsed service description dictionary.

    Nc                 óÎ   — || _         |                     di ¦  «        | _        t          |                     di ¦  «        ¦  «        | _        t
          | _        || _        i | _        dS )a‡  

        :type service_description: dict
        :param service_description: The service description model.  This value
            is obtained from a botocore.loader.Loader, or from directly loading
            the file yourself::

                service_description = json.load(
                    open('/path/to/service-description-model.json'))
                model = ServiceModel(service_description)

        :type service_name: str
        :param service_name: The name of the service.  Normally this is
            the endpoint prefix defined in the service_description.  However,
            you can override this value to provide a more convenient name.
            This is done in a few places in botocore (ses instead of email,
            emr instead of elasticmapreduce).  If this value is not provided,
            it will default to the endpointPrefix defined in the model.

        r_   ÚshapesN)	Ú_service_descriptionrN   r_   ÚShapeResolverrQ   ÚNOT_SETÚ_signature_versionÚ_service_nameÚ_instance_cache)r$   Úservice_descriptionÚservice_names      r   rV   zServiceModel.__init__4  sh   € ð* %8ˆÔ!à+×/Ò/°
¸BÑ?Ô?ˆŒÝ,Ø×#Ò# H¨bÑ1Ô1ñ 
ô  
ˆÔõ #*ˆÔØ)ˆÔØ!ˆÔÐÐr   c                 ó8   — | j                              ||¦  «        S r"   )rQ   Úget_shape_by_name©r$   rS   Úmember_traitss      r   Ú	shape_forzServiceModel.shape_forS  s"   € ØÔ#×5Ò5Ø˜ñ
ô 
ð 	
r   c                 ó8   — | j                              |d ¦  «        S r"   )Ú_error_code_cacherN   )r$   r�   s     r   Úshape_for_error_codez!ServiceModel.shape_for_error_codeX  s   € ØÔ%×)Ò)¨*°dÑ;Ô;Ð;r   c                 ó6   — i }| j         D ]}|j        }|||<   Œ|S r"   )Úerror_shapesr�   )r$   Úerror_code_cacheÚerror_shaper   s       r   r¯   zServiceModel._error_code_cache[  s6   € àÐØÔ,ð 	1ð 	1ˆKØÔ)ˆDØ%0Ð˜TÑ"Ð"ØÐr   c                 ó6   — | j                              |¦  «        S r"   rd   rf   s     r   re   zServiceModel.resolve_shape_refc  ri   r   c                 óR   — t          | j                             di ¦  «        ¦  «        S )Nr    ©Úlistr¡   rN   r#   s    r   Úshape_nameszServiceModel.shape_namesf  s#   € å�DÔ-×1Ò1°(¸BÑ?Ô?Ñ@Ô@Ð@r   c                 ó¨   — g }| j         D ]G}|                      |¦  «        }|j                             dd¦  «        r|                     |¦  «         ŒH|S )Nr@   F)r¹   r­   r_   rN   Úappend)r$   r²   rS   r´   s       r   r²   zServiceModel.error_shapesj  s`   € àˆØÔ*ð 	1ð 	1ˆJØŸ.š.¨Ñ4Ô4ˆKØÔ#×'Ò'¨°UÑ;Ô;ð 1Ø×#Ò# KÑ0Ô0Ð0øØÐr   c                 óˆ   — 	 | j         d         |         }n# t          $ r t          |¦  «        ‚w xY wt          || |¦  «        S ©NÚ
operations)r¡   ÚKeyErrorr   ÚOperationModel)r$   Úoperation_namerZ   s      r   Úoperation_modelzServiceModel.operation_models  sV   € ð	9ØÔ-¨lÔ;¸NÔKˆEˆEøÝð 	9ð 	9ð 	9Ý(¨Ñ8Ô8Ð8ð	9øøøå˜e T¨>Ñ:Ô:Ð:s   ‚ –0c                 ó8   — | j                              dd¦  «        S ©NrJ   rK   )r¡   rN   r#   s    r   rJ   zServiceModel.documentation{  s   € àÔ(×,Ò,¨_¸bÑAÔAÐAr   c                 óR   — t          | j                             dg ¦  «        ¦  «        S r½   r·   r#   s    r   Úoperation_nameszServiceModel.operation_names  s#   € å�DÔ-×1Ò1°,ÀÑCÔCÑDÔDÐDr   c                 ó,   — | j         �| j         S | j        S )a«  The name of the service.

        This defaults to the endpointPrefix defined in the service model.
        However, this value can be overriden when a ``ServiceModel`` is
        created.  If a service_name was not provided when the ``ServiceModel``
        was created and if there is no endpointPrefix defined in the
        service model, then an ``UndefinedModelAttributeError`` exception
        will be raised.

        )r¥   Úendpoint_prefixr#   s    r   r¨   zServiceModel.service_nameƒ  s   € ð ÔÐ)ØÔ%Ð%àÔ'Ð'r   c                 óŽ   — 	 t          |                      d¦  «        ¦  «        S # t          $ r t          | j        ¬¦  «        ‚w xY w)NÚ	serviceId)r¨   )r    Ú_get_metadata_propertyr	   r   r¥   r#   s    r   Ú
service_idzServiceModel.service_id”  sW   € ð	IÝ˜T×8Ò8¸ÑEÔEÑFÔFÐFøÝ+ð 	Ið 	Ið 	IÝ'°TÔ5GÐHÑHÔHÐHð	Iøøøs	   ‚!$ ¤ Ac                 óL   — | j                              d¦  «        }|€| j        }|S )z®The name to use when computing signatures.

        If the model does not define a signing name, this
        value will be the endpoint prefix defined in the model.
        ÚsigningName)r_   rN   rÈ   )r$   Úsigning_names     r   rÏ   zServiceModel.signing_name›  s-   € ð ”}×(Ò(¨Ñ7Ô7ˆØÐØÔ/ˆLØÐr   c                 ó,   — |                       d¦  «        S )NÚ
apiVersion©rË   r#   s    r   Úapi_versionzServiceModel.api_version§  s   € à×*Ò*¨<Ñ8Ô8Ð8r   c                 ó,   — |                       d¦  «        S )NÚprotocolrÒ   r#   s    r   rÕ   zServiceModel.protocol«  s   € à×*Ò*¨:Ñ6Ô6Ð6r   c                 ó,   — |                       d¦  «        S )NÚ	protocolsrÒ   r#   s    r   r×   zServiceModel.protocols¯  s   € à×*Ò*¨;Ñ7Ô7Ð7r   c                 ó´   — | j                              d¦  «        r8t          D ]}|| j        v r|c S Œt	          t          | j        | j        ¬¦  «        ‚| j        S )Nr×   )Úbotocore_supported_protocolsÚservice_supported_protocolsÚservice)r_   rN   r   r×   r
   r¨   rÕ   )r$   rÕ   s     r   Úresolved_protocolzServiceModel.resolved_protocol³  su   € ð
 Œ=×Ò˜[Ñ)Ô)ð 	Ý@ð $ð $�Ø˜tœ~Ð-Ð-Ø#�O�O�Oð .å2Ý-QØ,0¬NØÔ)ðñ ô ð ð Œ}Ðr   c                 ó,   — |                       d¦  «        S )NÚendpointPrefixrÒ   r#   s    r   rÈ   zServiceModel.endpoint_prefixÅ  s   € à×*Ò*Ð+;Ñ<Ô<Ð<r   c                 óZ   — | j         D ]"}|                      |¦  «        }|j        r|c S Œ#d S r"   )rÆ   rÂ   Úis_endpoint_discovery_operation©r$   Ú	operationrZ   s      r   Úendpoint_discovery_operationz)ServiceModel.endpoint_discovery_operationÉ  sJ   € àÔ-ð 	ð 	ˆIØ×(Ò(¨Ñ3Ô3ˆEØÔ4ð Ø���ðð	ð 	r   c                 óŒ   — | j         D ];}|                      |¦  «        }|j        �|j                             d¦  «        r dS Œ<dS )Nr8   TF)rÆ   rÂ   Úendpoint_discoveryrN   rá   s      r   Úendpoint_discovery_requiredz(ServiceModel.endpoint_discovery_requiredÐ  sX   € àÔ-ð 	ð 	ˆIØ×(Ò(¨Ñ3Ô3ˆEàÔ(Ð4ØÔ,×0Ò0°Ñ<Ô<ð 5ð �t�tøØˆur   c                 ót   — | j                              di ¦  «        }d„ |                     ¦   «         D ¦   «         S )NrF   c                 óP   — g | ]#\  }}t          ||d          |d         ¬¦  «        ‘Œ$S )rI   rJ   )rL   rI   rJ   )rœ   )Ú.0Ú
param_nameÚ	param_vals      r   ú
<listcomp>z:ServiceModel.client_context_parameters.<locals>.<listcomp>Þ  sP   € ð 
ð 
ð 
ñ &�
˜Iõ #ØØ˜vÔ&Ø'¨Ô8ðñ ô ð
ð 
ð 
r   )r¡   rN   ry   ©r$   Úparamss     r   Úclient_context_parametersz&ServiceModel.client_context_parametersÛ  sF   € àÔ*×.Ò.Ð/DÀbÑIÔIˆð
ð 
ð *0¯ª©¬ð
ñ 
ô 
ð 	
r   c                 ód   — 	 | j         |         S # t          $ r t          d|› d| › �¦  «        ‚w xY w)Nú"z," not defined in the metadata of the model: )r_   r¿   r	   ©r$   rL   s     r   rË   z#ServiceModel._get_metadata_propertyç  sT   € ð	Ø”= Ô&Ð&øÝð 	ð 	ð 	Ý.ØL�DÐLÐLÀdÐLÐLñô ð ð	øøøs   ‚ � /c                 ón   — | j         t          u r!| j                             d¦  «        }|| _         | j         S )NÚsignatureVersion)r¤   r£   r_   rN   )r$   Úsignature_versions     r   rõ   zServiceModel.signature_versionò  s8   € àÔ"¥gÐ-Ð-Ø $¤× 1Ò 1Ð2DÑ EÔ EÐØ&7ˆDÔ#ØÔ&Ð&r   c                 ó   — || _         d S r"   )r¤   )r$   r�   s     r   rõ   zServiceModel.signature_versionù  s   € à"'ˆÔÐÐr   c                 ó   — d| j         v S )NÚawsQueryCompatible©r_   r#   s    r   Úis_query_compatiblez ServiceModel.is_query_compatibleý  s   € à# t¤}Ð4Ð4r   c                 ó0   — | j         j        › d| j        › d�S )Nrl   ú))rn   r   r¨   r#   s    r   ro   zServiceModel.__repr__  s!   € Ø”.Ô)Ð@Ð@¨DÔ,=Ð@Ð@Ð@Ð@r   r"   )!r   r   r   rr   rV   r­   r°   r   r¯   re   r¹   r²   r   rÂ   rJ   rÆ   r¨   rÌ   rÏ   rÓ   rÕ   r×   rÜ   rÈ   rã   ræ   rï   rË   rt   rõ   Úsetterrú   ro   r   r   r   rž   rž   -  s¶  € € € € € ðð ð"ð "ð "ð "ð>
ð 
ð 
ð 
ð
<ð <ð <ð ð ð  ñ „^ð ðAð Að Að ðAð Añ „^ðAð ðð ñ „^ðð ð;ð ;ñ „^ð;ð ðBð Bñ „^ðBð ðEð Eñ „^ðEð ð(ð (ñ „^ð(ð  ðIð Iñ „^ðIð ð	ð 	ñ „^ð	ð ð9ð 9ñ „^ð9ð ð7ð 7ñ „^ð7ð ð8ð 8ñ „^ð8ð ðð ñ „^ðð" ð=ð =ñ „^ð=ð ðð ñ „^ðð ðð ñ „^ðð ð	
ð 	
ñ „^ð	
ðð ð ð ð'ð 'ñ „Xð'ð Ôð(ð (ñ Ôð(ð ð5ð 5ñ „^ð5ðAð Að Að Að Ar   rž   c                   ó|  — e Zd Zd$d„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z ed„ ¦   «         Z!ed„ ¦   «         Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&dS )%rÀ   Nc                 ó²   — || _         || _        || _        |                     d¦  «        | _        |j        | _        |                     di ¦  «        | _        dS )a†  

        :type operation_model: dict
        :param operation_model: The operation model.  This comes from the
            service model, and is the value associated with the operation
            name in the service model (i.e ``model['operations'][op_name]``).

        :type service_model: botocore.model.ServiceModel
        :param service_model: The service model associated with the operation.

        :type name: string
        :param name: The operation name.  This is the operation name exposed to
            the users of this model.  This can potentially be different from
            the "wire_name", which is the operation name that *must* by
            provided over the wire.  For example, given::

               "CreateCloudFrontOriginAccessIdentity":{
                 "name":"CreateCloudFrontOriginAccessIdentity2014_11_06",
                  ...
              }

           The ``name`` would be ``CreateCloudFrontOriginAccessIdentity``,
           but the ``self.wire_name`` would be
           ``CreateCloudFrontOriginAccessIdentity2014_11_06``, which is the
           value we must send in the corresponding HTTP request.

        rL   ÚhttpN)Ú_operation_modelÚ_service_modelÚ	_api_namerN   Ú
_wire_namer_   r   )r$   rÂ   Úservice_modelrL   s       r   rV   zOperationModel.__init__  sW   € ð8 !0ˆÔØ+ˆÔØˆŒð *×-Ò-¨fÑ5Ô5ˆŒØ%Ô.ˆŒØ#×'Ò'¨°Ñ3Ô3ˆŒ	ˆ	ˆ	r   c                 ó,   — | j         �| j         S | j        S r"   )r  Ú	wire_namer#   s    r   rL   zOperationModel.name+  s   € àŒ>Ð%Ø”>Ð!à”>Ð!r   c                 ó6   — | j                              d¦  «        S )aR  The wire name of the operation.

        In many situations this is the same value as the
        ``name``, value, but in some services, the operation name
        exposed to the user is different from the operation name
        we send across the wire (e.g cloudfront).

        Any serialization code should use ``wire_name``.

        rL   ©r  rN   r#   s    r   r  zOperationModel.wire_name2  s   € ð Ô$×(Ò(¨Ñ0Ô0Ð0r   c                 ó   — | j         S r"   )r  r#   s    r   r  zOperationModel.service_model@  s   € àÔ"Ð"r   c                 ó8   — | j                              dd¦  «        S rÄ   r	  r#   s    r   rJ   zOperationModel.documentationD  s   € àÔ$×(Ò(¨¸"Ñ=Ô=Ð=r   c                 ó8   — | j                              dd¦  «        S )NÚ
deprecatedFr	  r#   s    r   r  zOperationModel.deprecatedH  s   € àÔ$×(Ò(¨°uÑ=Ô=Ð=r   c                 ó8   — | j                              dd ¦  «        S )NÚendpointdiscoveryr	  r#   s    r   rå   z!OperationModel.endpoint_discoveryL  s   € ð Ô$×(Ò(Ð)<¸dÑCÔCÐCr   c                 ó8   — | j                              dd¦  «        S )NÚendpointoperationFr	  r#   s    r   rà   z.OperationModel.is_endpoint_discovery_operationR  s   € àÔ$×(Ò(Ð)<¸eÑDÔDÐDr   c                 ób   — d| j         vrd S | j                             | j         d         ¦  «        S )NÚinput©r  r  re   r#   s    r   Úinput_shapezOperationModel.input_shapeV  s=   € à˜$Ô/Ð/Ð/ð �4ØÔ"×4Ò4ØÔ! 'Ô*ñ
ô 
ð 	
r   c                 ób   — d| j         vrd S | j                             | j         d         ¦  «        S )NÚoutputr  r#   s    r   Úoutput_shapezOperationModel.output_shape`  s=   € à˜4Ô0Ð0Ð0ð �4ØÔ"×4Ò4ØÔ! (Ô+ñ
ô 
ð 	
r   c                 ó^   — | j         }|sg S d„ |j                             ¦   «         D ¦   «         S )Nc                 óD   — g | ]\  }}d |j         v ¯|j         d          ¯|‘ŒS )r>   rù   ©ré   rL   Úshapes      r   rì   z5OperationModel.idempotent_members.<locals>.<listcomp>q  sC   € ð 
ð 
ð 
á��uØ! U¤^Ð3Ð3Ø”Ð1Ô2ð 4ð à3Ð3Ð3r   ©r  rx   ry   )r$   r  s     r   Úidempotent_membersz!OperationModel.idempotent_membersk  sG   € àÔ&ˆØð 	ØˆIð
ð 
à!,Ô!4×!:Ò!:Ñ!<Ô!<ð
ñ 
ô 
ð 	
r   c                 ót   — | j                              di ¦  «        }d„ |                     ¦   «         D ¦   «         S )NÚstaticContextParamsc                 ó\   — g | ])\  }}t          ||                     d ¦  «        ¬¦  «        ‘Œ*S )r�   )rL   r�   )r”   rN   )ré   rL   Úpropss      r   rì   z<OperationModel.static_context_parameters.<locals>.<listcomp>{  sE   € ð 
ð 
ð 
á��eõ #¨°E·I²I¸gÑ4FÔ4FÐGÑGÔGð
ð 
ð 
r   )r  rN   ry   rí   s     r   Ústatic_context_parametersz(OperationModel.static_context_parametersx  sD   € àÔ&×*Ò*Ð+@À"ÑEÔEˆð
ð 
à%Ÿ|š|™~œ~ð
ñ 
ô 
ð 	
r   c                 ód   — | j         sg S d„ | j         j                             ¦   «         D ¦   «         S )Nc                 óˆ   — g | ]?\  }}d |j         v r1d|j         d          v ¯t          |j         d          d         |¬¦  «        ‘Œ@S )rE   rL   )rL   r|   )r_   r™   r  s      r   rì   z5OperationModel.context_parameters.<locals>.<listcomp>…  sj   € ð 
ð 
ð 
ñ
 ��eØ ¤Ð/Ð/Ø˜%œ.¨Ô8Ð8Ð8õ Ø”^ NÔ3°FÔ;Ø ðñ ô ð 9Ð8Ð8r   r  r#   s    r   Úcontext_parametersz!OperationModel.context_parameters€  sG   € àÔð 	ØˆIð
ð 
ð
  $Ô/Ô7×=Ò=Ñ?Ô?ð
ñ 
ô 
ð 	
r   c                 ó8   — | j                              dg ¦  «        S )NÚoperationContextParamsr	  r#   s    r   Úoperation_context_parametersz+OperationModel.operation_context_parameters�  s   € àÔ$×(Ò(Ð)AÀ2ÑFÔFÐFr   c                 ó6   — | j                              d¦  «        S )NÚrequestcompressionr	  r#   s    r   Úrequest_compressionz"OperationModel.request_compression“  s   € àÔ$×(Ò(Ð)=Ñ>Ô>Ð>r   c                 ó6   — | j                              d¦  «        S )NÚauthr	  r#   s    r   r.  zOperationModel.auth—  s   € àÔ$×(Ò(¨Ñ0Ô0Ð0r   c                 ó6   — | j                              d¦  «        S )NÚauthtyper	  r#   s    r   Ú	auth_typezOperationModel.auth_type›  ó   € àÔ$×(Ò(¨Ñ4Ô4Ð4r   c                 óF   — | j         rt          | j         ¦  «        S | j        S r"   )r.  r   r1  r#   s    r   Úresolved_auth_typez!OperationModel.resolved_auth_typeŸ  s$   € àŒ9ð 	0Ý$ T¤YÑ/Ô/Ð/ØŒ~Ðr   c                 ó6   — | j                              d¦  «        S )NÚunsignedPayloadr	  r#   s    r   Úunsigned_payloadzOperationModel.unsigned_payload¥  s   € àÔ$×(Ò(Ð):Ñ;Ô;Ð;r   c                 óp   ‡ — ‰ j                              dg ¦  «        }t          ˆ fd„|D ¦   «         ¦  «        S )NÚerrorsc              3   óL   •K  — | ]}‰j                              |¦  «        V — Œd S r"   )r  re   )ré   Úsr$   s     €r   ú	<genexpr>z.OperationModel.error_shapes.<locals>.<genexpr>¬  s4   øè è € ÐMÐMÀ�DÔ'×9Ò9¸!Ñ<Ô<ÐMÐMÐMÐMÐMÐMr   )r  rN   r¸   )r$   r    s   ` r   r²   zOperationModel.error_shapes©  s>   ø€ àÔ&×*Ò*¨8°RÑ8Ô8ˆÝÐMÐMÐMÐMÀfÐMÑMÔMÑMÔMÐMr   c                 ó6   — | j                              d¦  «        S )NÚendpointr	  r#   s    r   r>  zOperationModel.endpoint®  r2  r   c                 ó8   — | j                              dd¦  «        S )NÚhttpChecksumRequiredFr	  r#   s    r   Úhttp_checksum_requiredz%OperationModel.http_checksum_required²  s   € àÔ$×(Ò(Ð)?ÀÑGÔGÐGr   c                 ó8   — | j                              di ¦  «        S )NÚhttpChecksumr	  r#   s    r   Úhttp_checksumzOperationModel.http_checksum¶  s   € àÔ$×(Ò(¨¸Ñ<Ô<Ð<r   c                 ó.   — |                       ¦   «         d uS r"   )Úget_event_stream_inputr#   s    r   Úhas_event_stream_inputz%OperationModel.has_event_stream_inputº  s   € à×*Ò*Ñ,Ô,°DÐ8Ð8r   c                 ó.   — |                       ¦   «         d uS r"   )Úget_event_stream_outputr#   s    r   Úhas_event_stream_outputz&OperationModel.has_event_stream_output¾  s   € à×+Ò+Ñ-Ô-°TÐ9Ð9r   c                 ó6   — |                       | j        ¦  «        S r"   )Ú_get_event_streamr  r#   s    r   rF  z%OperationModel.get_event_stream_inputÂ  s   € Ø×%Ò% dÔ&6Ñ7Ô7Ð7r   c                 ó6   — |                       | j        ¦  «        S r"   )rL  r  r#   s    r   rI  z&OperationModel.get_event_stream_outputÅ  s   € Ø×%Ò% dÔ&7Ñ8Ô8Ð8r   c                 ó:   — |€dS |j         }|r|j        |         S dS )zAReturns the event stream member's shape if any or None otherwise.N)rq   rx   )r$   r  Ú
event_names      r   rL  z OperationModel._get_event_streamÈ  s.   € àˆ=Ø�4ØÔ,ˆ
Øð 	-Ø”= Ô,Ð,Øˆtr   c                 ó.   — |                       ¦   «         d uS r"   )Úget_streaming_inputr#   s    r   Úhas_streaming_inputz"OperationModel.has_streaming_inputÑ  s   € à×'Ò'Ñ)Ô)°Ð5Ð5r   c                 ó.   — |                       ¦   «         d uS r"   )Úget_streaming_outputr#   s    r   Úhas_streaming_outputz#OperationModel.has_streaming_outputÕ  s   € à×(Ò(Ñ*Ô*°$Ð6Ð6r   c                 ó6   — |                       | j        ¦  «        S r"   )Ú_get_streaming_bodyr  r#   s    r   rQ  z"OperationModel.get_streaming_inputÙ  s   € Ø×'Ò'¨Ô(8Ñ9Ô9Ð9r   c                 ó6   — |                       | j        ¦  «        S r"   )rW  r  r#   s    r   rT  z#OperationModel.get_streaming_outputÜ  s   € Ø×'Ò'¨Ô(9Ñ:Ô:Ð:r   c                 óz   — |€dS |j                              d¦  «        }|�|j        |         }|j        dk    r|S dS )z?Returns the streaming member's shape if any; or None otherwise.Nr,   Úblob)r[   rN   rx   rM   )r$   r  r,   Úpayload_shapes       r   rW  z"OperationModel._get_streaming_bodyß  sM   € àˆ=Ø�4ØÔ%×)Ò)¨)Ñ4Ô4ˆØÐØ!œM¨'Ô2ˆMØÔ&¨&Ò0Ð0Ø$Ð$Øˆtr   c                 ó0   — | j         j        › d| j        › d�S )Nz(name=rü   rm   r#   s    r   ro   zOperationModel.__repr__ê  s    € Ø”.Ô)Ð=Ð=°´Ð=Ð=Ð=Ð=r   r"   )'r   r   r   rV   r   rL   rt   r  r  rJ   r  rå   rà   r  r  r  r#  r&  r)  r,  r.  r1  r4  r7  r²   r>  rA  rD  rG  rJ  rF  rI  rL  rR  rU  rQ  rT  rW  ro   r   r   r   rÀ   rÀ     s_  € € € € € ð#4ð #4ð #4ð #4ðJ ð"ð "ñ „^ð"ð ð1ð 1ñ „Xð1ð ð#ð #ñ „Xð#ð ð>ð >ñ „^ð>ð ð>ð >ñ „^ð>ð ðDð Dñ „^ðDð
 ðEð Eñ „^ðEð ð
ð 
ñ „^ð
ð ð
ð 
ñ „^ð
ð ð

ð 

ñ „^ð

ð ð
ð 
ñ „^ð
ð ð
ð 
ñ „^ð
ð ðGð Gñ „^ðGð ð?ð ?ñ „^ð?ð ð1ð 1ñ „^ð1ð ð5ð 5ñ „^ð5ð ðð ñ „^ðð
 ð<ð <ñ „^ð<ð ðNð Nñ „^ðNð ð5ð 5ñ „^ð5ð ðHð Hñ „^ðHð ð=ð =ñ „^ð=ð ð9ð 9ñ „^ð9ð ð:ð :ñ „^ð:ð8ð 8ð 8ð9ð 9ð 9ðð ð ð ð6ð 6ñ „^ð6ð ð7ð 7ñ „^ð7ð:ð :ð :ð;ð ;ð ;ð	ð 	ð 	ð>ð >ð >ð >ð >r   rÀ   c                   ó4   — e Zd ZdZeeeedœZd„ Z	dd„Z
d„ ZdS )r¢   zResolves shape references.)Ú	structurer¸   ÚmapÚstringc                 ó"   — || _         i | _        d S r"   )Ú
_shape_mapÚ_shape_cache)r$   Ú	shape_maps     r   rV   zShapeResolver.__init__ù  s   € Ø#ˆŒØˆÔÐÐr   Nc                 ó^  — 	 | j         |         }n# t          $ r t          |¦  «        ‚w xY w	 | j                             |d         t
          ¦  «        }n # t          $ r t          d|› �¦  «        ‚w xY w|r)|                     ¦   «         }|                     |¦  «          |||| ¦  «        }|S )NrI   z&Shape is missing required key 'type': )	rb  r¿   r   ÚSHAPE_CLASSESrN   r'   r   ÚcopyÚupdate)r$   rS   r¬   rT   Ú	shape_clsÚresults         r   rª   zShapeResolver.get_shape_by_nameý  sá   € ð	0Øœ/¨*Ô5ˆKˆKøÝð 	0ð 	0ð 	0Ý# JÑ/Ô/Ð/ð	0øøøð	ØÔ*×.Ò.¨{¸6Ô/BÅEÑJÔJˆIˆIøÝð 	ð 	ð 	Ý#ØF¸ÐFÐFñô ð ð	øøøð ð 	.Ø%×*Ò*Ñ,Ô,ˆKØ×Ò˜}Ñ-Ô-Ð-Ø�˜: {°DÑ9Ô9ˆØˆs   ‚ �*®&A ÁA2c                 ó(  — t          |¦  «        dk    rd|v r|                      |d         ¦  «        S |                     ¦   «         }	 |                     d¦  «        }n # t          $ r t          d|› �¦  «        ‚w xY w|                      ||¦  «        S )Né   r  z(Invalid model, missing shape reference: )Úlenrª   rg  rY   r¿   r   )r$   rg   r¬   rS   s       r   re   zShapeResolver.resolve_shape_ref  s³   € õ ˆy‰>Œ>˜QÒÐ 7¨iÐ#7Ð#7ð ×)Ò)¨)°GÔ*<Ñ=Ô=Ð=à%ŸNšNÑ,Ô,ˆMðØ*×.Ò.¨wÑ7Ô7�
�
øÝð ð ð Ý0ØJ¸yÐJÐJñô ð ðøøøð ×)Ò)¨*°mÑDÔDÐDs   ÁA ÁA;r"   )r   r   r   rr   rv   r‡   r‹   r‘   rf  rV   rª   re   r   r   r   r¢   r¢   î  sk   € € € € € Ø$Ð$ð $ØØØð	ð €Mðð ð ðð ð ð ð"Eð Eð Eð Eð Er   r¢   c                   ó    — e Zd ZdZdd„Zd„ ZdS )rP   zEA ShapeResolver that will throw ValueErrors when shapes are resolved.Nc                 ó(   — t          d|› d�¦  «        ‚)NzAttempted to lookup shape 'ú!', but no shape map was provided.©Ú
ValueErrorr«   s      r   rª   z&UnresolvableShapeMap.get_shape_by_name'  s"   € ÝØW¨*ÐWÐWÐWñ
ô 
ð 	
r   c                 ó(   — t          d|› d�¦  «        ‚)NzAttempted to resolve shape 'rp  rq  rf   s     r   re   z&UnresolvableShapeMap.resolve_shape_ref,  s*   € Ýð!¨9ð !ð !ð !ñ
ô 
ð 	
r   r"   )r   r   r   rr   rª   re   r   r   r   rP   rP   $  s=   € € € € € ØOÐOð
ð 
ð 
ð 
ð

ð 
ð 
ð 
ð 
r   rP   c                   óT   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ ZdS )ÚDenormalizedStructureBuilderaÊ  Build a StructureShape from a denormalized model.

    This is a convenience builder class that makes it easy to construct
    ``StructureShape``s based on a denormalized model.

    It will handle the details of creating unique shape names and creating
    the appropriate shape map needed by the ``StructureShape`` class.

    Example usage::

        builder = DenormalizedStructureBuilder()
        shape = builder.with_members({
            'A': {
                'type': 'structure',
                'members': {
                    'B': {
                        'type': 'structure',
                        'members': {
                            'C': {
                                'type': 'string',
                            }
                        }
                    }
                }
            }
        }).build_model()
        # ``shape`` is now an instance of botocore.model.StructureShape

    :type dict_type: class
    :param dict_type: The dictionary type to use, allowing you to opt-in
                      to using OrderedDict or another dict type. This can
                      be particularly useful for testing when order
                      matters, such as for documentation.

    )	r`  ÚintegerÚbooleanrZ  ÚfloatÚ	timestampÚlongÚdoubleÚcharNc                 ó˜   — t          ¦   «         | _        t          ¦   «         | _        |€!| j                             d¦  «        | _        d S d S )Nr^  )r   rx   ÚShapeNameGeneratorÚ_name_generatorÚnew_shape_namerL   rò   s     r   rV   z%DenormalizedStructureBuilder.__init__d  sC   € Ý"‘}”}ˆŒÝ1Ñ3Ô3ˆÔØˆ<ØÔ,×;Ò;¸KÑHÔHˆDŒIˆIˆIð ˆ<r   c                 ó   — || _         | S )zp

        :type members: dict
        :param members: The denormalized members.

        :return: self

        )Ú_members)r$   rx   s     r   Úwith_membersz)DenormalizedStructureBuilder.with_membersj  s   € ð  ˆŒØˆr   c                 óÎ   — t          ¦   «         }d| j        dœ}|                      ||| j        ¦  «         t	          |¬¦  «        }t          | j        || j                 |¬¦  «        S )z™Build the model based on the provided members.

        :rtype: botocore.model.StructureShape
        :return: The built StructureShape object.

        r^  )rI   rx   )rd  )rS   rT   rU   )r   r‚  Ú_build_modelrL   r¢   rv   )r$   r    ÚdenormalizedÚresolvers       r   Úbuild_modelz(DenormalizedStructureBuilder.build_modelv  sv   € õ ‘”ˆàØ”}ð
ð 
ˆð 	×Ò˜,¨°´	Ñ:Ô:Ð:Ý ¨6Ð2Ñ2Ô2ˆÝØ”yØ˜tœyÔ)Ø#ð
ñ 
ô 
ð 	
r   c                 ón  — |d         dk    r|                       ||¦  «        ||<   d S |d         dk    r|                      ||¦  «        ||<   d S |d         dk    r|                      ||¦  «        ||<   d S |d         | j        v r|                      |¦  «        ||<   d S t          d|d         › �¦  «        ‚)NrI   r^  r¸   r_  zUnknown shape type: )Ú_build_structureÚ_build_listÚ
_build_mapÚSCALAR_TYPESÚ_build_scalarr   )r$   rZ   r    rS   s       r   r…  z)DenormalizedStructureBuilder._build_modelŠ  sØ   € Ø�Œ=˜KÒ'Ð'Ø!%×!6Ò!6°u¸fÑ!EÔ!EˆF�:ÑÐÐØ�6Œ]˜fÒ$Ð$Ø!%×!1Ò!1°%¸Ñ!@Ô!@ˆF�:ÑÐÐØ�6Œ]˜eÒ#Ð#Ø!%§¢°¸Ñ!?Ô!?ˆF�:ÑÐÐØ�6Œ]˜dÔ/Ð/Ð/Ø!%×!3Ò!3°EÑ!:Ô!:ˆF�:ÑÐÐå#Ð$J¸5À¼=Ð$JÐ$JÑKÔKÐKr   c                 ó0  — t          ¦   «         }|                      |¦  «        }||d<   |                     dt          ¦   «         ¦  «                             ¦   «         D ]8\  }}|                      |¦  «        }d|i||<   |                      |||¦  «         Œ9|S )Nrx   r  )r   Ú_build_initial_shaperN   ry   Ú_get_shape_namer…  )r$   rZ   r    rx   r  rL   Úmember_modelÚmember_shape_names           r   rŠ  z-DenormalizedStructureBuilder._build_structure–  s    € Ý‘-”-ˆØ×)Ò)¨%Ñ0Ô0ˆØ"ˆˆiÑà"'§)¢)¨Iµ{±}´}Ñ"EÔ"E×"KÒ"KÑ"MÔ"Mð 	Gð 	GÑˆD�,Ø $× 4Ò 4°\Ñ BÔ BÐØ$Ð&7Ð8ˆG�D‰MØ×Ò˜l¨FÐ4EÑFÔFÐFÐFØˆr   c                 ó¢   — |                       |¦  «        }|                      |¦  «        }d|i|d<   |                      |d         ||¦  «         |S )Nr  r}   ©r‘  r�  r…  )r$   rZ   r    r“  r  s        r   r‹  z(DenormalizedStructureBuilder._build_list¡  sZ   € Ø ×0Ò0°Ñ7Ô7ÐØ×)Ò)¨%Ñ0Ô0ˆØ"Ð$5Ð6ˆˆh‰Ø×Ò˜% œ/¨6Ð3DÑEÔEÐEØˆr   c                 ó,  — |                       |d         ¦  «        }|                       |d         ¦  «        }|                      |¦  «        }d|i|d<   d|i|d<   |                      |d         ||¦  «         |                      |d         ||¦  «         |S )Nr�   r�   r  r•  )r$   rZ   r    Úkey_shape_nameÚvalue_shape_namer  s         r   rŒ  z'DenormalizedStructureBuilder._build_map¨  sŸ   € Ø×-Ò-¨e°E¬lÑ;Ô;ˆØ×/Ò/°°g´Ñ?Ô?ÐØ×)Ò)¨%Ñ0Ô0ˆØ Ð0ˆˆe‰Ø!Ð#3Ð4ˆˆg‰Ø×Ò˜% œ,¨°Ñ?Ô?Ð?Ø×Ò˜% œ.¨&Ð2BÑCÔCÐCØˆr   c                 ót   — d|d         i}d|v r|d         |d<   t           j        D ]}||v r||         ||<   Œ|S )NrI   rJ   )r'   r^   )r$   rZ   r  r\   s       r   r�  z1DenormalizedStructureBuilder._build_initial_shape²  s\   € à�E˜&”Mð
ˆð ˜eÐ#Ð#Ø%*¨?Ô%;ˆE�/Ñ"ÝÔ(ð 	*ð 	*ˆDØ�uˆ}ˆ}Ø# Dœk��d‘øØˆr   c                 ó,   — |                       |¦  «        S r"   )r�  ©r$   rZ   s     r   rŽ  z*DenormalizedStructureBuilder._build_scalar½  s   € Ø×(Ò(¨Ñ/Ô/Ð/r   c                 óZ   — d|v r|d         S | j                              |d         ¦  «        S )NrS   rI   )r  r€  r›  s     r   r‘  z,DenormalizedStructureBuilder._get_shape_nameÀ  s3   € Ø˜5Ð Ð Ø˜Ô&Ð&àÔ'×6Ò6°u¸V´}ÑEÔEÐEr   r"   )r   r   r   rr   r�  rV   rƒ  rˆ  r…  rŠ  r‹  rŒ  r�  rŽ  r‘  r   r   r   ru  ru  3  sÍ   € € € € € ð"ð "ðH
€LðIð Ið Ið Ið
ð 
ð 
ð
ð 
ð 
ð(
Lð 
Lð 
Lð	ð 	ð 	ðð ð ðð ð ð	ð 	ð 	ð0ð 0ð 0ðFð Fð Fð Fð Fr   ru  c                   ó   — e Zd ZdZd„ Zd„ ZdS )r~  z³Generate unique shape names for a type.

    This class can be used in conjunction with the DenormalizedStructureBuilder
    to generate unique shape names for a given type.

    c                 ó8   — t          t          ¦  «        | _        d S r"   )r   ÚintÚ_name_cacher#   s    r   rV   zShapeNameGenerator.__init__Ï  s   € Ý&¥sÑ+Ô+ˆÔÐÐr   c                 óx   — | j         |xx         dz  cc<   | j         |         }|                     ¦   «         › d|› �S )aŸ  Generate a unique shape name.

        This method will guarantee a unique shape name each time it is
        called with the same type.

        ::

            >>> s = ShapeNameGenerator()
            >>> s.new_shape_name('structure')
            'StructureType1'
            >>> s.new_shape_name('structure')
            'StructureType2'
            >>> s.new_shape_name('list')
            'ListType1'
            >>> s.new_shape_name('list')
            'ListType2'


        :type type_name: string
        :param type_name: The type name (structure, list, map, string, etc.)

        :rtype: string
        :return: A unique shape name for the given type

        rl  ÚType)r   Ú
capitalize)r$   rM   Úcurrent_indexs      r   r€  z!ShapeNameGenerator.new_shape_nameÒ  sP   € ð4 	Ô˜Ð#Ð#Ô# qÑ(Ð#Ð#Ñ#ØÔ(¨Ô3ˆØ×&Ò&Ñ(Ô(Ð=Ð=¨mÐ=Ð=Ð=r   N)r   r   r   rr   rV   r€  r   r   r   r~  r~  Ç  s<   € € € € € ðð ð,ð ,ð ,ð>ð >ð >ð >ð >r   r~  N)*rr   Úcollectionsr   Útypingr   r   Úbotocore.authr   Úbotocore.compatr   Úbotocore.exceptionsr   r	   r
   Úbotocore.utilsr   r   r   r   Úobjectr£   Ú	Exceptionr   r   r   r   r•   r    r'   rv   r‡   r‹   r‘   r”   r™   rœ   rž   rÀ   r¢   rP   ru  r~  r   r   r   ú<module>r­     s>  ðð 4Ð 3à #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à +Ð +Ð +Ð +Ð +Ð +Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ˆ&‰(Œ(€ð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜Yñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	 ñ 	ô 	ð 	ð*ð *ð *ð *ð *�ñ *ô *ð *ð
bð bð bð bð bñ bô bð bðJ'1ð '1ð '1ð '1ð '1�Uñ '1ô '1ð '1ðTDð Dð Dð Dð D�ñ Dô Dð DðCð Cð Cð Cð Cˆuñ Cô Cð Cð-ð -ð -ð -ð -�%ñ -ô -ð -ðð ð ð ð ˜Zñ ô ð ð
ð ð ð ð �zñ ô ð ð
ð ð ð ð ˜Zñ ô ð ðUAð UAð UAð UAð UAñ UAô UAð UAðpf>ð f>ð f>ð f>ð f>ñ f>ô f>ð f>ðR3Eð 3Eð 3Eð 3Eð 3Eñ 3Eô 3Eð 3Eðl
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ðQFð QFð QFð QFð QFñ QFô QFð QFðh'>ð '>ð '>ð '>ð '>ñ '>ô '>ð '>ð '>ð '>r   