+
    ˜qgjM"  ã                   óê   € ^ RI t ^ RIt^ RIt^ RIHtHt ]P                  ! ]4      t]	! ]P                  .4      t ! R R4      t ! R R4      tR tRRRR	^R
^RRRRRR/R lltRR ltRR ltRR ltR# )é    N)Ú
url_helperÚutilc                   ó0   a € ] tR t^t o RtR tR tRtV tR# )ÚMetadataLeafDecoderz.Decodes a leaf blob into something meaningful.c                óš   € V'       g   R # VP                  4       pVP                  R4      '       d   VP                  R4      '       d   R# R # )FÚ{Ú}T)ÚstripÚ
startswithÚendswith)ÚselfÚtexts   &&Ú?/usr/lib/python3/dist-packages/cloudinit/sources/helpers/ec2.pyÚ_maybe_json_objectÚ&MetadataLeafDecoder._maybe_json_object   s6   € ßÙØ�z‰z‹|ˆØ�?‰?˜3×Ò D§M¡M°#×$6Ò$6ÙÙó    c                ó€  € V'       g   R #  \         P                  ! V4      pT P                  T4      '       d    \        P
                  ! T4      # TP                  R4      R8w  d   TP                  4       # T#   \         d    Tu # i ; i  \        \        3 d"   p\        P                  RTT4        Rp?LhRp?ii ; i)Ú z6Field %s looked like a json object, but it was not: %sNÚ
éÿÿÿÿ)r   Údecode_binaryÚUnicodeDecodeErrorr   ÚjsonÚloadsÚ
ValueErrorÚ	TypeErrorÚLOGÚwarningÚfindÚ
splitlines)r   ÚfieldÚblobÚes   &&& r   Ú__call__ÚMetadataLeafDecoder.__call__   s®   € ßÙð	Ü×%Ò% dÓ+ˆDð ×"Ñ" 4×(Ò(ðä—z’z $Ó'Ð'ð �9‰9�T‹?˜bÔ Ø—?‘?Ó$Ð$Øˆøô "ô 	ØŠKð	ûô ¤	Ð*ô Ü—‘ØLØØ÷ñ ûðús(   ŒA8 ºB Á8BÂBÂB=ÂB8Â8B=© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r$   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € Ù8ò÷ð r   r   c                   ó<   a € ] tR t^6t o RR ltR tR tR tRtV t	R# )ÚMetadataMaterializerNc                ón   € Wn         R V n        W n        W0n        Vf   \	        4       V n        R # W@n        R # ©N)Ú_blobÚ_mdÚ	_base_urlÚ_callerr   Ú_leaf_decoder)r   r"   Úbase_urlÚcallerÚleaf_decoders   &&&&&r   Ú__init__ÚMetadataMaterializer.__init__7   s/   € ØŒ
ØˆŒØ!ŒØŒØÒÜ!4Ó!6ˆDÖà!-Ör   c                óæ  € / p. p\         P                  ! V4      pV'       g   W#3# R  pR pVP                  4        F°  pVP                  4       pV! V4      pV'       d	   V'       g   K-  VR8X  d   K6  V! V4      '       d   Ws9  d   VP	                  V4       K]  K_  VP                  R^4      pTp	\        V4      ^8”  d*   Vw  r«\         P                  ! V
4      p
V
e   RV
,          p	TpW’V&   K²  	  W#3# )c                 ó8   € V P                  R 4      '       d   R# R# )Ú/TF)r   ©Úitems   &r   Úhas_childrenÚ1MetadataMaterializer._parse.<locals>.has_childrenI   s   € Ø�}‰}˜S×!Ò!Ùár   c                 óV   € V P                  R 4      '       d   V P                  R 4      # V # )r@   )r   ÚrstriprA   s   &r   Úget_nameÚ-MetadataMaterializer._parse.<locals>.get_nameO   s%   € Ø�}‰}˜S×!Ò!Ø—{‘{ 3Ó'Ð'ØˆKr   zsecurity-credentialsÚ=z%s/openssh-key)r   r   r    r
   ÚappendÚsplitÚlenÚsafe_int)r   r"   ÚleavesÚchildrenrC   rG   r!   Ú
