
    vKgY                     \   S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJrJrJrJr  SrS	rS
r\R,                  " S5      rSS jr " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\\5      r " S S\5      r\\\\\S.r g)a  Protocol input serializes.

This module contains classes that implement input serialization
for the various AWS protocol types.

These classes essentially take user input, a model object that
represents what the expected input should look like, and it returns
a dictionary that contains the various parts of a request.  A few
high level design decisions:


* Each protocol type maps to a separate class, all inherit from
  ``Serializer``.
* The return value for ``serialize_to_request`` (the main entry
  point) returns a dictionary that represents a request.  This
  will have keys like ``url_path``, ``query_string``, etc.  This
  is done so that it's a) easy to test and b) not tied to a
  particular HTTP library.  See the ``serialize_to_request`` docstring
  for more details.

Unicode
-------

The input to the serializers should be text (str/unicode), not bytes,
with the exception of blob types.  Those are assumed to be binary,
and if a str/unicode type is passed in, it will be encoded as utf-8.
    N)ElementTree)validate)
formatdate)ParamValidationError)
has_headeris_json_value_headerparse_to_aware_datetimepercent_encodeiso8601z%Y-%m-%dT%H:%M:%SZz%Y-%m-%dT%H:%M:%S.%fZz^[A-Za-z0-9\.\-]+$c                     [         U    " 5       nU(       a+  [        R                  " 5       n[        R                  " X25      nU$ N)SERIALIZERSr   ParamValidatorParamValidationDecorator)protocol_nameinclude_validation
serializer	validators       R/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/botocore/serialize.pycreate_serializerr   B   s6    ]+-J++-	66yM
    c                   Z    \ rS rSrSr\rSrS rS r	S r
S rS rSS
 jrS rS rS rSrg	)
SerializerK   POSTzutf-8c                     [        S5      e)a  Serialize parameters into an HTTP request.

This method takes user provided parameters and a shape
model and serializes the parameters to an HTTP request.
More specifically, this method returns information about
parts of the HTTP request, it does not enforce a particular
interface or standard for an HTTP request.  It instead returns
a dictionary of:

    * 'url_path'
    * 'host_prefix'
    * 'query_string'
    * 'headers'
    * 'body'
    * 'method'

It is then up to consumers to decide how to map this to a Request
object of their HTTP library of choice.  Below is an example
return value::

    {'body': {'Action': 'OperationName',
              'Bar': 'val2',
              'Foo': 'val1',
              'Version': '2014-01-01'},
     'headers': {},
     'method': 'POST',
     'query_string': '',
     'host_prefix': 'value.',
     'url_path': '/'}

:param parameters: The dictionary input parameters for the
    operation (i.e the user input).
:param operation_model: The OperationModel object that describes
    the operation.
serialize_to_requestNotImplementedError)self
parametersoperation_models      r   r   Serializer.serialize_to_requestT   s    H ""899r   c                 *    SSU R                   0 SS.nU$ )N/ r   )url_pathquery_stringmethodheadersbody)DEFAULT_METHOD)r    
serializeds     r   _create_default_request"Serializer._create_default_requestz   s(     ))

 r   c                 ^    UR                   S:  a  [        nO[        nUR                  U5      $ )Nr   )microsecondISO8601_MICROISO8601strftime)r    valuetimestamp_formats      r   _timestamp_iso8601Serializer._timestamp_iso8601   s,    q ,&~~.//r   c                 \    [        [        R                  " UR                  5       5      5      $ r   )intcalendartimegm	timetupler    r5   s     r   _timestamp_unixtimestamp#Serializer._timestamp_unixtimestamp   s    8??5??#4566r   c                 v    [        U[        R                  5      (       a  U R                  U5      n[        USS9$ )NT)usegmt)
