From c25aad7b49ce76b88b7e1692c2505aadf07955b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Tue, 24 Sep 2024 10:01:08 +0200 Subject: [PATCH] Add ability to (de)serialize symbols Fixes: https://github.com/quickjs-ng/quickjs/issues/481 --- gen/function_source.c | Bin 3177 -> 3214 bytes gen/hello.c | Bin 1329 -> 1353 bytes gen/hello_module.c | Bin 3965 -> 4027 bytes gen/repl.c | Bin 139357 -> 142597 bytes gen/test_fib.c | Bin 2711 -> 2791 bytes quickjs.c | 81 +++++++++++++++++++++++++++++++----------- tests/test_bjson.js | 27 ++++++++++++++ 7 files changed, 88 insertions(+), 20 deletions(-) diff --git a/gen/function_source.c b/gen/function_source.c index 4d4ca0ea260b3cee80f3e296c1ddb8db4bab1c56..0ec70f67a74983e3cfe2dbf9ecee79df31b547da 100644 GIT binary patch delta 1031 zcmYjPJ4_ov5Y^e7eYXJ_899LX$e=?haIyE{%oP-LDM^)vM6!)Zl_pJ)5-DYrCW1_p zCNwmuqDbjOO_Ov8DrzdIY0S)&)&y~WSe0lb%u&>%X?GL7H zkL+PbVvZOi4kYF{=c$~#8RAw)63PpZtR^H#a7v`MOhdvJew<3Q;w^cG-cGI3ORqU6 zq^^>*Qre-9-f|YBpH(?}zl~C;o&#|OvKm9@-s+sxbJ}$i#_zq>vdT>{O%A!*HXky9 z)ktEZ#c`W#Gk&VLwwpLX|6P9fK!mYWL%%A~jGWaD%g9Y7dcsH#eQiv?{dwA`Ho!tR zw#(3NRr4U+W{kX3WLV}ga#oF+QX97Sd+JY0)_+QO)o@bKrcCyy+=AjwuE=|Q4^RW^W%C@P$QUc=o3^QWnY{A672!L#T&MH)d?0r&r&)AF#2ql0))i(;UKC2!dQK!f}^4 zg0nzHjE8T>rkad{Ha%)ytc$BHtg}9XxLg z%rjGJif;93ufW8mnou`mG^6MoMQbRIaz<`*ZY!h#+UvtBf7@%ozSnP2om5D_)eSiD zdhph})?#x0>DKM=6?+IDtr5yI4b576%gR8HvIrF9v8Hxf>Mz+xKAr@rD xzA}{Yt3u?a`B+1uq$XuSDL&E%DuHjR1E)%)rffBxYIvt;E05LA5@OpV7}AhUwW|%N%~lO5kUwR NC-{~6#hx#55I^@dVvhg- delta 428 zcmZ8dF%E)25DZsdX9o!d54hqu@D2)Fe_HIDauu{NcKFDJJ|@2IS{qZe63p`81rTPfUY6TF`!WsLj%S$ zDfqk)yuSqTQhIIDf#L9N< zXI;(v_n?B8xQBY6&RAGc=O1S71V`D4={V;29HA{Djy%3fdvKYh4@=P>Ss4A)8m0=@ PRE_8#EDZSl#kTANu()Tw diff --git a/gen/hello_module.c b/gen/hello_module.c index 0f8dd33685bd8899d76c63f5cd5c34b77355134e..a2db9e8b79c0ff4c8894bb84e9b88d75d4566617 100644 GIT binary patch literal 4027 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

