§
    OŠtji5  ã            
       óJ  — d dl Z d dlZd dlmZmZ d dlmZmZmZ  G d„ d¦  «        Z	dee
         fd„Zde
fd„Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ d¦  «        ZdgZde
de
de
de
ddf
d„Zedk    r© e j        ¦   «         Ze                     dddd¬¦  «         e                     ddd¬¦  «         e                     ddd¬¦  «         e                     ddd d!¬¦  «         e                     ¦   «         Z eej        ej        ej        ej        ¦  «         dS dS )"é    N)ÚABCÚabstractmethod)ÚDictÚListÚOptionalc                   ó6  — e Zd ZU eed<   eed<   eed<   ee         ed<   ee         ed<   dededed	ee         d
ee         ddfd„Zedefd„¦   «         Zedefd„¦   «         Z	edefd„¦   «         Z
edee         fd„¦   «         Zedee         fd„¦   «         ZdS )ÚSymbolÚ_nameÚ_op_nameÚ	_ret_typeÚ
_arg_namesÚ
_arg_typesÚnameÚop_nameÚret_typeÚ	arg_namesÚ	arg_typesÚreturnNc                 ó€   — || _         || _        || _        t          |¦  «        | _        t          |¦  «        | _        dS )a#  
        A symbol is a function declaration.
        :param name: name of the symbol
        :param op_name: name of the operation
        :param ret_type: return type of the operation
        :param arg_names: names of the arguments
        :param arg_types: types of the arguments
        N)r
   r   r   Úlistr   r   )Úselfr   r   r   r   r   s         úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/triton/tools/build_extern.pyÚ__init__zSymbol.__init__   s7   € ð  ˆŒ
ØˆŒØ!ˆŒÝ˜y™/œ/ˆŒÝ˜y™/œ/ˆŒˆˆó    c                 ó   — | j         S ©N©r
   ©r   s    r   r   zSymbol.name$   ó
   € àŒzÐr   c                 ó   — | j         S r   )r   r   s    r   r   zSymbol.op_name(   ó
   € àŒ}Ðr   c                 ó   — | j         S r   )r   r   s    r   r   zSymbol.ret_type,   ó
   € àŒ~Ðr   c                 ó   — | j         S r   )r   r   s    r   r   zSymbol.arg_names0   ó
   € àŒÐr   c                 ó   — | j         S r   )r   r   s    r   r   zSymbol.arg_types4   r%   r   )Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   r   Úpropertyr   r   r   r   r   © r   r   r	   r	      sr  € € € € € € Ø€J€J�JØ€M€M�MØ€N€N�NØ�S”	ÐÐÑØ�S”	ÐÐÑð*àð*ð ð*ð ð	*ð
 ˜”9ð*ð ˜”9ð*ð 