isinstancedatetimer?   r   r>   s     r   _timestamp_rfc822Serializer._timestamp_rfc822   s2    eX..//11%8E%--r   Nc                     Uc  U R                   nUR                  5       n[        U5      n[        U SU 35      nU" U5      nU$ )N_timestamp_)TIMESTAMP_FORMATlowerr	   getattr)r    r5   r6   datetime_obj	converterfinal_values         r   _convert_timestamp_to_str$Serializer._convert_timestamp_to_str   sR    ##44+113.u5DK0@/A"BC	-r   c                 :    UR                   R                  SU5      $ Nnameserializationget)r    shapedefault_names      r   _get_serialized_nameSerializer._get_serialized_name   s     ""&&v|<<r   c                     [        U[        5      (       a  UR                  U R                  5      n[        R
                  " U5      R                  5       R                  U R                  5      $ r   )rC   strencodeDEFAULT_ENCODINGbase64	b64encodestripdecoder>   s     r   _get_base64Serializer._get_base64   sP     eS!!LL!6!67E&,,.55d6K6KLLr   c                    UR                   nUb  SU;  a  g US   nUR                  R                  nUR                  5        VVs/ sH)  u  pgUR                  R                  S5      (       d  M'  UPM+     nnn0 n	/ n
U H6  nX   n[        R                  U5      (       d  U
R                  U5        XU'   M8     U
(       a  [        SSR                  U
5       S3S9eUR                  " S0 U	D6$ s  snnf )N
hostPrefix	hostLabelz Invalid value for parameter(s): z, z?. Must contain only alphanumeric characters, hyphen, or period.)report )endpointinput_shapemembersitemsrU   rV   HOST_PREFIX_REmatchappendr   joinformat)r    r!   r"   operation_endpointhost_prefix_expressioninput_membersmemberrW   host_labelsformat_kwargs
bad_labelsrS   params                r   _expand_host_prefixSerializer._expand_host_prefix   s   ,55&#55!3L!A'33;; "/!4!4!6
!6""&&{3 !6 	 

 
D$E!''..!!$'"'$	  
 &6tyy7L6M N! !  &,,=}==)
s   %C,.C,ri   r   )__name__
__module____qualname____firstlineno__r,   dictMAP_TYPEr^   r   r.   r7   r?   rE   rO   rY   rc   r{   __static_attributes__ri   r   r   r   r   K   sC    N
 H$:L07.
=
M>r   r   c                   t    \ rS rSrSrS rSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSS jrS rSrg)QuerySerializer   r   c                 b   UR                   nU R                  5       nUR                  R                  SU R                  5      US'   SS0US'   U R                  5       nUR                  US'   UR                  S   US'   Ub  U R                  XQU5        XTS'   U R                  X5      nUb  XdS	'   U$ )
Nr)   Content-Typez0application/x-www-form-urlencoded; charset=utf-8r*   Action
apiVersionVersionr+   host_prefix)
rk   r.   httprV   r,   r   rS   metadata
_serializer{   )r    r!   r"   rW   r-   body_paramsr   s          r   r   $QuerySerializer.serialize_to_request   s    ++113
.3377d)) 

8 N!

9
 mmo / 4 4H!0!9!9,!GIOOKU;(6..zK"(3}%r   c                 Z    [        U SUR                   3U R                  5      nU" XX4S9  g )N_serialize_type_)prefixrK   	type_name_default_serialize)r    r-   r5   rW   r   r)   s         r   r   QuerySerializer._serialize   s5     u/0##

 	z%7r   c                     UR                   nUR                  5        H:  u  pbXV   nU R                  Xv5      nU(       a  U SU 3nU R                  XXx5        M<     g )N.)rl   rm   rY   r   )	r    r-   r5   rW   r   rl   keymember_shapemember_prefixs	            r   _serialize_type_structure)QuerySerializer._serialize_type_structure   sU    --++-JC"<L 55lHM#)(!M? ;OOJ|K (r   c                    U(       d  SX'   g U R                  U5      (       an  UnUR                  R                  R                  S5      (       aA  U R	                  UR                  SS9nSR                  UR                  S5      S S U/-   5      nO-UR                  R                  R                  SS5      nU SU 3n[        US5       H*  u  pU SU 3n
