
    eCi                       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
 d dlmZ ddlmZmZmZ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 ddlmZ ddlmZ dd	l m!Z!m"Z"m#Z#m$Z$m%Z%m Z m&Z& dd
lm'Z'm(Z(m)Z)m*Z* ddl+m,Z, ddlm-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5  ej6        d          Z7 ej8        d          Z9dgZ:ddgZ;dZ<g dZ=dZ>ddddddZ?h dZ@daAdjdZBd ZCd ZDd ZEd ZFd ZGd  ZH e,jI        d!          d"             ZJd# ZKd$ ZLd% ZMd& ZNd' ZOd( ZPd) ZQd* ZRd+ ZSd, ZTd- ZUd. ZVd/ ZWd0 ZXd1 ZYd2 ZZ e,j[                    d3             Z\d4 Z] e,jI        d5          d6             Z^ e,jI        d7          d8             Z_ e,jI        d          d9             Z` e,jI        d:          dkd;            Za e,jI        d<          d=             Zbd> Zc e,jI        d?          d@             Zd e,jI        dA          dB             ZedC Zf e,jI        dD          dE             ZgdF ZhdG ZidH Zj e,jI        dI          dJ             Zk e,jI        dK          dL             ZldM ZmdN ZndO ZodP ZpdQ ZqdR ZrdS ZsdT ZtdU Zu G dV dW          ZvdX ZwdY ZxdZ Zyd[ Zzd\ Z{d] Z|d^ Z}d_ Z~d` ZdldbZdc Z e,j[                    dd             Z e,jI        de          df             Zdg Zdh Zdi ZdS )m    N)PIPE)quote   )buildingcacheconfigdiagnostics
emscriptenextract_metadatafeature_matrixjs_manipulationportssharedsystem_libsutilswebassembly)OFormat)Feature)generate_minimal_runtime_html)DEPRECATED_SETTINGSEXPERIMENTAL_SETTINGSINCOMPATIBLE_SETTINGSJS_ONLY_SETTINGSdefault_settingsettingsuser_settings)DEBUGDYLIB_EXTENSIONS
do_replacein_temp)ToolchainProfiler)	WINDOWSdelete_fileexit_with_errorget_file_suffix	read_file	safe_copy
unsuffixedunsuffixed_basename
write_filelinkzsrc/shell.htmlz__asyncjs__*main__main_argc_argv)webwebviewworkernodeshell).wasm.html.js.mjsz.out )	z--start-groupz--end-groupz-(z-)--whole-archive--no-whole-archivez-whole-archivez-no-whole-archivez-rpathFT)z-bind_at_loadz-allow-shlib-undefinedz-rpath-linkz-version-scriptz-install_name>"   	vla-boundobject-sizeundefined-trapnullability-argpointer-overflownonnull-attributenullability-assignnullability-returnfloat-cast-overflowimplicit-conversionfloat-divide-by-zerointeger-divide-by-zerosigned-integer-overflowreturns-nonnull-attributeunsigned-integer-overflowimplicit-integer-truncationimplicit-integer-sign-change"implicit-signed-integer-truncation$implicit-unsigned-integer-truncation(implicit-integer-arithmetic-value-changeboolenumnullvptrshiftboundsreturnbuiltinintegerfunction	alignment	undefinednullabilityunreachablejsc                     t           sd S t          s t                              d|  d           d S t	          j        t          |  d|            d S )Nz(not saving intermediate z because not generating JS).)r   final_jsloggerdebugr   save_intermediate)namesuffixs     5/home/ngoprek/emsdk/upstream/emscripten/tools/link.pyrb   rb      sa    	 
F	 
LLNTNNNOOO
F
X$'9'9'9'9:::::    c                 f    t           sd S t          |            t          j        || dz              d S )Nr3   )r   rb   r   )rc   wasm_binarys     re   save_intermediate_with_wasmri      s:    	 
FD
[$.99999rf   c                 |    t          j        |           }t          j        |          }|                    d          S )Nascii)r   read_binarybase64	b64encodedecode)filenamedatab64s      re   base64_encoders      s4    		8	$	$$#	G		rf   c                 6    t           j        }| |dz
  z   |z  |z  S )Nr   )r   WASM_PAGE_SIZE)address	page_sizes     re   align_to_wasm_page_boundaryrx      s#    ()i!m$
2i	??rf   c                  ^    t           j        rdS t           j        dk    pt           j        dk    S )NF   r   )r   
ASSERTIONS	OPT_LEVELSHRINK_LEVEL rf   re   will_metadcer      s/      5		q	 	>H$9Q$>>rf   c                  v   t           j         pdt           j        v } t           j        r+t           j        rt           j                            d           t	          d t           j        D                       r7t          dt           j         dd                    t                                t           j         pdt           j        v t           _        t           j         pdt           j        v t           _	        t           j         pdt           j        v t           _
        t           j         pd	t           j        v t           _        t           j         pdt           j        v t           _        t           j
        sNd
t          v r/t           j        t          j        k    rt#          j        dd           t          j        t           _        t           j        sg| sgt           j	        s]dD ]\}d| d}|t          v r1t           |         t          j        k    rt#          j        dd|           t          j        t           |<   Wd S d S d S d S )Nr0   c              3   ,   K   | ]}|t           v|V  d S N)VALID_ENVIRONMENTS.0xs     re   	<genexpr>z-setup_environment_settings.<locals>.<genexpr>   s-      HHqA5G,G,G,G,G,G,GHHrf   z0Invalid environment specified in "ENVIRONMENT": z. Should be one of: ,r.   r/   r1   r2   MIN_NODE_VERSIONunused-command-line-argumentzCignoring MIN_NODE_VERSION because `node` environment is not enabled)FIREFOXSAFARICHROMEMIN__VERSIONzNignoring %s because `web`, `worker` and `webview` environments are not enabled)r   ENVIRONMENTSHARED_MEMORYappendanyr$   joinr   ENVIRONMENT_MAY_BE_WEBENVIRONMENT_MAY_BE_WEBVIEWENVIRONMENT_MAY_BE_NODEENVIRONMENT_MAY_BE_SHELLENVIRONMENT_MAY_BE_WORKERr   r   r   UNSUPPORTEDr	   warning)maybe_web_workerbrowserkeys      re   setup_environment_settingsr      sQ    "--QX=Q1Q * 4 *))) 	HHH(HHHHH Q  PxG[  P  Pqtqyqy  {M  rN  rN  P  P  Q  Q  Q(0(<$<$]I]@](!,4,@(@(eIQYQeDe(%)1)=%=%_8K_A_("*2*>&>&a'XMaBa(#+3+?'?'c8xOcCc($		) ;]**x/HNLf/f/f8:  A  A  A . :H

) 1-= 1Ad 12 1 1$7$$$c			(3->3M"M"M:  =M  OR  	S  	S  	S$0hsmm1 1 1 1 1 11 1rf   c                  T    t          j        d          } t          j        |           S )a  Runs the js compiler to generate a list of all symbols available in the JS
  libraries.  This must be done separately for each linker invocation since the
  list of symbols depends on what settings are used.
  TODO(sbc): Find a way to optimize this.  Potentially we could add a super-set
  mode of the js compiler that would generate a list of all possible symbols
  that could be checked in.
  Tsymbols_only)r
   compile_javascriptjsonloads)outputs    re   generate_js_sym_infor      s'     (d;;;&	F		rf   zJS symbol generationc                      t           st          j        st          j        rt                      S t          j        d          } d }t          j        d|  d|d          }t          j
        |          S )NTr   c                  L    t                      } t          j        | dd          S )N)r   :   )
separatorsindent)r   r   dumps)library_symss    re   generate_jsonz&get_js_sym_info.<locals>.generate_json   s$    '))L:lz!DDDDrf   symbol_listsz.jsoni  )cache_limit)r   r   BOOTSTRAPPING_STRUCT_INFOr   FROZEN_CACHEr   r
   generate_js_compiler_input_hashget_cached_filer   r   )content_hashr   file_contents      re   get_js_sym_infor      s      "h0 "F4G "!!!;NNN,E E E +N|<R<R<RTaorsss,	L	!	!!rf   c                 x    fd}g }d}| D ],}|rd} ||          \  }}|r|                     |           -|S )Nc                 `   r]t                                           D ]A\  }}|                     |d|z   f          r"t          j        dd|            |od| v}d|fc S BdS |                     d          r	| t
          v rdS |                     d          rdS t          j        dd|            dS )	N-	linkflagsz&ignoring unsupported linker flag: `%s`=F)TF)-l-L)FF)UNSUPPORTED_LLD_FLAGSitems
startswithr	   r   SUPPORTED_LINKER_FLAGS)fflag	takes_arg	skip_next	using_llds       re   is_supportedz'filter_link_flags.<locals>.is_supported   s     288:: " "/$	<<sTz*++ 	"

