+
    šÜi[~  ã                   ó  € R t ^ RIHt ^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHt ^ RIHtHtHtHt ]! 4       t ! R R]4      t ! R	 R
]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]4      t" ! R R ]4      t# ! R! R"4      t$ ! R# R$4      t% ! R% R&4      t& ! R' R(4      t' ! R) R*4      t( ! R+ R,4      t)R-# ).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                   ó   € ] tR t^#tRtR# )ÚNoShapeFoundError© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú0/usr/lib/python3/dist-packages/botocore/model.pyr   r   #   ó   † Ûr   r   c                   ó   € ] tR t^'tRtR# )ÚInvalidShapeErrorr   Nr   r   r   r   r   r   '   r   r   r   c                   ó   € ] tR t^+tRtR# )ÚOperationNotFoundErrorr   Nr   r   r   r   r   r   +   r   r   r   c                   ó   € ] tR t^/tRtR# )ÚInvalidShapeReferenceErrorr   Nr   r   r   r   r   r   /   r   r   r   c                   ó&   a € ] tR t^3t o R tRtV tR# )Ú	ServiceIdc                ó   € \        V 4      # ©N)r   ©Úselfs   &r   Ú	hyphenizeÚServiceId.hyphenize4   s   € Ü# DÓ)Ð)r   r   N)r   r   r   r   r&   r   Ú__classdictcell__©Ú__classdict__s   @r   r!   r!   3   s   ø‡ € ÷*ð *r   r!   c                   óŽ   a € ] tR t^8t o Rt. ROt. ROt]tRR lt	]
R 4       t]
R 4       t]
R 4       tR tR t]R	 4       tR
tV tR# )ÚShapez3Object representing a shape from the service model.Nc                óž   € Wn         VR,          V n        VP                  RR4      V n        W n        Vf   \        4       pW0n        / V n        R# )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Úgetr/   Ú_shape_modelÚUnresolvableShapeMapÚ_shape_resolverÚ_cache)r%   Ú
shape_nameÚshape_modelÚshape_resolvers   &&&&r   Ú__init__ÚShape.__init__f   sK   € ð( Œ	Ø$ VÕ,ˆŒØ(Ÿ_™_¨_¸bÓAˆÔØ'ÔØÒ!ô 2Ó3ˆNØ-ÔØˆŽr   c                ó¶   € V P                   p/ pV P                   F  pW0P                   9   g   K  W,          W#&   K!  	  RV9   d   VP                  R4      VR&   V# )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.

ÚlocationNamer1   )r4   ÚSERIALIZED_ATTRSÚpop)r%   ÚmodelÚserializationÚattrs   &   r   rB   ÚShape.serializationˆ   s_   € ð. ×!Ñ!ˆØˆØ×)Ô)ˆDØ×(Ñ(Ö(Ø&+¥k�Ó#ñ *ð ˜]Ô*Ø$1×$5Ñ$5°nÓ$EˆM˜&Ñ!ØÐr   c                ó€   € V P                   p/ pV P                   F  pW0P                   9   g   K  W,          W#&   K!  	  V# )aM  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.

)r4   ÚMETADATA_ATTRS)r%   rA   ÚmetadatarC   s   &   r   rG   ÚShape.metadata©   s@   € ð. ×!Ñ!ˆØˆØ×'Ô'ˆDØ×(Ñ(Ö(Ø!&¥�“ñ (ð ˆr   c                ó:   € V P                   P                  R. 4      # )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.

Úrequired©rG   r3   r$   s   &r   Úrequired_membersÚShape.required_membersÇ   s   € ð �}‰}× Ñ  ¨RÓ0Ð0r   c                ó8   € V P                   P                  V4      # r#   ©r6   Úresolve_shape_ref©r%   Ú	shape_refs   &&r   Ú_resolve_shape_refÚShape._resolve_shape_refÒ   ó   € Ø×#Ñ#×5Ñ5°iÓ@Ð@r   c                óP   € R V P                   P                   RV P                   R2# )Ú<Ú(z)>©Ú	__class__r   r1   r$   s   &r   Ú__repr__ÚShape.__repr__Õ   s&   € Ø�4—>‘>×*Ñ*Ð+¨1¨T¯Y©Y¨K°rÐ:Ð:r   c                ó   € R # r#   r   r$   s   &r   Úevent_stream_nameÚShape.event_stream_nameØ   s   € ár   )r7   r4   r6   r/   r1   r2   )r>   Ú	queryNameÚ	flattenedÚlocationÚpayloadÚ	streamingÚtimestampFormatÚxmlNamespaceÚresultWrapperÚxmlAttributeÚeventstreamÚeventÚeventheaderÚeventpayloadÚ	jsonvaluere   Ú	hostLabel)rJ   ÚminÚmaxÚpatternÚ	sensitiveÚenumÚidempotencyTokenÚerrorÚ	exceptionÚendpointdiscoveryidÚ	retryableÚdocumentÚunionÚcontextParamÚclientContextParamsÚrequiresLengthr#   )r   r   r   r   Ú__doc__r?   rF   r   ÚMAP_TYPEr;   r   rB   rG   rL   rS   r[   Úpropertyr^   r   r(   r)   s   @r   r,   r,   8   s€   ø‡ € Ù=òÐò&€Nð$ €Hô ðD ñó ðð@ ñó ðð: ñ1ó ð1òAò;ð ñó ör   r,   c                   óp   a € ] tR t^Ýt o ]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t	Rt
V tR# )ÚStructureShapec                óÒ   € V P                   P                  R V P                  4       4      pV P                  4       pVP                  4        F  w  r4V P	                  V4      W#&   K  	  V# )Úmembers)r4   r3   r   ÚitemsrS   )r%   r„   Úshape_membersr1   rR   s   &    r   r„   ÚStructureShape.membersÞ   sX   € à×#Ñ#×'Ñ'¨	°4·=±=³?ÓCˆð Ÿ™›ˆØ&Ÿ}™}ž‰OˆDØ"&×"9Ñ"9¸)Ó"DˆMÓñ  /àÐr   c                ó–   € V P                   P                  4        F*  w  rVP                  P                  R 4      '       g   K(  Vu # 	  R# )ri   N)r„   r…   rB   r3   )r%   Úmember_nameÚmembers   &  r   r^   Ú StructureShape.event_stream_nameì   s>   € à#'§<¡<×#5Ñ#5Ö#7ÑˆKØ×#Ñ#×'Ñ'¨×6Ô6Ø"Ò"ñ $8ñ r   c                óÐ   € V P                   P                  R R4      '       g   R# V P                   P                  R/ 4      pVP                  R4      pV'       d   V# V P                  # )rv   FNru   Úcode)rG   r3   r1   )r%   Úerror_metadatar�   s   &  r   Ú
error_codeÚStructureShape.error_codeó   sT   € à�}‰}× Ñ  ¨e×4Ò4ÙØŸ™×*Ñ*¨7°BÓ7ˆØ×!Ñ! &Ó)ˆßØˆKà�y‰yÐr   c                ó:   € V P                   P                  R R4      # )ry   FrK   r$   s   &r   Úis_document_typeÚStructureShape.is_document_typeþ   s   € à�}‰}× Ñ  ¨UÓ3Ð3r   c                ó:   € V P                   P                  R R4      # )rz   FrK   r$   s   &r   Úis_tagged_unionÚStructureShape.is_tagged_union  s   € à�}‰}× Ñ  ¨%Ó0Ð0r   r   N)r   r   r   r   r   r„   r^   r�   r’   r•   r   r(   r)   s   @r   r‚   r‚   Ý   sg   ø‡ € Øñó ðð ñó ðð ñó ðð ñ4ó ð4ð ñ1ó ö1r   r‚   c                   ó0   a € ] tR tRt o ]R 4       tRtV tR# )Ú	ListShapei  c                óF   € V P                  V P                  R ,          4      # )rŠ   ©rS   r4   r$   s   &r   rŠ   ÚListShape.member  s   € à×&Ñ& t×'8Ñ'8¸Õ'BÓCÐCr   r   N)r   r   r   r   r   rŠ   r   r(   r)   s   @r   r˜   r˜     s   ø‡ € ØñDó öDr   r˜   c                   ó@   a € ] tR tRt o ]R 4       t]R 4       tRtV tR# )ÚMapShapei  c                óF   € V P                  V P                  R ,          4      # )Úkeyrš   r$   s   &r   rŸ   ÚMapShape.key  s   € à×&Ñ& t×'8Ñ'8¸Õ'?Ó@Ð@r   c                óF   € V P                  V P                  R ,          4      # )Úvaluerš   r$   s   &r   r¢   ÚMapShape.value  s   € à×&Ñ& t×'8Ñ'8¸Õ'AÓBÐBr   r   N)	r   r   r   r   r   rŸ   r¢   r   r(   r)   s   @r   r�   r�     s/   ø‡ € ØñAó ðAð ñCó öCr   r�   c                   ó0   a € ] tR tRt o ]R 4       tRtV tR# )ÚStringShapei  c                ó:   € V P                   P                  R . 4      # )rs   rK   r$   s   &r   rs   ÚStringShape.enum  s   € à�}‰}× Ñ  ¨Ó,Ð,r   r   N)r   r   r   r   r   rs   r   r(   r)   s   @r   r¥   r¥     s   ø‡ € Øñ-ó ö-r   r¥   c                   ó,   a € ] tR tRt o V 3R ltRtV tR# )ÚStaticContextParameteri  c                óH   <€ V ^8„  d   Qh/ S[ ;R&   S[S[S[ 3,          ;R&   # )é   r1   r¢   )Ústrr   Úbool)Úformatr*   s   "€r   Ú__annotate__Ú#StaticContextParameter.__annotate__  s#   ø‡ ‚ Ù
�Iñ á‘‘s�ÕÑò r   r   N©r   r   r   r   Ú__annotate_func__r   r(   r)   s   @r   r©   r©     ó   ø‡ ‡ „ r   r©   c                   ó,   a € ] tR tRt o V 3R ltRtV tR# )ÚContextParameteri"  c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   # )r«   r1   r‰   ©r¬   )r®   r*   s   "€r   r¯   ÚContextParameter.__annotate__"  s   ø‡ ‚ Ù
�Iñ áÑò r   r   Nr±   r)   s   @r   rµ   rµ   "  r³   r   rµ   c                   ó,   a € ] tR tRt o V 3R ltRtV tR# )ÚClientContextParameteri'  c                ó>   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )r«   r1   r.   r/   r·   )r®   r*   s   "€r   r¯   Ú#ClientContextParameter.__annotate__'  s&   ø‡ ‚ Ù
�Iñ á
�Iñ ñ Ñò r   r   Nr±   r)   s   @r   rº   rº   '  r³   r   rº   c                   ó¤  a € ] tR tRt o RtRR ltRR ltR t]R 4       t	R t
]R	 4       t]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tR t]R 4       t]P>                  R 4       t]R 4       t R t!Rt"V t#R# ) ÚServiceModeli-  zI