UR                  nU R                  XX5        M,     g )Nr&   rS   rX   r   rv      )	_is_shape_flattenedrv   rU   rV   rY   rq   split	enumerater   )r    r-   r5   rW   r   list_prefixrS   	list_nameielementelement_prefixelement_shapes               r   _serialize_type_list$QuerySerializer._serialize_type_list  s    !#J##E** K||))--f5500B0O!hhv||C'8"'='FG2266vxHI#HAi[1K#E1-JA +}AaS1N!LLMOOJO .r   c                 r   U R                  U5      (       a  UnOU S3nUS-   nUR                  nUR                  nU R                  USS9n	U R                  US5      n
[	        US5       HJ  u  pUR                  XS9nUR                  XS9nU R                  XX}5        U R                  XU   X5        ML     g )Nz.entryz.{i}.{suffix}r   r   r5   r   )r   suffix)r   r   r5   rY   r   rr   r   )r    r-   r5   rW   r   full_prefixtemplate	key_shapevalue_shape
key_suffixvalue_suffixr   r   
key_prefixvalue_prefixs                  r   _serialize_type_map#QuerySerializer._serialize_type_map  s    ##E** K#HF+K0II	kk..yu.M
00gFq)FA!1@J#??Q?DLOOJYCOOJc
KN	 *r   c                 *    U R                  U5      X'   g r   rc   r    r-   r5   rW   r   s        r   _serialize_type_blob$QuerySerializer._serialize_type_blob%  s    !--e4
r   c                 \    U R                  X#R                  R                  S5      5      X'   g NtimestampFormatrO   rU   rV   r   s        r   _serialize_type_timestamp)QuerySerializer._serialize_type_timestamp)  s*    !;;&&**+<=

r   c                 $    U(       a  SX'   g SX'   g Ntruefalseri   r   s        r   _serialize_type_boolean'QuerySerializer._serialize_type_boolean.  s    !'J!(Jr   c                     X!U'   g r   ri   r   s        r   r   "QuerySerializer._default_serialize4  s
    "6r   c                 8    UR                   R                  S5      $ )N	flattenedrT   r    rW   s     r   r   #QuerySerializer._is_shape_flattened7  s    ""&&{33r   ri   Nr&   )r}   r~   r   r   rI   r   r   r   r   r   r   r   r   r   r   r   ri   r   r   r   r      s=     08LP&O 5

)#4r   r   c                   (    \ rS rSrSrS rSS jrSrg)EC2Serializeri;  aA  EC2 specific customizations to the query protocol serializers.

The EC2 model is almost, but not exactly, similar to the query protocol
serializer.  This class encapsulates those differences.  The model
will have be marked with a ``protocol`` of ``ec2``, so you don't need
to worry about wiring this class up correctly.

c                     SUR                   ;   a  UR                   S   $ SUR                   ;   a(  UR                   S   nUS   R                  5       USS  -   $ U$ )N	queryNamerS   r   r   )rU   upper)r    rW   rX   rS   s       r   rY   "EC2Serializer._get_serialized_nameE  sd     %---&&{33u*** &&v.D7==?T!"X--r   c                 x    [        US5       H*  u  pVU SU 3nUR                  nU R                  XX5        M,     g )Nr   r   )r   rv   r   )	r    r-   r5   rW   r   r   r   r   r   s	            r   r   "EC2Serializer._serialize_type_listR  s;    #E1-JA &xq_N!LLMOOJO .r   ri   Nr   )r}   r~   r   r   __doc__rY   r   r   ri   r   r   r   r   ;  s     Pr   r   c                   L    \ rS rSrSrS rSS jrS rS rS r	S	 r
S
 rS rSrg)JSONSerializeriY  unixtimestampc                    SR                  UR                  S   UR                  5      nUR                  S   nU R                  5       nUR                  R                  SU R                  5      US'   USU 3S.US'   U R                  5       nUR                  nUb  U R                  XaU5        [        R                  " U5      R                  U R                  5      US'   U R                  X5      nUb  XS	'   U$ )
Nz{}.{}targetPrefixjsonVersionr)   zapplication/x-amz-json-)zX-Amz-Targetr   r*   r+   r   )rr   r   rS   r.   r   rV   r,   r   rk   r   jsondumpsr]   r^   r{   )	r    r!   r"   targetjson_versionr-   r+   rk   r   s	            r   r   #JSONSerializer.serialize_to_request\  s    $$^4  
 '//>113