field_nameÚcontentsÚresourceÚidentÚsub_contentss   &&          r   Ú_parseÚMetadataMaterializer._parseA   sð   € ØˆØˆÜ×!Ò! $Ó'ˆçØÐ%Ð%ò	ò	ð
 —_‘_Ö&ˆEØ—K‘K“MˆEÙ! %›ˆJß§
ÙàÐ3Ô3ÙÙ˜E×"Ò"ØÔ-Ø—O‘O JÖ/ñ .ð !Ÿ;™; s¨AÓ.�Ø%�Ü�x“= 1Ô$à,4Ñ)�UÜ ŸMšM¨%Ó0�EØÒ(Ø#3°uÕ#=˜Ø%1˜
Ø%-�zÓ"ñ+ 'ð, Ð!Ð!r   c                ó¤   € V P                   e   V P                   # V P                  V P                  V P                  4      V n         V P                   # r3   )r5   Ú_materializer4   r6   )r   s   &r   ÚmaterializeÚ MetadataMaterializer.materializel   s:   € Ø�8‰8ÒØ—8‘8ˆOØ×$Ñ$ T§Z¡Z°·±Ó@ˆŒØ�x‰xˆr   c                óD  € V P                  V4      w  r4/ pV F]  p\        P                  ! W&4      pVP                  R 4      '       g
   VR ,          pV P	                  V4      pV P                  W‡4      WV&   K_  	  / p	VP                  4        F?  w  r«\        P                  ! W+4      pV P	                  V4      pV P                  W­4      Wš&   KA  	  / pVP                  V4       V	P                  4        F+  p
W®9   d   \        P                  RV4       K!  Wš,          Wê&   K-  	  V# )r@   z&Duplicate key found in results from %s)rU   r   Úcombine_urlr   r7   rX   Úitemsr8   ÚupdateÚkeysr   r   )r   r"   r9   rN   rO   Úchild_contentsÚcÚ	child_urlÚ
child_blobÚleaf_contentsr!   rR   Úleaf_urlÚ	leaf_blobÚjoineds   &&&            r   rX   Ú!MetadataMaterializer._materializer   s  € Ø!Ÿ[™[¨Ó.ÑˆØˆÛˆAÜ"×.Ò.¨xÓ;ˆIØ×%Ñ% c×*Ò*Ø˜SÕ �	ØŸ™ iÓ0ˆJØ $× 1Ñ 1°*Ó HˆNÓñ ð ˆØ%Ÿ|™|ž~‰OˆEÜ!×-Ò-¨hÓAˆHØŸ™ XÓ.ˆIØ#'×#5Ñ#5°eÓ#GˆMÓ ñ  .ð ˆØ�‰�nÔ%Ø"×'Ñ'Ö)ˆEØŒÜ—‘ÐDÀhÖOà -Õ 4�“ñ	 *ð
 ˆr   )r6   r4   r7   r8   r5   r3   )
r'   r(   r)   r*   r<   rU   rY   rX   r,   r-   r.   s   @r   r1   r1   6   s   ø‡ € ô.ò)"òV÷ð r   r1   c                ó    € VP                   V 9  # )z/Returns False if cause.code is in status_codes.)Úcode)Ústatus_codesÚcauses   &&r   Úskip_retry_on_codesrm   Š   s   € à�:‰:˜\Ñ)Ð)r   Ússl_detailsÚtimeoutÚretriesÚ
headers_cbÚheaders_redactÚexception_cbc          
      ó   € \         P                  ! W4      p\         P                  ! VR 4      pRp	 V'       g    \        P                  ! \        \
        4      p\         P                  ! VVVVVVVR7      p
V
P                  p	V	#   \         P                   d=   pTP                  \
        9  d   \        P                  ! \        RT4        Rp?T	# Rp?i\         d!    \        P                  ! \        RT4        T	# i ; i)z	user-datar   )rn   ro   rp   rs   rq   rr   z$Failed fetching userdata from url %sN)r   r\   Ú	functoolsÚpartialrm   ÚSKIP_USERDATA_CODESÚread_file_or_urlrQ   ÚUrlErrorrj   r   Úlogexcr   Ú	Exception)Úapi_versionÚmetadata_addressrn   ro   rp   rq   rr   rs   Úud_urlÚ	user_dataÚresponser#   s   &&$$$$$$    r   Úget_instance_userdatar�   �   sì   € ô ×#Ò#Ð$4ÓB€FÜ×#Ò# F¨KÓ8€FØ€IðIßô %×,Ò,Ü#Ô%8óˆLô ×.Ò.ØØ#ØØØ%Ø!Ø)ô
