
    =Ogp                        	 d dl Z d dlZd dlZd dlZd dlT d dlmZmZmZm	Z	m
Z
mZ g dez   Z[ej        ej        ej        eeefZed         Zdedfedfed	ffZed
         ZdZed         Zed         Zed         Zed         Zed         Z e e!          Z" e#e          Z$d  e%e"          D             Z& e'e&e          D ]\  Z(Z)e)e"e(<   e(e$e)<   d  e
j*                    D             Z+d Z,d_ddddddZ-d_dddddZ.dddddddd d!d"d#
Z/d$ Z0 G d% d&          Z1 e1            Z2d' Z3d( Z4d) Z5d* Z6d+ Z7dd,d-Z8 ej9        d.g d/dgd0z  1          Z: ej9        d2g d3dg1          Z;d4e;j!        _<        d5e;j        _<        d6e;j=        _<        d7e;j>        _<        d8e;j?        _<        d9e;j@        _<        d:e;jA        _<        d;e;jB        _<        d<e;jC        _<         ej9        d=d>          ZDd?ZEd@ZF G dA dBe;          ZGddddCdDZHdE ZIdF ZJdG ZKdH ZLdI ZMdJ ZN	 	 	 	 	 d`dLZOdadddddNZPddddddOZQ	 	 dbdd dKdddPdQZRdR ZSePZTdSZUdTeUdUz
  z  ZVdV ZWdW ZXdX ZYdY ZZdZ Z[ G d[ d\          Z\d] Z]e^d^k    r e]             dS dS )c    N)*)__all___cache_format_inline_cache_entries_nb_ops_specializations_specialized_instructions)	code_infodisdisassembledistbdiscofindlinestarts
findlabels	show_codeget_instructionsInstructionBytecodeFORMAT_VALUEN strreprasciiMAKE_FUNCTION)defaults
kwdefaultsannotationsclosure
LOAD_CONSTLOAD_GLOBAL	BINARY_OPJUMP_BACKWARDCACHEc                 B    g | ]\  }}|                     d           |S )<)
startswith).0slotnames      /usr/lib64/python3.11/dis.py
<listcomp>r,   -   s.    UUU
dPS@T@TUtUUU    c                 $    i | ]\  }}|D ]}||S  r/   )r(   basefamilyspecializeds       r+   
<dictcomp>r3   3   s@       &$V\ GRK   r-   c                 p    	 	 t          | |d          }n!# t          $ r t          | |d          }Y nw xY w|S )Nevalexec)compileSyntaxError)sourcer*   cs      r+   _try_compiler;   7   sT    *FD&)) * * *FD&))*Hs    33Ffiledepthshow_cachesadaptivec                   	 | t          |||           d S t          | d          r| j        } t          | d          r| j        } nGt          | d          r| j        } n/t          | d          r| j        } nt          | d          r| j        } t          | d          rt          | j        	                                          }|D ]}\  }}t          |t                    rct          d|z  |	           	 t          |||||
           n)# t          $ r}t          d||	           Y d }~nd }~ww xY wt          |	           ~d S t          | d          rt          | ||||
           d S t          | t           t"          f          rt%          | ||           d S t          | t&                    rt)          | ||||
           d S t          dt+          |           j        z            )Nr=   r?   r@   __func____code__gi_codeag_codecr_code__dict__zDisassembly of %s:r=   r<   zSorry:co_code)r=   r?   (don't know how to disassemble %s objects)r   hasattrrC   rD   rE   rF   rG   sortedrH   items
isinstance
_have_codeprintr   	TypeError_disassemble_recursivebytes	bytearray_disassemble_bytesr   _disassemble_strtype__name__)	xr=   r>   r?   r@   rN   r*   x1msgs	            r+   r   r   D   sU    	y4[8DDDDq* Jq* J	I		 I	I		 I	I		 Iq* *qz''))** 	! 	!HD""j)) !*T1====4UV^_____  4 4 4(Cd33333333344    	! 	! 
I		 *qt5k\deeeeee	Ay)	*	* *14[AAAAAA	As		 *UV^______BQ() * * 	*s   5D


D0D++D0rB   c                    	 | A	 t           j        } n# t          $ r t          d          d w xY w| j        r| j        } | j        t          | j        j        | j        |||           d S )Nz no last traceback to disassemblerB   )	syslast_tracebackAttributeErrorRuntimeErrortb_nextr   tb_framef_codetb_lasti)tbr=   r?   r@   s       r+   r   r   q   s    <	z	M#BB 	M 	M 	MABBL	Mj)rz"bj)"BKd^fggggggs    -	OPTIMIZED	NEWLOCALSVARARGSVARKEYWORDSNESTED	GENERATORNOFREE	COROUTINEITERABLE_COROUTINEASYNC_GENERATOR)
                   @         i   c           	      6   	 g }t          d          D ]P}d|z  }| |z  rD|                    t                              |t	          |                               | |z  } | s n#Q|                    t	          |                      d                    |          S )Nrv   rq   , )rangeappendCOMPILER_FLAG_NAMESgethexjoin)flagsnamesiflags       r+   pretty_flagsr      s    5E2YY ! !!t4< 	LL,00s4yyAABBBTME SZZ   99Ur-   c                       e Zd Zd ZdS )_Unknownc                     dS )Nz	<unknown>r/   selfs    r+   __repr__z_Unknown.__repr__   s    {r-   N)rY   
