ó
    Eñify  ã                   ó&  • S r SSKrSSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJr  SSKJ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\)\   SS4S jr* S-S\S\4   S\+S\\,\-\4      S\.\)\   \)\   4   4S jjr/S\S\SS4S jr0\Rb                  " SS 9 " S! S"5      5       r2\Rb                   " S# S$5      5       r3S%\\   S&\\   S'\\\/\44   S\)\   4S( jr5S)\.\S4   S\)\   4S* jr6 " S+ S,5      r7g).aÐ  
This module provides functionality for resuming Python execution at specific points in code,
primarily used by PyTorch Dynamo for control flow handling and optimization. It implements
bytecode transformation and execution state management to enable:

- Resuming execution at arbitrary points in Python bytecode
- Managing context managers and their state across execution boundaries
- Transforming and generating new code objects with preserved execution state
- Supporting Python 3.11+ exception handling and block management
- Restoring torch function mode stacks and other execution context

The module is critical for PyTorch Dynamo's ability to optimize code while preserving
Python semantics and execution state.
é    N)ÚCallableÚIterable)ÚAbstractContextManager)ÚAnyÚcastÚOptionalé   )Úadd_push_nullÚbytecode_from_templateÚcreate_binary_subscrÚcreate_call_functionÚcreate_call_function_exÚcreate_instructionÚcreate_jump_absoluteÚcreate_load_constÚInstructionÚoverwrite_instructionÚtransform_code_objectÚ	unique_id)ÚExactWeakKeyDictionaryé   é   é   é   é    é@   é€   é   i   Útorch_dynamo_resume_inÚ__is_tracing_resume_prologueÚinstsÚreturnc                 ó¾   • [         R                  S:¼  aI  U R                  [        S5      5        [         R                  S:  a  U R                  [        SSS95        g g g )N©é   é   Ú	PUSH_NULL)r%   é   ÚSWAPr   ©Úarg)ÚsysÚversion_infoÚappendr   )r!   s    Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/resume_execution.pyÚ_initial_push_nullr0   ;   sN   € Ü
×Ñ˜7Ó"Ø�‰Ô'¨Ó4Ô5Ü×Ñ˜gÓ%Ø�L‰LÔ+¨F¸Ñ:Õ;ð &ð #ó    Útemplate.Ústack_indexÚvarname_mapc                 ó¸  • [        XS9nUR                  [        S5      5        U H5  nUR                  (       d  M  UR                  =R                  U-  sl        M7     [        S [        U5       5       S5      u  pVUb  Uc   e[        U[        S5      /5        X5S-      R                  S:X  d   e[        X5S-      [        S5      /5        US US-    X5S-   S  4$ )N©r4   ÚPOP_TOPc              3   ót   #   • U  H.  u  pUR                   S ;   d  M  UR                  S:X  d  M)  X4v •  M0     g7f)©Ú	LOAD_FASTÚLOAD_FAST_BORROWÚdummyN©ÚopnameÚargval)Ú.0ÚiÚinsts      r/   Ú	<genexpr>Ú5_bytecode_from_template_with_split.<locals>.<genexpr>R   s=   é € ð 	
â3‘�Ø�{‰{Ð?Ñ?ó ð —‘˜wÑ&ó ˆQ�IÚ3ùs   ‚8œ8®
8)NNÚNOPr	   )	r   r.   r   Úexn_tab_entryÚdepthÚnextÚ	enumerater   r>   )r2   r3   r4   Útemplate_coderB   Ú	dummy_idxÚ
dummy_insts          r/   Ú"_bytecode_from_template_with_splitrM   C   sõ   € ô
 +¨8ÑM€MØ×ÑÔ+¨IÓ6Ô7ó ˆØ××ÑØ×Ñ×$Ò$¨Ñ3×$ñ ô
 !ñ	
ä$ ]Ô3ó	
ð 	óÑ€Ið Ñ  ZÑ%;Ð;Ð;ô ˜*Ô'9¸%Ó'@Ð&AÔBð  Q™Ñ'×.Ñ.°)Ó;Ð;Ð;Ü˜-°A©Ñ6Ô9KÈEÓ9RÐ8SÔTà˜˜9 q™=Ð)¨=ÀQ¹¸Ð+IÐIÐIr1   r<   Ústack_var_namec                 ó@   •  U   g !   [         R                  U5        e = f©N)Ú$__import_torch_dot__dynamo_dot_utilsÚset_torch_function_mode_stack)r<   rN   s     r/   Ú_try_except_tf_mode_templaterS   f   s'   € ð
ÚøðÜ,×JÑJØô	
ð 	ús   ‚ …T)Úfrozenc            	       óÒ   • \ rS rSr% \\S'   Sr\\\	S4      \S'   S\
\\	4   S\\   S\\   4S	 jrS\
\\	4   S\\   S\\   4S
 jrS\
