ó
    Ú°›jm  ã                   ó  • 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rS SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  \R"                  " \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g)é    N)Úpartial)Útee)Úwith_current_context)ÚPaginationError)Úregister_feature_id)Úmerge_dictsÚset_value_from_jmespathc                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚTokenEncoderé   aJ  Encodes dictionaries into opaque strings.

This for the most part json dumps + base64 encoding, but also supports
having bytes in the dictionary in addition to the types that json can
handle by default.

This is intended for use in encoding pagination tokens, which in some
cases can be complex structures and / or contain bytes.
c                 ó   •  [         R                  " U5      n[
        R                  " UR                  S5      5      R                  S5      $ ! [        [        4 a1    U R	                  U/ 5      u  p4XCS'   [         R                  " U5      n Ntf = f)zöEncodes a dictionary to an opaque string.

:type token: dict
:param token: A dictionary containing pagination information,
    particularly the service pagination token(s) but also other boto
    metadata.

:rtype: str
:returns: An opaque string
Úboto_encoded_keysúutf-8)	ÚjsonÚdumpsÚ	TypeErrorÚUnicodeDecodeErrorÚ_encodeÚbase64Ú	b64encodeÚencodeÚdecode)ÚselfÚtokenÚjson_stringÚencoded_tokenÚencoded_keyss        ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/paginate.pyr   ÚTokenEncoder.encode)   s…   € ð	4ô Ÿ*š* UÓ+ˆKô ×Ò × 2Ñ 2°7Ó ;Ó<×CÑCÀGÓLÐLøô Ô-Ð.ó 		4à*.¯,©,°u¸bÓ*AÑ'ˆMð 2>Ð-Ñ.ô Ÿ*š* ]Ó3ŠKð		4ús   ‚A Á>BÂBc                 óî   • [        U[        5      (       a  U R                  X5      $ [        U[        5      (       a  U R	                  X5      $ [        U[
        5      (       a  U R                  X5      $ U/ 4$ )z@Encode bytes in given data, keeping track of the path traversed.)Ú
isinstanceÚdictÚ_encode_dictÚlistÚ_encode_listÚbytesÚ_encode_bytes©r   ÚdataÚpaths      r   r   ÚTokenEncoder._encodeF   se   € ä�dœD×!Ñ!Ø×$Ñ$ TÓ0Ð0Ü˜œd×#Ñ#Ø×$Ñ$ TÓ0Ð0Ü˜œe×$Ñ$Ø×%Ñ% dÓ1Ð1à˜�8ˆOó    c                 ó¬   • / n/ n[        U5       H?  u  pVX%/-   nU R                  Xg5      u  p‰UR                  U5        UR                  U	5        MA     X44$ )z@Encode any bytes in a list, noting the index of what is encoded.)Ú	enumerater   ÚappendÚextend)
r   r)   r*   Únew_dataÚencodedÚiÚvalueÚnew_pathÚ	new_valueÚnew_encodeds
             r   r%   ÚTokenEncoder._encode_listQ   sY   € àˆØˆÜ! $ž‰HˆAØ˜c‘zˆHØ%)§\¡\°%Ó%BÑ"ˆIØ�O‰O˜IÔ&Ø�N‰N˜;Ö'ñ	 (ð
 Ð Ð r,   c                 óœ   • 0 n/ nUR                  5        H2  u  pVX%/-   nU R                  Xg5      u  p‰XƒU'   UR                  U	5        M4     X44$ )z@Encode any bytes in a dict, noting the index of what is encoded.)Úitemsr   r0   )