:ivar service_description: The parsed service description dictionary.

Nc                ó°   € Wn         VP                  R/ 4      V n        \        VP                  R/ 4      4      V n        \
        V n        W n        / V n        R# )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.

rG   ÚshapesN)	Ú_service_descriptionr3   rG   ÚShapeResolverr6   ÚNOT_SETÚ_signature_versionÚ_service_nameÚ_instance_cache)r%   Úservice_descriptionÚservice_names   &&&r   r;   ÚServiceModel.__init__4  sS   € ð* %8Ô!à+×/Ñ/°
¸BÓ?ˆŒÜ,Ø×#Ñ# H¨bÓ1ó 
ˆÔô #*ˆÔØ)ÔØ!ˆÖr   c                ó8   € V P                   P                  W4      # r#   )r6   Úget_shape_by_name©r%   r8   Úmember_traitss   &&&r   Ú	shape_forÚServiceModel.shape_forS  s   € Ø×#Ñ#×5Ñ5Øó
ð 	
r   c                ó:   € V P                   P                  VR 4      # r#   )Ú_error_code_cacher3   )r%   r�   s   &&r   Úshape_for_error_codeÚ!ServiceModel.shape_for_error_codeX  s   € Ø×%Ñ%×)Ñ)¨*°dÓ;Ð;r   c                óP   € / pV P                    F  pVP                  pW!V&   K  	  V# r#   )Úerror_shapesr�   )r%   Úerror_code_cacheÚerror_shaper�   s   &   r   rÑ   ÚServiceModel._error_code_cache[  s3   € àÐØ×,Ô,ˆKØ×)Ñ)ˆDØ%0˜TÓ"ñ -ð  Ðr   c                ó8   € V P                   P                  V4      # r#   rO   rQ   s   &&r   rP   ÚServiceModel.resolve_shape_refc  rU   r   c                óL   € \        V P                  P                  R / 4      4      # )rÀ   ©ÚlistrÁ   r3   r$   s   &r   Úshape_namesÚServiceModel.shape_namesf  s    € ä�D×-Ñ-×1Ñ1°(¸BÓ?Ó@Ð@r   c                ó¼   € . pV P                    FI  pV P                  V4      pVP                  P                  R R4      '       g   K8  VP	                  V4       KK  	  V# )rv   F)rÞ   rÎ   rG   r3   Úappend)r%   rÕ   r8   r×   s   &   r   rÕ   ÚServiceModel.error_shapesj  sT   € àˆØ×*Ô*ˆJØŸ.™.¨Ó4ˆKØ×#Ñ#×'Ñ'¨°U×;Ô;Ø×#Ñ# KÖ0ñ +ð Ðr   c                ó„   €  V P                   R ,          V,          p\        Y T4      #   \         d    \        T4      hi ; i©Ú
operations)rÁ   ÚKeyErrorr   ÚOperationModel)r%   Úoperation_namerA   s   && r   Úoperation_modelÚServiceModel.operation_models  sG   € ð	9Ø×-Ñ-¨lÕ;¸NÕKˆEô ˜e¨>Ó:Ð:øô ô 	9Ü(¨Ó8Ð8ð	9ús   ‚( ¨?c                ó:   € V P                   P                  R R4      # ©r/   r0   )rÁ   r3   r$   s   &r   r/   ÚServiceModel.documentation{  s   € à×(Ñ(×,Ñ,¨_¸bÓAÐAr   c                óL   € \        V P                  P                  R . 4      4      # rä   rÜ   r$   s   &r   Úoperation_namesÚServiceModel.operation_names  s    € ä�D×-Ñ-×1Ñ1°,ÀÓCÓDÐDr   c                óN   € V P                   e   V P                   # V P                  # )as  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È   ÚServiceModel.service_nameƒ  s(   € ð ×ÑÒ)Ø×%Ñ%Ð%à×'Ñ'Ð'r   c                ó‚   €  \        V P                  R 4      4      #   \         d    \        T P                  R7      hi ; i)Ú	serviceId)rÈ   )r!   Ú_get_metadata_propertyr   r   rÅ   r$   s   &r   Ú
service_idÚServiceModel.service_id”  s@   € ð	IÜ˜T×8Ñ8¸ÓEÓFÐFøÜ+ô 	IÜ'°T×5GÑ5GÔHÐHð	Iús   ‚ œ">c                ó\   € V P                   P                  R4      pVf   V P                  pV# )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)rG   r3   rò   )r%   Úsigning_names   & r   rû   ÚServiceModel.signing_name›  s/   € ð —}‘}×(Ñ(¨Ó7ˆØÒØ×/Ñ/ˆLØÐr   c                ó$   € V P                  R 4      # )Ú
apiVersion©rö   r$   s   &r   Úapi_versionÚServiceModel.api_version§  s   € à×*Ñ*¨<Ó8Ð8r   c                ó$   € V P                  R 4      # )Úprotocolrÿ   r$   s   &r   r  ÚServiceModel.protocol«  s   € à×*Ñ*¨:Ó6Ð6r   c                ó$   € V P                  R 4      # )Ú	protocolsrÿ   r$   s   &r   r  ÚServiceModel.protocols¯  s   € à×*Ñ*¨;Ó7Ð7r   c                óê   € V P                   P                  R 4      '       dH   \         F  pWP                  9   g   K  Vu # 	  \	        \        V P                  V P
                  R7      hV P                  # )r  )Úbotocore_supported_protocolsÚservice_supported_protocolsÚservice)rG   r3   r
   r  r	   rÈ   r  )r%   r  s   & r   Úresolved_protocolÚServiceModel.resolved_protocol³  sa   € ð
 �=‰=×Ñ˜[×)Ò)ß@�ØŸ~™~Ö-Ø#’Oñ Aô 3Ü-QØ,0¯N©NØ×)Ñ)ôð ð �}‰}Ðr   c                ó$   € V P                  R 4      # )ÚendpointPrefixrÿ   r$   s   &r   rò   ÚServiceModel.endpoint_prefixÅ  s   € à×*Ñ*Ð+;Ó<Ð<r   c                óz   € V P                    F*  pV P                  V4      pVP                  '       g   K(  Vu # 	  R # r#   )rï   ré   Úis_endpoint_discovery_operation©r%   Ú	operationrA   s   &  r   Úendpoint_discovery_operationÚ)ServiceModel.endpoint_discovery_operationÉ  s3   € à×-Ô-ˆIØ×(Ñ(¨Ó3ˆEØ×4×4Ò4Ø’ó .r   c                ó¶   € V P                    FH  pV P                  V4      pVP                  f   K$  VP                  P                  R4      '       g   KG   R# 	  R# )NrJ   TF)rï   ré   Úendpoint_discoveryr3   r  s   &  r   Úendpoint_discovery_requiredÚ(ServiceModel.endpoint_discovery_requiredÐ  sM   € à×-Ô-ˆIØ×(Ñ(¨Ó3ˆEà×(Ñ(Ô4Ø×,Ñ,×0Ñ0°×<Ô<âñ .ñ r   c           
     óÂ   € V P                   P                  R / 4      pVP                  4        UUu. uF!  w  r#\        VVR,          VR,          R7      NK#  	  upp# u uppi )r|   r.   r/   )r1   r.   r/   )rÁ   r3   r…   rº   )r%   ÚparamsÚ