\\	4   S\\   S\\\   \\   4   4S jrSrg)ÚReenterWithét   r3   N.Útarget_valuesÚcode_optionsÚcleanupr"   c                 ód   • SSK Jn  [        [        U R                  SU" 5       0S9u  pEXR-   USS& U$ )z^
Codegen based off of:
try:
    (rest)
except:
    (restore previous tf mode stack)
    raise
r	   )Úget_prev_stack_var_namerN   r6   N)Úvariables.torch_functionr\   rM   rS   r3   )ÚselfrY   rZ   r\   Úsetup_try_exceptÚepilogues         r/   Útry_except_torch_function_modeÚ*ReenterWith.try_except_torch_function_modey   sB   € õ 	Fä%GÜ(Ø×ÑØ)Ñ+BÓ+DÐEñ&
Ñ"Ðð
 Ñ'ˆ‘ˆ
àÐr1   c                 ó  • / nU R                   (       a%  U R                    Vs/ s H  n[        U5      PM     nn[        SU R                   35      nXQS   ;  a  US==   U4-  ss'   S H  nXaS   ;  d  M  US==   U4-  ss'   M     / n[	        U5        UR                  / UQ[        [        U5      S5      Q[        SUS9P5        S[        [           S	[        S
S4S jn[        X€R                  SU0S9u  pšX¢-   USS& Xy-   $ s  snf )zY
Codegen based off of:
load args
enter context
try:
    (rest)
finally:
    exit context
Ú___context_manager_Úco_varnames©Ú	__enter__Ú__exit__Úco_namesFÚ
STORE_FAST©r?   Úctxr<   r"   Nc                 ó€   • U R                  5          U  U R                  S S S 5        g ! U R                  S S S 5        f = frP   rf   ©rl   r<   s     r/   Ú	_templateÚ*ReenterWith.try_finally.<locals>._template³   s4   € Ø�M‰MŒOð/Ùà—‘˜T 4¨Õ.ø�—‘˜T 4¨Õ.ús   ’( ¨=r6   )rX   r   r   r3   r0   Úextendr   Úlenr   r   r   rM   )r^   rY   rZ   Ú	load_argsÚvalÚctx_nameÚnameÚ
create_ctxro   Úsetup_try_finallyr`   s              r/   Útry_finallyÚReenterWith.try_finally‘   s=  € ð ˆ	Ø××Ø;?×;MÒ;MÓNÒ;M°CÔ*¨3Ö/Ñ;MˆIÐNÜÐ2°4×3CÑ3CÐ2DÐEÓFˆØ¨Ñ6Ó6Ø˜Ó'¨H¨;Ñ6Ó'Û-ˆDØ¨
Ñ3Õ3Ø˜ZÓ(¨T¨GÑ3Õ(ñ .ð )+ˆ
Ü˜:Ô&Ø×ÑðØðä%¤c¨)£n°eÓ<ðô # <¸ÑAðô	
ð	/Ô1´#Ñ6ð 	/¼sð 	/Àtô 	/ô 'IØ×'Ñ'°e¸XÐ5Fñ'
Ñ#Ðð Ñ'ˆ‘ˆ
ØÑ-Ð-ùò; Os   ¢Dc                 ó.  • / nU R                   (       a%  U R                    Vs/ s H  n[        U5      PM     nn/ n[        R                  S:  a  [	        U5        UR                  / UQ[        [        U5      S5      Q5        S[        [           S[        SS4S jn[        X`R                  5      u  pxX‚-   USS& [        S U 5       S5      n	U	c   e[        U	[        S	5      /5        S
 U 5       n
[        U
S5      n[        U
S5      b   eXW-   U4$ s  snf )z2
Codegen based off of:
with ctx(args):
    (rest)
)r%   é   Frl   r<   r"   Nc                 ó@   • U    U  S S S 5        g ! , (       d  f       g = frP   © rn   s     r/   ro   Ú'ReenterWith.__call__.<locals>._templateÙ   s   € ÚÙ÷ —–ús   ƒ�
c              3   ón   #   • U  H+  nUR                   S ;   d  M  UR                  S:X  d  M'  Uv •  M-     g7f)r9   rl   Nr=   ©r@   rB   s     r/   rC   Ú'ReenterWith.__call__.<locals>.<genexpr>ã   s9   é € ð â&�DØ—;‘;Ð"CÑCó ð —K‘K 5Ñ(÷ ‘Ú&ùs   ‚5š5¬	5rE   c              3   óH   #   • U  H  oR                   S :X  d  M  Uv •  M     g7f)ÚPUSH_EXC_INFON)r>   r�   s     r/   rC   r‚   ð   s   é € ð 
Ú%�T¯©¸Ñ)G�D‰DšXùs   ‚"™	")rX   r   r,   r-   r0   rq   r   rr   r   r   rM   r3   rH   r   r   )r^   rY   rZ   rs   rt   rw   ro   Ú
setup_withr`   Úload_fast_ctx_instÚpush_exc_info_genÚpush_exc_info_insts               r/   Ú__call__ÚReenterWith.__call__À   sM  € ð ˆ	Ø××Ø;?×;MÒ;MÓNÒ;M°CÔ*¨3Ö/Ñ;MˆIÐNà(*ˆ
ä×Ñ˜gÓ%Ü˜zÔ*Ø×ÑðØðä%¤c¨)£n°eÓ<ðô	
ð	Ô1´#Ñ6ð 	¼sð 	Àtô 	ô  BØ×'Ñ'ó 
Ñˆ
ð Ñ'ˆ‘ˆ
ä!ñá&óð ó
Ðð "Ñ-Ð-Ð-äÐ0Ô3EÀeÓ3LÐ2MÔNñ
Ù%ó
Ðô "Ð"3°TÓ:ÐäÐ% tÓ,Ñ4Ð4Ð4àÑ&Ð(:Ð:Ð:ùòW Os   ¢Dr~   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚ__annotations__rX   r   Útupler   ÚdictÚstrÚlistr   ra   ry   r‰   Ú__static_attributes__r~   r1   r/   rV   rV   t   s¼   ‡ àÓØ/3€M�8˜E # s (™OÑ,Ó3ð Ø   c ™Nð Ø59¸+Ñ5Fð à	ˆkÑ	ô ð0-.Ø   c ™Nð-.Ø59¸+Ñ5Fð-.à	ˆkÑ	ô-.ð^7;Ø   c ™Nð7;Ø59¸+Ñ5Fð7;à	ˆt�KÑ  (¨;Ñ"7Ð7Ñ	8÷7;r1   rV   c                   óÜ   • \ rS rSr% \R
                  \S'   \R                  " \	S9r
\	\   \S'   \R                  " \	S9r\	\   \S'   \R                  " \S9r\\\\4   \\\4   4   \S'   Srg)	ÚResumeFunctionMetadataéú   Úcode)Údefault_factoryÚinstructionsÚ prefix_block_target_offset_remapÚblock_target_offset_remapr~   N)r‹   rŒ   r�   rŽ   ÚtypesÚCodeTyper�   ÚdataclassesÚfieldr”   r›   r   rœ   r�   r’   r�   r‘   r•   r~   r1   r/   r—   r—   ú   s}   ‡ à
�.‰.ÓØ&1×&7Ò&7ÈÑ&M€L�$�{Ñ#ÓMð 3>×2CÒ2CØñ3Ð$ d¨3¡ió ð
 	×Ò¨$Ñ/ð ˜t E¨#¨s¨(¡O°T¸#¸s¸(±^Ð$CÑDö r1   r—   Úl1Úl2Úcondc                 óÂ   • [        U5      n/ n [        U5      nU  H.  nU" Xe5      (       d  M  UR                  U5        [        U5      nM0     U$ ! [         a     U$ f = f)zž
Two-pointer conditional filter.
e.g. _filter_iter(insts, sorted_offsets, lambda i, o: i.offset == o)
returns the instructions with offsets in sorted_offsets
)ÚiterrH   r.   ÚStopIteration)r¢   r£   r¤   ÚitÚresÚcurrt   s          r/   Ú_filter_iterr«     sg   € ô 
ˆb‹€BØ€CðÜ�2‹hˆÛˆCÙ�C�~‹~Ø—
‘
˜3”Ü˜2“h’ñ ð €Jøô ó ØØ€Jðús   �A ® A Á
AÁAÚtupc                 ó˜   • / n[        U5        UR                  S U  5       5        UR                  [        [        U 5      S5      5        U$ )Nc              3   ó8   #   • U  H  n[        U5      v •  M     g 7frP   )r   )r@   rt   s     r/   rC   Ú'_load_tuple_and_call.<locals>.<genexpr>&  s   é € Ð7²3¨CÔ" 3×'Ð'²3ùs   ‚F)r0   rq   r   rr   )r¬   r!   s     r/   Ú_load_tuple_and_callr°   #  s>   € Ø!€EÜ�uÔØ	‡L�LÑ7±3Ó7Ô7Ø	‡L�LÔ%¤c¨#£h°Ó6Ô7Ø€Lr1   c            !       ó  • \ rS rSr\" 5       r\" 5       r\S\R                  S\
S\
S\S\R                  4
S j5       r\S\R                  S\
S\
S\
S	\\
S
4   S\
S\\S
4   S\\S
4   S\\S
4   S\S\\\
\\S
4   4   S
4   S\\\\\S
4   4   S
4   S\\
S
4   S\\R                     S\S\R                  4 S j5       r\S\\\4   S\\   4S j5       r\S\R                  S\
S\
S\
S	\\
S
4   S\S\R                  4S j5       rSrg)ÚContinueExecutionCachei+  r™   ÚlinenoÚinit_offsetÚkeyr"   c                 óä   • XR                   ;  a  0 U R                   U'   [        U5      nX@R                   U   ;  a$  U R                  " XU/UQ76 U R                   U   U'   U R                   U   U   $ rP   )Úcacher‘   Úgenerate)Úclsr™   r³   r´   rµ   s        r/   ÚlookupÚContinueExecutionCache.lookup/  sg   € ð —y‘yÓ Ø ˆC�I‰I�d‰OÜ�C‹jˆØ—i‘i ‘oÓ%Ø#&§<¢<°¸kÐ#PÈCÒ#PˆC�I‰I�d‰O˜CÑ Ø�y‰y˜‰˜sÑ#Ð#r1   Úresume_offsetÚsetup_fn_target_offsets.ÚnstackÚargnamesÚargnames_nullÚ	setup_fnsÚhandle_inactive_ctxÚstack_ctx_varsÚargnames_ctx_varsÚ
null_idxesÚnested_code_objsÚpop_nested_resume_resultc                 ó  ^ ^^^^^^^	^
^^^^^^^• Tc   eUR                   [        [        -  [        -  [        -  -  (       a   eUR                   [
        -  (       d   eU[        R                  ;   a  T R                  UTUTTTTTT	T
TTTTT5      $ [        R                  S:¬  m[        U5      mS[        [           S[        [        [         4   SS 4UUUU U
UUUUUUUUUU	U4S jjn[#        UU5      u  nnT[        R                  U'   U$ )Nr$   r›   rY   r"   c                 ó  >^• [         R                  " U 5      T#l        SS/mT[        T%5       Vs/ s H  nSU 3PM
     sn-  mTR	                  U4S jT 5       5        [        US   =(       d    / 5      [        US   =(       d    / 5      -   n[        [        U5      5      n[         SUS    S	T" 3US'   T!(       aT  US
   R                  SSS9n[        U5      S:X  a	  US   US
'   O)[        U5      S:X  d   eUu  pVU S[         SU S	T" 3US
'   T"US'   SUS'   X1S'   [        T5      US'   SUS'   SUS'   [        TT Vs/ s H  owT;  d  M
  UPM     sn-   US    Vs/ s H  owT;  d  M
  UPM     sn-   [        /-   5      US'   US   [        [        -  ) -  US'   [        U(4S jU  5       5      n/ n	T!(       aB  U(       a"  U	R                  [        S[        U5      S95        U	R                  [        SSS95        U	R	                  [        SSS9[        S[        S9/5        / n
T* Vs0 s H  o»R                   U_M     nn[#        T*5       VVs0 s H  u  p+UR                   T)U   _M     nnnU  Vs0 s H  oîR$                  U_M     nn0 nSnSn['        T+5      n[        T%[        T&5      -   5       Hù  nU[        T&5      :  a)  T&U   U:X  a   U	R                  [        S5      5        US-  nOKU	R                  [        S SU 3S95        T (       a#  UU;   a  U	R	                  [)        UU   5      5        US-  nX,;   d  M�  UR+                  U5      nU" X5      u  nnU	R	                  U5        T!(       d  MÃ  UR+                  U5      nUU   nT#R,                  R                  U5        UUU'   Mû     T!(       a#  [/        [1        T#R,                  5      5      T#l        U(       a   eT (       aX  T HR  u  nnU	R                  [        S US95        U	R	                  [)        U5      5        U	R                  [        SUS95        MT     T(       aK  [2        R4                  S!:¼  d   eT H/  nUT;  d   eU	R	                  [        S5      [        SUS9/5        M1     T$(       Ga  U	R	                  / [7        [        S SS9[        SS"S9[9        5       /5      Q[        S SS9P[        SS"S9P[        S#5      P[        S SS9P[        S SS9P[        S$SS9P[        S SS9P[        SS"S9P[9        5       P[        S%SS9P[        S SS9P[        SS"S9P[        S#5      P[        S&SS9P[        S&SS9P[        SS'S9P[        S[        S9P[;        S'S'5      Q5        T'(       a  U	R                  [        S(5      5        O'U	R	                  [        SS'S9[        S[        S9/5        U	R                  [=        U5      5        U  HC  nUR$                  UR$                  :X  a    O(S Ul        [2        R4                  S):¼  d  M<  S Ul         ME     U
(       a1  U	R	                  U
5        U	R	                  TRC                  U5      5        U(       ai  T!(       d   eU  HZ  nURD                  (       d  M  URD                  RF                  U;   d  M2  UURD                  RF                     URD                  l#        M\     X�-   U S S & g s  snf s  snf s  snf s  snf s  snnf s  snf )*NÚ__nested_resume_fnsÚ__nested_frame_valuesÚ___stackc              3   ó6   >#   • U  H  oT;  d  M
  Uv •  M     g 7frP   r~   )r@   ÚvÚargss     €r/   rC   ÚBContinueExecutionCache.generate.<locals>.update.<locals>.<genexpr>u  s   øé € Ð=¢8˜a¸©}Ÿ™¢8ùó   ƒ	�	Úco_cellvarsÚco_freevarsÚ_Úco_nameÚ_at_Úco_qualnameÚ.r	   )Úmaxsplitr   Úco_firstlinenor~   Úco_argcountr   Úco_posonlyargcountÚco_kwonlyargcountre   Úco_flagsc              3   óJ   >#   • U  H  oR                   T:X  d  M  Uv •  M     g 7frP   ©Úoffset)r@   rA   r¼   s     €r/   rC   rÐ   –  s   øé € ÐO¢\ ·X±XÀÑ5NŸ!™!¢\ùó   ƒ#š	#ÚCOPY_FREE_VARSr*   ÚRESUMEÚ
LOAD_CONSTTrk   rj   r'   r:   )r%   é   éÿÿÿÿÚDELETE_SUBSCRÚ
BUILD_LISTÚLIST_EXTENDÚDELETE_FASTFr7   r$   )$ÚcopyÚdeepcopyr›   Úrangerq   r‘   ÚsortedÚTORCH_DYNAMO_RESUME_IN_PREFIXÚrsplitrr   Ú"IS_TRACING_RESUME_PROLOGUE_VARNAMEÚ
CO_VARARGSÚCO_VARKEYWORDSrH   r.   r   r3   rI   rá   r’   r°   Úpoprœ   r”   Úreversedr,   r-   r
   r   r   r   Ústarts_lineÚ	positionsÚunreachable_codesrF   Útarget),r›   rY   rA   ÚfreevarsÚqualified_pathÚmodule_namerÕ   rÎ   rú   ÚprefixrZ   ÚfnÚhooksÚhook_target_offsetsrB   Úoffset_to_instÚold_hook_target_remapÚstack_iÚnull_iÚstack_ctx_vars_dÚhookÚ
hook_instsÚ
exn_targetÚhook_target_offsetÚold_hook_targetrv   ÚvalsrÏ   r¿   rÄ   rÀ   r¹   rÂ   Úis_py311_plusr³   ÚmetarÆ   r¾   rÅ   rÇ   r¼   r½   rÁ   rÃ   s,                              @€€€€€€€€€€€€€€€€r/   ÚupdateÚ/ContinueExecutionCache.generate.<locals>.updaten  s¬  ù€ ô !%§¢¨lÓ ;ˆDÔà)Ð+BÐCˆDØ¬U°6¬]Ó;ª]¨�x ˜s“^©]Ñ;Ñ;ˆDØ�K‰KÔ=¡8Ó=Ô=Ü˜\¨-Ñ8×>¸BÓ?Ä%Ø˜]Ñ+×1¨róCñ ˆHô œV HÓ-Ó.ˆHä0Ð1°°<À	Ñ3JÐ2KÈ4ÐPVÈxÐXð ˜Ñ#ö Ø!-¨mÑ!<×!CÑ!CÀCÐRSÐ!CÐ!T�Ü�~Ó&¨!Ó+Ø2>¸yÑ2I�L Ò/ä˜~Ó.°!Ó3Ð3Ð3Ø+9Ñ(�Kà&˜- qÔ)FÐ(GÀqÈÈ	ÐQUÐV\ÐU]Ð^ð ! Ñ/ð .4ˆLÐ)Ñ*Ø*,ˆL˜Ñ'Ø*2˜Ñ'Ü*-¨d«)ˆL˜Ñ'Ø12ˆLÐ-Ñ.Ø01ˆLÐ,Ñ-Ü*/ØÙ+Ó=šm˜¸©}—1™mÑ=ñ>à*¨=Ò9ÓKÒ9˜Àd¹]—1Ñ9ÑKñLô 6Ð6ñ7ó+ˆL˜Ñ'ð (4°JÑ'?Üœ^Ñ+ðCñ (ˆL˜Ñ$ô ÔO¡\ÓOÓOˆFàˆFÞÞØ—M‘MÜ*Ð+;ÄÀXÃÑOôð —‘Ô0°¸qÑAÔBð
 �M‰Mä& |¸DÑAÜ&Ø$Ô-Oñðôð *,ˆGÙ2;Ó<²)¨B—^‘^ RÒ'±)ˆEÐ<ô ' yÔ1ô#â1‘E�Að —‘Ð 7¸Ñ :Ò:Ù1ð  ñ #ñ =IÓIºL°DŸk™k¨4Ò/¹LˆNÐIð %'Ð!ØˆGØˆFÜ# NÓ3ÐÜ˜6¤C¨
£OÑ3Ö4�ØœC 
›OÓ+°
¸6Ñ0BÀaÓ0GØ—M‘MÔ"4°[Ó"AÔBØ˜a‘K‘Fà—M‘MÜ*¨;ÀÈ'ÈÐ?SÑTôö +¨wÐ:JÓ/Jð Ÿ™Ô&:Ð;KÈGÑ;TÓ&UÔVØ˜q‘L�Gà•:Ø Ÿ9™9 Q›<�DÙ-1°,Ó-HÑ*�J 
Ø—M‘M *Ô-ß$�}Ø-@×-DÑ-DÀQÓ-GÐ*Ø*8Ð9KÑ*L˜Ø×=Ñ=×DÑDÐEWÔXØAKÐ-¨oÓ>ñ- 5ö0 ô 9=Ü˜T×BÑBÓCó9�Ô5ö Ð�9ö #Û"3‘J�D˜$Ø—M‘MÔ"4°[ÈÑ"NÔOØ—M‘MÔ"6°tÓ"<Ô=Ø—M‘MÔ"4°\È$Ñ"OÖPñ #4ö Ü×'Ñ'¨7Ó2Ð2Ð2Û&�AØ D›=Ð(˜=Ø—M‘Mä.¨{Ó;Ü.¨|ÀAÑFðöñ '÷  Ø—‘ð.ä&ä 2Ø$/Ð8Mñ!"ô !3°<ÈÑ KÜ 4Ó 6ðóð.ô +¨;Ð?TÑUð.ô +¨<ÀÑCð.ô +¨?Ó;ð.ô  +¨;Ð?TÑUð!.ô" +¨;Ð?VÑWð#.ô$ +¨<¸QÑ?ð%.ô( +¨;Ð?VÑWð).ô* +¨<ÀÑCð+.ô, -Ó.ð-.ô8 +¨=¸aÑ@ð9.ô< +¨;Ð?VÑWð=.ô> +¨<ÀÑCð?.ô@ +¨?Ó;ðA.ôD +¨=ÐAVÑWðE.ôF +Ø)Ð2IñðG.ôP +¨<ÀÑFðQ.ôR +Ø(Ô1SñðS.ôZ 1°¸Ó>ð[.ô0öb ,à—M‘MÔ"4°YÓ"?Ô@øð —‘ä*¨<ÀÑFÜ*Ø(Ô1Sñðôð �M‰MÔ.¨vÓ6Ô7ó
 %�Ø—;‘; &§-¡-Ó/ÙØ#'�Ô Ü×#Ñ# wÕ.Ø%)�D–Nñ %ö Ø—‘˜gÔ&Ø—‘˜c×3Ñ3°LÓAÔBö %æ$Ð$�}Û(�Dà×*×*Ñ*Ø ×.Ñ.×5Ñ5Ð9NÕNà4IØ ×.Ñ.×5Ñ5ñ5˜×*Ñ*Ö1ñ )ð %Ñ3ˆL™‰Oùòs <ùò6 >ùÚKùò: =ùó#ùò Js/   °[+Å	[0
Å[0
Å	[5
Å,[5
È*[:É[?É3\)rÞ   ÚCO_GENERATORÚCO_COROUTINEÚCO_ITERABLE_COROUTINEÚCO_ASYNC_GENERATORÚCO_OPTIMIZEDr²   Úgenerated_code_metadataÚ&generate_based_on_original_code_objectr,   r-   r—   r”   r   r’   r“   r   r   )r¹   r™   r³   r´   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   r  Únew_coderÔ   r  r  s   ` ` ````````````   @@r/   r¸   ÚContinueExecutionCache.generate:  s  ÿÿ€ ð0 Ñ(Ð(Ð(à�M‰MÜœlÑ*Ô-BÑBÔEWÑW÷Yð	
ð 
ð �}‰}œ|×+Ð+Ð+ØÔ)×AÑAÓAØ×=Ñ=ØØØØØ'ØØØØØ#ØØ!ØØ Ø(óð ô$ ×(Ñ(¨GÑ3ˆÜ% dÓ+ˆð_	4Üœ{Ñ+ð_	4Ü;?ÄÄSÀ¹>ð_	4à÷_	4÷ _	4ö _	4ôB ,¨D°&Ó9‰ˆ�!ØCGÔ×6Ñ6°xÑ@Øˆr1   rY   c                 ó,   • [        S5      [        SSS9/$ )zACodegen a `raise None` to make analysis work for unreachable codeNÚRAISE_VARARGSr	   r*   )r   r   )rY   s    r/   rù   Ú(ContinueExecutionCache.unreachable_codesS  s    € ô ˜dÓ#Ü˜°AÑ6ð
ð 	
r1   rÏ   c                 óì  ^^^^^• [         R                  T   mS[        S[        4UU4S jjnU" U5      nU" U5      n	U	S:”  d   S5       e[        R                  S:¼  ar  X‰4mTTR
                  ;  aI  0 =mTR
                  T'   S[        [           S[        [        [        4   SS	4UUU4S
 jjn
[        TU
5        [        UU4S jT 5       5      m[         R                  " TR                  UUU	T/UQ76 $ )a  
This handles the case of generating a resume into code generated
to resume something else.  We want to always generate starting
from the original code object so that if control flow paths
converge we only generated 1 resume function (rather than 2^n
resume functions).
Ú
cur_offsetr"   c                 ó€   >^ ^• SmS[         [           S[        [        [        4   SS 4U UU4S jjn[        TU5        T$ )Nrç   r›   rY   r"   c           	      óD  >^• U4S jU  5       u  m[        U4S j[        [        U 5      [        TR                  5      5       5       5      nU(       d  g [	        U5      S:X  d   eUS   nTR
                  UR
                  :X  d   eUR                  c   eUR                  mg )Nc              3   óJ   >#   • U  H  oR                   T:X  d  M  Uv •  M     g 7frP   rà   )r@   rA   r  s     €r/   rC   ÚŽContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transform.<locals>.<genexpr>x  s   øé € ÐOª 1¿¹ÀJÑ8NŸQ™Qªùrâ   c              3   ó:   >#   • U  H  u  pUTL d  M  Uv •  M     g 7frP   r~   )r@   Úi1Úi2rú   s      €r/   rC   r"  z  s)   øé € ð )ò#™˜ð ˜V�|÷	 ‘Bò#ùs   ƒ’	r	   r   )r‘   Úziprö   r›   rr   Úopcoderá   )r›   rY   Únew_target_tupleÚ
new_targetrú   r  r  Úorig_offsets       @€€€r/   Úfind_orig_offset_transformÚ{ContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offset.<locals>.find_orig_offset_transformt  s¡   ù€ ô P©ÓO‘	�ä#(ô )ä"%Ü  Ó.´¸×9JÑ9JÓ0Kô#ó)ó $Ð ö (ð äÐ+Ó,°Ó1Ð1Ð1Ø-¨aÑ0�
à—}‘}¨
×(9Ñ(9Ó9Ð9Ð9Ø!×(Ñ(Ñ4Ð4Ð4Ø(×/Ñ/‘r1   )r”   r   r’   r“   r   r   )r  r+  r*  r™   r  s   ` @€€r/   Úfind_orig_offsetÚWContinueExecutionCache.generate_based_on_original_code_object.<locals>.find_orig_offsetq  sJ   ú€ ØˆKð0Ü"¤;Ñ/ð0Ü?CÄCÌÀH¹~ð0à÷0ñ 0ô6 " $Ð(BÔCØÐr1   rç   z>resume instruction not found in original code - this is a bug.r$   r›   rY   Nc           
      ó   >^
• / nU  HJ  n[        U5      [        TR                  5      :X  a    O'UR                  S:X  d  M9  UR                  U5        ML     [	        UTR                  5       H"  u  p4UT[        [        UR                  5      '   M$     U(       a  [        [        US   R                  5      OSm
[        U
4S jT 5       5      n[        XS 5      n[        [        [	        [        U 5      [        TR                  5      5      [        U5      S 5      5      n[	        Xv5       H!  u  p‰US   R                  TU	R                  '   M#     g )Nr„   rç   c              3   ó6   >#   • U  H  oT:”  d  M
  Uv •  M     g 7frP   r~   )r@   ÚnÚcur_start_offsets     €r/   rC   ÚmContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<genexpr>Ì  s   øé € ð .Ú#:˜aÐBRÑ>RŸ™Ò#:ùrÑ   c                 ó    • U R                   U:H  $ rP   rà   )rB   Úos     r/   Ú<lambda>ÚlContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets.<locals>.<lambda>Ð  s   € ÈÏÉÐWXÒHXr1   c                 ó   • U S   UL $ )Nr   r~   )Úv1Úv2s     r/   r6  r7  Ù  s   € ¨2¨a©5°B©;r1   r	   )rr   rœ   r>   r.   r&  r   r�   rá   rï   r«   rö   r›   )r›   rY   Úprefix_blocksrB   r5  Úcur_inst_offsetsÚtargetsÚorig_targetsÚorigrª   r2  r�   r  r½   s             @€€€r/   Úremap_block_offsetsÚZContinueExecutionCache.generate_based_on_original_code_object.<locals>.remap_block_offsets¬  s=  ù€ ð 8:�MÛ ,˜ô
 ˜}Ó-´Ø ×AÑAó2ó ñ "ØŸ;™;¨/Õ9Ø)×0Ñ0°Ö6ñ !-ô $'Ø% t×'LÑ'Lö$™˜ð MNÐ1´$´s¸D¿K¹KÓ2HÓIñ$ö @MœœS -°Ñ"3×":Ñ":Ô;ÐRTð %ô (.ô .Ù#:ó.ó (Ð$ô +Ø$Ñ8Xó�Gô $,Ü$Ü¤¨Ó 6¼À×ARÑARÓ8SÓTÜ$ WÓ-Ù6óó$�Lô &)¨Ö%?™	˜Ø@DÀQÁÇÁÐ1°#·*±*Ó=ò &@r1   c              3   óH   >#   • U  H  nTR                   T   U   v •  M     g 7frP   )r�   )r@   r1  r  Ú
offset_keys     €€r/   rC   ÚPContinueExecutionCache.generate_based_on_original_code_object.<locals>.<genexpr>ã  s(   øé € ð ,â0�Að ×.Ñ.¨zÑ:¸1Ö=Ú0ùs   ƒ")r²   r  r�   r,   r-   r�   r”   r   r’   r“   r   r   r‘   rº   r™   )r¹   r™   r³   r´   r¼   r½   rÏ   r-  Úorig_init_offsetÚorig_resume_offsetr@  r�   r  rC  s    `   `     @@@r/   r  Ú=ContinueExecutionCache.generate_based_on_original_code_object[  s8  ü€ ô$ (>×'UÑ'UØñ(
ˆð	¬ð 	´÷ 	ð 	ñB ,¨KÓ8Ðñ .¨mÓ<ÐØ! BÓ&ð 	
ØLó	
Ð&ô ×Ñ˜wÓ&ð
 +Ð?ˆJð  ×!?Ñ!?Ó?ð ðÐ)¨D×,JÑ,JØñ-ð
1OÜ"&¤{Ñ"3ð1OÜCGÌÌSÈÁ>ð1Oà÷1Oñ 1Oôf & dÐ,?Ô@ô ',õ ,á0ó,ó 'Ð#ô &×,Ò,Ø�I‰IØØØØ#ð
ð ò
ð 	
r1   r~   N)r‹   rŒ   r�   rŽ   r   r·   r  Úclassmethodrž   rŸ   r�   r   rº   r‘   r“   rV   Úboolr¸   Ústaticmethodr’   r”   r   rù   r  r•   r~   r1   r/   r²   r²   +  s-  † Ù"Ó$€EÙ4Ó6Ðàð$Ø—>‘>ð$Ø+.ð$Ø=@ð$ØHKð$à	�‰ó$ó ð$ð ðVà�n‰nðVð ðVð ð	Vð
 ðVð "' s¨C x¡ðVð ðVð ˜˜S˜‘/ðVð ˜S #˜X‘ðVð ˜ cÐ)Ñ*ðVð "ðVð ˜e C¨¨s°C¨x©Ð$8Ñ9¸3Ð>Ñ?ðVð !  s¨E°#°s°(©OÐ';Ñ!<¸cÐ!AÑBðVð ˜#˜s˜(‘OðVð"   §¡Ñ/ð#Vð* #'ð+Vð, 
�‰ó-Vó ðVðp ð
¨¨S°#¨X©ð 
¸4ÀÑ;Ló 
ó ð
ð ðR
à�n‰nðR
ð ðR
ð ð	R
ð
 ðR
ð "' s¨C x¡ðR
ð ðR
ð 
�‰óR
ó óR
r1   r²   rP   )8Ú__doc__rì   r    r,   rž   Úcollections.abcr   r   Ú
contextlibr   Útypingr   r   r   Úbytecode_transformationr
   r   r   r   r   r   r   r   r   r   r   r   Úutilsr   r  ÚCO_NEWLOCALSró   rô   Ú	CO_NESTEDr  Ú	CO_NOFREEr  r  r  rð   rò   r”   r0   r�   r’   r“   r‘   rM   rS   Ú	dataclassrV   r—   rI  r«   r°   r²   r~   r1   r/   Ú<module>rU     sÇ  ðñó Û Û 
Û ß .Ý -ß &Ñ &÷÷ ÷ ó õ *ð €Ø€Ø€
Ø€Ø€	Ø€Ø€	Ø€ØÐ ØÐ ð !9Ð Ø%CÐ "ð<˜d ;Ñ/ð <°Dô <ð -1ñ JØ�s˜C�xÑ ð Jàð Jð ˜$˜s C˜x™.Ñ)ð Jð ˆ4�Ñ˜d ;Ñ/Ð/Ñ0õ	 JðF¨ð ¸Sð ÀTô ð ×Ò˜dÑ#÷B;ð B;ó $ðB;ðJ ×Ñ÷ð ó ðð"Ø�‰ðà�‰ðð �C˜�:˜tÐ#Ñ
$ðð 
ˆ#�Yô	ð.˜e C¨ H™oð °$°{Ñ2Cô ÷C
ò C
r1   