r   r)   r*   r1   r2   Úkeyr4   r5   r6   r7   s
             r   r#   ÚTokenEncoder._encode_dict\   sV   € àˆØˆØŸ*™*ž,‰JˆCØ˜e‘|ˆHØ%)§\¡\°%Ó%BÑ"ˆIØ%�S‰MØ�N‰N˜;Ö'ñ	 'ð
 Ð Ð r,   c                 óR   • [         R                  " U5      R                  S5      U/4$ )zBase64 encode a byte string.r   )r   r   r   r(   s      r   r'   ÚTokenEncoder._encode_bytesg   s%   € ä×Ò Ó%×,Ñ,¨WÓ5¸°vÐ=Ð=r,   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r%   r#   r'   Ú__static_attributes__r?   r,   r   r   r      s!   † ñòMò:	ò	!ò	!õ>r,   r   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚTokenDecoderél   z¨Decodes token strings back into dictionaries.

This performs the inverse operation to the TokenEncoder, accepting
opaque strings and decoding them into a useable form.
c                 óæ   • [         R                  " UR                  S5      5      R                  S5      n[        R
                  " U5      nUR                  SS5      nUc  U$ U R                  X45      $ )a$  Decodes an opaque string to a dictionary.

:type token: str
:param token: A token string given by the botocore pagination
    interface.

:rtype: dict
:returns: A dictionary containing pagination information,
    particularly the service pagination token(s) but also other boto
    metadata.
r   r   N)r   Ú	b64decoder   r   r   ÚloadsÚpopÚ_decode)r   r   r   Údecoded_tokenr   s        r   r   ÚTokenDecoder.decodes   sf   € ô ×&Ò& u§|¡|°GÓ'<Ó=×DÑDÀWÓMˆÜŸ
š
 ;Ó/ˆð %×(Ñ(Ð)<¸dÓCˆØÑØ Ð à—<‘< Ó<Ð<r,   c                 ó¨   • U HK  nU R                  X5      n[        R                  " UR                  S5      5      nU R	                  XU5        MM     U$ )z&Find each encoded value and decode it.r   )Ú	_path_getr   rJ   r   Ú	_path_set)r   r   r   r;   r2   Údecodeds         r   rM   ÚTokenDecoder._decodeŠ   sH   € ãˆCØ—n‘n UÓ0ˆGÜ×&Ò& w§~¡~°gÓ'>Ó?ˆGØ�N‰N˜5 wÖ/ñ  ð ˆr,   c                 ó$   • UnU H  nX4   nM	     U$ )z€Return the nested data at the given path.

For instance:
    data = {'foo': ['bar', 'baz']}
    path = ['foo', 0]
    ==> 'bar'
r?   )r   r)   r*   ÚdÚsteps        r   rQ   ÚTokenDecoder._path_get’   s   € ð ˆÛˆDØ‘ŠAñ àˆr,   c                 ó:   • U R                  XSS 5      nX4US   '   g)z¦Set the value of a key in the given data.

Example:
    data = {'foo': ['bar', 'baz']}
    path = ['foo', 1]
    value = 'bin'
    ==> data = {'foo': ['bar', 'bin']}
Néÿÿÿÿ)rQ   )r   r)   r*   r4   Ú	containers        r   rR   ÚTokenDecoder._path_set£   s$   € ð —N‘N 4¨c¨r¨Ó3ˆ	Ø#�$�r‘(Òr,   r?   N)
r@   rA   rB   rC   rD   r   rM   rQ   rR   rE   r?   r,   r   rG   rG   l   s   † ñò=ò.òõ"
$r,   rG   c                   ó    • \ rS rSrS rS rSrg)ÚPaginatorModelé°   c                 ó   • US   U l         g )NÚ
pagination©Ú_paginator_config)r   Úpaginator_configs     r   Ú__init__ÚPaginatorModel.__init__±   s   € Ø!1°,Ñ!?ˆÕr,   c                 ó^   •  U R                   U   nU$ ! [         a    [        SU 35      ef = f)Nz(Paginator for operation does not exist: )rc   ÚKeyErrorÚ
ValueError)r   Úoperation_nameÚsingle_paginator_configs      r   Úget_paginatorÚPaginatorModel.get_paginator´   sI   € ð	Ø&*×&<Ñ&<¸^Ñ&LÐ#ð
 'Ð&øô	 ó 	ÜØ:¸>Ð:JÐKóð ð	ús   ‚ “,rb   N)r@   rA   rB   rC   re   rl   rE   r?   r,   r   r^   r^   °   s   † ò@õ'r,   r^   c                   óð   • \ rS rSrSrS r\S 5       r\S 5       r\R                  S 5       r\S 5       r
