
    eCi                        d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZmZ ddlmZ ddlm Z m!Z! e	j"        #                     e!d                     ddl$Z$ ej%        d	          Z&d
dgZ'd Z(d Z)d Z*d Z+d Z, ej-                    d/d            Z. ej-                    d/d            Z/d Z0d Z1d Z2d Z3d Z4d Z5 ej-                    d             Z6d0dZ7 ej-                    d             Z8d Z9d Z:d  Z;d! Z<d" Z=d# Z>d$ Z?d% Z@d& ZAd' ZBd( ZCd) ZDd* ZEd+ ZFd, ZGd- ZHd. ZIdS )1zA small wrapper script around the core JS compiler. This calls that
compiler with the settings given to it. It can also read data from C/C++
header files (so that the JS compiler can see the constants in those
headers, for the libc implementation in JS).
    N)
buildingcacheconfigdiagnosticsextract_metadatafilelockjs_manipulationsharedutilswebassembly)settingsuser_settings)DEBUGasmjs_manglein_temp)ToolchainProfiler)exit_with_errorpath_from_rootthird_party
emscripten__asan_loadN__asan_storeNc                    t          d dD                       rdS t          j        dk    rdS t          j        dk    rdt          _        dS dd t          j        D             }t          |                               |          }fd|D             }|                    h d	          rMt          r8t                              d
d                    d |D                                  dt          _        dS dS )a  Disables filesystem if only a limited subset of syscalls is used.

  Our syscalls are static, and so if we see a very limited set of them - in particular,
  no open() syscall and just simple writing - then we don't need full filesystem support.
  If FORCE_FILESYSTEM is set, we can't do this. We also don't do it if INCLUDE_FULL_LIBRARY, since
  not including the filesystem would mean not including the full JS libraries, and the same for
  MAIN_MODULE=1 since a side module might need the filesystem.
  c              3   0   K   | ]}t           |         V  d S N)r   .0ss     ;/home/ngoprek/emsdk/upstream/emscripten/tools/emscripten.py	<genexpr>z+maybe_disable_filesystem.<locals>.<genexpr><   s&      KK!KKKKKK    )FORCE_FILESYSTEMINCLUDE_FULL_LIBRARYN   r   )
__syscall_fd_c                 6    g | ]}t          j        |          S  )r
   demangle_c_symbol_namer   s     r   