param_nameÚ	param_vals   &   r   Úclient_context_parametersÚ&ServiceModel.client_context_parametersÛ  sg   € à×*Ñ*×.Ñ.Ð/DÀbÓIˆð *0¯©¬ô
ñ *8Ñ%�
ô #ØØ˜vÕ&Ø'¨Õ8÷ñ
 *8ò
ð 	
ùó 
s   °'Ac                ój   €  V P                   V,          #   \         d    \        R T RT  24      hi ; i)Ú"z," not defined in the metadata of the model: )rG   ræ   r   ©r%   r1   s   &&r   rö   Ú#ServiceModel._get_metadata_propertyç  sC   € ð	Ø—=‘= Õ&Ð&øÜô 	Ü.Ø�D�6ÐEÀdÀVÐLóð ð	ús   ‚ •2c                ó„   € V P                   \        J d"   V P                  P                  R 4      pWn         V P                   # )ÚsignatureVersion)rÄ   rÃ   rG   r3   )r%   Úsignature_versions   & r   r'  ÚServiceModel.signature_versionò  s8   € à×"Ñ"¤gÓ-Ø $§¡× 1Ñ 1Ð2DÓ EÐØ&7Ô#Ø×&Ñ&Ð&r   c                ó   € Wn         R # r#   )rÄ   )r%   r¢   s   &&r   r'  r(  ù  s   € à"'Ör   c                ó    € R V P                   9   # )ÚawsQueryCompatible)rG   r$   s   &r   Úis_query_compatibleÚ ServiceModel.is_query_compatibleý  s   € à# t§}¡}Ñ4Ð4r   c                óN   € V P                   P                   R V P                   R2# )rX   Ú))rZ   r   rÈ   r$   s   &r   r[   ÚServiceModel.__repr__  s'   € Ø—.‘.×)Ñ)Ð*¨!¨D×,=Ñ,=Ð+>¸aÐ@Ð@r   )rÆ   rÁ   rÅ   r6   rÄ   rG   r#   )$r   r   r   r   r~   r;   rÎ   rÒ   r   rÑ   rP   rÞ   rÕ   r   ré   r/   rï   rÈ   r÷   rû   r   r  r  r  rò   r  r  r  rö   r€   r'  Úsetterr,  r[   r   r(   r)   s   @r   r¾   r¾   -  sÎ  ø‡ € ñô"ô>
ò
<ð ñ ó ð òAð ñAó ðAð ñó ðð ñ;ó ð;ð ñBó ðBð ñEó ðEð ñ(ó ð(ð  ñIó ðIð ñ	ó ð	ð ñ9ó ð9ð ñ7ó ð7ð ñ8ó ð8ð ñó ðð" ñ=ó ð=ð ñó ðð ñó ðð ñ	
ó ð	
òð ñ'ó ð'ð ×Ññ(ó ð(ð ñ5ó ð5÷Að Ar   r¾   c                   óô  a € ] tR tRt o R&R lt]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       t]R	 4       t]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tR tR t R t!]R 4       t"]R  4       t#R! t$R" t%R# t&R$ t'R%t(V t)R# )'rç   i  Nc                ó¦   € Wn         W n        W0n        VP                  R4      V n        VP
                  V n        VP                  R/ 4      V n        R# )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.