ˆð ×%Ñ%ˆ	ð Ðøô ×Ñô MØ�6‰6Ô,Ô,Ü�KŠKœÐCÀVÔLûð Ðûô ô IÜ�Š”CÐ?ÀÕHØÐðIús$   ±AB ÂC=Â1CÃC=ÃC=Ã<C=c           
      óŒ  a
a€ \         P                  ! W!V 4      p\        P                  ! \         P                  VVVVVV	R 7      oVV
3R lp S! V4      p\        VP                  W¼VR7      pVP                  4       p\        V\        4      '       g   / pV#   \         d"    \        P                  ! \        RY4       / u # i ; i))rn   ro   rp   rq   rr   rs   c                 óÊ   <€  S! V 4      P                   #   \        P                   d9   pS'       d   S! T4      '       g   h \        P	                  R T 4        Rp?R# Rp?ii ; i)z&Skipped retrieval of the content of %sNz	(skipped))rQ   r   ry   r   r   )Úurlr#   r:   Úretrieval_exception_ignore_cbs   & €€r   ÚmcallerÚ'_get_instance_metadata.<locals>.mcallerÏ   sQ   ø€ ð
	#Ù˜#“;×'Ñ'Ð'øÜ×"Ñ"ô 	#ç1Ù4°Q×7Ò7àä—‘ÐDÀcÔJÝ"ûð	#ús   ƒ •A"ªAÁ AÁA")r;   zFailed fetching %s from url %s)r   r\   ru   rv   rx   r1   rQ   rY   Ú
isinstanceÚdictr{   r   rz   r   )Útreer|   r}   rn   ro   rp   r;   rq   rr   rs   r…   Úmd_urlr†   r€   ÚmaterializerÚmdr:   s   &&&&&&&&&&f     @r   Ú_get_instance_metadatarŽ   ·   s¹   ù€ ô ×#Ò#Ð$4À4ÓH€FÜ×ÒÜ×#Ñ#ØØØØØ%Ø!ô€Fö#ðÙ˜&“>ˆÜ+Ø×Ñ˜v¸\ô
ˆð ×%Ñ%Ó'ˆÜ˜"œt×%Ò%ØˆBØˆ	øÜô Ü�Š”CÐ9¸4ÔHØŠ	ðús   ÁA	B Â)CÃCc
                 ó.   € \        R V VVVVVVVVV	R7      # )z
meta-data/)rŠ   r|   r}   rn   ro   rp   r;   rr   rq   rs   r…   ©rŽ   )
r|   r}   rn   ro   rp   r;   rq   rr   rs   r…   s
   &&&&&&&&&&r   Úget_instance_metadatar‘   ê   s2   € ô "ØØØ)ØØØØ!Ø%ØØ!Ø&Côð r   c	                 ó,   € \        R V VVVVVVVVR7
      # )zdynamic/instance-identity)
rŠ   r|   r}   rn   ro   rp   r;   rr   rq   rs   r�   )	r|   r}   rn   ro   rp   r;   rq   rr   rs   s	   &&&&&&&&&r   Úget_instance_identityr“     s/   € ô "Ø(ØØ)ØØØØ!Ø%ØØ!ôð r   )Úlatestúhttp://169.254.169.254)
r”   r•   Né   r–   NNNNN)	r”   r•   Nr–   r–   NNNN)ru   r   ÚloggingÚ	cloudinitr   r   Ú	getLoggerr'   r   Ú	frozensetÚ	NOT_FOUNDrw   r   r1   rm   r�   rŽ   r‘   r“   r&   r   r   Ú<module>rœ      s¦   ðó Û Û ç &à×Ò˜Ó!€Ù ×!5Ñ!5Ð 6Ó7Ð ÷ñ ÷FQñ Qòh*ñ
%ð ð	%ð
 ð%ð ð%ð ð%ð ð%ð õ%ôP0ôfö:r   