Ë
    x[h®  ã                   ó  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZmZmZ d dlmZ d dlmZ  ej(                  e«      ZdZeed<   dZeed	<   ej4                  d
ej6                  dej8                  diZeeeef      ed<    G d„ de«      Z  e dejB                  «      Z"eed<    e d ejF                  «      Z$eed<   e"a% ejL                  «       Z'deee
df   ddfd„Z(d„ Z)d„ Z*d„ Z+e jX                  d„ «       Z-y)é    N)ÚStringIO)ÚCallableÚDictÚFinalÚ
NamedTupleÚUnion)Úversion)Úlog_utilz#Cloud-init {} received {}, exiting
ÚSIG_MESSAGEé   ÚBACK_FRAME_TRACE_DEPTHz/Cloud-init %(version)s received SIGINT, exitingz0Cloud-init %(version)s received SIGTERM, exitingz0Cloud-init %(version)s received SIGABRT, exitingÚSIGNALSc                   ó"   — e Zd ZU eed<   eed<   y)ÚExitBehaviorÚ	exit_codeÚ	log_levelN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__© ó    ú:/usr/lib/python3/dist-packages/cloudinit/signal_handler.pyr   r       s   … ØƒNØ„Nr   r   é   ÚSIGNAL_EXIT_BEHAVIOR_CRASHÚSIGNAL_EXIT_BEHAVIOR_QUIETÚsigÚreturnc                 ó”  — t        | «      r2t        | t        j                  «      st        j                  d| «       yy| t        j                  k(  rt        j                  d«       y| €t        j                  d«       y| t        j                  k(  rt        j                  d| «       yt        j                  dt        | «      | «       y)z+inspect_handler() logs signal handler statez.Signal state [%s] - previously custom handler.z,Signal state [SIG_IGN] - previously ignored.Nz;Signal state [None] - previously not installed from Python.zISignal state [%s] - default way of handling signal was previously in use.zSignal state [%s(%s)] - unknown)ÚcallableÚ
isinstanceÚtypesÚBuiltinFunctionTypeÚLOGÚinfoÚsignalÚSIG_IGNÚSIG_DFLÚwarningÚtype)r   s    r   Úinspect_handlerr,   +   s‘   € ä�„}ô ˜#œu×8Ñ8Ô9Ü�H‰HÐEÀsÕKð :à	”—‘Ò	Ü�‰Ð?Õ@Ø	ˆÜ�‰ÐNÕOØ	”—‘Ò	Ü�‰ð!àõ	
ô 	�‰Ð5´t¸C³yÀ#ÕFr   c                 óJ  — ||kD  s| sy t        j                  | «      }d|dz  z  }|j                  |›d|j                  ›d�«       |j                  |›d|j                  ›d�«       |j                  |›d|j
                  ›d�«       t        | j                  |dz   ||«       y )Nú é   z
Filename: ú
z
Function: zLine number: r   )ÚinspectÚgetframeinfoÚwriteÚfilenameÚfunctionÚlinenoÚ_pprint_frameÚf_back)ÚframeÚdepthÚ	max_depthÚcontentsÚ
frame_infoÚprefixs         r   r7   r7   B   sˆ   € ØˆyÒ¡ØÜ×%Ñ% eÓ,€JØ�E˜A‘IÑ€FØ‡N�Nª°×1DÓ1DÐEÔFØ‡N�Nª°×1DÓ1DÐEÔFØ‡N�NªF°J×4EÓ4EÐFÔGÜ�%—,‘, ¨¡	¨9°hÕ?r   c                 ó�  — t        | t        j                  «      r| j                  n| }t	        t
        j                  t        j                  «       |«      «      }t        |dt        |«       t        j                  |j                  «       t        t        j                   ¬«       t#        j$                  t        j&                  «       y )Nr   )Úlogr   )r"   r'   ÚSignalsÚnamer   r   ÚformatÚvrÚversion_stringr7   r   r
   Ú	multi_logÚgetvaluer%   Ú_SIGNAL_EXIT_BEHAVIORr   ÚsysÚexitr   )Úsignumr9   rB   r<   s       r   Ú_handle_exitrL   M   sƒ   € ä$ V¬V¯^©^Ô<ˆ6�;Š;À&€DÜœ×*Ñ*¬2×+<Ñ+<Ó+>ÀÓEÓF€HÜ�%˜Ô2°HÔ=Ü×ÑØ×ÑÓ¤Ô0E×0OÑ0Oõô ‡H�HÔ"×,Ñ,Õ-r   c                  ó¦   — d} t         j                  «       D ]%  }t        t        j                  |t        «      «       Œ' | t        t         «      z  } | S )zattach cloud-init's handlersr   )r   Úkeysr,   r'   rL   Úlen)Úsigs_attachedrK   s     r   Úattach_handlersrQ   X   sC   € à€MÜ—,‘,“.ò =ˆÜœŸ™ f¬lÓ;Õ<ð=à”Sœ“\Ñ!€MØÐr   c               #   ób   K  — t         5  t        ad–— t        addd«       y# 1 sw Y   yxY w­w)a$  suspend_crash() allows signals to be received without exiting 1

    This allow signal handling without a crash where it is expected. The
    call stack is still printed if signal is received during this context, but
    the return code is 0 and no traceback is printed.

    Threadsafe.
    N)Ú_SUSPEND_WRITE_LOCKr   rH   r   r   r   r   Úsuspend_crashrT   a   s.   è ø€ ô 
ñ ;Ü :ÐÛÜ :Ð÷;÷ ;ñ ;üs   ‚/‰#š	/£,¨/).Ú
contextlibr1   Úloggingr'   rI   Ú	threadingr#   Úior   Útypingr   r   r   r   r   Ú	cloudinitr	   rD   Úcloudinit.logr
   Ú	getLoggerr   r%   r   r   r   ÚSIGINTÚSIGTERMÚSIGABRTr   r   Ústrr   ÚERRORr   ÚINFOr   rH   ÚRLockrS   r,   r7   rL   rQ   ÚcontextmanagerrT   r   r   r   ú<module>re      s&  ðô Û Û Û Û 
Û Û Ý ß ;Õ ;å #Ý "à€g×Ñ˜Ó!€à;€ˆUÓ ;Ø !Ð ˜Ó !à
‡M�MÐDØ
‡N�NÐFØ
‡N�NÐFð"€ˆˆt�C˜�H‰~Ñ	ó ô�:ô ñ
 %1°°G·M±MÓ$BÐ ˜EÓ BÙ$0°°G·L±LÓ$AÐ ˜EÓ AØ2Ð Ø%�i—o‘oÓ'Ð ðG˜˜s H¨dÐ2Ñ3ð G¸ó Gò.@ò.òð ×Ññ;ó ñ;r   