r1   ÚhttpN)Ú_operation_modelÚ_service_modelÚ	_api_namer3   Ú
_wire_namerG   r4  )r%   ré   Úservice_modelr1   s   &&&&r   r;   ÚOperationModel.__init__  sJ   € ð8 !0ÔØ+ÔØŒð *×-Ñ-¨fÓ5ˆŒØ%×.Ñ.ˆŒØ#×'Ñ'¨°Ó3ˆŽ	r   c                óN   € V P                   e   V P                   # V P                  # r#   )r7  Ú	wire_namer$   s   &r   r1   ÚOperationModel.name+  s    € à�>‰>Ò%Ø—>‘>Ð!à—>‘>Ð!r   c                ó8   € V P                   P                  R4      # )a"  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``.

r1   ©r5  r3   r$   s   &r   r<  ÚOperationModel.wire_name2  s   € ð ×$Ñ$×(Ñ(¨Ó0Ð0r   c                ó   € V P                   # r#   )r6  r$   s   &r   r9  ÚOperationModel.service_model@  s   € à×"Ñ"Ð"r   c                ó:   € V P                   P                  R R4      # rì   r?  r$   s   &r   r/   ÚOperationModel.documentationD  s   € à×$Ñ$×(Ñ(¨¸"Ó=Ð=r   c                ó:   € V P                   P                  R R4      # )Ú
deprecatedFr?  r$   s   &r   rF  ÚOperationModel.deprecatedH  s   € à×$Ñ$×(Ñ(¨°uÓ=Ð=r   c                ó:   € V P                   P                  R R4      # )ÚendpointdiscoveryNr?  r$   s   &r   r  Ú!OperationModel.endpoint_discoveryL  s   € ð ×$Ñ$×(Ñ(Ð)<¸dÓCÐCr   c                ó:   € V P                   P                  R R4      # )ÚendpointoperationFr?  r$   s   &r   r  Ú.OperationModel.is_endpoint_discovery_operationR  s   € à×$Ñ$×(Ñ(Ð)<¸eÓDÐDr   c                ó€   € R V P                   9  d   R# V P                  P                  V P                   R ,          4      # )ÚinputN©r5  r6  rP   r$   s   &r   Úinput_shapeÚOperationModel.input_shapeV  s<   € à˜$×/Ñ/Ô/ñ Ø×"Ñ"×4Ñ4Ø×!Ñ! 'Õ*ó
ð 	
r   c                ó€   € R V P                   9  d   R# V P                  P                  V P                   R ,          4      # )ÚoutputNrP  r$   s   &r   Úoutput_shapeÚOperationModel.output_shape`  s<   € à˜4×0Ñ0Ô0ñ Ø×"Ñ"×4Ñ4Ø×!Ñ! (Õ+ó
ð 	
r   c                óò   € V P                   pV'       g   . # VP                  P                  4        UUu. uF5  w  r#R VP                  9   g   K  VP                  R ,          '       g   K3  VNK7  	  upp# u uppi )rt   )rQ  r„   r…   rG   )r%   rQ  r1   Úshapes   &   r   Úidempotent_membersÚ!OperationModel.idempotent_membersk  sr   € à×&Ñ&ˆßØˆIð "-×!4Ñ!4×!:Ñ!:Ô!<ô
á!<‘�Ø! U§^¡^Ñ3ô ð —‘Ð1×2Ñ2÷ ˆDÙ!<ò
ð 	
ùó 
s   ´A3ÁA3Á)A3c           
     óÀ   € V P                   P                  R / 4      pVP                  4        UUu. uF   w  r#\        W#P                  R4      R7      NK"  	  upp# u uppi )ÚstaticContextParamsr¢   )r1   r¢   )r5  r3   r…   r©   )r%   r  r1   Úpropss   &   r   Ústatic_context_parametersÚ(OperationModel.static_context_parametersx  sX   € à×&Ñ&×*Ñ*Ð+@À"ÓEˆð  &Ÿ|™|œ~ô
á-‘�ô #¨·I±I¸gÓ4F×GÙ-ò
ð 	
ùó 
s   °&Ac           	     óF  € V P                   '       g   . # V P                   P                  P                  4        UUu. uFW  w  rR VP                  9   g   K  RVP                  R ,          9   g   K2  \	        VP                  R ,          R,          VR7      NKY  	  upp# u uppi )r{   r1   )r1   r‰   )rQ  r„   r…   rG   rµ   )r%   r1   rX  s   &  r   Úcontext_parametersÚ!OperationModel.context_parameters€  s—   € à××ÐØˆIð  $×/Ñ/×7Ñ7×=Ñ=Ô?ô
ñ
  @‘�Ø §¡Ñ/ôð ˜%Ÿ.™.¨Õ8Ñ8ôÔØ—^‘^ NÕ3°FÕ;Ø ÷ñ  @ò
ð 	
ùó 
s   ¼BÁBÁ0)Bc                ó:   € V P                   P                  R . 4      # )ÚoperationContextParamsr?  r$   s   &r   Úoperation_context_parametersÚ+OperationModel.operation_context_parameters�  s   € à×$Ñ$×(Ñ(Ð)AÀ2ÓFÐFr   c                ó8   € V P                   P                  R 4      # )Úrequestcompressionr?  r$   s   &r   Úrequest_compressionÚ"OperationModel.request_compression“  s   € à×$Ñ$×(Ñ(Ð)=Ó>Ð>r   c                ó8   € V P                   P                  R 4      # )Úauthr?  r$   s   &r   rl  ÚOperationModel.auth—  s   € à×$Ñ$×(Ñ(¨Ó0Ð0r   c                ó8   € V P                   P                  R 4      # )Úauthtyper?  r$   s   &r   Ú	auth_typeÚOperationModel.auth_type›  ó   € à×$Ñ$×(Ñ(¨Ó4Ð4r   c                óh   € V P                   '       d   \        V P                   4      # V P                  # r#   )rl  r   rp  r$   s   &r   Úresolved_auth_typeÚ!OperationModel.resolved_auth_typeŸ  s$   € à�9�9ˆ9Ü$ T§Y¡YÓ/Ð/Ø�~‰~Ðr   c                ó8   € V P                   P                  R 4      # )ÚunsignedPayloadr?  r$   s   &r   Úunsigned_payloadÚOperationModel.unsigned_payload¥  s   € à×$Ñ$×(Ñ(Ð):Ó;Ð;r   c                óf   a € S P                   P                  R . 4      p\        V 3R lV 4       4      # )Úerrorsc              3   óZ   <"  € T F   pSP                   P                  V4      x € K"  	  R # 5ir#   )r6  rP   )Ú.0Úsr%   s   & €r   Ú	<genexpr>Ú.OperationModel.error_shapes.<locals>.<genexpr>¬  s%   øé € ÐMÁfÀ�D×'Ñ'×9Ñ9¸!×<Ð<Ãfùs   ƒ(+)r5  r3   rÝ   )r%   rÀ   s   f r   rÕ   ÚOperationModel.error_shapes©  s,   ø€ à×&Ñ&×*Ñ*¨8°RÓ8ˆÜÔMÁfÓMÓMÐMr   c                ó8   € V P                   P                  R 4      # )Úendpointr?  r$   s   &r   rƒ  ÚOperationModel.endpoint®  rr  r   c                ó:   € V P                   P                  R R4      # )ÚhttpChecksumRequiredFr?  r$   s   &r   Úhttp_checksum_requiredÚ%OperationModel.http_checksum_required²  s   € à×$Ñ$×(Ñ(Ð)?ÀÓGÐGr   c                ó:   € V P                   P                  R / 4      # )ÚhttpChecksumr?  r$   s   &r   Úhttp_checksumÚOperationModel.http_checksum¶  s   € à×$Ñ$×(Ñ(¨¸Ó<Ð<r   c                ó&   € V P                  4       R J# r#   )Úget_event_stream_inputr$   s   &r   Úhas_event_stream_inputÚ%OperationModel.has_event_stream_inputº  s   € à×*Ñ*Ó,°DÐ8Ð8r   c                ó&   € V P                  4       R J# r#   )Úget_event_stream_outputr$   s   &r   Úhas_event_stream_outputÚ&OperationModel.has_event_stream_output¾  s   € à×+Ñ+Ó-°TÐ9Ð9r   c                ó8   € V P                  V P                  4      # r#   )Ú_get_event_streamrQ  r$   s   &r   rŽ  Ú%OperationModel.get_event_stream_inputÂ  s   € Ø×%Ñ% d×&6Ñ&6Ó7Ð7r   c                ó8   € V P                  V P                  4      # r#   )r–  rU  r$   s   &r   r’  Ú&OperationModel.get_event_stream_outputÅ  s   € Ø×%Ñ% d×&7Ñ&7Ó8Ð8r   c                ó`   € Vf   R# VP                   pV'       d   VP                  V,          # R# )zAReturns the event stream member's shape if any or None otherwise.N)r^   r„   )r%   rX  Ú
event_names   && r   r–  Ú OperationModel._get_event_streamÈ  s*   € àŠ=ÙØ×,Ñ,ˆ
ßØ—=‘= Õ,Ð,Ùr   c                ó&   € V P                  4       R J# r#   )Úget_streaming_inputr$   s   &r   Úhas_streaming_inputÚ"OperationModel.has_streaming_inputÑ  s   € à×'Ñ'Ó)°Ð5Ð5r   c                ó&   € V P                  4       R J# r#   )Úget_streaming_outputr$   s   &r   Úhas_streaming_outputÚ#OperationModel.has_streaming_outputÕ  s   € à×(Ñ(Ó*°$Ð6Ð6r   c                ó8   € V P                  V P                  4      # r#   )Ú_get_streaming_bodyrQ  r$   s   &r   rž  Ú"OperationModel.get_streaming_inputÙ  s   € Ø×'Ñ'¨×(8Ñ(8Ó9Ð9r   c                ó8   € V P                  V P                  4      # r#   )r¦  rU  r$   s   &r   r¢  Ú#OperationModel.get_streaming_outputÜ  s   € Ø×'Ñ'¨×(9Ñ(9Ó:Ð:r   c                óœ   € Vf   R# VP                   P                  R4      pVe'   VP                  V,          pVP                  R8X  d   V# R# )z?Returns the streaming member's shape if any; or None otherwise.Nrc   Úblob)rB   r3   r„   r2   )r%   rX  rc   Úpayload_shapes   &&  r   r¦  Ú"OperationModel._get_streaming_bodyß  sK   € àŠ=ÙØ×%Ñ%×)Ñ)¨)Ó4ˆØÒØ!ŸM™M¨'Õ2ˆMØ×&Ñ&¨&Ô0Ø$Ð$Ùr   c                óN   € V P                   P                   R V P                   R2# )z(name=r/  rY   r$   s   &r   r[   ÚOperationModel.__repr__ê  s$   € Ø—.‘.×)Ñ)Ð*¨&°·±°¸1Ð=Ð=r   )r7  r5  r6  r8  r4  rG   r#   )*r   r   r   r   r;   r   r1   r€   r<  r9  r/   rF  r  r  rQ  rU  rY  r^  ra  re  ri  rl  rp  rt  rx  rÕ   rƒ  r‡  r‹  r�  r“  rŽ  r’  r–  rŸ  r£  rž  r¢  r¦  r[   r   r(   r)   s   @r   rç   rç     sE  ø‡ € ô#4ðJ ñ"ó ð"ð ñ1ó ð1ð ñ#ó ð#ð ñ>ó ð>ð ñ>ó ð>ð ñDó ðDð
 ñEó ðEð ñ
ó ð
ð ñ
ó ð
ð ñ

ó ð

ð ñ
ó ð
ð ñ
ó ð
ð ñGó ðGð ñ?ó ð?ð ñ1ó ð1ð ñ5ó ð5ð ñó ðð
 ñ<ó ð<ð ñNó ðNð ñ5ó ð5ð ñHó ðHð ñ=ó ð=ð ñ9ó ð9ð ñ:ó ð:ò8ò9òð ñ6ó ð6ð ñ7ó ð7ò:ò;ò	÷>ð >r   rç   c                   óN   a € ] tR tRt o RtR]R]R]R]/t	R t