wv6G 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�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 K{{7?2m;V6b;oKPj literal 139357 zcmdR%%dRa=c9r|}6u(5z0{h(eIpWf!K@ZVH$U0Y3P?U{bmN2|LbB=FBFW>g`|ryuU4Q-O4e&<8A3kf~ZU24s;kbSgiVq-qCx8z>j^S4V`vC4h!JH4@ z1@MaDmj-(c=}!lWccS(|cMQNkCM}LlC&6I*wJ5yPKj3~hFcq~AEAGDYNdVw}(Nr|{ zL84E-YwF9m(^~rQwK+z8uect=$0&+<0|iv6sg~s9f#SorD5Ol zU`q@nLEnnPYpL7ZL-Pj!vcP+|1PomTGp~p3CG>!9Z3OV5E0kdhL3(0p{ahgm3a}Bb zhN8i4BLz1W>7K}Rz`g9) zObrXnsfD^w$PQqYtC4>IE@$pZBO|pb-vc1yI~Qpfnr}&M`02Rc6yA#a*W?9EM)(VW zFuE{Y3JOb}ggmJA8!QPc@#Rc2$tDJ9W0l9XbkR=g5? z;y5k+0x;f%x2D5cP;^gP5IRQ-^}+fHpS82>lBYM^bgcKO|`gyVK{QN1r05ky`WIc zOK5C4aFiqqiq#PtfXw3%4M!l`rLHPnGys|BF~DpiBs7sFmW&TqLsw$SDb(?B!v@90 zJ%G>^7otG&qO%B{m<_qTDLWYlgsV=n-} zhB$shRo-c8&Zu#S3*TVndSE?Rz3^7-D(=Z0r&Q1~*kl_U?!ZIc1uQK=TH@Mg#PJ&{ zCx4+#bAkq@1Gi29hB2fXDsBqaJ-Q zi2DZE1K$k^lW;^BMoX}Pe%#$Blc7CZ+QN~Sq;*oft7|C3xz)VhV{NttR>faJW6N*~ zf_6@7%M5!9U}#`ss&vwm_^VO-Ra)8}AB-`{3}bcd;9I+63%6YpI@yMvFcnLehz=QE zlOwS7aJ80-Jd3*BRZ3;XhnXV5IL#5d20&#@{i4=$#o8JhNX60(R+MW`6QZ%SlzYL_ zT}Cp)cJF%;Co^xvQc)92gIw$68MOv5IUM1c0z^UN{zyCA3GIc=A8ChMtl9WrD{F~( zAoC21wnDG`w}oEHq2dASIyt132q3E!g^B{6bCFwF(!9Vcu?9Yv6yHXN|NhiUk*Q>O zQ_w9qKH+O;5uGVd3+<#LmR_To!N79>C^!ZP{1Kc5Ty;afBz)dwy2lMKVoA(A#oZLx z2(h5Q*1g|66ZcPN=~)VE8QfK3MZ5@A!X6G1_e)x-^(HS_835qLM4a6_FfBVvasLSg zuYaL0FRmIQ!wCl-<&8ASkSx8y1OCV)KzzB6xz|stHJ#6mlpKWp0b;RKhAOxtrNIp7?NS+^+ssN|p>5A8{#% z*)}5KK-vK4;T9`yKdO`{V61Ql>mFCn1(e-e4A|8MrsjJ?RCh#ytU8imO{HcooiQ?e z!CUX^e$!cL9x~VkU}K{>84i{QG*SC69pO0EUg^345@CGG`agjFnRwC zNk$}~fTnO6?9I$otT#Z02>V!R>8urnLPF!fSR=AsB62p#G(!^b=2@uWq})SGR_-%8 z0+1KEPQsGX7I(}Tna_!g787TdlQGqskt@x!mMokWIj4P46fKr8&`7sEAUe6*HxV_! zC8oOXZHhqT{iS7@$BK);=@eL<-0FoAx6l&JRww}5JI$mccpkEzp4#W2@| zXwf;V^^T6yv%7nEg@P>V44WP>=!=2?%jFz?r}S@SEJIB zZaGy&Bp6s=Wc9J07BkCcb{Na$9k+MuAPP>5&m<8`QkfTLFd#vf+D9&=WKBOg>`Dfa zJ78&-8@HhYdV21n)=v*HoyY-6`GMj%_MjB{Uz$%9!4_;rKNP>-DH?=1e0VK(NyeBOj8oO%wVzs zY^F>$(3Div4LgXRKMZn>^%*s>G{{YAZiV0;%8G|lMguI%`k}t2Mr;s|!!n|o!2=_yV+O%p4ZZxrR7+M(3=t>Y*nguGHWsi=$R{=~%sHtSwiS*Et z0Z0X+_8!N^peTTapZN~WSj31ELsit90drnTc7Hjns8I-7c81Y($Gt6l3z%$a&eN zI_`wdN5oJod~-N#nS_mTb--{wul*q{ao?j{Sk>Rzay3hMj%|qy#0Gi`MDLvWP-0fj zaKRHI2^}%@mhz#26YEYQ!j#Eo2Ad>(K;CC=1#!Q*U zM=bfU5Cb1Xlxx=^CJBWTf-@f~!+aTWWOd!Kn=FslZZw12*>F}X6tDp9K#HdtiB)?m z1;uMOkzT41C`6e#m9@gXQ6GsJNp#KBHyG6W-eLo>P^?G(3$p?>kkRdriVMn2P86&@;A5 zOItH2S8f8B85@+303wmNprBBkWpH1N)tp0UxSuZ2qT|>^{6HaqbOB9rxN=|ic5EPn z{}K1r5)Lv1Z7s*WB+08u!`)r8w=1{v_;?8p!oSFDD3J^=+|@(O98Kzxa%OWdt!yEmFatQ|M< zNCEX$lC%W(5{_{BlPIvc0HWdE;jOGqeu{##G`zwjUL;nXA}lmwN%yIB+c=WYXx8OL zE{*t)?s$;_07|FVKp;0bp{vu9uk27BEnfl}zQrCWriZr41|k6v!8>D`M13&*$3lBk z4f@24TL+lIHAH9PYj0h3DA&+bhbU~Unwc^<;w+*_V`+e`XiPc0K|&`RX=zcjHPBve z7wv|-unczaQ{sW6Io?$~xDZQg3)KL+vuu13Sg_=T{zp;>=QCr{&;9Xjv=lDwCw_AN zv1j~nl69qmKOR`16aB^29!MoE1>dRreILTj34Z?oYb$ynZ3>Ci7QnA?M5f{z!@LwDiSjZ)482Q z#x3(Lh2{zlEqUF3R}>9^L1nV(i0w=6VDK3l5@bk#!KB<pdRUsh2iQXmFlm)wII9&3=mbGwEDX1>#M#*srgo4k zM9q>*w}!1;Ik}fkfDLL5;I4%#rU9p3F`4@+rLhJ`L2-39Lb%U{JbMBq$pHYzizCP# z3^pq5A%l$%OE@Byp#&?iit<4L(q4~%PjO5N^Qg0i#Pu3TY*3A0#sxrgDit*a`;r*& zB$&a7Vupo&MN0#`m8Qu>>?EGBCei?qu`<4VO$H$b-NL2GaB{J6$zD^K{MEHZm-mwd zPR|z)q2U|vXX^gYu+$?8WV?)PjCI9o1DuTCOk(e_F_Z@d!Ua0=P-j~J0=QUh3h3Uk zi z45z>aq2pd7!rWn$`4kTd+H^Dto6OC-2H+pp=22ej zz6(A*4KyvZa65K23}ctOX3~;a!bA7sYxCg&78)5wQEFx)F*}cp93`QLQEIBABK*{C z32fthcO~7qP*bTD1>6*tgD#j!G*4}M(|5mw1rVL)MD7h`ht7~nG9a{WxmF;R?znFq zqf#rw*>sAg?JaZ$TWTDWgz0YYwHj6l4LKOY1w_pc{80mPW|~2X_Ev`RP}yX%C!vW4 zFzMQsPV$>ISj<{mOSaIx>!7hM1Xn1xO#muQm6-%--5AdiuEdN}%@B>L$Tr>d8SU#jgdioGdgJ=EP)kE<7%+Se&VEm%@V_JQ3F1Po47N^is3(ABEda*J1uQ4@glU& zq$t7Iq-IKnG!_QJ?W9m=4N)rz8z4o@)e4MFaWOy$jn6!jL@bH)PfBu7ST=v}C24>Q zV}%<0NJQGRmKL#aH2@Swu6-mS=hgvT)RwTs8sU5e{O6Kk#8=ZC(OlPMnWg|6NaDWZ zSIBUW8`L2KBBGhFw+)JW`=QHl-Nu2p>dvAu5V&`n1cHL&n>z&1VmLYWQhYVl zjCm^_#ZjzaDMa_wK~ri4>mXW^m}ZnRuUVEo0dNzj0$%bTjCma=W|p`EH(mr~{$`DX zjdzmA3jG;xb%wjbU9!0&1NV|og_}FslNaUIl6wt|FNH3u6t!9P1aOsq3elnlA@c6e z-T~VV)Pyx?MS*x7QQJ(4Ju^0N_kG7SB1R@9bUfwt~SUox!5?@9Nf3jlp@qVsJYXDX0peQn=7EsJ(!Y=B+66Hv(V0Sk&IC~nyf}!G6PW0I%tH^BRCfR*oZd{KIF0}0>D(ns>5pq<`s(axlN|~ zgC*%<-@*4(sl;ks4oApjWOAN40Due5w9qnm0C&KP0@zNWQL|*y6sSz`C{$Btjcp1P zzg(4gb3Q!^)qAT&M)9r#Ru5y@pfHK0;c_Y95oKOE$VxtV=GJD5U>9?gKK!j^z>4@i z3gwsw%J3Eg{_BG_!oe^#ZaEjix85cg&h_YSjqZ^kNPH~=nD zoQ2K@{*Gg@G=T$PV}Pv@G&ZZa0PY+?&Ig?(kwMP4MlEX#pnLMjSSB9&}<4g1^E;Ua8l!v<^eDj*UV&uBz=dd!txT|q;GUjd?}LTGdrL}6pC^Q zCKgQur|WbCjditd3d_>09LPLiLTK6Hgs1_G2|EaEia3Ry(IN^G&Pjh`$tsp|OOuBk za0KU5x%AXbTV}XPu!MmkzS8zi1+f`rn&O| zqTu>8Se4L37BUFTSx|TU5`b8JAs*Z*{V7620jV6*vQJeE2|XOEbwYZS{}cm#2XRN% zk_;$xA4X6BaCOJ@P+8-{v6+fg>FRcGa1X^b7&;*y@MZpHJecDIi;6lM2nnr87XVO3 z!huKt$r53tJMVD{7}K5d*-cBZ5#n0WAVo{=_P7N=gsWL473I!JwkY;~fmzX@b8`ap zxOG@#zmp4a^P1j|xX>9$C3I+mr%UjSmfTVdj!c2m(@N?*l zRMlWYK{JspcC95O1BrGh?iv8qJ08T}k_5OD=HrzsmtChp#7&)qmaH*TNS07vPUQ}N zotMBG4DiI-lt~doLJ6JLjSOOE0p0Lo0dPxytx%}pGALj%T-p_|)w-qVbzfs=Ng_H^ za4ke7+hI5hssSI7g^iVd12_m#F4iC;!Ts7&2mld7_biq1F{esgkaTZe5tojPYjhu( zs_cERbQzG%FvwaEH~D2L+cV1Qk9~<;j!+U=m7X>Z;0SY?$((Fl~9w z(lDg}R$DfJl$fTpirwAco2i*ut<)5}ghX+0uLyPm24IXfz$DlBG{AH4S7O!IG>@?K zMh%*(joXv1Z7v$G2kGr+{;kcYNR;zL5=Y z@Sd^$;nbrsF%|z2ld~_A^GTt%Y>=q{h61a=iK8t_(8}RXh?;`gfLAc#{W6?^k!mrV zRC&U8pu-Q?S+}dfE4U+%oKOTyOoAnnm#&G&Wwq-R22m;Wg!N#|g&nLoutfK1QLM4* zs##i0Mofc(OwOGp9$-c?ut#?3Ma>w^39C(e6qtn7rW9i^S^AV~P8@8(ykTmOl%W&)1w?Y%IVr&t5 zEV>V*PlW!dc(`JtZ7eNaSlW9%_iB*Pf_BoyKzkSs$_=o1t6by40>t#P>wt(iR(C_s z8fb=JQM-t~!3?~}`LKgB+yyhb?`;Ja_Q%YuLE98y<2KeL)ub!{MX=u_ySG50E=QDF zDOsT(uW&Qgv5d7ub`Yq+~u!ov%3sZn^>(o4d4M$@HGL+B+?Jp z?lt&FG8jOy=4*--bBJjMsLj3(HYmQnPjljbf(=yc`!Xw!EnIe8w81JzAbI)z;J&0? z0T6lzfbzKCTFSm?l0NRE02$5{96*^crAoRC3|RWT4dI?snb`m@a)jA_ z)SV34(`W;DSXfWP$EYaRXaii}mQD;j^aF4M@J>kT2b%Otr~3lfEMS1u0zpAUPneoA z77!S^dSOSG%~EcW9hN)L8DPzlo7-`#@8HsTN0u%`4PbIBrn=Aa7@sX>>P}rZK)&nk zV=&S>i++?&;i}{ymgrhE3D21e`bH=B_TnS=`MiFRW^!$^(6pu3?z*tLZIk~(!Hjta z3yu|v@cK$je!&iyRe!(GRledM6vs9G%T#g{f1L#M&kq2IY=(8c+=nGJy$lfefC-V) zrZb-~eP&Wp0D!-Ynk6P-OAVKBZP%0mHPGmK05AqpXmIO(*{Ut=?69*W6d%captI1p zofsf=elRR?Kf<2we5F1tylQ}t#e4=4l!pSulK%OO9dbBBu$Sgq3B6g-R!0sJ~F z{S`mR5cTR=n7*cagF7w#O}EkoSvf%Y+b;C$u=KZ0Xj)$b??S&0OMlyiPD_8=g$_%9 zyAWCcCcO)tmbQDRLc`MEFN6+Df8T`;OMkx*IxPKt6WUE8e1G4BeiN4dz6;I46a#NU z*XO2iqV}a9o25B90Pv4p=r>{MADhsecrfrTG+)5-@Gf*(`o}JGSlZPi-JAE|jC&V4 zE&UOp;a=CgHU{uVgdU@aKkY)ljhOzl3!Rq!vuc7}C4Yvb2SEole{+QNXU#V^l&%OuJ5x;TAe9J?eB0%hCw#Ivu0+EycsquG2ZJ z>}}xP(q8An_a-#UOlJ+(>BJq^uG8aAv&6a(OS?{w;U10b{bRQ@dwvGqEM138n}UZo z_ht#}(F>sk;Ne~9jA_?t)ghF~(;$Fdr^l#-4oiPT+%eoji<*HgbPh*MyH3ZbpW+)D zp>uez(>$t$Z&v08M(6~-sM9$tNdR`89-}QZ`xhSGgyyWYM|YuleC=T@J#aVbjA_^D z9Nz2nB6L{Vbvl95(yr4v95L-WJw_#TSlV@Z3^(6l=~1V1I4tct9i!!SP2p8o)YUpC z5!qu-1Gs4CB&yDs)N_XIML~i8kp)Lg`l9=<5|LA7P6BsM;(E+!3NGe3i4;F3^&IY` z;XblwtV#H<3wt86Yvd%N0(p=@M*M;)m%SMV&;|g=!&LpPo<>>D+900bisKFR{gvNAn4Tird zw|$e7*;`>|_g3PSsdV)A)-Wh*x|-Q6eU&?Wl{N_Z>M82JgH~Dan-W|h6@aF)FfLoR zmh|^il=|-itH!+no>)3urbL&P&w(;Gw~g62tVxDCboGuXM#j3`N}rI1=jaI}ga#>OWKJDHTD zme?f!($`bU?0o(%ns&#lL#jqjY4(JDAedWrpZeS z4rS~M6rx!uWCs|yV?!=8QAn+Li`a0zxvQeCKtE$R8SynS4LNUZ-5Bl_<(~iWV1T+(U+GnpUffxL9U5Xaj)h3)+ZqSpdk6X$J$y5i#7Q#>A2)&8_g} z821)6U*qad_Zr}_#Z!$nh1{d(dlZ1><~(|<`-jjc^)+L#6n{&54UpR40hJwF4uTHJ zh{O4CV5MG9jT|+n7V6q~69s%}k2s8#8gu3oX*0&U@XpnJNM*%Qq*?SoGaL-0tLHUc zfm=8!&I?Jow{!KCtGCeJ@66%Q{V7fwz}})s7kyqN%-SmzK;j;}79yKWwdbp>H2Njo zBDu48{VMPOs#weVR1XuI0+{IVI5Cq<;!&U&&3f43>zaic9jR@op(#N0&eF7YlV$_V z3R%}MkR_NW<8J3Lod1#f=nq9p_Wdf5HVnDa0hG9iw$*eEa97D7-RKc$yqvVfNzrFlN=kLr9iP+ zJN*=}2B1Lk{Nc5jS-@avC`K%aT!Q%+J(HB3e8xO|2`&vb9HH4z^0Zn>_w+7P(>3Wr z(PTjz4khMaY9@EYupgMvtUpMMMa|DVhN91QsD~cS_ZaT$p`W@gcN9Plha9fwK7 zmiR2dd*Z3aqA5)N>e>J@nNQHJ=o%oio!6i1q?+?prW_?JT;P(8N?09DdMm02bg(_2W9?4zMw`X4bZXSh^XWK~qz) zj}K!0YQw>OK6EiYv4mM!Fn{KqCISdB#{(^?g#MyvAyrpAwha8U+xSws5?Xp#4ve4~ z)XFufGN00XW`MtPHSgK1Iur#7chT)(2S#atlR~CMb~jK1FOo4@&p$*#{4Ebaz!%w@ zolNfu*nd!^WJvE~tHo(9TL-j+O?Y+ECKH`9SsB2mvAs445wSGwAqfUc*ZxGy;IyT> zR;$g%giA;0&a8D9F8#;ewMIfAsyPj?I|U0HZ-j_dDGoSW#jck!9vdo>nWG!C063F*Rq((*P$Nt|Lt7=q)1&%-%9siah5hGl`q*O^CYn z6aWWeiQqi(>RLfT@j)#CaFp5rtR+B1wgup_T9&%A#PF!C5VZ`1sFQo7yzlDc-e(Ze^ARApB-bHOB&gnG=d|4NW3D-Jz(g)c|C*rS=TZsZl7*mh?>Fl8wn^ zvAW3+f?if8u_Slk)SvbV>{ihM{?MifizIw-Z6 z0Tu#MG&-aX)o25FKN#yup&zd*bj_@qBpIldl7zHHyW-SFQj6%KVBHKzV&k=#oG17f<9aeD@fS9?oYf(6v^^k%63mC&#-(f>3^oM-8HgN@@?6B|Ro?a-yCI?Fk_h>A% zHWzAq1CzfKd-<4(ABS;XB6gGeCF!d>V@~ZZw+skJ zQx2E|U#Vp=DDeRF9{8?F^iHaMHM1$OjSU^j6jP_e)tu>XQY(H>TXL_^0;{Kg0+15< z96nmVvv=uD0Kz&ISD5Y;Z5iAb(IQAhUX`^f6`aLB%6<3T!!1(VmT}}3y!V??IH79!w zaBE{tJu!A@$%2w8?h1fcSy(iZyY*LJ{^Em5cEK05N;ZdXyG9r0ZM5xnyC{h~T@}sC*?E1TdTBk_ts% zWOB~vGE81@VMhUUth%1n=%HGba!w(2R_kolnz2ZjxQX9x_VNNrf{ob?x2@s`Nr zycDC}wzKDiftH{lc@EV}29bN9`(|mV{s7pOo3Sw)JOQY$2OyUQe-15OG`ix|sfG3@ zv{c`i5KFoRmwsCZjYUY!=12ex$KQ)5`UAKD{FG+gY9&ULpGvSOXe!IHr&;g-xHBB; z_PaEM=yF;~9_px2-$CZ%ctKgFDKN}qMp6q$lD%mpU-ESV&^L0h2^&*4hy?dk?gUal zQZCW#lbaZB=&e~|i*e#;wcev>07vb>QFrnwHHWGEbb#EtbDXbDoL(bp3aIrmlTP-0 zjx1BWbxY^a(h^^x zv1PTgQ*c8fte|kxS2n3YXbMl+nAWJw(g3HzT6a!t)SVf34RFB*?x2e5)^0Etc%kY1Y^NNl;Rykmo$$6rz<&%+S?t~Aa?n`A&ZF?Pv!%cIe9p9XL!a!XFZ2l$+qLM3If2KdPp zT#N3aD3+!z8R)xXc$$z;caKuXD(7iEnBQChKnl7$5G1O+xpx+pC#& z@7ojD0#5c!;lyQOI$^Cl6X_u|E(os|Opdr~0Ovg2+5t}auK_N4B*k|owRtU;wuOcB zoP_ofIy^UH8X5d>c?=i*boeSdqL9O30k11^6z2o?7dZmF=I+>xgrerG0a4z~HUJM` zq_@IC%<@&lQP_LLmxa zT}Q$dGax!xqT+*ZXJ#V$36_+ECW?cC!$`w6lk9LRDG)MH#3TMiIv~_ zx#-C=fNs6@u3101aVrrf!)1oI3J2c$*ofr^Ei|4u6^DWPz7%jmai|qN08F^-CXR24AY8L-C6=y8PsX4;X^N%5ZF|cdPd088+4FgC@2+N(9WyUIwJ}UKOFwDj z26+6)oMOHt9$L6d1Hr)jORN`gv$PxN0Sc*Arg>`PLR~v5XFFh~OB)wJQEq^fd(|Ds z7imV8F^XJpJhgEn0w9;CY)BD0zQ*>W4mC@;IJ#JRho@DPOXvX&(J8}R*3Ua;2@!oR zB!MFmX2dszd^-7b87>)A*AUbSP^R+P4aqQTsVInM|4cj*5(inXW_39 zO@EV?uqfF{?BRU%WtKug1>~tpMRo(QU&SJsUlgHP$ECCO`TPk+ijL6LGjVh-8PEXPW}PnTsYiMJ^=~OTxjYdr~JClDGm%iMeb4KoU`a;|NqZ zo+-ZAW)rnoZGcN&>%P+hh=$Td0hai?YQ4b#&}gwL08P5odeaY9?;pxX2ZPdQrE3Z- zksj#&kmq6n{!E@j=sVq?79s+WrKfwH1f5<~_Z<&xA0XT`P=nDHNda@|c2MwF`GU#V8q_jLQ~pfL4NY|P#TzWc8v z^eT(kMc=vEHQAV8F1wG}@KGn(r??PH@|im}PD#H3zLP`6<)w!}ae*tb;;A9O^82ptIr@rgjijL80 z9tFUnE;FgFo#^i@?UQOb976ku7@x~9Y55P=297%{K1#(0OE1xB-?@gr^+sO^zw~iZZp+}G_S@9z@6V;)GB3G4h=Cun z%nw;T|N1ixNz{yysi2AW#A+gr0^UXLj-w zFz2L7xiVae8?NSJnWGk(ioa^(@K#)ND5EK)9=PTJpp_v+RB`{@j|Y-;FqWf*?o8qC z^B;iu1DE+GBx+@Nxt6Z#epB!VSH%*#Hvr1u{xGEg#y@S72%6=3gmD94IIy}05Z1hY zH5{Y?_yIcr7~n%V&a>j)3DbLI%4#&UBuN91sT6T!+e+I_A&2)a!{I96`fQ3=+ROyl z^068;=1pcnlL|hgr5h9_i703i-L+eD7y!`<+yK;p&uDrbu2E!|jfE&k>sF$8wGzoD zx-&&@fX95}EdCvkC2NQdD(1Y}H!*p#OjF20$oZ4}td)0YhHQrnHkmf~_pf2`sl|&V zkYM}Qu*P=LAXn_+g6SX*FWIDiszNMn0GMx)1lQQ}(t=xB;s>_u{HXN;UpzyZQ`=%V zpY5tZ$*)%C2Prv&Rj6AARzDb@b{FgV>-sY2q$2>;fwU-J)9}L>sf1?-exQw|=Xa=D zxj1%Ykc9%8xs0y@2DedUzcg{6jruz?MbnhtEcAk7Ga`tlePn5Pm0GdMf`U3dbR_`& zGjTKnM0w<^+2bDoVC5}Ttg)Q`6^aVu27nFY7)iJ8V;MhBk*&VEpeWcEwPFV)Ngnj@ z!<9>3@)ID5=%-7fMppeHmi&=UnudLnHKwA-=4yTJuVuhMq^jgQpXx%V?A-u<^0}ET z70r6FG}!=7mC?ebn>Z?@n7VEN%;XT+5^#oBsa^olH27TFaD+xj&nNnJKGwPD zR2Pmhd`P0vaR4w}+QF`2uR?P)7q2KcH}CSAWLI}W=+O}s8-D7PjE%@{0B=PxJO=7M zAMN({RHzSTNecC&3I+hy{nM|#iX|*CR%)#o^rrg@{U!4;i5!JB^w&!Rjh0PBAr%KT zP4%AEI(le{;G}^dAhR#y&hkw)-muugFr|Ow{h}yJ^vv6&0-~j8HcQFI314e06i}OO z4Y1&oHjGbGkz_u$kkBOByQ#9hkrJYCN!|uGOq!0QLK&99HB*@A{N`{m>~gG8uSE?& z6-y754D%bk4Q#c_;iv=D=6tD(Q(okh68+E;ivsEpF3qIw^EHdzsYXfLf0^_Zf!Nd|eCJ9Jmx1WJe zUxIr!zKmOl@BkiP)%}A4U$4Vw_;P=OSz~^n9bt(xpE~-fu|g*bT9#3E!F2cj&cf1e z0g9E6!b;J#2h|iv_i0^!=p|y!tdjY5+_<1|OVR9a)d#giA#6!7<^sMW5a z?s^WiW}=(1T3tmqwfc**H0Y9KvMseDobbVts~#>0I)coW=AV#cCY550-B34231ELr zKNTWq&UI3=w0MymZsKdv#Tc)ujU=F3Bx5>1&UX>hBu_?P$Qquier3TemSFV)fS}o} z%Y)&GNNN>J?8M}ghs@h7{R^xC_^r=;mX%X8Ro2V~@GpsN_9hpCj*l%}tQ5)Ew|$wb zsI*}=VpGIxM3!iBpYfJCwOLc$mq`sN3D;GKrKL>qA<0EwmYsm#qNJ}F7xYr=2$UF?39;r=$vW6%?8X1I%z<1{tE0Y9p(=yP0`Ns?hKoW zN5I}hSTd%-EAoQIlFXC$pJY70Fv!gIQ?$ zFN7vs-9SX1MUqm0WT2-&xvTdVGd$6EYX`uBo2O-0xLXp(gY3W$`q*bgXZa15QC1GM z!euhRW1Xa5Te$+bXQ0?P8Luobq4s`ZbxVjZ36aB?=4201euWxu_19uW zq1cnqgTJTjRa7*#aDFzY;VA+=&-{z}~W>53`UluZE1B|W};)08POprh9? z-(o49@BJu*2ip{O186vfPGEj^sYb<8P8A)_&=^=O*@*1urds_IHk!oKQATHhlv-1) zq$X>ShFNedn>jp{bNehC^9sdW+@oSqKxJ~ilU-XsqCX8Pp#^ZV=*eVIE_4Fe4Cfe> zJd{ZmYDGr?8o>CE=~OXjfCrw_jIHz=zzj$@7~uJt<0LxSI>RHD=|oP`s9+nd)`dQh_Mu2&w^} zF_Kg~!K6c|2Lgwd2oVn`P~GVdlNIG!+8zLxpZ~5&wy`MJZwej&4w10#rRNGjll=5p znJ+EPb_o4I&1nF-I{PL7Lc!S<7J=++jf2VIMOfDdiNisrFE@n?!!Z>^t1n9i4fwIC zm|0GGOF#adS<0@BA3p2v^@i=I8V;fJSwQ;F>ByT{67JKPw~`I44li8BD|P|+2?GP^ z8VD^pKR5{pzz357h*ps{f~QgC#laGo1Teqbe)y6MTEBa60I=2qlh5Zs8E*wqdMk?z zlg4By19t=M51Kx$uDMS7S0NuR-pa8(4Rt+rAE=3LZ_5nm#LR>ySgx~v) z^u}ht{ns)G_ukX&r{!yo)EZ7k+rRu61sWSj1rQa8tU*7j07S_!V}TWUNJ6!4 zZwj;p-jt2023BQ)Ld|S|T{x04AJj4!{!4DPpo7ci82`~7-l>|NCYA(EmDpt<-ILUO zGH2HYKRvs*5w6pBN<k} zUX0~%=2;hZ>@X8;S>Phi;%RW<=RgsV#568Q8?k)moFw3f2jS#t87GG!=b={Ii?wL> zF{j9GfI2?Y{zFnhKcuZpnD{I$Ty0KI0PnFXnlFFOW#!95hFN*aIw^0tt~b*bfA>=A=LT}1MNLhi(Pk}9g%Bau!1 zikiPXC*^_yKZR!9X_m})SmVU^!8UeaRZDJ#jrUUMq6T8a&KLS#wkhO4Y-Ue%%@Qu{ zens4;=tRW=@K##49)$IQ8k)jM4~H6X#MMn20KS*n!_-jjJZdEXr4R#e@Ln!-sBb%z{bHHg|&Lj(9MWiXIxIMES+rY4;SiKhYFo{h}YG&5+qFQnyT zk^!ACNzuGKQw%#)r4vh;k;1QTKg@pDraMO|?nn{EYEy8VPA}}Tw}&s8-Nwcj+NAp8cv9sCBC?m znApbgQZSsqe6|7n_&NfG?0o@%;qtYuO!P43HVcnNXu9hQe1t1XAM|AhS-_%a(<|<8 zDHwo=6AD@(ryQxi=7>UA+6`MYx6~vSIbQ9iBkX?4jyrRnbd}3*M9cQK?#&|bl0C^F z$Fk6*lMouEd(>+n4U>#>_mKMSBrQZGPg9uC?T=}b;nH=Vrq@TG9S<^-fw!qB*IK%u zKqpIrOPXHohKLVJNijAabCS03N1Tl7?f#3sRZW`D9x_QZoo99JQ;&C>2p3P+K>-Dy z|6t`A=^npw(~CigI3kMy(z>6#q6|6qEc;;>pw@i{)6c;z{ zSbZdznpyM@8TNJIk~}3zN!tJyf=WLqgEi3nBAqCt+YJ{eL@7G`z_J^feegHjWaYk4 zn5Dd7ti2&y3k@b@m>aQm|6-ZxWW0r?Bw;q=H7F`KljW$buoSC?lwg7gG9ivh!z9cT4VaIT*QnkmxwnGk!84vHuVEy3X zO=yahM|YuF2zYoC8egu_mVum;I^pd#fW4_U*lqwiQx6XpXmOu|?=WMCr77~mSpiO7$ea{!@r2ci9;Ztf>b zmpx=D*J_mqEYB40j;JoX1hxYK9)iM*GZl8w==fOb@Wg3drqaEp7Z)OhD8Y$lB%E>U zKF;q~#eDEglc?788lEIJyc}T;&XpX6!+h!r7xBMF?B|TgpL8Y zr{&@-<)UJ@KO#-XaT+c~pZeLRU_H>)kp-n6AGQtprS1lRjeIPahJ(Ecd>GD?q@@!Z zg%q%{3%3%jVLX>2W?(!GmP{0|4VWdYPY0(j*?-X3Zpy)`WEkXH0a*85(G37gKHrLK z#9wp>V`VE**!cbx-`7|wS|Z{)ozFt&(vpzkFHEMEe5L{YMCQxqALFAUNm`ibQW4k9 z8`?_>kJsw69B*10!j-xgSEq_X;YqAzId)emtX@M46T29=Ap5;ldx~aNS6Nz`NfCKd z;ZmwY1{cNM?N+G-AXVnE5kJufc$lo!Ks+q$q5+oY8E74_tyQf3{eyz@ zb7Bqdohp~*KuopmnL=Lm#BgXu6V2p|-f{@`1NZs+bI~aA7IH23c1UtjK z(77?_{eMyzxB<}hd^6?H(yMrIZlPn>VR>Y37YN)m?qpk^DI23rA-|ckWbcu@YR+tT z#nLc)4P?7Z5iuR)v897oXF>GFeL@E{*wTszf^+GQ!!_nwPb@JYOkUpe?Tjv7D&s{rIiIj2k=sAFfc z*jqLL+!@PoY~VOYGp<%|4 zax@8zalb6kY5;)GJ$X}0Q<-%6_s~*G!u93Xo(=#O_dF5?cgi!b8^Di}#SHca;Lj(t zD?nP8)rx5H`ifI1t+Z3Gtnu!~>fXn95|EA;u#v0L{rp>CEwmR+nzTP|;qe-kdpzNg zlPweo$jyig1vYR@K?b_I4({XN>xM z7?0W$L7OMat1pxcQYhW)a$q(>P7`EU*X?ydppyA6dZ{)eSGMv$cuy`9`qLJuoW1-NyP zLal(23maf+poI<*p>R@wSdzoB%Gnk0M)Yy@a+X7eTmymoQUM2r-B?7qH(Bt2+;zCr zNvk1LQbMPNy$RG`>)u1HU=nG#pBs$_ zdm1g~TLvcim5fZonq+I}x|nZ(-9Y=D=^zb&;rM6<@qpf}nP^%{F#?c9SvN*N}vD6u6J3i~X%HQftGynNi! zC~!W%oEfS_ttalAnq5PdMnr2S6u{Ey-7uoG6u7686}}89_S&u1+eQIIBXkNyeV9NL z)*!5bv^S394?6GJ`{X$-Xk@2SdQ-5^C{WS5&o7B3D}Ai08(=nob)9~iix0Lhiq!@{ zac<#4V*tD58jd5O@paN!SO9=i5)wdQML!Q{9u)qhj?5p*73It(wJsKgjqlXGE5j)J z4Y2TilX6@iymP{&Nc0x^3b-je&`FKX+Edpfk>M?}h8vPlG}f^D;H?>=_~sp0eK4h2 zvhl?+N}S-Zs@P9o^KZqN2cZiJfC#tM>U?3;oik?4Yd5l9;dZ zq=WccNGlZyU`zMO3~skBILMmCLoT!IoKPQZX@L=aZ00N}>~13@;{gDpldfu1 zhD&W|fQPC{nUfHumpC$ZdSgU@`xoxf>~l%cM<@WiuneZhrjEZeGQ8%cZ3<!Ts>tVtNR)IPT@h&HcQ@Il!GiBW4JXE1rQ0Cmws*O z(S;S#`FchJz`!(3-2u#!sNhcRH2~*J7iPv{xJENvf3Ag7U`?7$!78JLT1BkUlg7?M zTVn!V97O%`3nhz(2bjtELV~72d1|_pU210P>hv;qu~)hhOLX@#(?Uo0jY8Mu*9QQ? z*<>g{-sL!vu4=Ra`1~6BrUd$M?3NLo1gy9iwyqR?rpfXX_XcY|7)k3AoD*rY#IT=X zNOY%OluJ?8b;%&m^iT#f9+raq?xootkbKTARzZfVj`C^U7Q zrgTB^DF@N9{|KKGjHH?jw+u5g*R`LDg^H~bL}!~K6B&=st$S(4Dki@D%H9?OSymh^ z(A<|aOF7geQyW!JG7O`%Uuj^9I3=9bqX9DfeIWLp$pgUp9>uQ^ak|LVM(t~WbO-tY z)`Aw%CM7gJhFR-#BF&3gx^V;mSY2?m zcmUuh`n$NvRDpUCxH7w|JM}I z#(Ndk(+{%LD2WFyil$hS3?{ne3uuyNN}dKVubPV0FSq$?rnTfF1sm>Jrg|zam! zXU0ZiJf;d@lq|{clZ>?twlw{~GsXmP73_^@^MF!G1I(rGiQ}EgvXv;Hf&5Fzle|_s z4RE2pkt24-0wBaqmtNK>Yymqzqa`smo6e>$M3jVT6`R6ke_Hq1Y|HxOC*XVU{UlXR za+8`(iIzgP@~G!RJ9mu6v;knrdx+}7ct;+?@rwg4yEKW2wG7KyNRrO&qm5_^i0BQ- zmE#({ZQ&Mtqa~c^=C5fArSJGQWjsPO5z#iY};hKZib`Uz_SzTI*Fe6o> zVuERgR8zP-rrp5gD|~j88?i)~;}o!`s*D2OBDC(;sTu(U8<~szDUblJQ2~f!mPqqx zZL<_EGv6f?0Bk@M$A;s`OGf7hN9aC91O>q1eB(@_R!}g2iit13aW0{$ddtGk=a+=_ zK^Ww z1MUlTrM#vv`KxOiOQK(*km16jcS&G6XanqTyLxvQdrKZuwl85<2IRB(RL1Rw?=>O;LdfNWpp6H5ZPFdq?@=5yvl(_{x35iQa6 zn=;FRU!7*W$|B5h!BPB58JVN5PQ{0yPGQ4;8W?|r!c0=ffQB#qD(ry6rRVAnA6+4g ztFvhUPMC1?m;u^qH`ij7Htz*XFT=w?jYz4IehGtq%J+dBQ|Jl>$Ug5Po75axnn`5X z)C~9ei&>#C4;>d9c~aL;ng9S1F>NmK9NdJz$bc^mY6nYx1qROz0Q_o77yu9*7HuOA ztgSInxP^;JSc9qAVo%vb0f!5)#ElDLt8#S#P*_FOjfzlkSaRYk44FXDzyV zR0HrmyC)tcu#&0)%BAY>6OY0g?!6IuD6W7l^p!_RhS0YkzTbP407T&@JxTy*2`-;` z)S0EH9<>2H_9!PZ35^}>MVL(YPaf42FupsbXC5V%h}xg?sGyL#y78#$I2s^x5l2+_ z9Q9V}wlDD^E_{grvQTZjA8vv-WRuA8hb45Fw5A^k%>aK#{%P&$`YM3P6ab9;Qvk@r zs|YhkZ4`DV7oth$Q0rZ{hg5zQVc(!-*!{L}zl|of=o}RM27y?za<9zS0FX=b*>G~f z<-X5V3R9ZT9;%Q!nNL~@%{(=q0I)#*y*FP7ePcf4ndZBp5KN|bEo#MJnO-et%i8LtO2TgH-FFSyq22Ha)N}042MDsPPd~IxAH^AjPWQ|pparonuOWzuFricy3 z{UKopy$&2xb>G=LOBTKfzPwJxYO%Rdc*vO5I(1xZJXNtM3>_DMvxewgs<;8Bj_dlV ziW}h6UDurpwGP?D($MjF>eYQwApb<8kO#%`y24cyM2^^n8GnCM_w#yu_D}IatcbPT<)Cppph4+c9amj>{XzC8T8}n(V0F<`&kK?jM#3lwO2bMi!9s{!%H@9OaV{9dqJfg6g zrY3Rx4BY&{Dmyf_h8KY97e~&Rlp8o~K0~4QZ>}liabADCNxodWy8;M1VDDs!eYyEe z^9*o$sM$hG!ud?|%o39DXaPw8n36OAM;CT)y_BQ@*r-mIejv%2C8k;u^&q}h?((n3 z>|2j1Nk086Nkl<9<}CSRNouF;0Pw1RYv-^DdaL&&4;iN7N)0^J++DEr)&T77@q0S> z(#g6tXX>y4tOrTrYemSkZUYRDZUA1eA|9OQ#_)k#=)AwQ^O}O@v6V%wcSmj)2caW- zD(E36O`-)=++7Mf<@7eTi|i1q1-&<4Ysm-brI|DzTeef7jR;FyEH!UDI7%>I51LH@ zD=uJi<^+2~Y2Fup3C1pNg84D$iOZsyy7#gbm3V(?@Hg4R(msSH*>LaLXpjuMe&BfX zsG{5e-nyp6eP#^-sIdBbDwGxBwg;$)O=UCyhC>^kq&|2~>N$h$2Jj@Yl#{5a3nILA znWR`-CW+xWrzx`53Fv`E@roR+1&I zjRn6D+zPi61V;hNSGCDq?_ymGkW!v5y0A%|n* z9XHNjN#g+(si>ZgwhR-xu00@!^BG+!6m&J(0OabdnTy6mpWpwg`_fVr_PuAVU#%)j+0ft z`et8}h6o&K&@B>KV4|Ab^ZJb~m!2_PJm>vgPou zG-hCBSQz$mYbfmc0XK*ogTq#03D*_AJlQ&*g_eCLod)ox&6be>hWi=ovV&rPhdAUV z4ifWI74zA5`-H!a1b?Dno1kcD=3fIulzDj}6sKq3?PmVmt3+m z3dq9*gzM}G524dHXUI352qPaX0EZvJ4+Bk>aBn{_;W6j_pn3WJFIpNQAeM-@$V)uk z;((^PXV=UT2M)}KW^RJECo%-RE`L0sl@!G#gp~JZ45*r9qrH1 z@hJw#9dxf83#;WwvjlE_&Y3T2eTXMo8QFDx7|!3JhnfsWfqapo9dYTcCrm~85=B$s zqkwt3@zjOY97gM0lUSnXBF&80tw}hGTRSyDb*BNa1F3g!7iPYwnOC_L3g{jMCb3$AJMS`YBeTuktobxWGJM}@yEaN5Mt@ z)-3_M>ZJ<~Z)kwz-p2rm5Q#nyd18$QaBh=M9$27e)<&mTQZjV!GI*_FKdB@_#8S;^ z0G}_Vfa83`12SA_iOt{G!T0gJVXQ)m+gF|!1p!b2PTf&Y9e!HZ^#RESz)zPQA11+l zuvDix1fbyuQC3Ljk9!MXL{n2k8|-lqIx*^apy|wW>TC=;uvU!)1!1D0_16BTB~zF! z=41(t<(Ji<=GE>KRbtBFh+;|JYPB+qDa9n7=9gP2yExo(oHumuO`dT_6vjU#1C?O` zMy>igEDakBBrsaa(JWar-A-NQlFwg8^_Ca7)9+D3l!5t1Ps?D7CTUzV*4ow;$s}7{aq!$R1aMrt)!2`&ELJ3Z;xsNhT0Xr}diP>+DNJ6fim;6yw z0sPQk*CeHT8ZWm(wluj~CYuArDw!PaXNx2|z>>iH2n;&9<4%c$P3EJ;+|^;O1ZKxzb7WW&J<}GN$l*4%Wl!2~n%n z01;((0QD%c0ldc`YgmZ_zU(j?fF!W+DxbwZzK`ljGj605kh_ZgVy;kJXo>p3gOR1` zDJrU^XqM(`ysjx({N3w@zZ`Mbg?ax()}Yds8k$04%~y&2h7Jk<48wT<=hNR@adA8b z%hXI!&?GFHTSRUfBSjQ12TQYWEG8YI=~o0$Qut%tTRi}WkKF$$kI-jULTHv)N8K*P z!iy_KNCrYt9A7TQQuP7|$G%*O6~INBA;F|g+}g=0T@;bQlO(RM6&v*Rw!QAuvE^n7 z4Lp4#t7igWtdfMI&-+VIel^f-sJQ$jTROf;o{9k?Wd4Sav_x=FIOLo3e|&N`C9I`E z1LTK%9W=2kW1*GX3s@BN55AP0-;2PUI|dgGU>uTUi87U`)w;Qz6M{m= z%LK7qxlj~DbeDk>3aN&&RRe&-12Q5HacmzkZ0Exc1Uor=F_Zjvxq~ky(WH|mROBN-7$5!y`y%NSHi;*kOX=3_#GrOmxLWZ+jm!|G1P ziyl&*K;#C?GKg>Ux|WZ_m&B^qqNooxK1xejleqr>ub}Xqh{a?|ZO%*6?4=W0Qir9q zhtO9oUUtlX2R0B&zJ1Da~AGT%q4+nN>{zzb7lZ`fO$ zCH(h|kK9tggMvG#HNmu0MBGxEgpZ&}wc>pBphpoW3YTTPu%4>80789pMOafWOK=06 zc2t|!M4<@b&TS_!%XkATbglYa_@P`2Dhu!|3)v|9rSxWLmejgtsmkv@aR4w;R4$az zge83ce2CIe^Tg)Q=B3`so~pX$0hL4FSI6P|JZbVkI<|28 zKD7sLAZvJl>ZSqqA$(tX8wyU99w5U4AohG;)-V9iA3Q)41c2D{eR>1#qgD@4_Zbj- zzR%t?_vvOhmCi#p)}s922*LC&Jgt;2*N`ojIv{EQvqr3Utdi>9!MC~M?Yt``}+V<-ceJ<(ym zj7Y%wy;o^xrmd9{J&aSV5=v;;kZF<`!YDVss_AZkxxT6E3xGgWYncY%JiHe(p-LEI zLkhNQd3{$!uu}-G{z?R!0iWidt`93P4j?N&68GOa=;XJ}<{$lwdwFRW$vEqQLwshyeJL zPz=Z>M0vj2Fn^@1S@Q7*0pv?0=m)*A5xhJMW|+>4NqpVrD)Yg&Jk;ORkUVeEUIc9+ zZI)Qyywjw+%;!Q(Oq*A*BJ_&2jXUnk4q|EFH^li)YG{Cy9_kJ>{a3hWk9JUCc&BrE za3ugZmK}ULBfTrHy;n&ZmL%-Z*!ff%Pd|+*3c?LbpRvhk*iQ1)b1eY`1>+W&qby5I zZd0%ZS=>7i`L{n<(xm#h=FJ&G=Y=prCGL#z{z#HDTn-uJ2kwli_q$L^Or+q`kR`h5ZnmuI5oJYe5lm24-ilQmZqTM)9rOKC^ zN70`LiX;POl7VtRhJp)y7oC*h@>IZ?J{_66Zs^DwthK;Rw9Fsgl9n_To#3r7FvGHC z(;Pp=_v%?CgEaG^K97|H$4FhDNCIBkNgFT#iu7DlK!!amS=0HkHeDrbyLFI1(hpbx z@~EUtuTg&0Li?eMd^Y9r>PPp{lDkSjF{b&~UvGQJ-n{}50*=;A_R7rkDC!tDb!RR(CzlZ{p^w+C0q{e~ z#DEVoa35gNuUc_XSQ-fG0|1eX>p(^TFiDvF92@}sg>pT)3jlPF0+g$93bzj2cau2& z>FmID-a$*sur=BgE`HQG0Eh}lWoAA%IH7gBIyNE08X)lHB(Ft_ zT}Cl)_nzHW3!N;94K`wCn;W23{qvkXK$%}-!OR}`=xx`;6NMlo#Hxww~y9`A9VDCl- zVq;926rLoq+1yTmvQJZRyRhNgtEjbvUHxLl28J@wWYLrik;pF8N}3snZiFVaj7d|5 z#c&oe8qf=BEb%W5)L3OcmI-stnWZUQ1CYWLEvBDsC<}1^9`VLKUqve>o5JEn4|p46hy@mBx_lLx@$a^gly?|&xZ-h*#ooirC;dQV!vn$!TY$$Qs_ zn@OjFTVS;wk_=RXq#(ZQqi&5G*F+NUYw%B$CbZ=5J&6816M1OKr9=w#yVN)~34wI# zU56;LPR3(-Q7loo>N_yaUao;WRroIZ`WD(+LIx4dwryf<+_2Ib%?@%{@z)AZimQl zDV%Wo{nNGJw)V2oP4oGX=NkTDxZv15aa4vGIt5S+H%nd@A_*C8Erj5%zb@?Fr3^Z- zcd3A;;N1lQEDH`ohra{eVQCA^K zS;D0)1KsPrB$8q0KBZdyN&v$sMeT_s%fc^8)&of-gBbWpNyO3`B8MGPk}*dB3=qds zzynFd617a)SQg1b#P5B~(_f;1;*|9LFilf0JxT!o2knqMy1C{5|HKZ%qrwh9=TWi) zO&WF>8LsSoDTx5IlSit0>QN1FnXuZUaGCt;8i!*sfSc(0ayz6c_#`tj46m&FWYyC` zqyduj(+qnCNML8DmEi;6lH;9W0mxgE8y*vV0;AB|o#>rds`C_pFdZOh=%Xz3FSDCu*&3jN@@eh4}m zNm01zA^nJl>T#>q5H!DecdJ%E=YTy07VJ%RA3~q>J>4ON_6IKK@_kOaY@%zl{H-a_ zhAtKuNu^Q9SthFoOG_l6^`ZL)lO}6U1GqDmpdV<~h4lxM1m>T=A_@Eeli0`y@t?Vm z#$>o+uPI z7_0{m0zj4STOg+1uN((h|y;Ym5eXAYzU3{A2D6h$Xn>FHS*~ zkPLN-yuk3cl28CQBKj$80NXWCqF;2w-ckdC=EK_;Ye~%b{WMMG6r63M(eJ~3nkBxb z#_+9QjZKjTn9tf;IN?Ll?gEhzWzgMw!6ApU1t^o@-gC_>EsYdX6udK_JGo2X=UQy4 zVav3)=?pdsk-5OVb1DUrZ0AFD0%J+;L+%WCuLt#sB}WKCOWlRKW$+sy8i2HqjR?$} zZI}`OSRyL&EHmi$3c3H^fT zLga*iQhln;lt>{l4b+!Zv3Fn6b0!a6IL3|*Kpx9dZa76N=0dij>7`U|kA@pqcrxGvweF0!B`U~kEXW^?Vr=->Z6n49S zRP4YPFs8)z6?Y9l3iDU*v2NJjITsh)pVENu0X4BCHhjhrEyZ8x^ZIfr<`5dbFEumu zR`j1!II$-R5|n((2Rk3wL;$HuxR;jvCU2%{SUM4Hjz#m7x7%W<)eNkdYWPychYSz+ zZkmH_0faB%MR#Y8i}_9HzwnZpirb(OMRyfQ>m?G7bynusCMeU-QUOS0GKYrgK-ZkUhB;9Rrhch6jj3RDAQDz|nh;BUL%9#0+k~Y!K+`TzgaSFarrp^C%{L7I;|> zsLfh%Comykp;-~;u-pXy!EyWzE4u~>Sfq2sWrt(0fKeyoz@6`ecuAb2SQ<>e;qWN;8e_EW;Pdqo%RAA+_ZB*25aN+|@Hs9Gc+U?2 zuoBZF70H((7x@H#P8DUR%4N~S0Ne}fZ2;M#0DwEe#0;6dR!hwi)_t5WR_8;k1+$>~j{HT1MB+77X3TRKr05B~nnl^R_F)**j$L54MVptb-3?d3jmE=&qKE_XXa)%aox@H69d2hZ6zxQGQ zR}U=;a2zSwx)&QhE+#pvg=~O3d}c$zNq=4vilwl?EpAaO#u~t{*a{Qk?(43pJ;`vT zzCuJZO8S{PYyhy*8M9D&kfRy^=vzO<(zqa&_Rq~qtUEuQ?kE{FmHa%Lke1=f9Rq;j zd$((8U8ki`dyzEe9az~u9j6*o3C-h#)uM%OZu>TSunh%!3-(qpK_O|P^eUfC;epoS zyD1Q4nfYAB5IuS%AN7=MwfinD0UgSP<4c=J=xiFobEmNmp<(IHSW9KXK>>J>R1R@R zPLT|KxH{jGAWn#8FUFnjQK%TZbcbSW z=8mv~04|sHQ<8F!23P`LU=~`}Uj2-?7X`62i53c8@Ubu0N!hLK9;m9oXz~K*}Z_^A8KRmhtd;)Rkq3&EdcHRH;6~#-(E(%UF ze%6MAh~wGe)g){}0N+;8?2pscZHK!bE4r+%a*far_;NFFaS(b9KCkm-0|WR}jhe#K zplQ)Z%rwB$plJXsjq^PXn&v_Yd&Km!pqVU{FE>l%g^QqxtigA`OIpbwa(gX3MM9(Y z30kq_Ou8vIL#kr4DHzi(37T0^G(h5@Z#9aj5;VXSl@eNwGhlbrCc_Po{+QJGIi_sw z3QPbim#vLR&!#!@Zv)^X3SGC| zhZ>iBX97k)*;UrwcvF~3s)dfoCUn4!y4{B2*j{uibas!Lz>+~&@7}7&psiyRVo7xx zj^}Es*kkGvUaWzZ_}XMRt%QDpCDEVWb+EKI&b+;Q@-9(e4I+E*n^X3vtUx}>qg$Ww z8BnNZpU%390?_(P6OOL`Wav8C76EvrNpF&aEYXFpZN{N$#pAig$HUJ+NAevv;iW}DsVO^T?hz*$G zY0%6a0w5k_4L9zf*l5}g;INHRs{k&4N2@99yi${R+jXItXHHUmC%)T!gYBlU;JD(u z=1jIF^fSJbZ2=I$0wd`!G*^2c0F!8Q95gd8S*?hBrz^sL(rgNMzw@=wL`%5F9l%a= zxOcQ7e>V3f>6hEL3}hY(2bsd(zKU*UrlJNw4|}O)wVN$u)g;+rHBF(&Qp>V%eicJ3 z$xL2uU$N0#DDH-q2p2iX&V~=k3@*fyrY>x-r6WXqE_XWr0kE41y;&JpnpFAJSS7C{cs9Y3pRth`zqBwT_GWxFm;jhlyflS7W(e04O|g_jb&V(%y&4L{NPJ=Z8!-%yPUIYcv#jrom^@Y z=SGMRrbOuAOSC^As;6?I@OY9mHmMyfEto)Yg-8Gr%V+qmCQZ@Dd5y=Daz&9{<-(FI zF!^o@GNQF)>p}ebYqNu9Pk;A8@0eMO*p2Vy(~IMnKp51++Y zG!4|%N0k zYLe87d!bhB${jMF{?1lNTGCW9oXfj(mE!u_eWo%<1I!ds*ExwZ11Y-CBxWJRqoxuI#XH<_IOSOe zKfKsvz_|4eTLainHOUn8T*6exi0-ZEwB^U%^`W}fWxT`+^gJ5}6PjDSrHm!@1Lhh>QW3sWH8@Nu`t@m(7Mk72#iAs#E2or} z)*x)GvMb-+IQc;XoPx0KEY!sP1Z#lZe>m9g!^0}U^ZdF1q}EHF6uOT@pHxzm1t5-H ze6Iv8F!nym8yX-vzTLncsZA8NVE0+Cs~pt;Haq&fRo75 zWM)YkgL^z}#(GoObplq49@(UpH?jj}qNL;ZssdiOI*yH70!a~t9SQ{7!N%S|tY;Rg=|C1IKV{U+1*@^8s#wEi^ zam%;Uu7%I%xLEK-bx3Q9!Nw%bM<^nB0A=RNnx6 zh+!W-t*>gPGoP~>drETVyW{9ZSuCwlTbQu=MDl*)Ta?f4RH5t13I(d zHs!tdW?@Vp{^WQbPQE|Ux0SGW?j-uxf@Sa1BLtW^Sn^kZ$$uCztZo^I%Ei*c&9fRd zxV(*nFM%#u@~ej7q06&(fvtN2XgZidT;8Ulx2%`EuMLL_UVcYhuAvOKFcAKG@`DBd zpAQMIo>QX+7$_QmQcIE~P(iJM=+LN!=?RT z4d8GMP2CyeB?PvmzN4j+@f&N}o3`l+8GtV@WjR)GF+tO++@CU zjngZGq97Z)uNO1(v1!v($)bUA>p)86HDz{)Q3KywAVthMO(7?N&u=K=lp$4>0kNc8 zJ_DM=TvJMhVh#Z72YpNTKXjcPnU@30%fjL6e0O_!8lDliwYo+2;jth0TlCx9d5ZNHju;s z67DX+och0mf>R3t1lG{r4BZ2OO*(3+KPWHPAVqve#Th`D>C51?MD(?E$m^d)=d7hA zd5I-z90%cRbE*O8TfLgg#hHAT^vny7^_eA6*hJ*T4C2l!d8pYnq?ugevn=CxIDB77 zz28a~?*SzN11S7`Uq}alc=do(X#fSM?<+(HfKs^!gw+7jz3&U@0FYyQKv)eRoA^HU z!9pw1dq7wXz_tQqKuAr2*TW1TtN@^U-xt{buI$W`>^Ola`mg0E)Rr7xjXW&Fdv|7@ zn{a`mTK?&H4LJ|YP>oO~Q$ju z3iAVJ%vJ7w;EPzQFh6`VKWNnzv(gL;!Ti9}pDK4h#FvXQUFt6*dMRywVD(#8;xREH zm>+n_Smo{qUN2UK`GE(EDgWyE5U&&uk(B$9#ANWLq%H0p_ajU}efjwlEdp>Y5Srz67-cwPz z`+*l7RAGMj&GLb6O-eIp0D(JAC`|{Ta`yxG)m34BV0Nl<&j%jXQHA9L?{}%(^MMy4 zRAKqRLtrX*KYXviQib_}Pd=;M{lG^lRbhVM%gQQmb7ynUky}-?y|cXJR(YGd5G*Qb z)G#Zz*Fd0AlOK3(P8DtM4+KJk7?Z%H7jE#H9-JG;?^ByQg_%M-}GjA7<_k_wrRGno^O$ z1ao+f1V%}9?4>l-3tCxhL1VT{k^f!Lj9hR_4w{Ntg>xe)G;Kab;xHf_1X>0i{HG2a z@moO4Cj&HOiQkDZc2(oIsFp!D(1c_k$f@dOwL>3*CB}uNbX7z9@dM9E8xu1XPa4R^0oK*@kLsjK z;8eK|c%0RmqE$Dr)tb`P8*J6c9eH0P{fAakS{DnCYLwQxd)Mwt>p9J?-jt3u zr4Wv4l;(uOrqxthd&Qq2n@DEw@!OldXxhhS1#xBHH2l-6o!*BXaXnrZkZcL*kAP4OFh*aS~At>2K7gRto> z4`f;-ZL8C^dNZ@d=HLm@n5UEu2UUsm#B+-Dc;Gxa5CQbrw~Tvy4FTlja7#$Z-L%oC zbRd9X{o2gLijyI%ai5&mz@8jneYF zd{53A$T2M}gvNH(@mov4Yi%OH`nFby((1o&o@Tw_>`Pne)t5ssIBWf_1>2R@h^(tO zWW7ys8dT1rlV6di(zgr6AZru!sx*zKM^^`Ea(J}&FgNQb!(zMATPw6F9mm8A!G`^! zbPtoM^zDuU-WXrGGLcY=exL07#H`qRwR-A+cwM`5kN}KbZf3ppXdrJ*j&VTl%NRg` z_}))H4!NdTwaWb@cc}h*_p~Nbfx`Nw$w>sx{+vM$^48=Shf?}c?jS0Qz4z0PfjE`E z-JSX+Pro!d$zilP@p~l7kb7%#{-4sl6n}}(M~h9R^~B2sd347nl6m^2$w`FK<~%FC zHaW(D@a|#%GqQ#bmk9mD)8lH&M*EjM{nF&54!6%k{8c7qf05~Vv`(e;VS9~{XqS4C zB}nVMH&@vNL~rCk^s8mufJqKqKVrZpG>qFo34=G7PYbB1-tG~QsLSmH_TV^TC=x7% z*{YfPI6vCPa#0u)B$=5IGWx|fCOYBu%^B60nLONM-Podna_2gSy%|sWi3Eu zz6FSJS(~^-V#TohDt)kzmy~!xXo|#+8>3_nyAgu4d4J-#vtt)%RSOi6+PKMqwg^y` zt_8YIjDakXD&yD-5a?y}8blL;woRZ<6QzKWsF+otJu)3ax~QBh56I+zAI=U1syv|% zQHgW|WdR+~aUo$^X%V2r6DT>@1DJ^*0SpwcZ~PNM7BEnqUT$X%Ge`$Eh@=)kPoROO zjZ}d?4R$8~stw2zsnTVWb%K`CB6=HZNGk{JQUA1(oAtw@l}jvx|3rW)`zaFOsVSId zWv@n{oi4+mgMT8>dJA+-mw^EPa6lpm^eJ7URt6~X0w?9L>R^AD;*BgMG2$HqL1C#~B;em-DP@~El`x|H=1Y}vM+%Br`(aLOBpzqOIeMLYf z2R+Ad%YhE;gnW-y_DjY8lV~+R{JnNuyIDP5b+m02H4(OGNm<{c)uTn%OjoLtDD!El z^&YM5t1|0rw6Z%YqMt;o2g`f3GJg=&UyoLu;ad$b&C1pw zB-;rBeT`N&w*xXc=*{07)ow2m@*1tx-*CH6V}m01owXUZ?&9O@L4(~lomM}2g1~Vg zeLv(JR#(Unpz*GM>VVRk`*-IT<=*fxg_Y7EoD(HPMMzqzIBu96&gKLXdJ=inBoRcZ zIxbOK({hL>k^Z?FHXeOSMFz%PK;8ifCgRR>yJr;M3J{#Ydf0(R(D6IskN5OQeccU^M(WK@sV3 zx@J})fw0o0*=#FaswGm9P*Bnc+(gpDN2irIK)Nk4hA|jba+#YHjotXv!SDU3qT=T) zkK?z`2(03Qpd-H(IB}jZ5zyg0jK@KJ9b)X(q!8*Kovf!HsN9H`=f3>=$Coev0qnyV A#Q*>R diff --git a/gen/test_fib.c b/gen/test_fib.c index d16746192036a9e3682cae7fc600a1cf0679f966..e350b1d13a7d387e16632d2b74e7772aac0a76ff 100644 GIT binary patch literal 2791 zcmai0O>f&c5WVYHu-S`ixUDSNau&g!y2!yu3+x(uDhfd#RIF5%Qi*Dk7WwZxe2-44 zI7Kf6HJ@+Z3@N^wtIN94>RPwD&x|frHk$5`nYzfD=0W8T%IvlJXRM1a+ufV?S{2>l zRy_K*YW^+={;1oc8B49szFL!;;Z0NL#oPT^5ENZI7&X?diKEo0uQx-H8aw>*Dt_(?22i{Xzzh4*2#uxp8RY1io7uF2Z28}1=b%7t~n28q5a~ijVpL>sa+oFv;T+Z*#9&m!bEeET&55Fs zVTnp6^+4`wpj*YFfmIj~ls=5jN#>X}#Bgw?;3@(zvh<7w3yJCpZW2JEu{!OFkibd8 z_K`7C>B$pF97{A!yv9wkQO+)Hygn?!!^#^97s7LhLO8fSuw`V7MyQ0@NV*VUi)I%S z4gxa7s3b;bA~ZB6=^VZsMxi$jImW?B;1+USvIcxqfZ@tLs%zM4aW8<_CjdX5OVk&Cj{mhkv#|a$e7I#gY|R7V5AbxF*56EPXGx~ z$(07JzwC@ValeBhC_->3Ic2YP_BD%RFdgR!mXEy+B$vnupq=d5+5;q1U2CyaJ@s#6AW}s;8j|SDu03+T- zD-27-tAGwvi1!nuh!;Kb@V;_H^IqbGC8FR_{=I{-|9Z9Ez3*D1?~R&ocj-rc_kJAY z9pHqs?e5>PHT6NOd2e0^@;CN93Ue>NXy?Z;GcmgmtGZINSE7F{d!>49#=cb_|GT=f zN*hKgNvcJ--F@iFvC)6)O3iPEv~FvY9w17)K@dCvlyD1qhS=9dvCn!nZ?l6&Hl`Y*aqTYZ-be9LxPjcp;doiOgZf{A_Bmh$Qvj>L-3P8(8o)n%pbFKwva zEI{wVGU3>3pr#ygrSd1N(>}YdIm}sErhDDo+O(jN?0^P*toj8uU3Y6eA(O%`d##U?cNDu^m8jAexUeoq+FcQ@&7p1b|5KRea{vGU literal 2711 zcmaJ@O>f&q5WVwPY~70@C<#SMlmnxu6g~)UfL7?KC8?uPeGofjXD7eP>T?O@bcw6 z1;FN|eYXK%3wM&h{RwMi*9eu9%{JBSRL&( z0K&|6LIA6QQi4W9Qkv?ZX>g4}DMn}r8Q22_m^%c(YthkTO{#}g+GXnifCi_Lpblk7 zP?@beOTjr{OfEOGQfTmAqqog8P;YQvXar@PpuP;Q0{BtHxjCyFdqeIR2PEdvh%ly@ zB4W)E6mpaZ%^|K>ETs?x+zL1M74`8fAqVGF2drWy1ZA9w4QWC*De4?OGpls15AUjTm(>9uRxcVM4^fVi!OnDiR^iU3Vz z@*k&v12QGg*m*iT2Tl2y6|e{d+~q(rjPZM*xXit!0Oz^wVcBxhPjts68}5dE7fZ=_O1Hz=gp0E+B8Z@Q7y*(;kT|F z8~v-U)begf>$W!O38u6gguzTu(yipT!Tt>t$E;V&HalrlQ|dJk(HGrtfrw`*=~#&4 zDtHb8`Jqs!tZo-}ll8ZvEz>UL;rrCA*T1EHPRCk$Gi%^t7pN$V22-YkHt9pxf7N~3 z>W5V5TeZ__Yzyh_mEt}WN*uGcl)t255>_w=Z7A7ImzBD|wyAovg1jrMgj279n|9=t z&S$RYb9Pg6oU^h_kGi?HWg#Qgfh@LV7pA{wO`6wj);}@q?AL7d#-Ey82Y!Q1*WFtr gY|_|uul02DCbO$mi7S0W3k#WKcTKo4hjz&S0U;^X7XSbN diff --git a/quickjs.c b/quickjs.c index b6ed12a..5708678 100644 --- a/quickjs.c +++ b/quickjs.c @@ -2459,11 +2459,7 @@ static inline BOOL is_strict_mode(JSContext *ctx) static inline BOOL __JS_AtomIsConst(JSAtom v) { -#ifdef DUMP_ATOM_LEAKS - return (int32_t)v <= 0; -#else - return (int32_t)v < JS_ATOM_END; -#endif + return (int32_t)v < JS_ATOM_END; } static inline BOOL __JS_AtomIsTaggedInt(JSAtom v) @@ -2729,11 +2725,6 @@ static JSAtomKindEnum JS_AtomGetKind(JSContext *ctx, JSAtom v) return (JSAtomKindEnum){-1}; // pacify compiler } -static BOOL JS_AtomIsString(JSContext *ctx, JSAtom v) -{ - return JS_AtomGetKind(ctx, v) == JS_ATOM_KIND_STRING; -} - static JSAtom js_get_atom_index(JSRuntime *rt, JSAtomStruct *p) { uint32_t i = p->hash_next; /* atom_index */ @@ -33337,9 +33328,10 @@ typedef enum BCTagEnum { BC_TAG_OBJECT_REFERENCE, BC_TAG_MAP, BC_TAG_SET, + BC_TAG_SYMBOL, } BCTagEnum; -#define BC_VERSION 14 +#define BC_VERSION 15 typedef struct BCWriterState { JSContext *ctx; @@ -33385,6 +33377,9 @@ static const char * const bc_tag_str[] = { "Date", "ObjectValue", "ObjectReference", + "Map", + "Set", + "Symbol", }; #endif @@ -33896,9 +33891,7 @@ static int JS_WriteObjectTag(BCWriterState *s, JSValue obj) bc_put_leb128(s, prop_count); for(i = 0, pr = get_shape_prop(sh); i < sh->prop_count; i++, pr++) { atom = pr->atom; - if (atom != JS_ATOM_NULL && - JS_AtomIsString(s->ctx, atom) && - (pr->flags & JS_PROP_ENUMERABLE)) { + if (atom != JS_ATOM_NULL && (pr->flags & JS_PROP_ENUMERABLE)) { if (pr->flags & JS_PROP_TMASK) { JS_ThrowTypeError(s->ctx, "only value properties are supported"); goto fail; @@ -34113,6 +34106,18 @@ static int JS_WriteObjectRec(BCWriterState *s, JSValue obj) if (JS_WriteBigInt(s, obj)) goto fail; break; + case JS_TAG_SYMBOL: + { + JSAtomStruct *p = JS_VALUE_GET_PTR(obj); + if (p->atom_type != JS_ATOM_TYPE_GLOBAL_SYMBOL && p->atom_type != JS_ATOM_TYPE_SYMBOL) { + JS_ThrowTypeError(s->ctx, "unsupported symbol type"); + goto fail; + } + JSAtom atom = js_get_atom_index(s->ctx->rt, p); + bc_put_u8(s, BC_TAG_SYMBOL); + bc_put_atom(s, atom); + } + break; default: invalid_tag: JS_ThrowInternalError(s->ctx, "unsupported tag (%d)", tag); @@ -34137,8 +34142,19 @@ static int JS_WriteObjectAtoms(BCWriterState *s) bc_put_leb128(s, s->idx_to_atom_count); for(i = 0; i < s->idx_to_atom_count; i++) { - JSAtomStruct *p = rt->atom_array[s->idx_to_atom[i]]; - JS_WriteString(s, p); + JSAtom atom = s->idx_to_atom[i]; + if (__JS_AtomIsConst(atom)) { + bc_put_u8(s, 0 /* the type */); + /* TODO(saghul): encoding for tagged integers and keyword-ish atoms could be + more efficient. */ + bc_put_u32(s, atom); + } else { + JSAtomStruct *p = rt->atom_array[atom]; + uint8_t type = p->atom_type; + assert(type != JS_ATOM_TYPE_PRIVATE); + bc_put_u8(s, type); + JS_WriteString(s, p); + } } /* XXX: should check for OOM in above phase */ @@ -35346,6 +35362,19 @@ static JSValue JS_ReadObjectRec(BCReaderState *s) case BC_TAG_SET: obj = JS_ReadSet(s); break; + case BC_TAG_SYMBOL: + { + JSAtom atom; + if (bc_get_atom(s, &atom)) + return JS_EXCEPTION; + if (__JS_AtomIsConst(atom)) { + obj = JS_AtomToValue(s->ctx, atom); + } else { + JSAtomStruct *p = s->ctx->rt->atom_array[atom]; + obj = JS_NewSymbolFromAtom(s->ctx, atom, p->atom_type); + } + } + break; default: invalid_tag: return JS_ThrowSyntaxError(ctx, "invalid tag (tag=%d pos=%u)", @@ -35357,7 +35386,7 @@ static JSValue JS_ReadObjectRec(BCReaderState *s) static int JS_ReadObjectAtoms(BCReaderState *s) { - uint8_t v8; + uint8_t v8, type; JSString *p; int i; JSAtom atom; @@ -35381,10 +35410,22 @@ static int JS_ReadObjectAtoms(BCReaderState *s) return s->error_state = -1; } for(i = 0; i < s->idx_to_atom_count; i++) { - p = JS_ReadString(s); - if (!p) + if (bc_get_u8(s, &type)) { return -1; - atom = JS_NewAtomStr(s->ctx, p); + } + if (type == 0) { + if (bc_get_u32(s, &atom)) + return -1; + } else { + if (type < JS_ATOM_TYPE_STRING || type >= JS_ATOM_TYPE_PRIVATE) { + JS_ThrowInternalError(s->ctx, "invalid symbol type %d", type); + return -1; + } + p = JS_ReadString(s); + if (!p) + return -1; + atom = __JS_NewAtom(s->ctx->rt, p, type); + } if (atom == JS_ATOM_NULL) return s->error_state = -1; s->idx_to_atom[i] = atom; diff --git a/tests/test_bjson.js b/tests/test_bjson.js index 4139711..34c9b39 100644 --- a/tests/test_bjson.js +++ b/tests/test_bjson.js @@ -178,6 +178,32 @@ function bjson_test_set() assert([...r].toString(), xs.toString()); } +function bjson_test_symbol() +{ + var buf, r, o; + + o = {[Symbol.toStringTag]: "42"}; + buf = bjson.write(o); + r = bjson.read(buf, 0, buf.byteLength); + assert(o.toString(), r.toString()); + + o = Symbol('foo'); + buf = bjson.write(o); + r = bjson.read(buf, 0, buf.byteLength); + assert(o.toString(), r.toString()); + assert(o !== r); + + o = Symbol.for('foo'); + buf = bjson.write(o); + r = bjson.read(buf, 0, buf.byteLength); + assert(o === r); + + o = Symbol.toStringTag; + buf = bjson.write(o); + r = bjson.read(buf, 0, buf.byteLength); + assert(o === r); +} + function bjson_test_all() { var obj; @@ -210,6 +236,7 @@ function bjson_test_all() bjson_test_regexp(); bjson_test_map(); bjson_test_set(); + bjson_test_symbol(); } bjson_test_all();