Ë
    n�µh1“  ã                   ó  — d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZmZ ddlmZ d dlmZ d dlZd	ed
e	e   fd„Z d	ed
e	e   fd„Z! ed«      ded
e"ejF                     fd„«       Z$e jJ                  e jL                  e jN                  e jP                  fZ)e)e jT                  e jV                  e jX                  e jZ                  fz   Z.e j^                  e j`                  e jb                  e jd                  e jf                  e jh                  e jj                  e jl                  e jn                  e jp                  e jr                  e jt                  e jv                  dœZ< G d„ de=«      Z>y)é    N)ÚCodeTypeÚ	FrameType)
ÚAnyÚCallableÚIteratorÚOptionalÚSequenceÚSetÚTupleÚTypeÚUnionÚcasté   )ÚEnhancedASTÚNotOneValueFoundÚSourceÚonlyÚfunction_node_typesÚassert_)Ú
KnownIssueÚVerifierFailure)Úmangled_name)Ú	lru_cacheÚnodeÚreturnc              #   óJ   K  — 	 t        | d«      r| j                  } | –— ny Œ­w)NÚparent)Úhasattrr   ©r   s    úp/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/executing/_position_node_finder.pyÚparentsr!      s)   è ø€ Ø
Ü�4˜Ô"Ø—;‘;ˆDØ‹Jàð ùs   ‚!#c              #   ó>   K  — | –— t        | «      E d {  –—†  y 7 Œ­w©N)r!   r   s    r    Únode_and_parentsr$      s   è ø€ Ø
‚JÜ�t‹}×Òús   ‚•–é€   Úcodec                 ó>   — t        t        j                  | «      «      S r#   )ÚlistÚdisÚget_instructions)r&   s    r    r*   r*      s   € ä”×$Ñ$ TÓ*Ó+Ð+ó    )z**Ú*Ú@z//Ú/Ú%Ú+Ú-z<<z>>Ú&Ú^Ú|c            
       óP  — e Zd ZdZdedee   dej                  de	de
f
d„Zded	e	d
dfd„Zdedej                  d
efd„Zdedej                  d
dfd„Zd
e	fd„Zedej                  ded
efd„«       Zdedej                  d
dfd„Zd	e	d
eej                     fd„Zdej                  d
eej                     fd„Zd	e	d
efd„ZdZej:                  dk\  rej<                  fZdej>                  ej@                  ejB                  ejD                  ge¢­fd	e	de#e   de$e%df   d
efd„Z&y)ÚPositionNodeFindera%  
    Mapping bytecode to ast-node based on the source positions, which where introduced in pyhon 3.11.
    In general every ast-node can be exactly referenced by its begin/end line/col_offset, which is stored in the bytecode.
    There are only some exceptions for methods and attributes.
    ÚframeÚstmtsÚtreeÚlastiÚsourcec                 ó”  — t        |j                  «      D �ci c]  }|j                  |“Œ c}| _        || _        || _        d | _        | j                  |«      dk(  r|dz  }| j                  |«      dk(  rŒ	 | j                  |«      | _	        | j                  |«      }|€J ‚| j                  | j                  |«      | _	        | j!                  | j                  |«       | j#                  | j                  |«       | j                  €| j%                  | j                  |«       y t'        | j                  | j                  j(                  v «       y c c}w # t        $ rh | j                  |«      dv rt        j                  f}n&| j                  |«      dv rt        j                  f}n‚ | j                  |d|¬«      | _	        Y �Œ8w xY w)NÚCACHEé   )ÚLOAD_METHODÚ	LOAD_ATTRÚ
STORE_ATTRÚDELETE_ATTR)ÚCALLÚCALL_KW)Úend_col_offsetÚ
end_lineno)Úmatch_positionsÚtyp)r*   Úf_codeÚoffsetÚbc_dictr7   r;   Ú	decoratorÚopnameÚ	find_nodeÚresultr   ÚastÚ	AttributeÚCallÚinstructionÚ
fix_resultÚknown_issuesÚtest_for_decoratorÚverifyr   Údecorator_list)	Úselfr7   r8   r9   r:   r;   ÚbcrH   rS   s	            r    Ú__init__zPositionNodeFinder.__init__I   s—  € Ü-=¸e¿l¹lÔ-KÓMÑ-K r�b—i‘i ‘lÐ-KÑMˆŒØˆŒ
àˆŒØ04ˆŒð �k‰k˜%Ó  GÒ+Ø�Q‰JˆEð �k‰k˜%Ó  GÓ+ð	àŸ.™.¨Ó/ˆDŒKð> ×&Ñ& uÓ-ˆØÐ&Ð&Ð&à—o‘o d§k¡k°;Ó?ˆŒà×Ñ˜$Ÿ+™+ {Ô3à×Ñ §¡¨UÔ3ð �>‰>Ð!Ø�K‰K˜Ÿ™ [Õ1ä�D—N‘N d§k¡k×&@Ñ&@Ð@ÕAùòq Nøô  ò 	ð �{‰{˜5Ó!ð &ñ ô —}‘}Ð&‘Ø—‘˜UÓ#Ð':Ñ:ô
 —x‘x�k‘ààŸ.™.ØØ @Øð )ó ˆD�Kð1	ús   ˜EÁ8E ÅA-GÇGr   Úindexr   Nc                 ó<  — t        |j                  t        j                  t        f«      rò||j                  j
                  v rÙ|j                  }	 | j                  |dz
  «      dk(  st        j                  dk\  r| j                  |«      dk(  sy |dz  }| j                  |«      dv r|dz  }| j                  |«      dv rŒ| j                  |«      j                  d«      r#| j                  |«      |k(  r|| _        || _        y t        j                  dk  r|dz  }ŒÌy y )Né   ÚPRECALL©é   é   rC   r>   )r=   ÚEXTENDED_ARGÚSTORE_)Ú