RR	 ltR
 tRtV tR# )rÂ   iî  zResolves shape references.Ú	structurerÝ   ÚmapÚstringc                ó    € Wn         / V n        R # r#   )Ú
_shape_mapÚ_shape_cache)r%   Ú	shape_maps   &&r   r;   ÚShapeResolver.__init__ù  s   € Ø#ŒØˆÖr   Nc                óP  €  V P                   V,          p T P                  P	                  TR ,          \
        4      pT'       d"   TP                  4       pTP                  T4       T! YT 4      pT#   \         d    \        T4      hi ; i  \         d    \        RT 24      hi ; i)r.   z&Shape is missing required key 'type': )	rµ  ræ   r   ÚSHAPE_CLASSESr3   r,   r   ÚcopyÚupdate)r%   r8   rÍ   r9   Ú	shape_clsÚresults   &&&   r   rË   ÚShapeResolver.get_shape_by_nameý  s¬   € ð	0ØŸ/™/¨*Õ5ˆKð	Ø×*Ñ*×.Ñ.¨{¸6Õ/BÄEÓJˆI÷
 Ø%×*Ñ*Ó,ˆKØ×Ñ˜}Ô-Ù˜:°DÓ9ˆØˆøô ô 	0Ü# JÓ/Ð/ð	0ûô ô 	Ü#Ø8¸¸ÐFóð ð	ús   ‚A1 –'B Á1BÂB%c                ó   € \        V4      ^8X  d    RV9   d   V P                  VR,          4      # VP                  4       p VP                  R4      pT P                  Y24      #   \         d    \        RT 24      hi ; i)é   rX  z(Invalid model, missing shape reference: )ÚlenrË   r»  r@   ræ   r   )r%   rR   rÍ   r8   s   &&  r   rP   ÚShapeResolver.resolve_shape_ref  s‹   € ô ˆy‹>˜QÔ 7¨iÔ#7ð ×)Ñ)¨)°GÕ*<Ó=Ð=à%ŸN™NÓ,ˆMðØ*×.Ñ.¨wÓ7�
ð
 ×)Ñ)¨*ÓDÐDøô	 ô Ü0Ø>¸y¸kÐJóð ðús   ÁA# Á#A=)r¶  rµ  r#   )r   r   r   r   r~   r‚   r˜   r�   r¥   rº  r;   rË   rP   r   r(   r)   s   @r   rÂ   rÂ   î  s;   ø‡ € Ù$ð 	�^Ø�	ØˆxØ�+ð	€Mòô÷"Eð Er   rÂ   c                   ó4   a € ] tR tRt o RtRR ltR tRtV tR# )r5   i$  zEA ShapeResolver that will throw ValueErrors when shapes are resolved.Nc                ó    € \        R V R24      h)zAttempted to lookup shape 'ú!', but no shape map was provided.©Ú
ValueErrorrÌ   s   &&&r   rË   Ú&UnresolvableShapeMap.get_shape_by_name'  s   € ÜØ)¨*¨Ð5VÐWó
ð 	
r   c                ó    € \        R V R24      h)zAttempted to resolve shape 'rÆ  rÇ  rQ   s   &&r   rP   Ú&UnresolvableShapeMap.resolve_shape_ref,  s    € ÜØ*¨9¨+ð 6 ð !ó
ð 	
r   r   r#   )	r   r   r   r   r~   rË   rP   r   r(   r)   s   @r   r5   r5   $  s   ø‡ € ÙOô
÷

