
    ,hh                        S SK r S SKrS SKrS SKrS SK7  S SKJrJrJrJ	r	J
r
JrJrJr  S SKJr  / SQ\-   rC\R                   \R"                  \R$                  \\\4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   r$\S   r%\S   r&\S   r'\S   r(\S   r)\S   r*\+" \,5      r-\." \5      r/\R`                  " 5        H  u  r1r2\1\-\2'   \2\/\1'   M     \R`                  " 5        V VVs0 s H  u  pU  H  o"U _M     M     snnn r3S r4StSSSSSS.S jjr5StSSSSS.S jjr6SS S!S"S#S$S%S&S'S(S).
r7S* r8 " S+ S,5      r9\9" 5       r:S- r;S. r<S/ r=S0 r>S1 r?SS2.S3 jr@\R                  " S4/ S5QS/S6-  S79rB\R                  " S8/ S9Q/ S:QS79rCS;\CRX                  lD        S<\CR                  lD        S=\CR                  lD        S>\CR                  lD        S?\CR                  lD        S@\CR                  lD        SA\CR                  lD        SB\CR                  lD        SC\CR                  lD        SD\CR                  lD        SE\CR                  lD        SF\CR                  lD        \R                  " SGSH5      rO " SI SJ\O5      rPSKrQSLrRSM rSSN rT " SO SP\C5      rU " SQ SR5      rV " SS ST5      rWSSSSU.SV jrXSW rYSX rZSY r[SZ r\S[ r]S\ r^  SuS] jr_SvSSSSS.S^ jjr`SSSSSS.S_ jraSwSa jrbSbrcSc rdSxS S`SSSSSd.Se jjreSvSf jrfSg rg\`rhShriSi\iSj-
  -  rjSk rkSl rlSm rmSn rnSo ro " Sp Sq5      rpStSr jrq\rSs:X  a  \q" 5         ggs  snnn f )y    N)*)__all___cache_format_inline_cache_entries_nb_ops_intrinsic_1_descs_intrinsic_2_descs_specializations_specialized_opmap)get_executor)	code_infodisdisassembledistbdiscofindlinestarts
findlabels	show_codeget_instructionsInstructionBytecodeCONVERT_VALUESET_FUNCTION_ATTRIBUTE)defaults
kwdefaultsannotationsclosureENTER_EXECUTOR
LOAD_CONSTRETURN_CONSTLOAD_GLOBAL	BINARY_OPJUMP_BACKWARDFOR_ITERSEND	LOAD_ATTRLOAD_SUPER_ATTRCALL_INTRINSIC_1CALL_INTRINSIC_2LOAD_FAST_LOAD_FASTSTORE_FAST_LOAD_FASTSTORE_FAST_STORE_FASTCACHEc                 T     [        XS5      $ ! [         a     Of = f[        XS5      $ )Nevalexec)compileSyntaxError)sourcenames     ,/opt/python-3.13.8/usr/lib/python3.13/dis.py_try_compiler6   A   s3    vV,, 6((s    
Ffiledepthshow_cachesadaptiveshow_offsetsc                j   U c  [        XUUS9  g [        U S5      (       a  U R                  n [        U S5      (       a  U R                  n OY[        U S5      (       a  U R                  n O;[        U S5      (       a  U R
                  n O[        U S5      (       a  U R                  n [        U S5      (       ah  [        U R                  R                  5       5      nU H>  u  px[        U[        5      (       d  M  [        SU-  US	9   [        XX#XES
9  [        US	9  M@     g [        U S5      (       a  [        XX#XES
9  g [        U [         ["        45      (       a|  [%        U 5      n
S['        [)        ['        U
5      5      5      -   n[+        UU(       a*  ['        [)        [-        ['        U 5      S-
  S5      5      5      OSUUS9n[/        U
S9n[1        XUS9  g [        U [(        5      (       a  [3        XX#XES
9  g [        S[5        U 5      R6                  -  5      e! [         a  n	[        SXS	9   S n	A	GNS n	A	ff = f)Nr8   r:   r;   r<   __func____code__gi_codeag_codecr_code__dict__zDisassembly of %s:r8   r7   zSorry:co_code      '  r   )r8   offset_widthlabel_widthr:   )
labels_map)arg_resolver	formatter(don't know how to disassemble %s objects)r   hasattrr?   r@   rA   rB   rC   sortedrD   items
isinstance
_have_codeprintr   	TypeError_disassemble_recursivebytes	bytearray_make_labels_maplenstr	FormattermaxArgResolver_disassemble_bytes_disassemble_strtype__name__)xr8   r9   r:   r;   r<   rR   r4   x1msgrL   rK   rN   rM   s                 r5   r   r   N   s    	y48'	)q*JJq*JJ	I		II	I		II	I		IIq*qzz'')*HD"j))*T1=4UV^z 4   
I		q5\d  	A	Ay)	*	*%a(
#c#j/2334NZ3s3s1vz43H/I+J`a*5*57	 #j919M	As		UV^zBQ(() * 	*# ! 4(C334s   H
H2
H--H2r>   c          	      t   U cq   [        [        S5      (       a  [        R                  R                  n O[        R                  n  U R                  (       a  U R                  o R                  (       a  M  [        U R                  R                  U R                  XX4S9  g ! [
         a    [        S5      S ef = f)Nlast_excz no last traceback to disassembler>   )rP   sysrh   __traceback__last_tracebackAttributeErrorRuntimeErrortb_nextr   tb_framef_codetb_lasti)tbr8   r:   r;   r<   s        r5   r   r      s    	z	MsJ''\\//'' jjrzz"jjj""BKKd^f  C  	MABL	Ms   /B  B   B7	OPTIMIZED	NEWLOCALSVARARGSVARKEYWORDSNESTED	GENERATORNOFREE	COROUTINEITERABLE_COROUTINEASYNC_GENERATOR)
   rH   rG             @         i   c           	         / n[        S5       HN  nSU-  nX-  (       d  M  UR                  [        R                  U[	        U5      5      5        X-  n U (       a  MN    O   UR                  [	        U 5      5        SR                  U5      $ )Nr   r}   , )rangeappendCOMPILER_FLAG_NAMESgethexjoin)flagsnamesiflags       r5   pretty_flagsr      ss    E2Y!t<<LL,00s4yABME5  	SZ 99U    c                       \ rS rSrS rSrg)_Unknown   c                     g)Nz	<unknown> selfs    r5   __repr___Unknown.__repr__   s    r   r   N)rc   
__module____qualname____firstlineno__r   __static_attributes__r   r   r5   r   r      s    r   r   c                    [        U S5      (       a  U R                  n [        U S5      (       a  U R                  n OY[        U S5      (       a  U R                  n O;[        U S5      (       a  U R                  n O[        U S5      (       a  U R
                  n [        U [        5      (       a  [        U S5      n [        U S5      (       a  U $ [        S[        U 5      R                  -  5      e)	Nr?   r@   rA   rB   rC   z<disassembly>rF   rO   )rP   r?   r@   rA   rB   rC   rS   r\   r6   rV   rb   rc   rd   s    r5   _get_code_objectr      s     q*JJq*JJ	I		II	I		II	I		II!SO,q)
>G$$% & &r   c                 L    [         U    nU[        ;   a  [        [        U      $ U $ N)_all_opnamedeoptmap
_all_opmap)opr4   s     r5   _deoptopr      s&    r?D)-)9:htn%ArAr   c                    U(       a  U R                   n/ nSn[        S[        U5      S5       H  nX%   X%S-      pvU[        :X  a4   [	        X5      nU(       a!  UR                  5       UR                  5       pvSnUR                  UR                  5       5        UR                  UR                  5       5        M     U(       d  U$ SR                  U5      $ U R                  $ ! [
        [        4 a    S n Nf = f)NFr   rH   r}   Tr   )_co_code_adaptiver   r[   r   r   
ValueErrorrm   
get_opcode	get_opargr   to_bytesr   rF   )	cor;   coderesfoundr   r   argexs	            r5   _get_code_arrayr      s    ##q#d)Q'AgtaCy^#%b,B  mmor||~ EJJr{{}%JJs||~& ( !t3chhsm3zz #L1 Bs   C!!C65C6c                 *    [        [        U 5      5      $ r   )_format_code_infor   r   s    r5   r   r      s    -a011r   c                 N   / nUR                  SU R                  -  5        UR                  SU R                  -  5        UR                  SU R                  -  5        UR                  SU R                  -  5        UR                  SU R
                  -  5        UR                  SU R                  -  5        UR                  SU R                  -  5        UR                  S[        U R                  5      -  5        U R                  (       aA  UR                  S	5        [        U R                  5       H  nUR                  S
U-  5        M     U R                  (       aA  UR                  S5        [        U R                  5       H  nUR                  SU-  5        M     U R                  (       aA  UR                  S5        [        U R                  5       H  nUR                  SU-  5        M     U R                  (       aA  UR                  S5        [        U R                  5       H  nUR                  SU-  5        M     U R                  (       aA  UR                  S5        [        U R                  5       H  nUR                  SU-  5        M     SR!                  U5      $ )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       r5   r   r      s   E	LL(2::56	LL(2>>9:	LL(2>>9:	LL023H3HHI	LL(2+?+??@	LL(2==89	LL(2??:;	LL(<+DDE	||\"R\\*CLLS) +	{{XR[[)CLLS) *	~~&'R^^,CLLS) -	~~&'R^^,CLLS) -	~~&'R^^,CLLS) -99Ur   rE   c                *    [        [        U 5      US9  g )NrE   )rU   r   )r   r8   s     r5   r   r     s    
 
)B-d#r   	Positions)lineno
end_lineno
col_offsetend_col_offsetrG   )r   _Instruction)opnameopcoder   argvalargreproffsetstart_offsetstarts_lineline_numberlabel	positions
cache_info)NNNz!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 sequencez|Start index of operation within bytecode sequence, including extended args if present; otherwise equal to Instruction.offsetz9True if this opcode starts a source line, otherwise FalsezGsource line number associated with this opcode (if any), otherwise NonezFA label (int > 0) if this instruction is a jump target, otherwise NonezPdis.Positions object holding the span of source code covered by this instructionzGlist of (name, size, data), one for each cache entry of the instruction_ExceptionTableEntryBasezstart end target depth lastic                       \ rS rSrSrg)_ExceptionTableEntryiD  r   N)rc   r   r   r   r   r   r   r5   r   r   D  s    r   r         c                 0    [         R                  " U S5      $ Nr   )r   r   r   s    r5   _get_cache_sizer   J  s     $$VQ//r   c                     [        U 5      n[        [        U   5      nU[        ;   a(  [	        U5      (       a  U* nUS-   US-  -   nUSU-  -  nU$ U[
        ;   a  US-  nU$ S nU$ NrH   )r   r   r   hasjrel_is_backward_jumphasjabs)r   r   r   deopcachestargets         r5   _get_jump_targetr   M  s    
 B<D[./FwT""$C!c!e#!f*
 M	 
Q M Mr   c                       \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       rS	 rS
rg)r   i_  c                     U R                   $ r   )r   r   s    r5   opargInstruction.opargt  s     xxr   c                 ,    [        U R                  5      $ r   )r   r   r   s    r5   
baseopcodeInstruction.baseopcodey  s     $$r   c                 (    [         U R                     $ r   )r   r   r   s    r5   
baseopnameInstruction.baseopname  s     doo&&r   c                      U R                   S-   $ r   )r   r   s    r5   cache_offsetInstruction.cache_offset  s     {{Qr   c                 Z    U R                   [        [        U R                     5      S-  -   $ r   )r   r   r   r   r   s    r5   
end_offsetInstruction.end_offset  s(       ?;t{{3K#LQ#NNNr   c                 X    [        U R                  U R                  U R                  5      $ r   )r   r   r   r   r   s    r5   jump_targetInstruction.jump_target  s      TXXt{{CCr   c                     U R                   S L$ r   )r   r   s    r5   is_jump_targetInstruction.is_jump_target  s     zz%%r   c                     [         R                  " 5       n[        US9nUR                  U S5        UR	                  5       $ )NrE   F)ioStringIOr]   print_instructiongetvalue)r   outputrN   s      r5   __str__Instruction.__str__  s4    6*	##D%0  r   r   N)rc   r   r   r   propertyr   r   r   r   r   r   r  r  r   r   r   r5   r   r   _  s    *   % % ' '   O O D D & &!r   r   c                   8    \ rS rSr  SS jrS	S jrS rS rSrg)
r]   i  Nc                 @    Xl         X l        X0l        X@l        X`l        g r   r8   lineno_widthrJ   rK   r:   )r   r8   r  rJ   rK   line_offsetr:   s          r5   __init__Formatter.__init__  s!     	((&&r   c                    U R                  X5        U R                  (       a  UR                  (       a  UR                  nUR                   H  u  pEn[	        U5       Hl  nUS-  nUS:X  a*  U S[
        R                  U[        R                  5       3nOSnU R                  [        S[        SS XUSS S UR                  5      S5        Mn     M     g g g )NrH   r   z:  r-   F)print_instruction_liner:   r   r   r   int
from_bytesri   	byteorderr   r-   r   )	r   instrmark_as_currentr   r4   sizedatar   r   s	            r5   r  Formatter.print_instruction  s    ##E; 0 0\\F$)$4$4 DtAaKF Av%)F"S^^D#---P,Q"R"$//#GUAtWf$)4uH % %5 !1r   c                 4   U R                   nU R                  nU R                  nUS:  =(       a"    UR                  =(       a    UR                  S:  nU(       a  [        U R                  S9  / nU(       am  UR                  (       aH  UR                  b  SOSnX-  nUR                  c  [        OUR                  n	UR                  X-  5        OUR                  SU-  5        UR                  b'  SUR                   S3n
UR                  U
SU 3 5        OUR                  SU-  5        US:  a+  UR                  [        UR                  5      SU 3 S	35        U(       a  UR                  S
5        OUR                  S5        UR                  UR                  R                  [        5      5        UR                  b  [        UR                  5      n[!        S[#        UR                  5      [        -
  5      nUR                  [        UR                  5      R%                  [&        U-
  5      5        UR(                  (       a!  UR                  SUR(                  -   S-   5        [        SR+                  U5      R-                  5       U R                  S9  g )Nr   rE   z%%%ddz%%%ds L:>z  z-->z   ())r  rJ   rK   r   r   rU   r8   r   
_NO_LINENOr   r   reprr   ljust_OPNAME_WIDTHr   r^   r[   rjust_OPARG_WIDTHr   r   rstrip)r   r  r  r  rJ   rK   new_source_linefields
lineno_fmtr   lblr   opname_excesss                r5   r   Formatter.print_instruction_line  s   ((((&&'!+ , ,,, <<!+ 	 tyy!  (-(9(9(EW7
'6
','8'8'@eFWFWj12cL01;;"ekk]!$CMMS;-02MM#+,!MMT%,,/,/?@CDMM% MM% ell((7899 uyy/C  3u||#4}#DEMMM$uyy///}0LMN}}cEMM1C78chhv%%'dii8r   c                 
   U R                   nU(       ap  [        SUS9  U H_  nUR                  (       a  SOSnUR                  nUR                  nUR
                  n[        SU SU SU SUR                   S	U 3
US9  Ma     g g )
NzExceptionTable:rE   z lastir  z  Lz to Lz -> Lz [])r8   rU   lastistart_label	end_labeltarget_labelr9   )r   exception_entriesr8   entryr6  startendr   s           r5   print_exception_tableFormatter.print_exception_table  s    yy#$/*$)KKR))oo++E7%uE&EKK=%QX\] + r   )r8   rK   r  rJ   r:   )Nr   r   r   r   F)F)	rc   r   r   r   r  r  r  r>  r   r   r   r5   r]   r]     s    NO27'"$19f	^r   r]   c                   0    \ rS rSrSS jrS rS rS rSrg)	r_   i  Nc                 H    Xl         X l        X0l        U=(       d    0 U l        g r   r   r   varname_from_opargrL   )r   r   r   rC  rL   s        r5   r  ArgResolver.__init__  s    "
"4$*r   c                     [        U5      nU[        ;   a  US-  $ U[        ;   a<  [        U5      (       a  U* OUnUS-   US-  -   n[	        [
        U   5      nUSU-  -  nU$ g r   )r   r   r   r   r   r   )r   r   r   r   r   
signed_argr   r   s           r5   offset_from_jump_arg ArgResolver.offset_from_jump_arg  sl    |7?7NW_!24!8!8#cJaZ*Q,.F$[%67Fa&j FMr   c                 :    U R                   R                  US 5      $ r   )rL   r   )r   r   s     r5   get_label_for_offset ArgResolver.get_label_for_offset  s    ""6400r   c                 ^  ^ U R                   c  S OU R                   R                  nS nSn[        U5      nTGbr  TnU[        ;   a  [	        UTU R
                  5      u  pVXV4$ U[        ;   a  U[        :X  a*  [        TS-  U5      u  pVTS-  (       a  U(       a  U S3nXV4$ U[        :X  a*  [        TS-  U5      u  pVTS-  (       a  U(       a  U S3nXV4$ U[        :X  a*  [        TS-  U5      u  pVTS-  (       a  U(       a  U S3nXV4$ [        TU5      u  pV XV4$ U[        ;   d
  U[        ;   a,  U R                  UTU5      nU R                  U5      nSU 3nXV4$ U[        [         ["        4;   aF  TS-	  n	TS-  n
[        XR$                  5      u  p[        XR$                  5      u  pUS	-   U-   nX4nXV4$ U[&        ;   d
  U[(        ;   a  [        TU R$                  5      u  pVXV4$ U[*        ;   a!  [,        TS
-	     nUnTS-  (       a  SU S3nXV4$ U[.        :X  a  S [0        [2        [4        4T   nST   nXV4$ U[6        :X  a+  S	R9                  U4S j[;        [<        5       5       5      nXV4$ U[>        :X  a  [@        T   u  pXV4$ U[B        :X  a  [D        T   nXV4$ U[F        :X  a	  [H        T   nXV4$ )Nr  rH   r}   z + NULLz + NULL|selfrG   zto L   r   r   r   zbool(r&  )r  r\   r(  asciic              3   J   >#    U  H  u  pTS U-  -  (       d  M  Uv   M     g7f)r}   Nr   ).0r   sr   s      r5   	<genexpr>1ArgResolver.get_argval_argrepr.<locals>.<genexpr>T  s'      $52P$!'*ad| %&A2Ps   #	#)%r   __getitem__r   hasconst_get_const_infor   hasnamer!   _get_name_infor&   r'   hasjumphasexcrG  rJ  r*   r+   r,   rC  haslocalhasfree
hascomparecmp_opr   r\   r(  rN  r   r   r   FUNCTION_ATTR_FLAGSr"   r   r(   r   r)   r	   )r   r   r   r   get_namer   r   r   r1  arg1arg2val1argrepr1val2argrepr2_s     `             r5   get_argval_argreprArgResolver.get_argval_argrepr!  s   ::-44::3I3I|?
 Fx"1$T^^"L^ ] ;&&4S!VX&FOFaW%,IW"5T S Y&&4S!VX&FOFaW%,I\":L K _,&4S!VX&FOFaW%,I\":D A '5S(&COFG@ ? DFN222sFC//7 ,6 5 -/CEZ[[axRx!/6M6M!N!/6M6M!N"T/H4( ' !TW_"0d6M6M"N$ # #q) 8 %gYa0G  &T51#66s;  //)) $5)<O2P $5 5  "$S\

 	 )),S1  )),S1r   )r   rL   r   rC  )NNNN)	rc   r   r   r   r  rG  rJ  rh  r   r   r   r5   r_   r_     s    +
1;r   r_   )
first_liner:   r;   c          	      0   [        U 5      n[        [        U5      5      nUb  XR                  -
  nOSnUR                  n[        UR                  UR                  UR                  [        U5      S9n[        [        XC5      UUUR                  5       UUS9$ )Nr   rB  
linestartsr  co_positionsoriginal_coderM   )r   dictr   co_firstlinenorF   r_   r   r   _varname_from_opargrZ   _get_instructions_bytesr   rn  )	rd   rj  r:   r;   r   rm  r  ro  rM   s	            r5   r   r   ^  s     
!	BnR()J #4#44JJM%'[[242H2H*:=*IKL #?2#@.8/:020A1>0<> >r   c                      [         nUb  X!   nU$ r   UNKNOWN)r   r   r   r   s       r5   _get_const_valuerw  |  s     FMr   c                 L    [        XU5      nU[        La  [        U5      OSnX44$ Nr  )rw  rv  r(  )r   r   r   r   r   s        r5   rV  rV    s*     by1F$G3d6lG?r   c                 0    Ub  U" U 40 UD6nX34$ [         S4$ ry  ru  )
name_indexr`  	extrainfor   s       r5   rX  rX    s+     *2	2~{r   c                     [        U 5      nUS-  nUS-  (       a#  US-  n[        U 5      nX!S-  -  nUS-  (       a  M#  U$ )N?   r      )next)iteratorbvals      r5   _parse_varintr    sJ    XA
b&C
B$	Nt B$$ Jr   c           	      ,   [        U R                  5      n/ n  [        U5      S-  n[        U5      S-  nX4-   n[        U5      S-  n[        U5      nUS-	  n[        US-  5      n	UR	                  [        X5XhU	5      5        Mj  ! [         a    Us $ f = f)NrH   r}   )iterco_exceptiontabler  boolr   r   StopIteration)
r   r  entriesr<  lengthr=  r   dlr9   r6  s
             r5   _parse_exception_tabler    s    D**+HG!(+A-E"8,Q.F.C"8,Q.Fx(B!GEAJENN/F5QR   s   A+B BBc                     [         U    S;   $ )N)r#   JUMP_BACKWARD_NO_INTERRUPTr   )r   s    r5   r   r     s    ": 8 8 8r   c              #     #    U=(       d    U nU=(       d    [        S5      nSnS nS n[        U5       GH,  u  ppUb  X;   nU(       a  X   nUb  Xr-   nOS n[        [        US5      6 n[	        U5      nX	   nU(       a  UR                  XU	5      u  nnOU[        U5      nn[        [        U   5      n[        U5       H  n[        US5        M     U(       aO  / n[        [        U      R                  5        H*  u  nnX	S-   U	S-   SU-  -    nUR                  UUU45        M,     OS nU(       a  UR                  U	5      OS n[        [        U   XUUXXhUUU5      v   GM/     g 7f)Nr   FrH   )r  _unpack_opargsr   r  r   rh  r(  r   r   r   r   r   rR   r   rJ  r   )r   rm  r  rn  ro  rM   r   local_line_numberr   r   r   r   r   r   r   r   r   r   rg  r   r4   r  r  r   s                           r5   rs  rs    s{     ")TM+48LKK)7)F%b! .K$.$6! ,/="tL"56	|\*==bvNOFG!49GF T!23vAr"  J+F4L9??A
dQJ
QX(=>!!4t"45 B J=I11&9t+b/2FG J8 	8A *Gs   E#E%c                   [        [        U 5      5      n[        U 5      n[        U R                  US9nS[        [        [        U5      5      5      -   n	[        U[        U5      U(       a4  [        [        [        [        U R                  5      S-
  S5      5      5      OSU	US9n
[        U R                  U R                  U R                  US9n[        [        X5      XXpR!                  5       U R                  XS9  g )	N)r:  rG   rH   rI   r   r  rB  )r:  rn  ro  rM   rN   )rp  r   r  rZ   rF   r[   r\   r]   _get_lineno_widthr^   r_   r   r   rr  r`   r   rn  )r   r6  r8   r:   r;   r<   rm  r:  rL   rK   rN   rM   s               r5   r   r     s     nR()J.r2!"**@QRJc#c*o.//Kt'8'DS_s3s3rzz?Q3F/M+N'Oef&1&1	3I
 %'[[242H2H*46L r4e):IZ%'ZZlar   c          
          [        XX4US9  Ub  US:  aR  Ub  US-
  nU R                   H9  n[        US5      (       d  M  [        US9  [        SU< S3US9  [	        XaX#XES9  M;     g g )	Nr>   r   r}   rF   rE   zDisassembly of r#  r7   )r   r   rP   rU   rW   )r   r8   r9   r:   r;   r<   rd   s          r5   rW   rW     sn    ;Xde}	AIEAq)$$4 a1=&%	  "r   r   c                    [        [        U 5      5      n[        U5      nU H;  u  pEn  nUR                  U5        UR                  U5        UR                  U5        M=     [        U5      n[	        [        U5      5       VV	s0 s H
  u  pXS-   _M     n
nn	U H<  nXR
                     Ul        XR                     Ul        XR                     Ul
        M>     U
$ s  sn	nf )Nr}   )setr   addrQ   r   r<  r7  r=  r8  r   r9  )ro  r:  jump_targetslabelsr<  r=  r   rg  r   r   rL   es               r5   rZ   rZ     s    z-01LF$5 FAq

5

3

6 %6 F^F1:6&>1JK1J+1&A#+1JJK"77+ '#HH-   Ls   Cz  --c                    U c  g[        [        S U R                  5       5      SS9nUS:X  a  g[        S[        [	        U5      5      5      nU[        [
        5      :  a#  S U R                  5       ;   a  [        [
        5      nU$ )Nr   )default   )r^   filtervaluesr[   r\   r'  )rm  	maxlinenor  s      r5   r  r  +  sq    F4!2!2!45rBIBq#c)n-.Lc*o%$*2C2C2E*E:r   )r  r:  rn  ro  rM   rN   c          	      2    [        XUUUUS9n	[        XXS9  g )Nrl  )r6  )rs  print_instructions)
r   r6  rm  r  r:  rn  ro  rM   rN   instrss
             r5   r`   r`   8  s)     %T7B8D9F8D	FF v)Ir   c           
          U  Hf  nUR                   Us=:*  =(       a8    UR                   S[        [        [        UR                  5         5      -  -   :*  Os  nUR                  XE5        Mh     UR                  U5        g r   )r   r   r   r   r   r  r>  )r  r:  rN   r6  r  is_current_instrs         r5   r  r  I  sm     <<5 W W||a/+hu||>T2U"VVVW##E<	  ##$56r   c                 0    [        [        U S5      40 UD6  g )Nz<dis>)rW   r6   )r3   kwargss     r5   ra   ra   R  s    <8CFCr   r   rH   r}   c              #   |  #    SnSnSn[        S[        U 5      S5       H  nU(       a  US-  nM  X   n[        U5      n[        [        U   5      nU[
        ;   a2  XS-      U-  nU[        :X  a  US-  OSnU[        :  a  US[        -  -  nOS nSnU[        :X  a  US-  nXDXW4v   M  XBS-  -
  nXHXW4v   SnM     g 7f)Nr   rH   r}   r~   )r   r[   r   r   r   hasargEXTENDED_ARG_INT_OVERFLOW)	r   extended_argextended_args_offsetr   r   r   r   r   r   s	            r5   r  r  ^  s     LF1c$i#aKFW| T!236>s)l*C)-)=C1H1L },M 11CL< A% /!A55LB,,#$ 3 $s   B:B<c                     / n[        U 5       H4  u  p#pEUc  M  [        XEU5      nUc  M  Xa;  d  M#  UR                  U5        M6     U$ r   )r  r   r   )r   r  r   rg  r   r   r   s          r5   r   r   }  sO     F,T22?$Rf5E}"e$ 3 Mr   c              #   ^   #    SnU R                  5        H  u  p#nXALd  M  UnX$4v   M     g 7f)NF)co_lines)r   lastliner<  r=  lines        r5   r   r     s9      H MMODH+ , s   --c           	   #     #    [         S   nU R                  nU R                  n[        U R                  5       VVVs/ s H  u    pEnU[
        :w  d  M  XV4PM     nnnn[        U5       Hq  u  nu  pYXQ:X  d  M  US:  d  M  XxS-
     n
XxS-
     nU
S   [        ;   d  M4  US   [        ;   d  MC  [        US   US   U5      n[        U
S   U
S   U5      nX9   X4v   Ms     g s  snnnf 7f)NIMPORT_NAMErH   r}   r   )	opmapr   r   r  rF   r  r   rU  rw  )r   r  constsr   rg  r   r   opargsr   r   from_oplevel_oplevelfromlists                 r5   _find_importsr    s      &K\\FKKE-;BJJ-G )-GMAqc<' ri-GF )#F+;BaqSkGc{H
h&8A;(+B(!hqk6J+GAJ
FK|U55 ,)s.   ;C&CCC&8C& C&C&,:C&c              #      #    [         S   [         S   1nU R                  n[        U R                  5       H  u    p4nXA;   d  M  X%   v   M     g 7f)N
STORE_NAMESTORE_GLOBAL)r  r   r  rF   )r   	STORE_OPSr   rg  r   r   s         r5   _find_store_namesr    sO      	lnI
 KKE'

31#?* 4s   >AAc                   \    \ rS rSrSSSSSS.S jrS rS r\SSS.S	 j5       rS
 r	S r
Srg)r   i  NF)rj  current_offsetr:   r;   r<   c                    [        U5      =U l        nUc  UR                  U l        SU l        OX l        X'R                  -
  U l        [        [        U5      5      U l        Xl        X0l	        [        U5      U l        X@l        XPl        X`l        g r   )r   codeobjrq  rj  _line_offsetrp  r   _linestarts_original_objectr  r  r:  r:   r;   r<   )r   rd   rj  r  r:   r;   r<   r   s           r5   r  Bytecode.__init__  s    ,Q//r //DO !D(O *->-> >Dr 23 !,!7!;& (r   c           	      6   U R                   nUR                  n[        X R                  5      n[	        UR
                  UR                  UR                  US9n[        [        XR                  5      U R                  U R                  UR                  5       UUS9$ )NrB  rl  )r  rF   rZ   r:  r_   r   r   rr  rs  r   r;   r  r  rn  )r   r   ro  rL   rM   s        r5   __iter__Bytecode.__iter__  s    \\

%m5K5KL
"R\\)+686L6L.8: 'r=='I262B2B373D3D46OO4E5B4@B 	Br   c                 b    SR                  U R                  R                  U R                  5      $ )Nz{}({!r}))format	__class__rc   r  r   s    r5   r   Bytecode.__repr__  s*      !8!8!%!6!68 	8r   )r:   r;   c                    UR                   (       a  UR                   nUR                   (       a  M  U " UR                  R                  UR                  X#S9$ )N)r  r:   r;   )rn   ro   rp   rq   )clsrr   r:   r;   s       r5   from_tracebackBytecode.from_traceback  sA     jjB jjjKKr{{
 	
r   c                 ,    [        U R                  5      $ r   )r   r  r   s    r5   infoBytecode.info  s     ..r   c                 B   U R                   nU R                  b  U R                  nOSn[        R                  " 5        n[	        XR
                  5      nU R                  (       a*  [        [        [        [        U5      S-
  S5      5      5      OSn[        UR                  U R                  5      nS[        [        [        U5      5      5      -   n[        U[        U R                  5      UUU R                   U R"                  S9n[%        UR&                  UR(                  UR*                  US9n	[-        UU R                  U R                   UU R                  UR/                  5       UR                  U	US9	  UR1                  5       sS S S 5        $ ! , (       d  f       g = f)	Nr  rH   rI   r   rG   )r8   r  rJ   rK   r  r:   rB  )rm  r  r6  r:  rn  ro  rM   rN   )r  r  r  r  r   r;   r<   r[   r\   r^   rZ   rF   r:  r]   r  r  r  r:   r_   r   r   rr  r`   rn  r	  )
r   r   r   r
  r   rJ   rL   rK   rN   rM   s
             r5   r   Bytecode.dis  sH   \\*((FF[[]f"2}}5DAEARAR3s3s4y1}d#;<=XYL *"**d6L6LMJc#c*o"677K!v/@AQAQ/R/;.9.2.?.?.2.>.>@I '-/[[:<:P:P2<>L t*.*:*:+/+<+<%+151G1G,.OO,=-/ZZ,8)24 ??$7 ]]s   EF
F)
r  r  r  r;   r  r  r:  rj  r:   r<   )rc   r   r   r   r  r  r   classmethodr  r  r   r   r   r   r5   r   r     sD     )-Tu_dsx ) B8 /4u 
 
/"%r   r   c                    SS K nUR                  5       nUR                  SSSSS9  UR                  SSSS	S9  UR                  S
SSS9  UR                  U S9n U R                  S:X  a+  Sn[
        R                  R                  R                  5       nO;U R                  n[        U R                  S5       nUR                  5       nS S S 5        [        WUS5      n[        X`R                  U R                  S9  g ! , (       d  f       N:= f)Nr   z-Cz--show-caches
store_truezshow inline caches)actionhelpz-Oz--show-offsetszshow instruction offsetsinfile?-)nargsr  )argsz<stdin>rbr0   )r:   r<   )argparseArgumentParseradd_argument
parse_argsr  ri   stdinbufferreadopenr1   r   r:   r<   )r  r  parserr4   r3   r  r   s          r5   mainr    s    $$&F
ol1  3
.|7  9
S9$'D{{c!!&&({{$++t$[[]F %64(D**9J9JK %$s   6C;;
D	__main__r   )Nr   NNN)r  )r   )r  N)sri   typescollectionsr  r   r   _opcodes_allr   r   r   r   r	   r
   r   _opcoder   
MethodTypeFunctionTypeCodeTyper  staticmethodrb   rT   r  r   r   r_  r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   listr   r   rp  r   rR   r4   r   r   r6   r   r   r   r   r   rv  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   rw  rV  rX  r  r  r   rs  r   rW   rZ   r'  r  r`   r  ra   r   	_INT_BITSr  r  r   r   r  r  r   r  rc   )basefamilyspecializeds   000r5   <module>r     s      	 	 	 	 !:<HI  2 2ENN</
 o&78 J '(< 
^$M"+	o&V}+	)*+, +, 12 34 56 g6l%[
"((*HD" KOJt	 + +;*@*@*B*B,$V\{V\K*B)4*Dee4*lC4UUQV C" 	  
 *&.B.2@  $ "" VaZ		 %%  !& B   :   S   T   Q   Q   ,    ! $_    #l    e   !s   "k   &112L"$ 	3 	 0$E!, E!Pa^ a^HQ Qf '+u ><
 8 PT=A38lad"a( (,4UUZin  

J&'2$($(DJ"7D 	 	i!m$%> 6, Z% Z%zL( zF ks   M