.3377d)) 

8 #5l^D!

9 }}%11"OODk:!ZZ-44T5J5JK
6..zK"(3}%r   Nc                 ^    [        U SUR                   3U R                  5      nU" XX45        g Nr   r   )r    r-   r5   rW   r   r)   s         r   r   JSONSerializer._serializev  s3    u/0##

 	z%-r   c                    UR                   (       a  X!U'   g Ub  U R                  5       nXQU'   UnUR                  nUR                  5        H:  u  pxXg   n	SU	R                  ;   a  U	R                  S   nU R                  XX5        M<     g rR   )is_document_typer   rl   rm   rU   r   )
r    r-   r5   rW   r   new_serializedrl   
member_keymember_valuer   s
             r   r   (JSONSerializer._serialize_type_structure~  s    !!#sO "&"03+
mmG,1KKM(
&2\777!-!;!;F!CJl	 -:r   c                     U R                  5       nXQU'   UR                  5        H"  u  pgU R                  XWUR                  U5        M$     g r   )r   rm   r   r5   )r    r-   r5   rW   r   map_objsub_key	sub_values           r   r   "JSONSerializer._serialize_type_map  s;    --/!3"'++-GOOGWE #0r   c                     / nXQU'   U H6  n0 nU R                  XvUR                  S5        UR                  US   5        M8     g )N__current__)r   rv   rp   )r    r-   r5   rW   r   list_obj	list_itemwrappers           r   r   #JSONSerializer._serialize_type_list  sD    "3IG
 OOGmLOOGM23 r   c                     X!U'   g r   ri   r    r-   r5   rW   r   s        r   r   !JSONSerializer._default_serialize  s	    3r   c                 \    U R                  X#R                  R                  S5      5      X'   g r   r   r   s        r   r   (JSONSerializer._serialize_type_timestamp  s)    88&&**+<=

r   c                 *    U R                  U5      X'   g r   r   r   s        r   r   #JSONSerializer._serialize_type_blob  s    **51
r   ri   r   )r}   r~   r   r   rI   r   r   r   r   r   r   r   r   r   ri   r   r   r   r   Y  s1    &4.,F
4 

2r   r   c                   p    \ rS rSrSrSrSr/ SQrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)BaseRestSerializeri  a)  Base class for rest protocols.

The only variance between the various rest protocols is the
way that the body is serialized.  All other aspects (headers, uri, etc.)
are the same and logic for serializing those aspects lives here.

Subclasses must implement the ``_serialize_body_params`` method.

r   rfc822)uriquerystringheaderr*   c                    U R                  5       nUR                  R                  SU R                  5      US'   UR                  nUc  UR                  S   US'   U$ UR
                  nU R                  5       U R                  5       U R                  5       U R                  5       S.nUR                  5        H  u  pxUc  M
  U R                  XgX5        M     U R                  UR                  S   US   5      US'   SUR                  ;   a%  U R                  UR                  S   US   5      US'   US   US	'   US
   (       a  US
   US
'   U R                  XaX4U5        U R                  X4U5        U R                  X5      n	U	b  XS'   U$ )Nr)   
requestUrir'   )uri_path_kwargsquery_string_kwargsbody_kwargsr*   r
  authPath	auth_pathr  r(   r*   r   )r.   r   rV   r,   rk   rl   r   rm   _partition_parameters_render_uri_template_serialize_payload_serialize_content_typer{   )