ð*ð *ð *ð *ð, ð�cð ð ð ñ „Xðð ð˜ð ð ð ñ „Xðð ð˜#ð ð ð ñ „Xðð ð˜4 œ9ð ð ð ñ „Xðð ð˜4 œ9ð ð ð ñ „Xðð ð r   r	   r   c                 óf   — | dk    rdS | dk    rdS | dk    rdS | dk    rdS | d	k    rd
S | dk    rdS d S )NÚi32Úint32Úu32Úuint32Úi64Úint64Úu64Úuint64ÚfloatÚfp32ÚdoubleÚfp64r-   ©Útype_strs    r   Úconvert_typer=   9   si   € Ø�5ÒÐØˆwØ	�UÒ	Ð	ØˆxØ	�UÒ	Ð	ØˆwØ	�UÒ	Ð	ØˆxØ	�WÒ	Ð	ØˆvØ	�XÒ	Ð	Øˆvð ˆtr   c                 ó&   — | dk    rdS | dk    rdS | S )Nr0   r2   r4   r6   r-   r;   s    r   Úto_unsignedr?   K   s'   € Ø�7ÒÐØˆxØ	�WÒ	Ð	Øˆxàˆr   c                   ó0  — e Zd ZU eed<   eed<   eeef         ed<   eed<   eed<   	 	 ddeded	ed
eddf
d„Ze	defd„¦   «         Z
e	defd„¦   «         Ze	deeef         fd„¦   «         Ze	defd„¦   «         Zedd„¦   «         Zedefd„¦   «         Zdd„ZdS )ÚExternLibraryr
   Ú_pathÚ_symbolsÚ_formatÚ	_groupingTr   ÚpathÚformatÚgroupingr   Nc                 óL   — || _         || _        i | _        || _        || _        dS )zÇ
        Abstract class for extern library.
        :param name: name of the library
        :param path: path of the library
        :param format: whether to format the generated stub file
        N)r
   rB   rC   rD   rE   )r   r   rF   rG   rH   s        r   r   zExternLibrary.__init__[   s+   € ð ˆŒ
ØˆŒ
ØˆŒØˆŒØ!ˆŒˆˆr   c                 ó   — | j         S r   r   r   s    r   r   zExternLibrary.namen   r   r   c                 ó   — | j         S r   ©rB   r   s    r   rF   zExternLibrary.pathr   r   r   c                 ó   — | j         S r   )rC   r   s    r   ÚsymbolszExternLibrary.symbolsv   r!   r   c                 ó   — | j         S r   )rE   r   s    r   rH   zExternLibrary.groupingz   r#   r   c                 ó   — d S r   r-   )r   Ú
input_files     r   Úparse_symbolszExternLibrary.parse_symbols~   ó   € àˆr   c                 ó   — d S r   r-   r   s    r   Ú_output_stubszExternLibrary._output_stubs‚   rS   r   c                 ó  — |                       ¦   «         }|�t          |¦  «        dk    rt          d¦  «        ‚|› d| j        › d�}t	          |d¦  «        5 }|                     |¦  «         |                     ¦   «          | j        rkt          j	        dddd	|gt          j
        ¬
¦  «                             ¦   «          t          j	        d|gt          j
        ¬
¦  «                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr   zfile_str is emptyú/z.pyÚwÚautopep8z-az-rz-i©ÚstdoutÚisort)rU   ÚlenÚ	Exceptionr
   ÚopenÚwriteÚcloserD   Ú
subprocessÚPopenÚPIPEÚcommunicate)r   Ú
output_dirÚfile_strÚoutput_fileÚfs        r   Úgenerate_stub_filez ExternLibrary.generate_stub_file†   sX  € Ø×%Ò%Ñ'Ô'ˆØÐ�s 8™}œ}°Ò1Ð1ÝÐ/Ñ0Ô0Ð0à#Ð5Ð5 d¤jÐ5Ð5Ð5ˆÝ�+˜sÑ#Ô#ð 	_ qØ�GŠG�HÑÔÐØ�GŠG‰IŒIˆIØŒ|ð _ÝÔ  *¨d°D¸$ÀÐ!LÕU_ÔUdÐeÑeÔe×qÒqÑsÔsÐsÝÔ  '¨;Ð!7Å
ÄÐPÑPÔP×\Ò\Ñ^Ô^Ð^ð	_ð 	_ð 	_ñ 	_ô 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_øøøð 	_ð 	_ð 	_ð 	_ð 	_ð 	_s   ÁBC?Ã?DÄD)TT©r   N)r'   r(   r)   r*   r+   r   r	   Úboolr   r,   r   rF   rN   rH   r   rR   rU   rj   r-   r   r   rA   rA   T   s¦  € € € € € € Ø€J€J�JØ€J€J�JØ�3˜�;ÔÐÐÑØ€M€M�MØ€O€O�Oð Øð"ð "àð"ð ð"ð ð	"ð
 ð"ð 