ð 
r   r5   c                   óh   a € ] tR tRt o RtRtRR ltR tR tR t	R t
R	 tR
 tR tR tR tRtV tR# )ÚDenormalizedStructureBuilderi3  aZ  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.

Nc                óŽ   € \        4       V n        \        4       V n        Vf#   V P                  P	                  R4      V n        R # R # )Nr±  )r   r„   ÚShapeNameGeneratorÚ_name_generatorÚnew_shape_namer1   r#  s   &&r   r;   Ú%DenormalizedStructureBuilder.__init__d  s8   € Ü"“}ˆŒÜ1Ó3ˆÔØŠ<Ø×,Ñ,×;Ñ;¸KÓHˆDŽIñ r   c                ó   € Wn         V # )zP

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

:return: self

)Ú_members)r%   r„   s   &&r   Úwith_membersÚ)DenormalizedStructureBuilder.with_membersj  s   € ð  ŒØˆr   c                óÖ   € \        4       pRRRV P                  /pV P                  W!V P                  4       \	        VR7      p\        V P                  WP                  ,          VR7      # )z�Build the model based on the provided members.

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

r.   r±  r„   )r·  )r8   r9   r:   )r   rÔ  Ú_build_modelr1   rÂ   r‚   )r%   rÀ   ÚdenormalizedÚresolvers   &   r   Úbuild_modelÚ(DenormalizedStructureBuilder.build_modelv  sa   € ô “ˆà�KØ�t—}‘}ð
ˆð 	×Ñ˜,°·	±	Ô:Ü ¨6Ô2ˆÜØ—y‘yØŸy™yÕ)Ø#ô
ð 	
r   c                óX  € VR ,          R8X  d   V P                  W4      W#&   R# VR ,          R8X  d   V P                  W4      W#&   R# VR ,          R8X  d   V P                  W4      W#&   R# VR ,          V P                  9   d   V P	                  V4      W#&   R# \        RVR ,           24      h)r.   r±  rÝ   r²  zUnknown shape type: N)Ú_build_structureÚ_build_listÚ
_build_mapÚSCALAR_TYPESÚ_build_scalarr   )r%   rA   rÀ   r8   s   &&&&r   rØ  Ú)DenormalizedStructureBuilder._build_modelŠ  s™   € Ø��=˜KÔ'Ø!%×!6Ñ!6°uÓ!EˆFÓØ�6�]˜fÔ$Ø!%×!1Ñ!1°%Ó!@ˆFÓØ�6�]˜eÔ#Ø!%§¡°Ó!?ˆFÓØ�6�]˜d×/Ñ/Ô/Ø!%×!3Ñ!3°EÓ!:ˆFÓä#Ð&:¸5À½=¸/Ð$JÓKÐKr   c                óø   € \        4       pV P                  V4      pW4R &   VP                  R \        4       4      P                  4        F.  w  rVV P	                  V4      pRV/W5&   V P                  WbV4       K0  	  V# )r„   rX  )r   Ú_build_initial_shaper3   r…   Ú_get_shape_namerØ  )r%   rA   rÀ   r„   rX  r1   Úmember_modelÚmember_shape_names   &&&     r   rÞ  Ú-DenormalizedStructureBuilder._build_structure–  s{   € Ü“-ˆØ×)Ñ)¨%Ó0ˆØ"ˆiÑà"'§)¡)¨I´{³}Ó"E×"KÑ"KÖ"MÑˆDØ $× 4Ñ 4°\Ó BÐØ$Ð&7Ð8ˆG‰MØ×Ñ˜lÐ4EÖFñ #Nð ˆr   c                óŠ   € V P                  V4      pV P                  V4      pR V/VR&   V P                  VR,          W#4       V# )rX  rŠ   ©ræ  rå  rØ  )r%   rA   rÀ   rè  rX  s   &&&  r   rß  Ú(DenormalizedStructureBuilder._build_list¡  sK   € Ø ×0Ñ0°Ó7ÐØ×)Ñ)¨%Ó0ˆØ"Ð$5Ð6ˆˆh‰Ø×Ñ˜% �/¨6ÔEØˆr   c                ó  € V P                  VR ,          4      pV P                  VR,          4      pV P                  V4      pRV/VR &   RV/VR&   V P                  VR ,          W#4       V P                  VR,          W$4       V# )rŸ   r¢   rX  rë  )r%   rA   rÀ   Úkey_shape_nameÚvalue_shape_namerX  s   &&&   r   rà  Ú'DenormalizedStructureBuilder._build_map¨  s…   € Ø×-Ñ-¨e°E­lÓ;ˆØ×/Ñ/°°gµÓ?ÐØ×)Ñ)¨%Ó0ˆØ Ð0ˆˆe‰Ø!Ð#3Ð4ˆˆg‰Ø×Ñ˜% �,¨Ô?Ø×Ñ˜% �.¨&ÔCØˆr   c                ó”   € R VR ,          /pRV9   d   VR,          VR&   \         P                   F  pW19   g   K  W,          W#&   K  	  V# )r.   r/   )r,   rF   )r%   rA   rX  rC   s   &&  r   rå  Ú1DenormalizedStructureBuilder._build_initial_shape²  sP   € à�E˜&•Mð
ˆð ˜eÔ#Ø%*¨?Õ%;ˆE�/Ñ"Ü×(Ô(ˆDØŽ}Ø#�k�“ñ )ð ˆr   c                ó$   € V P                  V4      # r#   )rå  ©r%   rA   s   &&r   râ  Ú*DenormalizedStructureBuilder._build_scalar½  s   € Ø×(Ñ(¨Ó/Ð/r   c                óf   € R V9   d
   VR ,          # V P                   P                  VR,          4      # )r8   r.   )rÐ  rÑ  rô  s   &&r   ræ  Ú,DenormalizedStructureBuilder._get_shape_nameÀ  s0   € Ø˜5Ô Ø˜Õ&Ð&à×'Ñ'×6Ñ6°u¸Vµ}ÓEÐEr   )rÔ  rÐ  r„   r1   )	r³  ÚintegerÚbooleanr«  ÚfloatÚ	timestampÚlongÚdoubleÚcharr#   )r   r   r   r   r~   rá  r;   rÕ  rÛ  rØ  rÞ  rß  rà  rå  râ  ræ  r   r(   r)   s   @r   rÍ  rÍ  3  sM   ø‡ € ñ"ðH