<listcomp>z,maybe_disable_filesystem.<locals>.<listcomp>G   s#    bbb68;;bbbr!   c                 J    h | ]}|                               s|d k    | S )	path_open)
startswith)r   dsyscall_prefixess     r   	<setcomp>z+maybe_disable_filesystem.<locals>.<setcomp>I   s6    ]]]a!,,7G*H*H]AQ\L\L\L\L\L\r!   >   fd_seekfd_closefd_writefd_fdstat_get__syscall_ioctlz?very limited syscalls (%s) so disabling full filesystem support, c              3   4   K   | ]}t          |          V  d S r   )strr   s     r   r    z+maybe_disable_filesystem.<locals>.<genexpr>U   s-      a{a{mnbefgbhbha{a{a{a{a{a{r!   )anyr   MAIN_MODULE
FILESYSTEMSYSCALLS_REQUIRE_FILESYSTEMSIDE_MODULE_IMPORTSsetunionissubsetr   loggerdebugjoin)importsside_module_importsall_importssyscallsr/   s       @r   maybe_disable_filesystemrH   3   s+    	KKJKKKKK 
FQ
FA+,H((( -bbXEabbbg,,$$%899K]]]];]]]H       	/ 
 }VX\XaXaa{a{rza{a{a{X{X{|||-.h***	/ 	/r!   c                 H    	 t          |            dS # t          $ r Y dS w xY w)NTF)int
ValueErrorxs    r   is_intrN   Y   s9    FFF4	   55s    
!!c                     | dz   dz  S )N   ir(   )addrs    r   align_memoryrR   a   s    
)s	r!   c                    t          |j                   t          j        rg t          _        nt          j        |j        z   }t          |                              |j                  }t          |          t          _        t          j	        r't          xj
        t          j        |           z  c_
        |r|j        t          _        n|j        t          _        t          t          j	        pt          |j                  dk              t          _        t          j	        r't          j        dk    rt          xj        ddgz  c_        dg|j        z   t(          _        t          j        dk    rt(          xj        dgz  c_        t          j        rdt(          j        v sJ t          j        rd	t(          j        v sJ t          t          j	                  p3t          j        p't          j        pd
t          j        v pdt          j        v t          _        t          j        r#t          j        st          xj        ddgz  c_        |j        pt          t          j	                  t          _        t          j        r"t          j        st          xj        dgz  c_        t          j        rt          j        sd|j        v sJ |j         D ]4}t          j        !                    |"                    d                     5d S )Nr   r$   __asyncify_state__asyncify_dataz--mvp-features   z--enable-reference-typesz--enable-threadsz--enable-memory64main__main_argc_argvz$exitJSz$handleExceptionz$stringToUTF8OnStackemscripten_stack_get_end,)#rH   rD   r   SIDE_MODULE DEFAULT_LIBRARY_FUNCS_TO_INCLUDEr>   
differenceall_exportssortedr:   WEAK_IMPORTSr   get_weak_importsWASM_EXPORTSboollenem_asm_constsHAVE_EM_ASMASYNCIFYfeaturesr   binaryen_featuresPTHREADSMEMORY64PROXY_TO_PTHREADSTANDALONE_WASMHAS_MAINMINIMAL_RUNTIMEmain_reads_paramsMAIN_READS_PARAMSSTACK_OVERFLOW_CHECKfunction_exportsjs_depsextendsplit)	wasm_filemetadatabase_metadatasymsdepss        r   update_settings_gluer|   e   s   8+,,,  G02H--4x7GGDt99 455D06tH- G{;IFFF 1)5H$0Hh2Vc(:P6Q6QUV6VWW( Eh/14402CDD !11H4EE(!#=">> <!;;;;; =("<<<<<8/00  |H4M  |QYQi  |msw  xM  nM  |  Qc  go  g|  Q|( Qx7 Q--)=O1PP--  (9WT(BV=W=W( J(@ J--2H1II--" C8+? C &)BBBBB F Fd-44TZZ__EEEEF Fr!   c                      fd} |d            |d            |d            |d           t           j        r |d           t           j        rt           j        r" |d           t           j        r |d           S )	Nc                 v    |          }|rd|  d| d|  d}nd|  d}                     d|  d|          d S )Nz	// Begin z	 hooks
  z

  // End z hooksz// No z<<< z >>>)replace)name	hook_codecodeforwarded_jsons     r   inject_code_hooksz2apply_static_code_hooks.<locals>.inject_code_hooks   sj    t$I (PdPPiPPDPPPii'4'''i<<)t)))955DDDr!   	ATMODULES	ATPRERUNSATINITSATPOSTCTORSATMAINS
ATPOSTRUNSATEXITS)r   rn   ro   EXIT_RUNTIME)r   r   r   s   `` r   apply_static_code_hooksr      s    6 6 6 6 6 6 K   K   IM""" !i   		! #X%6 #l### #	"""	+r!   Fc                    ddh}t          j        t          j        |          dd          g}t	          j        t          j        d          dz             }|t	          j        t          j        d	                    z  }|t          j        z  }| sG|t          j        z  }|t          j	        z  }|t	          j        t          j        d
                    z  }t          |          D ])}|                    t          j        |                     *d                    |          }t          j        |                    d                                                    }|S )NPRE_JS_FILESPOST_JS_FILES)	skip_keysTrV   	sort_keysindentzsrc/libz/lib*.jsz	src/*.mjszsrc/*.js
utf-8)jsondumpsr   external_dictglobr   r   JS_LIBRARIESr   r   r_   append	read_filerC   hashlibsha1encode	hexdigest)symbols_onlyskip_settingsfile_contentsfilesfilecontentcontent_hashs          r   generate_js_compiler_input_hashr      s7    "?3-:h4}MMMY]fghhhi-
)E(33j@
A
A%49U)+66777%8  %	 9	X""E	X##E	TYu+J77888EUmm 0 0d..////IIm$$'gnnW5566@@BB,	r!   c                    t           j                            d          }|rLt           j                            |          }t
                              d|z             t          |d          }t          j	        t          j                    dd          }t          j        |d           dg}| r|d	gz  }t          j        t!          d
          ||t"          j        |          S )NEMCC_STDERR_FILEz+logging stderr in js compiler phase into %swTrV   r   zsettings.json-z--symbols-onlyztools/compiler.mjs)inputstdoutstderr)osenvirongetpathabspathrA   infoopenr   r   r   r   r   write_intermediater
   run_js_toolr   
subprocessPIPE)r   stderr_filesettings_jsonargss       r   compile_javascriptr      s    
122+ )'//+..K
KK=KLLL{C((K *X355aPPP-
m_=== $ D		N+?@@ joVa
c 
c 
c cr!   c                     t          t          j        | z             }t          |t          j        z             }|t          _        |t          _        t          |          t          _        d S r   )rR   r   GLOBAL_BASE
STACK_SIZE
STACK_HIGH	STACK_LOW	HEAP_BASE)static_bump	stack_low
stack_highs      r   
set_memoryr      sR    8/+=>>)I(;;<<*"( (#J//(r!   c                     t          j        d          rXd | j        D             }t          t          j                  |z
  }t          |          D ]}t          j        dd| d           d S d S )N	undefinedc                 ,    h | ]}t          |          S r(   r   r   es     r   r0   z3report_missing_exports_wasm_only.<locals>.<setcomp>   s    EEE1|AEEEr!   undefined exported symbol: "")r   
is_enabledr^   r>   r   USER_EXPORTSr_   warning)rx   defined_symbolsmissingsymbols       r    report_missing_exports_wasm_onlyr      s    K(( QEE0DEEEO('((?:G// Q Q+'Of'O'O'OPPPP	Q QQ Qr!   c                    t          j        d          rpd t          j        D                                 |           }t          t          j                  |z
  }t          |          D ]}t          j        dd| d           t          j	        rd S t          j
        rd S t          j        r2t          j        t          j        z   }d|vrd|vrt          d           d S d S d S d S )Nr   c                 ,    h | ]}t          |          S r(   r   r   s     r   r0   z)report_missing_exports.<locals>.<setcomp>   s    FFF1|AFFFr!   r   r   rW   rX   z<entry symbol not defined (pass --no-entry to suppress): main)r   r   r   rb   r?   r>   r   r_   r   rm   IGNORE_MISSING_MAINEXPECT_MAINSIDE_MODULE_EXPORTSr   )
js_symbolsr   r   r   r^   s        r   report_missing_exportsr      s   K(( Q GF0EFFFLLZXXO('((?:G// Q Q+'Of'O'O'OPPPP   F!  F V'(*FFK[  %7{%J%J TUUUUUV V  %J%Jr!   c                     |dk     r|t          |           z  }d}t          |dz   |dz             D ]?}| |         | |         k    r|dz  }| |         | |         k    r|dz  }|dk    r||k    c S @dS )Nr   r$   F)rd   range)bodyopenIdxcloseIdxcountis        r   parentheses_matchr     s    \\D		H
%1hl++  aAw$w-qjee	aDN	"	"qje	!H}	r!   c                 h   |                                  } d }|| k    r| }t          |           dk    rH| d         dk    r<| d         dk    r0| dd                             dd                                           } t          |           dk    rE| d         dk    r9| d         dk    r-t          | dd          r| dd                                          } t          |           dk    rE| d         dk    r9| d         d	k    r-t          | dd          r| dd                                          } || k    | S )
Nr$   r   r   z\"{}())striprd   r   r   )r   origs     r   trim_asm_const_bodyr   !  s,   	$	$D
4yy1}}aCDHOO!B$Zs++1133d
4yy1}}aCDHOO@QRVXY[]@^@^O!B$Zd
4yy1}}aCDHOO@QRVXY[]@^@^O!B$Zd 	 
+r!   c                 X   t          j        |           }t          j        |           t          j                            ||          }t          j        |dz             5  t          j        	                    |          rt          j
        |          }n |            }t          j        ||           ddd           n# 1 swxY w Y   t          d t	          j        |          D                       |k    r/t          j        t          j        |  d                    5  g }t	          j        |          D ]k}|                    d          sTt          j                            ||          }|                    |t          j                            |          f           l|                    d            |d|          D ]H\  }}	t          j        |dz             5  t          j        |           ddd           n# 1 swxY w Y   I	 ddd           n# 1 swxY w Y   |S )a   This function implements a file cache which lives inside the main
  emscripten cache directory but uses a per-file lock rather than a
  cache-wide lock.

  The cache is pruned (by removing the oldest files) if it grows above
  a certain number of files.
  .lockNc                 <    g | ]}|                     d           |S )r   )endswith)r   fs     r   r*   z#get_cached_file.<locals>.<listcomp>E  s)    	A	A	AQZZ-@-@	A!	A	A	Ar!   c                     | d         S )Nr$   r(   rL   s    r   <lambda>z!get_cached_file.<locals>.<lambda>L  s
    qt r!   )key)r   get_pathr   safe_ensure_dirsr   r   rC   r   FileLockexistsr   
write_filerd   listdirr   r   getmtimesortdelete_file)
filetypefilename	generatorcache_limitroot
cache_filefile_contentr   r   _s
             r   get_cached_filer
  /  s    
	!	!$w||D(++*g-.. 1 1	w~~j!! 1_Z00ll Y[[lz<0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 		A	ARZ%%	A	A	ABB[PP		5>X*<*<*<==	>	> 
 
ez$ 1 1!zz'"" 	1gll4##!
,,27++A../
0
0
0jj^^j$$$+&  $!Qq7{++ 	 	

A


	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sJ    AC  CC$CH%H:HH

HH
HH#&H#c                      t           s$t          j        st          j        st          j        rt                      S t                      } t          d|  dt          d          S )N	js_outputz.jsi  )r  )	r   r   BOOTSTRAPPING_STRUCT_INFOr   FROZEN_CACHEr   r   r   r
  )r   s    r   compile_javascript_cachedr  U  se       h0  F4G  8K`  022,
 
&:&:&:<N\_	`	`	``r!   Tc           	         t          j        t          j                            |                    t
          _        |rt          | ||          }n-| |k    rt          j	        | |           t          | |dg           }t
          j        r!t
          j        dk    r|xj        dgz  c_        |rt          |||           t
          j        s|j        r|j                                        D ]\  }}|                    d          d                             d          }	|	r|	dk    rg }	n|	                    d          }	|j                            |          }
|
rBt-          |
j                  t-          |	          k    rt1          j        d	d
||	|
j                   t5          |          }t7          |          }t
          j        r|rvd                    d |D                       }t=          j        t@          j!        ddgz   |"                    d                    }|j#        rtI          d|j#         d           |rld                    |          }t=          j        t@          j!        ddgz   |"                    d                    }|j#        rtI          d|j#         d           |s+tK          |           tL          '                    d           d S t
          j(        D ]/}t          j)        |          st1          j        dd| d           0t
          j        rtU          j+        |           }tY          |j-                  }t]          |           tL          '                    dt
          j/        t
          j0        t
          j1                   t
          j2        dk    r|j3        dz   t
          _2        |j4        rt
          xj5        dgz  c_5        tm                      }d|v s
J d            |                    dd          \  }}to          j8        |          }|d         rt1          j        dd           |                    d           \  }}t
          j9        r0|d!z  }t
          j:        D ]}|t
          j;        vr	|d"| d#z  }|d$z  }ty          |d%                    d& |D             }|st
          j=        r|d'd(                    |          z   d)z   z  }|r|d                    |          dz   z  }|r|j>        }|j?        }n|j>        }|j?        }d* |D             }t
          j@        dk    rtU          jA        tT          jB        jC        gg           |d+<   tU          jA        g g           |d,<   tU          jA        tT          jB        jC        gg           |d-<   tU          jA        g g           |d.<   |g}|t          ||||d%         |d/                   z  }|E                    |           t          |d/         G                                          t
          _H        d0                    |          }t          ||          }t          jK        ||           |d1         |_L        |S )2NFrV   __memory_base32<::>r   z()voidrZ   z	em-js-i64zfusing 64-bit arguments in EM_JS function without WASM_BIGINT is not yet fully supported: `%s` (%s, %s)r   c                      g | ]\  }}d | dS )z
var tmp = ;r(   )r   r	  r   s      r   r*   zemscript.<locals>.<listcomp>  s(    EEE$!Q----EEEr!   z--checkr   r   )r   z1EM_ASM function validation failed (node returned r   z0EM_JS function validation failed (node returned z%emscript: skipping js glue generationzjs-compilerz'export name is not a valid JS symbol: "z7".  Use `Module` or `wasmExports` to access this symbolz,stack_low: %d, stack_high: %d, heap_base: %dr   r$   z$getWasmTableEntryz//FORWARDED_DATA:z>Did not receive forwarded data in pre output - process failed?warningsz"warnings in JS library compilationz// EMSCRIPTEN_END_FUNCSz$function checkIncomingModuleAPI() {
z  ignoredModuleProp('z');
}
librarySymbolsc                 "    g | ]\  }}|d |S ): r(   )r   r   values      r   r*   zemscript.<locals>.<listcomp>  s'    JJJeee,JJJr!   zvar ASM_CONSTS = {
  z,  
 z
};
c                 P    g | ]#}t          j        |d          j                  !|$S r   )r
   is_internal_globalr   r   s     r   r*   zemscript.<locals>.<listcomp>  s.    XXX63LQqTY3W3WX1XXXr!   asyncify_start_unwindasyncify_stop_unwindasyncify_start_rewindasyncify_stop_rewindnativeAliases libraryDefinitions)Mr	   escape_for_js_stringr   r   basenamer   WASM_BINARY_FILEfinalize_wasmshutilcopyget_metadataRELOCATABLErk   rD   r|   WASM_BIGINTem_js_funcsitemsrv   r   em_js_func_typesr   rd   paramsr   r   create_asm_constscreate_em_jsr[   rC   r   runr   NODE_JSr   
returncoder   r   rA   rB   EXPORTED_FUNCTIONSisidentifierr   parse_dylink_sectionrR   mem_sizer   r   r   r   INITIAL_TABLE
table_sizeinvoke_funcsr\   r  r   loads
ASSERTIONSALL_INCOMING_MODULE_JS_APIINCOMING_MODULE_JS_APIr   r:   rs   other_exportsrg   FuncTypeTypeI32create_moduler   listkeysALIASESr   r   r   library_definitions)in_wasmout_wasm
outfile_jsjs_symsfinalizery   rx   
em_js_funcrawc_sig	signature
asm_constsr/  validateprocr   
dylink_secr   outglueforwarded_datar   prepostsymasm_const_pairsrs   rC  partsfull_js_modules                                 r   emscriptrb  f  s    .B27CSCST\C]C]^^( :Wh88HH (k'8$$$GXub99H ,h/144*++  <8];;;		 	x("6 	x#/5577 x x
Cii"((..e !evooC  +//
;;i	 xs9+,,E

::K  *R  T^  `e  gp  gw  	x  	x  	x ***X&&+ _  `EE*EEEFFh^FNi-==X__U\E]E]^^^d	 `^DO^^^___ _;''h^FNi-==X__U\E]E]^^^d	 _]4?]]]^^^	 $X...
LL8999
F& O Oa'** O-  *NST  *N  *N  *N  O  O  O  
91'::Jz233K{
LL?ASU]Uhjrj|}}}
 ##)4q8h H--2F1GG--!###		#	#	#%e	#	#	##6::$:n--.J M'KLLLjj233)#t 22C2 2 2	H3	3	31s11115LC(89:::JJzJJJ/ P, P#hmmO&D&DDxOOC )499[!!D((C +$5!/MM0*MXXmXXX-!0;0DkFVFZE[]_0`0`,-/:/CB/K/K+,0;0DkFVFZE[]_0`0`,-/:/CB/K/K+,%%=#3]'(89>/;Z\ \ \%,,t.9>>@@AA(775>>.*>>JJ.:~...!/0D!E(	/r!   c                    t          j         |           }|r-t          j        d| ||           t          j        ||           t          r4t
                              dt          j        |j	                  z              |S )Nzwasm-emscripten-finalize)infileoutfiler   z
Metadata: )
r   r   run_binaryen_commandupdate_metadatar   rA   rB   pprintpformat__dict__)rd  re  modify_wasmr   rx   s        r   r,  r,    s    .v66( 	8 !"<)/*1'+- - - - $Wh777
 C
LLx/@ A AABBB	/r!   c           	      
   t          j        | d           g }d}d}t          j        rd}t          j        dk    sHt          j        s<t          j        s0t          j        s$t          j        st          j	        st          j
        rd}|                    d           t          j        r|                    d           t          j        rd}n9t          j        r|                    d           n|                    d           d}t          j        r|                    d           n:t          j        r|t          j                    z  }d}n|                    d	           t          j        r|                    d
           t          j        dk    r|                    d           d}t          j        r|                    d           t          j        dk    r|                    d           | |k    rt)          j        | |           t          j        r&t          j        | |dz   |           t          j        |dz   d           t          j        t2          j                            |          z   dz   }|r
|d|z   gz  }nt9          j                                        d          5 }t?          j         |tB          j"        #                    tI          |                    |#                    d          z              t8          j%        dd|z   | g}t9          j&        |           d d d            n# 1 swxY w Y   g }	t          j'        s|	dgz  }	|s|	dgz  }	|	st          j(        s8t          j        |d           t          j)        | |t          j(         |	           tU          ||||          }
t          j        rt          j        |dz   d           tW          t          j,                  -                    d t          j.        D                        -                    d t          j/        D                        |0                                D ]!}-                    d |D                        "d |
j1        D             }d |D             }fd |D             }t          j        s	d!|
j1        v s	d"|
j1        v rd#td          v rbd$t          j3        vrTti          j5        d%d&           d!|
j1        v r|
j1        6                    d!           n0|
j1        6                    d"           n|                    d$           t           j7        -                    |           t          j,        8                    |           |
S )'Nz	base.wasmFTrV   z-gz--bigintz--no-dyncallsz--dyncalls-i64z--no-legalize-javascript-ffiz--side-modulez--check-stack-overflowz--standalone-wasm   z--dwarfz.mapzbase_wasm.mapz--output-source-map-url=z.binr   z--add-sectionzsourceMappingURL=	producersr   z
strip.wasm)rB   sectionszpost_finalize.mapc              3   4   K   | ]}t          |          V  d S r   r   r   s     r   r    z finalize_wasm.<locals>.<genexpr>`  s(      MMa,q//MMMMMMr!   c              3   4   K   | ]}t          |          V  d S r   r   r   s     r   r    z finalize_wasm.<locals>.<genexpr>a  s(      NNa,q//NNNNNNr!   c              3   4   K   | ]}t          |          V  d S r   r   r   s     r   r    z finalize_wasm.<locals>.<genexpr>f  s(      ::LOO::::::r!   c                 :    g | ]}t          j        |          |S r(   )r
   is_user_exportr   s     r   r*   z!finalize_wasm.<locals>.<listcomp>l  s)    TTTa6;PQR;S;STTTTr!   c                 ,    g | ]}t          |          S r(   r   r   s     r   r*   z!finalize_wasm.<locals>.<listcomp>m  s    DDDAQDDDr!   c                     g | ]}|v|	S r(   r(   )r   r   expected_exportss     r   r*   z!finalize_wasm.<locals>.<listcomp>n  s$    SSSaBR9R9R9R9R9Rr!   rW   rX   r8  _mainzunused-mainz`main` is defined in the input files, but `_main` is not in `EXPORTED_FUNCTIONS`. Add it to this list if you want `main` to run.)9r   save_intermediater   WASM2JSDEBUG_LEVELASYNCIFY_ADDASYNCIFY_ADVISEASYNCIFY_ONLYASYNCIFY_REMOVEEMIT_SYMBOL_MAPEMIT_NAME_SECTIONr   r.  DYNCALLS	AUTODEBUGLEGALIZE_JS_FFIjs_legalization_pass_flagsr[   rr   rm   r*  r+  GENERATE_SOURCE_MAPemit_wasm_source_mapSOURCE_MAP_BASEr   r   r'  r
   get_temp_filesget_filer   write_binaryleb128ur   rd   LLVM_OBJCOPY
check_callEMIT_PRODUCERS_SECTIONGENERATE_DWARFr   r,  r>   r8  updateREQUIRED_EXPORTSEXPORT_IF_DEFINEDvaluesr^   r   r   r   r   removeuser_requested_exportsru   )rd  re  rO  r   rk  need_name_sectionbase_urlurl_filecmdstrip_sectionsrx   r{   unexpected_exportsrw  s                @r   r)  r)    s   
V[111	$ +  KQ("78;SW_Wmqy  rJ  NV  Nf  jr  jDKK KK
 	KK 
kk/""""
kk"###k 2 	KK
 2 h1333dkk
kk0111 !KK   "a''KK()))K %KK#$$$QKK	w
K   ! !&'F*:GDDDw/AAA'"'*:*:7*C*CCfLH 
)H455dd  ""++F33 x8!8??3x==99HOOG<T<TT	V 	V 	V""X- 	#               .		( ${m#N	 vhN ,82 ,w555N67h.E*E*, , , , '7K>>(! Fw/1DEEE455MM83LMMMMMMNN83MNNNNNN nn ; ;d::T::::::: UT8#7TTTDD1CDDDSSSS#5SSS		! )f0D&D&DHZ^f^rHrHr},,@U1U1U -  *l  m  m  m	8'	'	'##F++++##$67777(((
!(();<<<
$$%7888	/s   'A=L00L47L4c                 0   d}t           j        D ]S}d}d}|| j        v r6| j        |         }|d         rd|d         z   }d}|d         r|d         }|sd}|| d| d	| d
z  }Tt          d          }t          d          }t	          j        ||           t          j        dd          }|s(t          j	        d          }|st          d           |g}|d|dddd|gz   }	t          j        |	t                                 t	          j        |          S )Nzvar RuntimeExports = {};
z/** @type {{any}} */r$  snippet = docsz = nullz
RuntimeExports[''];
zjsdoc.jsz
jsdoc.d.tstscT)
missing_okz4tsc executable not found in node_modules or in $PATHz	--outFilez--skipLibCheckz--declarationz--emitDeclarationOnlyz	--allowJs)cwd)r   EXPORTED_RUNTIME_METHODSrK  r   r   r   r
   get_npm_cmdr*  whichr   r  r   r   )