__module____qualname__r   r/   r-   r+   r   r      s#            r-   r   c                    	 t          | d          r| j        } t          | d          r| j        } nGt          | d          r| j        } n/t          | d          r| j        } nt          | d          r| j        } t          | t                    rt          | d          } t          | d          r| S t          dt          |           j        z            )	NrC   rD   rE   rF   rG   z<disassembly>rJ   rK   )rL   rC   rD   rE   rF   rG   rO   r   r;   rR   rX   rY   rZ   s    r+   _get_code_objectr      s    Nq* Jq* J	I		 I	I		 I	I		 I!S -O,,q) 
>GG$% & & &r-   c                 b    t           |          }|t          v rt          t          |                  n| S N)_all_opnamedeoptmap
_all_opmap)opr*   s     r+   _deoptopr      s)    r?D)-)9)9:htn%%rAr-   c                 "    |r| j         n| j        S r   )_co_code_adaptiverJ   )cor@   s     r+   _get_code_arrayr      s    #+;2;r-   c                 <    	 t          t          |                     S r   )_format_code_infor   r   s    r+   r
   r
      s    ;-a00111r-   c                    g }|                     d| j        z             |                     d| j        z             |                     d| j        z             |                     d| j        z             |                     d| j        z             |                     d| j        z             |                     d| j        z             |                     dt          | j	                  z             | j
        rD|                     d	           t          | j
                  D ]}|                     d