€LôIò
ò
ò(
Lò	òòò	ò0÷Fð Fr   rÍ  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )rÏ  iÇ  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                ó.   € \        \        4      V n        R # r#   )r   ÚintÚ_name_cacher$   s   &r   r;   ÚShapeNameGenerator.__init__Ï  s   € Ü&¤sÓ+ˆÖr   c                ó�   € V P                   V;;,          ^,          uu&   V P                   V,          pVP                  4        RV 2# )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

ÚType)r  Ú
capitalize)r%   r2   Úcurrent_indexs   && r   rÑ  Ú!ShapeNameGenerator.new_shape_nameÒ  sE   € ð4 	×Ñ˜×# qÕ(Ó#Ø×(Ñ(¨Õ3ˆØ×&Ñ&Ó(Ð)¨¨m¨_Ð=Ð=r   )r  N)	r   r   r   r   r~   r;   rÑ  r   r(   r)   s   @r   rÏ  rÏ  Ç  s   ø‡ € ñò,÷>ð >r   rÏ  N)*r~   Úcollectionsr   Útypingr   r   Úbotocore.authr   Úbotocore.compatr   Úbotocore.exceptionsr   r   r	   Úbotocore.utilsr
   r   r   r   ÚobjectrÃ   Ú	Exceptionr   r   r   r   r¬   r!   r,   r‚   r˜   r�   r¥   r©   rµ   rº   r¾   rç   rÂ   r5   rÍ  rÏ  r   r   r   Ú<module>r     s!  ðñ 4å #ß $å +Ý '÷ñ ÷
ó ñ ‹(€ô	˜	ô 	ô	˜	ô 	ô	˜Yô 	ô	 ô 	ô*�ô *÷
bñ bôJ'1�Uô '1ôTD�ô DôCˆuô Cô-�%ô -ô˜Zô ô
�zô ô
˜Zô ÷UAñ UA÷pf>ñ f>÷R3Eñ 3E÷l
ñ 
÷QFñ QF÷h'>ó '>r   