rx   js_docr   r  r  
definitionjs_doc_filetsc_output_filer  r  s
             r   #create_tsd_exported_runtime_methodsr    sy    (&/ @ @d!DGx+++/5j	I	 *Y// 	F	 &!  	'
??$??7????FF
##+L))/;'''5T222# 
 
,u

C NLMMM%C{O&K	) 	)#
 	C^--....		)	))r!   c           
         d}t           j        r|t          |           z  }|dz  }| j                                        D ]\  }}t          |          }t           j        o|t           j        v }|s1g }t          |j	                  D ]-\  }}	|
                    d| dt          |	                      .|d| dd                    |           dz  }t          |j                  d	k    s
J d
            |j        r|t          |j        d                    z  }n|dz  }|dz  }|dz  }|d| z  }d}
t           j        r|
dz  }
|r|
dz  }
|d|
 dz  }t           j        rd}t           j        rd| d}|d| dz  }|S )Nz`// TypeScript bindings for emscripten-generated code.  Automatically generated at compile time.
zinterface WasmModule {
r	  r    r   r6   z): r$   zOne return type only supportedr   r  r  r  r   
WasmModulez & typeof RuntimeExportsz & EmbindModulezexport type MainModule = 
MainModulezPromise<>z?export default function MainModuleFactory (options?: unknown): )r   r  r  rs   r0  r   EXPORT_KEEPALIVEr8  	enumerater2  r   type_to_ts_typerC   rd   returns
MODULARIZEWASM_ASYNC_COMPILATION)rx   
embind_tsdrY  r   functypemangledshould_export	argumentsindextypeexport_interfacesreturn_types               r   
create_tsdr    s	   k#& 9.x888C	### 17799  ndH4  G-X'X=X2XM I 11 = =t;5;;OD$9$9;;<<<<333$))I..3333Cx  A%%%'G%%% 	 0 34466cc	Vmc5LCC,#	j		#"& 433 +**	;%6	;	;	;;# ^K& .-{---k][]]]]C	*r!   c                    i }| j                                         D ]\  }}t          |          }d}d}t          |          D ]}d| |v r|dz   }d                    d t          |          D                       }d|v r
d| d	| d
}	n	d| d| d
}	t
          j        r|t
          j        z  }|	||<   t          |                                          }|S )N   r   $r$   r6   c              3       K   | ]	}d | V  
dS )r  Nr(   )r   r   s     r   r    z$create_asm_consts.<locals>.<genexpr>  s(      33WWW333333r!   r  z	function(z) { z }r   z) => { )	re   r0  r   r   rC   r   r-  r   r_   )
rx   rU  rQ   constr   	max_arityarityr   r   funcs
             r   r3  r3    s   *+1133  kdEu%%DIE9  	QE		A9933eEll33333Dd .--D---dd(((t(((d #
h""dJtj&&(())*	r!   c                     t           j        j        dt           j        j        dt           j        j        dt           j        j        dt           j        j        dt           j        j        di|          S )Nr   jr   r.   r   vr   rE  rF  I64F32F64	EXTERNREFVOIDr  s    r   type_to_sigr    sZ     ####3
 	

 
r!   c                     t           j        j        dt           j        j        dt           j        j        dt           j        j        dt           j        j        dt           j        j        di|          S )NnumberBigIntr9   r  r  r  s    r   r  r    sX    ((((6
 	

 
r!   c                     d | j         D             }| j        r0t          | j                  dk    s
J d            | j        d         }nt          j        j        }t          |          d                    |          z   S )Nc                 ,    g | ]}t          |          S r(   )r  )r   params     r   r*   z$func_type_to_sig.<locals>.<listcomp>	  s     <<<uE""<<<r!   r$   zOne return type expected.r   r$  )r2  r  rd   r   rE  r  r  rC   )r  
parametersrets      r   func_type_to_sigr    s|    <<<<<*	\  t|!!!#>!!!
,q/CC


C	S		BGGJ//	//r!   c                 6   g }d}| j                                         D ]\  }}||v sJ |                    |d          \  }}|dd         }|dk    rg }n|                    d          }d |D             }d                    |          }d| d| d	| }t          j        rd
| }|                    |           t          j        st          j        dk    r@|| j	        v r7t          | j	        |                   }	| d|	 d}	|                    |	           |S )Nr  r$   r   r  rZ   c                 n    g | ]2}||                                 d                              dd          3S )r   *r$  )rv   r   )r   args     r   r*   z create_em_js.<locals>.<listcomp>  s9    IIIcSIR((b11IIIr!   z	function r   z) zexport rV   z.sig = '';)r/  r0  rv   rC   r   WASM_ESM_INTEGRATIONr   r:   rg   r1  r  )
rx   r/  	separatorr   rR  r   r   	arg_namesr  sigs
             r   r4  r4    s\   +)'--//  idC9a((JD$":Dv~~ddZZ__dIITIIII88ID,t,,d,,d,,D$  tdt  1Q 6 6DHD]<]<]X6t<==c&&c&&&c	r!   c                 x   g }t           j        r*|                    d           |                    d           t           j        rd| d<   t           j        rd| d<   t           j        rd| d<   t           j        r|g d	z  }t           j        r%t           j        d
k    r|                    d           |D ]}|| |<   d S )Nsegfault
alignfault
wasmMemorymemory	wasmTable__indirect_function_table___table_base32__table_base32)log_executionget_i32get_i64get_f32get_f64get_funcrefget_externref
get_anyref
get_exnrefset_i32set_i64set_f32set_f64set_funcrefset_externref
set_anyref
set_exnrefload_ptrload_val_i32load_val_i64load_val_f32load_val_f64	store_ptrstore_val_i32store_val_i64store_val_f32store_val_f64memory_grow_prememory_grow_postrV   __load_secondary_module)	r   	SAFE_HEAPr   IMPORTED_MEMORYr-  rk   r  SPLIT_MODULErg   )send_items_mapextra_sent_itemsr   s      r   add_standard_wasm_importsr  -  s     *J'''L)))  ,+N8 ;2=N./ ;):n%&     @  7x0A55 5666  aN1 r!   c                 
   d | j         D             }| j        D ]/}|| j        v rt          j        s|||<   t          |          ||<   0t          |           t          j        rt          | j	                  }t          |          }t          j        dk    r8|D ]4}t          j        |          rt          j        |          }||v r/|||<   5nRt          j        t          j        z   D ]8}||v r2t          j        |          rt          j        |          }||v r3|||<   9t          |                                          }t          j        rFg }|D ]\  }	}
|                    |
 d|	             d                    |          }d}|d| dz  }|S d}t          j        rd	}g }|D ]A\  }	}
|	|
k    r|                    | |	            %|                    | |	 d
|
            Bdd                    |          z   dz   S )Nc                     i | ]}||S r(   r(   )r   r   s     r   
<dictcomp>z"create_sending.<locals>.<dictcomp>j  s    AAA4D$AAAr!   r$    as ,
  z@// Export JS functions to the wasm module with demangled names.
zexport {
  z
};r$  z/** @export */
  r  z{
  z
})r>  rD   r/  r   r  r   r  r:   r>   rs   r
   is_c_symbolr)   r8  r=   r_   r0  r   rC   MAYBE_CLOSURE_COMPILER)rx   library_symbolsr  r   wasm_exportsr   	demangledsorted_itemselemskr  exportsprefixs                r   create_sendingr%  h  s   AA8+@AAA. 0 0dx### * $#t)$//nTN+++ (
 x011L/**Oq   ( (!a   	(3A66),&&&'.
#( *X-II ( (!F$6q$9$93A66),&&&'.
#,,..//," E " "1lla==Q==!!!!LLEQG+u++++GN&$ " "F
% ( (daAvvllf>a>>""""llf&a&&1&&''''	7<<&&	&	..r!   c                    t           j        sJ d}g }t          j        D ]}t	          j        |          rt	          j        |          }|| j        v r|                    | d|            N|t           j	        v r|                    |           r|dk    r#dt           j	        v r|                    d           |dd
                    |           dz  }|S )	Nzj// Re-export imported wasm functions to the JS entry point. These are user-facing and underscore mangled.
r  rW   rX   rx  	export { r6    };)r   r  r   r  r
   r  r)   r/  r   rb   rC   )rx   r#  r  expr  s        r   create_reexportsr*    s    		&&&&y',, % %c# %/44i	h*	*	*y33c334444---C    #59N#N#NG$$$	7$))L117777'	.r!   c                 l    t           j        st           j        sdS |                     d          rdS | dvS )NF)__asan_emscripten_stack__emscripten_stack_)__trapemscripten_get_sbrk_ptr)r   ro   r@  r-   r^  s    r   install_debug_wrapperr2    sF     X%8 5 	^^JKK 5 
9	99r!   c                 N    t           j        pt           j        o| t           j        v S r   )r   
EXPORT_ALLr  r8  r1  s    r   r  r    s     			b!:!ashFa?abr!   c           
         d|v }dg}t           j        rd |D             t          |                                           z   }g }|D ]G}t	          |          }	|	|k    r|                    | d|	            2|                    |           H|                                D ]\  }
}|                    | d|
             |                    d           |                    dd                    |          z              |                    dt           j         d	           |r|                    d
           |                    d           | D ]H}|	                    d          r1|
                    d          }|                    d| d| d           I|                    d           d                    |          S t           j        sdS d |                                 D             }|D ]\  }}||f||j        <   d |D             t          |                                          z   }	t           j        r|	D ]}t           j        st           j         ot!          |          ot           j        dk    }t#          j        |          s|sQd| }|r$t#          j        |          r
|d| dz  }nd| d}|                    | d| d           n.d}|                    d|                    |	           d           t           j        dk    r<d |	D             }|r.d                    |          }|                    d| d            i }t&                              t+          j        |                     |                                D ]@\  }}
|
|v sJ d!|
 d"            |                    |
g                               |           At           j        st           j         ot           j        dk    }|                    d#           t           j        rC|D ]@}t           j        r|	                    d$          r$|                    d%| d&| d           A|                                D ]\  }}t3          |          t4          j        k    }t	          |          }	|	}|r5|r3|	                    d          r|
                    d          }|d'| dz  }|r4t!          |	          r%t#          j        |	          r
|d|	 dz  }nd|	 d}nt#          j        |	          s||v r,||         D ]#}|d(| z  }|r|t           j        v r	|d| dz  }$|rDt;          |          r5t=          |j                  }|                    d| d)| d*| d+           ,|s|d,         j         t4          j!        j"        k    ro|d-         j#        sbt           j$        rd.| d/| d0| d}nd1| d2}t           j%        rd3| d4}nt           j&        rd5| d6}|                    d| d(| d           |                    d| d7| d8           |                    d           d                    |          S )9NdynCallsz!
// Imports from the Wasm binary.c                 (    g | ]}|d          j         S r  )r   r   s     r   r*   z$create_receiving.<locals>.<listcomp>  s    999a!	999r!   r  zimport {r  r  z
} from './r  z
function assignDynCalls() {z  // Construct dynCalls mappingdynCall_z  dynCalls['z'] = r  r   r   r$  c                 :    i | ]\  }}|t           j        k    ||S r(   )r   WASM_CALL_CTORS)r   r   r  s      r   r  z$create_receiving.<locals>.<dictcomp>  s+    eee94DHLdDdDdT3DdDdDdr!   c                 ,    g | ]}t          |          S r(   r   r   s     r   r*   z$create_receiving.<locals>.<listcomp>  s    ...\!__...r!   instancezvar z = Module['r  zModule['z = makeInvalidEarlyAccess('z');r  c                 0    g | ]}t          |          |S r(   )r  r   s     r   r*   z$create_receiving.<locals>.<listcomp>  s%    :::q)9)9:1:::r!   r6   r'  r(  zexpected alias target (z) to be exportedz*
function assignWasmExports(wasmExports) {	asyncify_z  assert(typeof wasmExports['z)'] != 'undefined', 'missing Wasm export: z = dynCalls['r  z = createExportWrapper('z', z);r   r$   ztypeof wasmExports['z'] == 'object' ? wasmExports['z'].value : wasmExports['zwasmExports['z'].valuezNumber(r   r   z) >>> 0z = wasmExports['z'];)'r   r  rH  rI  r   r   r0  rC   r(  r-   removeprefixDECLARE_ASM_MODULE_EXPORTSr   r@  r  ro   r  r	   r9  rA   rB   r   r   
setdefaultEMBIND_GEN_MODEr  r   rD  r  r2  rd   r2  kind
ExternTypeGLOBALmutableLEGACY_VM_SUPPORTrk   CAN_ADDRESS_2GB)rs   rC  r  aliasesgenerate_dyncall_assignment	receivingexported_symbolsr#  r^  r  aliastargetsig_strexportr   module_export
assignmentsepesm_exportsalias_inverse_mapdo_module_exportsis_functionnargsr  s                           r   create_receivingrY    s    *o =34)"  99=999DAQAVAVAXAX<Y<YYG  S!!g	C#,,7,,----s  - -vnn++E++,,,,Z   TGLL111222@8#<@@@AAA" 67778999! @ @#>>*%% 	@$$Z00'


>'>>>>>
?
?
?s99Y 
	, 2 fe(8(>(>(@(@eee'# * *lfd"D>GFK..g...gllnn1E1EE' 4  
K 
K*J(2J.J  IP]^aPbPb  Igogz  I  hIm)#.. } #<<j	 *',, 	*
-c---
-**)#)))**IIIIIJJJJ
K C2CHHW--222333J&&::g:::K 7IIk**k5K555666,,tz'""###MMOO 8 8jc5GNuNNN  ++2237777*J(2J.JqPXPcgqPq@AAA o o o		! cnn[&A&A  	msmmehmmmnnnn==?? $B $Bic4t** 44K3GJ" 0{ 0s~~j7Q7Q 0  ,,g/G////j ]733 		%g	.	. ,/G////

++++

)'22  
%c* 1 1&nFnn$
 	18+L!L!L
0f000
0* B,S11 B$+eQJQQQQQQQRRRR BT!W\[-C-JJJSWXYSZSbJ		# .nsnn#nngjnnn----		 #"%"""# #"E"""3J3353334444@J@@@@@AAAA3	9		r!   c                 d   g }|                     t          ||||                     t          | |          }t          j        r|                     |           nt          j        s(t          j        st          j        rPt          j        dk    r@t          j
        |d                                          }|                     d|z             n|                     d|z             t          j        dk    st          j        s|t          |           z  }n| j        r
J d            t          j        st          j        r"|                     t%          |                      t          j        r"|                     t'          |                      d |D             }d                    |          d	z   S )
Nr<  r  zM  var wasmImports;
  function assignWasmImports() {
    wasmImports = %s;
  }zvar wasmImports = %s;r   zGinvoke_ functions exported but exceptions and longjmp are both disabledc                     g | ]}||S r(   r(   )r   chunks     r   r*   z!create_module.<locals>.<listcomp>i  s    ///e/E///r!   z

r   )r   rY  r%  r   r  rj   WASM_WORKERSr  r  textwrapr   r   SUPPORT_LONGJMPDISABLE_EXCEPTION_CATCHINGcreate_invoke_wrappersr>  rk   rH  "create_pointer_conversion_wrappersr*  rC   )rx   rs   rC  r  rI  modulesendings          r   rG  rG  L  s   &-- !1=/SZ[[\\\8_55'" 7
MM' 7H1 7h6N 7S[SfjtStSt..4466gmm  
	     mm+g5666--X5X-
$X...FF$oo&oooo @(2 @
MM4X>>???" .
MM"8,,---//v///&	V		t	##r!   c                     g }| j         D ]>}|                    d          }|                    t          j        |                     ?|S )z;Asm.js-style exception handling: invoke wrapper generation.invoke_)r>  r?  r   r	   make_invoke)rx   invoke_wrappersinvoker  s       r   ra  ra  m  sT    /% = =f


i
(
(C?6s;;<<<<	r!   c                 |   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d0d1d2d'd3d4d5d4d6d7d8dd9dd:d;d<d'd=d>d?dd@dAdBddCddDd'i dEd4dFd'dGd'dHd4dIdJdKd'dLd;dMdNdOdPdQd1dRddSddTd4dUd1dVd'dWddXdddd"dYdZd7ddd'd'dd[dd\d]d^}t           j        D ]}|                    d_          \  }}|||<    t          D ]}d'||<   d`}t	                      }g }| j                                        D ]L\  }	}
|	                    da          rw|
j        db         t          j
        j        k    rW|	                    dc          dd         }de |D             }|                    dfd           dg                    |          }|||	<   |                    |	          }|rt           j        rF||vr,|t!          j        |          z  }|                    |           |                    |	           |db         dk    rE||vr,|t!          j        |          z  }|                    |           |                    |	           N|D ]}||         }|dh| di| dj| dkz  }|dlz  }|S )mNsbrkpP_emscripten_stack_allocppr0  pemscripten_builtin_mallocemscripten_builtin_callocpppwasmfs_create_node_backendmallocrealloccallocwebidl_mallocmemalignmemcmp_pppmemcpypppp__getTypeNamesetThrew_pfreewebidl_free_emscripten_stack_restorefflushrY   emscripten_stack_get_basepthread_selfemscripten_stack_get_current__errno_locationemscripten_builtin_memalignemscripten_builtin_freevprW   __PPrX   emscripten_stack_set_limits_pp__set_stack_limits__set_thread_state_p_____cxa_can_catch"__cxa_increment_exception_refcount"__cxa_decrement_exception_refcount__cxa_get_exception_ptr_wasmfs_write_file_wasmfs_mknod_p___wasmfs_symlink_wasmfs_chmod_p__wasmfs_lchmod_wasmfs_get_cwdp__wasmfs_identify_wasmfs_read_file_wasmfs_node_record_dirent_pp___dl_seterr!_emscripten_run_js_on_main_thread__p_p__emscripten_thread_exit_emscripten_thread_init_p______emscripten_thread_free_data_emscripten_dlsync_self_async_emscripten_proxy_dlsync_async"_emscripten_wasm_worker_initialize_wasmfs_rename_wasmfs_readlink_wasmfs_truncate_wasmfs_mmappp_____wasmfs_munmap_wasmfs_msync_wasmfs_read__pp_wasmfs_pread__pp__wasmfs_utime_wasmfs_rmdir_wasmfs_unlink_wasmfs_mkdir_wasmfs_open_wasmfs_mount_wasmfs_chdirr!  ppppp_pp_ppp__pp___pp_pppppppp)r  __get_exception_messagestbi_image_free	stbi_loadstbi_load_from_memorystrerroremscripten_proxy_finishemscripten_proxy_execute_queue_emval_coro_resume_emval_coro_reject!emscripten_main_runtime_thread_id._emscripten_set_offscreencanvas_size_on_threadfileno"_emscripten_run_callback_on_thread_emscripten_find_dylib:a&  