r    r!   r"   r-   rW   shape_memberspartitioned
param_nameparam_valuer   s
             r   r   'BaseRestSerializer.serialize_to_request  s   113
.3377d)) 

8  ++=%4%9%9,%GJz"  $}}#'==?==?}}	
 (2'7'7'9#J"&&	 (: "&!:!:  .<M0N"

: ---&*&?&?$$Z0-.'J{# &11F%G
>"y!$/	$:Jy!Z	
 	$$ZF..zK"(3}%r   c                     0 n[         R                  " SU5       H;  nUR                  S5      (       a  [        X$S S    SS9X4'   M,  [        X$   5      X4'   M=     UR                  " S0 UD6$ )Nz{(.*?)}+r   z/~)saferi   )refindallendswithr
   rr   )r    uri_templateparamsencoded_paramstemplate_params        r   r  'BaseRestSerializer._render_uri_template  sx      jj\BN&&s++1?#2./d2. 2@*2. C ""4^44r   c                    UR                   R                  S5      nU R                  Xe5      (       a(  UR                  US5      nU R                  U5      nXsS'   g Ub@  UR                  U5      nUb  U R	                  XU   5      US'   g U R                  5       US'   g US   (       a  U R	                  US   U5      US'   g U R                  U5      (       a  U R                  5       US'   g g )Npayloadr   r+   r  )rU   rV   _has_streaming_payload_encode_payload_serialize_body_params_serialize_empty_body_requires_empty_body)	r    r  r!   r-   rW   r  payload_memberbody_payloadr   s	            r   r  %BaseRestSerializer._serialize_payload  s     ,,00;&&~EE &>>.#>L//=L!-v' %..8K&%)%@%@~!>&