ð"ð "ð "ð "ð& ð�cð ð ð ñ „Xðð ð�cð ð ð ñ „Xðð ð˜˜c 6˜kÔ*ð ð ð ñ „Xðð ð˜$ð ð ð ñ „Xðð ðð ð ñ „^ðð ð˜sð ð ð ñ „^ðð_ð _ð _ð _ð _ð _r   rA   c                   óŒ   ‡ — e Zd ZU eeee         f         ed<   d	ˆ fd„Ze	de
e         fd„¦   «         Zd	d„Zd	d„Zdefd„Zˆ xZS )
Ú	LibdeviceÚ_symbol_groupsr   Nc                 óh   •— t          ¦   «                              d|¦  «         i | _        d| _        dS )z_
        Constructor for Libdevice.
        :param path: path of the libdevice library
        Ú	libdeviceTN)Úsuperr   ro   Úis_pure)r   rF   Ú	__class__s     €r   r   zLibdevice.__init__—   s2   ø€ õ
 	‰Œ×Ò˜ dÑ+Ô+Ð+Ø ˆÔØˆŒˆˆr   c                 óŽ  — |                       d¦  «        }|d         }|d         }|                      ¦   «         }|d         dk    rd S t          |d         ¦  «        }|€d S |                      d¦  «        }|d                              dd¦  «        }|                     dd¦  «        }d|v rd S |d                               d	¦  «        }	g }
g }t          |	¦  «        D ]m\  }}t          |                      ¦   «         d         ¦  «        }|€ d S d
t	          |¦  «        z   }|
                     |¦  «         |                     |¦  «         Œn|dk    rt          |