// Argument name here must shadow the `wasmExports` global so
// that it is recognised by metadce and minify-import-export-names
// passes.
function applySignatureConversions(wasmExports) {
  // First, make a copy of the incoming exports object
  wasmExports = Object.assign({}, wasmExports);
r8  r   r	  r   c                 "    g | ]}|d k    rd ndS )ro  r	  r(   )r   ts     r   r*   z6create_pointer_conversion_wrappers.<locals>.<listcomp>  s$    333!AHHSS#333r!   r$   r$  z
  wasmExports['z'] = makeWrapper_z(wasmExports['z']);z
  return wasmExports;
})r   SIGNATURE_CONVERSIONSrv   ASAN_C_HELPERSr>   rs   r0  r-   r2  r   rE  r  insertrC   r   rk   r	   make_wasm64_wrapperaddr   make_unsign_pointer_wrapper)rx   mappingfunctionr^  r  r   wrappers	sigs_seenwrap_functionsr   r  s              r   rb  rb  v  sK   T
DTtT sT  	T
  T !$T dT uT eT TT T fT fT TT T  D!T" 4#T T$  %T& d'T( )T*  +T, C-T. #C/T0 1T2 "53T4 t5T6 F7T8 9T: "5;T< %=T> '?T@ vATB )$CTD )$ET T TF tGTH &ITJ VKTL uMTN UOTP eQTR tSTT UTV WTX !&YTZ 5[T\ (]T^ t_T` yaTb #DcTd $TeTf %egT T Th )%iTj ekTl mTn oTp HqTr esTt VuTv FwTx WyTz V{T| T}T~ dT@ UATB FCTD UETF TGTH TIT TJ "%&#&*),6=*3%gT T T'l 0  h~~c""HCGCLL  aGAJJ( ee)."399;; & &fh
 $$ );{?O?S)S)SLLb!c33s333c	jjCGGCLLcgfo
++f

C
 
&		 	&i
o9#>>
>(
--


f%%%%q6S==i
oA#FF
F(
--


f%%% S Sa
!*CRARRRR1RRRRHH
**(	/r!   )F)TN)J__doc__r   r   r   loggingr   rh  r*  r   sysr^  toolsr   r   r   r   r   r   r	   r
   r   r   tools.settingsr   r   tools.sharedr   r   r   tools.toolchain_profilerr   tools.utilsr   r   r   r   r  	getLoggerrA   r  rH   rN   rR   r|   r   profiler   r   r   r   r   r   r   r
  r  rb  r,  r)  r  r  r3  r  r  r  r4  r  r%  r*  r2  r  rY  rG  ra  rb  r(   r!   r   <module>r     s&        				       



                         3 2 2 2 2 2 2 2 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7 7 }-- . . . 		<	(	(
 !/2#/ #/ #/L    4F 4F 4Fn  0    6 c c c c&0 0 0Q Q QV V V>    # # #L a a a G G G GT   "A A AH** ** **Z$ $ $N  .	
 	
 	

 
 
0 0 0  68 8 8v=/ =/ =/@  ": : :c c c~ ~ ~B$ $ $B  O O O O Or!   