grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛfZPã @sddlZddlZddlZddlZddlTddlmZdddddd d d d d dg eZ[ejejej e e e fZ edZdedfedfedffZedZdZdd„ZdUdddœdd„ZdVddœdd„Zddddd d!d"d#d$d%d&œ Zd'd(„Zd)d*„Zd+d„Zd,d-„Zddœd.d „Ze d/d0¡Z d1e j!_"d2e j_"d3e j#_"d4e j$_"d5e j%_"d6e j&_"d7e j'_"d8e j(_"d9Z)d:Z*Gd;d „d e ƒZ+dd<œd=d „Z,d>d?„Z-d@dA„Z.dWdBdC„Z/dXddœdEd„Z0dddœdFdG„Z1dYdddHœdIdJ„Z2dKdL„Z3e0Z4dMdN„Z5dOd „Z6dPd „Z7GdQd„dƒZ8dRdS„Z9e:dTk�re9ƒdS)ZéN)Ú*)Ú__all__Ú code_infoÚdisÚ disassembleÚdistbÚdiscoÚfindlinestartsÚ findlabelsÚ show_codeÚget_instructionsÚ InstructionÚBytecodeÚ FORMAT_VALUE)NÚÚstrÚreprÚasciiÚ MAKE_FUNCTION)ÚdefaultsZ kwdefaultsZ annotationsZclosurecCs6zt||dƒ}Wn tk r0t||dƒ}YnX|S)NÚevalÚexec)ÚcompileÚ SyntaxError)ÚsourceÚnameÚc©rú(/opt/alt/python38/lib64/python3.8/dis.pyÚ _try_compiles r©ÚfileÚdepthc Csh|dkrt|d�dSt|dƒr&|j}t|dƒr8|j}n4t|dƒrJ|j}n"t|dƒr\|j}nt|dƒrl|j}t|dƒrüt|j  ¡ƒ}|D]p\}}t |t ƒrˆt d||d�zt |||d �Wn0tk rì}zt d ||d�W5d}~XYnXt |d�qˆnht|d ƒ�rt|||d �nLt |ttfƒ�r6t||d�n.t |tƒ�rRt|||d �ntd t|ƒjƒ‚dS) N©r!Ú__func__Ú__code__Úgi_codeÚag_codeÚcr_codeÚ__dict__zDisassembly of %s:r zSorry:Úco_codeú(don't know how to disassemble %s objects)rÚhasattrr$r%r&r'r(Úsortedr)ÚitemsÚ isinstanceÚ _have_codeÚprintrÚ TypeErrorÚ_disassemble_recursiveÚbytesÚ bytearrayÚ_disassemble_bytesrÚ_disassemble_strÚtypeÚ__name__)Úxr!r"r.rZx1Úmsgrrrr+s@             ÿr#cCsX|dkr@z tj}Wntk r0tdƒd‚YnX|jr@|j}q2t|jj|j|d�dS)Nz no last traceback to disassembler#) ÚsysÚlast_tracebackÚAttributeErrorÚ RuntimeErrorÚtb_nextrÚtb_frameÚf_codeÚtb_lasti)Útbr!rrrrXs Z OPTIMIZEDZ NEWLOCALSZVARARGSZ VARKEYWORDSZNESTEDZ GENERATORZNOFREEZ COROUTINEZITERABLE_COROUTINEZASYNC_GENERATOR) éééééé é@é€éicCs`g}tdƒD]:}d|>}||@r | t |t|ƒ¡¡||N}|s qVq | t|ƒ¡d |¡S)NrJrEú, )ÚrangeÚappendÚCOMPILER_FLAG_NAMESÚgetÚhexÚjoin)ÚflagsÚnamesÚiÚflagrrrÚ pretty_flagsrs rYcCsŽt|dƒr|j}t|dƒr"|j}n4t|dƒr4|j}n"t|dƒrF|j}nt|dƒrV|j}t|tƒrjt|dƒ}t|dƒrx|St dt |ƒj ƒ‚dS) Nr$r%r&r'r(z r*r+) r,r$r%r&r'r(r/rrr2r8r9©r:rrrÚ_get_code_object€s"        ÿr[cCs tt|ƒƒS©N)Ú_format_code_infor[rZrrrr—scCs„g}| d|j¡| d|j¡| d|j¡| d|j¡| d|j¡| d|j¡| d|j¡| dt|j ƒ¡|j r¶| d ¡t |j ƒD]}| d |¡q¢|j rä| d ¡t |j ƒD]}| d |¡qÐ|j �r| d ¡t |j ƒD]}| d |¡�q|j�rH| d¡t |jƒD]}| d |¡�q2|j�rz| d¡t |jƒD]}| d |¡�qdd |¡S)NzName: %szFilename: %szArgument count: %szPositional-only arguments: %szKw-only arguments: %szNumber of locals: %szStack size: %szFlags: %sz Constants:z%4d: %rzNames:z%4d: %szVariable names:zFree variables:zCell variables:Ú )rPÚco_nameÚ co_filenameÚ co_argcountÚco_posonlyargcountÚco_kwonlyargcountÚ co_nlocalsÚ co_stacksizerYÚco_flagsÚ co_constsÚ enumerateÚco_namesÚ co_varnamesÚ co_freevarsÚ co_cellvarsrT)ÚcoÚlinesZi_cZi_nrrrr]›s<     r]cCstt|ƒ|d�dS©Nr#)r1r)rmr!rrrr »sÚ _InstructionzBopname opcode arg argval argrepr offset starts_line is_jump_targetz!Human readable name for operationzNumeric 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 Falseééc@seZdZddd„ZdS)r éFrGcCsàg}|r:|jdk r,d|}| ||j¡n| d|¡|rJ| d¡n | d¡|jrf| d¡n | d¡| t|jƒ |¡¡| |j t¡¡|j dk rÒ| t|j ƒ t ¡¡|j rÒ| d|j d¡d  |¡  ¡S) Nz%%%ddú z-->z z>>z ú(ú))Ú starts_linerPÚis_jump_targetrÚoffsetÚrjustÚopnameÚljustÚ _OPNAME_WIDTHÚargÚ _OPARG_WIDTHÚargreprrTÚrstrip)ÚselfÚ lineno_widthZmark_as_currentÚ offset_widthZfieldsZ lineno_fmtrrrÚ _disassembleßs&      zInstruction._disassembleN)rsFrG)r9Ú __module__Ú __qualname__r…rrrrr Ñs)Ú first_linecCsTt|ƒ}|j|j}tt|ƒƒ}|dk r4||j}nd}t|j|j|j |j |||ƒS©Nr) r[rlrkÚdictr Úco_firstlinenoÚ_get_instructions_bytesr*rjrirg)r:rˆrmÚ cell_namesÚ linestartsÚ line_offsetrrrr s    þcCs |}|dk r||}|t|ƒfSr\©r)Z const_indexZ const_listÚargvalrrrÚ_get_const_infosr’cCs*|}|dk r||}|}nt|ƒ}||fSr\r�)Z name_indexZ name_listr‘r€rrrÚ_get_name_info's r“c #sŽt|ƒ}d}t|ƒD�]r\} } ‰|dk rD| | d¡}|dk rD||7}| |k} d} d} ˆdk �rlˆ} | tkrztˆ|ƒ\} } nò| tkr’tˆ|ƒ\} } nÚ| tkr´| dˆ} dt| ƒ} n¸| t krÌtˆ|ƒ\} } n | t krât ˆ} | } nŠ| t krútˆ|ƒ\} } nr| t k�rFtˆd@\} } | tˆd@ƒf} | d�rl| �r<| d7} | d7} n&| tk�rld ‡fd d „ttƒDƒ¡} tt| | ˆ| | | || ƒVqdS) NrrFzto rsrGrErNz with formatc3s"|]\}}ˆd|>@r|VqdS)rENr)Ú.0rWÚs©r~rrÚ gs ÿz*_get_instructions_bytes..)r Ú_unpack_opargsrRZhasconstr’Zhasnamer“ÚhasjrelrZhaslocalZ hascompareZcmp_opZhasfreerÚFORMAT_VALUE_CONVERTERSÚboolrrTrhÚMAKE_FUNCTION_FLAGSr r{)ÚcodeÚvarnamesrVÚ constantsÚcellsrŽr�ÚlabelsrwryÚoprxr‘r€rr–rrŒ7sV         þrŒéÿÿÿÿc Cs<|j|j}tt|ƒƒ}t|j||j|j|j|||d�dSro) rlrkrŠr r6r*rjrirg)rmÚlastir!r�rŽrrrrms  ÿcCspt||d�|dks|dkrl|dk r,|d}|jD]8}t|dƒr2t|d�td|f|d�t|||d�q2dS)Nr#rrEr*zDisassembly of %r:r )rrgr,r1r3)rmr!r"r:rrrr3ts    r3)r!r�c CsÈ|dk } | r8t| ¡ƒ|} | dkr2tt| ƒƒ} q)r3r)rÚkwargsrrrr7�sr7ccsdd}tdt|ƒdƒD]J}||}|tkrN||d|B}|tkrH|d>nd}nd}|||fVqdS)NrrFrErH)rOr¨Z HAVE_ARGUMENTZ EXTENDED_ARG)r�Z extended_argrWr¢r~rrrr˜£sr˜cCs\g}t|ƒD]J\}}}|dk r |tkr4|d|}n|tkr |}nq ||kr | |¡q |S)NrF)r˜r™ZhasjabsrP)r�r¡ryr¢r~Zlabelrrrr ®s c csª|jddd…}|jddd…}t|jƒ}d}|j}d}t||ƒD]P\}}|rz||krd||fV|}||7}||krzdS|dkrŠ|d8}||7}qB||kr¦||fVdS)NrrFrErLrM)Ú co_lnotabr¨r*r‹Úzip) r�Zbyte_incrementsZline_incrementsZ bytecode_lenZ lastlinenoÚlinenoZaddrZ byte_incrZ line_incrrrrr Ás&   c@sHeZdZdddœdd„Zdd„Zdd„Zed d „ƒZd d „Zd d„Z dS)rN)rˆÚcurrent_offsetcCsdt|ƒ|_}|dkr&|j|_d|_n||_||j|_|j|j|_tt |ƒƒ|_ ||_ ||_ dSr‰) r[Úcodeobjr‹rˆÚ _line_offsetrlrkÚ _cell_namesrŠr Ú _linestartsÚ_original_objectr­)r‚r:rˆr­rmrrrÚ__init__çs zBytecode.__init__c Cs*|j}t|j|j|j|j|j|j|jd�S)Nr¥) r®rŒr*rjrirgr°r±r¯)r‚rmrrrÚ__iter__ôsýzBytecode.__iter__cCsd |jj|j¡S)Nz{}({!r}))ÚformatÚ __class__r9r²©r‚rrrÚ__repr__ûs ÿzBytecode.__repr__cCs |jr|j}q||jj|jd�S)N)r­)r@rArBrC)ÚclsrDrrrÚfrom_tracebackÿszBytecode.from_tracebackcCs t|jƒSr\)r]r®r·rrrÚinfosz Bytecode.infoc Csl|j}|jdk r|j}nd}t ¡�>}t|j|j|j|j|j |j |j ||d� |  ¡W5QR£SQRXdS)Nr£)ržrVrŸr rŽr�r!r¤) r®r­ÚioÚStringIOr6r*rjrirgr°r±r¯Úgetvalue)r‚rmryÚoutputrrrr s   úz Bytecode.dis) r9r†r‡r³r´r¸Ú classmethodrºr»rrrrrrßs  c Csfddl}| ¡}|jd| d¡ddd�| ¡}|j�}| ¡}W5QRXt||jjdƒ}t |ƒdS)NrÚinfileÚrbú?ú-)r8ÚnargsÚdefaultr) ÚargparseÚArgumentParserÚ add_argumentZFileTypeÚ parse_argsrÁÚreadrrr)rÇÚparserÚargsrÁrr�rrrÚ_testsrÎÚ__main__)N)N)NNNNNr)r£)r£NNNNN);r<ÚtypesÚ collectionsr¼ZopcoderZ _opcodes_allÚ MethodTypeÚ FunctionTypeÚCodeTyperÀÚ staticmethodr8r0ZopmaprrrrršrrœrrrrQrYr[rr]r Ú namedtuplerpr{Ú__doc__r~r‘r€ryrwrxr}rr r r’r“rŒrr3r6r7rr˜r r rrÎr9rrrrÚs²  þþ ÿü -ö  ÿ4 ÿ 6 ÿþ  =