6" &*%?%?%A
6"'!%!<!<M*E"Jv &&u--!%!;!;!=Jv .r   c                     g)Nr   ri   r    s    r   r(  (BaseRestSerializer._serialize_empty_body2  s    r   c                     g)z
Some protocols require varied Content-Type headers
depending on user input. This allows subclasses to apply
this conditionally.
Nri   )r    r-   rW   r  s       r   r  *BaseRestSerializer._serialize_content_type5  s     	r   c                     g)z{
Some protocols require a specific body to represent an empty
payload. This allows subclasses to apply this conditionally.
Fri   r   s     r   r)  'BaseRestSerializer._requires_empty_body=  s    
 r   c                 :    USL=(       a    X!   R                   S;   $ )z5Determine if payload is streaming (a blob or string).N)blobstring)r   )r    r$  r  s      r   r%  )BaseRestSerializer._has_streaming_payloadD  s*    d" 
}'='G'G L
 (
 	
r   c                 f    [        U[        5      (       a  UR                  U R                  5      $ U$ r   )rC   r\   r]   r^   )r    r+   s     r   r&  "BaseRestSerializer._encode_payloadK  s)    dC  ;;t4455r   c                    XB   nUR                   R                  S5      nUR                   R                  SU5      nUS:X  a  X1S   U'   g US:X  a  [        U[        5      (       a  US   R	                  U5        g [        U[
        5      (       a!  [        U5      R                  5       nXS   U'   g UR                  S:X  a?  UR                   R                  SU R                  5      n	U R                  X95      n
XS   U'   g X1S   U'   g US	:X  a?  XB   nU(       d  UR                  S
:X  a  g U R                  X5      n[        U5      US   U'   g US:X  a  UnU R                  XS   U5        g X1S   U'   g )NlocationrS   r  r
  r  r  	timestampr   r  listr*   r  )rU   rV   rC   r   updateboolr\   rJ   r   QUERY_STRING_TIMESTAMP_FORMATrO   _convert_header_value_do_serialize_header_map)r    r  r  r  r  rv   r;  key_namebool_strr6   r<  rW   r5   header_prefixs                 r   r  (BaseRestSerializer._partition_parametersP  s    *''++J7''++FJ?u7B)*84&+t,,1299+FK..{+113?G128<!![0#)#7#7#;#;%t'I'I$  !::	 @I128<?J128<!!-E5??f#<..uBE/25zK	"8," %M
 ))95{ 6A&z2r   c                 F    UR                  5        H  u  pEX-   nXRU'   M     g r   )rm   )r    rE  r*   
user_inputr   valfull_keys          r   rB  +BaseRestSerializer._do_serialize_header_map  s'    "((*HC$*H #H +r   c                     [        S5      e)Nr'  r   )r    r  rW   s      r   r'  )BaseRestSerializer._serialize_body_params  s    !":;;r   c                    UR                   S:X  af  [        U5      n[        R                  " UR	                  5       5      nUR
                  R                  SU R                  5      nU R                  XE5      $ UR                   S:X  aA  U Vs/ sH$  nUc  M  U R                  UR                  U5      PM&     nnSR                  U5      $ [        U5      (       a$  U R                  [        R                  " USS95      $ U$ s  snf )Nr<  r   r=  ,)rO  :)
separators)r   r	   r;   r<   utctimetuplerU   rV   HEADER_TIMESTAMP_FORMATrO   rA  rv   rq   r   rc   r   r   )r    rW   r5   rL   r<  r6   vconverted_values           r   rA  (BaseRestSerializer._convert_header_value  s    ??k)259L (A(A(CDI$2266!4#?#?  11)NN__& A <**5<<;  
 88O,,!%(( ##DJJu$LMMLs   C> C>ri   N)r}   r~   r   r   r   r@  rS  KNOWN_LOCATIONSr   r  r  r(  r  r)  r%  r&  r  rB  r'  rA  r   ri   r   r   r  r    s]     %.!& BO9v5&>@

/Ab$
<r   r  c                   ,    \ rS rSrS rS rS rS rSrg)RestJSONSerializeri  c                     g)Ns   {}ri   r.  s    r   r(  (RestJSONSerializer._serialize_empty_body  s    r   c                 n    UR                   R                  5        H  u  p#SUR                  ;  d  M    g   g)zY
Serialize an empty JSON object whenever the shape has
members not targeting a location.
r;  TF)rl   rm   rU   )r    rW   rv   rI  s       r   r)  'RestJSONSerializer._requires_empty_body  s3    
 !==..0KF!2!22 1 r   c                     UR                   R                  S5      nU R                  XC5      (       a  gUS   S:g  n[        SUS   5      nU(       a  U(       d	  SUS   S'   ggg)z?Set Content-Type to application/json for all structured bodies.r$  Nr+   r   r   r*   zapplication/json)rU   rV   r%  r   )r    r-   rW   r  r$  has_bodyhas_content_types          r   r  *RestJSONSerializer._serialize_content_type  si    %%)))4&&w>>f%,%nj6KL,4FJy!.1 -8r   c                     U R                  5       nU R                  X1U5        [        R                  " U5      R	                  U R
                  5      $ r   )r   r   r   r   r]   r^   )r    r  rW   serialized_bodys       r   r'  )RestJSONSerializer._serialize_body_params  s;    --/7zz/*11$2G2GHHr   ri   N)	r}   r~   r   r   r(  r)  r  r'  r   ri   r   r   rY  rY    s    
GIr   rY  c                   N    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rSrg)RestXMLSerializeri  r   c                     UR                   S   n[        R                  " S5      nU R                  X!XC5        [	        U5      S   n[        R
                  " XPR                  S9$ )NrS   r&   r   )encoding)rU   r   Elementr   r=  tostringr^   )r    r  rW   	root_namepseudo_root	real_roots         r   r'  (RestXMLSerializer._serialize_body_params  sV    ''/	!))"-{>%a(	##I8M8MNNr   c                 ^    [        U SUR                   3U R                  5      nU" X2X5        g r   r   )r    rW   r  xmlnoderS   r)   s         r   r   RestXMLSerializer._serialize  s3    u/0##

 	w,r   c                    [         R                  " X5      nSUR                  ;   aD  UR                  S   nSnUR                  S5      (       a  USUS    3-  nUS   UR                  U'   UR                  5        H  u  pUR                  U   n
U
R                  R                  SU5      nU	c    g U
R                  R                  S5      (       a  U
R                  S   nXR                  U'   Mt  U R                  XX[5        M     g )NxmlNamespacexmlnsr   rP  r  rS   xmlAttribute)r   
SubElementrU   rV   attribrm   rl   r   )r    rp  r  rW   rS   structure_nodenamespace_metadataattribute_namer   r5   r   member_namexml_attribute_names                r   r   +RestXMLSerializer._serialize_type_structure  s    $//>U000!&!4!4^!D$N!%%h//A&8&B%C"DD4Fu4MN!!.1 ,,.JC ==-L&4488EK
 }))--n==%1%?%?%G"<A%%&89OOLM )r   c                     UR                   nUR                  R                  S5      (       a  UnUnO2UR                  R                  SS5      n[        R                  " X5      nU H  nU R                  XXXv5        M     g )Nr   rS   rv   )rv   rU   rV   r   rv  r   )	r    rp  r  rW   rS   r   element_name	list_nodeitems	            r   r   &RestXMLSerializer._serialize_type_list  sl    ||"";//LI'5599&(KL#..w=IDOOL	H r   c                 l   [         R                  " X5      nUR                  5        H  u  pg[         R                  " US5      nU R                  UR                  SS9n	U R                  UR
                  SS9n
U R                  UR                  XhU	5        U R                  UR
                  XxU
5        M     g )Nentryr   r   r5   )r   rv  rm   rY   r   r5   r   )r    rp  r  rW   rS   noder   r5   
entry_noderC  val_names              r   r   %RestXMLSerializer._serialize_type_map  s     %%g4 ,,.JC$//g>J000OH00' 1 H OOEIIsAOOEKKHE )r   c                 T    [         R                  " X5      nU(       a  SnOSnXel        g r   )r   rv  text)r    rp  r  rW   rS   r  	str_values          r   r   )RestXMLSerializer._serialize_type_boolean  s&     %%g4II	r   c                 \    [         R                  " X5      nU R                  U5      Ul        g r   )r   rv  rc   r  r    rp  r  rW   rS   r  s         r   r   &RestXMLSerializer._serialize_type_blob  s$    %%g4$$V,	r   c                     [         R                  " X5      nU R                  X#R                  R	                  S5      5      Ul        g r   )r   rv  rO   rU   rV   r  r  s         r   r   +RestXMLSerializer._serialize_type_timestamp  s9    %%g422''++,=>
	r   c                 P    [         R                  " X5      n[        U5      Ul        g r   )r   rv  r\   r  r  s         r   r   $RestXMLSerializer._default_serialize   s    %%g4K	r   ri   N)r}   r~   r   r   rI   r'  r   r   r   r   r   r   r   r   r   ri   r   r   rf  rf    s9     O-N4	IF(	-
 r   rf  )ec2queryr   z	rest-jsonzrest-xml)T)!r   r_   r;   rD   r   r  	xml.etreer   botocorer   botocore.compatr   botocore.exceptionsr   botocore.utilsr   r   r	   r
   DEFAULT_TIMESTAMP_FORMATr3   r2   compilern   r   r   r   r   r   r  rY  rf  r   ri   r   r   <module>r     s   8     	 !  & 4  % 
'12A> A>Hi4j i4XPO P<V2Z V2rk k\I+^ I@b * b L #!r   