|z             | j        rD|                     d           t          | j                  D ]}|                     d|z             | j        rD|                     d           t          | j                  D ]}|                     d|z             | j        rD|                     d           t          | j                  D ]}|                     d|z             | j        rD|                     d           t          | j                  D ]}|                     d|z             d                    |          S )NzName:              %szFilename:          %szArgument count:    %szPositional-only arguments: %szKw-only arguments: %szNumber of locals:  %szStack size:        %szFlags:             %sz
Constants:z%4d: %rzNames:z%4d: %szVariable names:zFree variables:zCell variables:
)r}   co_nameco_filenameco_argcountco_posonlyargcountco_kwonlyargcount
co_nlocalsco_stacksizer   co_flags	co_consts	enumerateco_namesco_varnamesco_freevarsco_cellvarsr   )r   linesi_ci_ns       r+   r   r      s|   E	LL(2:5666	LL(2>9:::	LL(2>9:::	LL023HHIII	LL(2+??@@@	LL(2=8999	LL(2?:;;;	LL(<+D+DDEEE	| *\"""R\** 	* 	*CLLS))))	{ *XR[)) 	* 	*CLLS))))	~ *&'''R^,, 	* 	*CLLS))))	~ *&'''R^,, 	* 	*CLLS))))	~ *&'''R^,, 	* 	*CLLS))))99Ur-   rI   c                D    	 t          t          |           |           d S )NrI   )rQ   r
   )r   r=   s     r+   r   r      s(     
)B--d######r-   	Positions)lineno
end_lineno
col_offsetend_col_offsetrs   )r   _Instruction)	opnameopcodeargargvalargreproffsetstarts_lineis_jump_target	positionsz!Human readable name for operationzNumeric code for operationz6Numeric argument to operation (if any), otherwise Nonez4Resolved arg value (if known), otherwise same as argz0Human readable description of operation argumentz1Start index of operation within bytecode sequencez4Line started by this opcode (if any), otherwise Nonez1True if other code jumps to here, otherwise FalsezPdis.Positions object holding the span of source code covered by this instruction_ExceptionTableEntryzstart end target depth lasti      c                       e Zd Z	 ddZdS )r      Frs   c                 N   	 g }|rB| j         #d|z  }|                    || j         z             n|                    d|z             |r|                    d           n|                    d           | j        r|                    d           n|                    d           |                    t          | j                                      |                     |                    | j                            t                               | j	        f|                    t          | j	                                      t                               | j        r |                    d| j        z   dz              d                    |                                          S )	Nz%%%dd z-->z   z>>  ())r   r}   r   r   r   rjustr   ljust_OPNAME_WIDTHr   _OPARG_WIDTHr   r   rstrip)r   lineno_widthmark_as_currentoffset_widthfields
lineno_fmts         r+   _disassemblezInstruction._disassemble$  s   	  	2+$|3
j4+;;<<<<cL0111 	!MM%    MM%    	 MM$MM$d4;''--l;;<<<dk''667778MM$tx....|<<===| 8cDL036777xx&&(((r-   N)r   Frs   )rY   r   r   r   r/   r-   r+   r   r     s-        #) #) #) #) #) #)r-   r   )
first_liner?   r@   c          
         	 t          |           }t          t          |                    }|||j        z
  }nd}t	          t          ||          |j        |j        |j        |||	                                |          S )Nr   )co_positionsr?   )
r   dictr   co_firstlineno_get_instructions_bytesr   _varname_from_opargr   r   r   )rZ   r   r?   r@   r   
linestartsline_offsets          r+   r   r   J  s    	 
!		BnR(())J 2#44"?2x#@#@#%#9#%;#-{020A0A/:< < < <r-   c                 @    	 t           }| t          k    r
|||         }|S r   )UNKNOWNr    )r   r   r   r   s       r+   _get_const_valuer   b  s-     F	Z s^FMr-   c                 b    	 t          | ||          }|t          urt          |          nd}||fS r   )r   r   r   )r   r   r   r   r   s        r+   _get_const_infor   q  s=     b#y11F$G33d6lllG7?r-   c                 4    	 | || fi |}||fS t           dfS r   )r   )
name_indexget_name	extrainfor   s       r+   _get_name_infor   }  s:     *22	22v~{r-   c                 z    t          |           }|dz  }|dz  r!|dz  }t          |           }||dz  z  }|dz  !|S )N?   rw      )next)iteratorbvals      r+   _parse_varintr     sX    XA
b&C
B$ 	NNqt B$  Jr-   c           	      f   t          | j                  }g }	 	 t          |          dz  }t          |          dz  }||z   }t          |          dz  }t          |          }|dz	  }t          |dz            }	|                    t          |||||	                     # t          $ r |cY S w xY w)NTrr   rq   )iterco_exceptiontabler   boolr}   r   StopIteration)
coder   entriesstartlengthendtargetdlr>   lastis
             r+   _parse_exception_tabler     s    D*++HG	S!(++A-E"8,,Q.F&.C"8,,Q.Fx((B!GEAJJENN/sFE5QQRRR	S    s   B	B! !B0/B0c                      dt           |          v S )Nr#   )r   )r   s    r+   _is_backward_jumpr    s    fRj((r-   r/   c	              #   J  K   	 |pt          d          }|d n|j        }	t          t          |                     }
|D ]0\  }}}}}t	          ||          D ]}|
                    |           1d }t          |           D ] \  }}||                    |d           }|||z  }||
v }d }d}t          t          |d           }t          |          }}|t          v rt          ||          \  }}n|t          v rD|t          k    r$t          dz  |	          \  }}dz  r|rd|z   }nRt          |	          \  }}n=|t           v rdz  }dt#          |          z   }n|t$          v r2t'          |          r n}|dz   |dz  z   }dt#          |          z   }n|t(          v s	|t*          v rt          |          \  }}n|t,          v rt.                   }|}n|t0          k    r<t2          dz           \  }}|t5          dz            f}|d         r|r|d	z  }|d
z  }nZ|t6          k    r4d	                    fdt;          t<                    D                       }n|t>          k    rt@                   \  }}tC          tD          |         |||||||	  	        V  tF          |         }|s7|s$t	          |          D ]}t          |d           ]tH          tJ          |                  &                                D ]\  }}t	          |          D ]}|dz  }|dk    rA||k    r;| ||d|z  z            }| dtN          (                    |tR          j*                   }nd}tC          dtV          dd ||d dt          t          |d           	  	        V  "d S )Nr/   r   rr   rq   zNULL + zto r   rs   r{   zwith formatc              3   2   K   | ]\  }}d |z  z  |V  dS )rq   Nr/   )r(   r   sr   s      r+   	<genexpr>z*_get_instructions_bytes.<locals>.<genexpr>  sG       $5 $5$!Q'*ad|$5A $5 $5 $5 $5 $5 $5r-   r   z: r$   F),r   __getitem__setr   r|   add_unpack_opargsr   r   r   r   hasconstr   hasnamer!   r   hasjabsr   hasjrelr  haslocalhasfree
hascomparecmp_opr   FORMAT_VALUE_CONVERTERSr   r   r   r   MAKE_FUNCTION_FLAGSr"   r   r   r   r   r   r   rN   int
from_bytesr^   	byteorderr$   )r   varname_from_opargr   r   r   r   exception_entriesr   r?   r   labelsr   r   r   _r   r   r   r   r   r   r   r   deop
signed_argcachesr*   sizedatar   s                                @r+   r   r     s     
  +488L}tt%*;HD!!""F$5   sFAquc"" 	 	AJJv	K)$// J JC!$..66K&{*6)tL"556	||?
 Fx"1$Y"G"G;&&&4S!VX&F&FOFGa 6W 6"+g"5&4S(&C&COFGGQ$v,,.%6t%<%<EcTT#
!jl2$v,,.!!TW__"06H"I"I## %%"9#)"D $sSy//2!9 - (4},G&&)) $5 $5 $5 $5)<O2P2P $5 $5 $5 5 5""$S\
7+b/2vw +~yJ J 	J 	J 	J 't, 	 	6]] ' '\2&&&&'t5;;== 	 	JD$4[[  ! 66bDjjT(9 9:D!%NNcm)L)LNNGG G!UAtWfdEtL"556     	yJ Jr-   c                    	 t          t          |                     }t          |           }t          t	          | |          || j        | j        | j        ||||                                 |
  
         d S )N)r=   r  r   r?   )	r   r   r   rV   r   r   r   r   r   )r   r   r=   r?   r@   r   r  s          r+   r   r     s    $nR(())J.r22r844b4{BL*4):$&OO$5$5;	P P P P P Pr-   c                    t          | |||           ||dk    rZ||dz
  }| j        D ]M}t          |d          r9t          |           t          d|d|           t	          |||||           Ld S d S )	NrB   r   rq   rJ   rI   zDisassembly of :r<   )r   r   rL   rQ   rS   )r   r=   r>   r?   r@   rZ   s         r+   rS   rS     s    ;JJJJ}		AIE 	 	Aq)$$ 4    aaa1====&D;QY    "		 	r-   )r=   r   r  r   r?   c                   t          |          }|rJt          |                                          |z   }|dk    rt          t	          |                    }nd}nd}t          |           dz
  }|dk    rt          t	          |                    }nd}t          | |||||||	|
	  	        D ][}|o|j        d uo
|j        dk    }|rt          |           |j        |k    }t          |	                    |||          |           \|rZt          d	|           |D ]H}|j
        rd
nd}|j        dz
  }t          d|j         d| d|j         d|j         d| 
|           Gd S d S )Ni  r   r   rr   i'  rs   r   r  r   r?   rI   zExceptionTable:z lastir   r   z to z -> z [])r   maxvalueslenr   r   r   r   rQ   r   r   r   r   r   r>   )r   r   r  r   r   r   r=   r   r  r   r?   show_lineno	maxlinenor   	maxoffsetr   instrnew_source_lineis_current_instrentryr   s                        r+   rV   rV     s   
 z""K 
))++,,{:	s9~~..LLLLD		AIE3y>>**(/A5)2J5@;L6B5@B B B   ' , ,D8, <!+ 	  	t <50e  /?NN	 	 	 	 	 cd++++& 	c 	cE %3HHE)A+CVu{VVVVVVVVuVV]abbbbbc c	c 	cr-   c                 >    	 t          t          | d          fi | d S )Nz<dis>)rS   r;   )r9   kwargss     r+   rW   rW   F  s+    F<88CCFCCCCCr-   rv   rr   rq   c              #   J  K   d}d}t          dt          |           d          D ]}}|r|dz  }
| |         }t          |          }t          |         }|t          k    r9| |dz            |z  }|t
          k    r|dz  nd}|t          k    r|dt          z  z  }nd }d}|||fV  ~d S )Nr   rr   rq   rt   )r|   r)  r   r   HAVE_ARGUMENTEXTENDED_ARG_INT_OVERFLOW)r   extended_argr  r   r   r  r   s          r+   r	  r	  R  s      LF1c$ii##   	aKF!W||&t,=  qs)l*C)-)=)=C1HH1L },,M 11CL"cl' r-   c                     	 g }t          |           D ]X\  }}}|P|t          v rt          |          r| }|dz   |dz  z   }n|t          v r|dz  }n?||vr|                    |           Y|S )Nrr   )r	  r  r  r  r}   )r   r  r   r   r   labels         r+   r   r   j  s    
 F)$// % %C?W}}$R(( $C
SU*wAF""e$$$Mr-   c              #   f   K   	 d }|                                  D ]\  }}}|||k    r|}||fV  d S r   )co_lines)r   lastliner   r   lines        r+   r   r     s[       H MMOO  sD 0 0H+
Fr-   c              #     K   	 t           d         }t           d         }| j        }| j        }d t          | j                  D             }t          |          D ]\  }\  }}||k    r|dk    r{||dz
           }	||dz
           }
|	d         t          v rV|
d         t          v rGt          |
d         |
d         |          }t          |	d         |	d         |          }||         ||fV  d S )NIMPORT_NAMEr    c                 4    g | ]\  }}}|t           k    ||fS r/   )r5  )r(   r  r   r   s       r+   r,   z!_find_imports.<locals>.<listcomp>  s6     ) ) )JAr3<'' 3i'''r-   rr   rq   r   )opmapr   r   r	  rJ   r   r
  r   )r   r?  r    constsr   opargsr   r   opargfrom_oplevel_oplevelfromlists                r+   _find_importsrI    s      &K|$J\FKE) ).*D*D ) ) )F#F++ 6 6;BaQqSkGac{H
h&&8A;(+B+B(!hqk6JJ+GAJ
FKKU|UH55556 6r-   c              #      K   	 t           d         t           d         h}| j        }t          | j                  D ]\  }}}||v r
||         V  d S )N
STORE_NAMESTORE_GLOBAL)rA  r   r	  rJ   )r   	STORE_OPSr   r  r   r   s         r+   _find_store_namesrN    sp      
 	lnI
 KE$RZ00  
2s??* r-   c                   X    e Zd Z	 ddddddZd Zd Zedddd            Zd	 Zd
 Z	dS )r   NF)r   current_offsetr?   r@   c                ,   t          |          x| _        }||j        | _        d| _        n|| _        ||j        z
  | _        t          t          |                    | _        || _        || _	        t          |          | _        || _        || _        d S )Nr   )r   codeobjr   r   _line_offsetr   r   _linestarts_original_objectrP  r   r  r?   r@   )r   rZ   r   rP  r?   r@   r   s          r+   __init__zBytecode.__init__  s    ,Q///r /DO !D(DO *R-> >Dr 2 233 !,!7!;!;& r-   c                     | j         }t          t          || j                  |j        |j        |j        | j        | j        | j	        |
                                | j        	  	        S )Nr%  )rR  r   r   r@   r   r   r   rT  rS  r  r   r?   )r   r   s     r+   __iter__zBytecode.__iter__  sf    \&r4='I'I')'='){BL'+'7373D9=9O46OO4E4E373CE E E 	Er-   c                 L    d                     | j        j        | j                  S )Nz{}({!r}))format	__class__rY   rU  r   s    r+   r   zBytecode.__repr__  s'      !8!%!68 8 	8r-   )r?   r@   c                j    	 |j         r|j         }|j          | |j        j        |j        ||          S )N)rP  r?   r@   )rb   rc   rd   re   )clsrf   r?   r@   s       r+   from_tracebackzBytecode.from_traceback  sL    =j 	B j 	sKr{^f
 
 
 	
r-   c                 ,    	 t          | j                  S r   )r   rR  r   s    r+   infozBytecode.info  s    A ...r-   c                 z   	 | j         }| j        | j        }nd}t          j                    5 }t	          t          || j                  |j        |j        |j	        | j
        | j        ||| j        |                                | j                   |                                cd d d            S # 1 swxY w Y   d S )Nr   )
r  r   r   r   r   r=   r   r  r   r?   )rR  rP  ioStringIOrV   r   r@   r   r   r   rT  rS  r  r   r?   getvalue)r   r   r   outputs       r+   r   zBytecode.dis  s    A\*(FFF[]] 	%fr4=AA242H%'[BL*.*:+/+<$*%+151G,.OO,=,=+/+;	= 	= 	= 	= ??$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A6B00B47B4)
rY   r   r   rV  rX  r   classmethodr^  r`  r   r/   r-   r+   r   r     s         )-Tu_d ! ! ! ! !	E 	E 	E8 8 8 /4u 
 
 
 
 [
/ / /% % % % %r-   r   c                  p   dd l } |                                 }|                    d|                     d          dd           |                                }|j        5 }|                                }d d d            n# 1 swxY w Y   t          ||j        j        d          }t          |           d S )Nr   infilerb?-)rX   nargsdefaultr6   )
argparseArgumentParseradd_argumentFileType
parse_argsrh  readr7   r*   r   )rn  parserargsrh  r9   r   s         r+   mainrv    s    OOO$$&&F
x'8'8'>'>cSVWWWD	               64;+V44DIIIIIs    BBB__main__r   )NNNNr   r/   NF)r   )r   NNNN)_r^   typescollectionsrb  r   r   _opcodes_allr   r   r   r   r	   
MethodTypeFunctionTypeCodeTyperf  staticmethodrX   rP   rA  r   r   r   r   r  r   r  r    r!   r"   r#   r$   listr   r   r   r   r   _empty_slotzipspec_opr2   rN   r   r;   r   r   r~   r   r   r   r   r   r   r
   r   r   
namedtupler   r   __doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   rS   rV   rW   r   	_INT_BITSr6  r	  r   r   rI  rN  r   rv  rY   r/   r-   r+   <module>r     s=   6 



      				                   : : :<HI  2EN</
 ^$%L	6N
G	  o&J < 
M"+	o&gd6llT%[[
UUii&<&<UUUC-FGG & &G[&K%J{ *@*:*@*B*B    +*Dee +* +* +* +* +*Zh4UU h h h h h 	           
 (**& & &.B B B< < <2 2 2  @  $ $ $ $ $ #K"   VaZ	 	 		 &{%
 
 
 V    B  :  S  T  Q  Q  #Y   &Y  #!s  -{-.D"$ $  3) 3) 3) 3) 3), 3) 3) 3)l '+ < < < < <0  
 
 
       ) ) ) 6:269:?C(-	^ ^ ^ ^@Pd P P P P P (,4UUZ      ;?>B&c#b$(e&c &c &c &c &cPD D D 	 	i!m$  0  *
 
 
6 6 6.   E% E% E% E% E% E% E% E%P	 	 	 zDFFFFF r-   