d         ¦  «        |
d<   nK|                     d¦  «        r6t          |¦  «        }t          |
¦  «        D ]\  }}t          |¦  «        |
|<   Œt          |||||
¦  «        S )Nú@r   é   Úinternalú(Ú Ú__nv_Úieeeú,ÚargÚsadéÿÿÿÿÚu)	Úsplitr=   ÚreplaceÚ	enumerater*   Úappendr?   Ú
startswithr	   )ÚlineÚentriesÚret_strÚfunc_strÚret_strsr   Ú	func_strsÚ	func_namer   Úarg_strsr   r   ÚiÚarg_strÚarg_typeÚarg_names                   r   Ú_extract_symbolzLibdevice._extract_symbol    sÙ  € ð —*’*˜S‘/”/ˆØ˜!”*ˆØ˜1”:ˆà—=’=‘?”?ˆØ�AŒ;˜*Ò$Ð$Ø�4Ý ¨¤Ñ,Ô,ˆØÐØ�4à—N’N 3Ñ'Ô'ˆ	Ø˜a”L×(Ò(¨¨bÑ1Ô1ˆ	Ø×#Ò# G¨RÑ0Ô0ˆØ�WÐÐØ�4à˜Q”<×%Ò% cÑ*Ô*ˆØˆ	Øˆ	Ý# HÑ-Ô-ð 	'ð 	'‰JˆAˆwÝ# G§M¢M¡O¤O°AÔ$6Ñ7Ô7ˆHØÐØ�t�tØ�s 1™vœv‘~ˆHØ×Ò˜XÑ&Ô&Ð&Ø×Ò˜XÑ&Ô&Ð&Ð&Ø�eÒÐå'¨	°"¬Ñ6Ô6ˆI�b‰MˆMØ×Ò Ñ$Ô$ð 	5õ # 8Ñ,Ô,ˆHÝ(¨Ñ3Ô3ð 5ð 5‘��8Ý*¨8Ñ4Ô4�	˜!‘�Ý�i ¨(°I¸yÑIÔIÐIr   c                 ó  — i }| j                              ¦   «         D ]}|j        }|||<   Œi dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“i dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d2“d4d5“d6d5“d7d8“d9d8“d:d;“d<d;“¥i d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOd“dPd“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“¥i d]d^“d_d`“dadb“dcdd“dedf“dgdh“didj“dkdl“dmdl“dndo“dpdo“dqdr“dsdt“dudv“dwdx“dydz“d{d|“¥i d}d~“dd€“d�d‚“dƒd„“d…d†“d‡dˆ“d‰dŠ“d‹dŠ“dŒdŠ“d�dŠ“dŽdŠ“d�d�“d‘d�“d’d�“d“d�“d”d�“d•d–“¥i d—d–“d˜d™“dšd™“d›dœ“d�dœ“dždŸ“d dŸ“d¡d¢“d£d¤“d¥d¤“d¦d¤“d§d¨“d©dª“d«d¬“d­d®“d¯d°“d±d²“¥i d³d´“dµd¶“d·d¶“d¸d¶“d¹dº“d»d¼“d½d¼“d¾d¿“dÀd¿“dÁdÂ“dÃdÂ“dÄdÅ“dÆdÅ“dÇdÈ“dÉdÊ“dËdÌ“dÍdÎ“¥i dÏdÐ“dÑdÒ“dÓdÔ“dÕdÖ“d×dØ“dÙdÚ“dÛdÜ“dÝdÞ“dßdÞ“dàdá“dâdã“dädå“dædç“dèdé“dêdé“dëdì“dídì“¥i dîdï“dðdï“dñdò“dódò“dôdõ“dödõ“d÷dø“dùdø“dúdû“düdû“dýdþ“dÿdþ“�d �d“�d�d“�d�d“�d�d“�d�d	“¥�d
�d�dœ¥}| j                              ¦   «         D ]Q}|j        }||v r||         }||_        || j        v r!| j        |                              |¦  «         ŒF|g| j        |<   ŒRd S (  NÚllabsÚabsÚacosfÚacosÚacoshfÚacoshÚdadd_rdÚadd_rdÚfadd_rdÚdadd_rnÚadd_rnÚfadd_rnÚdadd_ruÚadd_ruÚfadd_ruÚdadd_rzÚadd_rzÚfadd_rzÚasinfÚasinÚasinhfÚasinhÚatanfÚatanÚatan2fÚatan2ÚatanhfÚatanhÚbrevllÚbrevÚcbrtfÚcbrtÚceilfÚceilÚclzllÚclzÚ	copysignfÚcopysignÚcosfÚcosÚcoshfÚcoshÚcospifÚcospiÚcyl_bessel_i0fÚcyl_bessel_i0Úcyl_bessel_i1fÚcyl_bessel_i1Úfdiv_rdÚdiv_rdÚddiv_rdÚfdiv_rnÚdiv_rnÚddiv_rnÚfdiv_ruÚdiv_ruÚddiv_ruÚfdiv_rzÚdiv_rzÚddiv_rzÚerffÚerfÚerfcfÚerfcÚerfcinvfÚerfcinvÚerfcxfÚerfcxÚerfinvfÚerfinvÚexpfÚexpÚexp10fÚexp10Úexp2fÚexp2Úexpm1fÚexpm1ÚfabsfÚfabsÚfast_fdividefÚfast_dividefÚfdimfÚfdimÚffsllÚffsÚfloorfÚfloorÚfmafÚfmaÚfmaf_rdÚfma_rdÚfmaf_rnÚfma_rnÚfmaf_ruÚfma_ruÚfmaf_rzÚfma_rzÚfmodfÚfmodÚuhaddÚhaddÚhypotfÚhypotÚilogbfÚilogbÚisinffÚisinfÚisinfdÚisnanfÚisnanÚisnandÚj0fÚj0Új1fÚj1ÚjnfÚjnÚldexpfÚldexpÚlgammafÚlgammaÚllrintfÚllrintÚllroundfÚllroundÚlogfÚlogÚlog10fÚlog10Úlog1pfÚlog1pÚlog2fÚlog2ÚlogbfÚlogbÚumaxÚmaxÚllmaxÚullmaxÚfmaxfÚfmaxÚuminÚminÚllminÚullminÚfminfÚfminÚdmul_rdÚmul_rdÚfmul_rdÚdmul_rnÚmul_rnÚfmul_rnÚdmul_ruÚmul_ruÚfmul_ruÚdmul_rzÚmul_rzÚfmul_rzÚumul24Úmul24ÚumulhiÚmulhiÚmul64hiÚumul64hiÚ
nearbyintfÚ	nearbyintÚ
nextafterfÚ	nextafterÚnorm3dfÚnorm3dÚnorm4dfÚnorm4dÚnormcdffÚnormcdfÚnormcdfinvfÚ
normcdfinvÚpopcllÚpopcÚpowifÚpowÚpowiÚpowfÚrcbrtfÚrcbrtÚfrcp_rdÚrcp_rdÚdrcp_rdÚfrcp_rnÚrcp_rnÚdrcp_rnÚfrcp_ruÚrcp_ruÚdrcp_ruÚfrcp_rzÚrcp_rzÚdrcp_rzÚ
remainderfÚ	remainderÚurhaddÚrhaddÚrhypotfÚrhypotÚrintfÚrintÚrnorm3dfÚrnorm3dÚrnorm4dfÚrnorm4dÚroundfÚroundÚrsqrtfÚrsqrtÚ	frsqrt_rnÚrsqrt_rnÚusadr   ÚscalbnfÚscalbnÚsignbitfÚsignbitÚsignbitdÚsinfÚsinÚsinhfÚsinhÚsinpifÚsinpiÚsqrtfÚsqrtÚfsqrt_rdÚsqrt_rdÚdsqrt_rdÚfsqrt_rnÚsqrt_rnÚdsqrt_rnÚfsqrt_ruÚsqrt_ruÚdsqrt_ruÚfsqrt_rzÚsqrt_rzÚdsqrt_rzÚfsub_rdÚsub_rdÚdsub_rdÚfsub_rnÚsub_rnÚdsub_rnÚfsub_ruÚsub_ruÚdsub_ruÚfsub_rzÚsub_rzÚdsub_rzÚtanfÚtanÚtanhfÚtanhÚtgammafÚtgammaÚtruncfÚtruncÚy0fÚy0Úy1Úyn)Úy1fÚynf)rC   Úvaluesr   r   ro   r…   )r   Ú
symbol_setÚsymbolr   Úrenamings        r   Ú_group_symbolszLibdevice._group_symbolsÊ   s	  € Øˆ
Ø”m×*Ò*Ñ,Ô,ð 	)ð 	)ˆFØ”nˆGØ"(ˆJ�wÑÐð
Ø�Uð
Ø# Vð
Ø-5°wð
Ø@IÈ8ð
ØU^Ð`hð
ØjsØð
à ð
à+4°hð
à@IÈ8ð
àU^Ð`hð
àjsØð
ð ˜vð
ð (0°ð
ð ;BÀ6ð
ð LTÐU\ð
ð _gÐhoð
ð �fð	
ð 
ð & vð	
ð 07¸ð	
ð AHÈð	
ð Q\Ð]gð	
ð jpÐqvð	
ð
 �Vð