S rS	 r\" \" \S
5      5      S 5       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)ÚPageIteratoré¾   zAn iterable object to paginate API results.
Please note it is NOT a python iterator.
Use ``iter`` to wrap this as a generator.
c                 óà   • Xl         X l        X0l        X@l        XPl        X€l        Xpl        X�l        X l        X°l	        S U l
        X`l        0 U l        [        5       U l        [        5       U l        g ©N)Ú_methodÚ_input_tokenÚ_output_tokenÚ_more_resultsÚ_result_keysÚ
_max_itemsÚ
_limit_keyÚ_starting_tokenÚ
_page_sizeÚ
_op_kwargsÚ_resume_tokenÚ_non_aggregate_key_exprsÚ_non_aggregate_partr   Ú_token_encoderrG   Ú_token_decoder)r   ÚmethodÚinput_tokenÚoutput_tokenÚmore_resultsÚresult_keysÚnon_aggregate_keysÚ	limit_keyÚ	max_itemsÚstarting_tokenÚ	page_sizeÚ	op_kwargss               r   re   ÚPageIterator.__init__Ä   se   € ð ŒØ'ÔØ)ÔØ)ÔØ'ÔØ#ŒØ#ŒØ-ÔØ#ŒØ#ŒØ!ˆÔØ(:Ô%Ø#%ˆÔ Ü*›nˆÔÜ*›nˆÕr,   c                 ó   • U R                   $ rr   ©rw   ©r   s    r   r†   ÚPageIterator.result_keysâ   ó   € à× Ñ Ð r,   c                 ó   • U R                   $ )z&Token to specify to resume pagination.)r}   r�   s    r   Úresume_tokenÚPageIterator.resume_tokenæ   s   € ð ×!Ñ!Ð!r,   c                 óL  • [        U[        5      (       d  [        SU 35      eSU;   a  [        U R                  S/-   5      nO[        U R                  5      n[        UR                  5       5      nX#:X  a!  U R                  R                  U5      U l        g [        SU 35      e)NúBad starting token: Úboto_truncate_amount)	r!   r"   ri   Úsortedrt   Úkeysr€   r   r}   )r   r4   Ú
token_keysÚ	dict_keyss       r   r”   r•   ë   s•   € ä˜%¤×&Ñ&ÜÐ3°E°7Ð;Ó<Ð<à! UÓ*Ü × 1Ñ 1Ð5KÐ4LÑ LÓM‰Jä × 1Ñ 1Ó2ˆJÜ˜5Ÿ:™:›<Ó(ˆ	àÓ"Ø!%×!4Ñ!4×!;Ñ!;¸EÓ!BˆDÕäÐ3°E°7Ð;Ó<Ð<r,   c                 ó   • U R                   $ rr   )r   r�   s    r   Únon_aggregate_partÚPageIterator.non_aggregate_partû   s   € à×'Ñ'Ð'r,   c              #   ó�  #   • U R                   nS nU R                   Vs0 s H  o3S _M     nnU R                  b  U R                  5       S   nSnSnU R                  S   nSnU R                  U5         U R                  U5      n	U R                  U	5      n
U(       a3  U R                  b  U R                  X§U5      nSnU R                  U
5        OSnUR                  U
5      nUc  / n[        U5      nSnU R                  b  X\-   U R                  -
  nUS:”  a  U R                  U
UUUU5        U	v •  g U	v •  X\-  nU R                  U
5      n[        S UR!                  5        5       5      (       a  g U R                  b  XPR                  :X  a  X@l        g Ub  X$:X  a  SU 3n[%        US9eU R'                  X5        UnGMM  s  snf 7f)Nr   TFc              3   ó(   #   • U  H  oS L v •  M
     g 7frr   r?   )Ú.0Úts     r   Ú	<genexpr>Ú(PageIterator.__iter__.<locals>.<genexpr>8  s   é € Ð>Ò*= Q˜D•yÒ*=ùs   ‚z(The same next token was received twice: ©Úmessage)r|   rt   rz   Ú_parse_starting_tokenr†   Ú_inject_starting_paramsÚ_make_requestÚ_extract_parsed_responseÚ_handle_first_requestÚ _record_non_aggregate_key_valuesÚsearchÚlenrx   Ú_truncate_responseÚ_get_next_tokenÚallÚvaluesr”   r   Ú_inject_token_into_kwargs)r   Úcurrent_kwargsÚprevious_next_tokenr;   Ú
next_tokenÚtotal_itemsÚfirst_requestÚprimary_result_keyÚstarting_truncationÚresponseÚparsedÚcurrent_responseÚnum_current_responseÚtruncate_amountr§   s                  r   Ú__iter__ÚPageIterator.__iter__ÿ   s
  é € ØŸ™ˆØ"ÐØ+/×+<Ò+<Ó=Ò+< C˜4’iÑ+<ˆ
Ð=Ø×ÑÑ+ð
 ×3Ñ3Ó5°aÑ8ˆJàˆØˆØ!×-Ñ-¨aÑ0ÐØÐØ×$Ñ$ ^Ô4ØØ×)Ñ)¨.Ó9ˆHØ×2Ñ2°8Ó<ˆFÞð ×'Ñ'Ñ3Ø*.×*DÑ*DØÐ4Gó+Ð'ð !&�Ø×5Ñ5°fÕ=ð
 '(Ð#Ø1×8Ñ8¸Ó@ÐØÑ'Ø#%Ð Ü#&Ð'7Ó#8Ð ØˆOØ�‰Ñ*àÑ6¸¿¹ÑHð  ð  Ó"Ø×'Ñ'ØØ&Ø#Ø'Øôð ’Øà’ØÑ3�Ø!×1Ñ1°&Ó9�
ÜÑ>¨*×*;Ñ*;Ô*=Ó>×>Ñ>Øà—O‘OÑ/Ø#§¡Ó6ð )3Ô%Øà'Ñ3Ø+Ó9ð CÀ:À,ÐOð ô *°'Ñ:Ð:Ø×.Ñ.¨~ÔJØ&0Ð#òy ùò >ùs   ‚GŸG«FGc              #   óº   #   • [         R                  " U5      nU  H9  nUR                  U5      n[        U[        5      (       a  U Sh  v•N   M5  Uv •  M;     g N7f)a-  Applies a JMESPath expression to a paginator

Each page of results is searched using the provided JMESPath
expression. If the result is not a list, it is yielded
directly. If the result is a list, each element in the result
is yielded individually (essentially implementing a flatmap in
which the JMESPath search is the mapping function).

:type expression: str
:param expression: JMESPath expression to apply to each page.

:return: Returns an iterator that yields the individual
    elements of applying a JMESPath expression to each page of
    results.
N)ÚjmespathÚcompiler®   r!   r$   )r   Ú
expressionÚcompiledÚpageÚresultss        r   r®   ÚPageIterator.searchM  sQ   é € ô  ×#Ò# JÓ/ˆÛˆDØ—o‘o dÓ+ˆGÜ˜'¤4×(Ñ(Ø"×"Ò"ð ”ò ñ #ùs   ‚AAÁ	AÁ
AÚ	PAGINATORc                 ó&   • U R                   " S0 UD6$ )Nr?   )rs   )r   rµ   s     r   rª   ÚPageIterator._make_requestf  s   € à�|Š|Ñ-˜nÑ-Ð-r,   c                 ó   • U$ rr   r?   )r   r¼   s     r   r«   Ú%PageIterator._extract_parsed_responsej  s   € Øˆr,   c                 óˆ   • 0 nU R                    H*  nUR                  U5      n[        X#R                  U5        M,     X l        g rr   )r~   r®   r	   rÆ   r   )r   r¼   r‡   rÆ   Úresults        r   r­   Ú-PageIterator._record_non_aggregate_key_valuesm  sC   € ØÐØ×7Ô7ˆJØ×&Ñ& xÓ0ˆFÜ#Ø"×$9Ñ$9¸6öñ 8ð
 $6Õ r,   c                 ó²   • U R                   b$  U R                  5       S   nU R                  X5        U R                  b  U R                  XR                  '   g g )Nr   )rz   r¨   r´   r{   ry   )r   rŒ   r·   s      r   r©   Ú$PageIterator._inject_starting_paramsv  sT   € ð ×ÑÑ+ð ×3Ñ3Ó5°aÑ8ˆJØ×*Ñ*¨9ÔAØ�?‰?Ñ&ð *.¯©ˆI—o‘oÒ&ð 'r,   c                 óf   • UR                  5        H  u  p4Ub  US:w  a  XAU'   M  X1;   d  M  X	 M     g )NÚNone)r:   )r   rŒ   r·   Únamer   s        r   r´   Ú&PageIterator._inject_token_into_kwargsƒ  s5   € Ø%×+Ñ+Ö-‰KˆDØÑ!¨°«Ø"'˜$“ØÕ"Ø’Oò	 .r,   c                 óà  • U R                  5       S   nUR                  U5      n[        U[        [        45      (       a  XCS  nOS n[        XR                  U5        U R                   H�  nXb:X  a  M
  UR                  U5      n[        U[        5      (       a  / nO8[        U[        5      (       a  SnO [        U[        [        45      (       a  UnOS n[        XR                  U5        Mƒ     U$ )Né   Ú )
r¨   r®   r!   r$   Ústrr	   rÆ   r†   ÚintÚfloat)	r   r½   rº   r»   Úall_datar)   r   ÚsampleÚempty_values	            r   r¬   Ú"PageIterator._handle_first_requestŠ  sÛ   € ð
 #×8Ñ8Ó:¸1Ñ=ÐØ%×,Ñ,¨VÓ4ˆÜ�h¤¤s ×,Ñ,ØÐ0Ð1‰DàˆDÜ ×(EÑ(EÀtÔLð ×%Ô%ˆEØÓ*ÙØ—\‘\ &Ó)ˆFÜ˜&¤$×'Ñ'Ø ‘Ü˜F¤C×(Ñ(Ø ‘Ü˜F¤S¬% L×1Ñ1ð %‘à"�Ü# F×,<Ñ,<¸kÖJñ# &ð$ #Ð"r,   c                 óœ   • UR                  U5      nUc  / n[        U5      U-
  nUS U n[        XR                  U5        Xt-   US'   XPl        g )Nr˜   )r®   r¯   r	   rÆ   r”   )	r   r½   rº   rÀ   r»   r·   ÚoriginalÚamount_to_keepÚ	truncateds	            r   r°   ÚPageIterator._truncate_response­  sg   € ð &×,Ñ,¨VÓ4ˆØÑØˆHÜ˜X›¨Ñ8ˆØ˜_˜nÐ-ˆ	ÜØ×1Ñ1°9ô	
ð Ñ0ð 	Ð)Ñ*ð 'Õr,   c                 óþ   • U R                   b"  U R                   R                  U5      (       d  0 $ 0 n[        U R                  U R                  5       H'  u  p4UR                  U5      nU(       a  XRU'   M#  S X$'   M)     U$ rr   )rv   r®   Úzipru   rt   )r   r½   Únext_tokensr„   Ú	input_keyr·   s         r   r±   ÚPageIterator._get_next_tokenÍ  s�   € Ø×ÑÑ)Ø×%Ñ%×,Ñ,¨V×4Ñ4Ø�	ØˆÜ'*Ø×Ñ × 1Ñ 1ö(
Ñ#ˆLð &×,Ñ,¨VÓ4ˆJö Ø)3˜IÓ&à)-�Ó&ñ(
ð Ðr,   c                 ó²   • [        U [        U R                  5      5      n[        XR                  5       VVs/ s H  u  p#[	        X#5      PM     snn$ s  snnf rr   )r   r¯   r†   ré   ÚResultKeyIterator)r   Úteed_resultsr3   Ú
result_keys       r   Úresult_key_itersÚPageIterator.result_key_itersÞ  sR   € Ü˜4¤ T×%5Ñ%5Ó!6Ó7ˆô "% \×3CÑ3CÔ!Dô
â!D‘�ô ˜aÖ,Ù!Dò
ð 	
ùó 
s   ¸Ac                 óF  • 0 nU  Hç  nUn[        U[        5      (       a  [        U5      S:X  a  US   nU R                   H©  nUR	                  U5      nUc  M  UR	                  U5      nUc  [        UUR                  U5        MF  [        U[        5      (       a  UR                  U5        Mn  [        U[        [        [        45      (       d  M�  [        UUR                  Xe-   5        M«     Mé     [        XR                  5        U R                  b  U R                  US'   U$ )Né   rÚ   Ú	NextToken)r!   Útupler¯   r†   r®   r	   rÆ   r$   r0   rÝ   rÞ   rÜ   r   rž   r”   )r   Úcomplete_resultr¼   rÈ   Úresult_expressionÚresult_valueÚexisting_values          r   Úbuild_full_resultÚPageIterator.build_full_resultå  s  € ØˆÛˆHØˆDô ˜(¤E×*Ñ*¬s°8«}ÀÓ/AØ ‘{�ð
 &*×%5Ô%5Ð!ð  1×7Ñ7¸Ó=�ØÑ'ÙØ!2×!9Ñ!9¸/Ó!J�Ø!Ñ)ä+Ø'Ø)×4Ñ4Ø$ôñ
 ä˜l¬D×1Ñ1Ø"×)Ñ)¨,Ö7Ü ¬s´E¼3Ð.?×@Ó@ä+Ø'Ø)×4Ñ4Ø&Ñ5öó1 &6ñ ôT 	�O×%<Ñ%<Ô=Ø×ÑÑ(Ø+/×+<Ñ+<ˆO˜KÑ(ØÐr,   c                 ó   • U R                   c  g U R                   n U R                  R                  U5      nSnSU;   a  UR                  S5      nUS	 X4$ ! [        [
        4 a    U R                  5       u  p X4$ f = f)Nr   r˜   )rz   r�   r   Úgetri   r   Ú _parse_starting_token_deprecated)r   r·   Úindexs      r   r¨   Ú"PageIterator._parse_starting_token  sž   € Ø×ÑÑ'Øð ×)Ñ)ˆ
ð	HØ×,Ñ,×3Ñ3°JÓ?ˆJØˆEØ%¨Ó3Ø"Ÿ™Ð'=Ó>�ØÐ5Ð6ð Ð Ð øô œIÐ&ó 	HØ $× EÑ EÓ GÑˆJ˜ØÐ Ð ð	Hús   œ7A Á"A=Á<A=c                 óà  • [         R                  SU R                  5        U R                  c  gU R                  R                  S5      n/ nSn[	        U5      [	        U R
                  5      S-   :X  a   [        UR                  5       5      nU H-  nUS:X  a  UR                  S5        M  UR                  U5        M/     U R                  U5      U4$ ! [         a    U R                  /n N_f = f)zd
This handles parsing of old style starting tokens, and attempts to
coerce them into the new style.
zCAttempting to fall back to old starting token parser. For token: %sNÚ___r   rÚ   rÖ   )ÚlogÚdebugrz   Úsplitr¯   rt   rÝ   rL   ri   r/   Ú"_convert_deprecated_starting_token)r   Úpartsr·   r   Úparts        r   rÿ   Ú-PageIterator._parse_starting_token_deprecated&  sæ   € ô
 	�	‰	ØQØ× Ñ ô	
ð ×ÑÑ'Øà×$Ñ$×*Ñ*¨5Ó1ˆØˆ
ØˆÜˆu‹:œ˜T×.Ñ.Ó/°!Ñ3Ó3ð/Ü˜EŸI™I›KÓ(�ó ˆDØ�v‹~Ø×!Ñ! $Ö'à×!Ñ! $Ö'ñ	 ð
 ×6Ñ6°zÓBÀEÐIÐIøô ó /ð ×-Ñ-Ð.’ð/ús   Á4C ÃC-Ã,C-c                 ó8  • [        U5      n[        U R                  5      nX#:”  a  [        SU R                   35      eX#:  a:  [        R                  S5        [        X2-
  5       H  nUR                  S5        M     [        [        U R                  U5      5      $ )zJ
This attempts to convert a deprecated starting token into the new
style.
r—   zaOld format starting token does not contain all input tokens. Setting the rest, in order, as None.N)
r¯   rt   ri   rz   r  r  Úranger/   r"   ré   )r   Údeprecated_tokenÚlen_deprecated_tokenÚlen_input_tokenr3   s        r   r  Ú/PageIterator._convert_deprecated_starting_tokenD  s“   € ô
  #Ð#3Ó4ÐÜ˜d×/Ñ/Ó0ˆØÓ1ÜÐ3°D×4HÑ4HÐ3IÐJÓKÐKØ!Ó3Ü�I‰Ið?ôô ˜?ÑAÖB�Ø ×'Ñ'¨Ö-ñ Cä”C˜×)Ñ)Ð+;Ó<Ó=Ð=r,   )rt   ry   rx   rs   rv   r~   r   r|   ru   r{   rw   r}   rz   r�   r€   r”   N)r@   rA   rB   rC   rD   re   Úpropertyr†   r”   Úsetterrž   rÁ   r®   r   r   r   rª   r«   r­   r©   r´   r¬   r°   r±   rñ   rû   r¨   rÿ   r  rE   r?   r,   r   ro   ro   ¾   sÐ   † ñò
-ð< ñ!ó ð!ð ñ"ó ð"ð ×Ññ=ó ð=ð ñ(ó ð(òL1ò\ñ2 ™'Ð"5°{ÓCÓDñ.ó Eð.òò6ò9ò$ò!#òF'ò@ò"
ò/òb!ò Jõ<>r,   ro   c                   ó^   • \ rS rSr\rS r\S 5       rS r	S r
S rS rS rS	 rS
 rS rSrg)Ú	PaginatoriW  c                 ó¨  • X0l         Xl        X l        U R                  U R                  5      U l        U R                  U R                  5      U l        U R                  U R                  5      U l        U R                  U R                  5      U l
        U R                  U R                  5      U l        U R                  U R                  5      U l        g rr   )Ú_modelrs   Ú_pagination_cfgÚ_get_output_tokensru   Ú_get_input_tokensrt   Ú_get_more_results_tokenrv   Ú_get_non_aggregate_keysÚ_non_aggregate_keysÚ_get_result_keysrw   Ú_get_limit_keyry   )r   r‚   Úpagination_configÚmodels       r   re   ÚPaginator.__init__Z  s¬   € ØŒØŒØ0ÔØ!×4Ñ4°T×5IÑ5IÓJˆÔØ ×2Ñ2°4×3GÑ3GÓHˆÔØ!×9Ñ9¸$×:NÑ:NÓOˆÔØ#'×#?Ñ#?Ø× Ñ ó$
ˆÔ ð !×1Ñ1°$×2FÑ2FÓGˆÔØ×-Ñ-¨d×.BÑ.BÓCˆ�r,   c                 ó   • U R                   $ rr   r�   r�   s    r   r†   ÚPaginator.result_keysg  r’   r,   c                 ó†   • / nUR                  S/ 5       H(  nUR                  [        R                  " U5      5        M*     U$ )Nr‡   )rþ   r/   rÄ   rÅ   )r   Úconfigrš   r;   s       r   r  Ú!Paginator._get_non_aggregate_keysk  s9   € ØˆØ—:‘:Ð2°BÖ7ˆCØ�K‰Kœ×(Ò(¨Ó-Ö.ñ 8àˆr,   c                 ó    • / nUS   n[        U[        5      (       d  U/nU H(  nUR                  [        R                  " U5      5        M*     U$ )Nr„   )r!   r$   r/   rÄ   rÅ   )r   r%  Úoutputr„   s       r   r  ÚPaginator._get_output_tokensq  sK   € ØˆØ˜nÑ-ˆÜ˜,¬×-Ñ-Ø(˜>ˆLÛ"ˆFØ�M‰Mœ(×*Ò*¨6Ó2Ö3ñ #àˆr,   c                 óT   • U R                   S   n[        U[        5      (       d  U/nU$ )Nrƒ   )r  r!   r$   )r   r%  rƒ   s      r   r  ÚPaginator._get_input_tokensz  s,   € Ø×*Ñ*¨=Ñ9ˆÜ˜+¤t×,Ñ,Ø&˜-ˆKØÐr,   c                 óX   • UR                  S5      nUb  [        R                  " U5      $ g )Nr…   )rþ   rÄ   rÅ   )r   r%  r…   s      r   r  Ú!Paginator._get_more_results_token€  s,   € Ø—z‘z .Ó1ˆØÑ#Ü×#Ò# LÓ1Ð1ð $r,   c                 ó¶   • UR                  S5      nUb@  [        U[        5      (       d  U/nU Vs/ s H  n[        R                  " U5      PM     nnU$ g s  snf )Nrð   )rþ   r!   r$   rÄ   rÅ   )r   r%  rð   Úrks       r   r  ÚPaginator._get_result_keys…  sZ   € Ø—Z‘Z Ó-ˆ
ØÑ!Ü˜j¬$×/Ñ/Ø(˜\�
Ù9CÓDº°2œ(×*Ò*¨2Ö.¹ˆJÐDØÐð	 "ùò Es   ± Ac                 ó$   • UR                  S5      $ )Nrˆ   )rþ   )r   r%  s     r   r  ÚPaginator._get_limit_key�  s   € Ø�z‰z˜+Ó&Ð&r,   c                 óø   • U R                  U5      nU R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  US   US   US   U5      $ )z›Create paginator object for an operation.

This returns an iterable object.  Iterating over
this object will yield a single page of a response
at a time.

ÚMaxItemsÚStartingTokenÚPageSize)	Ú_extract_paging_paramsÚPAGE_ITERATOR_CLSrs   rt   ru   rv   rw   r  ry   )r   ÚkwargsÚpage_paramss      r   ÚpaginateÚPaginator.paginate�  s}   € ð ×1Ñ1°&Ó9ˆØ×%Ñ%Ø�L‰LØ×ÑØ×ÑØ×ÑØ×ÑØ×$Ñ$Ø�O‰OØ˜
Ñ#Ø˜Ñ(Ø˜
Ñ#Øó
ð 	
r,   c                 óÖ  • UR                  S0 5      nUR                  SS 5      nUb  [        U5      nUR                  SS 5      nUb�  U R                  c	  [	        SS9eU R
                  R                  R                  nUR                  U R                  5      nUR                  S:X  a!  [        U[        5      (       d  [        U5      nO[        U5      nUUR                  SS 5      US.$ )	NÚPaginationConfigr4  r6  zTPageSize parameter is not supported for the pagination interface for this operation.r¦   Ústringr5  )r4  r5  r6  )rL   rþ   rÝ   ry   r   r  Úinput_shapeÚmembersÚ	type_namer!   rÜ   )r   r9  r  r‰   r‹   Úinput_membersÚlimit_key_shapes          r   r7  Ú Paginator._extract_paging_params§  sâ   € Ø"ŸJ™JÐ'9¸2Ó>ÐØ%×)Ñ)¨*°dÓ;ˆ	ØÑ Ü˜I›ˆIØ%×)Ñ)¨*°dÓ;ˆ	ØÑ Ø�‰Ñ&Ü%ð?ñð ð !ŸK™K×3Ñ3×;Ñ;ˆMØ+×/Ñ/°·±Ó@ˆOØ×(Ñ(¨HÓ4Ü! )¬S×1Ñ1Ü # I£�Iøä 	›N�	à!Ø.×2Ñ2°?ÀDÓIØ!ñ
ð 	
r,   )	rt   ry   rs   r  rv   r  ru   r  rw   N)r@   rA   rB   rC   ro   r8  re   r  r†   r  r  r  r  r  r  r;  r7  rE   r?   r,   r   r  r  W  sJ   † Ø$ÐòDð ñ!ó ð!òòòò2ò
ò'ò
õ.
r,   r  c                   ó$   • \ rS rSrSrS rS rSrg)rî   iÁ  al  Iterates over the results of paginated responses.

Each iterator is associated with a single result key.
Iterating over this object will give you each element in
the result key list.

:param pages_iterator: An iterator that will give you
    pages of results (a ``PageIterator`` class).
:param result_key: The JMESPath expression representing
    the result key.

c                 ó   • Xl         X l        g rr   ©Ú_pages_iteratorrð   )r   Úpages_iteratorrð   s      r   re   ÚResultKeyIterator.__init__Ï  s   € Ø-ÔØ$�r,   c              #   óŠ   #   • U R                    H-  nU R                  R                  U5      nUc  / nU S h  v•N   M/     g  N	7frr   )rI  rð   r®   )r   rÈ   rÉ   s      r   rÁ   ÚResultKeyIterator.__iter__Ó  sA   é € Ø×(Ô(ˆDØ—o‘o×,Ñ,¨TÓ2ˆGØ‰Ø�Ø×Òò	 )ñ ùs   ‚5A·A¸
ArH  N)r@   rA   rB   rC   rD   re   rÁ   rE   r?   r,   r   rî   rî   Á  s   † ñò%õr,   rî   )r   r   ÚloggingÚ	functoolsr   Ú	itertoolsr   rÄ   Úbotocore.contextr   Úbotocore.exceptionsr   Úbotocore.useragentr   Úbotocore.utilsr   r	   Ú	getLoggerr@   r  r   rG   r^   ro   r  rî   r?   r,   r   Ú<module>rV     s}   ðó Û Û Ý Ý ã å 1Ý /Ý 2ß ?à×Ò˜Ó!€÷K>ñ K>÷\A$ñ A$÷H'ñ '÷V>ñ V>÷rg
ñ g
÷Tò r,   