isinstancer   rP   ÚClassDefr   rX   rM   ÚsysÚversion_infoÚ
startswithrN   rO   rL   )rY   r   r\   Ú	node_funcs       r    rV   z%PositionNodeFinder.test_for_decorator„   s  € ä�t—{‘{¤S§\¡\Ô3FÐ$GÔHØ˜Ÿ™×2Ñ2Ñ2àŸ™ˆIàð& —[‘[ ¨¡Ó+¨yÒ8¼C×<LÑ<LÐPWÒ<WØŸ™ EÓ*¨fÒ4àà˜‘
�à—k‘k %Ó(Ð,EÑEØ˜Q‘J�Eð —k‘k %Ó(Ð,EÒEð —K‘K Ó&×1Ñ1°(Ô;ØŸ™ uÓ-°Ò:à"+�D”KØ%)�D”NØä×#Ñ# gÒ-Ø˜Q‘J�EðM ð	 3ð Ir+   rS   c                 ó  — t         j                  dk\  rV|j                  dv rHt        |j                  t
        j                  «      r$||j                  j                  u r|j                  S t         j                  dk\  r¼|j                  dv r®t        |j                  j                  t
        j                  t
        j                  t
        j                  t
        j                  f«      rRt        |j                  t
        j                  «      r.||j                  j                  u r|j                  j                  S t         j                  dk\  rœ|j                  dk(  r�| j                  |«      }|�z|j                  dk(  rk|j                  |j                  k(  rRt        |j                  t
        j                  «      r.||j                  j                   u r|j                  j                  S t         j                  dk\  ra|j                  dk(  rRt        |j                  t
        j                  «      r.||j                  j                   u r|j                  j                  S t         j                  dk\  rª|j                  dk(  r›| j                  |«      }|�ˆ|j                  dk(  ry|j"                  d	v rk|j                  |j                  k(  rRt        |j                  t
        j                  «      r.||j                  j                   u r|j                  j                  S t         j                  dk\  rYt        |t
        j$                  «      r?t        |j&                  t
        j(                  «      r|j                  d
k7  r|j*                  S |S )N)ra   rb   é   ©ÚGET_ITERÚFOR_ITER)ra   rb   é   rC   Ú
LOAD_CONSTÚBEFORE_WITH©ra   é   ÚLOAD_SPECIAL)Ú	__enter__Ú
__aenter__Ú	UNARY_NOT)rg   rh   rM   re   r   rP   ÚForÚiterÚListCompÚSetCompÚDictCompÚGeneratorExpÚcomprehensionÚinstruction_beforeÚ	positionsÚwithitemÚcontext_exprÚargreprÚUnaryOpÚopÚNotÚoperand)rY   r   rS   Úbefores       r    rT   zPositionNodeFinder.fix_result³   s¤  € ô ×Ñ 
Ò*Ø×"Ñ"Ð&>Ñ>Ü˜4Ÿ;™;¬¯©Ô0Ø˜Ÿ™×(Ñ(Ñ(ð  —;‘;Ðô ×Ñ 
Ò*Ø×"Ñ"Ð&>Ñ>ÜØ—‘×"Ñ"Ü—‘œsŸ{™{¬C¯L©L¼#×:JÑ:JÐKôô ˜4Ÿ;™;¤s×'8Ñ'8Ô9Ø˜Ÿ™×(Ñ(Ñ(ð
 —;‘;×%Ñ%Ð%ä×Ñ˜yÒ(¨[×-?Ñ-?À6Ò-IØ×,Ñ,¨[Ó9ˆFàÐ"Ø—M‘M \Ò1Ø×$Ñ$¨×(=Ñ(=Ò=Ü˜tŸ{™{¬C¯L©LÔ9Ø˜DŸK™K×4Ñ4Ñ4ð4 —{‘{×)Ñ)Ð)ô ×Ñ 	Ò)Ø×"Ñ" mÒ3Ü˜4Ÿ;™;¬¯©Ô5Ø˜Ÿ™×0Ñ0Ñ0ð —;‘;×%Ñ%Ð%ä×Ñ˜wÒ&¨;×+=Ñ+=ÀÒ+GØ×,Ñ,¨[Ó9ˆFàÐ"Ø—M‘M ^Ò3Ø—N‘NÐ&@Ñ@Ø×$Ñ$¨×(=Ñ(=Ò=Ü˜tŸ{™{¬C¯L©LÔ9Ø˜DŸK™K×4Ñ4Ñ4à—{‘{×)Ñ)Ð)ä×Ñ˜wÒ&¬:°d¼C¿K¹KÔ+HÌZÐX\×X_ÑX_Ô`c×`gÑ`gÔMhÐmx×mÑmð  CNò  nNà—<‘<Ðð ˆr+   c                 óš  — |j                   dv rÏt        |t        «      r¿t        |t        «      r¡t	        j
                  |j                  «      D �cg c]6  }t        |t        j                  «      rt        |j                  «      dkD  r|‘Œ8 }}t        |d«       t        |«      dk(  rt        t        |d   «      x}| _        nt        d|z  «      ‚t        d|z  «      ‚t        j                   d d dk(  rOt        |t        j                  «      r5|j                   d	k(  r&t#        d
„ t%        |«      D «       «      rt        d«      ‚t        |t        j&                  «      rt        d«      ‚t#        d„ t%        |«      D «       «      rt        d«      ‚t        j                   dk\  �r[t        |t        j(                  «      �r@t        |j*                  t        j,                  «      �r|j*                  j.                  dk(  �r|j0                  }t3        |d«      rmt        |t        j4                  t        j6                  f«      sC|j0                  }t3        |d«      r+t        |t        j4                  t        j6                  f«      sŒCd }t3        |d«      r?g |j8                  j:                  ¢|j8                  j8                  ¢}|r|d   j<                  }|j                   |j>                  fdd|fd|fd|ffv rt        d«      ‚| jA                  ||«      rt        d«      ‚|j                   dk(  r|j>                  dk(  rt        d«      ‚|j                   d	k(  rSt        |t        j(                  «      s9t#        d„ tC        |«      D «       «      rt        j                   dk\  rt        d«      ‚t        j                   dk\  rÑ|j                   d v rt        d!|j                   › d"�«      ‚|j                   d#v r|j>                  d$k(  rt        d%«      ‚|j                   d&k(  rst        |t        jD                  «      rYt        |jF                  t        j                  «      r5t        |jH                  t        jJ                  «      r|jF                  | _        t        j                   d'k\  �rª| jM                  «       x}rÝtO        | jP                  jS                  «       «      d(   }	|d)z  |jT                  cxk  r|	d*z
  k  st        d+«      ‚ t        d+«      ‚| jV                  jX                  jZ                  d,k(  r|j                   d-k(  rt        d.«      ‚| jV                  jX                  jZ                  d,k(  r%t        |t        j\                  «      rt        d/«      ‚t        |t        j^                  «      rB| jV                  jX                  jZ                  |j`                  j.                  k(  rt        d0«      ‚|j                   dk(  r|jb                  d,k(  rt        d1«      ‚|j                   d2k(  r&t        |t        j,                  «      rt        d3«      ‚y y y c c}w )4N©Ú
COMPARE_OPÚIS_OPÚCONTAINS_OPr   z expected at least one comparisonr   z4multiple chain comparison inside %s can not be fixedz+chain comparison inside %s can not be fixedra   )ra   é   r   rC   c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr#   ©re   rP   ÚAssert©Ú.0Úns     r    Ú	<genexpr>z2PositionNodeFinder.known_issues.<locals>.<genexpr>>  s   è ø€ ÐNÑ7M°!”J˜q¤#§*¡*×-Ñ7Mùó   ‚$&zBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921Úassertc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr#   )re   rP   Úpatternr“   s     r    r–   z2PositionNodeFinder.known_issues.<locals>.<genexpr>J  s   è ø€ ÐJÑ3I¨aŒz˜!œSŸ[™[×)Ñ3Iùr—   z)pattern matching ranges seems to be wrongr`   Úsuperr   Úargs)Ú
LOAD_DEREFÚ	__class__Ú	LOAD_FASTÚLOAD_FAST_BORROWr�   zsuper optimizationzCexeption cleanup does not belong to the last node in a except blockÚ
STORE_NAMEÚ__classcell__zstore __classcell__c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr#   r‘   )r”   Úps     r    r–   z2PositionNodeFinder.known_issues.<locals>.<genexpr>…  s   è ø€ ÐE±}°!”J˜q¤#§*¡*×-±}ùr—   )ra   r�   r>   z&exception generation maps to condition©ra   é   )ÚSTORE_FAST_STORE_FASTÚSTORE_FAST_LOAD_FASTÚLOAD_FAST_LOAD_FASTzcan not map z to two ast nodes©rŸ   r    rž   z^loading of __class__ is accociated with a random node at the end of a class if you use super()rŒ   rs   éÿÿÿÿr>   r^   zAsynthetic opcodes in annotations are just bound to the first nodeÚ__annotate__ÚSTORE_SUBSCRz"synthetic code to store annotationz<some opcodes in the annotation are just bound specific nodesz7some opcodes in the annotation are just bound TypeAliaszjust a store of the annotationr�   z3part of a check that a name like `all` is a builtin)2rM   re   Útypes_cmp_issueÚtypes_cmp_issue_fixrP   ÚwalkÚtestÚCompareÚlenÚopsr   r   r   rO   r   rg   rh   Úanyr$   r’   rR   ÚfuncÚNameÚidr   r   ÚAsyncFunctionDefÚFunctionDefrœ   ÚposonlyargsÚargÚargvalÚis_except_cleanupr!   r…   rˆ   r†   r‡   Úannotation_header_sizer(   rK   ÚkeysrJ   r7   rI   Úco_nameÚ	AnnAssignÚ	TypeAliasÚnamer„   )
rY   r   rS   r•   Úcomparisonsr¶   Ú	first_argrœ   Úheader_lengthÚlast_offsets
             r    rU   zPositionNodeFinder.known_issues  s_  € Ø×ÑÐ!GÑGÌJØ”/ôM
ô ˜$Ô 3Ô4ô !ŸX™X d§i¡iÔ0óá0˜Ü! !¤S§[¡[Ô1´c¸!¿%¹%³jÀ1²nò Ø0ð ð ô ˜Ð%GÔHä�{Ó# qÒ(Ü)-¬k¸;Àq¹>Ó)JÐJ�D˜4�;ä$ØNÐRVÑWóð ô !Ð!NÐRVÑ!WÓXÐXô ×Ñ˜R˜aÐ  JÒ.Ü˜4¤§¡Ô-Ø×"Ñ" fÒ,ÜÑNÔ7GÈÔ7MÓNÔNäØTóð ô �dœCŸJ™JÔ'ô ˜XÓ&Ð&äÑJÔ3CÀDÔ3IÓJÔJäÐHÓIÐIô ×Ñ Ó'Ü˜4¤§¡Õ*Ü˜4Ÿ9™9¤c§h¡hÕ/Ø—	‘	—‘ Ó'ð
 —;‘;ˆDÜ˜$ Ô)´*Ø”s×+Ñ+¬S¯_©_Ð=ô3ð —{‘{�ô	 ˜$ Ô)´*Ø”s×+Ñ+¬S¯_©_Ð=õ3ð ˆIä�t˜VÔ$Ø@˜Ÿ™×.Ñ.Ð@°·±·±Ð@�ÙØ $ Q¡§¡�Ià×"Ñ" K×$6Ñ$6Ð7Ø+Ø˜iÐ(Ø# YÐ/Ø˜yÐ)ð	<ñ ô !Ð!5Ó6Ð6à×!Ñ! +¨tÔ4ÜÐbÓcÐcà×Ñ Ò-°+×2DÑ2DÈÒ2Wô Ð2Ó3Ð3ð ×Ñ &Ò(Ü˜t¤C§H¡HÔ-ÜÑE´w¸t´}ÓEÔEÜ× Ñ  JÒ.äÐEÓFÐFä×Ñ˜wÒ&Ø×!Ñ!ð &ñ ô
 ! <°×0BÑ0BÐ/CÐCTÐ!UÓVÐVà×!Ñ!Ð%EÑEÈ+×J\ÑJ\Ð`kÒJkô !Øtóð ð
 ×"Ñ" lÒ2Ü˜t¤S§[¡[Ô1Ü˜tŸ|™|¬C¯K©KÔ8Ü˜tŸw™w¬¯©Ô0ð #Ÿl™l�”ä×Ñ˜vÓ%ð !%× ;Ñ ;Ó =Ð=ˆ}Ð=ä  §¡×!2Ñ!2Ó!4Ó5°bÑ9�à& q™¨;×+=Ñ+=ÔL¸{È1¹}ÒLô %Ð%hÓiÐið Mô %Ð%hÓiÐià—:‘:×$Ñ$×,Ñ,¨nÒ<À×ASÑASÐUcÒAcÜ$Ð%IÓJÐJà—:‘:×$Ñ$×,Ñ,¨nÒ<ÄÈDÔQT×Q^ÑQ^ÔA_Ü$Ð%cÓdÐdä˜$¤§¡Ô/°T·Z±Z×5FÑ5F×5NÑ5NÐPT×PYÑPY×P\ÑP\Ò5\Ü Ð!ZÓ[Ð[à×!Ñ! \Ò1°k×6IÑ6IÈ^Ò6[Ü Ð!AÓBÐBà×!Ñ! WÒ,´¸DÄÇÁÔ1JÜ Ð!VÓWÐWð 2KÐ,ð1 &ùòAs   Á;Yc                 ó  — t         j                  dk\  rnt        j                  | j                  j                  «       d«      D �cg c]  }|j                  ‘Œ }}t        |«      dk(  r|d   dv r|d= d}n|d= d}|g d¢k(  r|S yc c}w )Nrs   é   r   )ÚCOPY_FREE_VARSÚ	MAKE_CELLé   )ÚRESUMEr    ÚLOAD_SMALL_INTrŒ   ÚPOP_JUMP_IF_FALSEÚ	NOT_TAKENÚLOAD_COMMON_CONSTANT)rg   rh   Ú	itertoolsÚislicerK   ÚvaluesrM   r³   )rY   ÚinstÚheaderÚheader_sizes       r    r¿   z)PositionNodeFinder.annotation_header_sizeÄ  s“   € Ü×Ñ˜fÒ$Ü,5×,<Ñ,<¸T¿\¹\×=PÑ=PÓ=RÐSTÔ,UÓVÑ,U D�D—K“KÐ,UˆFÐVä�6‹{˜AŠ~Ø˜!‘9Ð >Ñ>Ø˜q˜	Ø !‘Kà˜q˜	Ø !�Kàò ò ð 'Ð&àùò+ Ws   ÁBrÖ   c                 ó$  ‡ — ‰ j                   dvryt        |t        j                  «      rXt        |j                  t        j
                  «      r4‰ j                   j                  d«      rt        |«      ‰ j                  k(  ryt        |t        j                  «      rXt        |j                  t        j                  «      r4‰ j                   j                  d«      rt        |«      ‰ j                  k(  ryt        ˆ fd„t        |«      D «       «      S )N)r¡   Ú
STORE_FASTÚSTORE_DEREFÚSTORE_GLOBALÚDELETE_NAMEÚDELETE_FASTÚDELETE_DEREFÚDELETE_GLOBALFrd   ÚDELETE_c              3   ó¢   •K  — | ]F  }t        |t        j                  «      xr& |j                  xr t	        |«      ‰j
                  k(  –— ŒH y ­wr#   )re   rP   ÚExceptHandlerrÄ   r   r½   )r”   r•   rÖ   s     €r    r–   z7PositionNodeFinder.is_except_cleanup.<locals>.<genexpr>  sD   øè ø€ ð 
á"�ô �qœ#×+Ñ+Ó,ÒZ°·±ÒZ¼LÈ»OÈtÏ{É{Ñ<ZÓZÙ"ùs   ƒAA)rM   re   rP   r·   ÚctxÚStoreri   r   r½   ÚDelrµ   r!   )rÖ   r   s   ` r    r¾   z$PositionNodeFinder.is_except_cleanupÝ  sË   ø€ à�;‰;ð 	
ñ 	
ð ô, �tœSŸX™XÔ&Ü˜4Ÿ8™8¤C§I¡IÔ.Ø—‘×&Ñ& xÔ0Ü˜TÓ" d§k¡kÒ1ð ô �tœSŸX™XÔ&Ü˜4Ÿ8™8¤C§G¡GÔ,Ø—‘×&Ñ& yÔ1Ü˜TÓ" d§k¡kÒ1ð äó 
ä˜T”]ó
ó 
ð 	
r+   c           	      ód  ‡‡‡— ‰j                   }d„ }t        d«      }dt        t        t        t           f   dt
        dt        fˆfd„}dt        t        t        t        df   f   dt
        dt        fˆfd	„}|d
k(  ry |d«      r' |t        j                  t        j                  f«      ry |d«      rE |t        j                  t        j                  t        j                  t        j                  f«      ryt         j"                  dk\  r> |d«      r6 |t        j                  t        j                  t        j                  f«      ry |d«      r' |t        j$                  t        j&                  f«      ry |d«      r |t        j(                  «      ry |dd¬«      r |t        j*                  «      ry |dd¬«      s |dd¬«      s |d«      rŠ |t        j,                  t        j.                  t        j0                  ¬«      rUt3        t5        t        j.                  t5        t        j,                  ‰«      j6                  «      j8                  t        «      ry |d«      r |t        j*                  «      ry |d«      r2 |t        j:                  ‰j<                  t        j>                  ¬«      ry |d«      r= |t        j@                  «      s& |t        j,                  t        j0                  ¬«      ry |d«      r |t        j                  «      ry |dd ¬«      r |t        j.                  «      ry |d!«      r/ |t        jB                  «      r‰j<                  tE        ‰«      k(  ry |d"«      r] |t        jF                  t        jH                  f«      r7tK        ˆfd#„t5        t        jF                  ‰«      jL                  D «       «      ry |d$«      rt |t        jN                  t        j$                  t        jP                  f«      s& |t        j:                  t        jR                  ¬%«      r‰j<                  tE        ‰«      k(  ry	  |d&«      r@‰jZ                  j]                  d'«      }|d(k7  r  |t        j^                  t`        |   ¬«      ry |t        jb                  t        j>                  ¬%«      r |d)tE        ‰«      ¬«      ry |d*«      r |t        jd                  «      ry |d+«      r' |t        jf                  t        j>                  ¬%«      ry |t        j:                  t        jh                  ¬%«      sJ |t        j:                  t        jR                  ¬%«      rwt3        ‰jj                  t        j^                  «      rS |d,«      rKt3        ‰j<                  tl        «      rtE        ‰«      ‰j<                  v ry‰j<                  tE        ‰«      k(  ry |t        j:                  t        j>                  ¬%«      r |d-tE        ‰«      ¬«      ry |t        j.                  «      r- |d.t5        t        j.                  ‰«      j8                  ¬«      ry |t        j                  t        j                  t        j                  t        j                  t        jn                  f«      r	 |d/«      ryt         j"                  dk\  �rë |t        jp                  t        jr                  ¬«      r |d0d1¬2«      ry |t        jf                  «      r	 |d3«      ry |t        jH                  «      r |d0d4¬2«      ry |t        jt                  «      s$t3        ‰jj                  t        j                  «      r |d0d5¬2«      ry |t        j:                  «      r |d6d7¬«      ry |t        jv                  «      r2 |d0d8¬2«      s' |d9d:¬2«      s |d9d;¬2«      s |d<tE        ‰«      ¬2«      ry |t        jx                  «      r |d0d=¬2«      s |d<‰jz                  ¬2«      ry |t        j|                  «      r |d0d>¬2«      s |d<‰jz                  ¬2«      ry |t        j~                  «      r1 |d0d?¬2«      s& |d"‰jz                  j€                  ¬2«      s |d«      ry |t        j$                  «      r8‰j‚                  r, |d@dA¬2«      ry |dBdC¬2«      ry |d0dD¬2«      ry |d6d7¬«      ry |t        jN                  t        jP                  f«      rT‰j‚                  rH |d«      ry |d9dE¬2«      ry |dFdG¬«      ry |dFdH¬«      ryt         j"                  dIk\  r |dJdK¬«      ry |dLdM¬«      ry |t        j@                  «      r |dd¬«      s |dN«      ry |t        j„                  «      r	 |dO«      ryt         j"                  dPk\  �r’ |dQ«      ry |dR«      r |t        jd                  «      ry |dS«      r' |t        j&                  t        j$                  f«      ry |dFdA¬«      ry |dFd7¬«      ry |dT«      rc |t        jN                  t        j$                  t        j~                  t        jv                  t        j†                  t        jP                  f«      ry |dF«      r: |t        j~                  «      r$‰jz                  j€                  ‰j<                  k(  ry |dLdU¬«      ry |dT«      r%t3        ‰jj                  t        jv                  «      ry |d9dV¬2«      r6 |t        jv                  t        j|                  t        jx                  f«      ryt         j"                  dIk\  rn |d&d(¬2«      r |t        jf                  «      ry |dWd7¬«      ry |dXdY¬«      ry |dJ«      r/ |t        j:                  «      r‰j€                  ‰j<                  v ryt        d«      }	t        d«      Š|j‰                  dZ«      r"t        jf                  }	t        jh                  }�n€|j‰                  d[«      r*t        j,                  }	t`        ‰jZ                     Šˆfd\„}�nE|j‰                  d]«      r`t        jp                  }	t‹        t        jr                  t        jŒ                  t        jŽ                  t        j�                  ¬^«      |   Šˆfd_„}nÔ|d`v r&t        jb                  }	t        jh                  }ˆfda„}nª|dbv r&t        j:                  }	t        jh                  }ˆfdc„}n€|dv rt        j(                  }	dd„ }nh|j‰                  de«      r!t        jR                  }t        jf                  }	n6|j‰                  df«      r%t        jR                  }t        jb                  }	ˆfdg„}t“        ‰dhd«      }
|t        d«      uxs t•        ‰dh«       xs t3        |
|«      }t3        ‰|	«      r|r	 |‰«      rydit        ‰«      j–                  ›dj‰j                   ›�}t™        |‰‰«      ‚)kzE
        checks if this node could gererate this instruction
        c                  ó   — y)NT© ©Úes    r    Ú<lambda>z+PositionNodeFinder.verify.<locals>.<lambda>  s   € Àr+   NÚopnamesÚkwargsr   c           	      ó�   •— t        | t        «      r| g} ‰j                  | v xr ||D �ci c]  }|t        ‰|«      “Œ c}k(  S c c}w )a)  
            match instruction

            Parameters:
                opnames: (str|Seq[str]): inst.opname has to be equal to or in `opname`
                **kwargs: every arg has to match inst.arg

            Returns:
                True if all conditions match the instruction

            )re   ÚstrrM   Úgetattr)rí   rî   ÚkrS   s      €r    Ú
inst_matchz-PositionNodeFinder.verify.<locals>.inst_match  s`   ø€ ô ˜'¤3Ô'Ø"˜)�Ø×%Ñ%¨Ð0ò °VÙ4:ó@Ù4:¨q�”7˜;¨Ó*Ñ*°Fñ@ñ 6ð ùò @s   ªAÚ	node_type.c                 ód   •— t        ‰| «      xr" t        ˆfd„|j                  «       D «       «      S )a  
            match the ast-node

            Parameters:
                node_type: type of the node
                **kwargs: every `arg` has to be equal `node.arg`
                        or `node.arg` has to be an instance of `arg` if it is a type.
            c              3   óŽ   •K  — | ]<  \  }}t        |t        «      rt        t        ‰|«      |«      nt        ‰|«      |k(  –— Œ> y ­wr#   )re   Útyperñ   )r”   rò   Úvr   s      €r    r–   z@PositionNodeFinder.verify.<locals>.node_match.<locals>.<genexpr>:  sO   øè ø€ ð 7ñ +‘D�A�qô ˜a¤Ô&ô œ7 4¨Ó+¨QÔ/ä˜T 1Ó%¨Ñ*ó+ñ +ùs   ƒAA)re   ÚallÚitems)rô   rî   r   s     €r    Ú
node_matchz-PositionNodeFinder.verify.<locals>.node_match1  s5   ø€ ô ˜d IÓ.ò ´3ó 7ð #ŸL™LœNó	7ó 4ð r+   r=   rC   )rC   rŸ   r    r`   )ÚLOAD_FAST_AND_CLEARrÚ   )rC   ÚCALL_FUNCTION_EXr‹   Ú	LOAD_NAMEÚ__annotations__)r½   r?   Újoinr@   )rC   ÚBUILD_STRING)Úleftr†   r­   )rÝ   rÞ   )r¸   rä   r  )r†   )rr   ÚWITH_EXCEPT_START)r¡   rÜ   Ú__doc__)r¡   rÚ   rÜ   rÛ   )r¡   rÚ   rÛ   rÜ   c              3   ój   •K  — | ]*  }t        t        t        |«      «      ‰j                  k(  –— Œ, y ­wr#   )r   r   r   r½   )r”   ÚaliasrS   s     €r    r–   z,PositionNodeFinder.verify.<locals>.<genexpr>“  s,   øè ø€ Ð{Ñ^zÐUZ”L¤¤k°5Ó!9Ó:¸k×>PÑ>PÕPÑ^zùs   ƒ03)rÚ   rÛ   r¡   rÜ   )rä   Ú	BINARY_OPÚ=z[]rB   )ÚJUMP_IF_TRUE_OR_POPÚJUMP_IF_FALSE_OR_POPÚPOP_JUMP_IF_TRUErÐ   ÚDELETE_SUBSCR)rþ   rŸ   ÚLOAD_FAST_CHECKr    ÚLOAD_GLOBALr�   ÚLOAD_FROM_DICT_OR_DEREFÚ!LOAD_FAST_BORROW_LOAD_FAST_BORROW)rÝ   rà   rß   )rq   rÏ   rm   ÚCALL_INTRINSIC_1ÚINTRINSIC_UNARY_POSITIVE)r„   ÚBINARY_SLICEÚINTRINSIC_IMPORT_STARÚINTRINSIC_ASYNC_GEN_WRAPr�   Ú__classdict__ÚINTRINSIC_TYPEVARÚCALL_INTRINSIC_2ÚINTRINSIC_TYPEVAR_WITH_BOUNDÚ"INTRINSIC_TYPEVAR_WITH_CONSTRAINTS)rÚ   rÛ   ÚINTRINSIC_TYPEVARTUPLEÚINTRINSIC_PARAMSPECÚINTRINSIC_TYPEALIAS)rÛ   r�   r  z.type_params)rÚ   rŸ   z.generic_baseÚINTRINSIC_SUBSCRIPT_GENERICÚ"INTRINSIC_SET_FUNCTION_TYPE_PARAMSrŸ   ú	.defaultsú.kwdefaultsrs   r  )r   r!  r¡   Ú__classdictcell__)ÚLIST_APPENDrC   ÚFORMAT_VALUEr¥   ÚNOPÚTO_BOOLrD   rª   Ú__static_attributes__ÚINTRINSIC_SET_TYPEPARAM_DEFAULTr    )r¡   rþ   Ú__conditional_annotations__)ÚBINARY_SUBSCRzSLICE+ÚBINARY_c                 ó`   •— t        t        t        j                  | «      j                  ‰«      S r#   )re   r   rP   ÚBinOpr†   ©rë   Úop_types    €r    rì   z+PositionNodeFinder.verify.<locals>.<lambda>©  s   ø€ ¤Z´´S·Y±YÀÓ0B×0EÑ0EÀwÔ%Or+   ÚUNARY_)ÚUNARY_POSITIVEÚUNARY_NEGATIVErx   ÚUNARY_INVERTc                 ó`   •— t        t        t        j                  | «      j                  ‰«      S r#   )re   r   rP   r…   r†   r.  s    €r    rì   z+PositionNodeFinder.verify.<locals>.<lambda>²  s   ø€ ¤Z´´S·[±[À!Ó0D×0GÑ0GÈÔ%Qr+   )r@   r?   ÚLOOKUP_METHODÚLOAD_SUPER_ATTRc                 ó4   •— t        | «      ‰j                  k(  S r#   ©r   r½   ©rë   rS   s    €r    rì   z+PositionNodeFinder.verify.<locals>.<lambda>¶  ó   ø€ ¤\°!£_¸×8JÑ8JÒ%Jr+   )rþ   r  rŸ   r�   ÚLOAD_CLASSDEREFc                 óf   •— t        t        j                  | «      j                  ‰j                  k(  S r#   )r   rP   r·   r¸   r½   r9  s    €r    rì   z+PositionNodeFinder.verify.<locals>.<lambda>À  s!   ø€ ¤T¬#¯(©(°AÓ%6×%9Ñ%9¸[×=OÑ=OÒ%Or+   c                 ób   — t        t        t        j                  | «      j                  «      dk(  S )Nr   )r³   r   rP   r²   r´   rê   s    r    rì   z+PositionNodeFinder.verify.<locals>.<lambda>Ã  s   € ¤S¬¬c¯k©k¸1Ó)=×)AÑ)AÓ%BÀaÒ%Gr+   )ÚSTORE_SLICEr­   rA   c                 ó4   •— t        | «      ‰j                  k(  S r#   r8  r9  s    €r    rì   z+PositionNodeFinder.verify.<locals>.<lambda>Ê  r:  r+   rä   zast.z is not created from )MrM   r÷   r   rð   r	   r   Úboolr   r   rP   ÚWithÚ	AsyncWithr{   r~   r|   r}   rg   rh   rf   rR   r²   rÂ   r-  ÚConstantÚModre   r   r  Úvaluer·   r½   ræ   Ú	JoinedStrrã   r   ÚImportÚ
ImportFromrµ   Únamesrº   r¹   rå   ÚMatchAsÚMatchSequenceÚ
MatchValuer„   ÚremovesuffixÚ	AugAssignÚop_type_maprQ   ÚBoolOpÚ	SubscriptÚLoadr   Útuplery   r…   ÚUAddÚYieldÚTypeVarÚTypeVarTuplerÄ   Ú	ParamSpecrÃ   r¸   Útype_paramsÚFormattedValueÚLambdari   ÚdictÚUSubr‡   ÚInvertrñ   r   Ú__name__r   )rY   r   rS   Úop_nameÚextra_filterrä   ró   rû   r¼   rH   Únode_ctxÚ	ctx_matchÚtitler/  s    ``          @r    rW   zPositionNodeFinder.verify  sK  ú€ ð
 ×$Ñ$ˆÙ6DˆÜ˜“Jˆð	¤¤c¬8´C©=Ð&8Ñ 9ð 	ÄSð 	ÌTõ 	ð&	¤%¬¬e´D¸#°IÑ.>Ð(>Ñ"?ð 	Ì3ð 	ÔSWõ 	ð  �gÒØá�fÔ¡*¬c¯h©h¼¿¹Ð-FÔ"GàáÐ>Ô?ÁJÜ�\‰\œ3×+Ñ+¬S¯[©[¼#¿,¹,ÐGôE
ð ô ×Ñ Ò'ÙÐ@ÔAÙœCŸL™L¬#¯+©+´s·|±|ÐDÔEàáÐ2Ô3¹
Ü�\‰\œ3Ÿ8™8Ð$ô9
ð áÐ<Ô=Á*Ü�K‰KôC
ð á�kÐ*;Õ<ÁÜ�M‰MôB
ð ñ ˜=°Õ8Ù˜k°&Õ9ÙÐ6Ô7áœ3Ÿ9™9¬3¯<©<¼C¿G¹GÕDÜœ4¤§¡¬d´3·9±9¸dÓ.C×.HÑ.HÓI×OÑOÔQTÔUð á�nÔ%©*´S·]±]Ô*Càñ Ð4Ô5¹*Ü�H‰H˜×+Ñ+´·±õ;
ð á�nÔ%Ù”s—}‘}Ô%©´C·I±IÄ#Ç'Á'Õ)JàáÐ9Ô:¹zÌ#Ï(É(Ô?SØáÐ4¸YÕGÉJÜ�L‰LôM
ð ñ ÐRÔSÙœ3×,Ñ,Ô-Ø×"Ñ"¤l°4Ó&8Ò8ð ñ ÐRÔSÙœCŸJ™J¬¯©Ð7Ô8ÜÓ{Ô^bÔcf×cmÑcmÐosÓ^t×^zÒ^zÓ{Ô{ð ñ ÐRÔSáœCŸO™O¬S¯\©\¼3×;OÑ;OÐPÔQÙÜ—H‘HÜŸ	™	õð
 ×"Ñ"¤l°4Ó&8Ò8ààñ �kÔ"Ø×#Ñ#×0Ñ0°Ó5ˆCà�DŠy™Z¬¯©¼;ÀsÑ;KÕLàá”c—m‘m¬¯©Õ1±jØ¤,¨tÓ"4õ7
ð áðô
ñ œŸ™Ô$àá�oÔ&©:´c·m±mÌÏÉÕ+QØñ ”s—x‘x¤S§X¡XÕ.áœ3Ÿ8™8¬¯©Õ3Ü˜tŸ{™{¬C¯M©MÔ:áð	ô
ô 9CÀ;×CUÑCUÔV[Ô8\ŒL˜Ó +×"4Ñ"4Ñ4ð ð ×#Ñ#¤|°DÓ'9Ò9àá”c—h‘h¤C§G¡GÕ,±Ø<Ä\ÐRVÓEWõ2
ð á”c—l‘lÔ#©
Ø+´D¼¿¹ÀtÓ4L×4RÑ4Rõ)
ð áÜ�\‰\œ3Ÿ;™;¬¯©´c×6FÑ6FÌÏÉÐPô
áÐ1Ô2Øä×Ñ˜wÓ&Ùœ#Ÿ+™+¬#¯(©(Õ3¹
Ø"Ð,Fõ9ð áœ#Ÿ-™-Ô(©Z¸Ô-GØáœ#Ÿ.™.Ô)©jØ"Ð,Cõ/ð ñ œ3Ÿ9™9Ô%¬°D·K±KÄ×AQÑAQÔ)RÙÐ/Ð9SÕTØáœ#Ÿ(™(Ô#©
°<ÀÕ(WØáœ#Ÿ+™+Ô&ÙÐ-Ð7JÕKÙØ&Ð0Nõñ Ø&Ð0Tõñ Ð;Ä\ÐRVÓEWÕXàáœ#×*Ñ*Ô+ÙÐ-Ð7OÕPÙÐ;ÀTÇYÁYÕOàáœ#Ÿ-™-Ô(ÙÐ-Ð7LÕMáÐ;ÀTÇYÁYÕOØñ œ#Ÿ-™-Ô(áÐ1Ð;PÕQÙ!ØRÐ\`×\eÑ\e×\hÑ\hõñ " &Ô)àñ œ#Ÿ,™,Ô'¨D×,<Ò,<ÙØLØ*õð áÐ9À?ÕSØáØ&Ð0Mõð á˜l°/ÕBØáœ3Ÿ?™?¬3×+?Ñ+?Ð@ÔAÀd×FVÒFVÙ˜fÔ%ØáØ&Ð0Tõð á˜k°Õ=Øá˜k°Õ?Øä×#Ñ# wÒ.Ù!Ð"EÐMhÕiØá˜,Ð/BÕCàñ
 œ#Ÿ-™-Ô(Ù˜;¨vÕ6ÙÐ5Ô6àáœ#×,Ñ,Ô-±*¸^Ô2LØä×Ñ˜wÓ&á˜%Ô Øá˜)Ô$©´C·J±JÔ)?Øá˜)Ô$©´S·X±X¼s¿|¹|Ð4LÔ)MØá˜+¨nÕ=Øá˜+¨oÕ>ØáÐ:Ô;Á
ä—O‘OÜ—L‘LÜ—M‘MÜ—K‘KÜ—J‘JÜ×(Ñ(ðô	Að ñ ˜;Ô'ÙœsŸ}™}Ô-Ø—I‘I—L‘L K×$6Ñ$6Ò6àá˜,Ð.EÕFàáÐ:Ô;Ä
È4Ï;É;ÔWZ×WbÑWbÔ@cØáÐ,Ð5VÕWÑ\fÔhk×hsÑhsÔtw÷  uBñ  uBô  CF÷  CSñ  CSð  hTô  ]UØä×Ñ˜wÒ&Ù˜+¨dÕ3¹
Ä3Ç=Á=Ô8QØÙÐ,°_ÕEØÙÐ4Ð=ZÕ[ØáÐ=Ô>Á:ÌcÏhÉhÔCWÐ\`×\cÑ\cÐgr×gyÑgyÑ\yØô
 ˜“JˆÜ˜T›
ˆà×ÑÐ9Ô:Ü—-‘-ˆCÜ—(‘(ŠCØ×Ñ 	Ô*Ü—)‘)ˆCÜ! +×"5Ñ"5Ñ6ˆGÛOŠLØ×Ñ Ô)Ü—+‘+ˆCÜÜ"Ÿx™xÜ"Ÿx™xÜŸ'™'Ü ŸZ™Zô	ð
 ñˆGó R‰LØÐWÑWÜ—-‘-ˆCÜ—(‘(ˆCÛJ‰LØð 
ñ 
ô —(‘(ˆCÜ—(‘(ˆCÛO‰LØÐ>Ñ>Ü—+‘+ˆCÙG‰LØ×ÑÐ ?Ô@Ü—)‘)ˆCÜ—-‘-‰CØ×Ñ Ô-Ü—)‘)ˆCÜ—-‘-ˆCÛJˆLä˜4 ¨Ó-ˆð ”t˜D“zÐ!ò )Ü˜4 Ó'Ð'ò)ä˜( CÓ(ð 	ô �d˜CÔ ¡Y±<ÀÔ3EØøô
 �‹J×ÓØ×Òð
ˆô
 ˜e T¨;Ó7Ð7r+   c                 ó:   — | j                   j                  |d «      S r#   )rK   Úget)rY   r\   s     r    rS   zPositionNodeFinder.instructioná  s   € Ø�|‰|×Ñ  dÓ+Ð+r+   c                 óT   — | j                   j                  |j                  dz
  d «      S )Nr>   )rK   rf  rJ   )rY   rS   s     r    r€   z%PositionNodeFinder.instruction_beforeä  s&   € ð �|‰|×Ñ × 2Ñ 2°QÑ 6¸Ó=Ð=r+   c                 óB   — | j                  |«      }|€y|j                  S )Nr=   )rS   rM   )rY   r\   Úis      r    rM   zPositionNodeFinder.opnameé  s#   € Ø
×
Ñ
˜5Ó
!ˆØˆ9ØØ�x‰xˆr+   ré   r`   )ÚlinenorF   Ú
col_offsetrE   rG   rH   .c                 óØ   ‡‡‡— | j                  |«      }|€J ‚|j                  Š‰�‰j                  €J ‚t        ˆˆˆfd„| j                  j
                  ‰j                     D «       «      S )Nc              3   óê   •‡K  — | ]i  Št        ‰‰«      r[t        ‰t        j                  «      sAt        ‰t        j                  «      s't	        ˆˆfd „‰D «       «      rt        t        ‰«      –— Œk y­w)c              3   óP   •K  — | ]  }t        ‰|«      t        ‰|«      k(  –— Œ y ­wr#   )rñ   )r”   Úattrr   Úpositions     €€r    r–   z9PositionNodeFinder.find_node.<locals>.<genexpr>.<genexpr>  s,   øè ø€ ð á+�Dô ˜ $Ó'¬7°4¸Ó+>Õ>Ù+ùs   ƒ#&N)re   rP   ÚExprrL  rù   r   r   )r”   r   rG   rp  rH   s    @€€€r    r–   z/PositionNodeFinder.find_node.<locals>.<genexpr>
  s[   ùè ø€ ð 
áC�Ü˜$ Ô$Ü˜d¤C§H¡HÔ-ä˜d¤C§N¡NÔ3Üô á+óô ô ”˜d×#ÙCùs   „A/A3)rS   r�   rj  r   r;   Ú_nodes_by_line)rY   r\   rG   rH   rS   rp  s     `` @r    rN   zPositionNodeFinder.find_nodeó  sn   ú€ ð" ×&Ñ& uÓ-ˆØÐ&Ð&Ð&à×(Ñ(ˆØÐ#¨¯©Ð(CÐCÐCäõ 
àŸ™×2Ñ2°8·?±?ÒCó
ó 
ð 	
r+   )'r_  Ú
__module__Ú__qualname__r  r   r
   r   rP   ÚModuleÚintr   r[   rV   r)   ÚInstructionrT   rU   r¿   Ústaticmethodr@  r¾   rW   r   rS   r€   rð   rM   Úextra_node_typesrg   rh   Ú
type_paramÚexprÚstmtÚexcepthandlerrš   r	   rS  r   rN   ré   r+   r    r6   r6   B   sæ  „ ñð9B˜ið 9B°°KÑ0@ð 9BÈÏ
É
ð 9BÐ[^ð 9BÐhnó 9Bðv- {ð -¸3ð -À4ó -ð^eØðeØ.1¯o©oðeà	óeðNfX ð fX¸3¿?¹?ð fXÈtó fXðT có ð2 ð5
 §¡ð 5
°{ð 5
Àtò 5
ó ð5
ðnJ8˜;ð J8°S·_±_ð J8Èó J8ðX, ð ,¨°#·/±/Ñ)Bó ,ð>ØŸ?™?ð>à	�#—/‘/Ñ	"ó>ð
˜Cð  Có ð ÐØ
×Ñ˜6Ò!ØŸN™NÐ,Ðð
*
ð �H‰HØ�H‰HØ×ÑØ�K‰Kð	!
ð
 ñ!
ñ"
àð"
ð " #™ð"
ð �4˜�9Ñð"
ð  
ô!"
r+   r6   )?rP   rg   r)   Útypesr   r   Útypingr   r   r   r   r	   r
   r   r   r   r   Ú	executingr   r   r   r   r   r   Ú_exceptionsr   r   Ú_utilsr   Ú	functoolsr   rÓ   r!   r$   r(   rw  r*   ÚIfExpÚIfr’   ÚWhiler¯   r{   r|   r}   r~   r®   ÚPowÚMultÚMatMultÚFloorDivÚDivrD  ÚAddÚSubÚLShiftÚRShiftÚBitAndÚBitXorÚBitOrrO  Úobjectr6   ré   r+   r    Ú<module>r”     sR  ðÛ 
Û 
Û 
ß %ß ]× ]× ]ß `× `ß 4Ý  å Û ð
�+ð  (¨;Ñ"7ó ð˜;ð ¨8°KÑ+@ó ñ
 ˆ3ƒð,˜8ð ,¨¨S¯_©_Ñ(=ò ,ó ð,ð
 ‡I�IØ‡F�FØ‡J�JØ‡I�Ið	Ð ð &Ø‡L�LØ‡K�KØ‡L�LØ×Ñð	)ñ €ð �'‰'Ø	�‰Ø	�‰Ø
�,‰,Ø	�‰Ø	�‰Ø	�‰Ø	�‰Ø
�*‰*Ø
�*‰*Ø	�‰Ø	�‰Ø	�‰ñ€ô"S
˜õ S
r+   