ð
 & wð
ð
 1AÀ/ð
ð
 TdÐetð
ð �xð
ð "+¨Hð
ð 7@Àð
ð LUÐV^ð
ð ajÐksð
ð �xð
ð "+¨Hð
ð 7@Àð
ð 
ð 
ð LRÐSXð
ð [bÐcið
ð lvØð
ð   ð
ð +4°Xð
ð @FÀuð
ð OWÐX_ð
ð biÐjpð
ð �gð
ð  '¨ð
ð 06°uð
ð ?NÈ~ð
ð `gÐhnð
ð qxØð
ð ˜Wð
ð '-¨eð
ð 6?Àð
ð 
ð 
ð KTÐU]ð
ð `iÐjrð
ð �xð
ð ")¨&ð
ð 3:¸6ð
ð DLÈWð
ð W_Ð`gð
ð jrØð
ð ˜wð
ð )1°'ð
ð <DÀWð
ð OTÐUYð
ð \aÐbfð
ð inÐosð
ð �gð
ð  )¨(ð
ð 5>¸xð
ð 
ð 
ð JTÐU^ð
ð agÐhmð
ð pxØð
ð ˜wð
ð )0°ð
ð :AÀ&ð
ð KQÐRWð
ð ZaÐbgð
ð jrØð
ð ˜Eð
ð $*¨5ð
ð 39¸%ð
ð BIÈ%ð
ð RZÐ[`ð
ð cjÐkpð
ð  �Eð!
ð  % hð!
ð 
ð 
ð  1:¸8ð!
ð  FOÐPXð!
ð  [dÐemð!
ð" �xð#
ð" "+¨Hð#
ð" 7@Àð#
ð" LUÐV^ð#
ð" aiÐjqð#
ð$ �gð%
ð$  )¨'ð%
ð$ 4>¸wð%
ð$ IUÐVað%
ð$ dpØð'
ð& # Hð'
ð& /8¸ð'
ð& DNÈyð'
ð& [hÐiuð'
ð 
ð 
ð( �fð)
ð( & uð)
ð( /5°eð)
ð( >DÀUð)
ð( MUÐV]ð)
ð( `iÐjrð)
ð* �xð+
ð* "+¨Hð+
ð* 7@Àð+
ð* LUÐV^ð+
ð* ajÐksð+
ð, �xð-
ð, "+¨Hð-
ð, 7CÀKð-
ð, RZÐ[bð-
ð, enÐowð-
ð. �Vð/
ð 
ð 
ð. (¨ð/
ð. 5?À	ð/
ð. LTÐU\ð/
ð. _gÐhoð/
ð0 ˜ð1
ð0 &,¨Uð1
ð0 5>¸xð1
ð0 JTÐU^ð1
ð0 akÐluð1
ð2 �Eð3
ð2 # Fð3
ð2 -5°gð3
ð2 @GÈð3
ð2 Q[Ð\eð3
ð2 hrØð5
ð4 " 9ð5
ð4 /9¸)ð5
ð 
ð 
ð4 FPÐQZð5
ð4 ]gÐhqð5
ð6 ˜	ð7
ð6 $.¨yð7
ð6 ;DÀXð7
ð6 PYÐZbð7
ð6 enÐowð7
ð8 �xð9
ð8 "+¨Hð9
ð8 7@Àð9
ð8 LUÐV^ð9
ð8 ajÐksð9
ñ: ‘Eð;
ñ: #¡Fð;
ñ: -6±xð;
ñ: BJÉ7ð;
ñ: UZÑ[_ð;
ð 
ñ: imÙñ=
ð 
ð 
ˆðB ”m×*Ò*Ñ,Ô,ð 	8ð 	8ˆFØ”nˆGØ˜(Ð"Ð"Ø" 7Ô+�Ø")�”Ø˜$Ô-Ð-Ð-ØÔ# GÔ,×3Ò3°FÑ;Ô;Ð;Ð;à06¨x�Ô# GÑ,Ð,ð	8ð 	8r   c                 ó0  — t          | j        ¦  «        dk    rd S t          j        dd|g¦  «                             ¦   «                              ¦   «         }|D ])}|                      |¦  «        }|€Œ|| j        |j        <   Œ*|  	                    ¦   «          d S )Nr   ÚgrepÚdefine)
r]   rN   rb   Úcheck_outputÚdecodeÚ
splitlinesr“   rC   r   r¥  )r   rQ   Úoutputr‡   r£  s        r   rR   zLibdevice.parse_symbolsü   sž   € ÝˆtŒ|ÑÔ˜qÒ Ð ØˆFÝÔ(¨&°(¸JÐ)GÑHÔH×OÒOÑQÔQ×\Ò\Ñ^Ô^ˆØð 	0ð 	0ˆDØ×)Ò)¨$Ñ/Ô/ˆFØˆ~ØØ)/ˆDŒM˜&œ+Ñ&Ð&à×ÒÑÔÐÐÐr   c                 óÞ  — d}d}d}| j                              ¦   «         D ]Ä}|dz  }d|d         j        › d�}|d         j        D ]
}||› d�z  }Œ|dz  }d	| j        › d
�}|d         j        D ]
}||› d�z  }Œ|dz  }d}|D ];}	|dz  }|	j        D ]}
|d|
› d�z  }Œd|	j        › d�}|d|	j        z   dz   |z   dz   z  }Œ<|dz  }||z  }|d| j        › �z  }|dz  }|||z   dz   z  }ŒÅ||z   |z   }|S )Nzfrom . import core
rz   z@core.extern
zdef r   ry   z, z_builder=None):
z!	return core.extern_elementwise("z", libdevice_path(), [z], 
Ú{zcore.dtype("z"),z")z): ("z", z),
Ú}z
, is_pure=z, _builder=_builder)
ú
)	ro   r¡  r   r   r
   r   r   r   rs   )r   Ú
import_strÚ
header_strrŠ   rN   Úfunc_name_strr’   Ú
return_strÚarg_type_symbol_dict_strr£  r‘   r   rg   s                r   rU   zLibdevice._output_stubs  s±  € ð ,ˆ
àˆ
ØˆØÔ*×1Ò1Ñ3Ô3ð 	:ð 	:ˆGØÐ(Ñ(ˆHØ8 7¨1¤:Ô#5Ð8Ð8Ð8ˆMØ# AœJÔ0ð 1ð 1�Ø H   Ñ0��ØÐ0Ñ0ˆMàb¸t¼zÐbÐbÐbˆJØ# AœJÔ0ð .ð .�Ø ˜o˜o˜oÑ-�
�
Ø˜'Ñ!ˆJà'*Ð$Ø!ð `ð `�Ø(¨CÑ/Ð(Ø &Ô 0ð Mð M�HØ,Ð0L¸xÐ0LÐ0LÐ0LÑLÐ,Ð,Ø=¨&¬/Ð=Ð=Ð=�Ø(¨H°v´{Ñ,BÀVÑ,KÈhÑ,VÐY_Ñ,_Ñ_Ð(Ð(Ø$¨Ñ+Ð$àÐ2Ñ2ˆJØÐ5 t¤|Ð5Ð5Ñ5ˆJØÐ2Ñ2ˆJà˜¨
Ñ2°TÑ9Ñ9ˆHˆHØ 
Ñ*¨XÑ5ˆàˆr   rk   )r'   r(   r)   r   r*   r   r	   r+   r   Ústaticmethodr   r“   r¥  rR   rU   Ú__classcell__)rt   s   @r   rn   rn   ”   sÏ   ø€ € € € € € Ø˜˜d 6œlÐ*Ô+Ð+Ð+Ñ+ðð ð ð ð ð ð ð'J ¨&Ô!1ð 'Jð 'Jð 'Jñ „\ð'JðR08ð 08ð 08ð 08ðd
ð 
ð 
ð 
ð&˜sð &ð &ð &ð &ð &ð &ð &ð &r   rn   c                   ót   — e Zd ZU eed<   eed<   d
d„Zdeddfd„Zedefd„¦   «         Zedefd	„¦   «         Z	dS )ÚLLVMDisassemblerrB   Ú_ll_filer   Nc                 ó"   — || _         d| _        dS )zf
        Invoke llvm-dis to disassemble the given file.
        :param path: path to llvm-dis
        z/tmp/extern_lib.llN)rB   rº  )r   rF   s     r   r   zLLVMDisassembler.__init__5  s   € ð
 ˆŒ
Ø,ˆŒˆˆr   Úlib_pathc                 ó†   — t          j        | j        |d| j        gt           j        ¬¦  «                             ¦   «          d S )Nz-orZ   )rb   rc   rB   Úll_filerd   re   )r   r¼  s     r   ÚdisasmzLLVMDisassembler.disasm=  s9   € ÝÔ˜$œ* h°°d´lÐCÍJÌOÐ\Ñ\Ô\×hÒhÑjÔjÐjÐjÐjr   c                 ó   — | j         S r   )rº  r   s    r   r¾  zLLVMDisassembler.ll_file@  r!   r   c                 ó   — | j         S r   rL   r   s    r   rF   zLLVMDisassembler.pathD  r   r   rk   )
r'   r(   r)   r*   r+   r   r¿  r,   r¾  rF   r-   r   r   r¹  r¹  1  s²   € € € € € € Ø€J€J�JØ€M€M�Mð-ð -ð -ð -ðk˜sð k tð kð kð kð kð ð˜ð ð ð ñ „Xðð ð�cð ð ð ñ „Xðð ð r   r¹  rq   Úllvm_dis_pathr¼  Úlib_namerf   c                 óü   — |dk    rt          |¦  «        }nt          d|› �¦  «        ‚t          | ¦  «        }|                     |¦  «         |                     |j        ¦  «         |                     |¦  «         dS )a  
      Interface function to build the library file.
      :param llvm_dis_path: path to the llvm-dis binary
      :param lib_path: path to the external library file
      :param lib_name: name of the library
      :param output_dir: path to the output directory
    rq   zUnknown extern library: N)rn   r^   r¹  r¿  rR   r¾  rj   )rÂ  r¼  rÃ  rf   Ú
extern_libÚllvm_disassemblers         r   ÚbuildrÇ  L  s‰   € ð �;ÒÐÝ˜xÑ(Ô(ˆ
ˆ
åÐ=°8Ð=Ð=Ñ>Ô>Ð>å(¨Ñ7Ô7ÐØ×Ò˜XÑ&Ô&Ð&à×ÒÐ.Ô6Ñ7Ô7Ð7Ø×!Ò! *Ñ-Ô-Ð-Ð-Ð-r   Ú__main__z
--llvm-diszPath to llvm-diszllvm-dis)ÚdestÚhelpÚdefaultz
--lib-pathzPath to the extern library)rÉ  rÊ  z
--lib-namezName of the extern libraryz--outputzOutput file pathz/tmp/)Úargparserb   Úabcr   r   Útypingr   r   r   r	   r*   r=   r?   rA   rn   r¹  Úextern_libsrÇ  r'   ÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsrÂ  r¼  rÃ  rf   r-   r   r   ú<module>rÕ     s]  ðØ €€€Ø Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ð/ð /ð /ð /ð /ñ /ô /ð /ðd˜h sœmð ð ð ð ð$˜Sð ð ð ð ð=_ð =_ð =_ð =_ð =_�Cñ =_ô =_ð =_ð@Zð Zð Zð Zð Z�ñ Zô Zð Zðzð ð ð ð ñ ô ð ð0 ˆm€ð.Øð.àð.ð ð.ð ð	.ð
 
ð.ð .ð .ð .ð2 ˆzÒÐØ$ˆXÔ$Ñ&Ô&€FØ
×Ò˜¨?ÐASÐ]gÐÑhÔhÐhØ
×Ò˜¨:Ð<XÐÑYÔYÐYØ
×Ò˜¨:Ð<XÐÑYÔYÐYØ
×Ò˜
¨Ð<NÐX_ÐÑ`Ô`Ð`Ø×ÒÑÔ€Dà	€Eˆ$Ô
˜dœm¨T¬]¸D¼OÑLÔLÐLÐLÐLð Ðr   