k+SUV
W
W
W  0CqL)	!
!
!
!	" [\\# !'="="={ 
l	#	# |+'OQRSSS\rf   F)r   )flagsr   r   resultsr   r   keeps    `     re   filter_link_flagsr      sx        , ')  a i"l1ooOD) nnQ	.rf   c                 @    t           r|                     dd          } | S )Nz

)r"   replace)texts    re   fix_windows_newlinesr     s"     &<<%%D	+rf   c                    g }| D ]e}t          |          }|                    d          r*|                    t          j        |d                     P|                    |           fd                    |          }t          |          S )Nz#preprocess
Texpand_macrosr   )r&   r   r   r   read_and_preprocessr   r   )filescontentsr   contents       re   read_js_filesr     s    (  allG/** ooh21DIIIJJJJoogYYx  (	h	'	''rf   c                  "    t           j        dk    S )Nr   )r   r|   r~   rf   re   should_run_binaryen_optimizerr   *  s     
	q	  rf   c                  x   g } t           j        ddggt           j        ddggt           j        dddggg}|D ]\  }}}t	          j        |          sjt                              d|j         d	           |D ]/}|t          j
        v rt          j
                            |           0|                     |           | S )
Nz--signext-loweringz--enable-sign-extz#--llvm-nontrapping-fptoint-loweringz!--enable-nontrapping-float-to-intz --llvm-memory-copy-fill-loweringz--enable-bulk-memoryz--enable-bulk-memory-optz	lowering z3 feature due to incompatible target browser engines)r   SIGN_EXTNON_TRAPPING_FPTOINTBULK_MEMORYr   caniuser`   ra   rc   r   binaryen_featuresremover   )passesfeaturesfeaturelowering_flagfeature_flagsr   s         re   get_binaryen_lowering_passesr   3  s    & +.A-BC!#HKnJop<?UWq>rs( 08 # #+g}m!'** #ll`w|```aaa / /! ***

$
+
+A
.
.
.mmM"""	-rf   c                 4   t                      }t                      }t          j        r|dgz  }|rm|dgz  }|dgz  }t          j        r|dgz  }|t          j        t          j        t          j                  gz  }t          j	        dk    rt          j
        s|dgz  }| j        r|dgz  }t          j        r:|dgz  }|d	gz  }|d
gz  }t          j        r|dgz  }|t          j                    z  }t          j        r|dgz  }t          j        dk    rq|dgz  }t          j        r|dgz  }nt          j        r|dgz  }t          j        r|dgz  }t          j        r|dgz  }t          j        r|dgz  }t          j        r|dgz  }|dd                    t          j                  z  gz  }d }t          j        r; |t          j                   |dd                    t          j                  z  gz  }t          j        r; |t          j                   |dd                    t          j                  z  gz  }t          j        r; |t          j                   |dd                    t          j                  z  gz  }t          j        dk    r|ddgz  }t          j        r|dgz  }|rt          j        s|dgz  }|r|d gz  }t          j        r.t          j                            d          }|d! |D             z  }tA                      r|d"gz  }|S )#Nz--safe-heapz--strip-target-featuresz--post-emscriptenz&--pass-arg=post-emscripten-side-modulei   z--low-memory-unusedz--fast-mathz--instrument-localsz--log-executionz--instrument-memoryz--legalize-js-interfacez--fpcast-emur   z
--asyncifyz"--pass-arg=asyncify-export-globalsz"--pass-arg=asyncify-import-globalsz--pass-arg=asyncify-assertsz--pass-arg=asyncify-verbosez#--pass-arg=asyncify-ignore-indirectz%--pass-arg=asyncify-propagate-addlistz--pass-arg=asyncify-imports@%sr   c                 x   | D ]}|                     d          |                     d          k    rt                              d           t                              d|z              t                              d           t                              d           t                              d            d S d S )N()zMemcc: ASYNCIFY list contains an item without balanced parentheses ("(", ")"):z   zLThis may indicate improper escaping that led to splitting inside your names.zRTry using a response file. e.g: -sASYNCIFY_ONLY=@funcs.txt. The format is a simplez!text file, one line per function.)countr`   r   )r   items     re   check_human_readable_listz6get_binaryen_passes.<locals>.check_human_readable_list  s      $::c??djjoo--
..h
i
i
i
..
&
&
&
..g
h
h
h
..m
n
n
n
..<
=
=
=
%% . rf   z!--pass-arg=asyncify-removelist@%sz--pass-arg=asyncify-addlist@%sz--pass-arg=asyncify-onlylist@%sr   --memory64-lowering--table64-loweringz--ignore-implicit-trapsz--zero-filled-memoryz/--pass-arg=directize-initial-contents-immutablec                 8    g | ]}||d          dk    rd|z   n|S )r   r   z--r~   )r   ps     re   
<listcomp>z'get_binaryen_passes.<locals>.<listcomp>  s1    EEEA1EQqTS[[qaEEErf   z--no-stack-ir)!r   r   r   	SAFE_HEAPSIDE_MODULEr   opt_level_to_strr|   r}   GLOBAL_BASESTACK_FIRST	fast_math	AUTODEBUGLEGALIZE_JS_FFIjs_legalization_pass_flagsEMULATE_FUNCTION_POINTER_CASTSASYNCIFYMAIN_MODULERELOCATABLEr{   ASYNCIFY_ADVISEASYNCIFY_IGNORE_INDIRECTASYNCIFY_PROPAGATE_ADDr   ASYNCIFY_IMPORTSASYNCIFY_REMOVEASYNCIFY_ADDASYNCIFY_ONLYMEMORY64BINARYEN_IGNORE_IMPLICIT_TRAPSBINARYEN_EXTRA_PASSESsplitr   )optionsr   
optimizingr   extrass        re   get_binaryen_passesr  Q  s   '))&,..*  
}oF ( ())F
"##F ;9::f
x();X=RSSTTF t##H,@#&''f 
}oF 6
$%%F
 !!F
$%%F 6*++f3555f,  ~F!
|nF 7566ff		 7566f 0.//f 0.//f( 8677f& :899f
/#((8;T2U2UUVVF    [ 89994sxx@X7Y7YYZZf U 56661CHHX=R4S4SSTTf W 67772SXXh>T5U5UUVVf!
$&:;;F, *
())F  ', '
%&&F  B
@AAF# F +11#66F
EEEEEEF ^^  
F	-rf   c                    t          |           }t          j        }t          |          dk    s%t          j                            |d                   sdt          j        |          z   }nt          j        |          }t          
                    d|z             t          | d          5 }|                    d|z             |                    |           d d d            n# 1 swxY w Y   	 t	          j        | t          j        t	          j        |           j                  t          j        z             d S # t$          $ r Y d S w xY w)Nr   r   z/usr/bin/env -S z"adding `#!` to JavaScript file: %swz#!%s
)r&   r   NODE_JSlenospathisabsshlexr   r`   ra   openwritechmodstatS_IMODEst_modeS_IXUSROSError)scriptsrccmdr   s       re   make_js_executabler&    sX   &##XX\\s1v..\ uz#
.CC
*S//C,,3c9:::FC AGGHsNGGCLLL              	HVT\"'&//"9::T\IJJJJJ	 	 	 	DD	s%   -.C''C+.C+3AE   
EEc                     t          j        | | dz              dg}|j        r|dgz  }t          j        d| dz   | |           d S )Nz.origz--instrument-gz
wasm-split)outfileargs)r  r   requested_debugr   run_binaryen_command)	wasm_filer  r*  s      re   do_split_moduler.    s]    *Y	G+,,,
	$ TFND
i'.A9[_``````rf   c                  "    t           j        rdndS )Nz.worker.mjsz
.worker.js)r   
EXPORT_ES6r~   rf   re   get_worker_js_suffixr1    s    "-	?<?rf   c                     t           j        st           j        rt          j        dd           t           j        r!t           j        st          j        dd           t          dt           j                   t           xj	        ddgz  c_	        t           j        rt           xj	        g dz  c_	        t           xj
        g d	z  c_
        t           j        r!t          j                            d
           d S d S )Nexperimentalz*dynamic linking + pthreads is experimentalzpthreads-mem-growthzr-pthread + ALLOW_MEMORY_GROWTH may run non-wasm code slowly, see https://github.com/WebAssembly/design/issues/1271DEFAULT_PTHREAD_STACK_SIZE_emscripten_thread_free_data_emscripten_thread_crashed)_emscripten_dlsync_self_emscripten_dlsync_self_async_emscripten_proxy_dlsync_emscripten_proxy_dlsync_async__dl_seterr)z$PThreadz$establishStackSpacez$invokeEntryPointexit)r   r  r  r	   r   ALLOW_MEMORY_GROWTHGROWABLE_ARRAYBUFFERSr   
STACK_SIZEREQUIRED_EXPORTS DEFAULT_LIBRARY_FUNCS_TO_INCLUDEMINIMAL_RUNTIMEr   user_requested_exportsaddr~   rf   re   setup_pthreadsrE    s#    VX1 V(TUUU! e(*H e-  0d  e  e  e.0CDDD "   
   " " "  ++ 0 0 0 ++  0#''/////0 0rf   c                     dt           v } t          j        r| rt          d           dt          _        | s;t          j        dk    }dt           v pdt           v pdt           v }|s|rdt          _        t          j        dk    r t          j        dk    rt          dd           d	 }t          j        dk    r |d           t          j        dk    rO |d           t          j        t          j        k     r*t          d
t          j         dt          j         d            |d           t          j        dk    r |d           d S d S )NINITIAL_HEAPzzINITIAL_HEAP is currently not compatible with IMPORTED_MEMORY (which is enabled indirectly via SHARED_MEMORY, RELOCATABLE)MAXIMUM_MEMORYWASM_MEM_MAXBINARYEN_MEM_MAXINITIAL_MEMORYi   c                     t           |          t          j        z  dk    rt          |  dt           |                      t           |          dk    rt          |  d           d S d S )Nr   z: must be a multiple of WebAssembly page size (64KiB), was l          zl must be smaller than 2^53 bytes due to JS Numbers (doubles) being used to hold pointer addresses in JS side)r   r   ru   r$   )settings    re   check_memory_settingz0set_initial_memory.<locals>.check_memory_setting%  s    ;55::oo\del\moopppE!!  O  O  O  P  P  P  P  P "!rf   z3INITIAL_MEMORY must be larger than STACK_SIZE, was z (STACK_SIZE=r   MEMORY_GROWTH_LINEAR_STEP)	r   r   IMPORTED_MEMORYr$   rG  rL  r   r?  rP  )user_specified_initial_heapuser_specified_initialuser_specified_maximumrO  s       re   set_initial_memoryrU  
  s    .- ?  " T  S  T  T  TH	$ 	! &4:->  I.TaBa  Iew  |I  fI !!7 ! h b  X%<%B%B$&6777P P P b  ((("")***!444  IHLc  I  Irz  sF  I  I  I  J  J  J'((('2--455555 .-rf   c                  ,   t           j        dk    } t           j        s6dt          v rt	          j        dd           | rt           j        t           _        dt          vrt           j        rKt          t           j        dk    ot           j        dk    | ot           j        dk    g          rdt           _        | r0t           j        t           j        k    rt           j        t           _        | r+t           j        t           j        k     rt          d           d S d S d S )NrH  rI  r   z:MAXIMUM_MEMORY is only meaningful with ALLOW_MEMORY_GROWTH                z1MAXIMUM_MEMORY cannot be less than INITIAL_MEMORY)
r   rL  r=  r   r	   r   rI  r   rG  r$   )initial_memory_knowns    re   set_max_memoryrZ  =  s   !0B6		% 8=((8:vwww 8 ( 7h ]**# 9	h#r)]h.CG].]"Wx'>AW'WY 
Z 
Z 9"8  8 7(:Q Q Q ( 7h  Ih58OOOGHHHHHI IOOrf   c                     t           j        dk    rt           xj        | z  c_        t           j        dk    rt           xj        | z  c_        d S d S )NrH  )r   rG  rL  )deltas    re   inc_initial_memoryr]  X  sT    b  U"""u$ #"rf   c                  H   t           j        t           j        t           j        t           j        d} t
          j        r| D ]}t          |d           |                                 D ]<\  }}t
          |         dk    r&t
          |         |k     rt          | d| d           =d S )N)MIN_FIREFOX_VERSIONMIN_CHROME_VERSIONMIN_SAFARI_VERSIONr   r   z older than z is not supported)
r   OLDEST_SUPPORTED_FIREFOXOLDEST_SUPPORTED_CHROMEOLDEST_SUPPORTED_SAFARIOLDEST_SUPPORTED_NODEr   LEGACY_VM_SUPPORTr   r   r$   )min_version_settingsr   oldests      re   check_browser_versionsri  `  s     *B(@(@&<	   #  c1)//11 E Ekc6}hsmf44CC&CCCDDDE Erf   c                     t          j        d|           } t          j                            |           sJ t
          j                            |            d S )Nzsrc/lib)r   path_from_rootr  r  existsr   JS_LIBRARIESr   )libs    re   add_system_js_libro  t  sK    Y,,#			
s#####rf   c                     t          j                    D ])\  } }| t          v rt          j        d|  d| d           *t          j                    D ]/\  }}t          t          |          rt          j        d|           0t          D ]\  }}}|	                    d          }|r
|dd          }t          t          |          }|r| }t          t          |          r*|r(| d| }|r|dz  }|r	|d	| d
z  }t          |           d S )N
deprecatedz is deprecated (zC). Please open a bug if you have a continuing need for this settingr3  NO_rz   z is not compatible with z=0 (r   )r   r   r   r	   r   r   getattrr   r   r   r$   )sreasonrc   msgabinvert_bb_vals           re   check_settingsr|  z  ss   &,.. K KiaM,1  )J  )Jf  )J  )J  )J  K  K  K(.00 / /idCx /.#...+  laF||E""H 
ABB%aHa  E iex  --!--c	 t	 ~F~~~c rf   c                 ^   | j         sJ t          j        rt          d           t          xj        g dz  c_        d| j         v s	d| j         v r6t          j        s*t          d           t          j        rt          d           | j         t          z  r | j	        rdt          _
        ndt          _
        d| j         v rdt          _        t          dd           d| j         v rdt          _        t          dd           t          j
        sdt          _
        t          xj        t          j        z  c_        t          j        r+t          j        st          j                            d	           t          j        d
k    rt+          j        dd           dt.          v rt          d           t          j        }t          j        st          j        d
k    rt          j        }|dz  dz  }t5          t7          |                    }|dz  }|t          _        t          j        d
k    r;t          j        r#t          xj        t7          |          z  c_        n|t          _        t          j        rt          d           t          j        rt          d           t          j        rdt          _         d S d S )Nz@WASM_WORKERS is not currently compatible with `-fsanitize` tools)
malloccallocreallocmemalignfreeemscripten_builtin_mallocemscripten_builtin_callocemscripten_builtin_reallocemscripten_builtin_memalignemscripten_builtin_freeleakrv   i   r   r   EXIT_RUNTIMEz__asan_*rH  emcczCASAN_SHADOW_SIZE is ignored and will be removed in a future releaser   z(ASan does not support custom GLOBAL_BASE      z!ASan does not work with SAFE_HEAPz$MEMORY64 does not yet work with ASAN)!sanitizer   WASM_WORKERSr$   r@  r=  r]  PTHREADSUBSAN_SANITIZERSsanitize_minimal_runtimeUBSAN_RUNTIMEUSE_LSANr   USE_ASANr
   ASAN_C_HELPERSr  r
  r  r   ASAN_SHADOW_SIZEr	   r   r   rI  rL  intrx   r   r   r  GENERATE_SOURCE_MAPLOAD_SOURCE_MAP)r  user_mem	total_memshadow_sizes       re   setup_sanitizersr    s   		 XVWWW            I1A$A$A8Kg$A '((( +)***(( !' ! h hwHNA&&&'"""HNA&&&! ! h!:: 
2!7 
2 %%j111 B&&&"ghhh%%@AAA &H' )H,Cr,I,I(h 1q I /	::;;I q.K 'H "$$		% ,#>{#K#KK"+ ; 9::: ><===! ! H! !rf   c                 B   g }|D ]}|                     d          rYt          D ]P}t          d|dd         z   |z   | j                  }|r)t	          j        |          r|                    |           Qpt	          j        |          r|                    |           |S )zvFind all the Wasm dynanamic libraries specified on the command line,
  either via `-lfoo` or via `libfoo.so` directly.r   rn  r   N)r   r   find_librarylib_dirsr   is_wasm_dylibr   )r  linker_argsdylibsargextr  s         re   
get_dylibsr    s     &  c
~~d !  #ECGOc173CDD 	H*400 	
--


 
		$	$ mmC	-rf   linker_setupc                 N    t                       t          |           t          j        st          j        rt          dd            j        r,t          j        s t          dd           t          dd           t          j        sDt           |           _	        t          j        s#t          j        s j	        rt          dd           |t                     z  }t          j        st          j                     t          j                            d          pd	 j        v pd
 j        v }|r:dt          _        dt          _        d _        t          j        rt+          d           t          j        dk    rt          dd            j        r j                            t5          j        d                      j                            t5          j        d                     t          j        rt+          d           t=          j        d          dk    rt+          d           dt          _        t          xj        dgz  c_         j         r, j                            t5          j        d                     t          dtC          t          j"        pwt          j#        pkt          j$        p_t          j%        pSt          j&        pGt          j'        p;t          j(        p/t          j)        p#t          j*        pt          j+        pt          j,                              j-        rdt          _.        t          j/        rb j                            t5          j        d                     t          j0                            d           t          xj        ddgz  c_         j1        r2t          j2        r&tf          4                    d           dt          _2         j5        rZ j5        }t          j6        7                    |          }|r1t          j6        8                    |          st+          d|z             n|rd}nt          j        rd}nd}ts          |          }t          j:        st          j;        st          j<        dk    rt          d d            j=        s~ j>        s j        rpt          j        rdt          j        sX|t~          v rt          j4        d!d"|z             n6 j        rdt<          vrt          j4        d!d#           t          jB         _=         j=        sqt          j        s|d$k    rt          jC         _=        nM|d%k    rt          jD         _=        n5|d&k    st          jE        rt          jF         _=        nt          jG         _=         j=        t          jC        t          jB        fv r+t          D ]#}|t<          v rt          j4        d'| d(           $ j=        t          jF        k    rt          d d            j=        jI        t          _J        t          jK        rt          jL        rt+          d)           t          j:        rt          d*d           t          jE        st+          d+           t          j<        dk    rt+          d,           t          jM        rt+          d-           t          jN        rt+          d.           t          jO        rt+          d/           t          jP        st+          d0           t          jC        st+          d1           t          jQ        rt+          d2           t          j<        r+t          j<        d3vrt+          d4t          j<         d5            fd6}t          jN        dk    rdt          _R        t          j<        dk    rut          j4        d7d8           t          jE        st+          d9           t          j        rt+          d:            jS        st           jU                  rt+          d;           t          j        r#t           jU                  rt+          d<            j=        t          jC        t          jV        fv r jW        rt+          d=           |}nOt          jX        st          jC        dk    r#t          t5          jZ        |d$                    }nt          |d$          }t          j\        d>vrt+          d?           t          jC        sdt          _C        dt          _L        t          jC        dk    rdt          _L        t          jL        rYt=          j        d@          rt          j]        rt+          dA           dt          _]        t          j_        t          ja                    j=        t          jC        k    rt          j        sdt          _b        t          jc        rt          xjd        dBgz  c_d        t          je        r4dt          _b        dt          _]        t          jf        st          dCd            jg        rdt          _h        nt          jb        r)dDt          ji        v rtf          j                    dE           ndFt<          v rZdDt          jk        v r?t          ji        l                    dD           t          jm                            dG           n,dt          _h        nt          jm                            dG           t          jb        rzdt<          v rt+          dH           t          jh        t          _        dt          _n        t          dId           dJt<          v rt+          dK           dLt<          v rt+          dM           t          jp        q                    t          ji                   dDt          ji        v sdGt          jm        v r t          jm                            dN           n/t          jr        r#t          jb        st          xjm        dGdNgz  c_m        t          jr        rdOt<          v rt          js        st+          dP           t          jf        st          jt        sdt          _s        t          je        s@ ju        s9 jv        s2t          dQt          t          jr        t          jx                             t=          j        dR          dk    rt          dSd           t          j        r t          dTd           t          dUd           t          jE        r0t          j<        s$d*t<          v rt+          dV           dt          _<         jy        s9t          j        r!t5          j        dW          x _y         _y        nt           _y         j=        t          jD        k    r/ jy        t          k    rt          jd                            dX           t          j        rt          j<        st          dYd           t          dZd           t          d[d           t          d\d           t          j        dk    r t          dTd           t          d]d            |             t          j{        D ](}	|	t          j|        vrt          j4        d'd^|	            )t          j                            d_           d`t          j{        v rt          j                            da           t          j}        dk    r(t          j~        st          j        st          dbd           t          j                            dc          rdt          _        t          j        rt          j        dk    rt+          dd           t          jC        dk    rt          jX        rt+          de           t          j        r$ j=        t          jD        k    rt+          df           t          j        rt          j        st+          dg           t          j        rt          j        st+          dh           t          j        r$ j=        t          jD        k    rt+          df            j        rdt          _        dit<          v rt          j        djvrt+          dkt          j        z             t          j        j        dl         }
t          j        dmk    rd|
dm<   d|
dn<   n5t          j        dok    rdp|
dm<   d|
dn<   nt          j        dqk    r
dp|
dm<   dp|
dn<   t          j        st          j        s[t          jR        rt          xj        drgz  c_        t          jr        rt          xj        dsgz  c_        t          xj        dtdugz  c_        t          xj        dvgz  c_        t          j        st          jP        r#t          j<        st          xj        dwdxgz  c_        t          jQ        st          j        rt          xj        dygz  c_        t          j        rbt          j        rJ t          j        dk    rdt          _        t          xj        dzgz  c_        t          jM        st          xj0        d{gz  c_0        t          j        dk    st          j        dk    rdt          _        t          j        r!t          jk        rt          j4        d'd|           t          j        rt          xj        d}d~gz  c_        t          j        rt          xj        dgz  c_        t          j        st          jM        r#t          xj        g dz  c_        dt          _        t          j        s$t          j        st          j\        st          j.        rt          xj0        dgz  c_0        t          j.        rt          xj0        g dz  c_0        t%          t          j                  t          _        t%          t          j                  t          _        t%          t          j                  t          _        t          j        rdt          _R         j=        t          jB        k    r(|dv r$t          j        st          j4        d!d|z             t          jK        rt          xj        g dz  c_        t          j        s0t          jr        s$t          jx        st          j/        st          j        rt          xj        dgz  c_        t          jx        rPt          xj0        g dz  c_0        t          jM        rt          xj0        dgz  c_0        nt          xj0        dgz  c_0        t          jx        dk    rt          xj        dgz  c_        t3                       t          j        dk    rt          dd           t          j<        rt          dd           t          j        rJt          j        dk     p/t          j        dk     pt          j        dk     pt          j        dk     t          _        t          j        rt          xji        g dz  c_i        t          j        rdt          _        t          j        dk    rt          dd           t          j        t          j        k    rt+          d            jS        s(t           jU                  st           j                  r't          j        rt+          d           dt          _         jU        rt          j{                            d           t          j        rt          j        st+          d           t          j        rydt          _        dt          _        tS          d           t          jr        rt          xj0        dgz  c_0        t          j        st          j        rt          xj0        g dz  c_0        t          j        r0dt          _        t          dt          j                  t          _        t          j        r"t          jb        st          xj0        dgz  c_0        t          j        dk    st          jt        st          xj        ddgz  c_        t          j        rdt<          v rt          j4        d'd            jS        rt          xj        dgz  c_        t          j        slt          j        dk    r"t          j        st          xj        dgz  c_        t          jb        s.t          j        st          jr        rt          xjm        dgz  c_m        t          j\        rt          xj0        ddgz  c_0        t          j        st          xj        dgz  c_        t          j        rt          dd           t          j        r|t          j0                            d           t          j        st          jO        rt          j0                            d           t          j<        dk    rt          xj        dgz  c_         jW        rdt          _        t          j        rNtg                       tS          d           t          j        r"dt          _        t          xj        dgz  c_        n+t          j        rt+          d           tS          d           t          j        rdt          _]        t          j        r+t          jM        rt          j                            d           t          jO        r&t          xj        dgz  c_        tS          d           t          j                     t          j        t          j                  t          _        t          d@t          j        t          ja                             t          j~        r/tS          d           t          j                            d           t          j        sZdt          j{        v rt          j                            d           dt          j{        v rt          j                            d           t          j        r]t          j        sQt          xjd        g dz  c_d        t          j        st          xjd        ddgz  c_d        t          xjd        ddgz  c_d        t          j        st          jO        st          jM        rdt          _        ty                       t          j        rd|v rdt          _        t}                      rt          j        dk    rt          j        dk    r j=        t          jC        t          jV        fvr|t          jN        dk    rlt          j        s`t          jb        sTt          j        sHt          jr        s<t          jM        s0t          j        s$t          j        rdt          _        dt          _        t          j<        rt          jE        rt          jX        rjt          j        dk    rZ j=        t          jD        k    rE jy        t          k    s jy        t5          j        d          k    rt+          d jy         d           t          j]        rdt          _        t          jX        r-t          j2        r!t          j4        d!d           dt          _2         j        dk    rt          jL        st+          d           t          j        rt          xj0        dgz  c_0        t          j        rt          xj0        ddgz  c_0        t          j        r&t          jN        dk    rt          xj        dgz  c_        t          j        r+t5          j        |          dv rt          j4        d!dǦ            j        rt                      t          j        st          j\        rdt          _        dt<          vr0t          j}        s$t          j        st          j        sdt          _        d|v r?dt          _        t          j        rt+          dɦ           dt<          v rt+          dʦ           t                       t          j        st          j        dk    rdt          _        t          j        dk    rdt          _        t          j        t          j        k    rt          j        dk    rdt          _        t          j        t          j        k    r(t          j        rt          j        dk    rdt          _        t          j        rt          j        dk    rdt          _        t          j        r$t          j        rt          xj        ddgz  c_        nt          xj        dgz  c_        t          j        r"t          jb        st          xj0        dgz  c_0        t          j        rBt          xj0        dgz  c_0         j                            t5          j        dѦ                     t          jt        st          xj0        g dҢz  c_0        t          jN        rt          j        st          xj        dgz  c_        t          xj        t          z  c_        t          xj        t          z  c_        dԄ fdՄt          j        D             t          _        t          jN        dk    rt          j4        d7d֦           t          jL        rlt          j2        rt+          dצ           t          j        rt+          dئ           t          j]        rt+          d٦           t          j        rt+          dڦ           t          j        rQt          jP        rt+          dۦ           t          j        st+          dܦ           t          jX        rt+          dݦ           t          j        t          j                  st+          dt          j         dߝ           t          j        rItS          d           t          j        r-t          xj        dgz  c_        t          xj0        g dz  c_0        t4          j        t          _        t          j        rQd t          j                                        D             t          _        t          j                            d            j        pdt          _        t          j        st          j        o j         t          _        t          j        rdt          _        t          j        s(g d}|D ]!}|t<          v rt          j4        dd|           "t          jf        rt          xj0        dgz  c_0        t          js        r3t          jt        rt          jf        st+          d           dt          _        t          j        r`t          jt        rt          jf        st+          d           t          xji        g dz  c_i        t          jf        rt          xj0        dgz  c_0        t          j        rt          j0                                         t          jb        st          j0                            d           t          j        rt          j0                            d           t          j        rt          dd           t          j        st          j        rt          j4        d'd           t          j        rt          j4        d'd           t          j        rt          j4        d'd           t          j        rdt<          v rt          j4        d'd            j        t          _         j        t          _        t          j        dk    ot          j        dk    o j         t          _        t          j        st          j        sdt          _        t                       ||fS )aM  Future modifications should consider refactoring to reduce complexity.

  * The McCabe cyclomatiic complexity is currently 244 vs 10 recommended.
  * There are currently 252 branches vs 12 recommended.
  * There are currently 563 statements vs 50 recommended.

  To revalidate these numbers, run `ruff check --select=C901,PLR091`.
  FAKE_DYLIBSr   r   r   r  r  r   EMMAKEN_JUST_CONFIGUREz
conftest.czconftest.cppTz-autoconfiguring is not compatible with STRICTr{   zsrc/emrun_prejs.jszsrc/emrun_postjs.jsz.--emrun is not compatible with MINIMAL_RUNTIMEr  0z---emrun is not compatible with EXIT_RUNTIME=0z
$addOnExitzsrc/cpuprofiler.jsRUNTIME_DEBUGzsrc/threadprofiler.js!emscripten_main_runtime_thread_idz
$addOnInitz:disabling source maps because a js transform is being donez@specified output file (%s) is in a directory that does not existza.outz
a.out.wasmza.out.jsinstancer0  r  z-shared/-r used with executable output suffix. This behaviour is deprecated.  Please remove -shared/-r to build an executable or avoid the executable suffix (%s) when building object files.zlinking a library with `-shared` will emit a static object file (FAKE_DYLIBS defaults to true).  If you want to build a runtime shared library use the SIDE_MODULE or FAKE_DYLIBS=0.r3   r4   r6   r   z0 is only valid when generating JavaScript outputz;WASMJ2S is currently not compatible with SUPPORT_BIG_ENDIAN
MODULARIZEz(WASM_ESM_INTEGRATION requires EXPORT_ES6z1WASM_ESM_INTEGRATION requires MODULARIZE=instancez;WASM_ESM_INTEGRATION is not compatible with dynamic linkingz6WASM_ESM_INTEGRATION is not compatible with -sASYNCIFYz8WASM_ESM_INTEGRATION is not compatible with WASM_WORKERSzDWASM_ESM_INTEGRATION is not compatible with WASM_ASYNC_COMPILATION=0z3WASM_ESM_INTEGRATION is not compatible with WASM2JSzDWASM_ESM_INTEGRATION is not compatible with ABORT_ON_WASM_EXCEPTIONS)r   r  zInvalid setting "z" for MODULARIZE.c                       j         t          j        k    r5 j        t          k    r%t          dd                    d                     d S t          dg            d S )NINCOMING_MODULE_JS_APIz<canvas,monitorRunDependencies,onAbort,onExit,print,setStatusr   )oformatr   HTML
shell_pathDEFAULT_SHELL_HTMLr   r  )r  s   re   limit_incoming_module_apiz5phase_linker_setup.<locals>.limit_incoming_module_api  s^    ',&&7+=AS+S+S.0n0t0tux0y0yzzzzz.33333rf   r3  zUMODULARIZE=instance is still experimental. Many features may not work or will change.z'MODULARIZE=instance requires EXPORT_ES6z:MODULARIZE=instance is not compatible with MINIMAL_RUNTIMEzFMODULARIZE=instance is not compatible with --embed-file/--preload-filez5MINIMAL_RUNTIME is not compatible with --preload-filez2Wasm only output is not compatible with --emit-tsd)r   r   r   zSAFE_HEAP must be 0, 1 or 2WASM_BIGINTz,WASM_BIGINT=1 is not compatible with wasm2jsLZ4SUPPORT_LONGJMP_mainzKincluding `_main` in EXPORTED_FUNCTIONS is not necessary in standalone modeEXPORTED_FUNCTIONSr,   zexplicitly setting EXIT_RUNTIME not compatible with STANDALONE_WASM.  EXIT_RUNTIME will always be True for programs (with a main function) and False for reactors (not main function).r   rP  z@MEMORY_GROWTH_LINEAR_STEP is not compatible with STANDALONE_WASMMEMORY_GROWTH_GEOMETRIC_CAPzBMEMORY_GROWTH_GEOMETRIC_CAP is not compatible with STANDALONE_WASMr-   EXCEPTION_STACK_TRACESzEEXCEPTION_STACK_TRACES cannot be disabled when ASSERTIONS are enabledSTACK_OVERFLOW_CHECKWARN_ON_UNDEFINED_SYMBOLSERROR_ON_UNDEFINED_SYMBOLSAUTO_JS_LIBRARIESEXPORT_KEEPALIVEz(EXPORT_ES6 requires MODULARIZE to be setzsrc/shell_minimal_runtime.htmlrequestFullscreen	STRICT_JSDEFAULT_TO_CXXIGNORE_MISSING_MAINAUTO_NATIVE_LIBRARIESALLOW_UNIMPLEMENTED_SYSCALLSz)invalid entry in INCOMING_MODULE_JS_API: z$wasmMemorynoExitRuntimez$noExitRuntimeTEXTDECODEREMCC_AUTODEBUGz>JS_MATH is not compatible with dynamic linking (MAIN_MODULE=1)z@cannot have both WASM=2 and SINGLE_FILE enabled at the same timezNMINIMAL_RUNTIME_STREAMING_WASM_COMPILATION is only compatible with html outputzEMINIMAL_RUNTIME_STREAMING_WASM_INSTANTIATION requires MINIMAL_RUNTIMEzCMINIMAL_RUNTIME_STREAMING_WASM_COMPILATION requires MINIMAL_RUNTIMECLOSURE_WARNINGS)quietwarnerrorz^invalid option -sCLOSURE_WARNINGS=%s specified! Allowed values are "quiet", "warn" or "error".closurer  enabledr  Fr  z$dynCallz	$warnOncez	$getValuez	$setValuez$ExitStatus$addRunDependency$removeRunDependencyz
$wasmTablez$loadDylibs__stack_pointerzEXPORTED_FUNCTIONS is not valid with LINKABLE set (normally due to SIDE_MODULE=1/MAIN_MODULE=1) since all functions are exported this mode.  To export only a subset use SIDE_MODULE=2/MAIN_MODULE=2z$getDylinkMetadataz$mergeLibSymbolsz$registerTLSInit)z$reportUndefinedSymbolsz$relocateExportsz$GOTHandlersbrk)__heap_baseemscripten_stack_get_baseemscripten_stack_get_endemscripten_stack_get_current)z.oz.bcz.soz.dylibzobject file output extension (%s) used for non-object output.  If you meant to build an object file please use `-c, `-r`, or `-shared`)z$LE_HEAP_STORE_U16z$LE_HEAP_STORE_I16z$LE_HEAP_STORE_U32z$LE_HEAP_STORE_I32z$LE_HEAP_STORE_U64z$LE_HEAP_STORE_I64z$LE_HEAP_STORE_F32z$LE_HEAP_STORE_F64z$LE_HEAP_LOAD_U16z$LE_HEAP_LOAD_I16z$LE_HEAP_LOAD_U32z$LE_HEAP_LOAD_I32z$LE_HEAP_LOAD_U64z$LE_HEAP_LOAD_I64z$LE_HEAP_LOAD_F32z$LE_HEAP_LOAD_F64z$LE_ATOMICS_NATIVE_BYTE_ORDERz$LE_ATOMICS_ADDz$LE_ATOMICS_ANDz$LE_ATOMICS_COMPAREEXCHANGEz$LE_ATOMICS_EXCHANGEz$LE_ATOMICS_ISLOCKFREEz$LE_ATOMICS_LOADz$LE_ATOMICS_NOTIFYz$LE_ATOMICS_ORz$LE_ATOMICS_STOREz$LE_ATOMICS_SUBz$LE_ATOMICS_WAITz$LE_ATOMICS_WAITASYNCz$LE_ATOMICS_XORz$ptrToString)r  emscripten_stack_get_freer  r  emscripten_stack_set_limitsemscripten_stack_initz$setStackLimitsI NODEJS_CATCH_REJECTIONO   U   i"  q )
_stbi_load_stbi_load_from_memory_stbi_image_freeMAX_WEBGL_VERSIONz@MIN_WEBGL_VERSION must be smaller or equal to MAX_WEBGL_VERSION!z_--preload-file and --embed-file cannot be used with NODERAWFS which disables virtual filesystempreRunz9`-sFORCE_FILESYSTEM` cannot be used with `-sFILESYSTEM=0`zlibwasmfs.jswasmfs_flush)%r  wasmfs_create_filewasmfs_unmount_wasmfs_mount_wasmfs_read_file_wasmfs_write_file_wasmfs_open_wasmfs_close_wasmfs_write_wasmfs_pwrite_wasmfs_rename_wasmfs_mkdir_wasmfs_unlink_wasmfs_chdir_wasmfs_mknod_wasmfs_rmdir_wasmfs_mmap_wasmfs_munmap_wasmfs_msync_wasmfs_read_wasmfs_pread_wasmfs_symlink_wasmfs_truncate_wasmfs_ftruncate_wasmfs_stat_wasmfs_lstat_wasmfs_chmod_wasmfs_fchmod_wasmfs_lchmod_wasmfs_utime_wasmfs_llseek_wasmfs_identify_wasmfs_readlink_wasmfs_readdir_start_wasmfs_readdir_get_wasmfs_readdir_finish_wasmfs_get_cwd_emscripten_stack_allocr
   z
$stackSavez$stackRestorer   z.GLOBAL_BASE is not compatible with SIDE_MODULEz$Browserz$stackTracefflushemscripten_get_sbrk_ptrr  z$assignWasmExportsABORTING_MALLOC__getTypeName_embind_initialize_bindingsz$addOnPostCtorzlibpthread.jsz$runtimeKeepalivePushz--sPROXY_TO_PTHREAD requires -pthread to work!zlibpthread_stub.js__table_base32z$_wasmWorkerInitializeRuntimezlibwasm_worker.jszlibwebaudio.jsz$getWasmTableEntryz$addOnPreRunpostRunz$addOnPostRun)FS_createPathFS_createDataFileFS_preloadFile	FS_unlinkFS_createLazyFileFS_createDeviceaddRunDependencyremoveRunDependencyz-lexports.jsModulezsrc/shell_minimal.htmlz<Due to collision in variable name "Module", the shell file "a  " is not compatible with build options "-sMODULARIZE -sEXPORT_NAME=Module". Either provide your own shell file, change the name of the export to something else to avoid the name collision. (see https://github.com/emscripten-core/emscripten/issues/7950 for details)zDSINGLE_FILE disables source map support (which requires a .map file)zNclosure compiler mode 2 assumes the code is asm.js, so not meaningful for wasm_emscripten_tempret_set__get_temp_ret__set_temp_ret_load_secondary_module)r5   r6   zlJavaScript output suffix requested, but wasm side modules are just wasm files; emitting only a .wasm, no .jsz--stack-firstz)--stack-first is not compatible with asanz2--stack-first is not compatible with -sGLOBAL_BASErW  rX  	proc_exit$callRuntimeCallbacks__funcs_on_exitr  zsrc/build_as_worker.js)__cxa_can_catch"__cxa_increment_exception_refcount"__cxa_decrement_exception_refcountsetThrew__cxa_free_exceptionzinvoke_*c                     d| v r| S d| z   S )Nr^   zenv.r~   rc   s    re   get_full_import_namez0phase_linker_setup.<locals>.get_full_import_name  s    	d]rf   c                 &    g | ]} |          S r~   r~   )r   ir+  s     re   r   z&phase_linker_setup.<locals>.<listcomp>  s%     \ \ \Q!5!5a!8!8 \ \ \rf   z)-sASYNCIFY=2 (JSPI) is still experimentalz@wasm2js does not support source maps yet (debug in wasm for now)z!wasm2js does not support MEMORY64z$wasm2js does not support WASM_BIGINTz+wasm2js does not support >2gb address spacezFNODE_CODE_CACHING requires sync compilation (WASM_ASYNC_COMPILATION=0)zONODE_CODE_CACHING only works in node, but target environments do not include itzQNODE_CODE_CACHING saves a file on the side and is not compatible with SINGLE_FILEz+EXPORT_NAME is not a valid JS identifier: ``zlibtrace.js%emscripten_trace_report_memory_layout)r  r  r  c                 .    g | ]}|t           j        v|S r~   )r   internal_settings)r   ks     re   r   z&phase_linker_setup.<locals>.<listcomp>  s%    hhhaAXMgDgDgDgDgDgrf   EMSCRIPTEN_VERSIONr7   )EXCEPTION_DEBUGDISABLE_EXCEPTION_CATCHINGEXCEPTION_CATCHING_ALLOWEDDISABLE_EXCEPTION_THROWINGr   z4setting `%s` is not meaningful unless linking as C++__trapzKEXCEPTION_STACK_TRACES requires either of -fexceptions or -fwasm-exceptionszVEXPORT_EXCEPTION_HANDLING_HELPERS requires either of -fexceptions or -fwasm-exceptions)getExceptionMessageincrementExceptionRefcountdecrementExceptionRefcount__cpp_exception__wasm_call_ctors_emscripten_tls_initNODE_HOST_ENVz3NODERAWFS ignored since `node` not in `ENVIRONMENT`z;NODE_CODE_CACHING ignored since `node` not in `ENVIRONMENT`z;NODEJS_CATCH_EXIT ignored since `node` not in `ENVIRONMENT`z@NODEJS_CATCH_REJECTION ignored since `node` not in `ENVIRONMENT`)r   apply_library_settingsr   r   r  r   r   r  r  r  calc_extra_ldflagsSKIP_SUBPROCScheck_llvm_versionr  environgetinput_filesr  	NODERAWFS
executableSTRICTr$   r|   emrunpre_jsr   r   rk  post_jsrB  r   rA  cpu_profilerr  LIBRARY_DEBUGGL_DEBUGDYLINK_DEBUGOPENAL_DEBUGSYSCALL_DEBUGWEBSOCKET_DEBUGSOCKET_DEBUGFETCH_DEBUGr4  PTHREADS_DEBUGASYNCIFY_DEBUGmemory_profilerMEMORYPROFILERPTHREADS_PROFILINGr@  js_transformr  r`   r   output_filer  dirnameisdirr%   WASM_ESM_INTEGRATIONSOURCE_PHASE_IMPORTSr  r  relocatableEXECUTABLE_EXTENSIONSr	   r   OBJECTWASMr  r0  MJSJSr   rc   OUTPUT_FORMATSUPPORT_BIG_ENDIANWASM2JSr  r  r  WASM_ASYNC_COMPILATIONABORT_ON_WASM_EXCEPTIONSDYNCALLSuse_preload_pluginsr  preload_filesBAREemit_tsdSINGLE_FILEr    replace_suffixget_secondary_targetr   r  r   disable_featurer   JS_BIGINT_INTEGRATIONSTANDALONE_WASMr  EXPORTED_RUNTIME_METHODS	PURE_WASIWASM_EXCEPTIONSno_entryEXPECT_MAINr  ra   USER_EXPORTSr   EXPORT_IF_DEFINEDr  r   rC  updater{   r  r5  nostdlibnodefaultlibsmaxr  r  r  r  ALL_INCOMING_MODULE_JS_APIr}   AUDIO_WORKLETr   r   JS_MATH*MINIMAL_RUNTIME_STREAMING_WASM_COMPILATION,MINIMAL_RUNTIME_STREAMING_WASM_INSTANTIATIONuse_closure_compilerUSE_CLOSURE_COMPILERr  managerwarningsr   r  SPLIT_MODULEINCLUDE_FULL_LIBRARYLINKABLEr  ALLOW_TABLE_GROWTHDETERMINISTICEMSCRIPTEN_TRACINGunmangle_symbols_from_cmdliner	  r  r
  r   r  GL_ASSERTIONSri  r   POLYFILLr_  r`  ra  	TRANSPILE	STB_IMAGE
USE_WEBGL2r  MIN_WEBGL_VERSIONembed_filesFORCE_FILESYSTEM
FILESYSTEMWASMFSSYSCALLS_REQUIRE_FILESYSTEMro  FULL_ES3FULL_ES2MAIN_READS_PARAMSr  DYNAMIC_EXECUTIONDECLARE_ASM_MODULE_EXPORTSr=  EMBINDEMIT_TSDrE  PROXY_TO_PTHREADPTHREAD_POOL_SIZE_STRICTr  apply_min_browser_versionsr   PROMISE_ANYSUPPORTS_PROMISE_ANYrQ  rU  MINIFY_WASM_EXPORT_NAMESr   DEBUG_LEVELMINIFY_WASM_IMPORTS_AND_EXPORTSMINIFY_WASM_IMPORTED_MODULESEXPORT_NAMEr   rd   r  r  r  CHECK_NULL_WRITESr   rZ  rI  CAN_ADDRESS_2GBWEBGL_USE_GARBAGE_FREE_APISr   INCLUDE_WEBGL1_FALLBACKBUILD_AS_WORKERr  r  DEFAULT_ASYNCIFY_IMPORTSASYNCIFY_EXPORTSDEFAULT_ASYNCIFY_EXPORTSNODE_CODE_CACHINGr   r   isidentifierr3  RETAIN_COMPILER_SETTINGSattrskeysPUBLIC_SETTINGSsource_map_baseSOURCE_MAP_BASErun_via_emxxr  
nostdlibxxLINK_AS_CXX!EXPORT_EXCEPTION_HANDLING_HELPERSclearNODEJS_CATCH_EXITr  PRE_JS_FILESPOST_JS_FILES	no_minifyMINIFY_WHITESPACEMAYBE_CLOSURE_COMPILERr|  )r  r  autoconftargetr]  final_suffixru  r  wasm_targetpropclosure_warningscxx_only_settingsrN  r+  s   `            @re   phase_linker_setupr    sH&    %%% &X1 &M1%%%^ &H0 &M1%%%M1%%%		 (55GN  ((< ( (mQ'''#G,,,+
 
	  
Z^^455  FI\9\  F`nry  sF  aF( 	GHHG GEFFF1L!$$$] 
@N%./CDDEEEO5/0EFFGGG HFGGG((C//EFFFH--,?-- GO5/0DEEFFF /3x'= 
(?'/'8
(?'/'<
(? (0'<
(? (0'=	
(?
 (0'?
(? (0'<
(? (0';
(? (0'?
(? (0'>
(? (0'>
$@ 
$@ 
A 
A 
A   H  NO5/0GHHIII$$%HIII--,1MM--  %h: %
NNOPPP#$H    F
 goof%%G crw}}W-- cX[aabbb FF FFF ((, " %h&C %xGZ^hGhGhL!$$$ 
 'g1 'gn 'I] 'fnfz ' ,,,&  #b  eq  #q  r  r  r  r	 \M>>F  %[  	\  	\  	\go	 # #|w66goo		 	 goo			8#6	goo
go_w~666 t t	
m		:q<r<r<rsss_##L!$$$"?/(  SX%5 SQRRR" ^L*--- B@AAAj((IJJJ USTTT PNOOO RPQQQ* ^\]]]= MKLLL( ^\]]] PX0GGN(;NNNOOO4 4 4 4 4 ! HJ&&(  A  A  A A?@@@ TRSSS" `c'*?&@&@ `^___ M#g&;"<"< MKLLL_w|444 LJKKKKK 8x}11 %.vw??@@KK 'vw77Ky((1222	  HMH]aH B '' FH,@ FDEEEH"7#@AAA_$$X-A$  !H\ 1%%%0%% , HH # ,'+++ 0H 0(---ll`aaa },,	H)	)	)#**7333"))&1111  ''/// \
 &&  O  P  P  P$0H#$H  %q)))"m33XYYY$55Z[[[ !(()DEEE+++v9S/S/S%%&89999 ?8#; ? 6+=">> g  =009X0]^^^ *x'J *()h%  gg&6 gw?T g,c(2ExGd.e.efff 233s::0!444  +'+++&*** !4 }$$@AAAH		 . .050DEe0f0ffg7---g_$$);?Q)Q)Q%,,-@AAA_   &k1%%%$a((()1---+Q///q   )1---4a888- n nd86668:lfj:l:lmmm
+22=AAA777-445EFFF a(>		*  M1%%% Z^^$%% H  V(.!33 TUUU]aH0VWWW8 fW_PWP\=\=\deee: ]8C[ ][\\\8 [AY [YZZZ8 fW_PWP\=\=\deee! &$%H!=(( (BBBv  zB  zS  S  T  T  T"*3I> G++"&w$(y!!		"f	,	,"'w$(y!!		"g	-	-"'w$)y!		! a- 	N		 B11j\A11		 C11k]B11//K3MM//---@--  aH$C aHL_ a//4GI_3``//& @(*? @--,?-- 7####q  &'h#---@-- 7$5#66Q("6!";";H @80 @6  9  @  @  @ --2 --
  --2 --  $X1 $-- 2 2 2 -- #$H  * ** * &) B "B "B "B B
 88MNN(:8;STT(89OPP(,  H_&&<;Y+Y+Ybjbv+Y  !i  lx  !x  y  y  y   -- 2 2 2 --B  Bx2 Bh6S BW_Wr Bv~  wM B--.1AA--" = " " "   =$A#BB$;#<<"a''--2C1DD--&((,a000
  1,a000 > #6; ="5:="5>= #3f< 
  `#_#_#__ #!"H 1$$'+++("<<<VWWW  "C(=$>$> "#gFYBZBZ " ywxxx !H 5#**8444 Qx': QOPPP_ 4H+,H(n%%% 4N#33  -H$A -  &$ &$ &$ &P  DH!$Q(B!C!CH =(@ =";!<<--X5X---,1PP-- jm}<<68hiii  >--*=--		+ 
/!Q&&x/G&//M?B//# /)> /(BU /
   XJ.   Z";=X!YY		, H--2F1GG--! *
 %q)))_ F $$_555 FH1 F&&'DEEEj((//4D3EE// H 	,o&&&  M*+h'//4K3LL//  GEFFF*+++ H G8/ G-445EFFF +--2Q1RR--)***
 +--- #1"89L"M"M(-!78U!V!VWWW K&'''-445IJJJ		! H8222/66~FFFH333/66GGG x'? 
 %% * * * %% ? '', ''
 %%* %%
  !(/ !83G ! H
 
	, *+0M0M()H% ^^ .AaoglGL9991

 

"  
  
	 
 
  
  
+  01H,,-H) q("5 qh>R qX%%'/W\*I*I...'2DH\]uHvHv2v2v  pSZSe  p  p  p  q  q  q ! H %h: % fggg#$H !Q&&x/?&deee =";!<< F"24D!EE Lx0A55--2J1KK--  Pel622oEE  !O  P  P  P W #(, #!"H-''0E'hN`'iqiz'  H##H CABBB%%JKKK 
	 !x69OOO H1$$+,H( #~'AAAhF]`gFgFg-.h*"n&@@@XEV@[c[ru|[|[|-.h*+ +0Ja0O0O)*h& K Z//KAX3YY// --2I1JJ-- 58#; 5
 "3!44 K),O5/0HIIJJJ		,  " " " *  W, 0 J</!99!99  
 !] \ \ \(B[ \ \ \HA.*UVVV E# ZXYYY ;9::: ><=== ECDDD k& `^___+ ighhh kijjj		%h&:	;	; [Y(BVYYYZZZ  @m$$$# @//4[3\\// $@ $@ $@ @ !& 8(& :hh8>+>+>+@+@hhhH ##$8999$4:( -H1HdRYRdNd( _  H 
	 	j   % j j	M	!	!K)_ahiii ,(+$ 6 * e83K ecddd15H. / 7 * p83K pnooo #v#v#vv 7$5#66 & ##%%%		! :$$%8999 =$$%;<<< (OQ'''		) 	~ q8:oppp! y8:wxxx! y8:wxxx& ~+C}+T+T8:|}}}!.("?('1Q6n8;OST;Tn]d]nYn( " ((*D (&'H#		rf   zcalculate system librariesc                     g }t           j        s|t          j        t                     z  }|t	          j        |           z  }|S r   )r   r   r   get_libsr   	calculate)r  extra_files_to_links     re    phase_calculate_system_librariesr  `  sD    		 45>(333.w777	rf   c                    t                               d|             t          t          j                  t          _        t          t          j                  t          _        t          t          j                  t          _        d }t          j        rOt          j        sCdt          _        t          j
        | ||           dt          _        t          j        |          }t          j
        | ||           |S )Nz	linking: F)external_symbolsT)r`   ra   
dedup_listr   r  r@  r}  r  
EXPORT_ALLr   link_lldr   )r  r  js_symsrtns       re   
phase_linkr  k  s    ,,(;(()))
 !+8+F G G(()BCC()(*DEE(# 9x2 9 Hk;IIIIH

+K
8
8C
KwGGGG	*rf   z	post linkc                    t          |          }| j        t          j        k    rt	          |dz             at          |          t          _        | j        t          j        t          j	        fv r|}nt          |d          }t          j                            |          t          _        t          ||||          }t          j        rt#          | ||           | j        rt'          | ||||           | j        rt+          |            t-          || |           | j        t          j        k    rt/          | |||           d S d S )Nr5   )r)   r  r   rd  r    r_   r   TARGET_BASENAMErf  re  rs  r  r  basenameTARGET_JS_NAMEphase_emscript
EMBIND_AOTphase_embind_aotrp  phase_emit_tsdr[  phase_source_transformsphase_binaryenphase_final_emitting)	r  in_wasmr  r  r  base_metadatatarget_basename	js_targetmetadatas	            re   phase_post_linkr    s6    (///_$$.//H088(_W[111II$VU33IG,,Y77(G['=II( 4Wk7333 G7KGXFFF %G$$$+... _$$&)[AAAAA %$rf   emscriptc                 6   t                               d           t          j        r7t          j        s+dt          _        t          j                            d           t          j	        rd S t          j        | |t          ||          }t          d           |S )Nr  r   z$base64Decode)r  original)r`   ra   r   rq  ri  SUPPORT_BASE64_EMBEDDINGrA  r   r   rB  r
   r  r_   rb   )r  r  r  r  r  s        re   r  r    s     	,,z  F("2 F()H%-44_EEE 
F +xXefff(J	/rf   c                    t          j                    }t           j                            |           dt           _        t           j        r;| j        D ]3}t          j        |          rt          |t          d                     4dt           _        dt           _        dt           _        g t           _        g t           _        dgt           _        dt           _        t           xj        g dz  c_        dt           _        dt           _        dt           _        dt           _        dt           _        t1                       dt           _        t5          t           j                  D ]Z\  }}t8          j                            |          \  }}	|	dk    r-t8          j                            |d          t           j        |<   [t           j         rd	nd
t           _!        t           j         rdt           _         dt           _"        t          d          }
t          d          }tG          j$        |||
|d           g }t           j         rt          j%        ||ddg           t           j&        r!|tO          j(        tR          j*                  z  }t          d          }tO          j+        |
|g|           t          j,        |           t[          |          S )NTr7   Fr1   r   )r"  r  r  libembind.jszlibembind_gen.jsr  r  r   ztsgen.jsz
tsgen.wasm)finalizer   r   zembind_generated_output.js).r   backupr  r~  EMBIND_GEN_MODEr  rF  r   r  r'   r    
INVOKE_RUNr  r_  r  r  r   rB  rA  r0  r  PTHREAD_POOL_SIZEri  r  r   rq  	enumeraterm  r  r  r  r   r  r   r  r
   r  run_wasm_optry  r   node_exception_flagsr   r  run_js_toolrestorer&   )r  r  r  extra_settingsoriginal_settingsr   r-  rn  r]  r  
outfile_jsoutfile_wasm	node_argsr\  s                 re   run_embind_genr    sk   o''
.'''!( "   " "			"	" "!WR[[!!!
 ( ("'((( ((
++/u/u/uu++(#( (( +0('((/00 K Kfac**GX>!!!#g7I!J!JhA(0(9Effv(
  H(z""*&&,k<WuUUUU) e,7LNb6cddd =,V^<<<I455+Z+	:::
$%%%	;		rf   emit tsdc                 P   t                               d           | j        }d}t          j        rt          | ||ddi          }t          j        ||          }t          j	        
                    t          j	                            |          |          }t          ||           d S )Nr  r7   r  F)r`   ra   rp  r   r  r  r
   
create_tsdr  r  r   r]  r*   )	r  r  r  r  r  rp   
embind_tsdall_tsdout_files	            re   r  r    s    ,,z(*_ Vge?TUUJ!(J77'W\\"'//)44h??(Xwrf   zembind aot jsc                 P   t          | ||i           }t          rt          t          d          |           t	          j        |          }t          t                    }t          |d|d                   }t          j
        dk    rXd                    d |d         D                       }d                    d |d         D                       }d	| d
| d}||z  }t          t          |           t          j        r't          j                            |d                    d S d S )Nzembind_aot.jsonz<<< EMBIND_AOT_INVOKERS >>>invokersr  r   c                     g | ]}d | d	S )zexport var ;r~   r   rc   s     re   r   z$phase_embind_aot.<locals>.<listcomp>!  s$    NNN,T,,,NNNrf   publicSymbolsc                     g | ]
}| d | dS )z = Module['z'];r~   r  s     re   r   z$phase_embind_aot.<locals>.<listcomp>#  s)    ZZZTD88d888ZZZrf   z:
// start embind exports
function assignEmbindExports() { z( };
addOnPostCtor(assignEmbindExports);
z
// end embind exports)r  r   r*   r    r   r   r&   r_   r   r   r  r   r_  rw  extend)r  r  r  outr$  declsassignsexportss           re   r  r    s;   wWb99#
 0w())3///
3#(#35s:GG#J&&IINN_9MNNNOOEiiZZSEYZZZ[[G#*  	  G 7NCXs" C%,,S-ABBBBBC Crf   c                 h   t          | t                    rd | D             S |                     d          r3|                     d          r| dd                             dd          S |                     d          r3|                     d          r| dd                             dd          S | S )Nc                 ,    g | ]}t          |          S r~   )remove_quotes)r   rx  s     re   r   z!remove_quotes.<locals>.<listcomp>5  s     ***M!***rf   "r   rH  z\"'z\')
isinstancelistr   endswithr   )r  s    re   r  r  3  s    T +**c****^^C S\\#.. qt9UC(((
~~c s||C00 qt9UC(((Jrf   zsource transformsc                    t          t          t          dz              t          dz  at           }t                              d| j                   t          j        t          t          j
        | j        |          t          j                            t                    gz                        t          d           d S )Nz.tr.jszapplying transform: %s)posixtransformed)r'   r_   r"   r`   ra   r[  r   
check_callr  r  r  r  r  abspathrb   )r  r   s     re   r  r  ?  s     Hh)***
h(+%,,')=>>>M%+g.B%"P"P"PTVT[TcTcdlTmTmSn"noopppM"""""rf   c                     t           j        sd S t          |           }t          | |                    dd                              dd                              dd                     t          d           d S )NzEMSCRIPTEN$IMPORT$METAzimport.metazEMSCRIPTEN$AWAIT$IMPORTzawait importzEMSCRIPTEN$AWAIT(zawait (zjs-mangling)r   r  r&   r*   r   rb   )js_filer$  s     re   fix_js_manglingr&  N  s{    		 
F'#Wcg.>>g/@@g)9557 7 7 M"""""rf   c                      dS )NzLglobalThis.process?.versions?.node && globalThis.process?.type != 'renderer'r~   r~   rf   re   node_detection_coder(  [  s    	W	Wrf   c                    t           j                            t          j                  }d                    t          |                    }g }|                    d           |                    d           |                    dt          j         d           dt          j
                            |           }|r|                    d| d| d           n|                    d	| d           t          j        r(|                    d
| dt                       d           t          | d                    |          dz              t          j
                            t          j                    d          }t!          j        ||gt$                    j        }|                    dd| d          }|                    dd| d          }t          j
                            t          j                    d          }|dd|dg}	t          j        r|	                    d           t!          j        |	|           d S )Nz, zF// The wasm module must be imported here first before the support filez7// in order to avoid issues with circular dependencies.zimport * as unused from './z';./zexport { default, z	 } from 'zexport { default } from 'z
// When run as the main module under node, create the module directly.  This will
// execute any startup code along with main (if it exists).
import init from 'z';
const isNode = z;
if (isNode) {
  const url = await import('url');
  const isMainModule = url.pathToFileURL(process.argv[1]).href === import.meta.url;
  if (isMainModule) await init();
}r   zwasm-disstdoutz(import "env"z	(import "r  z (import "wasi_snapshot_preview1"zwasm-asz--all-features-or   r(  )input)r   rC  unionr   rw  r   sortedr   WASM_BINARY_FILEr  r  r  r   r(  r*   get_binaryen_binr   r"  r   r,  r   EMIT_NAME_SECTION)
wrapper_filesupport_targetr  
js_exportswrappersupport_urlwasm_dismodwasm_asr%  s
             re   create_esm_wrapperr<  _  sC   .44X5VWW*yy
++,,*'	..YZZZ	..JKKK	..Lx/HLLLMMM7RW%%n5577+ BNNNNN{NNNOOOONN@@@@AAA% 
NN 	 	 	 $%%		 	 	 	 	 	 \499W--4555 W\\(355zBB(8[1$???F#O%?%?%?%?@@#68RK8R8R8RSS#GLL244i@@'	"D+s;# JJtCs######rf   zfinal emittingc                    t           j        rd S t          j        rt          j        dk    rt	                       nt          j        rt                       t          j        dk    rt          j        rt          j        dk    rt          dt          g}t          j
        s|                    d           t          j        t          j        d          |t          j        d                     t          d	           t!          j        t          d
t          j                  a	t          j        t          j        d          t          dt          gt          j        d                     t          d           t'          t                     | j        s| j        rt-          | j                  }t-          | j                  }t.                              d           t3          t                    }t          dz  a	t5          t          dd          5 }|                    |           |                    |           |                    |           d d d            n# 1 swxY w Y   t          d           t9          j        t                     t          j        rt?          |          dz   }	tA          t          |	           tC          ||	|           t          j"        rYt?          |          dz   }	t!          j#        t          j        d          d          }
tI          |	|
           t'          |	           ntA          t          |           tK          |          }t          j&        || j'                   | j(        tR          j*        k    rtW          || |||           t          j,        rt[          ||            | j.        rt_          |           d S d S )Nr  r   r   r-  z--prettyztools/unsafe_optimizations.mjsr^   )cwdzunsafe-optimizationsF)advancedextra_closure_argszunsafe-optimizations2zapplying extern pre/postjsesz.epp.jsr  utf-8encodingzextern-pre-postz.support.mjsz.pthread.mjszsrc/pthread_esm_startup.mjsTr   )0r   rB  r   r  
modularizer  module_export_name_substitutionrB  r  r_   r  r   r  r   rk  rb   r   closure_compilerCLOSURE_ARGSr&  extern_pre_jsextern_post_jsr   r`   ra   r&   r  r  r   handle_licenser_  r(   	move_filer<  r  r   r*   r)   convert_line_endings_in_file
output_eolr  r   r  generate_htmlr  r.  rH  r&  )r  r  r  r  r*  rH  rI  r$  r   r5  pthread_coder  s               re   r  r    s     
F &X0J>>LLLL$ &#%%%
 ""x'D"I]abIbIbdH%D% 
kk*
u+,LMMtY^YmnqYrYrssss,--- (EV^VklllH u+,LMMPXZ^`hOiot  pD  EH  pI  pI  J  J  J  J-...(  
)g4 
)!'"788M"7#9::N
LL/000
H

C	H	hg	.	.	. !ggmggclllggn               '((( *** " 
#	**^;Nh'''y.+>>> &!),,~=n1%2FGd2e2euyzzzl...n%%%h	"""'///$Y0BCCC _$$&'9o    *K))) "y!!!!!" "s   A II"%I"binaryenc           	         t                               d           t          j        dk    pt          j        }d}|r|dz  }|j        r|dz  }t          j        dk    r|dz  }t          |          }|rt          j        dk    r|dz  }t          j        r#t                      rt          j        dd           t          j        d          5  t          j        ||||           t          j        |d	           d d d            n# 1 swxY w Y   t          j        r]t          j        d
          5  t          j        t&          ||           t          j        |d           d d d            n# 1 swxY w Y   t&          rt          j        rEt          j        d          5  t          j        t&                    ad d d            n# 1 swxY w Y   t          j        rt          j        t&                    at          j        rt          j        t&                    at          j        r]t          j        rQt          j        sEt          j        d          5  t          j        t&                    ad d d            n# 1 swxY w Y   t          j        rEt          j        d          5  t          j        t&                    ad d d            n# 1 swxY w Y   t          j         dk    rt          j        dk    rut          j        d          5  tC          d|           t          j"        t&          |tG                      |          atC          d|           d d d            n# 1 swxY w Y   |j$        r`t          j        d          5  t          j%        t&          t          j&                  ad d d            n# 1 swxY w Y   t!          d           t          j'        r{t          j        d          5  t          j(        t&                    ad d d            n# 1 swxY w Y   t!          d           t          j)        rt          j*        t&          dg          ad }|j        rtW          j,        | d          }t          j-        r d }t          j.        dk    rZt          j/        ta          j1        d          d          }|dz   }	te          |	|           |j        rtW          j,        |	d          }n#t&          }	|j        rtW          j,        | d          }t          j3        |	|t          j         |j$        |||          }
tW          j4                    5                    |
           t          j.        dk    rtm          |
|	           t          j.        dk    r|
at!          d           t          j.        dk    pt          j-         }|j        r6|dz  }|r/t          j7        ||           |st          j8        ||d g!           t          j        rCt          j9        r7|r5t          j9        }|du rtu          | d"          }t          j;        ||           |r|dz  }|dk    sJ |sSt          j<        rG|rEt          j        d#          5  t          j8        ||d$d g%           d d d            n# 1 swxY w Y   t&          rt          j=        rt          j-        st}          t&                    }t          j?        rt          |d&t          |                    }nt          |d't          |                    }t          |           te          t&          |           d S d S d S d S )(Nzusing binaryenr   r   r   zlimited-postlink-optimizationsz\running limited binaryen optimizations because DWARF info requested (or indirectly required)wasm_opt)r*  ra   zbyn.wasm
eval_ctors)
debug_infoz
ctors.wasmuse_unsigned_pointers_in_jsapply_wasm_memory_growthlittle_endian_heapminify_wasmpreclean)r%  r-  expensive_optimizationsrT  	postcleanclosure_compile)r@  r  	transpile--minify-whitespacez.symbolszsrc/wasm2js.jsTr   r5   )	opt_levelr  rT  symbols_filesymbols_file_jswasm2jsrc   )sectionsz.wasm.debug.wasmstrip_name_sectionF)ra   rc  z"<<< WASM_BINARY_DATA >>>"z<<< WASM_BINARY_DATA >>>)Dr`   ra   r   r  r3  emit_symbol_mapr  r  GENERATE_DWARFr   r	   r   r!   profile_blockr   r  rb   
EVAL_CTORSrS  r_   r  rU  r  instrument_js_for_asanr   instrument_js_for_safe_heapr   r=  r>  rV  rh  rW  r|   ri   minify_wasm_jsr   r  rF  rG  r  r]  r  acorn_optimizerr   replace_or_append_suffixri  rd  r   r   rk  r*   rb  get_temp_filesnoter'   write_symbol_mapstripSEPARATE_DWARFrs  emit_debug_on_sidebinaryen_kept_debug_inforq  r&   SINGLE_FILE_BINARY_ENCODEr   binary_encoders   r#   )r  r  r  debug_function_namesintermediate_debug_infor   r`  ra  wasm2js_polyfillwasm2js_templaterb  generating_wasmwasm_file_with_dwarfr\   s                 re   r  r    s	    	,,   !-2Ph6P  !q  !q !q 
 w''& : A"  \#@#B#B \:  =[  \  \  \		(	4	4 : :K'!'"9; ; ; ;  j999: : : : : : : : : : : : : : :  <		(	6	6 < <(K<STTTT l;;;< < < < < < < < < < < < < < <  4O  B*+HII B B7AAB B B B B B B B B B B B B B B  ;0::h @5h??h  ?("> ?xGe ?*+EFF ? ?4X>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? " 9*+?@@ 9 9.x889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 Q8#71#<#< *=99 > >#J<<<*85@CO>>6MO O O 	$K===> > > > > > > > > > > > > > > # #*+<== a a,X(J_```a a a a a a a a a a a a a a a	""" O*;77 0 0%h//0 0 0 0 0 0 0 0 0 0 0 0 0 0 0$$$		# O+H7L6MNN, G26:FFL  !O} "5e6JK[6\6\lpqqq$u,!#3444		  X 9:JJWW!		  N 9&*MM/*)1);4;4P*>,8/>@ @ @G   )))})***}hi   MQ&>h.>*>/  Dq  D\:::$ D{K6(CCCC C!8 C_ C#2t## 2&:LMM-ABBB  !q 	 A	%	%	%	%	 O("C O O		()=	>	> O On[+UfXNNNNO O O O O O O O O O O O O O O  (& x/? 	8		B) Rb6k8R8RSSbbb4mK6P6PQQbx     s   
.DDD/2E--E14E1 GG
G
I99I= I=$K

KK	A
MM#&M#&N77N;>N;1PPP?Z%%Z),Z)c                     t                               dt          j         d           t	          j        t          j        d          d          } t          j        rtt          j
                                        d          5 }t          ||            t	          j        |dg          }t          |          } d d d            n# 1 swxY w Y   t          | d	t          t                               }t           d
z  at          t           |           t          j
                                        t                      t%          d           d S )Nz0Modularizing, creating factory function called `r.  zsrc/modularize.jsTr   r5   )rd   r^  z"<<< INNER_JS_CODE >>>"z.modular.jsmodularized)r`   ra   r   r  r   r   r   rk  r  r   rn  get_filer*   rl  r&   r   r_   ro  rb   )modularize_srctmpminified_filefull_srcs       re   rD  rD  	  s\   ,,Y(BVYYYZZZ/0DEX0Y0Yimnnn. 0			 	 	)	)	)	7	7 03n%%%.s5J4KLLm //n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (A9XCVCVWW(
m(Xx   x(((M"""""s   6CC
C
c                  2   t           j        rJ t                              dt           j                    t          t                    } t          dz  at           j        r1t           j        s%t           j	        st           j
        st           j        }nddt           j        iz  }t          j        d||           }|| k    s
J d            t          t          |           t          j                                        t                     t#          d           d S )Nz-Private module export name substitution with z#.module_export_name_substitution.jsz<typeof %(EXPORT_NAME)s != 'undefined' ? %(EXPORT_NAME)s : {}r  zO{\s*[\'"]?__EMSCRIPTEN_PRIVATE_MODULE_EXPORT_NAME_SUBSTITUTION__[\'"]?:\s*1\s*}z_Unable to find Closure syntax __EMSCRIPTEN_PRIVATE_MODULE_EXPORT_NAME_SUBSTITUTION__ in source!rE  )r   r  r`   ra   r  r&   r_   rB  r   r   r  resubr*   r   rn  ro  rb   )r$  replacementnew_srcs      re   rE  rE  	  s	       ,,Ux?SUUVVV(#
33( yh&F yxOp y  zB  zP y &KKPTackcwSxxKFegrtwxx'	CzXwx(((566666rf   c                 6   t                      }t          j        dk    r|j        t          k    rt          d           t          j        |j                  }d|vrt          d           t          j        r?|j	        pd}|t          |          z  }t          |          |_	        t          |           nt          j                            |          |_        t          j        s4|                                 dt%          |          d|j	        d|_	        t          j        d	k    r7|                                 d
|j	        dt)          |dz             d|_	        t+          |d|                                          }|                    dt1          j
        t1          j        d                              }t1          j        d          }t5          |          }|                    dd| d          }t7          |            t9          | |           d S )Nr  zcustomizing EXPORT_NAME requires that the HTML be customized to use that name (see https://github.com/emscripten-core/emscripten/issues/10086)z{{{ SCRIPT }}}zIHTML shell must contain {{{ SCRIPT }}}, see src/shell.html for an exampler7   z
          fetch(z).then((result) => result.arrayBuffer())
                     .then((buf) => {
                             Module.wasmBinary = buf;
                             z!;
                           });
r   z#
          function loadMainJs() {
aA  
          }
          if (!window.WebAssembly || location.search.indexOf('_rwasm=0') > 0) {
            // Current browser does not support WebAssembly, load the .wasm.js JavaScript fallback
            // before the main JS runtime.
            var wasm2js = document.createElement('script');
            wasm2js.src = r5   z;
            wasm2js.onload = loadMainJs;
            document.body.appendChild(wasm2js);
          } else {
            // Current browser supports Wasm, proceed with loading the main JS runtime.
            loadMainJs();
          }
z{{{ SHELL_CSS }}}zsrc/shell.csszmedia/powered_by_logo_shell.pngz{{{ SHELL_LOGO }}}z5<img id="emscripten_logo" src="data:image/png;base64,z">)ScriptSourcer   r  r  r  r$   r   r   rq  inliner&   r#   r  r  r  r$  rj  un_srcget_subresource_locationrd  get_subresource_location_jsr   r  r   r   rk  rs   check_output_filer*   )	r  r  r  r  r#  r2   js_contentslogo_filenamelogo_b64s	            re   !generate_traditional_runtime_htmlr  	  s
   >>&X%%'*<@R*R*R   e  f  f  f

&w'9
:
:%U""_``` &H-%2K9Y'''Ki((FM	!!),,FJ* 
= mmoooo  ,,,,fmmm=fm } mmoooo  }}}1+2EFFFFHfm" U,f.@.@.B.B
C
C%
--+U_U=QRa=b=b-c-c
d
d%&'HII-=))(
--,.rfn.r.r.r
s
s%FVUrf   c                    t           j        dk    rd S g }t           j        dk    r|g dz  }t           j        dk    r|g dz  }t                              d|             t          j                            |           }t          j                    }t          j	        t          j
        d          | d| gz   |z   t          j                    	           d
 } ||            t          j                    |z
  }t          j                            |           }||z
  }t                              d|dd|  d| d| d| d|dz  |z  dd           d S )Nr   r   )z--collapse-whitespacez--remove-commentsz--remove-tag-whitespacez--sort-attributesz--sort-class-namer   )z--decode-entitiesz--collapse-boolean-attributesz--remove-attribute-quotesz--remove-redundant-attributesz--remove-script-type-attributesz#--remove-style-link-type-attributesz--use-short-doctypez--minify-csstruez--minify-jsr  zminifying HTML file zhtml-minifier-terserr-  )envc                 4   t          | d          5 }|                                }d d d            n# 1 swxY w Y   g }d}d}|t          |          k     r||         }|dz  }|dk    r|r|                    d           | }n|rd}|dk    r|                    d	           n||d
k    r6||         dk    r*||dz            dk    r|                    d	           |dz  }n@|                    d           |                    |           n|                    |           |t          |          k     t          | d          5 }|                    d                    |                              d                     d d d            d S # 1 swxY w Y   d S )NrA  rB  Fr   r   \z\\r   r   r   wbr7   )r  readr  r   r  r   encode)rp   r   rq   r  	in_escaper-  chs          re   unescape_nullsz#minify_html.<locals>.unescape_nulls 
  s!   	h	)	)	) QVVXXd               CI	A
c$ii--7b1fa	t 	
**V


!M		 	99
**V



3YY47c>>d1q5kS.@.@
**V



q&!!
**T



**R....

2% c$ii--( 
h		 ,ggbggcll!!'**+++, , , , , , , , , , , , , , , , , ,s   377<FFFzHTML minification took z.2fz seconds, and shrunk size of z from z to z bytes, delta=rs  g      Y@z+.2fz%))r   r  r`   ra   r  r  getsizetimer   r"  get_npm_cmdenv_with_node_in_path)rp   optssize_before
start_timer  elapsed_time
size_afterr\  s           re   minify_htmlr  	  s   Q
F	$Q " " " "D Q $ $ $ $D, 	,,0h00111))+y{{*F&'=>>(DRZA[[^bbhn  iE  iG  iG  H  H  H  H, , ,< .z),wx((*
{
"%,,  A  A  A  AX`  A  Ahs  A  A  zD  A  A  TY  A  A  ]b  ej  ]j  mx  ]x  A  A  A  A  B  B  B  B  Brf   c                 F   t                               d           t          j        rt	          | |||           nt          | |||           t          j        r/t          j        dk    st          j        dk    rt          |            t          j        | |j                   d S )Nzgenerating HTMLr   )r`   ra   r   rB  r   r  MINIFY_HTMLr|   r}   r  r   rL  rM  )r  r  r  r  r  s        re   rN  rN  F
  s    ,, !!! O!&'9oNNNN%fgy+NNN x1Q66(:OST:T:T$VW-?@@@@@rf   c                     |D ]a}t           j                            ||           }t           j                            |          r t                              d| |           |c S bd S )Nzfound library "%s" at %s)r  r  r   isfiler`   ra   )rn  r  lib_dirr  s       re   r  r  T
  sh      g7<<%%D	w~~d ll-sD999kkk 
rf   c                     i dddgddgdddgd	ddgd
dgddgddgddgdg ddgddgddgddgddgddgddgdg g g g g g d }| |v r*||          }t                               d!| d"|           |S d#S )$a  Given the name of a special Emscripten-implemented system library, returns an
  pair containing
  1. Array of absolute paths to JS library files, inside emscripten/src/ that corresponds to the
     library name. `None` means there is no mapping and the library will be processed by the linker
     as a require for normal native library.
  2. Optional name of a corresponding native library to link in.
  embindr  zlibemval.jsEGLz	libegl.jsGLzlibwebgl.jszlibhtml5_webgl.jszwebgl.jsGLESv2GLEWz
libglew.jsglfwz
libglfw.jsglfw3GLUglutz
libglut.jsopenalzlibopenal.jsX11z
libxlib.jsSDLz	libsdl.jsuuidz
libuuid.jsfetchzlibfetch.js	websocketzlibwebsocket.jsdl)mrtpthreadzstdc++
SDL2_mixerzMapping library `z` to JS libraries: N)r`   ra   )library_namelibrary_maplibss      re   map_to_js_libsr  ]
  s_   ~}-	K= 	=-
.  34	
 }o \N \N l^ 
2 \N ~ 
L> 
K= \N  m_!" #$#* 	"+, 

 9  +> [  |$D
LLL|||TTRSSSK	rf   c                    g }t           j                                        }|D ]8}|                    d          r<|                    dd          d         }t
          j                            |           T|                    d          s|                    |           |                    d          }t          
                    d|           t          |          }||D ]}t          |           d|z   |v r4|d|z                                            }|                    |           ||                    d          rld|z   }	t          |	| j                  }
|
st#          d	|            t
          j                            t$          j                            |
                     d| d
}t
          j        s}t
          j        sqt          || j                  s\d}t.          D ]N}d|z   |z   }	t          |	| j                  }
|
r-t1          j        |
          sd}|                    |
            nO|r#|                    |           :|S )z&Process `-l` and `--js-library` flags.z--js-library=r   r   r   zlooking for library "%s"Nrn  r5   zunable to find library z.aFT)r   Libraryget_usable_variationsr   r  r   rm  r   removeprefixr`   ra   r  ro  get_link_flagr  r  r  r$   r  r  r#  r  r  r   r   r  )r  r   	new_flagssystem_libs_mapr   js_librn  js_libslrc   r  
static_libfound_dylibr  s                 re   process_librariesr  
  s   )'==??/ 7 7d'' zz#q!!!$f""6***??4   t


D
!
!C
LL+S111S!!G  !!
 s{o%%ECK(6688cs
||E S[d$ 011d :8$88999""27??4#8#8999sJ (< \R\^e^nEoEo  k!  #s{S D'"233 	.t44 	+


4
 
 
 
%	 T	rf   c                     | D ]h}|                     d          s|dd          }ddiddiddiddiddid	}||v r0||                                         D ]\  }}t          ||           id S )
Nr   r   r  r   USE_GLFWrz   USE_SDLUSE_SDL_MIXER)r  r  r  r  r  )r   r   r   )r  r  r  settings_mapr   values         re   r@  r@  
  s     $ $c>>$ qrr7L11oA^$a( L |##$\288:: $ $*#uU####$ $rf   c                        e Zd Zd Zd Zd ZdS )r  c                 "    d | _         d | _        d S r   )r$  r  )selfs    re   __init__zScriptSource.__init__
  s    DHDKKKrf   c                     | j         dS t          | j                   }t          j        rd| d| _        nd| d| _        d| _         dS )zCUse this if you want to modify the script and need it to be inline.Nz
        import("./z2").then(exports => exports.default(Module))
      zV
            var script = document.createElement('script');
            script.src = "z8";
            document.body.appendChild(script);
      )r$  r   r   r0  r  )r  
quoted_srcs     re   r  zScriptSource.un_src
  sl    xftxJ 	


 
 
dkk
%
 
 
dk
 DHHHrf   c                     | j         s| j        r| j         r	| j        rJ | j         r1t          | j                   }d| }t          j        rd| dS d| dS d| j         dS )zFReturns the script tag to replace the {{{ SCRIPT }}} tag in the targetr*  zB
        <script type="module">
          import initModule from "z;";
          initModule(Module);
        </script>
        z*<script async type="text/javascript" src="z"></script>z<script id="mainScript">
z

</script>)r$  r  r   r   r0  )r  r$  rp   s      re   r  zScriptSource.replacement
  s    HGGdhG4;GGGx C$(OOcch		 M#+   	 MCLLLLB$+BBBBrf   N)__name__
__module____qualname__r  r  r  r~   rf   re   r  r  
  sF            "C C C C Crf   r  c                 ,      fdfd|D             S )zSFilter out "fake" dynamic libraries that are really just intermediate object files.c                    t          |           t          v rot          j                            |           rPt          j        |           s<j        s3t          j	        ddt          j        
                    |                      dS dS )Nr  zvignoring dynamic library %s when generating an object file, this will need to be included explicitly in the final linkTF)r%   r   r  r  rl  r   r  ignore_dynamic_linkingr	   r   r  )
input_filer  s    re   is_fake_dylibz3filter_out_fake_dynamic_libs.<locals>.is_fake_dylib  s    z""&66627>>*;U;U6^f^tu  _A  _A6+ |F  %]  _a  _f  _o  _o  pz  _{  _{  	|  	|  	|TUrf   c                 *    g | ]} |          |S r~   r~   )r   r   r  s     re   r   z0filter_out_fake_dynamic_libs.<locals>.<listcomp>  s(    	4	4	4==#3#3	4!	4	4	4rf   r~   )r  inputsr  s   ` @re   filter_out_fake_dynamic_libsr  	  s9         
5	4	4	4V	4	4	44rf   c                 H    t                      fdfd| D             S )ztFilter out duplicate "fake" shared libraries (intermediate object files).

  See test_core.py:test_redundant_link
  c                     t          |           t          v rNt          j        |           s:t          j                            |           }|v rdS                     |           dS )NFT)r%   r   r   r  r  r  r#  rD  )r  r#  seens     re   checkz5filter_out_duplicate_fake_dynamic_libs.<locals>.check  s`    z""&666x?UV`?a?a6
++g	Du
hhw4rf   c                 *    g | ]} |          |S r~   r~   )r   r   r  s     re   r   z:filter_out_duplicate_fake_dynamic_libs.<locals>.<listcomp>%  s&    	(	(	(uuQxx	(!	(	(	(rf   )set)r  r  r  s    @@re   &filter_out_duplicate_fake_dynamic_libsr    sD    
 
$     
)	(	(	(V	(	(	((rf   c                    g }t                      }|                                 }|r|                                }t          j        |          }|j        D ]}||v rt          ||          }|r+|                    |           |                    |           n4t          t          j                            |           d| d|            |                    |           || |z  } | D ]}t          j        |          }	d |	D             }	d |	D             }	t          j                            t#          |	                     t          j        |          }
d |
D             }
t          |
          }
d |
D             }
t          j        |          }t#          |
                    |                    }t*                              d||
           d t#          |
          D             }d	 |D             }|D ]Q}t/          j        |          }|t          j        vr-|t4          j        vrt          j                            |           Rt          j                            |           t          j                            t#          |
                     t          j                            t#          |
                     t4          j                            |           d S )
Nz8: shared library dependency not found in library path: `z`. (library path: c                     h | ]	}|j         
S r~   r*  r   es     re   	<setcomp>z'process_dynamic_libs.<locals>.<setcomp>=  s    '''!qv'''rf   c                 8    g | ]}|                     d           S )	__em_js__)r  r  s     re   r   z(process_dynamic_libs.<locals>.<listcomp>A  s$    <<<qq~~k**<<<rf   c                     g | ]B}|j         t          j        j        t          j        j        t          j        j        fv ;|j        CS r~   )kindr   
ExternTypeFUNCGLOBALTAGfieldr   r-  s     re   r   z(process_dynamic_libs.<locals>.<listcomp>E  sd      O  O  O116k6L6QS^SiSpr}  sI  sM  6N  ,N  ,Nqw  ,N  ,N  ,Nrf   c                 <    h | ]}|                     d           |S )invoke_)r   r  s     re   r  z'process_dynamic_libs.<locals>.<setcomp>K  s)    AAAQi)@)@AqAAArf   z)Adding symbols requirements from `%s`: %sc                 6    g | ]}t          j        |          S r~   r   asmjs_mangler  s     re   r   z(process_dynamic_libs.<locals>.<listcomp>P  s#    GGG!v*1--GGGrf   c                 6    g | ]}t          j        |          S r~   r  r  s     re   r   z(process_dynamic_libs.<locals>.<listcomp>Q  s#    MMMf1!44MMMrf   ) r  copypopr   parse_dylink_sectionneededr  r   rD  r$   r  r  normpathget_exportsr   SIDE_MODULE_EXPORTSr  r0  get_importsget_weak_imports
differencer`   ra   r   r  SIDE_MODULE_IMPORTSr   rC  WEAK_IMPORTSr}  rA  r~  )r  r  r  r  
to_processdylibdylinkr  r  r  importsweak_importsstrong_importsmangled_importsmangled_strong_importssymmangleds                    re   process_dynamic_libsr  (  s   &	${{}}* NNE-e44F- 	 		4&(++d	 Rd27++E22  Q  Qlr  Q  Q  GO  Q  Q  	R  	R  	R 	  	F& C Ce%e,,G''w'''G =<G<<<G ''w888%e,,G O  O  O  O  OG
 'llGAA'AAAG/66LG..|<<==N
LL<eWMMMGGvgGGGOMMnMMM * *#C((g	4	4	4Hg9g9g$$S))) ''888%%fWoo666-44VG__EEE#**+ABBBB=C Crf   c                 h    d t          |           t          u rfd| D             S  |           S )Nc                 ~    |                      dd                               dd                               dd          S )Nr^    #&?r   )r   )r   s    re   unmanglez/unmangle_symbols_from_cmdline.<locals>.unmangle]  s6    99S#&&sC0088cBBBrf   c                 &    g | ]} |          S r~   r~   )r   r   r&  s     re   r   z1unmangle_symbols_from_cmdline.<locals>.<listcomp>a  s!    )))AHHQKK)))rf   )typer  )symbolsr&  s    @re   r  r  \  sR    C C C 
']]d))))))))	'		rf   c                 Z    t          |           }t          |           |k    r|dz  }||z   S )N_)r(   r%   )r  r  bases      re   rs  rs  e  s7     
F		$V##CKD	rf   c                 P    t          t                              |                     S r   )r  dictfromkeys)lsts    re   r  r  q  s     
dmmC  	!	!!rf   c                 n    t           j                            |           rt          d|  d           d S d S )Nzcannot write output file `z`: Is a directory)r  r  r^  r$   )r   s    re   r  r  w  sE    W]]1 GEEEEFFFFFG Grf   c                 *   t          j        d| |           t          |           t          j                            |           } t          j                            |          }| |k    rd S |t          j        k    rd S t          j        | |           d S )Nzmove: %s -> %s)	loggingra   r  r  r  r#  devnullshutilmove)r$  dsts     re   rK  rK  |  s    	- #s+++C
#
#CZZ
FBJ
F+c3rf   c                 b   t          j        |           }|                    t          d                    }|                    t          d                    }||k     rt          d          nt          d          }t	          t          |          dz  dz             }||d<   d}|D ]}||k    rt          d          |g}n|t          d          k    rt          d          t          d          g}n|t          d	          k    rt          d          t          d
          g}nT|t          d          k    rt          d          t          d          g}n"t          |                              d          }|D ]}	|	||<   |dz  }|||<   |dz  }|d|                             d          S )a=  This function encodes the given binary byte array to a UTF-8 string, by
  encoding each byte values as UTF-8, except for specific byte values that
  are escaped as two bytes. This kind of encoding results in a string that will
  compress well by both gzip and brotli, unlike base64 encoding binary data
  would do.
  r  r  r   r   r   r  rr   nrA  )	r   rl   r   ord	bytearrayr  chrr  ro   )
rp   rq   num_single_quotesnum_double_quotes
quote_charr  r-  dbufry  s
             re   rv  rv    s    
	8	$	$$
 jjS**jjS**,/@@@s3xxxc#hh*#d))a-!#$$##a&!  aJYYNcc	
c$iiYYC!cc	
c$iiYYC!cc	
c$iiYYD		"ccFFMM'""c  c!f1faa #a&q&!	QqS	!	!!rf   application/octet-streamc                     t           j        r1t           j        rt          |           S d| dt	          |            dS dt
          j                            |            dS )Nz"data:z;base64,r  )r   rq  ru  rv  rs   r  r  r  )r  mimetypes     re   r  r    sh     )) !4   <H<<mD&9&9<<<<(rw%%((((rf   c                 "    t          | d          S )Nztext/javascript)r  )r  s    re   r  r    s    	!$(9	:	::rf   c                    g }t                               d           dg}| j        r|                    d           || j        z  }| j        r|                    d           || j        z  }| j        r|                    d           || j        z  }| j        r|                    d           t          j        r|                    d           | j	        r|                    d           t          j
        s|                    d	           | j        r?t          j        r|d
gz  }t          d          }|d|z   gz  }|                    |           t          j        t          j        t#          j        |d          g|z             }| j        r@t          j        |t(                    j        }t-          j        t          j        |           nt          j        |           |S )Nzsetting up filesz--from-emccz	--preloadz--embedz	--excludez--use-preload-cachez--lz4z--use-preload-pluginsz	--no-nodez--wasm64zembedded_files.oz--obj-output=z.datar+  )r`   ra   rn  r   r  exclude_filesuse_preload_cacher   r  rm  r   r  r    r   'get_command_with_possible_response_filer   FILE_PACKAGERr   rr  r"  r   r,  r   add_files_pre_jsr  )r  r  r  	file_argsobject_filer%  	file_codes          re   package_filesrQ    s   
#,,!"""o) '[!!!&&I %Y$$I '[!!!&&I ,*+++\ W  .,---		) "[!!!   J<i,--K/K/00IJJ{85/@@AIM	O 	O# !#d333:I$X%:IFFFF c	*rf   zcalculate linker inputsc                 .   | j         t          j        k    ot          j         }t          ||          }| j         t          j        k    s| j        rt          | |          }nt          |          }t          j	        rt          | j        | j                   |S r   )r  r   rc  r   LTOr   r  r  r  r  r  r  r  )r  r  r   s      re   phase_calculate_linker_inputsrT    s    ?gn4EF)!+y99+
 _&&'*H&.wDDKK8EEK ;)9:::	rf   c                 r   g }t          t          j        d                    }t          j        dd          }| j                            |           | j                            |           |                    d|z              |                    d|z              t          j        r|                    d           t          j	        r|                    d           t          j
        rKt          j        r?|                    d           |                    d	           |                    d
           |S )NT)absoluter$  rn  r   z-lfetchz-lstb_imager8   z-lwasmfs_noderawfsr9   )strr   get_lib_dirr   rk  r  r   r   FETCHr  r  rG  )r  
extra_argssystem_libpathsystem_js_paths       re   rA  rA    s,   *u($77788.'u55.	.)))	.)))D>)***D>)***^ !i    %m$$$_ ,+ , '(((*+++*+++	rf   c                     t          j        d            t          ||          \  }}t          ||           t	          || ||i            d S r   )r   limit_settingsr  r  r  )
wasm_inputr  r  r  r  s        re   run_post_linkr`    sS    
$*7K@@&+G[)))':{FB?????rf   c                    t          j        d            t           j        r|t           j        z  }|st          d           | j        r2| j                            d          rt          d| j         d           t          | |          \  }}t          | |          }t          | |          }t          | j
                  st          | j                  r|t          | |          z  }| j        t          j        k    rQt                               d| d|            t%          j        ||           t                               d           dS t)          |           }|D ]1}|                    d	          r||v r|                    |           2i t           j        rt           j        rDt0          j        s7t5                      }t           j        s|d
         t           j        r-                                D ]}t           xj        |z  c_        nfd}t           j        D ]}	 ||	           |d         D ]}	 ||	           t           j        D ]}	 |t1          j         |	                      t           j!        D ]}	 |t1          j         |	                      t           j        rCt           j"        d d          t           _#        t           xj"        d |d         D             z  c_"        tI          ||          }
d|v rdS |tJ          j&        k    rdS | j        t          j'        k    rtQ          | ||||
           dS )Nzno input filesr   zinvalid output filename: `r.  zlink_to_object: z -> z%stopping after linking to object filer   r   depsc                 V    | v r!|          }|rt           xj        |z  c_        d S d S d S r   )r   r@  )r  native_depsr  s     re   add_js_depszrun.<locals>.add_js_depsN  sH    G^^!#,K 7'';6'''' ^7 7rf   extraLibraryFuncsc                     g | ]}d |z   S )z*.r~   r   s     re   r   zrun.<locals>.<listcomp>^  s    #L#L#LD1H#L#L#Lrf   
asyncFuncsz	--version))r   r^  RUNTIME_LINKED_LIBSr$   r\  r   r  r  rT  r  rn  r  rQ  r  r   rc  r`   ra   r   link_to_objectr  r   r   r  r   rB  r   r  valuesr@  rA  rw  demangle_c_symbol_namer  r  ASYNCIFY_IMPORTS_EXCEPT_JS_LIBSr  r  r4  ro  r  )r  r  r  r  r   ru  js_inford  re  r  r  r  s              @re   runro    s   
$! 08//K	 &$%%% IW0;;C@@ IG1DGGGHHH*7K@@&+!';77+ .g{CC+ 		 23w':#;#; 2=&111K_&&
LL=K==V==>>>K000
LL89991099+
   a||D a;..q'

 M("3 MV=Q MG :g		 :">>++ 	3 	3K

#
#{
2
#
#
#	3	7 	7 	7 	7 	7 < 	 	C
+c



./ 	 	C
+c



4 	: 	:C
+f3C88
9
9
9
9. 	: 	:C
+f3C88
9
9
9
9 M191J1111Mh.#L#Lgl6K#L#L#LL[+w??- K1 rz1 _$$G[+vwVVV	
rf   )r\   r   )rD  )rm   r   r3  r  r  r  r5  r  r  
subprocessr   urllib.parser   r7   r   r   r   r	   r
   r   r   r   r   r   r   r   r   cmdliner   r   minimal_runtime_shellr   r   r   r   r   r   r   r   r   r   r   r    toolchain_profilerr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   	getLoggerr`   rk  r  r  r  r   rb  r   r   r  r_   rb   ri   rs   rx   r   r   r   rg  r   r   r   r   r   r   r  r&  r.  r1  rE  rU  rZ  r]  ri  ro  r|  profiler  r  r  r  r  r  r  r  r  r  r  r  r&  r(  r<  r  r  rD  rE  r  r  rN  r  r  r  r@  r  r  r  r  r  rs  r  r  rK  rv  r  r  rQ  rT  rA  r`  ro  r~   rf   re   <module>rw     s      				 				                                                    # # # # # # @ @ @ @ @ @                  A @ @ @ @ @ @ @ @ @ @ @ 1 1 1 1 1 1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
	6	"	")U)*:;; *+  	 
 C EEE    $	 	 # # # L ; ; ; ;: : :  @ @ @
? ? ?1 1 1@
 
 
 ! !788" " 98"&! ! !H  	( 	( 	(! ! !  <q q qh	 	 	*a a a@ @ @ 0  0  0F-6 -6 -6fI I I6% % %E E E($ $ $  6 r! r! r!j    ! 00A A 10AH" ! !=>>  ?> ! ((  )(< ! -- B  B  B .- BF ! ,,  -,$G  G  G T ! ,,    -,  ! 11C C 21C6	 	 	 ! !455# # 65#
# 
# 
#X X X'$ '$ '$T ! !122H" H" 32H"V ! ,,t t -,tn# # #07 7 7&; ; ;|MB MB MB`A A A  - - -`> > >B$ $ $$&C &C &C &C &C &C &C &CR
5 
5 
5) ) )$1C 1C 1Ch  	 	 	" " "G G G
	 	 	$" $" $"P) ) ) ); ; ; ' ' 'T ! !:;;  <;&  4@ @ @S S S S Srf   