From 167b22a1ad93ef6af579d2e970b181941e228d13 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 12:54:45 -0700 Subject: [PATCH 01/10] oskiewar: start local P1/P2 versus with two controllers --- xbox/live/mac-test.html | 14 ++++- xbox/live/oskiewar.js | 84 +++++++++++++++++++++++++++- xbox/live/social/manifest.json | 2 +- xbox/live/social/oskiewar-title.jpg | Bin 59477 -> 57534 bytes xbox/live/social/oskiewar-title.mp4 | Bin 233723 -> 238963 bytes xbox/live/tests/oskiewar.test.mjs | 79 +++++++++++++++++++++++++- 6 files changed, 174 insertions(+), 5 deletions(-) diff --git a/xbox/live/mac-test.html b/xbox/live/mac-test.html index 62db13e298..ce3b879429 100644 --- a/xbox/live/mac-test.html +++ b/xbox/live/mac-test.html @@ -830,7 +830,8 @@ // a verification code also throws a kick. The seat stays connected so a // versus room does not read the pause as somebody walking away. if (globalThis.__oskiewarAccountOpen) - return { connected: Boolean(source) || seat === 0, down: [], + return { connected: Boolean(source) || seat === 0, + localController: Boolean(source), down: [], leftX: 0, leftY: 0, rightX: 0, rightY: 0, leftTrigger: 0, rightTrigger: 0, analogTriggers: hasAnalogTriggers(source) }; @@ -846,6 +847,7 @@ }); return { connected: Boolean(source) || down.size > 0 || seat === 0, + localController: Boolean(source), down: [...down], // Sticks stay raw. `quantizedInput` gates at .48, the same number the // console reads, so a deadzone here would only stack onto that one. @@ -1592,7 +1594,11 @@ .then((body) => roundNameFromPath("/" + (body?.room || ""))) .catch(() => "") : Promise.resolve(""); - const joinName = roundName || await openRoom; + const offeredRoom = await openRoom; + // Controllers may become visible while the room lookup is in flight. + // An explicit room link still watches/joins that room; the front door + // seats two local players before accepting an automatic online match. + const joinName = roundName || (scanPads().length >= 2 ? "" : offeredRoom); if (joinName && !roundName && !workshopRoute) history.replaceState(null, "", "/" + joinName); // A visitor arriving through a shared address asks for the second chair @@ -1607,6 +1613,10 @@ // it as soon as the game mints one — copying the URL is sharing the // fight. setInterval(() => { + if (globalThis.__oskiewarLocalVersus) { + if (location.pathname !== "/") history.replaceState(null, "", "/" + location.search); + return; + } const room = globalThis.__oskiewarVersusRoom; if (room && !/^\/workshop\/?$/.test(location.pathname) && location.pathname !== "/" + room) history.replaceState(null, "", "/" + room); diff --git a/xbox/live/oskiewar.js b/xbox/live/oskiewar.js index d2369a7335..7d49e66bc6 100644 --- a/xbox/live/oskiewar.js +++ b/xbox/live/oskiewar.js @@ -81,7 +81,7 @@ if (hostAnalytics) }; // Monotonic count of committed revisions to this piece (next revision included). -const buildVersion = 132; +const buildVersion = 136; const floorY = 1800; // Oskiewar now opens as a versus game. An ordinary web visit hosts a room — // the URL becomes the invitation — and until a friend opens it, all you can @@ -3023,6 +3023,7 @@ function fighterProfile(handle) { } function syncSignedInFighter() { + if (localVersusActive()) return; const identity = acFeed?.player; if (!identity?.handle || players[0].npc) return; const handle = String(identity.handle).toUpperCase(); @@ -3039,6 +3040,13 @@ function syncSignedInFighter() { } function applyRoster(player, index) { + if (localVersusActive()) { + player.rosterIndex = player.pad === 0 ? 0 : 2; + player.name = "PLAYER " + (player.pad + 1); + player.color = fighterRoster[player.rosterIndex].color.slice(); + player.handleColors = []; + return; + } if (player.npc) { const fighter = selfPlay && player.bot ? selfPlayFighters[player.pad] : player.bot ? botFighter @@ -3145,6 +3153,56 @@ function survivalRequested() { return !requested && globalThis.__oskiewarVersusCapable !== true; } +const localVersusActive = () => fightOpponent === "local"; +const localControllerPair = () => + padSnapshots.every((pad) => pad?.localController === true); +let localControllerPairSeen = false; +let localControllerMissing = -1; + +function startLocalVersus(now) { + finishReplay(); + fightOpponent = "local"; + for (const player of players) { + player.npc = false; + player.bot = false; + player.spiderDummy = false; + player.remote = false; + } + applyRoster(players[0], Math.max(0, players[0].rosterIndex)); + localControllerMissing = -1; + globalThis.__oskiewarVersusRoom = ""; + gameSpeed = 1; + startFightAgainst("local", now); + startInputPending = true; + navigationPrevious = padSnapshots.map((pad) => pad?.down?.slice() || []); +} + +function updateLocalVersus(now) { + const paired = localControllerPair(); + const arrived = paired && !localControllerPairSeen; + localControllerPairSeen = paired; + // A second local pad must never take over a remote fight or a recording. + if (roundViewer || netSession || selfPlay || resimActive || versusActive()) + return false; + if (arrived && !localVersusActive()) startLocalVersus(now); + if (!localVersusActive()) { localControllerMissing = -1; return false; } + if (!paired) { + localControllerMissing = padSnapshots.findIndex( + (pad) => pad?.localController !== true); + return true; + } + if (localControllerMissing !== -1) { + localControllerMissing = -1; + // Restart the interrupted round with the match tally intact. Absolute + // attack/death timers cannot safely resume after an arbitrary unplug. + if (matchOver) startLocalVersus(now); + else resetRound(now, false); + startInputPending = true; + navigationPrevious = padSnapshots.map((pad) => pad?.down?.slice() || []); + } + return false; +} + function versusRequested() { return !String(globalThis.__oskiewarOpponent || "").trim() && globalThis.__oskiewarVersusCapable === true; @@ -3858,6 +3916,10 @@ function consumeSystemButtons(now) { // Start lifts the wordmark off a fight that is already running underneath. function enterGame(now) { startInputPending = true; + if (localControllerPair() && !roundViewer && !netSession && !versusActive()) { + startLocalVersus(now); + return; + } if (survivalActive()) { startSurvivalRun(now, false); globalThis.__oskiewarStartLine = "climb!"; @@ -5778,6 +5840,8 @@ function gameBoot() { ? spectatorCode("https://oskiewar.com") : null; shellPrevious = []; startInputPending = false; + localControllerPairSeen = false; + localControllerMissing = -1; navigationPrevious = [[], []]; roundViewer = globalThis.__oskiewarRoundBridge || null; if (roundViewer?.start) { @@ -9604,6 +9668,10 @@ function gameSim() { padSnapshots[1] = gamepad(1); inputPads[0] = padSnapshots[0]; inputPads[1] = padSnapshots[1]; + if (updateLocalVersus(now)) { + consumeSystemButtons(now); + return; + } const cameraPad = padSnapshots[0] || {}; const cameraX = Number(cameraPad.rightX) || 0; const cameraY = Number(cameraPad.rightY) || 0; @@ -9793,6 +9861,10 @@ function gameSim() { else if (versusActive() && versusChallengerFresh()) startVersusFight(now, matchOver); else if (versusActive()) beginVersusLobby(now); + else if (localVersusActive()) { + if (matchOver) startLocalVersus(now); + else resetRound(now, false); + } else returnToTitle(now, "round-end"); } return; @@ -14993,6 +15065,7 @@ function drawTitleHeadDoor(t, ink, suppressed) { function gamePaint() { syncGameView(); + globalThis.__oskiewarLocalVersus = localVersusActive(); const run = runtime(); if (globalThis.__oskiewarTouch) { globalThis.__oskiewarTouch.screen = shellMode === "MENU" @@ -15415,6 +15488,15 @@ function gamePaint() { drawSpectatorQr(titleInk); if (!reelMinimal) drawNetHealth(titleInk); drawTouchControls(); + if (localVersusActive() && localControllerMissing !== -1) { + const label = "reconnect player " + (localControllerMissing + 1); + const size = compactLayout() ? 30 : 48; + const width = handleWidth(label, size); + const left = viewCenterX() - width / 2; + const top = viewHeight * .43; + box(left - 20, top - 16, width + 40, size + 32, 9, 12, 22); + typeWrite(label, left, top, size, 255, 235, 130); + } } } diff --git a/xbox/live/social/manifest.json b/xbox/live/social/manifest.json index 7ae7af0c0d..1ccb1c7b44 100644 --- a/xbox/live/social/manifest.json +++ b/xbox/live/social/manifest.json @@ -1,7 +1,7 @@ { "format": "ac.oskiewar.social-preview", "version": 2, - "build": "57795a9f7c339827", + "build": "5bd7e7067f957017", "theme": "light", "imageWidth": 1200, "imageHeight": 630, diff --git a/xbox/live/social/oskiewar-title.jpg b/xbox/live/social/oskiewar-title.jpg index 63eb6f122861e41431229a592efe39a7b9f8575a..4853301a21863efe03858937953c787071c3bd44 100644 GIT binary patch literal 57534 zcmex=3)=m5zjCKnfgXdIZ4f#KUVkm(EzmvwQd!6(d_l3JY1z`*cfiVEYE(!^9W?*1UVPIg;NJnBPA+eJS zia_dn7#J9Aa&t;Sc7fc($iTqBlbRPA%)r3F!N9;E!%)l+#Nf{01oA&f0Ruz+A_fMF zuM7;#6A)raGZ`4Rw=ytD+(L+{EMQ>ZZ((5Ab{-*y2$O=uqC~KHEDQ_`OlfHh44;-W zFz`k)FbH2@VBm@d%P}x8;BcD)*lq3%`3(6C=?pmxsSFAXo(y>m$qaf73JgXJ1`LJ_ zX8&(9I5RLYGJ+5j1TeEQg8&-~3o|P_8#_A)b8vEVa&T~Qu(NaVa&d9<@bK`kbMo=? z^6-J!AVV0Ln3$NEnc0|`*?2hEIY25%!~YL32y!r$v20*wRAOKfWMmd({C|W&j)9SZ znSqHJloX-x7PPrr^9uypwIC1htE>UG8r@}_Dq=g4njLnNmCQY5T@v@0?Xn1OI(~?b_4?U8U zGBvZXOfG9)bVV&<@s`6MLdsjGFWvg^{}BdRMn(okRz@VJFtCCwV`Jyw{C|YORge*6 zH!CYE8#5aV8#4m~h|9t%C?u?C7|15#m^hJLw6Jlbl9AKGgBO(_elQM7Dr(xKqH2=N z;XG;4p^w2Sm;T>k;9+KDU=m~&WUyzr!)&W>|1)X*Kg<6NU#48xjLdueDX;X;{&4FV zb@H>XF$k}?01X{dDb^bg`+v7Q-v3emKf~I}`+V((<-c4-M>hZ4+FoNNFFgN_y3&7!&h)?8JU8m!X8t&S zweS6%`Aw4>_)ea0z-9swVwO7A{~4^;#y_0!pW(8zL(kvC`#-^7O zTzVJ2%Y9YPbT@mUrZPPvtAy?n+Zl81a-Co|l z=24ife#n1@^WIAJf3s$P)PC0M4k`9}FS37apvNO7+ zqNe;gfv%$WX1<^LE_T+ntyZg6tx{5|m^=BA-09EP`S;}SvVEC+{sPz?6A|;`F%eO0~qk=DsiulIemy)^IZ;h(=`Pks0J8u$<7 za7*zk`x8?QYJU5E|htF%ycfFeW{pDP(UXgl`=k*0 zSDIlCyZBKw ztN0B?`YY=WeSjwlJEb-A^>)7xzAJ| z3T-QS;o1^yMMwp}_oHy9pSJh(+q1pHHml@TdCa~2GrYvr|FzMLRhm0}LyI~ii_|h^ zwAF*M6{I}Hl2>1VbH59@x%K^Sr<~OfRjcY=M!%bXzN1?Ie2m@4eMlt*{!;YPK6us+ zl7km|<@?};C%imGlod;CK)D*^DQsnhCZb#(&5EO0akM(XmPrOfg__vDHCT7+m-uff z@n0@nP+kVF_RC&rxm^f!W)?klB4Xm!nBA)ush!;QE2QU4q1pSKvvRz5RA;??ExKm` zli@A~hSh%;gjwk{2W`1GZ(rZEUHnb4ckfFxe2UUN$SGnB@f|7T#{Q@^a`+m`oQTaI@n2cE9!I{UNh*{{>B z){iHK?G$|*X1S+h_%yY<^cKe*hlx^pJFS1j{rK*iDRhZoIKE`s8h4Z+FLCd9h-}?wl3N=HJMYk4#=P&Ar%Dho^e_;nJ{0t7a~~ zRcKNwW0StgSvyOq=3TLBeoJrUE=#+me#@plmjAgm?>_@u|Gy@Qjdra16%5(>plZQo zSLq?y<-VV}ZF6mZE3V#@^yz9y@;9kY#UG-xqNYsTw6iZKQ)jkO_{L7{`zNmN&%GKL z6veQ_#a;F5_0ZzA4h*XffJ`9~vqyDDZj}5g=VLk3&F;-6jZ5w~FYVKBR}Ss^`+Htq z{T07_zTS|~7b}*hYR8(hS-KzFqiyr}?Zg&Qk-?YwW-koo} z^@gF$cJ5=ZKfQV_b2UWh)(Z{QH7l#Lg49)3oVaS1Y{$1^U8vvstkOHn|1-$`aj4%T zR{Jme>VJkcdi!O|cW*T-Zn(Yn`|H2crfr+|($p#HozX?Ba`z7|>BftTv=){3-xR;L z#8*`IS6!aZ<-qt8bIv_Ixq5oa*Yz)Lcy9-W9m&*I_YL)qeRu2QI;rroV_7BYfttxX zj-Hz2+7q&9>xtdlSM9CJn_H#1(c+C?v;4y3ThDB#eB64rC}(X*R$f=D>?5!96JNZY zZP3*pP|B9ITXa|DgSkaoNBqhTY%;A33-#;X?zj6*w4cP+u+=d;Di0fLy~@y7^{Lv` z_Ec0wXqbgqnDS4-@Kta3-Co~!uUYhON$1qWqp!jxtI`+$YB>|Fd}`&|>q~R^XPGXW z7m*=t{Zp~j=S}jWW!ZNhY_{#(wCIPHrn>0um>;~Wuby={ll}JQ-{aE9OZ8@T_3LkO z&u&`!U1Q~}jY^IIU!N@tKeVT7&-$;6@*>){N?mbraq;Wud|?{r|xUcrkF=Ntg^dT zElbgxq&sWk?sBE~(lu{yzmDhITeUtbZPBF{lM;3=y*FuBOx>-m-+rxpImt94ZN(3x zBVGN~_0c;gAAT}b{XYYj+RQ(*-`@@X&#=xsH`ByL=c%^han@7Zd$$K=X)fzpBz|kv z#Z7KcietBGEqC?ne&8QFul^VJOZ|VZF4SK!IeXUit@7nH`~BB%o0Wf_XXUQwRhmjA z8xQnkKj}Q{n;`r+=SwK4x0=B+uq%k8?u1k4;8LOTzSrb~lf75*R zk{iN{zTCW2ayxJ3l{?!-jtUxcSDaa>f6g-h#HIMpO!ohlY`nvsz1pJT;jOzRQBv8Z zvD+$jOD6_h+BR!yTCdcq4afS*wauz)%3k%o+;;nD)#|=WiQlWFeGC_8Yh*0)ZoYWx zT~+(L@9L{l+)ah^1K)kKt$(q$@IS-7sPn&ec;^TEo!iKgy{XJKs%L%-gQs-g)rFe1U0e3ub-x_Rcx6 zM!crZV`hBzz5rd>RO{5FeVU@XcZ&AA?M`*qe`Q_U_2%5H&6ituhpyZ&a_&s=e186W zw#lpaF>o0W?Jf!wYTeI>b9e5_5}OltXVt<*OT4o8c$=&~b)@JIXQ27lb*H}xnz9Ss z_`9m}%9Wd~JOWl}erx(RN?n~ef7QG0NAs`DTcWn^lKhip$!(8!xWzVKe_kT~YUVnf z#mjcD-Mp(*%g}O~OGxN{hLj4WUtG;kDi`kmd;9%=hUb6wzxF*H>UYGgTYZ-Aj*qO} zv9Fh{T6HRS@)f_YHIwX?ik>g}v1+BxH=A{TwC;pjEqXF_{?~%3fq!%h9w+XOnyh?b z_BQK`_3PWZ7CjH1=kr2CT6tS!T&LcjwZ2#D%eyLOnI4|cThY!HRsLtnA>GeWZ#+X) zlQW;JnzS@p`Qn~a{S#x}PM<2C8g%>XhfB$>Nj9+`7_!z88;GTMBQE_8+x+tBdC9%1 z{?C3d$<4m+YjoH|Kl!#w(XlUo!#BBYd>glNcW_C_UGesdcUc!+{N4NM$@DqxD*ICW znje1mKI>9+<+Kb>*kK_RpFXpV9nV)OM|7=Lo*G(}d#^Ee5D%1H)osT}O#JrY#?@|Gipr{}12Cf3t)yUEZs(?6kqH?yIS>B?ayQTkdQL+0R)b zZ7Q?r#Fe-_m-`2W>-`(wA!}(p__gqc>^_yHo1^X*E_?nid(QQ3A@1*Y*{8bH-TvbG z;YEJ*^>QhlhwDWPA1_^-)^cs@y60J;$2#6_d*(a$%H_xUKc2>Z5nEeZ8u*`K;jsl0 z8|}C*G4Q4ypu|%&(93o3R^_sYvb7Ip++D12=Gj4g?{J-Kr>BT{zWZ#Ywsk&7=SKI7 zf}sha#d|CRg^zm0K2dC~|32+x{lA-6>sW6+UjKX5%l$uOAOAH`XKl|k+39AidT-HF z=d6YA|8a{<)%X{Fa+Cg?wXSaF>tE~po;_Xiw_|Q<%I6T#2j*-OEmI%4E6!6dsmZ@= zwJ&`6Qt`a~>G6S!>SAxj|9f}mKf~GI)BiL0xtmyt+nzez3jy5 zmtRV6Z4Gq!JTtt@_tU#e{~5lQJ^z<~XaBFlr+1hBXL$Ga{Ga%Tk+uD>+X@OF~U z_2{I#6F1s^+qUyQN0#Sy?cimn{xevLMs;7bn)fVmp}38`)QX+n!JYx9*bS#nJT^(` z(DPMF$}!It$8TDt^l8`e`2a+R=Zwblu0;{A2GnhlkxxOm+1!x)5?{m&Lv3 zrtAKi3wUv@lb!2%O9=sopVl~dam+GNo)C9!E-n3=j_|` zcZS|Yk*iCzg&26Uh-t;L#=TX1n|QhJ98b{H>3#nhbkFDOd#t&UJ1@=ZdCXJaOYX}< z+gQGwc(#7!+Nv)W@2h+Co%DU%t$jOR^%csxu4mg~WcTr^>56NMSH;cNDmVH2 zrpQ)2FZagT%kyU%x^rHB`S$wmX}*(URvFFtt~~ea_A^a8!@O4gytjLIx_;P3D z<^&a%ruL~n-FBB}(@Fc9+i9}Q_sdFRPCVOG-7-mQ@kQa(caqZK^_HUMnN0Tzyq^`C z7(bJmyL#u*RO8zwrs8Lg?OOQ3t8-*+ua_4hi8$Ya?9%}gf zR{po`-_Nbu7U;JrCS#`Xz3Y}|Zcn|f9C+&5&bZ#{@ae}hG@cb&wwbqF54kLS%;e$0 zul8xR^S-Ig%HH0z(e>3^pNlcqzdh6H6W%IX(D@@+@Zzh4pVKzIxO!{WZsteQkvjZ~ zLTW@pufNn6+h(~o%Y0Vf!dT(UXY*cs2?_DtrI`Pt`p=@C*G~CUzMWIrsO2+Vc;(!v zJNJ1PP10OjxO(!rbqk7iigupewNFwou*b#YY1P-2DbE+rom=^A$BSpqvpjwCHzrM6 zopSZf%Dt8sj+gdM+Ta;hJE8L>7pYh9_#y5h{25A)tl3s(+LTU2s0G*nPD zK$W@oq_MP{tndBUciV1T?hUzi zyVsw;Dm|!cN{CsRt6FejXYB5H+mJQo2g6fbZ;5R@xod0X>)=k^5uq!0|to77$)pP!p7wwFBuC?y%$Iy7M_q($h%XVC=FkP3l_OexREyII7 zUYX}sgeC!1zU+I0! z>Pfa>=N2Qk=Leo-M{a&t9G-FGs=J}3_v_Q^+$H9QUGCX#quyNC=UQDv z5)7<_;tHEQYbJ7KvU*w7e#hn8?B0K_J(jg?P1iTGok4w@XPW(0@#>l@obvK&*+-kd zOQT$8zLHb!x%1`S)4WAzbiNuN(TKf_A1x7YoSxU7A=Zo@9|vu=wIetZ-A<=cu?`97P}53atp^mb73E;p_6 z%!{Yym50WQ{_3-e&Da`x`C7=?v{irJ7j3b+9BiyLQStUfsY#}DcE4M7?cMA*9rNb< zI{avR^!o3u%jZ8`-T&7End4b^Rn|{CeR9^)RsR`6rnlWxX;%+-R=QfF88&y4+uF~U zY#I6fM}#RbNKC~R zV`ySF;@(rlvQu4Cy?^h@@|bI~{$}{ZUf0mr$*bOU>|;n!&+yyjcq~72+oGqQHdD9h zs;`P+m&&()k@;kqdtJfIwJ&$iw^^TWcY3$f-8s(|S5|q-73{aUzE&&u-^x8xZ^j8!KjX3tpltVZ46{e}5vo>}*zZ}zCJ(!7+t zNPG2~t1-FRc7?)%A3FNk=9I;LD4g=5ZqCiG(F#|^5@*zY(|G+VC+Ntvplgomvsose zHl8@q^3R#D)lut0ssrU_zj2?tBT6~#c#)63{c&BBc;?fOXFvSDN^<9eo!+N~AB1Mt zoJ;MWdr~>H`pEq!d7GXKNGW!e{VdDAv4KnHpRDZ(jaMtym0r00a(3tkuCB0M>PK~j zyt($xJgK#_^IUJ%cfD6@o+`ex)r;uo*gNl6@L@IUsh6`@uM4-$)1G_r^R~#9K{LCr zCcE!Vh*X(by<_UTcMsFmUd>q-X?-zo4&PbR`nXs-f0j4rO6NWLyYOBsx?L|*?mwQ#!Np{;or9ix+)_pLg-`$m}NeW_*VX74Jm zI<|P4ic59ewN;B2DXkJU-|)I)PO`h{di4z{Q_W5XJrgM~YkMB8t(a2m@O}NkpLaK@ zS511?xqr@!8FNDertPSEv*F-x^B>Qz_-PyQR_?vG;&X+zP}|L-X&PY>ukM|k#+j`$ z_jF9>-J^Hab*jq?SFPSzt~vd3-WuJI(6Cvb{}t`OwJm?nL+i|}e?pzt?wTB3n|ZtQ zn(54CGq0ImOPibQ`A}Xg{)xmN@!6%Ro1S{zT=`1kSJkY_*%wdjUOel`Z(sdCbL3Q1 z&hPL$xno#9mynOrK)7wsNQgzX|dp+&)_QQ1{=hr5jzaF|Z zS?%OqZ&slv=3cY=4?gUbl#zY2u3ky0N_cj@*OynT_Ilp_RJ-m|(%j{@)~2LPTq4;v z@6vshq|N1aURp0+1_s_PamjTLiI+>c{k6<1MZ7FOG(S#Qeono5^4s5#am`|zQ>*?l_dOCj`R+RB zM8UX;PDiV@_J;ap%5K+=nj7=nbmi56LoxHi*T*i3aShM@R+zhT`=zUHw|v;;R!^OL zwC|SSnlQhP&h3ZP>uuK6hx*k{tgH;&p8l!3^c>fnVhJocVi2aMZw#-zgY16c{G9I>>IrHecxl2p+W=nN$Qc@~$arq)N zv$SL8J^yBJ$+FDej*oQ*6Akpv#T*X#VB@ZMJTJ_9DxcS?seU;xI@4Y5uUXZ#=XTDM zu&tse-cAf&?~xr+kaF49Y4;7G=lOegs#_Xlmwe z-{2))cB@NWvJDXesJ&rP@b_vc?UpDKPX_GZ zXZNz-dh_g#gu2}+Zo9_!=4iC=spumN3X>8r(hFe$uI;x(du|t?&QbDt^O z%a@oIm}Oi%`9XL3)DtWBhra$gvCRI^+ji}gciS@m_U+vAa!)t!H1WlD>v}%MJ5{XI zNA5@8zSQfoJ<331?R}oD(Rm_U&#ex>qnSF-vfOQv?W&_U<*xW{3weDxch~G|&ywzB zZ1&U0Yi>F1daW}{v*gjmVD7jdcV4Usw4ZwB_DoU1*^8FFeEjv-l;;{2y2oCZ>{|3| zhUm;J>42-9of*sBtY%LS3$kS=VJ@9v%CnmGV|T`_JH5 zb~R|-gq|#m@Qs%uB1@+G>#W)C(Xn<#w2G$O>20U?tGmQrPW=$?_+;OQnHk44t}S}F zJS@wrq+IE=>LigQtskXNZp<^D8@lz0#NSiVwYRQ2^VTv2{}I)_v}#NV&z>6SFPA`=EWs7?RyioOnd!$;-44mw=WI96gF$sq$FAO z#^_lO_LSZG@LSiGb+zoSheffkR=mtq>YQ{n_*$^5$n32vR&Lf>=IRnVeWv;Ssb+gx zg&s2hXNcSz{-5FWto#2NZbWzA%8LK}Dfk3~1W`kVc8Nb~HeAVkx?bbp>%^$&ws}v* zeae>2j9V8~elXb_!4JnLnp}1#dg4bI*>LT`_A}a?8j5`JZb)znN^edFHot zUXjqXWtrWj?mfOX%Gc(qsehY3?{4wR%~zMYs=9pHymeicCr{V$MV70stG&FQnzc%Q zt!TjaydAEuj;1Z$8Fou=O4+L?*(+BqUpmPmOYp?1tI1ad*SWgw&YiyQ^ec-^=Uyz& zW?Po2rAN%Xo@rqCRN<88?jxrLPjU9M{aaOOu0he>paW-+veLzNvFXZ)ew>&wEexW=rp1 z8d~3!x34+vw}6G^`iIhu)iyI-*DbrfQmQ>zEp*zpbz(;YMMHk8gq*q(8gZM~Ix)R$ z^|SqZLbGGOo2u=$Z=bnt^<^0)lb`5%SZ?I4+Q&)DK+ekJZYTg@{cRK4Bys^f%k z?e*L{bA{J^Of)O|_po$Fx!fI_^a&TP{>wU{8=hnLFsAEj<0ex(QD3e_|5o35I`!m( zb#8jMKdlm&X*>Ol?>de>IewqxRaaklci}ca->>|h5JImJ8F-efzc=!)xh z;_5En!u9T~1!Jy5>qq(JJkgi;Ld%yjV5YmUGve z*=nx}&9ZI%oGX?rSk!q{bn0cJc^tD=bgT3inXdKyRT}DI{cd4F_sXiMCx5=S#Xal| zpT2K-r`AK)o8qaHM5~35+S*w!@6x+1a?w>Z`>|b)aA@h})t+CR1CUGDGo@?MsKf#OrEV&&Oq&5!K3em|UR@8zhsTi&mp7qw&3)RV%& zGtXtKgzfz+TyMH+RZEtc#;UbDp39|OExEkeW{KiE8`0c5rm^o0PKucRxEm{at1VJg z`tEtr5U;z_OF}|j!%;dz!mq>7upCQ`aq?`_Xda zsjhn~))p<^?zfjK)L771aK*FanUjl)EZ02^&3d!@&A#>b>bmY9yw{L2D|yAFJFg91 z>&=f!Jf67uYQXKh&am5Gi&flfY+qbkq_jBjt-F1t_};QtODC9q*uHvqe%`LK^yTu` zlG6%b=f(UMxf=HJZP=;EtZWspC7sdA5y#fg zI^VqBXx;5%ljZXwtfv0^Ahq(J!>aGxdyl7i)-60!;2k?(W#8j1-zD^lLv~#cnBZx2 z^n**1WvFAt{Z%0=PE;@NRg!O6j%J}z;tL8u9T3=9^ z@GAWGfvn{}nO5J?X?-qwc1>A!XvwXGE4)STsh{RDdvmooaDAA*`HR1q`+a|DbPJtZ zrMb4qb>*#Qt$V5^A{RG(mD(HE=l15=r@XsYPj36C`kx_xjg092)9gX}?=gqkpAe0E z@af={_1_z=`hQ{#-w~CyR_pA;^O=P=w$>Z1UcaKgRmyR z7c-xpH#t`D`)ZEV+!gaVwqHDNQghvHb>)rYTKT{1R_@}sJzv7Y;@+7z{km8FS-p$Y z{q1iYqc@31X;br_JyB{)n%sBoy7z4BCR;(7uWlZD_KK&yzrOC4n)@7$tfg+-3f^|5 zd<}W+8(6aVp2xM+nSl}C-FNK`6g{yY+qwqU|AoQF@N)|y@6#+R4RPt4vQTY5kE~7&UvBW@XI$wcE9}hQIjo%Ie{Q zig=-0m7$%_e;l2ycU(K>rt0=PFK63meOvdoO6hC%t$loXr{=Yq8dg|W%reWXS-yC~ zoBZ6*dS{cK3pdP|vD#zR%->sGN?#g2G(2V}Y-n#c@x;yK>>E#tV`eW}^sZ~(=3oA? z8*C?Dk)6BC(tAaf@~r!B&7{t>wVl|J`cmk%tJ_rnn%tCyVoNMW}n_GbTLM4nLo=%PpRGO``hmCG<$tA>C>t=p-ZmHR2E)-{d?cx zH`BNJh*h`GzP90dQsyPCOT9ZfXI%G~Wx6W)TxNe$h=r}=mDy_3lF#poUnda#QfklI z@OAH}-dFAQw>b4>vzt>TBdx<*3Fx>ZQ3;NmMy$X zm&{t{DR(k-ZT(E4ANpO(egBk|x9A9&_KYE35VA^0`hrv#x9EpRTJv zY`H}>7iHzG%Qu$$wzG2LpS!+uY!uki`D3|uj3 zaDR8xWxw-he*1lQRmELV*JZm@pU&cx_~LFFc=Ev$ z*PFq0yBB_uN_(GGpQ`3ta%K0iJsGa5`<831Uh@3(hv}ak&YVrk`V?~c^sa4M&$e1t zR$8XrFAb^t`|KUR@UGQfJH6ut(<}Y?3RV_+y->}*@!arDNO8>7n^7wttXOh-u7^x!=6K(-+=7xmRPS-=2q}YfJp*ELF{FmynveCS>xZ z`ovgc*%mTtSf;`Vu4U!RpC zfoi|=*2Q)1TBUw%RY$C^$z>^*j3sBT+Ena)6!pg7Qg*wTOiY~VC6ApYw|$gWZb-b! zEw2B3_FNy|zHMvwyor6>rCQ@#ExP(ws7t8p#3jauwsZcPe(ToMEkE)PZ@KRl@$F#Y zIX#o2nhYG`O^Xh`Srq(>|6Ui|Fwu;8=*?e()aFmP;pK`5zU zkw=|cZQlRGGXidwpuHYs};=&A!XF z`@8+_4SuOLYt1ayNpq8Du9~f7x%b_v*;QvxC1+i6@#_jS6n!0%%`LvL@||nSH5q>9 zQ~DC?7DgFsi)@#8(s!9hRLpIgd*zB}mVt>AW4f-d4-H$Sb~|sAnWlAN#g|J_7Ma$s zTT6XSUHTgPOV&i~xYfOD*^3pO7lT(-aVfWaT)OC1q0Xm>1zlHFgD-yCH~+zz;;Evc zR^NBO=~}(1LVdyW$y>U8FHg>%8vo*YS>3exXTN;;Ywon|?HPB;l)Xi>R$ZI%*IpyG zM%iZV&O)^p_fGM7W-VJ1nyZsrUUqcii4{+Lf9}oR_xj}*fxO*MOeMpFr(6$J;hmKo z>u%&MoRsbn(|K`4=L^NQZ+$OU%XCfWniBG5$&~*Lul=+w-ZEdF)6BgmAo%*(`_}_~ z{pC%jyttQs?Afx{_kQFpi%L=|O`LhP{

cFKP$u4=nx9@L6bbCi}NMpHqDtCf_{n zom8IG=5G3?$a0R(nTjFTq+!H63 z?1@cSn9~UYU#CQvrd;STVLbb)a2qR zx6$%W$J|HDPOUt<>+Qa~nio%gYpd^dsjS=doB2Nj-?oyIh2~XvFJJ0P|LQF}-AwIC z?1n0}zmG#V+$!>(we{4KknjLi<505~tGB%Ooxbe$`Yy#iYyxF|=`-dr-ny8*J55s0 zwmW*wtkU8YZR@@k_chJE>>cUJWMuB~Z0jZMn6FRcZ)Q*bR+aNl{OGi)uiPAYm&;z+ zYrp?)mi^Yi+ncnkR(0C%?Xwg;{b(NNOSMn4N)82n{&o7$-wpTfecLY??zzZT_cA8~ zgU6mTnBj>b!pKyZdUNukn#^nap3iwG_Oqz&sY1KzwpF*^PkEcQHL7=Y`!v_5Pj3pI zdg8Y8Md#)_-5pgY5522hU{mnw+4M)dPES0WaXIRAO-SB}7m0h$#`;G(@}^|!>|Ycz zaqp|G=dy!qC+Dw!ap$Prh3=Rg-*d_~sq}r$|8dT|uvg}2)~DkvSN>(ae{Mdr?{1(? zc)ok=8J=_BG-p0I*!k~VYSgMNvm-Z!9l3QkbjwYpoQ#{&8ON22pA>1m+4E^{sQJr% zCps^u_^n!c;Emjy>zDadzr-t?|5`Tb>uO0q)0r_Fw_SWXb#;8|vL8}g*G#e!*E;mw za?;nxz~5TCrwSiUYI^X`&$Q;tF7x$fnTv~q+QYP8D}@%l=~=m8!9=Ovke63QPjBx! zvHI(}XNhiS1r3c~T|0PvZSZPm9WyDJsN=3V+X924*KT_u>Fw$1&7IgZP0Up4#N*^Z zscWVyI(l6|z;**i2{DuB7%{@Yw6E~;Z2$Zl~G^lj_ZO-Co+n)cYA`{g9D zjc5AjuIRtD@a36(oDUx@5&gMK|NFX!xBndT|9a%;@%Zndm+L=RAODr%Z#V0a*{Wzc zmFM5RaOC*nP_wLmyWXw4TO+voRdCT=lQ%ABbRQdahO@2ubJsES zqwnG4g~d}pT(B>c`F0GSYv~tPBi(coSSXoa! z8#~q9b6ecLMTK)SH*Pt&@XvkL5c#?9Ogsx~b))ZA)oYT)a^d{umZqr?Dmva{9tJoSz zkUY|q=(?RIW! z((=yGbH#JkPfB0)?xoz*SI>7=t)9MW<=goDEfr_yEqhq7vTIV;B-3e`OUt#Bvnp1t zJf6Hcdi(2}+l@tjxD?OtfAc$f!@g5R^Uf!l|M-=;yWTfz-HOg-^EUeUb98)MJ?FV5aLe z{vq#*FWk@f#z)D1JIny*hQ@eTGl;^K2A z^Kfj1k9XU*^>2lRCwXWTxHt<@r&Yho}DSrNB+o z!q%Odz4)=)?#r)lysYt0n=k&WaryMn6+d)Lu5SLL=C@nbYK^9rmU>sws=poHH;(x` z&b*w8#o>>S--u^*YoDzXKwvcG&R zop+|%v+-?OY)slT-K!nTTdOYnygmN?TggxVwmn;}d+hw%Zo5EIY|`s)i^?lGeY^fM z^gQ`+GIII#)klL)hr5Ry4L_eTE&c0MxvP^PS|Ey4$viD?gmuH8(Ko$w$B4TC-=~%st+#pP|n+?a#Wbv|FEEt9rk& zOx-Bc{Xu#OZ+`XZ?Y~1ho}D`X>_q3ItHw_)-hIsWdj8hk-rl_NcfuQ)vU-#E5>_RL z;~x8aW&H`M+w#+Ip3uexOrcK{7#LW6uARHdt99|svvmjk*&L@_iGCW9m6aQCXv>=F z@O0DlliWV9(qFn_?N>|R8aJ)8U1jS-1v!0Is~mq;u6B*-%AFaHttx8Lr|8a5iW952 zeqhJGEg|PSub;d1OKkD0x1|@Cm~J^6*YPwb@|OWWzW~?+($p92R;6A zb!G3oj}!gw#gzp+t;>7cD|dC0Ye=%-*}IkVj_uz6k#l{-dG1^4le73z<9}|KJn|ww zKHkcF?w{TlJ<0W1?mMH7ZT~js+43caf1g|Vv?eM0=;vtTohqK2)RsiF_J!Qt(KQ2%q)sG40$PcfMKl^~Supsj0JX|6XVQeBY|(wmDTdoweTk zv!1tgUG0`LTlJl+);%jgI#H||Kuq`fBQb=f;#PzWjANPyyu;J>SOlq%9XEI+}W+P?9Rm#$Cd0frFSVWp18I; zeDSQVq=!de@-2R4&M0}dEOQ}eM)tZ*DE1@@4 z+|5fO?zqJ+$vP#^qiW&b_+!YmS5b5AG86 zXP@IgH^m>gx#)|lq0gba7Q1rGg(aSzs#rSTcEf2EVY@}9(P!)zPki^Rc=q!zq2-|= zU*;{1+nXf%wdlNEdatj^`$(1QcNethJ&nB@TKQ|$%KP;n#9sKHeYXEO%l?M{3mAM4*o^V-hroOe7@TAypXy6K5$yH!_*gv4G9-qpM^yW@SEokZb0p_02l zmZ@yFKg+jf(oUgW%O4tTeV;9OqCdnnZ`F3jn7sGX zyBfBZZTl5n+iPz@h5dZu{J(epi7zn@Ke5qfFY$>k!GPv@UB-sQeH z{iIay(^}Pyx3xC$UOn+^%BwFf@2*PhJ{fGdC$CvxW6*8gDH{U=0^KGa=E>X~apgaQ z*ZQtiUqeGfUoD??IdkcT+nO&{tbDX|$Hi=oiDY-5;1qE#czHHVx)y=kPZEn_? zf0fd#wl;!mwu)}HE$fp=_FF&k-HTp-`MbO3gqcg1ix(*=x3|>C>F?Mre4}RbCdty! zt0BHs*+p+YJd{bFe|MQx&GYWxv(l!WwLO;g?t9ga7cVq!o>%Gr*S4r)_0%dQ_0Ukg z>8a)^zV$*|#dK4zSF8H&7H;!cXVJ$Pb>!cRf9rnh?w@zNHl10waxu4zTBYxK%a2`E!H>_a=jbteJ7cHO z`&%E&mv!mAbD(_ST`;D zbW784c8%6c(O13EKBas&%|1u1n}5(IRJ2wlqUwA?#l_C~AKiZ^f3N(W@%By1&6v{d zMYZ|i@{89#E~qiy;@mo;?5_NZX-h(W?Y9i5|Igqpe{18xFL&5KZVs>77U=A`8T}o6KB8q zYT0))@#X&hy?N_p?QiqOo%%Lic)~L?V;gfT(`z_ztA4PxJ@diw?wQr5 zI}R_pvV5u2%X1kwa;zFXS-N`rOzW;p_w#4BoB6)TvOaqEG#CGCp~`nM^?#iGu5jqH zmw9yY9j=F}lNFbSX-9wPxSlf4uJbIm@e@;eUsm{)S0E-H*`t^^H#08)wO)ev58XIPnT_6AL;PDx9-%A_$?vN zBVu1w^SSpcXJuwZUR@tjUEbxk-u>8@&oReKLJIfQ$bRJH7yYC2z-l6^c1HcQFt6+> zTh^8vXQovP@9h-7)H6};O1zia^D}#wH3$9n`0Sm>xU?en)jqCQ%ZwI<9eM67^?sM# zvJ}5}95a8NS{LtBvF=2z$%p#GSIs&9=p{tudk0NDb2w+qx0_lM_pA)nmYDly#k`i9 zuJ5@op52&mVncYrjml-;IcHw?>&w11t+w&3u~puK@T+`X?<*BN>ZZc=Se3X>alN_A#_w~!r zFRNC~@mrO}{J~q+B$u6{BW%m)xUg#E?rknT|0Nhv(L7nXLAbk zx|OHr%@ujJ*Rg6ZTDQ&Tbe-kTZC;j&OG+-T+Ie|z?3wpL zC2o4JuL@k6ck5K1N zw@-QI;^FV=eHGS)vc6P1$&u}wqXHVAh=Ba1>Ww-ad zpL)H@WUg}9pTrf*?i@KTE6VU-%W?Ou+}(L53op&lHre=)>yO@Y)vi@9Q%jF&?R>bp zPqfi8=4#s8nKJ9{1`64;hAW<%dwBD)pJs-)MVD|2ORPCrSTpIm@#K^uBZ~#Ae80Qi zwOpKcTdQLI;*v<6)X?CptYsw`50liMxGcKUJF}lxYO~nX*S_1POJ9+DnX+K@vZ{UO zr#bY6{ZVTwb^DyZso3R9N^j`Rh`E8*f*bBc6(lbElmBwlqgxYugW^{t7B5@4@@~@F zE$3El^7pnbt1(h{y}NqTn~o)W z7IZi2-ju7-+GSHuO!V0O=4nWkc{q1p*S@3YY9l{N_}X2S>)RgLd}pI>{N`6>%+)Io zmzqnvdP#3J%ID3gE?v5&`%qQ+a(C0RvfDW;w;h{Xmildb)Q-DrRvg@H&Gqu!=19$J zS*Jxdt$y*oU~A~QwcAd;ot7aQT$=Rm$M&0{FYbLT-lQ3AlUprwedCM1>{+`PPplCY zc^$QMX^7Rzv?j?{d1AY#?n+s;Eq3izzGdsTTv2~@mSyed8Bc!g2{_wz@N$va%7;2- zhQaPPS5K}#I8%0B?G{rB)$cMFeJ_MaHGI>T_U^AnG^l}_(Zoye~G&yaL&m3Gy- zk0*Ao+PQkW-RudW7ej?NhZK4RhxlYOFl+@KXGU84m7r?5t&cvt_uX2R{Z2IGiit_# zuFO|jsyTrU$CkY-p7YctJJ4#?syD3+k9KdbJKA_})tX(=Da%hiU;eE3`s(KUqD&rh z?cIgTCZ+vnu%2ZSyQ^4f(ablA@8ag_9$WF|xY?lx8MlvIU$$rQu{wbZ4T{;s~5@ z`$3LxO3gXf^6shTcdK@WR{c7w@^<(2oZyZcw|4gz>9clj^J$y*v1Vms^qnr%-w z^=12v<>GlutIu!Bc{J~Q)RAPp8@G0rX?B&)HCbjl^YO8Yb8}1{ZIP?%v&GYW}f!s-VE`*xnlM%y-<=Zf%_(xp@!Q_tjSem6CrP z&b#t{$-!Iy8E*E9zP=x})9l$)!NBg_5$kTsg)JzItlz2=Cbe_*?u+)8*RTInwJyHJ zQ=hpuxNUFTt1E>!mrpt0a&^7r4R$SaJ@Q?^JnYO=!I-b{s?#I|SKZ5)9rI)HT{GW3CvMG?{_^^I@rUZ`o6lL) z_{M)%v(;RB@!Pv=uUV(u`p@un(fYsPdftZ*x7r{69q}Wx{rF_nw)l@J+56wj_c(se zoc+Qd>uuWY9yOJEdDGvdfZCb0GIQQ%rpKImf6Q*egV(>O{E-a&=`=^qefigKeQF!C zG^>9_W)}W+XcAjJJ3Oy?l2+8$tom)ir=Gd3nj0(A>(_CpU%LHP`I0YD4{ttPYjL#5 zFnPzr@8Sp6g)K5#rXg!;z2~XR=d?c4S1TVrnx`iCaH}}yhTC3uli%fKyK-G~KhyVQ z_C(9eB`pA-Qd%pBv?!LQs+V7x^H}5PKZ99JE`ewt> zRmyYDM!j|0-!?Z%E&XuhjLw;ts_*kuEe$;^E*W9B_IAXp>5l`#ZoixM?bL>)uez48 z8}BH-D4vqC_s-e7>-;h&Ep`2JU6~$Nzcl|d zy-(x41y63C)itku#y5Y)=}+e$oOx^UvGn-U8R-pe3HWRcS`k>-g6Ug=k7OpvwGiImltl&B$v*S zn|(Gd{g7;Xso}m+x87sWx%a7wzj!Q7Gr4%qQaO{r$aplrI znb$(o4bHp`+x6A=T9;kbs%?vwy;#>Kw)d^;7ww6HwJE|AzCFn}I&JTT%Yo0nS6n_+ z<(;D2dw-|uEc5zLlO$@EOV*jKjarqwZjNpAwxTs4|@Ax|DMmB4GawIeOV_mpY~4jmdT%4nVdbRV|~2rL|gR<3=9nR{Z(#9 zi>FFmTlQ+zZY9N^%T{%5V>`_=@wD*evb}xoruTOS@Pqb>am?;Jr;%x)^Wb}6sn^;m zll7!iXKkCrHPd=WwzjB{RfNoY5zj1nky@*tf6Zej9Ep?Pu=|;H``Pj{+1YtF|HTHp zKIdP!W~JAxu2nY$Ehk=5_nmPiTX5}X;i;A7u6OhAKb6RmKeVOYeakx0#>-i5g}kXL z`Lm~fihf(THr2^=#kW=eCO>$w?p5#o!!yrl{?wfo-Dj@;;KK3nLmKVNCp-~}SlYGe zdC|(QzNRMekPv^ZHz#IXxqB}DPDhm9(K=@B(qNtbPTzoyfmXAYNj$lfo$Eheb=7?> z?fGRByXLI44YqD~-#=F-^UsrzHM@)#PO(WYe7;o5v$FV=A=mu2RLRu+>B@R0Cc4QB zmsc$guXwtu#J9L|R@afb*Sj`~m*$r3%2wSpud8bwXy|4(i-4n)yNKXc!L`XzbD@W7 zbVSccQcEwDH@#tPD7a@{(dQ|~pSs`J^FH7^Tk-yP|C414leg#oDgSrItDbjy?e4$d zUOxOI_H)YZPYs4Mi{_oI4Q`ue_i5iOZ`)WY<-qv+t`&=_qmKTaZk?KLRH1zR_`&3i zxmun1!7kUWMUHLO`Cz+GYPEddw-p8Z%iRy0c)UOM?Yj5V(^g%Le6`5MZ{>5nQ@#I+ zmcNTww!Wim+sc!yYvZ}}U2FcVE2?{v_4cp2Zu2W!-sfF)Qh8T4o#YMGTNk03);cNI zBzNT`ui9;{zBis$zn?qEM^$tDX>AK2rW}95bcH?EcE?fD0x~4gE z#?P0RXTLCc@YUGoPh@oQL9CZw6wI8 z=J$LL{g|t@Ff}Z2QiS2DOe?eKrH8c4tiS8@xdbn}wd3B!)mQzCeOKKoSK0k(vAE)r ztetgB!k7JLIPg4a*76?bsB`gMyWKurUA3xjqtBVDBSy!2*PWTOdb8BTn_@F>7uC95 zC@Y_QCwImB_ILxc&)QQzE>f~vb?@5x*o!HxYr}2NWob{dIJPN@=h#8dlC4({#^=Ip3{oul1fjHTmKdql&4uF=s=aRes0qwp|m$ zm-g*$*=5aaog43pr(TNO9OEXHTDx-6wa~clD=V+svYvjU z@|am=PyFXPxzE|X=YGa6|1#lzq4d_8bt_h`+i>RJ`<=5wL&L3R)n7C{A5uJHt&8vC zJ1ds!9{jer#_`+gj542}&zEdVyFbU|*Q*yZ&wuD|J$(Pdkta99r$3zXan-8a?Op3m ztk_-gJ1}(bdWo!rcRt~pAL<@r5YVK0Lz`(`+0Kvd=Dam(*AHi{DOK~H>HTxwy&reC zOmKU0Z&BK>;Ay(I`ux_GtO-_KU0k$d(Y&Io$CF+hdieTC%u}E2Kl^H?v~NAUC2MoM zadz9Bq|m+BxRX}CTbLor&hl*x3_J+r1&uOYR|dCkAmM;ud8rxaepZ&zk5&k zot1A3%D09JTz1`e=hI$^`&<3vu1~(5KS^6-or!6GR^HmCGLMztw5FMFKL06a(>m>q z)^!U%vQCNrXkGeF?P|c|FTPoE^4z<&e%=?hbIOWmZ&nH!p1XPS?A=w`-j|(!n$~FE zUYjW*aV%7{*y?y;ns3;x71y7toqPBF%fE%9miKQxbm#Bh*`IFq=-$*vcK4^+*zG!h zy#3&$r)%C^eQUV(!FGeTlT$-OuD)!&Rg#(=^DqC&?|V=D+m3ZV6b>z)x^nx>GhgnW zd0NkVOZVpa-~)ESX}SBp7M?7W{w;Tl>(!4NQzv-J-T83t#jR_Ww=LJXZ(Z}uwR~3B z)zG!3CU4d(pQIVp-xs!8?&^mkt(+B}SH(VtSrknd%v?_!Y;wi)1{`9?s{R`gPjP-#u-=zHE!SGk-1jy{qA8=HD}vS+S4fYuY~* z;~U~fu9od9Q1|b@uYEs$;!D>{HEydiWA|*n?9^K;v-)Mo59`PMGpkk|dK$NT;{DuZ z$)<5@AI|u-|F_)zj7blA{?&Z8G7bGF^760U<`dPGv+kTOivGUVZ|dJ0pJpxhtuvH5 zQ@L;Q34<$1AE!O4xcq&e;j)dd4|?AF?)9~JYRq%JSF3ifS}FPZyU31j4VO1bo%{5- zVnw=**{^aX`{@^6%IuZ68aMmRs(mf7(=&CJ{fb_C>D6(8o%0;09(mOsrB~!~EAwLL zY9-sijurcKlBKS=e2BgM!f(G_nf&G(F_(pl_T-#1oN4PkmgnjqN$Ude1RUk?}0N8e0}CbE!)Duk0+3$7?1<&Xx&TH*wFI zEXV;_G7%kdZxl(h97e~aLRr|7Iz0JFn-hJ19 zwK}xK;QQ)%=QnY0GcRuID(x#YUQ_e+@#pJjpGlng&mi7@^vWRnul$E*Yaa>zo=Hf2Rq$<60$v2+38=egb3EL?M>d}buF$bGISA1A48tZ)I zUEbD|imAS~r7U;DEamSTcJuVQ`c*7Vo-2L(W%k{Nk7hF-KcB9;x_h@0 zh2{H}mFm}f7rNw~ZQG`{I#$`tZIQ=ym7besp?M#7%l??~ruwmTkddd(&piF^n+4J0 zm9g;?qV)wlb3Bxi=lz=6dueUVoVD&n$L}gn4Yj%QH|6sg_Dy#Vv(Am$pY_CdmUh>+ zt(Vp+m0n6-^XcK?<0p;7Ge2DaFf}kHGvvszc``M>>N3{1-+oisHa{#y@aP?L<-K?H zGNl&fOL@l{Ee@^K>f9c@OIEn`gczTkVePGFYp$#|TD*VWcl$S=ch$OA+im-nZ}lMm z>b0-&UO{qK-@2}z89U>Tg|*$T>#HX}u##{4cB9}wgLuF4s?^__*|Pr`Qhte_+q~Ou zW|HamH%*VdGdJIQ6uD~EEBVthzW!fUtvk^%d)2B%N?NNFKd(GEZ*k<7>D!z=igLPE zKQObYyIin#&5AJX-`ke*9+m3oyc+X-wbYd_JJ0%y>gdbWE|@7VW!YXd_wQ`ZZKu|4 zixT`Bw>MCIMaYYvp*F&+Bf3`H{a!qGeZ9)=8EM-~9=iBT{&eT~{LALpo0q=!?5S^s z-fHbBEUla_x4~-F`Q=-R-pd-TSGiukwdUq3v%gb9?r!{{^k(($iI!O#6xS*KnA^`* zGfk&5INzSOUNQ4O z14rAm(&rH|tM^yx{byLK_O~ql>c_Z!QXhXB|Gcefz*}*7d42BD&t)lsi`=d)&U`ne zr&wyXWoV$v(%DCakEewG4XgN}!qDjc-To5&{Lk&``d!c0&QG&cb5A!r=63Ge z+PU+O3Ywfba^AOOp3LLp{T!DkFs}H#B>1>*^ok#5SH5pObu}h$o9*Q*FJi9xZ}d?# zci$qF_qeIoyS(k2a^B| zdspZ&z z1~gN5H)hpdK|x!!sIsQAy?3_??c2|P>C~y&de%IBO{;!$U$Z*B?DVGZe1039_Su|# zzSHd0mAk9&{m%MvbHzp@Tg7AAcX_r3Y+I~0OFZXG=ZkJpxtCWhXFuO-m3Ot*JfwKS zS>ub=x;JmBbsT%NIJWMM|FwGm`1Zn^Z~8hH8AfzmkKZl7=HI;acU@hk2JefE`>8td z)c3uwch6aUH8iv))c>GdP0CZNgR4b$l`fIkn^!z5?8HWukc&DKowuEM8tUrew!PlU zedor_N5gZ!?U%9p=eupiGqZ|yQTx{!J^p%G$^NsQy35T;^XvAkUs+|i>WN=hZ|BK< zzim%mO*8zv=3wIL*&(lEj@z1Cva8>eEII#S!Pgw0*LGf0iYnUD%P+raoAo|vSB%be zFZW`{aMyqrYMnLW>01MXOJ07R{_FEktBH|ocPCq2pL90h$V)l*v}NnM{8!InZG0R0 z(`)_hC+nN8^lAQ3JO9IGZ}8>RZ@cjecKD)I zO54xHuGzlDLZ{~4in&_zx%Sj;)R`gknzLu_UEyOj>c_vw?qjx2PdcN&?T&tg%F+cp z@1*th-JEn>%Go>I_^Q;2tXuPPjBHY6W84UMw0X51CoxYIoQ z){~oobxU1!`V5bjp6;$YV{_QQSnAj6b=8OOe!ClT>euwoSK@TOa{a1`d{X}Q#F4p4 z6RTEza(k||^Of`UNfC$AEpl8<{xk6HdSvpUYx(q3>6hK-S38{iy^ragGWQ`h^@x6c z$;*$W7Rqv6pEJK*)^~gAj->~`gh$tOJk6eZnl;({?u9c~LZ0{DQ-0gU=lI5IBX_`+j>$=W%sW@<9&Lhc5bGPZdy6+#ZzN&BO zOJ1*fiK#FDGiZFfcRRH#FJ|C`j;I!SXea3n-?`=B2^jdVwmmBBwdU7vWsDy2M8ue`PRh8RcX9{UY^~QDl zD~-J>y*26K<}H&I-rU=LcIxG$fpy2?UOd=!LpJQiqBXsrHm+8w)6IF~8g6>(>iyKL zFGZ_LY#!^cy&`k%WBpEBl^yrB({_Z~+Q{l`vT|Sl<6Mx)_1~hGBTM;NF8!(PG<|Qh z`|_oO^0CuAQ#}-2Z+{DYU$lPpgzs-|v$mc3ZC=b9YIta_o#}brI;(U0qAG3XYwfQ# zJfE>!*e2`xL!ZLS50~@LeihAjW`(IZ=jJD3JH@h7zqLvCs&viPemKkQ#L?RqcgM7g zubFkdtKjGIuQ&bDYZn|}WA^O5X=u!x6{}w)OU*03_nsv=Fy`rtjwO}rYaAZh&bCp# z7_Ap-EOHnBZFBq0Gp0^o6TAKI z5+B|F45|7Vrn6h>3{%dUO7^YWdVh`m$*$AaOZr!Ay!8ELz@)8f@{J!yO5OXo_Vd)W z*^_4`XNSMw7CE(c<~75-y*Kkj%A;-X&9XWrb;~o_M6|%;O0`Pw+faAYvmqfNu~S9) zC)=!Bs99Lu)BWI7rug^uT5s~tKY1FjH~rp;zZRwEBGYqqeJ{=G{bU>WzIoHbfZn{< zFS0(H3LliZ;_{+}uP|#?o@>aD&z=dUtFD~+;q`F>f0plFz1sP|=1Xnf^K|RB*quAe zp3GB!|7f1f?zb;*=j~(p<1lwcs6ERA{@}a&Zr`f3KQ_zkKSQKs`fsl~gBQPT{jO!V zEnj=e{w@!fMbsTFsk83KHwQ(K`>WQXIccKnuKwx| z`F6t~=Fo2*@6C5}7nMfO*qy&=YsZSYRzGH}I&y1SS=tgg{jEFI*!I1z7W6fiG3m3a z^qcka^F^b~bE}{Ha;){9r#<1`##3KzSH8VEDcJT!_b%nBU31R z^U|Mch3uFkdu}gS6J~w1uO_!>Yn6J_s^u=X7hbDaxoT%}mDih1$G#t)koomkx9-+6 zXD43pcMLeyS8`X>+|BTx#>%hyjTe5K7IPZO$t~G_>Pz`E={Z+6s@;v2zBpO!_1`c3 ze@}G2xG^t(TUJfq$;kZG>6PB`%rBqipGv;9wy3si>6LTet{;=!5 zdTPkm@Vln-HnZ*gzUJw>`24vS9i_ulT(dL9W~cgo`w$xH8uU!&&auf$mN76o5S()* zNr92@_RS&JwI3}z+2gKmYNno&w0HKurLNxB-2ZMgV~#tc|F&qyuIIO8SFA7k&yYQ> zOT_oPi(5dj`LFH&RMz?X`2MYO?t1(5nC+4%6++8?#p?S=I z2GymdY0OLBwe6kYare>MHP1s9HlElkI{UcFd%qQ{rAz|@U%5*47nUye&)@1(t}^A@ z&nHR0=1klf{Hx6L_NTNhZoFD=wr{vEq_$~yz+!ldbTqNsFfjY2JA1 zUbMF_BqVnFrLL~775nOM&uJ^p5&gp}yfoPAvhnGNxykXGPd`_EPu?u|w*AnftjE$K zNB)>xY*&|z?}&aU9CBvMo33RWSKLhRJ~Q>V+KE+9K8EC7vNx_MuF3){u-z(2|&A#z2G+0N*1D@@&+J9Am;YPw&~AOFS{O@toC%7`)113{-hHxMN=kP&Umgp?`f#V<=XGD z*Gu*0wUn*Q?AsXP=v=gF#o@fmIaj(~pPI71eC1Y-J+o_zit=9>6^hDqtXQ#PA6LES zo%OfUs$15XPdDH4WtDxzrFzRB3Lj%<9=O-P+3(EP{@asl7fs!KtM*r&fNT;F$3m}yA%u79i68|GDqm3Cd7T4s|S7T$A5X?K)< zg>6pB){sl9rFBXL*YJJG>+1NfJmZP$U771jdcUi`r&>q1o-g=Zb|&Y#|Gj0E$KMM- zw4dB~wy1lD^hDp9%z44re{R%vUQuuMqE3-tUwLNQl4p6p-#l&YdjB%i+VJJ0Dd!d+ zUK_A8FjiDWC)A%cBuVj|+}Ss$`$A)5^Fr;X>U)2Cn5UZ_k!|?H;M?O%SygYh1{=Nj z^`uE<%_Ox0FL%~_?OpX;x%{ir&ePkkRkJ^fjArqxzH`m6V_or_-O7PBp&@-=o=4?X zy*x6t-~R(o(ZgwHOJ-g%`o7#RB=kk+u5UN?)Jby+ny>0A zTki31-=>eZGFGjNa=svJj=C{-M)lAFL|4qq&@fa=7rT!SKV~FjjjZr^t667 zwZAK3&YEhuuIq+@Wg#K)tj?=m_03;an6qf!T*cf+$HPwdZu1Nb?VV?OSK{xkPqsGK zbFZh~wOS-_clC+CPn%ZFuCG%n`Fzb%?YH5qW6`r7e%$)^cDcr?I+3fw_LH|yv)-^i zV6vZe@F$t7$fV_quIypG{{Pd6kydqD5<$y-~TyJzsE6{qZ$n zH)Pf3X6E*7yXjvUaaD0w?CZddyXLW%cnWEi7SDSUt{i$MUrYPq$&BmtWWVmrdAb`JWSbuyQNHDDfAELQmG+AK ztf#+IljN5BE>c4*K zs-mSeZv#)KAFklKBGnaXz4O(}l`jPAg4I{GX$t>1_I>gVYw0(xV)c6sagVR%%H@BjEm|CC%hA!Ic$95H zjNzZWcKMC2!GRN=7BA&hDLEVNvtre?RffW=_MZB-amC#7qPJH$9lmH5R!Ql4ZF(kn z@btvTlU)OI)`ag2>x#I4&s|w+^@;xMZ$;L*7X!uXI=634lgPgMFl%GWjAdyio%1<9 zK7D%fb;N4Zt4X;LGdiDs=>Ioc^~T$q)^@k_(xS7$-c1SHZq4E@O%37dS-Ee@g@@(Gc7aHeRru1)@W_s3U z>#&@QzM?MIMO}`RT<%*FyLxBZGqyFh!N=CgPvX~6Puy2DtNhlRY1cj0EWaWnw5f69 zsyCBDE}xb4vVI-X#lHMq(L}MW3E4|$9iRGGt1tgk)yMEWzkE@Tw3>|laWC!*A3U_K zWR~+S&%^VA*1cPt7jv6uQ-yMLVbUeN*RO85*Ylp+z1?i(ktd~h7Wd6Ibzf6AS%3O( z#iE>NS8lI9rnRhA{cA_9l*Gc@f@|l?$mGUrD$L%yJ#mA3V)NA7+xPUBpW9ubJSkHp z>2Kij)ys~&wp$jIac)w|&eXEg-hH>zci67lT|W0t){~^#yb!nL*H+ZLPnpRZ7dFPQ=bwBjE8eMHGWC~vd5vDRmc}Hj9rKQcl;rif?TqP~$JNn&vCPK)m;5or%#=|?QwLS&JX*Ts(E?u_FJy+Yfjspu4>{n+2_fx?KwH|tAg*o zQNOBsb>Asn*|pVIFW*{QbmM8(`iOt5!MfUl^*;&?gI|Sc&d;;k_9y9Mx_|fO)90O= zZqM|2wmigZX)@~k)Ose90+W%r}&gpI1^3JK_K zeK!Autl{pMsDEBHIHtVPKsjDB}Jx;rwxBK$d zkSwiLZ#wE@o`O$Vs9Lpt$t$Uo6L+2MS!&}S<{S64zvSZ+m(Tkzb^h`5OY1T1*Gm5N zwWRFDs=qImA4@&=;#$x1KULYKY_ne0&Z}NqTKs)hNN9@4heeC*mM!w#*2R`Ld)3#_ z5EpmLvstgFE&OKjqCRDR+PdYh{M<9PzDipX@v(C*?|r50*!-nCeXcak)m%9>uqP|z zw7AyJSmWs_*|%18Osn3=zd5RV^YNBhB0Ga!{<@w^YI{97RNJhEFYG-pmwvwrZ`Gn- zPfFH(2yuD1Ut`s@rE_PL-(KXb>pEZlq>j1uoq$C;>lgMtWwM{VXx)qFZo8M=R?=Ga zrmLttKeX!E)#9@kvVC`zm+f$=%XxUw*Sg=gBwzZtN@v&a)NNcQs@YcUOdB2EuZ_-c6s@m&u|%!d z{#eJSzp2KJy$1JR{Z-T#y}WhV`Ukc1tfu|_c5l)&`;V(LZ~sm0)|StydCi_KwkT(} z_J0Pmt@gd=rq{o?)3@>OT6>9-yHl5ETOGXopP}sj?}x1^_DAk5id!oh@{QX#EqT>T z`EZ*lFIHO}yO&yIp0}don&qjL*HgZz{XWAIJN0J$ls_R6YvHvYv%V3t zf9U_>d=qo-y~oEH?N{n97jyrxX?lCdHrVIPk!%@t&*$=H+rK${W5~E>xX{9FRhFu) z+NzY9Q)hK6ELplP$?kMc-!eA8V`jWpx9UBeD0qJM%E)2{Ps(Gk0^y_}_c)lm4H=|g*o#CEY7$>h0n=hQp4JS=;)OGe-H zfQFuk|J2Igw{DlLTe7nF&cve!2&9xr8ghn~;Y5}SS2UH$c{H>)>oTjHvn-n%||);C+hv&G>h zMfy#PCeJLbx^?qK^Rdg;XVe}Amb4jy}T$3Ity$$63ZET#U=D@h_6iMR}1Qkn^-sVr9bo!R$+`Si9 zE3M0A_0ihD?drniS?hnit*U1(^jY&~fv@z6t*_Qe&U5Da!}dO}bk;JrbMrwZTz)4Jur9Op3J|WCYd~&w5+M( z#{6>;cRK&7J^m&hqq(kja+J2JmZ4Jayo|Z0b}zTq){^+o@c7*I{IBnlI#>K>n7n#T zNy#1ilqy%7kM7ZJchz@CDTcqE?ML zuDYc7;^Zf#Tf$D5$E_=`yLqScKf~e1XR6}<+md@vmkUL$&p-UJ>R8yL8^KTBYb#Ea z4RXPmh;H*=BF z+^Uyr&Og_jz2RPK{@$%uHkqDUnRYmPX_eBCyko|xzn_@DIJo}giFI3U|5);fJ!XBd z*O_{b^?`BGoP6J8A2&}uaWh*wXS1@+ z)3}hj+i!N~b*z+p7TbPDTpQIB?|A5)M2xBT?1?Q8CBjJa5(HnXiLZT{r!Wz&{f)#_Y{^}HN)?A^v-tBuoV z2WkCTl{r!7{a*jq+Uo^sxL<{HOqpPB{O5etwh*5!U$)=2x6WKOJvGELseZ1%)*`J> z#kQ+DR$bqnu3R={jqIvl`@0^?7~K058kL zr>BH|uGK2|cfs0vT2j&J8@n(1ifeSvSl{Avrf6B!+oDUQk8LcL7x7#cbyMp$Idj$L z++?}fnk~;xC7E1bTY4_@<1Ss6zE8hub*^aNiBvr_H6^5`e@ROJiiPQmAAA+65z3Uj z{AHr$$*b?5O*-}bSntm*R%e%7IQ0I_j(7gm6YV3FCq71Kga$Wet%~^{-cT}al=MViY+_gBbV`pBP)v-I-@)p;GeD1HP=-2tru=0<;;CJ`U zQY9x#U&qETj=udi>f5s9rMv7yVkf?ATk>({k)`upwmfRxD*C-+w#lna-viBTr(W_7 zRDa_rUA6ASs?`?-&xLKd*LS+_fUwSnJM9K-o57z`a9X5%dBeai`6`u*LN<@ zp1fGFyl9d3)Ki_?R6b-M^W|r@T~k)`>AS0LoIWd4)cZ>=vrpzPUYV>^8l=8dY2w8b zPds0%@-&^-~bl%aP{&o3s-^uIe{MZ@$+;Y;6p0|148*P7`DVV=kuC}huu3q$_ z)uCSud;;NhS6}rvePCRn_jOb2{Kqkxv;U@P&UU@^)V%ZnTfzM~lkVOB&u}7m{a1-y z1+^>Y|5#OjT0XMY@lBBZlk)U`Z{y!A{QcmPeCxLh1s~;4uA1b(No(qVhE25+^R51H zx_(%9do4r%@u^$=e`{t>|JA>!dF9FdFV_CC5AXTyIk(!i^T+W^OdHCM+)iEhKw5j6 zxt3Yqs{1CLpJr{HXq>(U`TC*La8_3f_q>2O?Exr;Wjr*t-5m4 zUdeFYrqilLj=NTw#@;QqTpK$*HEfaI=~vc~)@7F2zVcjm7xR~1s>t|Qo3h=#|BBy# z2Gc3qGwxjv)V_XDT7N!Q$!nE0uV#P!I`3lA#)=%Z{|ubx)cbiWO21xwx$~IP-yWO0 zhd=k#vt)OCP&|5Vxw6>l!)MQ3<>~&r?{C$T1yB5=7f=1T|A&&+Uze2~-vmFF&RH#6 zexjt9V|n@O#aUUavu6IDbz{ENe}=xc2h3;Qed{;c`F-8_(;mNEETrcyI3E7v%a4MT zX^KCMZsy)SGuiZ!-=}Y@D!<(LXK_l^|E|&5{|qk|YCgO_ng8(9t#7Am?0>bcT;H`i z?-FY+JhMM4^rVvhyW9CIHt#s5n{z0~Br7NwW_ySw_Gs!+)9 z*9INrW4FY~?ooD+4|mI)I;lIS-hZg-IuhS_`{m60Vb^jWt?9Lqnm64t>Pqb7+N%Pu z_vn4=c-b#DHRxjU^~l`mJMM1I74LgBZP!Ax&}W?;-&Iz0bnjQ58hv@DaLK(F2Og=N zujo=wUN=W%j+xTx=%35d=I!Iz^0w^q(*qV?&rDtOWZ6Dd(_3=$*WNpDWMbXdO;gUt z<$bM~Cha*XKuh(o$gYd`G{di|1aFPnf4KIn&7TFi_TFV{Uj7TXan;^BDob~grSP&Z zmzH$yzrNM$@BF~oRx8u~1!S)M)jxga$dBbpG@?@>g}^-YtJTf^PpXJpR^f)s)aHuR7HG({t7@>|C>=cyj*p zU32Y=ubgDxyU{S_soU0-yFhE_%HM`Onzg#KR^eiW%Cz)@tqEeQrFUL0nYGM9YVz6N zcUBx*|0j~^qvou7r7c}gzS&P&_Mp?5e|@F7du@;V`u8q|-;%CM`Z-E;?^S#9=W)cJ zE&bhUm8NNyS029o+NJ!|%K!PAJ$sa2x;d{k+Z%h0!}4~|L))g+;lZi+lc4dakJXEd#;|cT1!ep&fGpKGv&&c zvtfVMpi;UVXL?f6@o_I968x5O>;!ll-Rg8$~p`%3BmG^;x3 z-cb;^`kVFE;Kaq3ea=0Mdam!Xe8HqyniIocJ?mO{|HwkCtt+<9+Plh9EVSVM!=0kX zs(aRkYfmzr=59Yx{L0;L{y|D|dcr>@&2RrV%a)~jt*VmwroZHp-M!c5&;8DvIaRy;&)xW(6@PDEJ1qX6VMS$H>CEys z&(^s3-@Mh)-%`*YS8u*B!65d$&i1yCU8VDTKF;^^pMQ97S@ny(>_T%_?b2<#tMtQn zWnDk^BwlRimOtx$P4(-F+;{MPQ()QY2YD-V@}_M%TAHe~d(pO# zMRUWazkYY?Kf{An@w2n?~`De%98HCypy^JyRSS7`0->id9|J2~Q{GTs~*7E_Bs(a(GQ-c3bW8in)i@rv3Bx zbY*?S9m5w|yz<4;snIID?nR$gPxA{~JTdUpyOa~P1(%;?>TOMvSW>!myIQjOuG`*O zujTqzuJTZ?@l@&a-Cn)Zyy#bG$gd@KDZd@pyxUlKd(D)0zT3{`eKNK6txZ{<|HYE? z&a9`wv4O@9`i@@~6g1>|x>oP$p_q9)XUuMl;@{iZ+4rve-L*3*YkS?=J~Q)+yIv*go-I%I=hIug z@mKYC*7g4xruBb!61R#IWX}Ha>xjg+tsghtw6a|1doeKc)i163Q`QTwl+2ya@%Yu5 z{f1dn>&suH`u}#hraskPqE_^6*WP*O!k>rKs;-W0+7obm@l4*wZ9LOfxtYz2TGQ>P zHZk%-lZ*1IIGXg_~$#qCYry2qu@ZSd;Q_{#13E@%Ja zPiL-{1fMt(GHH^Ft82va{#oW*Ma^CPR^)DHvk8B^C%@oq=c_WkNr!VzzO=r6$>&Mr z+p9c9$8Ak!*WC%)_$EGH@8!jSj$=3OUOzl#pV#5Lw-@(Ycrh^hZXkY3&dlS*e`fvS zNqe!yf?XhLZr8)o;?GwjU%%AM`)cxG)w_*>p?f7>0R@~H5bMd{{8y99M zD0Sq1%Cq7-FAp%?oEu88D@~#Tj@i9^Vk;~TK794L?dpkBQ8&$2Z@s$H+{^03#p>{bGb@T@vR+50?2V4U7aV%&#F|N_ zw^RMsuIgH`HumC)RiN4L9RDo-v{G}48K*z>1ZrlOYF+d_>9^T>_p*I1cdu^wZ2e7c zZs4RhyYo*y3462V=$w~YCG!Kc4Rww+?dCtV_CLd$Zr^A6O;=1s!_&=YpPkyhX_cM1 zWuM=Qr_QSmC%=tf?zO|;vtnD}&7QpYvb?CyRUMB--7S8+Je9m&uls8Ax1X=pHl4T? zea^Q1{;TA?lMye{mQHj1x_3>z()#afvjoG1Wmi}2Kk{_aqO-AOi;uk#%~&(dWxuSbsT+iFR{czS*ku&p5s^zY4tdY5TSLAWN<=)wHjhDh>bHA*~ z@2|9u+P_n{_NvdumctjVs||UzHm|uZ>|Q>5YN+sGkLPxCQcnra7rM3OjIdDcrb%wQ zK9(gNIkvUD#Bja4ZSb{yyuW_^;Y-vY+JITDdb{T|eeA zx=mkb?8FtFyH@3_evt7!>3YIEXSGEav+D(??drrLrPt^C z3a2y0&YUUF_qTIit)xBxq{la&erTW5)`{v!9|IB2{MJ3Y-o8H@(9Qmpo zdRzU2liam4$9^7~`}=d)`h=a+=3MBrY{l0_nmps$}2u+KkhXvmM)*$TU0ew>dBq{*Q=lJ3iAvMHrXmFY#FPvX>Z*3^=m_` zR!w{xFA`PhaxVSpH+Qw$|N2TM)*X9S(sO%@G}Ez{cYkj3ZgUL0Ds`)>+*$5F!?}`< zyOUqL6f9ObznSaN%*|yx|1*e$E?*m?d^PTK^G2zoA;%Bnxic;Ysn)s<4?l>9Kav%iREL;VROOtrSH3%rd1u^ z7$_-{(YJbcsBPey-j2Dk%6B(MU2*-Qq%?2qO}&%V(`KztQqwwer*}rjV-c6nj~|Ep zEc#G3x9`o}KgWgLa{HF$Cam%Ml(ov__NL0Xt|B`F=CqF!H$_{_7C$TwtbL!5dko|K^el1&lcG}ytyJ22-r7u;k^o86M zJ{K{)BwxiZ6UX%vo?t?>kPHI8d_|Y9iDGJapEGazZrhvou7ET zRgZs;(b_s~&u^A>x%cJQROL&jXXU&|@xRp;R_yj|y=!*A?%B;%wx7$M8h_KC?`Ldi zKVN+F)3|f%(rX*Ghwd^t61{5I+pnuETrPiDo&M(MkqV!ElR5Oaa5vA=Gcqw+c2zo| zU1LjeSVXqm?DFEb&z+uEEGb%~9Q(r6%{ujoi|s$g9p{h#`2Mi%;EHK%`zCoEDV2S6 zTPfFc)>FQ-E04Y9DTNy@_4+b>*ex9=n`XGnb{!THIq-wEmjb znYf>kIXf=IPVwR^4B4zD>^p*IB{*c{=ANx2ERjh%$cu0^GBI@+TQRd=9$xOP5i_ApMmqe z+@85t0v74?O$`lQF=xe!eH^PFzB0aL!}>?$dew?+$)3xP$4&gbI_qj^=(l+9J?tNI zGat`yIinwc*9^50>l-kvr@su<0Jx zZkxh6!4{oYB25o%TJ<$NKhpZ>)}_uDBbio}xGPItw-jDv``-6@?zQ`J0pWt8KJKbX zZ<}WCdZ4eBe=an@{9n1ye}=$bwijg$8NJ6l;sihQB%PJ=t(?d4>P6CvZj%i@CnuTQ z4HP`@rY#s6C>S^Ui@~-34Egg#c7|QNt2pg$c<$5>R}TkW?efZ$+HKjNy)A5~_@YHW zWb`xNUcHyO-cMM5&Ayr6w7WN3+TIon$-P{ZmVDfE*Riz2r*EbG+V!QHc)T8wwm)#?o7foI9&DJa=_(gKG ziNDMvao=|q>w+Clw=R2hcFsH@hcAC4lgr=l-Zs-}TlV+N+~C|l*Ylt443+8q>UXZJ>6+G+#6sbvg@^ke_1|Ap z@wrORb?)sW(LJ_5FYS1E{A0b{YV!m6IcHV-r4}C9+E(>^U*}3*y?|?03qKv}e70?4 zuWR+Z*}3;N%B;U@d3%?Yd)yl1&c7B{tTbNf%)F;sn6h%0nf4lO<+|mDv1hLSnkwi& ze}duOo_x*P1yPvyr z_P&=B794MV<0sa&X!X^zaWRX(|GAdM%L^3K_l zx9r>|&EK+`HQ#epvaj+Xn_rdA*_LMve$?39Sniu+*g_O{uQE3eFBHTbiwD!%!S zZn%`ysTJS;GbC?XHuucL`C*rKsr+N}wOsLSm6pUgfH6>DAhrU6)rKb(nwhwDr8%TQ~cyows=Ul@||lt?l=&DD1vvmnc!QuSayB z^vS3Hq$>WF{ zqVPfC>C29v%PZ^(NvK@<=y>?QQ=7xiI-C3M`LU!}_VV|w{!5s-b_bR`ExFwH)@i9n zn1){I+1-bB=S*4}k~{OA|3Bp?{`amb*iL`6tSRus>nBvk(N>obuqlW_un?d^Tok$Cms)d#Bco1In(so%KoP-R`x%bQ1$c4 z=W_qG(r4cPR4-9J-8MC>u=$wY^o*lxKP`Gvo}s+1CN|br`0k!fZ(n!K-E{JIzw=wa zM9I3)vbQp7$sRwhKK}UJUS0j>8lK0++F`FB3m&Tz`Ogq2Z+7jU-*K*czOplaY^_Z- zFRZyTbIED#(BO0Lmb-15Xdbs`KU<&p+XsD9|LwhYu=%NiF zc3mQQuXRIo-@m*yKkBqh%If|IjgQ`}yzB1z%c}0X?JujVBe?8Lo0_TAF{P@BD>~-y z_|88&V^!uVt$y|`cjoS#TNAIA(t2>(#-oSbrDyrBG~T)K!lUg!ZWm7s&wF)0sM|MG z{rX9s^=0?wPT3HHeG!7emAJUO(nvvqC-9M`x1xHjgJ+mi<}pt}A_Yb^WsNmw|lC zy1Tt85A#{JJ(?;QvAL$~Ja^`bq}@lAvtB$%$~iI9CNFEX)Lh{`*;fSx1p@^Irheu> zm3C!!?=FuwQPnNCR>|F+Z5ngcwBzWP_1dv=uV3A*yU#p-wdN6*ms0*`RV8jmW$U(G zsrA~B$tGHG;#2ot)~=&jooTDqu9>RTCH6OKpVsP4N@}lGt?1}l)lqY`@cHU*ymgO- z13v3SKg>=zk@qPyaNjb$SDsNTI@X81TXm&)Vob;0vXHxi$nS&gUby&)!#iWvaDYy@@v8aWsAI}1=fqVe_I`Ty+-SNu#)}=V!5$`$YcKzhJ{&L!WgNv(9e%x)l_D#*C zcr9(QtZtWTx30CFuhw_QUY@#Tl76VmeRs>v)**NLn~U{#uHCu)Qt4m&l*ZfFkJj9L zn!365P0;$?t53d6*!TRZrj+HDGL@NuTXH6fmxWyMl&ajbdx^)o7k$1j`Bq1+H0;$} zy6u9atS&Eqp|?M`eVE3LdtqDcmbke5V^>@{!Nd z@7A;{ldY92W>0RqXQF!P^iuDAx?7*^^SW(xYQ>E;lFG^VJfe2jEzOp?J28C8MpLQI zGfyMzJ-(WCN0@xNJ>kM}U7OG|ai8X;+=}vydYUp}uPtBlt!L}s*+d;(7MOKR&~&S| z*4uKa%E;L4ok3nNvT{o|>f4AK+OF!$zVXHNuBdqKuVqhfbO%=5oA{}wHtosn_5EkR zFmau~X?~p7UG|US?IP*Vnk$X}JyrLtEq_Gx+iyymkUF(EZsl6NwnYms9CSMwsXeVybj7Nbdoqr= z+&(vT^}Z7;wnuL_y($uXE@Wm$Z)(~>i4U1azAo?CC$ZtJ_h#1*Q9jEWwN#cy3b`(t zyRM}8z&aPdymw(9XTSOWEWc@fW6i9&w^iQcZ=EguaI@^;2m3ExInB%a>fO}7lq;o1 z2exueG?ZFftkga6d}!>|(3j6v+q`~p_|B@8%anVHe`=b#xUEayx_X#UKAR-I(+8FyzWy+LTb8ZD{U1#pP%w3?{Tx%TZRYsbY2@T z+8h|aXwTK#s@^gFZS%s8pLk{|@qKS#Wr|C@W%<+lmp8`!POMfeIjy_#b-Lhpt2@&+ zYqkr`S|y#l>ejR$t6sj8<_VQnu0C%%abw_|KYLE@TD0iX+~!Y7w@=?(vij4e-Ch3~ zJ~`xt=AAFOy?EZnHETLo=X*Yx^*g-UH+Sz$Df!$JDaV(e(!VL2z4lud%lro)inn%s zKW#EwYiqCXF4I-dwI^Dsy~``PWgTDbu<4EeW1-87w_J?~>G|OjdrUG~S7ySG@4X?@ z_tjKaoVZ@}rfc`Y%{$*sPqtd_?Cm=xd7Dk&tfqxqOD@K0D6LMlIeULvm`ZO*_T|!> zC$E}o?iaZ~MgH(|UgOwYv)^|Q+n#vqS8KfX#$V;R%xPJlKI!_*+3;!6k2QI9C%QLj zebH=PHFJ4dcXaUMzZIg#Wz*KmTu{qTSQ{rqXG%)^VD< zT{*Ds^Ta)8!*+J>+88>o=(A$s>+HmB7f%NU>J$VYI65gZrO0&RR^ig3RbO0OUhkUm z@Td7M*Xdc)#djS%;+os~*SFTvIzHjZD<#&bWS(UU;o+&6?DJZY?ns-O_@^8>pLk^@6(~LIlbE)PoCv_v0}w!k8fLR`BI9u2B(Ye zZCSP^?Ai7Hr&qo5GTpB1su!=HVm&=8Y|o|4a;}IemaW&Ko-WRPwr=9p%+l)6z@SNN zJ6B9tc6-gIb$3=geVQF8w`=qAQ1erF?Kb*O4i3EdWYX;iwb$lNeD$kB>zdh`Grgy; zM)W^(3H|8eEM2Wq@$bR?&9mLtUfEi{dg5KT-npnsWukqm>ywFV z%T9G~JJo7X+>We1_e@=T&lBH0SHH?^2+N%DoPj|D|M0Bfe!)8mneE~gw{@+iHYe|F zRnaX@D6Q49S~Pj~*J+Zsw`^GTSXyY@m=OtPb2oTFR$9Ws_WRX=ik@G zrLEWT>MgR2N?bPaf#A!$S&=zB)hf}c#>o@k~k%<^!-z1cWv!B_I`6f--&{Wp}`%i54Y6Bb-(@3uuU{^!?sU6 zCND#8+*NMX;UsFYjccXbQGtW;iKT&*0t zz3WHSxpRCgKRG|Y-}8?*+uF=x)7k?wZneMc%lNt8g16-C=LFYs+t8J9^Yk0fxf|E5 z>wO!0wMyOJ?Dv-D#%lWvc^>f`t#ui?m7>Ozo_F87bF^fd_7acPJa2EW*Lt_6O8vFr zdww$^qKHNIG^@-Tchb4N;S7hb&C+UZFxxM*jYh}64)%Wts zlg}%7yLKOySw8>x`tz@T{l1Z&zgW7Z@BHJef4VFF$((<*$e#aLKmUi9mx7iv?#T%$ zOZ@0>7aGbN8#nQl_M$~+GhTi#f0i{RE<#`M_%8FacO%ViYi$g@S3FVB{Mq%AWqWUH zzRp;sux9a^&dmpHgj6Q_OHY)!zV+nAvmqfNAum=eKNlLS63*qBFi+!oQ<+YYyK>-} ziK}L7hl(#+wA^>f*1Mf^7x6xnH``wDb*1>O_Jp6RLC2SyuX-tc=jQXGo#!_DYfmr9 zzO!P>yP|ckp7z?OO7EQX%(~>5+>?)eafO$kekt5{yLR?DzOS(hPp|wZTKvbO|8U4Z zjZdp8zpSeA=k2qIvNb=R`!nVHt7_h9+;6=r({>zp7S4L=AH3A<^QyY9mJ3Sw=Nw>Q znqBz*M(o173vRWlB~Egllq^~6lhe29b>B62zu%MGuB2oK%4|F-edn5~RG-_{KPx)c zg=ClQRM1PqL(x z^|`0X!lgH3_np0UvO#3k%9+<37y@j>qeFGS-3)Y%_4SW*jTBxuZ(hYEkLA55Ry?y@ zy~}b{*NPQ;MMXY0XzUk}ZN1^QGQ_j!a!uQMpLgqv_Fl<2Q%S z6>A$;*$DD=+Ugej9)AgLlsAYcg4V)l>cM&0Ftb8UEetaWpiji58uMKS)Wc_2?<-h%j3#j(a`nTbL9eR&BX%ynE%M^~+LyZJo>SPyM)8be-=-E3GQdJKb9%_AGlE`f$sP)pPtM z=2{lbm?tmdmpM6cGgs0aw>_3V1vCCEfAQ1fN^I=9M{IBNFTb_e97duH}#>%r-YeEAB1;sD!T7F4CbwBIG51a?(B$pTck^O!vLTulE1{=QTsjjC= z->W|@J9*}s))L>cle?ADUhceK(%pPl?E?3g?=j*&1w3XigRb^Poz}DWbhN&)Pv?1O zZ@K>G^4qUelH)DT6%Gg-k~teqt#)Nxy`&vAH?A*i**iC-djd(Pjjez1 zxLT|+c^OjWKjo)p-+`M)Z_XBf9F_j-!O!^973+?CJjHo!9%zO{_r{doWs}4gUtV@T ze5++yyu4Rc_uHRFFl%}>a(~&0$vcv_ zhm==q)g61bCOw8PW83m)-4mb8a$h$6PvfQX^E+bhJG&q)%gUmf^&$!YSE-R!T~0CptWz-(7L+*=>_YC0&_MMUEWFzTR`@ z)wNSaF>=wqvA5K+R?oR=XuRCxl5+DY2FoLhmwseF{7(BQ-=w=6)||R6d+ua;XT-Nv zO5Q$y_ncf*wCI!9(O1{in|@sk6=$e+wbt3H+#oaWVZ80K=hI#;E}u1BYg^#HjF(EU zR^56r^USOC?FZv_A9;H*@WrY%`4=btsg_n2UFT99Gh0h5udD5vv}D+AMAQM zORx4v&BUNIvsEuHUX01O)BPec>gsRtmCxoYZNGH>O{ zf~7)NQg&H)8f`28J}LB;Qthlo;qQ0te7~f`>ubE%?%ES^`#+`a@L#ho<>I5CzB;*O zuUR5xgN}Xqsm8@mm*N&&k?0Rb~D3pDRxs`KSHY zV`b3tFBHw&8 zU);9upg8RCD#i@+V#_-xT*|^R8LDx;E~;a%Gcxcg)ofUzaZg zts|Y2&nLdS^n1^mD6!>-GjH6C-5h&XD8y*q!br7yd|}FWI`(fqvuYmepSMfvrj>OS zZuieRn7c)Hx^KMhW}7oFrJkKFUzKILF^N8QOI8W`_ft>AJv)KfjFRi_-by9KZj}Y&$CnY7{rsb`;_w(-ax_|q! zmHb&lTwhAfpAq}=T^Wx(|91bHD>?r*e|9s>ZtZxwVrA^aOMAo5rWh(u{N(Z8wAVGf z#MMlDb9Q5Oe)@MFvpYssUEceAqiwd=Ec-3OE&Tqv=iRfW&f7y{C!b9&zkN2jN@>-? zcG<33%1ND%PENUA&R;htcIC}got?|7d@|IB>Hyj5NBI?v zRXtbxWtR3_Qv7u6N)5?Yhi4x0hYB z+M6^lP*70n>qEigFCQGecj=z^%>(|@YxYDX7nhvxke=#WVl3!{~zcK>zT z`z^FE=bp(9;RBnwcCFMhs>%|JESlzZCFMd~rqqOM%D3jPS~qdEmimdQ-7igxxvfp# z9`Cl}dv;aIzv+mezU&<1pu)~WdezHKJ;f_0MJ?&;@)SP1d`;S=%U=6~)l>4~SBi3G zNSTD1TorY1&PtBs$@()_&theXbo<`?%Wqy~W(a#FtvnOyZ}ry3z#|c zmoNRQRd|1L=Mr&0jU7j>&QslVqx#p1SF1E%EG;TF{@h!AEo-{l>Z{f(L^m#~D7u>a z;$^IL&5q)|1&y~jr`|Q(x^`P~)J=!&@^3=I+{0d~CS4C&wfwc#m18I8T>0X6BwlW} z^G)4DNgomqgt50@4O*-FtIGb|_iH^e|G&{JguiWHc zZk1Bn+L<4!W7oXio;GiL{kz`!zd=)nZ4cjWIdT!{k>G98qAIT*TCkJKf1^n50<>gsV-BWD0BhB?=m%BvD94Y^IR5bWX zWc%SqNi%jPRet#!x^9)}rRBkY=GCcwm3Of?diF=mdA*|Ws5gS)o7!eo&bNQI>X+tC znT^4=_e3rk@2S_jvwP#ZEc3a4?kaz3+Vbh~k^4DuQ!>};CSB6~cQSpGqxP-!eG{*S zYc1PX7w=`d&NV*DeWU6>|L43`-Ro=;p6?0Gl3kS@D(5enbZf2-U*mSIRVQz&Y`VPl zZXLf!Zb`=KUHTOrU3>a$-=8wRaOSdS#l%Z?>K|^$T-PW_UAk)SvdkrH>#BX#0e8Dr_T=-L&iHd<%iR0&uf&or|Frs}9sT9%G|3Isb90Lv z@9z7l`)i{f|Mcm3zt2uobT7R>RmtP~$D}Fw8<)%O`XG3_a)p#A>!U@x4i`3UyYsGW zQH`nQ%n!RPpSbu=ayzt1>Fq_a@I@61EwBFzJvZ5X*~(Dw!UFNphpUwv*aR=?>OQk#W%s21T-pX`6Fnz(^<00FY`+B^HEMBp? zDDPEX?#`7DTUSfjud<%IqAxW2+i{=xMORNAInUWA_4QL&S=x#lIRy+YISu%SDxk6o zIhz}I`7H0Us&y%IymM*WThF?Acc!g~4f%B|%fHF3XWdJklG9R#v23UM%B|kbdFNEg zuxr(_%FXwV+}$g3^yKw4ll}$<-2|vp@^zJZfRXg}-yQn>dgdE^<+fk1F_ydJrE=QHD@^U8d*!OE zZTC)wmxfN$O07BL;N(%wP?YXbI&fgte6-SbnK<|jypFVB*#2gdbfV+i@xfpqdKwW zPi0@4l=^w)Xa}mcnmw)AaPipFm)FadI#0BE|1x;(!JFM;nOiToM_i5o9w{hNGyWu3Xfi7=~M9E-B!XWhCOwSH0cc9-{$UBVANy<2{F z{+6rxo4e`)&AQ{%J>ErpTNrsYc6-$;smw<%FJ`aWRG0f})tlb9&d0mnc+IfSW#_Xz zd{erVb=s`g(`y}G`-d}IG+r3(`J1=O*qFrgTb{yHZ!Qze^x1gIg zcgW>fVPRpJM~PiG{IVTaNIVg@F6k=~&bw~p_UW|0Qb|dW`M0>MFV@DhI?hfEk!tMo z&)IS8xue;+?8oIgTRy3WotEC8`ZjLGlMf;4@2>S~UfQdDZk6eG=TB?wes-j8?WtRs zysdkw(#iA{Q{VJi?+H2aWa>)g>(k1Vt9G7LyBo8%<)zl69YL-(LdR`{H>&h`-04f{ z4Y@1RHCI&B>Rmg3|H11myVn{Yp5y=ZG5?-w=G!*%*_%4=2TPymoxR0h&+xqGbKk(1 z$81dJTDuB7NB&uFCY>*9`p=Mf$}oDbo8_E`TRV%6zx!Yt@yqj~)y7x%*0s5OR!MK3wW_OY zF7Mtq``*fI{MPqEXZnd1;j(8x&b)MUdh+_Bo!_eNPESpqYV$+YZS~`-ysp_>!)LCu znzLPAVs=g4m*T(oHLC-@RhMtJY}=NU&RZP0sH${P&Evys3ZJi=7QoTt)`vgt6cz1z9oBI#Qzhipsf@}SFXK8d&+UD&-dTCeV!!N< z?DyVB%D!8#b+X4G|hMopTrFoy{sO>HE8U?>)Wh>8n=FU+ZxtJ8a6sujRXsoa>u5 zQ&8%}yR+r$ z2XC$19cDT`#n0U?Ubt?yN#zgaHIcKo7CwEneQ(d)IpS-1H(YtGw&Aws>InAQK&RsZ$yKSNLL(*2H`|1*5dw7)L))@hfw zi;vgi*RIJArMC(jZVuWNv9UILQOvI^H>Fm}l!s3JcvqqK^{;cqvt_*}e+w$n_2mbZ zSW|ty=4b~hwU$4t3AlLT$;-=WYn=nD-oA9&_3cDi&x`#MbBt~n*|9;qRVq(=?y=&BcE)Uznm7IP#FwmESERJoTDbO?oF0VYM87O^GITIuxX(~+ApJtgH?bz+DBW^i-KGUj^N5ZQevY>2q5=Q#sTu zY?Z#NtH0w@R+e<U?;86;rxu zw@2~%C;5CjOLNwB#dQ77+h%w+TzUGJm)5g)Ro!I1SpH(gs(DjfHErhPPcIF>xT`)l zzM!%^v{rigx2xYdSfppKsxm3R`qlql?A3U;mw&g`9(;N?^h@6S+u?T<1k6Len2*Yh zh6|BtLU_?f-SU$;QSuY6CYiijvCrLS?|G&5)zaaM?@I@Y&vM&dnpN^@-c;Xdlk+-y zOTzT78!ubQ+>v+hG+)b;&@hdHn?>Ajm7_KtWj(00to8Ku-8HL@h7_rt-W>6E`^`}C z5}#LZdEeGwJ!hv|a?4YA?TmH0v#y)wnY|9ldmo?MdS;rNf56k{#WhEKXWmumdYbj+ zv)Aw7VAWKY$-c@@r-f_Z`@S>g`Ofgt(9l<_R=>3Mlg$l$T6J=Iitzf{pS?<(ZvU#> z@b1c_(yztZQ&;XPy=nF#NLsqhdTh)+tP+m&RABRAK&yy)nd$I;?{bm=FrKSfvDFX?@aj14kcy#CuN zi>dO)(=T67+iGL}Eaa~Ev1skx?|HAB%{j4&FWuKQE&fc|@%%m2hLy`F?%S6so|p2) zJol=NWzJ&$Jx5%FPtCL6{_NM|+xnTxns4r&He2pJ{Xavy|Dn1+f6PkzHD?rGbh)9F zEpcsQk4tvcm77wX4?5akFt4vM05yL8oEA>+JX0O@%~o_>_T-Wx{Vpw;y54l|MUpxe zOK&Z6e>}bOs!nOp{`!VfyYoHX&6QfUYEA5~QvbUrW$J>vFQ$b_b>|)unKy0eo^|<6 zi+(Ix^h;EHm1etO`=YNqx5sP#*>hJt<#%Aun}5k}$<6Z&4<%KG`g~qiXFuho9p{6; zFV}5Pw~>6kc71rs*}H!q-IPCA#4UX1$+FYB`}CGiTpMyPt+Yh{WA?wG%GE+2zOK5? zb?W4YKl9?Uziu+Am5tth>!a6PA(zmP6ZZOXFX=(qSXVM{M zyF35i*V!BYtjHGF+yr=ek7O!Mk8S!jySJ&E- z{Cu^y)iGVyO>0C&-qyj&zQfW#n9inM$TQzR@yfcCh;3^xgkE=dIXh8d_a#%+Nhx=$ zlpj2ER}Nl1arL&dcP=VlD44GMNau3ZjEDM-)}a$0ZPK~+EwpoW)Y@~ij`#Su9QpGo zsV?*P>0PT|+_m4feuvHORr`7`|IYf|!o)lGs;$hwU;9>Km1TQ1uWeKgGt@{5mr~!H zx6zwEd|vilX1(^-OVMk^p8Y)cBYCdM`?#JiHD&Xf{#+I_Wn z=0pCZ#R0|dv`X9FuD-RYr(11Lv18)KZGPY8^KM=B?v%y!6u*zR7oAp8vV7-qKcD4! zBXeQ(5z*sPtCt=ul$>>@?=$z3_3M&Wt!kq@{QIOy`Tc6&Z_i z1WkLgBaSJVuFcBnb@|}peDUbUDjl=K{<+%^O$fSdK6UNK(0I|%c&}AoLoJzS9*JM| zwmMX8ZFG0Zn*$66Mxfj1R!y^d6{#?@car9eHPte+7tdO`Y0-ZM<`WE)cd(ultF_&g zSXz8q^*G1cQWM{)<<%=vLTin`e_5_?T({1}KhWxWz|rDGvt}(aJI(4WE7DWmeCx^0 z!1^jpzmn(rb(0H~d+t>qGrB!FxA#ue*PBx7!|mp|#7B9|S+)8_+0oNhJ-lz9&bWTK zNnAWX>Dk6duWAI#4!-7R?A!5D*5%uo)1sGe&duL^`@P8ByRNo7U)~E^t)=|5>eJ$# zHUCQ7woetbxfjdu@cH&-2iM)?5wqOL{`mW@DSuf^#reK*wHLixld|H-=Uvt*#nHQz za<7*8^gfQ4>zBH=M_ILdVs~}ZqNCv#SFC^PGEelQYwT3H*>83$y}ev=e@$@6N%ugR z3nzXo?L6_#wl8dFpX*&wQL9CZetFo0O0T}`-{f~S`gCD<_X~T>%--t#@Z8%;_e=a` z*PLGXPXDV&$FG(Um+Fh5l``KJscYXk7g}7)wQ8>TqVi;$=taq~Qj^Pe%r(W{9t$t^ zcO7kzjW$$CY@`?c+IXxlcZKQXgZ^>bq|1%AZu!D};;Y}v=ia|w?bcryXt%D#S*359 zyY0Jh%hS77t$VflwawK1Z%)?lkN+}HIo|cxna^1ZU4O?Jm)0$Q8E1AROQke_r|*MR zdoCT9sgJ5#Gk<@{SMdd>_^#;sP5OFl@3pA%Z7xR@mn>Xfw0q{BGf93=Zl~PNOs&!? zebu%5>rI2Jy1RC&8ie+1#~gmX_TQQL9iO(Iv8%fO=H!prw{K*AubMVTH2KtZgP*VK zH>*FgSzF9MZ~JefI^}Bi@|Bqf!w>>+HRc=2M>T;0YvcvQibuwq(`E-5?YjL$|Ve zo%oER5VPKorh#go1A}w7XD!|tUV6XuuKCV=VLRK;NB^B^FZeWjM$Om#Hz$8I)qnWr z-m;8!7GC*E=Zbk2OXtfsu1|X^vwXhArOIQI*Z3T2eQM($mTvZ{+fTLsiOANe6Ybbz z^-TUVu(aKJ>O1x2u2uWo^7durUKKuSZtG(&(aw7;FK@o{c7IXM{J`by2ckFnon0^TpCRja{;Y3(f5kUjEhcVpj;nHy z{5bPkfQIU;eX?uU|GO9;EARj9NcOM)3@pwUKjr;rXsdrV|NEKSyXLIh(0x#&(!Bn# z{b&E*k5BIYC;6XYR{eeHUA>9oO+oE#-%S5AEZJjw_N&?Ksde{KEv@3@b1wX6$eFh< z_5P)ATkRJvE)QIzxcK&_2<=VL&6&DeLd&_9FIt_rto71~CoXqGrLKg&Xl*(EAtzmC z;w1N;TUsee@6U$c4^iGz6ZKPc-~8|u6AfkacO(exvX)&fxq0hbH|qywI~Ig5D)mdv zQu`YkzJ9Iu%gxuq&IUi^P;1_FJn-wHwpp88mmbo7TeNM}-S}9oKT48ju6LD^EJH=j z+)e-N&&nx1z4U$HmrE;iBj-(c#Zx}x$q$pF8*7E`ywIDhw0HlFPsYpV-re~&dHU?> z>s~+Fb{<~Hz{?#qo3Qw{BQCBd=E>=8-xRy=ytQR$@wDrLzBMmbnJ!DS^qVIvo0J?c z8=JlPKSRrzg|~LRO*r?~RAR4B*h*cAfA#@SqIOj*sj~ChH81q$CQIRo8}=@zr!tF_TXZe7j!#{e`1#s@ zhBW^pl~K>+ZS%jS{PDSc!)>%!1lJ)H6pPDa@(Lc$dL;GhZqnt~!k^Xd=1#b=NhfcX zTX3jH&*X~iMMcXl?d^?w8})9*-EDEPSLb}k5*1!YUvyp*?G{zomi4T5#n&%kIouwf zPrjeJ$w;bmleN#a?%Ijx!j;zg^!r|)KK0a!v)^y06zvQYZ{PbZ=9OFT<*;kVetf=l zx@SJm&RESQ|4yx(dRM$+{^o7@O{Q~BbY5TfdTS5728CCuo!;NKUtC(W@9wI#e^0bZ z?Yfn{Ro7BfZmCtCp|n+hoHpby6{;&OCGRMCnsEHGba^oga6$UTgjL6U%yTzSLc@ zswOeU(db&i@3i?dljiMX*D7(Tj=A!W>+XMsC6Cn}?(M68@t!}s)^FLf`0X>f%}e#J z31+DBtG)k`{x9=CLk+x;DGywu^ubHc_x^|Te=h&~`9AQ&+uZ)?``4|V8d&v7IimY7 zmwBnwA>K0|J&bd*R^1MGe(Y4+&rQZ(A6DtTt*+Zrr1YPG$??)Zi)V)nf4sT*wOx7E zzUxdbr_b)2o4s(4w$!|$#erg$@|PDa+FqA?r)6%^#Xni+oF+i7v&hMef_AsxX}TT3r}^$owz@1c*)*`+^?BX9`*pkD?|1nsU6DOq=iHXl zyst~{^r{Kiu6HTT?tAODB}Fh{drY|KacO1Uk8vtqVF8aArUdwcir>J?+ zqMt|CKis}KZ@O>MEbnizg$wsx4P3NOyGFn=Gij!%WlH$Yz?7TjH&-3;{T8=d{yb(& zY5LVr)9c&gC6jKf)4aLdqjfoJ1eP>V_f2B=UT;6HjqoZ=4qmJ6ZQgxl%Y)Sj0k|6J z8`h(mK=u6y42T))gv_)$?>twIx^5X7TIS;W$FFzV>$US`?^%V{m8|f;+4^GQ^7r*2 zzs;3&Hrww`+sgI3HTp@`dLx(nW@hWZue|(YeQ=xU(|NOFqyOrxS>AccaOv_ z$(DOoFV30rt@BZ9+!MF&o3`)jul-Z=ef#p|2d!3iZaw$v%0D%^QWvB1=Ia=YwHW9G zzUYffzI>Ir^5txyv%zOpyexm3WojPJw{P;-lpQDIMb6G#lXK0(os+_k>%)vA3{Ltm{*o3-NZ%jKdK z8J`(=i1dxA_cn36GQ&epP3LJ^rk>3E;HYdCZzVDDvSs=0yh%oKUHj&*^x3$o+~oDw z5`F#Lyy6dkeGeBNJG(o#>}K|pUK^>GPoB7jetpZ{zEJ$?p_n4<(}UfE6y6tUixTd%&XOVbGB~Qp0_@vGijrT3R@ki{Ul+y$T?y2ON zM@wCz<*|Q>U3W!GcOaQ9$32CA<-%zecTauao)T~}tz+F&lTa&{Gj4lr{`sqf3ZCDu zeB)odT14R+R1ZkIWHg2k31+FfXyS834{qXRq zmCy0{oKF=P7JDGsGeVf`y<2rl_RO|Ep8M^^>Q^>x*5xa93Y+-t@@rebaANREl7ZR@^y9dmh4?$0k2`&M^7 zPPX#(`RTlt6IK$aeH4> z$^5kM-de_UBOmYkvp?*v_{vk$ujj2Yxz%g>XjAu;tLx5uVqonad`VVrQN)T%Z?@iN zYk$~vFYfnL%Wt>y<>T&}e=V`yz`bf!)^jaaLzx8(Vygx|xRG7J{8?pfr+M+LE1|bb zWBV_Jr;3qTe*)7~AD`C*w{~N5sBL!dPVI~PicF)r=0=~HtyTK+warJj ri7wZaRxJ(`Uf=nPao!%^Q)`3MR{l2m)Zf9tgUygpF+w50|NkZcZXJpV literal 59477 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�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 literal 233723 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

r-_193Jist7KeogD*A4f1GMa^Hu~#d8 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 diff --git a/xbox/live/tests/oskiewar.test.mjs b/xbox/live/tests/oskiewar.test.mjs index f853d6c9ee..ff731aca8f 100644 --- a/xbox/live/tests/oskiewar.test.mjs +++ b/xbox/live/tests/oskiewar.test.mjs @@ -302,7 +302,7 @@ function createPadHost({ pads = [], touch = false, agent = "Mac" } = {}) { const status = { textContent: "" }; const host = new Function("navigator", "keys", "touchEnabled", "matchMedia", "location", "document", "addEventListener", "mouseFighting", - `${webShell.slice(opens, closes)} + `const jevDemo = false;\n${webShell.slice(opens, closes)} return { scanPads, sampleGamepads, gamepad, controllers, capabilities, seats: () => padSeats.slice() };`)( { userAgent: agent, getGamepads: () => pads }, @@ -323,6 +323,83 @@ function fakePad(index, { mapping = "standard", pressed = [], ({ pressed: pressed.includes(at), value: pressed.includes(at) ? 1 : 0 })) }; } +test("local versus requires two physical controllers, not keyboard seats", () => { + const host = createPadHost({ pads: [fakePad(0)] }); + host.keys[1].add("A"); + host.sampleGamepads(); + assert.equal(host.gamepad(0).localController, true); + assert.equal(host.gamepad(1).connected, true); + assert.equal(host.gamepad(1).localController, false); + const { fight, pads, tick } = createFight(false, false, "web"); + Object.assign(pads[0], host.gamepad(0)); + Object.assign(pads[1], host.gamepad(1)); + tick(); + assert.notEqual(fight.lobbyState().lane, "local"); + host.pads.push(fakePad(5)); + host.keys[1].clear(); + host.sampleGamepads(); + Object.assign(pads[1], host.gamepad(1)); + tick(); + assert.equal(fight.lobbyState().lane, "local"); + assert.equal(fight.shellState().mode, "GAME"); + assert.deepEqual(fight.players.map((p) => p.name), ["PLAYER 1", "PLAYER 2"]); + assert.ok(fight.players.every((p) => !p.npc && !p.bot && !p.remote)); + tick(3100000); + pads[0].down = ["ArrowRight"]; + pads[1].down = ["ArrowLeft"]; + tick(); + assert.deepEqual(fight.inputPadDown(0), ["ArrowRight"]); + assert.deepEqual(fight.inputPadDown(1), ["ArrowLeft"]); + assert.equal(fight.clientErrorState(), ""); +}); + +test("local versus replaces the waiting room and preserves rounds and seats", () => { + const { fight, pads, tick, tap } = createFight(false, false, "web"); + fight.enterLobby(); + for (const pad of pads) pad.localController = true; + tick(); + assert.equal(fight.lobbyState().lane, "local"); + fight.players[0].roundWins = 1; + pads[0].localController = false; + const before = fight.players.map((p) => [p.x, p.y]); + tick(5000000); + assert.deepEqual(fight.players.map((p) => [p.x, p.y]), before); + pads[0].localController = true; + tick(); + assert.equal(fight.players[0].roundWins, 1); + assert.ok(fight.players.every((p) => p.alive)); + tick(3100000); + fight.knockOut(); + tick(); + tick(30000000); + assert.equal(fight.lobbyState().lane, "local"); + assert.equal(fight.players[0].roundWins, 2); + assert.equal(fight.roundState().roundResult, ""); + tap(0, "Menu"); + assert.equal(fight.shellState().mode, "MENU"); + tick(); + assert.equal(fight.shellState().mode, "MENU", "Menu does not auto-rejoin"); + fight.enterGame(); + assert.equal(fight.lobbyState().lane, "local"); + assert.equal(fight.players[0].roundWins, 0); + assert.equal(fight.clientErrorState(), ""); +}); + +test("local controller arrival leaves self-play and a remote viewer alone", () => { + const demo = createFight(false, false, "web"); + demo.fight.startSelfPlay(); + for (const pad of demo.pads) pad.localController = true; + demo.tick(); + assert.equal(demo.fight.selfPlayState(), true); + assert.notEqual(demo.fight.lobbyState().lane, "local"); + const bridge = { name: "test-room", start: () => () => {} }; + const viewer = createFight(false, false, "web", bridge); + for (const pad of viewer.pads) pad.localController = true; + viewer.tick(); + assert.equal(viewer.fight.viewerState().active, true); + assert.notEqual(viewer.fight.lobbyState().lane, "local"); +}); + test("a browser pad takes a player seat from whatever index it landed on", () => { // Browsers recycle freed slots, so the pad the player is holding is often // not at getGamepads()[0] or [1]. -- 2.51.2 From 83646fa26146b852751b84316971c9efefce9c80 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 13:13:20 -0700 Subject: [PATCH 02/10] oskiewar: hide the controller diagram on the web --- xbox/live/mac-test.html | 1 + xbox/live/oskiewar.js | 6 +++--- xbox/live/social/manifest.json | 2 +- xbox/live/social/oskiewar-title.jpg | Bin 57534 -> 61585 bytes xbox/live/social/oskiewar-title.mp4 | Bin 238963 -> 204904 bytes 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/xbox/live/mac-test.html b/xbox/live/mac-test.html index ce3b879429..a1955d9823 100644 --- a/xbox/live/mac-test.html +++ b/xbox/live/mac-test.html @@ -899,6 +899,7 @@ const mac = navigator.userAgent.includes("Mac"); const hasGamepad = padSeats.some((padIndex) => padIndex !== null); return { platform: mac ? "macos" : "web", + showControlLegend: false, inputFamily: touchEnabled ? "touch" : hasGamepad ? "xbox" : "keyboard", colorScheme: matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark", socialPreview: new URLSearchParams(location.search).has("social-preview"), diff --git a/xbox/live/oskiewar.js b/xbox/live/oskiewar.js index 7d49e66bc6..dc848def1a 100644 --- a/xbox/live/oskiewar.js +++ b/xbox/live/oskiewar.js @@ -81,7 +81,7 @@ if (hostAnalytics) }; // Monotonic count of committed revisions to this piece (next revision included). -const buildVersion = 136; +const buildVersion = 137; const floorY = 1800; // Oskiewar now opens as a versus game. An ordinary web visit hosts a room — // the URL becomes the invitation — and until a friend opens it, all you can @@ -11847,8 +11847,8 @@ function drawM30Cluster(x, y, size, held, directionActive, ink) { // logout button now sit in that corner and the legend used to run straight // through them on a narrow view. function drawControlLegend(ink) { - if (typeof capabilities === "function" && - capabilities().inputFamily === "touch") return; + const device = typeof capabilities === "function" ? capabilities() : {}; + if (device.showControlLegend === false || device.inputFamily === "touch") return; const safe = hudSafeRect(); const pad = localPad(); const held = pad.down || []; diff --git a/xbox/live/social/manifest.json b/xbox/live/social/manifest.json index 1ccb1c7b44..e9f0074786 100644 --- a/xbox/live/social/manifest.json +++ b/xbox/live/social/manifest.json @@ -1,7 +1,7 @@ { "format": "ac.oskiewar.social-preview", "version": 2, - "build": "5bd7e7067f957017", + "build": "9676f1b1c99c84f3", "theme": "light", "imageWidth": 1200, "imageHeight": 630, diff --git a/xbox/live/social/oskiewar-title.jpg b/xbox/live/social/oskiewar-title.jpg index 4853301a21863efe03858937953c787071c3bd44..a62ff49c6fc15ef5a6912ed9df4a91522c999335 100644 GIT binary patch literal 61585 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 z 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 literal 57534 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

;d}SYlBD>^=S?^oZGqxqaUwm?3 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 z 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 z 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

B@!;1%p5I%-Ia}&JX#chG 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

EdEtmJ5H2sT5bQ!V+N=x&fB?lV|{^xr0u=w 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 literal 238963 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�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 -- 2.51.2 From ba0b31b512cddf4754aa70174d7f9e24c693ec64 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 13:26:49 -0700 Subject: [PATCH 03/10] oskiewar: restore rapid attacks and complete couch controller mapping --- xbox/live/mac-test.html | 13 ++-- xbox/live/oskiewar.js | 62 +++++++++------- xbox/live/social/manifest.json | 2 +- xbox/live/social/oskiewar-title.jpg | Bin 61585 -> 61666 bytes xbox/live/social/oskiewar-title.mp4 | Bin 204904 -> 232200 bytes xbox/live/tests/oskiewar.test.mjs | 107 +++++++++++++++++++++++++--- 6 files changed, 141 insertions(+), 43 deletions(-) diff --git a/xbox/live/mac-test.html b/xbox/live/mac-test.html index a1955d9823..377e98b138 100644 --- a/xbox/live/mac-test.html +++ b/xbox/live/mac-test.html @@ -741,9 +741,9 @@ // the fight ever read those, so on a small pad — the 8BitDo Micro, whose // L2 and R2 are ordinary digital shoulders — two buttons did nothing at // all. They are aliases, not a new vocabulary: the triggers raise the same - // attacks as the face buttons, which also means holding both is the A+X - // grab chord without reaching across the pad. - const padAliases = { LeftTrigger: "A", RightTrigger: "X" }; + // actions as the face buttons. Stick-click is another way to jump. + const padAliases = { LeftTrigger: "A", RightTrigger: "X", + LeftStick: "ArrowUp" }; // ...but only on pads that need them. A full-size pad's analog triggers // drive the camera zoom instead, and a pad cannot do both: aliasing LT to @@ -757,7 +757,8 @@ // rest and full travel, which a digital shoulder never does. Latching is // deliberate -- an analog trigger passes back through 0 constantly, and a // pad that forgot what it was would flicker between zooming and kicking. - const analogTriggerIds = [/xbox/i, /vendor:\s*045e/i, /\b045e\b/i]; + const analogTriggerIds = [/xbox/i, /vendor:\s*045e/i, /\b045e\b/i, + /8bitdo\s+ultimate/i]; // The 8BitDo M30 wears Microsoft's 045e id, but its "triggers" are the C // face button and the top-edge R — ordinary digital switches. The vendor // guess would latch them analog and feed every C press to the camera, so @@ -804,8 +805,10 @@ } const present = (padIndex) => live.some((pad) => pad.index === padIndex); for (let seat = 0; seat < padSeats.length; seat++) - if (padSeats[seat] !== null && !present(padSeats[seat])) + if (padSeats[seat] !== null && !present(padSeats[seat])) { + analogTriggerPads.delete(padSeats[seat]); padSeats[seat] = null; + } for (const pad of live) { if (padSeats.includes(pad.index)) continue; const seat = padSeats.indexOf(null); diff --git a/xbox/live/oskiewar.js b/xbox/live/oskiewar.js index dc848def1a..a09db33ac0 100644 --- a/xbox/live/oskiewar.js +++ b/xbox/live/oskiewar.js @@ -81,7 +81,7 @@ if (hostAnalytics) }; // Monotonic count of committed revisions to this piece (next revision included). -const buildVersion = 137; +const buildVersion = 138; const floorY = 1800; // Oskiewar now opens as a versus game. An ordinary web visit hosts a room — // the URL becomes the invitation — and until a friend opens it, all you can @@ -526,16 +526,16 @@ const meleeSpecFor = (player, kind) => { }; const meleeSpecs = { PUNCH: { reach: 58, swell: 50, span: 58, height: 115, radius: 28, - windowUs: 17 * 16667, force: 1200, lift: 140, + windowUs: 220000, force: 1200, lift: 140, cue: ["snare", 1.05], thud: ["block", 1] }, KICK: { reach: 75, swell: 62, span: 74, height: 55, radius: 35, - windowUs: 26 * 16667, force: 1550, lift: 220, + windowUs: 220000, force: 1550, lift: 220, cue: ["kick", 1.05], thud: ["block", 1] }, WHIP: { reach: 92, swell: 74, span: 76, height: 122, radius: 24, - windowUs: 15 * 16667, force: 1000, lift: 110, + windowUs: 190000, force: 1000, lift: 110, cue: ["whoosh", 1.15], thud: ["hat", 1.35] }, BASH: { reach: 62, swell: 40, span: 58, height: 108, radius: 40, - windowUs: 28 * 16667, force: 1750, lift: 210, + windowUs: 280000, force: 1750, lift: 210, cue: ["kick", 1.3], thud: ["kick", 1.4] }, }; // One lookup serves both Y and the loaded punch, so the thing you can see in @@ -3898,6 +3898,11 @@ function consumeSystemButtons(now) { for (let index = 0; index < padSnapshots.length; index++) { const down = padSnapshots[index]?.down || []; const previous = navigationPrevious[index]; + if (down.includes("RightStick") && !previous.includes("RightStick")) { + playerCameraYaw = 0; + playerCameraPitch = 0; + playerCameraZoom = 1; + } if (down.includes("View") && !previous.includes("View")) { debugHitboxes = !debugHitboxes; debugPerfReported = false; @@ -7310,7 +7315,8 @@ function updateGrenades(dt, now, combat = true) { function startMelee(player, kind, now) { if (isHeadOnly(player) || isPogo(player)) return; - if (player.attackKind && now < player.attackUntil) return; + // Every fresh press starts a strike, including during the previous swing. + // updatePlayer detects the edge; holding a button does not auto-repeat. const spec = meleeSpecs[kind]; if (!spec) return; const attackingPart = kind === "KICK" @@ -7360,19 +7366,18 @@ const itemSwinging = (player, now) => function meleePulse(player, now) { if (now >= player.attackUntil || player.attackUntil <= player.attackStartedAt) return 0; - const { frame, startup, active, recovery, phase } = meleeFrame(player, now); - if (phase === 'startup') return .25 * frame / startup; - if (phase === 'active') return 1; - return Math.max(0, 1 - (frame - startup - active) / recovery); + const phase = (now - player.attackStartedAt) / + (player.attackUntil - player.attackStartedAt); + return Math.sin(clamp(phase, 0, 1) * Math.PI); } -// Authored gameplay windows. Frame 1 is the accepted input frame; drawing -// may interpolate, but no collision exists in startup or recovery. +// Collision starts on the input frame and lasts through the original short +// swing. A landed strike still hits only once; another tap starts a new one. const meleeFrames = { - PUNCH: { startup: 5, active: 3, recovery: 9 }, - KICK: { startup: 8, active: 4, recovery: 14 }, - WHIP: { startup: 4, active: 3, recovery: 8 }, - BASH: { startup: 8, active: 4, recovery: 16 }, + PUNCH: { startup: 0, active: 14, recovery: 0 }, + KICK: { startup: 0, active: 14, recovery: 0 }, + WHIP: { startup: 0, active: 12, recovery: 0 }, + BASH: { startup: 0, active: 17, recovery: 0 }, }; function meleeFrame(player, now) { const timing = meleeFrames[player.attackKind]; @@ -8539,9 +8544,11 @@ function updatePlayer(player, pad, dt, now) { // A broken shield stays down until X is let go, so the opening it bought is // spent on attacking rather than on re-guarding by reflex. if (player.shieldLocked && !pad.down.includes("X")) player.shieldLocked = false; - player.blocking = !carrying && !headOnly && !(player.attackKind && now < player.attackUntil) && pad.down.includes("X") && + player.blocking = !carrying && !headOnly && pad.down.includes("X") && !player.shieldLocked; if (player.blocking && !wasBlocking) { + player.attackKind = ""; + player.attackUntil = 0; player.shieldCrouched = rawInput.vertical < 0 || player.ducking || player.crouchBlend >= .35; player.shieldVx = 0; @@ -9672,9 +9679,11 @@ function gameSim() { consumeSystemButtons(now); return; } - const cameraPad = padSnapshots[0] || {}; - const cameraX = Number(cameraPad.rightX) || 0; - const cameraY = Number(cameraPad.rightY) || 0; + const cameraPads = localVersusActive() ? padSnapshots : [padSnapshots[0]]; + const cameraX = clamp(cameraPads.reduce((sum, pad) => + sum + (Number(pad?.rightX) || 0), 0), -1, 1); + const cameraY = clamp(cameraPads.reduce((sum, pad) => + sum + (Number(pad?.rightY) || 0), 0), -1, 1); if (Math.abs(cameraX) > .08) playerCameraYaw = clamp(playerCameraYaw + cameraX * dt * 1.15, -.62, .62); if (Math.abs(cameraY) > .08) @@ -9682,13 +9691,12 @@ function gameSim() { // Triggers zoom, but only on a pad whose triggers are analog -- on anything // else the shell is still aliasing them to A and X, and stealing those two // buttons would cost a small pad its item and shield. - if (cameraPad.analogTriggers) { - // Right pulls in, left pushes out, and they cancel when both are held. - const push = (Number(cameraPad.leftTrigger) || 0) - - (Number(cameraPad.rightTrigger) || 0); - if (Math.abs(push) > .08) - playerCameraZoom = clamp(playerCameraZoom + push * dt * .9, .55, 1.9); - } + // Either couch seat can steer the shared camera. Digital M30 shoulders + // remain combat buttons, even beside a controller with analog triggers. + const push = clamp(cameraPads.reduce((sum, pad) => sum + (pad?.analogTriggers + ? (Number(pad.leftTrigger) || 0) - (Number(pad.rightTrigger) || 0) : 0), 0), -1, 1); + if (Math.abs(push) > .08) + playerCameraZoom = clamp(playerCameraZoom + push * dt * .9, .55, 1.9); // A mouse or a finger on the shell's canvas orbits the same lens the // right stick does: a drag turns yaw and pitch, the wheel or a pinch // dollies. The shell banks the gesture between ticks and this drains it, diff --git a/xbox/live/social/manifest.json b/xbox/live/social/manifest.json index e9f0074786..629b3f2fb2 100644 --- a/xbox/live/social/manifest.json +++ b/xbox/live/social/manifest.json @@ -1,7 +1,7 @@ { "format": "ac.oskiewar.social-preview", "version": 2, - "build": "9676f1b1c99c84f3", + "build": "08da3c903a1a9a91", "theme": "light", "imageWidth": 1200, "imageHeight": 630, diff --git a/xbox/live/social/oskiewar-title.jpg b/xbox/live/social/oskiewar-title.jpg index a62ff49c6fc15ef5a6912ed9df4a91522c999335..2a53ebf1d0f181c8947026d28774a172f92d4401 100644 GIT binary patch delta 56249 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 z zy=QVdc5CHbjlEnFUzM|>Yx332TaRlmyQZ~!tM9y7%LP~T@9a7;seZA_a+hD5mi*~j zt@ipl$kdM6%9DCRwI)q{xNL7t*N3l)61S>m-CVQtsNB-5wg3L+Z#$Z?aCg|rKvtRD z>>xJFDz&pNzTaN$u3RE$l$(pPB^l6sfpOvS&xBcZ`xAt3o z%N^7GZDom)a`v9_HJ(Yu>-DBj72h3uDWp@-GBxB|XyBbyedR9qQw~13^5}i^&Hdhg zpQVe**xvrUZGPdp1SW?=2D$O4)Gq04_x-BXv?z*u+1zJkvzxUZ#xBV<*;*JJa&+J6 z-6~z7*|Sf*y?oN&Nqz1*!M((De^G>bOo@zU9u2qSmvBs@MRf~dI-uvB4^J7r% z0S#FM*NgDpVn2N6k9^tWS86)<(vzzuy)+eJ7i{e`(waymwa~@miJ}WEa>28(l^X;M*o!0!VZXz9R zJ$oMO%F=xe&s1GqOtwo!H%AIrT5fyM-&q#=EK>B&x~ja+?OK2S#{4jOSbyu}r&T%I zp89@Wv|^XtL*@9tp-r8FD}Q=ib#Z;QFEzW_`dhE)Ig#XgyX*%U^*<_SU;R}-C#*Cs zWVgnzV~;ZGE@(V9=^f?&7;wty)}uH>zvZimNW6 zp{|Ak94Eaix39cna79$gVA1UAmD=0O-mESAz5VX@gnRoJcOG7{{nlTfM?%jXekh+@ z{@3To)0y^}s++n(qjuihl{fKh#J$*w!MB#w$KKwhw5~Pc!=1?;ylF?jbh9MwHaS1< zhtle&;jRfwvg+}-n)D#o_B}atcYjxR^4okeEBvo z@i-=xrq>CB@At5^j^%t6rb<$6xuN#nA7;1y1vxNCD?U@0JdxS7o@vT&$HMnl*4>z!mOMHCI#0FC{>>lXtz5FO z=*RkB*23RwY{W~89;KbERamPq*>`Kar|G|GQ%`0s_AJmjv~qp?ji6AkNw=3()rNFw zEuAa#^z+IjsayU}KL;(%XydO(5pQD zx^q_4UoX8Gx@twAOGv0o?3rV4)+H@1PnKl+Ywoop`q9L-xm_=PyY9}HzNox>ZtkXc zUH$PleY%CexyG;P-W__kc7FP2@w9ytUo5#deTC$m$xh$*emEE!D!R45f98rSA$Q}x z`hE*HJ<+|Z#9931gcq0ny(Q&cCqJ8&aiJh*zm!zx!l^szUBzsdNqphkartWbrP!Ab zCb1nm^6Xh}tXBEtyw%Syn)yzx;mt78JYN}iP3N5Ty6Za_M5hSWOHAQEu|?`(LfbMe zuRW`_H68a?>D(RlYu1UR(2(2f&KA#E`7Uc-M{d~-oolD6tkTL$u1qwOn7M1cvQ$UM z?De5H1#P?>9}2rAJ^F65WwEcp_HFB`#b)g^l~#Utquc+iuX1GG@~L;uzWOy?`KRsL z+hVVdo0l7X^w2q!6`HeK=!VCw`F0N&5+p&DV`zQI`Rw|XeV)sA&7YiotmE<5nYLzu z+F74%#IF0TU%PTmxPE2ng5>h|YIQF*9k{l5Nx4bKx}rC;^jp)e-F4V-yl|V}WQXTE z`Pq}Fc~uI(c2^ExEqC?B+PD=}ekT4~^fz1=e017s$1Asa_v4pFZH>G3EB6$a%j&I9 zWL93>x}|HaYjyoLm-mlDsw!4_tmtq_v-B~PkK_ybJ%9bPvU=V>aYu8$Bu{_5=+(n& z)!Y}cci-J#^`C(|d%nqa>#H-2=IQ?Mx~|7?KQ?})h4d#Gsi~`#i+yxec0?~sQhT+v z=yRC6;SuCUiqq}c}KP7tl&_C9XqN#S9t%s8Tm)A=a0nMxGjlaL~>Tl);g}- z=Jwg}by0h!@cOIYcKy(A-|=eg9*;*eO`qmgeDyu7y=Qkx+wG)nS7NkQh2J@L?5KNP z_1o)5HuLCa{+(g|F6Eql=B6H<^7@Sys|wz-DN5H)w-)Y5Y$c0Aegu3+zukIy;Xrfk@4`E{zip0cl- zU7_DO|Eqcb84RV$oXS#89}t^ zdFRgB@V&2Ab@is}J!Hr=?CJ`P6@1F$r?yUM&Fbrur*J>Ho%=QSYYqed(g~0P#p2QL zw%z^`H3sQXiPh6DuKl@oUUmM`@@%aOr=Gp%^)jBh=Ui7vpG($G!7vlo7psEo6y7Xm zIP;0u^h%VZZd7;U`4{C9_l~BNXVqR+*crU)Z-shRvC{J9of8AC^6Q_?D_i$1{p7LS zNvG!~T)rG-I+>yOWctc^;jZ4bi$lXtXVtF?iJhb=`_}MP*T$2Zmb+WmtWi^LwX2m6 zI$Nc+B=^p`1xY*HmW0G@vR-C9Df#*yaqHt(h2Hkudk|Ii%O!T|rmd?w?>T%a4&Ai< zW|8Hpd7Aq|as($$y4UX{7g$)9zz`C|z`(rdO0V12Oh5VX>ODR$US>`dT+?g0Y~{o% zBaPX=>p$6+xox!xt?#%p*Lzc@oP2oQiR?$)qctwyp7?v!&hUe4vr3DnpA<9?&e*ND z+eH7@@0Hhh3$OL0?Uvl|D0JeTE#HOKhxTprnzr6p@9W2kW8dB!ZDQ9q4xf3>f7QBU zM;;}6*`>L1@h$$Oe(p#gx3QgMiMQIBuXgje%a**lTO#hQ+qz24{NI9wO>*zL8qdFa z?s05ar2O@%>*t>6byvRg_d3IMP(#~$$)rsT%n!dzp2!?t&m3l*m*01Mx4P-Qg`1E2 zY)ZNuT)a1W(~|QkUibEz7uip>`CgQJJ!$HS54X5_irTvNHBH*6xpHx1bTGH-ueDEa zmb?1be-659H_`TG?%s*BX1X0MPTdz8ncEZM61K>*V)1kL{0H4qw&uQ9MT2wq1g$um zosn{#SKt1?SN3m(hurE5&uE2&$A|3v&oFoYfnzVXWb-dt9r^I6;g02@cT-X~vF)$@ ze!nE|pRMoWH|9rIyqml3@`)+AS;@bm3)XdhJa#3g*t>X9qxs8=VW!h_r;3)vtAs=_ z-1^V3_;r@|{*1bHcde%s-P~ZEx_z&^R(b8;lFLP_@~_X{b-#93(c4}5*ZGxHrY!IB z^ZVv=_fP)f_Cq;KJub8)@3+wN)cgMSMT`f-9ev$Zt|62T| zh=0jFJJXJDI<0-1_tLq)7w@cC=bE!&XYj4g7b{k*KDDN3@ulsh(>HJKk`u~Y7iv1= z>i)Pw>nPKYu^*nP>i(k@3-nn*@?Nq>mRk8zRlZw;N1-|tH<8X1q=4Q4CRgS zSE?4>&;I7RZ^Jn5{FfnLSPVv~$bV-c{A%rM^=)7VA%s zo6Gar$z*@jkDIfm{xV)RHUHRZCC|rajm^#{AAj0g{(7@n|Sxk`JH6L z+uxqvu6LW{mHQ|B_^$gO?;o@gI%c*vDpU2&?zY8#<+&xw`xvT4a`)K3l9gMQ&F1L3 zYSw(GiTf_~E_$a^G5ccZsaF~@tIwOgnjPXb_fe7gREgcI-dC`gEP3)?$yH_Q1O}1$ z;31L8Q<;P6YhJBdv~by^%q4viiCOzR<(_0mT=Bgc8oo$LeFpml(dJ|PmxQNH4_Ie0 zpD*H`^}KBt?>R=#y04Y$lba>=;#;az@cPQAE3Q-5RmV%4XNRt@4lliWYu=T8hIysI zA-kgrtFz84FY)q<;p>XfoERFaoV=uHZ`73+T~EVv=7xr^Y_E?tI2<(Xt>?|(_fOn2 z^5@+)*?hsq2p;Vz@@{vM<}dr*`}f%EzpB}D0t-aDqMqdB#k2?InD9I+Dha8%thKnl z{$}g#<$kl*H)%$(ryg+^*!BLH>}H8AS?gBbE}ByyKVqZ}DO7rMUXeSN5!B*2X6cEM}x_*-<>_vUioyF7Nf5 zZoRrc!#w)M?b~6?JM=X4{B!i)1&eKWdYV-}@zdq&XTG@Jezm^pyxppMD=+eD+WoP6 z9k=5{`^0CZR*|d1{zToMecicW?V=S&HS?^!MLdN=Rc4-gzp8WJZFPSZ-6ub~>O-&hoxKA389rjoY5a=XcMe@NM)s0_O#&6qk-P>8J%}l+*r%w za?jec&ed(z=4rl*rlq&8RORrW{WadCGTiio+xD!YHzpe^_9zE*?am6AI_cG|o+WQ~ z?-u9dTg`fI&8@j@w?65Vy>zbL822)H?Sl1-W^N9?=JajxOl7&d7te--goIcJTRaEN z^H@!0J1A41CjQ!b+5W!^6YhU}6+ee*^Y3C^k!yOFa>aIk@5>EyY>vy-x)SP_cKPb% zb64Va>wj4vJJI}G&7TFID&Ic3q7!ZVNW1m)(q`2S_r>lZB{y<6tuUZK8qf0uxv^>ph?-zQdF{W|YK{_~3ucdq`e^uhF$Z8kb_I^V8-!!0rSU&UrsuiaL?R9VRL#p9L9s}!@=op|onedfyj zWv|+km>ob<_y&2(J0=~f@VdmkuY83iE1!AK&7?^6RV(XGD{l+U2{g1_nOb+-%uH$L z>5GC6Mn12tHfQ!pmz>z7y_9#-(Uhf=w(Z-uE$y(sJGa!jn*Qo-Zd(OKLqnG8U3zyV z`+cTt?qTN3r*5y)U9jb{71!-8Ms~CI2V4}NddB6&58c;qmz{oF@6&ZP#3eMjpw4#3 zi&MWtKC`J_o3&Z|!f)58kjFPRUrk=U-*VNQsn=axLt?*$yZg;ME%-O|)SPquD_=fd z+BnhWn7c@>n_-XdtSf#U9i0z4vTx2SSXdQNet!4m%V)mKZ@tHJT6pK|^bcF@HZ1#f z+TB+9uKViurzbzYu_mPA?7Ug`>+_d&P3oFt(j}3UubrG#p`>`4omuHr?u^#GTJNq) zamQ-yRrXxHW0NmVxH6)0aQUy7S~~&e!OY6+zE44r!lMnSN)I<%5@od%cev zYdybo^Aoq~wPhC9!kyh?MLwB!tmt~09kZ%)*P{F%%lEuHvgpxU)kJ4uuRRu1QkHD3 z_ci_Kz%25gLGOqCeVgEa`u?BiC;J8c)_S_f&ziS=`z0+m@t1op?O%Fk&7Y9q;x6f^{$+K^N8y;6LQ*`R4eW+2V+K!i3V?HUl=FVR; z)vWgJlc(XnT=|bSnVN@YiT$Wtd%jTgj80A;*Uq=wy|_BoiS7C!d)jo@CUND5bGzp8 zC0`W(bl2wenm3c)vgFIhm~311V?yAoJYnseolEzrmFM(rmENtDUFbqYbF zNM`kpwhQM}L{!_GFfG>G5q*Es6VuC^?)N_Wa@DtKyYkxVSy$T3wXCQ1WUZOxdFq|V zji)zHpStc9b#QgWzvj$5$C*#VC3G#`89M78dl+s!QCcK$Ys~KaM^A63ZME8Ys$*^_ zm%+KxW&as&u^vg;^>KF8s+^iFeOnVH-n{DmwL9zX>3jA2Q+!{o5`ABN|50z1q4-p( z&WY^{UY##3(Y?BAgBYmYL?K;o8^xuhGuP=G;6B- z-JNTn8ohbaXWPd<>$b;S=lYhmEA#BPrz#)rSW2vUzG%%%)mfA3Q__``%xCt$ zyVaMyE${w@sFm%@P1Cw3thd;`EV`drraWQpf+$0|#Fi_ej;bd6Ix9BaN%qhy|-{T$Hg4u8&kGLmb{P15qW8wXB%qe$$CrV#jD*l zcddVzyWSNQeB=6hm(q^rBM(zOe+q5MKDOxTl{*HEU2&5qGV4aMKU!vf+Fv<&@~(+z zL$ZHX?iA1K-aha68-|Q$lM230xDfm0-ch-kF@}HM^PP+=J-KF7!&bjG3|}aQ)Sr;^|(iHhHYvwX;0-KLgv! zna}ykmpXoW_w~!CpYwKn*nMzEg1K?dH?7cJ$7VlU_+0N?l-|VG=VBRTwCk(&e|4`E z+r!MT@%)TeYK~`r*`4)Oj=sB5xIE;_-c!9zbLa0>zAAjuJf1_#Bt0xk)2zDBXUeo{*-h*r;dj$R;vydP zu2>h(diQqD72m7g8gGuhF<*N5)%;I0kJP7bJ31pvwo*p2jdvAo?Q=I; zwDRozd7*dLK6{$pZgnblnr(lWA9L!ebH&_C?JC!r-w>O(@9*8BOHm1-@t?hG@?0Vo z-A*aKetTkIXk}of?-g^O-8yZO`F2Iu{hg1@Q>j?mbIWVL+rp}fh<$H)Y4pQwnIZ{)}rjW(RY=$iEWizEmLS-Uh3yN zd3k8t$?UCu&qe<;Y*UYrId-gnV?^QY?5i?;p~Wv{19tys2(3&>-+a9!Z2c@j&2`U< z_UU~7y z-1t{*cUkOhrKI)SU~kQ@O7Z(QH}?HoSyuMKc55`V%A(7sS%SW6ZkAPw zUhurA#P@sI>s`xU@2h`(W%A9dZ+w5QKk{_`EvLO7Ex4@Q7XR3x|95FY*`2c5+dn+d zX>5J$x5i}JT>Cw$w)3sGM7_A_>zY!PE312TqFcu`!_a7++va&2cOQ*ew!&RGwRe5; z#Ir?tUERC1s?WPfbuQoL8+G8l#4+!jC3_zKWR=+>E+sXs_;5H&ZQ+4v?woD5DI#Iz z`fb5SrmeYjk!zLey>ri%_Jw5CX1<*MZDaka{|upL@23W@vY+I3Gr3sqN^#6=Ev>w+ zd5_}`JxX<2wUY1nqHl}S4R*eZ4A(ijJ}rCldr7@XahZRrO41kcT3^vtTboc;Ghb@w zrMSXBO?_IwOG}M^K3v`8w)m!U_?@*O@%4M&dDXv>f86IMzqRp?+0(0idD>I#vgggd zdfuo!#8S9)(yH@sOI^aXPIHy|XTJ5ldg96s=K94^rU|Q@7u(wypP4N@vj^M9_$;QN4EYw%`3-U)PlL%*rlVz3o|L>^`eMyA>8qzjZX{ebsyJ znB#f3PAy4SGQA%r8Tz|Arzn)e($h`-*ro6k=3B+bTxyrxaSX})+Idyy;#%2#{~6|8 z*c*|TQ<)?d7|I%fW!n{n?_LbFVL6kZ#gak{_!$J|{fGneP;ZoBGtsy?e? zV)@hL;FP=Jt5*G3wLUa7G;UQ{+VS=UE1gRPuD;qeX@5eA$kv_bmSuglV_s@iS#;&i z)-C!w?_|7qC-Ut_uE>cM*X*jgT61(F#b-)fx0QM4dQ-gQe)H;C?FEN&uicWVIvG7R zEz&ky*WztoZ`aRvrTzD(?pAM>>R4AiJ;lYZe%0)Sd3R^Z&I?<2o|k9!X5G_Yr<duXqC0RvQpOff>S?bci+46Eoz_jkG$ojB5UWF z?d{9H@x|S={%q{U6Z^QjqSCYfng6Z` zbFvV7>ej1;eK&bh&xWhN)|-7V*YBxIxshwQd+_G%AAD~as-_iO z=vls7N&Lj8GmBlnHcj?7Eoa^RGA+Agx!37b+1gawQrUZ=cg>ftUS9oh;@gm$XI$@! z23oCqG1IYVj(@@GrozsprZ>tK)JJIQm(4o1zEpWu@2c&-+cyXLn%%i@=IG6+Z(3Sf zmCIgixqQ^0$Ex#YctNtM-kU$qz1Ef9>rOiN^5vb)w|{PXvTV0o=Wk8%Rc2|cZ~TkB z8uj#Po}RSa(l=LLubddqnV&WPz+Z`LOEYWbmIMWQY%SN;eRtj}Eb{%dRnvoF-fYzk zsSi8vYh6~7@9Od)ZnyeQvlA<`7Oh>@mywck;mnnqBEu7)MRAK3Eq8VGH~!}7rR8kX=xx8+iwZ~10JEgu|eiFLs7EgY_Pa*5LfZd-qN!{E3Z0oA7d#m>p>AhN) z_4a()Q|_l0Yqy&pU-j0!N-Mi}+s?UnzI@&&FVkE9@m2S`5Lefat}Y?3T6z!sXUNfu?ED!jSx>Sf^^HDXxnQ_@yKAIUwp35nR>2lMZKj8B zgI{a^djGAmU?11-(nO@n`G>4W;_ zuCC5|lzTQzp2+M|Z}NHT<*l4^7+#)Tcf2Dg>QipwIk^`)Vo{w}CG(o6zWBX1II8Qt zTjyK1Pw%cyJbmiwx45;-Z$8=oT=MH}i*xJ0&a7LI(tWmMPpH=4xYXjzmp8vAEKB=s zq^4vlD7@U|w#K9I$R&@u`{(9g@l;(tt^aH1kEv4?dsiI0{WfdMnThLu)t|oadCzOl z>ECBRxVUX!Vk+}m-ttOC#iy><&;Bzkd{fVAV|OTF)2qmDTGm%zEqh%5pnF%?=Sk1* zN88?udB^bfN8rQrmT#4=-a4c1{Va98{3fqssWXp!)R_|IarZH+-s!EbS=&pq&E2-= z-g)vdCrq3>SkU%V_AlA&%x|mpP8j%0*Uva#S{8p)eMxxvcfGYsN~=7V&zvvz>(*J_ zOIcFc>tZ&3zwX@{Zk=1P*62UO*I7HIuD)8m$w=+p_x026nLFP+ezUf*tT5s0#fT@X zPHwL0PJa?vdUnNj?!yy9qt0#*X=BUlxG`h5lBsCuxo&txait3zQnjYfvsr}=} zkD+({G#5VGv`;Vp{0Do7KUxb9-L&DUKUn{J$^AzOHbG&(*!d%~zb6$(-AayIrzi#kBh+3+m_Y z*&MxEv1n6La&f^&R^wa zdvflpYi*O9o-f*ade`bHS2UjFY~1>$$a0fJ#=?=M7^Y}Y09hA4e=^E>< zHuZ|5ezQMsHGgtvIaAS_l54YiS>J|jyfO2I@8;~*wpHh2CMg-dS-b71YO2YKx7)+5 zOlRqZhPXcSuNPMiOfiy)?)77S@vG`T!-wMc@?}na>bjACRkNn#N>(27JN2({a@eQ5 zzoP4<4_toh_jdcmx7KG~z4@}`W}MG0$uP<6wIvgDmG5+K-o4%1SmulC{Z-~uYXU<> zMQ*%P&bxHOqUyZ%f~upoV%7!o%$Ik|+{%>c{v*n7>z;b!@7%-nXX*$BzCMjY_ape{rbbJm(7#P4B|Q!HDmXzRg$4Ao}~2L4PK@1ZW?p-W?9iH zy-SYI&7FR%K5gOu*w{^P#@Tz@y83=j366YUVtDGk`>qS;O#;1THZEEmx8kPEGwq3$ za=k^R&KD;#Z?Vj^VY92q^7~jHw)NL%&*=-xS=H|_a5%pJtqEk{DGvDBE_}%6#{9bW(NOHmhkz-WTr_tqlJVx6DD=;$*(-U9K%zL9>^K=^4ec2Zz-& zFlgycp14G@{≶s>!TJ^0x2#I&q6wmgVYIp}o(F+=WHo-?X_tb@c`2*x!NGF1fMu ze`&j_+7#X`mA9GaZ6=!f%=dM6=!)(@t%_~aSZng9{w{Gh+$;JbWZ#s8avr;@(a{s` zWfk?DR$5(qUTNP|%hF?Lduo~6@~%~j)I+V4?cc0>@X7At-SS0Ov#(4HdC@oZUdrG$Y|ee> zmU^JLDUPhKGWhd5T?-Wj{FTNGAfo-SdPIFCRO_enr zmwW#B#e8o*8?n)mrPMfX!|lB+1$(=`oqCzEEXg#gW7UdPZ@1knzkkrn>|x%c*Xwy_ zh@5}+JepNlW?i|_&S++-RjYrz-T%>+<^GzFDP~r;YtBvFaNXforOZ*6BGb2FtCqc3 zx$pEln>QbfCLcYtPL-1TO}%3T$2_q~4P@wEST_KCyC z^%L!lBCY4~t)Gw_yKatI$Q8rCcZ)Z9M|sTtbnIuYezo~c@zQXYUVr{ItM&@K?6aGD zZ*FJd{lmI9_llZI&AWN#n(6sl>n1H@_1kM1DtrB`P4Fs3#h&oR%KTjawu&EMD&09b z(Mh9Tc7o}ll;!uVt2IBzvFmS-b+~w|YRz$1>3dDAeIL&gjh8puDV}b6^4WDIt;$8>Pr}19 z-Y3hJMNYZ;YC7+m;~#CltqQ-IQnAT6Akw*OafZf_FMk%XEL;6R>?B*N@ki>+DMw z-YlCF7a#BKZFTX^3ay7x*}e0Y+9a%OtUC6eq3CP&w$SW3bG_QFe9FE~{cvV^Isl>IRMNbTb8dr}2+eK$I*>aI80>RjA4%QI4EN?%oV!QL~WS^LZv&v?5>bX8Z! z?nNFgno5%=GJDkXNOzu1X>PBRF@E!H;RQ1tW4ZNv*VkMvmf7;<{Zy&7u35WFv(&Y; zwBB#hdzG%%Q>!%Be=^6LQ~MrI*`#9nYhmry#4GQgWmyVUO*?C4DsxT)tvQXi)vH(wNOBUaC&2 zytDbl^PQ(wJ=cCxv})ClcWLU6=FPK;kQDJrDRjG%EOF%KT9+3c9rHNa-#q)8WqJ1O z_i}rmqBA@O5mpga^=WgGMPG_c`YC^g+w=LO=B`}Ti#xPm=WfXI{rKVT@%>6Lsdg*`)i<@;Zf| zEn}W*ty(?jyJhIP>ZvhLLqkJ@7FBbW9KAL3R`rypUj4QEy$e#76m31#aq9P6|2G$F zwtcCJ{8hPX(Z81^ZEvRphJ4sq_Uz}s_`-+pB{#2{@pr|M;G#Vmw*qW3>MR0ABp(dx9y>EN{NYq-6FS*f-!58Lr;Om^fy%>u(|#~Ts$Sb=h2tv2bJ@G zF8%iCxWn!vPil{q++Drv-QA02uOGhuXk=vb(D$HpuK9**Uo?AOv-za* z^t_JQtFJFA@z-lJ-bh zJNKLq4>8*|vv<`*%Q<_6R%r?^cX_$(4$#vMDc^+%l(!uZ&`hK zJ?D#yujj5k^`9X#Wycz>@Z#kv`)8dmuYbSsMR*VAUip@_ffMbE1$SHj4D_n}qsQ#> z_2nOzZz8uhN4~OE+x33Q=fm-4=lnix(&E%y6@JSlZu4>Vy|$;G+&u07eEA-$_)k~& z&#dV`E8`!Mc)g<5ynCH|=Kk&H)}FonpW)o4JHts~2JURWQI8m?@m zc=OBI=sx;2yZ@jnk9hr!m{Yqr<b#v`od)D2woVB*>%E=JeEe=bbO#f~OzP{T}-AeaO!Ji#r!oiZy*pN`5)% za>#|N&%~qlOqw=n;hs&wm(EOd=UP>%($lKye<^GnAj*^&nxxI>DT;U>u=tSZVmRo z6Z^GUaqGh=UH3EJ_C>Xw5BZW`_T{NpROQ8(6&>eFimYc!_1z0vR$Wx;IcwqZf0Htg zTEEQF*m7TP-I;Yg-{S9Hy=JTNQtIi=&`pLD&nlUheVHn^`^}-Z9QjuQHCF20*qPxd zVqzGrv2fY)-i?la$Bs(ZOFuZa)y&2Jq`~&=S?YAEf z7oXq6Aw2b3cktCf%>_k^7G1qkVZ3N@)b*X^E+P8HK3~quUtGg$~vangc-C|?#-u2zm z=QeRC2d;H9>^ME;RmU}@^;$Vk;^KAxGjzTPS@7$&(_@*KkGk1amYZBxho8EVJymAU zRR6xEt9O;WzPCH&ql=5{>z#_z?bm*IqnZm;vH@e4a~?%6K(RT~3? zZ#{L-y=t|p)L$rCV7;IBiM|DIgY1?s`oOqmasmV6s@g?!r%IGdU)$9)>)Z>2-1O~1 zpCXOxy)1VLTO?tUzDcSN=6=Ip<+`)1Xw_m1Yv zOkP{UQ}gY6zPc;kjwly5w7ZS*!FzUaY+EOj?jDxBlYgE7NYine}o>aH!Y!hnB@g z(z(|EmYVK+%j9+A(YNb2b6rIBLT;KxmjC_YvT4!`YvZrHxAbp)Y*(4Ib=uvSBY74} zdP1HiXKP&5Gq63q?~e3oY4zUyueC};^RC-vSFFejouu~SbQNaGqWWL@ zOl6JwluFqBl_Wt-}j&4#GHSbN_q_SFH5C0)A$?W*7Fw`>P`s`S+wqM%r&j8 z!lf>up)M}Izg8`hl1X}UCA|3ljjj(1y+T)6yJ>EJG4*Duy<5BAvvmHbjVrG5hWPwv zuv)QvLDBYKS<*FzmyW8v>Ug)Q%Bg7m)u-QAO$*B2o-(c7^YHw%W!*`WH*O5Oob=^7 z*Na=7zpd(b9f>;CwrcU5zK~gqT*8&7%B)!DJF(2S)5_IC!_~3uNnLtc#LLHqrG-=N zu6la;U-RAmnc?`>;LwkE1rKU}%31Z=J9Xo2$@77sR_o5*EpuC>_O5u&s*c_)tyQa( zlvYN}2`PL3v{Luoy4y?5e#MlXI{UcqZNai!*JBIox8&r7cGau>p7m^Rjd;ngmDAe~ zg|7SC`u8>Kf#kvU&S0 zx2gXbx*}rVg{bC-*0+B(h?9GJf6*3wf%d%6zk)vB)%CR&?NZwr7<_-%${BN6+cr+q zt~C`YT%4(?lw)YP|K~PSL8G>&pdHw4v ze@#DhA6+~1)}MV6HPcpyW*pKAS++gPRb}eivZd0W?saFzs;9m2w4G!2{NC<_in7K? zmMLGlC*DcTS-J1E?7WH_YkjBRazArjJ>>TEdJ(5TUe<3iHuz62JD7aQ<(W#wv-xp) z#Y(wn)=XM9X{Pzz;N>Q3Ke&E~*S)GQaKotMc0DJ5{n>fhA1Cb>&oS)ZbSIvx@J}A! zc8xQ+61E$&^TVTa=XI{$bS3P{rgbw1^0h~|9Q<h?0<&J*~|Z&+Wz*+j^v&9C9CXL%t*c0uD*0nvbjvy zSKUnur|NE7B78jDW3y>*xLbe8SB|Syi?p@|T87tEY>-m+w*Jf6jS**dXdoNb3ycD+c!tK|K zyl#j_b?*+mbUvtamy*8L+p99YmlkqRSyv&RziI!?-HzP{RZ}HT-9L5r@xN(( z_4EB+)_asqF4!uR|0aufQ{4Q!J1$!Pd-<~AbNqskfAeq6KdfVCGqY4@|GO(L?|&~} z${cW8yynsNpY^voEdD){`_C|g`M^56%W~IR7I?SKd+B>pY+>cfcQ<8?f4M$+ktsKS z@1wq{HulBqw@jSr7uazodzD1#tKX`t{}yY^xe|JFQ+iT-qx>J=ui>JN=wFzRch9C96W_$dd@6E?6EtVzsgnOU)y~JmC zl#q+Z`m!hPPncj<@NwHq2Sc4ddPJ(6*IdA3e@Zt}K0 zi=}riQgvmm(NysdTlco8a_igJsq3;9&sw=lOLOY1_@nQ0TxYlU2CY9*Z+Iv1X6T`F z{~kRI)vaH2`SO|hQEEztufFCtPrrHd#LDZ*!jgRpTiS*8tl1wW94U4_&GMM?i<`OT zmP^aes!UtEZPJgq>!y6;|FC%R%%1SueiLtNt$z75XM^gk$I+!t?55?u3s=taxSo3Z zwQ2ZAvzI*{w|cXbqpsW(6i#t5z1_I4{$fvhFURWKw~PKpo?83%eSFrejhlb@*m3LV z-(2-2>+P929c!QEcWG&EbUkCHHce^PYS()@$Ios$lNR4KjbEN!YT~Q;_I9gYE?-r~ z!1Pm!fq|i9=C!4dXT@jdmU-82dVD3nTseJbxT~l1+;{FCPh8^wTK~I8_q*J*W8ypd+w+UQ z!KywfU(XFLKf}}3=2tsi`E%D=qVrEE=VZB)xi@oHY5fj8)b-riC|}l9(Fv|tZGFw2Mm3j~X!OWj+-Yo09sl5h%6Puw|EYb!XWO5f)iYn{Zu({Xb7$Gymv;|eFI)emFTLsgyVn~h#u-=p zw!S*G>V@*eeLAkstLifDUghz7I4OD8^fkY{vv*$GHlJ_#*|*bU7HtaixaOF@Wcnq! zv$LME{Ebr{qJ*S?y)`vK`t(n!Fy>ewjnZM;xH`5h~TBrDTEmvFnYHIg^2hQ!+ z3zi?8HY4-OYUNcQW%9c2M?7C08XIzB*5>t_o+~Mx+N7mqd7@)Q$EwbqIy2ZN6b3Gr z`mruec2@HBUu|mdmMvS8zhtBBYp%CS>iwa4cSX*hP4Zlx7JKAjcH%3mhz<+S`m)UB z9}*a9beMW87H+9qRkr4%Wma}&QtiFd<^5^px%EpUU*3DJT=RF^UeW&yd!Fq+E6ROJ zGk;6o;a{t7i?7PQ|G92UlEl~ByFWgCH#^w-o$t1H+i#cNpIv{@*nscq#Qv`MkTW{H z6-T$4eLi%rlKaL>!D*GxZwl8=GyC4L|6o*i{f`_^H~qEOw(QH;7w@v-s@G}V6t2Ed zm$(eMd#mQw{ONqT`sgAxzDquP-pLl7Fuo^W;QiL9=yKe~*R?gCyVjkVHp_hbQNbFS zc^dO4Nls+>7WdTeY_++G&{O3lC0C{DlXK2hM_sL1v!J!V?CgtJy|B-ATYXD;$+AUTUd1lEJwIBxQBdlo=)UHd@70=b_bpgkh+c(qrZ zyOfI6!xqUk>y~Tio1LmUmHvIo)k3q3`J0wo%XF;Rtsin%)W%EVe4&N$8M%)sE8TW+ z?-jX{e^;=~Q)2D?RazzY>sg)tbUVIrz4kqOed@o-SFfyDyE|EI|5fWb!S=HvR_XSa z3VmL8V)xz&n|!C5yG%3>jlI%$=3%C0R$9W+iXAUL*?(O_Uvve%i6>QVO`UdYvB_2 z&`L?EQhs*pA#Pumuc5)NzP`TFOJ_yK^rrY^ zs-$cG>Nk7ePh9wSX-##^k26*XxhTpo0W^!Ei)#q}zo<&D^bM}kFkG}kH-EZ*7_Pg{q-?HAV zen&M|$NPKdJd4Zon)#^6)8uyUnV#y1tKsIARu(6#ORMcm%-ilUYN{P9so&0aOuszm z*vX8hhu%&nUSFJaWzmTf&qANyJ(D~!Ftm1F-n>k1n|GP-^H$3yb3fGMTK7&ieDX@Q zNtwF0_r+S>z8C)TdP=0Mo2c9NjEK#bgQ`O>Ebo5s_xbkUZ~QZDU-bEly87Mnsj?}W zCZSMszOnPvxo@r$-@1GX*L$^p)~fY;>q8!2aX7U?UZmIkxN_*atRI%*ix$q6O#JL4 z`nJNiM*i8%Ro55J|B=2e#$5MIm{9hd_{|zy=1+YX#J~8>n@eerzA@fjbYi#P=G}Mn zx+2zA#q!GJyX(F4TD@5H?(UMXRl%EAef6E3FKYgMt9PeWuh4}ZYs_Y~F5ma8Z_>m~ zhGn(3^~!dx=vEZ+KCf7XA7qt&_RCWdi~E}A#D=l37aAeCw@elQ!>N^Q+h_clo(hsb7*0#$8!| z-aGpJGq+v(H&-8-;DEDD6J=`A6u=FdM0$y+7Z3 zX6{}yUH#m({F!%Nq|7{KuY36Mrc-`?oBWKr!&=s#ue@uzQ}x>2o>f0fN_Pis`Ol!a z)GsV#)4t2~#-S_E{K(GzoV)+m`aaW_KYnV>H2ktNI%!^)T9K03%r`X|a|QRT{?Bl@ z#4de%jr_cCzQLy!$G`0U<175z;puDMtz7G?wk%YCHD}?cCc8cAjxX=7`(xq!_+(Aa z{&%0P|Gj+iZ{0dAuE_Lx5f7WhbS8N!Ph8WxV)p8(pdD{BpR?CDpFYaly^Y&(^}5oM zD`KxxriyMgH5F1R3_dPv8+_-xWtDQE#Hv;Mq@^d`^1d}Q{>akMG|6WF;G6?WRmTH^ zHysVE4~Z97?^d|~>e$}cNBP9VN2U)wHrKX8O?=`_djyF z+Glt8(<|3wOn&=hKWUcwR=@Jy_7gE{C%t|0A|YPv;FIS+PCl4zT=&_LQSS9}0kOYw z+jM;1z0NP*Tvg@!%g}zk+CAPsHn9)pWzALQZ$I#4hk1UQ;H&##{~5%7>lYbJnj3ku z)LJ+3T6b7~#9pP1cmI~0*w^iLJXhuQ`}kK|ZSL$pT>8RiZlCPLne7?NHs1O=zdrP3 z`u0rUMJu<8gnZhXROa<#{%*|&Szo=}_S$Evzkl=0H1yQ>%{p%i-)Qdp*f=rZb-aMd z)(MHFe5tXspNGg)Gy*&q<-Dmw8h7BMYjE})ivd1<PHE*SffE6%-T{G;?vD@K&z=a@d*YJLS_Rz1aG>uD{MWVA~MQK5wtzo|6+_`8gNNtX#H!=annAweM=y75!&8>+jS)H+!o4(mPqIAK#}G z|7V!BYL?z@`?Riq`3JtZHyHRWv#Qd{e!Tyu1l#s(-skNrKH7YiTQ#fiXGhAEa4${e zs_o^+)`!+7Z~K^hYhCiJy)xG=#Y;k+FRRLe`m6Iy?^(|1&-#5axWs0A;iZ4EBAxbY zi(2i!s@S^SQuq?>s}q0o(6RpvYKw%TmH#tbsGs?dZR6wI{f}7l-?@LZWMIy)_+X;E zMSbfhUELjb3g+t7i0%~CzUyDGZ*T9UdAF7H&h@dadpj+pKK6U@#E7fD+p6B5p8Rd^ z$BW^I&$0V9Cv9ErJ?&}9yIS86zgy9Y3cX_e*LqS7qGSF^3Bdi7hGoyb{Z zC>Zf3X-|Ed)zAI9;&p#^y|t9{m+DN?UcK&gyjl6I=9QIvYf_5te#*Xk>2LAu#jCPc z#oKhuet)X#XO5Y%+>4Hrf$<}vrf&PajU(2lWFiO+li|~ ztrmTCE;#ITm}q8jr!b^PvG3a@XzwOcau`X=U{TC;6cp?T6x&kHsR#zkc==)N$IZa1vkG|g$T@||Ov$Lvbs+HC%)6>!y&6Bsqg>Nsj zP7T}X{e$Pb-dW+rY_n^VRj=RqXf4kyX@Y%@~Y^GzOdtSxBiKL`p5pU#Wel4yIE^YEuBKH zT#wO|+j!MTW187Ei+gh;&pcnXde(~fiGt#(L2K4rUv;PGy?5cZt5MD#?>q$6Qy^(yGu>+$fXqv1m^Dhm}oF&Es8`oiBOzIkY=9ZC;+ z&zG)At}nBEw7mM_KHe&?BcX12yS|tu^R}Ef_!^S$mb=<6)4O!b&Tsj%KD!%z6xUnX zd^+oqLGO~cm$#eNckR4du=du<6*XGV@^{}~FR519rIKHIs{VX*VXe#hB&GG0em_I+ zOj`8S<*w9!hE-2}FTUNmSMXX+bw{t#apO6DJM|)-1v`o!Yg#;g>bX9*cOB2xhwWXx zJLc-E>!yKK3!nR*bvF$R6ct~z=;yTLF9~0*s-H7g#_@(K>Fmm#6&}5E@%_4Y(^68M z>*t(bX=vkp>cz#C?xJp*_4%>Z+9g}}{<(kPf*G@X&{nA{S||73Hm$3fd-?aJAJaVC z_k?_8c0Ba1@k!<0LnbS7XU(t5%F7E~y`p;Jgrobrl;=Hrw{qXvXYoo-+U47SNB{0F z6I>p$Ip^hF)qfAAtW%%no0$CmeK9mkeEn>JOJ&8{e;3ZUbm;V(?d30a?(cWbtUq7O zzc3*yNjzj{)jsdfCa0C&a$M`_4}5Y;e#K5#)q|JIFCO%cRS5}D`@JN0x$C>#TVBjr zb=CFuy4Sm=b>CcgD>LQsvg>8XwG*P<7AIcW@;Odpdfu~rlEPEBZaMv2YOmk&$sRuyrchHJ@odU={%eE zF9}?>=;hXnswY2f*Sntae74}M@M%deLT68!RU7+rY4smrTQ-ISo1oV+G4=&-XFM~q z?45KpXIfTD{nc8hUnjgS1aqCuj;Fx%B#axO9f2z{NlO&Mc28v zK5tb|f4WyRyH_PJNIpJAbOHX_u#ZYPt5h^4E21e-^zcs-1N_ z*_h{>sm$HEx5J+-n*21^Npg$%9xV2oKk@nW6)%z}%1j9nc&l4`$;JQ0 zgYJ@W{gAt-H%sr*o^$0@(%(gUs_P%$oqvnp&bK(FT>9_HSkHtl#cy8s`s@APowv5l zB&7K6ldg_=muGc9ukWZ+`t(opYuMwNY2Pc~ec#=^Yv<|HqB><##6SbG>_2-0Nr7)6oA6QSMqZzPh@U zOt6ZKJMlOv@401}+ww=tw4+x~$y?Vq?XGud@ye+$WpX-qm-mImPqNodIAv);kX6F;8juD{yfd-7SI--`VcXFS>C^U5vL z*Om8ifN}O3vumF&8EyI*YMmKe`z^`x_31x+i*6sDwlnnRe$SH&s`lLu%2^#LrX8>1 zarN`FcY&hzvi}+08h$s5STf1-<*SwIt?#-bv=U2ck{2tLuv~y9GsJ4{^z`}O5D4r&e7JZv(|ph*}rXRP4}7W z#>aO*ds3A*TY0L??N^s`-8N2*!GY;MXrD8(YQ^!>ZNBda{rrl zXnWMr?jJ=(tLnH~?6Um~SIh}rm-;Zcz`0Kx@Ky#J<{oFUgoBzI@{ZHkF z!`v06cAW>*mRr|u-@0}Fdtd4LBmIkipZK*n;pUF_X+I)f2g$#4<&w|5m+Q(EWLycHy76rC+}AO#2#i^kx{lvZCwv;&s3O<+}PG zIbUM$WzqG>SZ3J?gR|_X^=~}Q4*hcVW3V@`X>?#&xT{TXwu>{uY`V%@cmA_sP1=%bTpim9&?4+E<2GO3hxSz0FNZ zct*12w7z|_WIZqcx$K*j_4J)W>A$O{y0S5|^VYU4J?pWgK6cN<@;^NJ!KQrO{)Swu zTU{=eua;VB;`JnS#l+y7F8(I>bFZH?4}R;%8{D*HBo{DN+pQG-jx%X@K z;pw6G^iSUUE0sBKfll}>nMEhvi?)RY-O0Vq5gF_q>Z_gFwoHAi%t;AwGF+vlrFW{U ztElVSFT?9^HvPR>pP%zLt=4DTFPpB1-hH0NQ%}9lwqDm8`uEyZ-Dp7@LCH-OIT4=g z*8(Bgt>ivrh8xVczjb*u6(k5Pe{(wf4iqn&VBFFe^z|y!Kt3N z&$|BN@9&e#v+MuQaQ??N&+PX*w?BI)?`p4i`^)Y5$Mg35F1@|XP4HIz7H`q3FHbb| zPc2o>6A5?zJ9Fj2@}hTXTQgs; zN(c$PTf5}lxAOQk-47q+zFf55-D#`j&6zn{l$VAaH`>#7tG9USnY8PcPjAj%_hc5%YqpAC#37#QkVlWG<3+UKdx|L}FSPV!7v)?b_1cX=Ey`aUsc zU*Et^4UT>#dX7dA|9R%ooSpe7o6b z=gM6>SIjx-_e|^kMY&aT1G%-tF#WmNsc^_D}e78e&_?KDlUMei#`YLqOOgSM~QFQN~gyQ;ggEP;t(DriDt@>FK0`itk61a{u}WOq7d)3(+Z zTO!UrI$yo}@;1ItQM)9vAHI(|de>6sT-vF1|JLaF-@B`|%u-q>w_2tzdvZxg?8V@F zRSH*pZ8v3IW3M=76rHO2T>gZ{(*-*&T-iKNYKKbJ#*aH~PhAc9{=2K-5%Y%2u|KNL zWxxDV*LQr?th99{+p4&J*FV<1$-7MV@}G;J{Cbv>%*7pt*1Zn)+--3;a%p*bU6|k5%1_rmSJd_Xn{@5|R{mJi zyjAnoS%><@iV3DnioJ1jFRRM5ooBPwhn0VJxwcbydYMPZsy!zrly!Zx{AhWkzV+Cw z=_<$H{8H@>IdSZco;mlK(C^zWfA7y(>FMv+-@92mYPMCR#I?m2Ppk{Mv16XZkK{u? z>@H@TF*Zal-1K-`#Lwj3eOI;`=|`&1a(%6GzI@B`-K*B`6cp4=`I+k_RGPKgu2blq zamCE(=@C(tVS(lrn)&C#GGo=IgkH*DoqMbPu5MjgT`+qd-?IG{kGnQq=qoSmh|1Jm zoA>X$O;6NvOMCg-TUYJB<6l_(l;_)m@RLQ4p9iN*6qUKXILY_#nKm=^KeO6iPd@f_ z_C-0vk7ipIPCYd1pXTacD)-MFVGRyAgqdRXKnS;o8mW;BlcGQ%8uB%B4Ez!H|IWY+#xmN%y0JgrQ&L@oF_d$>1p;?$ak+$ z&gI!(YQAvozfz?CLss#ATz&n|ZSfEPGi1qfs&5p|XH@y^`De0e{o92t%f0hfgfu-5 z=Jnkl8nh<=Ls#76oVwm;b!URNct>q`Qm<0!rte;zT{GvG=i=V_{-3X}f4Vbwce2T+ z)v}MA?oQCrnj$H?$|U8U|18!pkNamOHmv{cktLp3de7QD*E=zM>$+WurCVNf)$i7x zDx_)lCp=^OKh}F6*$^9Hjq90n7i@tys7iP{= z&bjh=&%SM3-CkMI7x#Ow{#3Ve>ywl>Y>!E-C!o8tYrL`hcHlFqm4m@>D=hW4D-%GC9QCEvYMNb@CwCdCLoaXL4*3ajJ zUu$cx(%GIfpTDtk@xI6vDQnzJ>$flOo|h47UwP_kuVC=Ec^b1mCtdAHR-c==;6%>V zP>y%u4yShferA0z>RJAotA9kzZDs~*-s0)nz4Gu%H}7emcEx{ppB(qC?=??Y{EXnc z_j)eBdGoLS`B~}bEoE1petRi#r(59ox{Ycl)-9YBr73Fr@6xH+{~1`!svWDnOb*9p zEm+_^XU5rQwX;rXA2MT^dU{jN$-ppktyOP2*179X_UdChKKaMS`467$_#C=$$)x?e zyw3gG{zYlyZrSPK{a23{zS^&T`iV#Fj$fX3{blo`KD~Rqd(&&RdUX-rxkB#c)4ikT z-IREHHRAqfPsNbixj$nsii)1U?v!yQHn2a`#MU6!W!bJ&iM=adhNrJt98&t9L2&Nc zr(Uyj)_r`MrEaQyefQM0PyAfV4Z9BB{Cs4~jkSH>J09FPwl%3zMQ7Ie$w`sAwmPO4 zZF?e~%$m1-XARfed;NYZrEff|U*8<_?&j2V6SGPEmp5=-3JY$|`dHtUz4(3JxtAs9 z`OIE3Z;s%M9NH@?%g>Pk}aq36r@s2@CE z&p-K`snxFD{|w8xKUhrf*&W+>OXiownw{JIL>{x;+V*v+W~};I{j58eYIe!y%;?>h zvvK-P&6}#Hr0QL}(n}*|?w(p%duq?=T|eGlzE|dOATP%0mcrH3e)6uOu9x;b4Y{Sh zYwBwCQtRuJEGDk#T3@v{a8>8S{j=V6UMQ4UqsM1m|8>cNCI58)?Rt5A;;F@)SIYXW zC7+y$R4R`8?)F@1k>&2Z`$x_1+Rxk&+x)kGN80XJa?Y!Et*%^fcJ)T>UCypOC;FPin*2cXu>%y$eUjI}ts6XoZzPYw^+q1H^^O0^>zIb0<+wZpR ztNdG47n@e}-TG8UD2xAJ@?iUQ+fW`s?yNj#72mGRs${_)hrr_UKdl zWl1x($lrc)rSLz4*{P~d)o{U_p-0@ z^|WKh7OkGMze!1Jev$ZF;d7~%*VS`;ReQ?snX-9b zVY6^V_x7$u>t`|+%C62{GOJqG)q0}d)K^=+cy7{Ho@%?&EM9GS{Mo2^X?006_x0Y~ zDqgR%`K~@^V8m(diys5_p8evvcT4dkx3{||-dWK#=j1N6;|mObRDC$GOM+W7(#>|w zuJ}8}6*>;GI9UY)!rGQMoZiu|XW@2%W;ZpDx4?#X+zHpWe_x0c%f z$2@My_El%~z4xEkcjt7}hPzgwKFzwva=h+~?1)uZcKh#l#T9cG*SHtFTwldoy(v7c z;_q?Ig-fT^)U9fp7gc{UVRcrqk=a?1yzJzuQP=Fti{9-1v31o{2hKBW2QMDJ+M6Eb z7nr$PWmk>Q9kX-6OHBi>lt&f)IoNbDRrp55{-&yUAHPE@U+THtA9Gn zQ=J2AFIk*W{K~HH)bi z*r&2pCuzA#-nOg3u1fD8?hTFcnEhkXa(~&S+h!XrZE2PC{Oz?wD)!BM`_i4&r=yeI zL_e*%k$x>Ov+CxY#RYY}W<__xd;Am%(!DSJ&Dr*3%15pL3`yUQYfrSlwkApIAFs)e z>D3Cx`#;6swr<=QzN^{(SY8-s?7kEA&)tPz-Rl0iYo5xVtK9Qc5_ilDTCu;$^Y`5A zkNVAi)W;VaPSt;ZaDCO5{cQ0&o%b$@y0Po)v9kP%uGCp~oujtR;@iDdVVU1knfved zzO9-6%T+JDXKj|BTt(d3qGzWjhDN=eWY!s4|Le+bSN4Bb-~5xFR~PfNdg{5*(9pY~ zH6hpQ{}`NJuXW?4-n>&k_aA=bUD4dPB{SjCuiySp_6z?=mMklnWxc8@a{lKv^(%fZ z-Sk%Z@^YQPb2sJpKiJdJ{X=s?P|Sk$vzA$;be2eEw$r`mX1n-DYmydQaYDp=Hsx z>4#$W`Fs_-t~{%&tE>B}sLfgSx9_f%ALDQdEwpk`hT{+pZcF%Q8>5p^uDRH-HPJQnmm2~V&C`r!YgH$rN88C z3y4koUN8P#yZUV6w6KH1^S+z*Bx%oi8ar{tJgp^HzoeT;-f=1XJ1^Vy*xZz@FaL5c z*tXA2e`91+f17I7de^WZcPmTbRpo2qW-t4-{>Zh=Uo)44izfff%8L#-{Qleb`e*+c zuDJhaknQ$(VC?(k&8uHFl43E>blLpp+;~;wspi+;72O@_ogWhV`puzN;cuTjx4wTp z>7%|usrJRw4}MkqU;Px%THh)9@Ev=5+uHu=k=5E4i|gg$nVqe}f1FwI*uO`o>9c>> z&y7BH?vWc`O#FRh%0|n;^elDXXZ0qte|)On*&F*a;9BRhR2%(C?#dEJ!YxnjRt~fY z`75z+sc!D`FM0OaZCShLep@-^Lhzy4C#~l^$&ToJwyt_s=X+DnQzjaBOFVAB3@%-@ z;+2;SZ-L^9y{oOB?bs$S74^~E`th{ywJUnVCS7Kp8YuV0cbezC-tuxGE$yk|rP+b+ z^B1jSx2`w%QoZ>*-?D`V4YN%5Zd2Q|U3q=)R`KfQi)O`hjh4O1`WpAnBqejd+mHF{ z&fH_pv7Ng|J;FdbI&t2+HC}((9$i~x_p)%}+V?5(@61zrJD;4m{b={9H;k)8R%)I+ z;hhPhIRY|6T4m`SW>(-Nx_}tDbgitzD3{>izD_rBU^1{~7oqCVV+iS@@W3 zX?Df7tC~|o!(w*5`5OB9-nLMcPpxlH{uKPN{iMLP6~1>KY<>OS&HU%y6;%~)HXoVY zQkMH7lsWlb?62O;l@q&WYp2YbWI2ETM-`T!@((~lH-L+l&o!)%BGX4E_ zQ&W}t_u;|Y|M>Qp_HVPQd%k&gz~tI#?$J^6KWc^kXJBS)f1muScX~?l-gyre|7Te3 z|M$gWBgN~hV%h_@YReyZGx<1Iyt4bwb@gR8#b^FrefRN+Ya3%XRlI$$dZWHz?``Ay ztqC@153g50EfKpNy6d*eA0KvCmk7L{UA6exxy?q0*4*mu35zu1_TBb7ZO5?< zS1-h9&J6YqI$HlR`*D?a%>1T>3uZ0;lJq0#O0U=7#HCBmZuE*&d%tW`WZuV3x3yNi zTkCd~XVS5&v43Yg$x_lg>$dE6M1dhs$GO1YIxkGNdvE+Je0jE>YS*omIWwNwddl+d zYnv;oyu7n>bJXm2tM+9*4Gq^?wQAL>mG>LC7$fUFqK>@S>fQRMabx|?ldcoub^VIm zA50CqQg-S;gWi@Cd-m@=x&Pg?jL_+q1h0APRj#fQUb4-q?T)dvoXekEpH8UvzTFh9 zxU7crCC{(3rOvMcm0w>}E?QOX6ZB2)PsHt@uK9`gonsl;&Nxc^f*fdflKg)7`*0NJw-4_FcPkes7NWwL(>-4P5)??xRkxMO8&x?7+^tsNf zpC@_s%cVt@p@Dr(9y`lJzXb}{Ui5czjV(L$L3wKCx~+G1bX~sf8t0$5C*X46^BZqj z^r!8csrhq~^;VtS(D#9B%5^T9?m5x(UU+t;=*|kQQ**ud^=#}|_MBU9*)|EWeX;jD z4>vzCxv*{3%bxUzzt`^iO|9!zb#*D%u#7nV(=xFB+^ZFPR_@;R%}=E!{$=-@&)4>w zZwTHry<{3!SKp(xT^(I(zm&h#H_G3xul9SVLvCy>RdHv$ohJQsb z`E#7AiuID_>*`~EcRQ>!)`SzuD zN@Xu%9T={67BEbn#Ozrwl6dQJpKtHCrdP}x_-~3+xD#K3s zp=z||BljOFv%fr-KPtL(<+bwoFRy;OOKF`9bk>gOnEmdZ>rMN4M<167rPPP~v`;zK zeI?k++=x5WRr#mQeBN9aKi5B%Gj>l|6KQ_&_Vrgh!Ca?I!XAe52wjRty!?q$l~SO`Y&@u$|t5s$`|yOz1+U>h0G_{_wQAwAKfkW@B5P6aLYhJ zn^3>{+<8fNmTb84_ut-$zmy-?9e3tzop(8T+UrSKvuh?b{SN-LJIwdiN%KqYT>lyL zRr&R2-|76P?p3sI>%X~yZ~nTKG6ha+#?(bI(>0;jN*QFP*usnKX5M@9n&+VR=`JLuK|Q|IplacEzuq)1P!o z&zP$BZc+FT(@h@hL+;oAUYl$`tNOI~n+K1=9^QOfcXH(l>F~P4Mz4(zBndqZjLS^nYz`<<)=0x&PnY%zJ{<_vhBnR(*8R zH&WXwcXzz9=-K$Aq9U(}Ay))N@H0_g}C|aMs>+@D~-#bT( ztKRPW%js})L&O_9y{;pPY0KF!E-%S6T@kv_+;2@x%5FQi#n0w;?vgCeI@uGwN!E7d z?UZQNd-1M+_6jZDw=Anpr+3}$?~@lTn_B;|^I+}o7M@jo^R}(CzB=jE)l$|=8e(Fn zp1nOU{W#ou;@i98d8wegito>qE^M3m?a-@#T4%+V9G)NU9X;iIQQIc1h&%n08hf%Y zUfQ3(a+mc)!Lsn;Rg1Kg-k#YLaC6S8ZNcI4L59o2xL$dkJo%rY^glz@-`&g4FMYrD z&9eNSzIr2xk~<6ad`q{_x^y&mw)~Coqr8683nOP2{4QEC@y0(-r#H8Slke}&NDu#X z{nF;r7dK`1yiE=i+%su?_t^rgI==Up4&PpS_>b9_@T-UYBToLT3DVSfJ@Liv>Y3;E zPnxs*;GWQ^%Kr>(@@WOrzVDt@FBkW@__me6yqKqYD_4tczg_Pfc;|y`P2PWo%P}h? z|1)gQ`p?kl(|WAzPDr^7e~9_-?5D!^&%W0;`lY|vc0fC||L6UaGS-6MIu=KM+H>0Y zO1IgJmtW^SE;&_H=kcJgwOcjh)z>1GLZ#Zc-q7OfDcOPHB`%@fli#GjF*sgr|K>{N zwQ^ZD?=_(l-c43g*)rpBecau-yhiJ<%?u1(KmT}Y*ygm=Q-6uxc*wr=+v7)h{~275 zuH*Z&ec4p|_i_z>rCVp5y82mb<4WxnW|Q7bR21LoW!SI1deai?#2@1S85D2z?CS0f zTy1ExX=&IliP>+WUfPMHj72nps+q=%CIQCIrmi|QNKj8&es~%cMue(wDR4m@Lyw*9Q=V|Jpsi*ed zIqQE^Ffh3EX>rWm>&Xjq!YOLxu7)lx_e;qMAF^LUcA z^=(mJpX-YiE8pq9-o)PD{!wzd-vOgr|Nb-B9nqY4F~nEx)BW7DA<0>y;j5SRhE6=S zw>;ckY2ByQ(d%=Moi9lL?aa4#X6@3&*Drqm{8c|-<(}>F!6gptR{C?z7M*=@tG0IX zZ|hR${ZsPlZNA7gn@*~CyCk#9|IM4PdH(`z{q52kx2?auXwUoyRlx@|{<@j|Jp5G2 z;8Bpi_v*{9>gE13=q=2gl%_y8P&Q}pyK<@rF(bRzYMfL^5vE9n??T_ zPCtJ2FRk;j&H61xQEv7sym@a6+aiD4ZGO`IJ?!4|Wp_hY7A(78|DU1%gPBYBk1Ln8 zdXpbI+a1rivFUpF&1a=L8MD`HcANVq$N%fRW6M99+pJoXnVfNDx~s*X5*Q7L-*RErhPA-tXmovsn9noeCO(Izw>&Z{%4puS6Dp7uP1X_@Ga~3 z+$(eRg-^fz`OWUz&Dpiv4#$hu+g_U*t+a8?)OA@pQ`XEpu{&=yci-(TJNvYmn}7L< zX>PgtZuX|@lVjhM_?#9FYGn_bwRhJqsm#b@|EyJ=6Sm#b-!9cD)7#rAEHO#zhf=lI z)A(;brv;ZjVh+D%a@eBkigizMNvi*gtectt8CWBQ#0*#d-0@{?(@QzcrB_z68TZsD z-+03@XQk|>yS&PRwzu7`I4fG_=59H=s$|9D7tx%hMDzA7vKJ=A>opTX^Pm(0_*b@6LI%r1JN>Z@1k_ zT3A$lQQl;${Q2oW#P|=KPZyg~R-PC-t=4qIzP{?!vwly#wJqLrXUx?7fvQsjZKu84 zZP;;5Y3He4*P>OYtX8g(*w>LXDcF0wH{MAX@6XOFjt)8Iu43$XcE8px%c$#%^tImX&e^SZ`oiH7?Q^r& zJ-SnU>fC){sl2@&R+D!3?d?*3G~fR}!^v==na`{yeh-Y&zdGfEdG7wC$(G6SCnMIz zKXR|&D|##Y*xtc7ucV7xtkjV;`1|dw%4f-H{|c2a|CpV9+jaTgrgv z`yYGVnfY&dXHNB77jk9qOU;^#hmE#=(OuMIr5bqruG-^IsmIFxWaq!gH9x%N-?UWE z^`-f{ubZyEs@Q0$l)azbQ+fL5mikq%m!6U~-L!1e!aEa!TwX3I{~C2AH1wZ`Z%j#H z#GK^U>tFZU%=vcxRz_w7Kda9`6xZ2I9QQ5P)XMde;vhSb9f18?z80DHC=bz zO5FIES}$B0|0Ll@?Nl2%v8`2m<}A6sOFZ8C56{`%XTr3_{d(;(UF~b$ z{0mcl6|1!Bv2)*E{foO;rzY)*RczaPu{J}o>iblqy24AxzAyi%&%C{NLgL#}8Lec`G63*V-D z%-*W?T6~sk(vQ!szEXzuyF=#Lg^Az3oE*JBO|RI7Ecc?co=Z2^v?;4`rGFhKP+lGe(P;Y&Z#4{&xLkgy8Kx^+~eA| zP`7_J6LZ=X@lgo(U;a(2cH2AMFCX9jbh~2Hn=MlFBl>#&N@MYV)%BgPw+pVyEz``IIa^t6 zN$1-?Q#+Qfx%~a!V`cu|t*`zwFmEso-!^IS&NrV=-~PKbcIW*64AtEG58PTD_&aZv z^*o06z5i~#bU6Qam-QbW8+*`r$@-+^+64#o|3=jB6q%PEHFrvwRL$b;>YfR!mp84O zHScms%|u@*PwD-yc6X`0*ejk|r2niVA!YTA-QF+v?x-mKcK^c1+ui>ebYCpX|NAM~ z@bCFOU-tJ*+IH?_w#A>BFMJpr=7BGSU^1E9w?LtOt;r?jh$Aj>>+V)5tqO7z{&jT4 z%w@i-B;RZbeg3OI@>kH_G?$WTU8UJU^KKl^nZJ2?uhhAY*{ihPKJc2mcuwT`TjIy& zOw*2ad4F*&&yG()hSAb1KiSMu_m`P^@x;-%ij_0oy`5XPdCvQLAwD59Pk;Cp<5}JD zCpG_9_B{rcnQ}?>QH!%r4 zohmo`{kEgm3#^aU&hC9D@?o#vCgsFt_3hiDR{7=L&0CYSrqtxz=X;tnm92g(4y+O7 zs#B>uxlZNzgWG-2ULHNP&7LfuWLr-LAP@_1)$3+2>mBM#&i$ zc0JO&>+?r6{#VXU0Y)B=1_lNO#*X_I^#?xH{Nh>nwB?aG&!Va8Q^dPw+uB_Hu=Pz& zzT3HHIvst<5?5WyLy`lllq3r#Ph|G1SFY3fk-hn2`oi!vdLOrV#+>`swO0DfE3RdE z8-3oH*>bQBj6Z<|C%gnZ1=Pwds#clg+v+VBR@Y}CmWn`~-l5^#&$fsSJ3Dx0c zd)H;vFWP!yZ(v}#)92rgzikWuS$yE@Z#p^WRzh*k^>y!O3Lm}KAJBQtL-h3iuQOJy z%kRGRpTVwky~JD7k`Gs}yNd{3_4oEK>RmtScJaH^62ED)>Owq~LX%dmEo%Ksxpn^K6MNlPOYGV3y>sG? zpY~EOCe}~d@oIgH^TTTvGT-mLTqQG)XPN8FbN?AiMeS!zb?0qd8r&;!)H_=HkJm1Sb_$8BGat)kIdZ`M7{d)wLhXp?Pa z)ZEbMZO_iU>Q6Yf{DbBpm8!o}!f)%(bki-!J*;{(bN0))#>|O(CWUNUSa0sBwV-;E z`_>g37Yn}g6rX(Sz?sedtEU+Jx&L~Sxjg?KD{q6vUFVk`YWq@Inmzy4q}avR?nb}P z>*so??=QW$B9wL4O6APcjf=Rwm5qKydziK#7W zMr!Y!GgJFq!gh+E6%`eE^YYW`xoZP2)O*T$OU=I!qP56+`Q(eD(NCW|dHL{JrFUML zyYQ@}ID4MUbJslj8F$NWURYUN`pb0}-pGFVvV6+tUJExZ^H-CeTz+x;{rb3NwLIsS z&79=+-CZTCFMHN*?NA$0@smFP&K{k%BKgbPw#fmTH5Mi*nVIfB_svlFq+ra7&Yx2M z8N!da)~}X-S+hM}m)Bo%FXz{i{|xhOWPYpvdU5spBKa;m?JtjZ3QyMGyzHOslWzHc zpA^q5o|OJW(@s=sBSxgXgl{qV$u>cU2~7?L1fXZe8fd`p|e&#eN%mb_eNi`qI{SHhbo)ukkD)ZaQ=8Ij-#XPB-f| zUa|PVYV$Qy*6cs4=lv*QPg#6hcUEE7r|l<&%5rB#mwXmmyXWq!Nbmdwy(!b&EB^7i zd@fpdqGO)cik8`5@^@s`@B1iu^j_+bbI#6z?)^6vXPxc&e(}vzQK9X-CnlHAa`fvu zuBCRa*1hj-k*qn_-sWF7kNXwpoU-Vc_$zz)mY^jUlSM8m#b(d`8|MQTIuJ88Q z@O_rnn~tZxSA|P8+(S&IPA`^>eRQ~f^7W&c`y#Yb7OmfYs%xvsWw)o)R?CxzHey`Iq0G z4+(cyzID~zS-IRVV`?f2mz= zMa$l;>+SWu)780WMd!Yk=Qq9k>eYDloz5DGd-j2>T^pxIZ+R2uvSHDhkXI|e-g(b@ z`=oH)%InG7bQhgAtSqTtb$yoSYA@Z-pTl1L*{7zX5pv&)4HjSe|&Pk)E|$eR}3H z^YPbr|3WTlKL7JYa?Ok*KetUtEsIJCUAg<_s~3x0VyDKd@F&+ldt&qZTHx9I)zjuJ z(o~qozNW}sIdpyRiQU?v;;XduU0p5z-CBNR$?wR2>`VSI&#CL}>HYcM`C(>#klmFT zd-Y>W{P^X5TW#B(U;pz+=0Ejim(MJ{lyahe$L)u=WtJ7EtX*^Nt$)OxTYc-7_jc`X zT5tb*RaLh7w>Uk^68(Gs8O(~;OJp6Z_6~KucS`%O1_N)))1yk?rWZ^!=dy9T?(E4u zS?uIo)pMtn%+ogZm3<2Sy}k3@?Yw=57l*!j#Cp7l>y5YK_PcAR23@%GHq`K1;FTl0 zJ^fAc+&9+0jjxXBSou@@?ooN3iu+<#zR_Jz3Y1h{`+1a@YK= zwEh;8!XKqAM@)}+owa`y_4CuKy?=RstDkw;xn#xF-=5L)OMlhBik#23cf*gc&5i#1zwO0pjjWZgHP!QN zf)6Tr%5=WZo){`>uYAt(=Hr`dp9@y)x>~mLw#@2XYgL0EhQ`-#T9KG0C;#x(+4J1N zMSo}Q`d;i?`^-)|ZKYrImDKv(Pp`^#t4!Q*?D^gk*S4C6hTaskeIk0KJmcQfg4=1U zO6$CxtM?u``Yz|&%-NyA+J9z!O?%sFFDbg${HAD`>yp*aN~=%aSi3VWZ@bve@{pCQ zC#A%HpX#?_bIXTMQ&N_8u6eS>>wfM16WiTWAIyDq?zPL>pOf0fVj`c~#J{S!$>&;c zb<|gAmv!zY^;MUn9)|wvas62IrtA5tyr=#uZd;XRoijAnV@p|dz94(|+v#0aw<_i{ z@49?P{ulaL~%<!D>b|)C zgZbYi;<@JNKL5MX#`o67oT9t&SqE~y@=W_$UQ%6uFk@+`UuE2XhE=boZxvPQG{0NF zYm%+1*?fb82}Umy60=X41;$QW?^|f(_n6PMa$=>^u! zt@HUb?Pkz4dGo0eMf=`NKmDx#jKQ{fYR8T(mN??Jb;WGuKpTPMJ7O;M$ID%nHNV`c z_+?Mo<(N~aFN^NEsHuJDlN9TIx=k>AM-4?Ao z`D1%JK-4*qn7x%8Mmg~B18eCGO-=+E7KgvKoGi^g^#OaGC zcKp4!?(W-)Rj$U5UH@s^{cdQZcQj7)!}-lYale;;a=$O|;onuM*Jo>H{oKs4`LW40 z@3ogUiM=(wRd(L!?Xw#+E(F3O6rs3H=o-$+1I4(<=$tv z-&N|bS~{(5m4|wtM_TKvlgibh>yjsyg@nYdSh3Hg`(WJm&8`28x9ksE^2{s7>)Z7h z(Y4__HMAsNWgX29u3tT8%BK@gTt0>^s+^sDd;86sv4{J1UCXMocGtO~R~zwb*3v%v zwDUz1LoXfsJ2@p~)w+q@@58q**RI^ca%*y%QvYP7%TqP)J73FP_1d>~>*cVEA&%kh zk;3Us6>BkdCu(5|1LB$beC6E&ZL8hk8IRXt}LE! zJ-&WdZz>ISaSi!gdMs@B#X`%YYWef)qt{Np`J$+M_G^VDvs@-c%vjOuTD3^2*n0ZR zKy#OHt-RfNJKk-0y)N|#U&!`7x7GKiiihSaXX%;x&rQnjR~8IUGylET#s9!jP8~VU zfM<7a8?Fw!|MbSoQohDKi`YYE%iekXKJuR-HSqp}swEFD2P9wZ6Zo=Sz0YOpPBzu- z9oqF1>#Mvx<~@l&DjF(kGgai%i*Ji>tu0d88l39-A?R~mpStjsTWb$We|fZOq3ncA z+3dHkj@wtNZ4a^YeDU|Iw$2VJ?{$5Vny6l3QT?AGzA%w(PT9+l?=qa{ z&VGBp{)*0@{|rmY|6VRUtM~R{Q|1o2#*15HPHc)Y_p0B2HNV^{|KF#r_MOtLf8W&l z-cFcQ?b^KmKf@$@qgkA@HyoOMxjH9v?zVrOo#FPM?x~so`^htTegd;};oAi#WbV#= z5#bxP>i6_2wf_wFRg2ZXdSChC-y6K`{L$GDmVR-FYW;TeD~{o>8`}6nMeOEef06^ z&$`6wtx+!xZ>&~Zxb*m&&zH}>=$#ro^KEvtSI0BAC*i)-qBr? z@5bz!J8kyMyURU4RF_#NFZ&W5yH4*F$JJ9$U#)s>8CnzbTzk&yXRDT1l$En=c~YUL zI5W9#MVay3Tasl9Q_g#;E~@hQk)^3prDXcPtzt>iPC?6w5^rap-Bh zu<}$;_Rj9?cUzPG$Y;J)eXg}M^}Ejg15+j5sZHJ`I*&DW(ypCvLTXI9H!YU9nzMP8 zzV_mz^5v<^q*~?n6|8K_GP&j*XIruNuHLq;Th>8mrs#RuyOtDfoNVX5^<1vM_V%hp zYcf`Jtg7GrL~?%m*ZDni%%;rUcRi2m@3*OxFG{*Nd4--y$rr=Jxx4Muj`cTQ zayW7KPI+J2TTd%9m);G1eUU{r;+tlBmnQX2y86%}uDot@>XnZ!&v$iAdvd$TwXp2= zTN&XX)4mt0R));3oHk8q_Oey#_s*QED4X0B^Ctb*(KQn9>$zu{d(KIj)^%o9^wCSv zu9Hr)hA(mrH4!|j^XbaD-r|`&x${Jx^jbcNG;=@J8!mXxfAt-=S9uf66?YVD@3~|0 zGst=hH=lBG=Y`|a6W^@rTBSAZx}o$YEx((=x!c{73$N%~HtA;C@`bzY9)=6Q zSecbua^2+1(r?Ps*nFkyFHY7s*YcE7{`ICSIkH}6R_KCVO*2)02ff~W=hVe$+2j|7 z70=d8TC}jwy~w+0_9T&4vvoGCb;_A*xrcjg{M7Xy|LO-_)r`8mV&lH!|E_A=XNFC@ zGh284*J9JdyJzTqd+$~1t=9WCq;Hk_?%Tz3YpS%Y%S}&iTD?7c?!B_r-xl1cw>JEe zce`Ts)^+Yvo_s#(oxEAqeeqJKV^<>6C;nOYw9BsI`%Tf%lq9v=t7nJp?VaNoSP(xi z?T_oL+&+Lbtm*x;&R_0r)epgbZts^}^FRD& z@N294v!nX%xwiIgm;3ItGyZ4L2>Z*q$+x*&ZrZIA8(y!OQWX4lf6b&Sf8)h&Un8aV z%vSp=a9{7lx@*?{nb&6Do3`kzoZ;+8d7ay$0>vN>i16SMFQnaBX>e<-PK1b=S}r zS=TQXUz*eRbFI|wRjbpdoov1Pa?(w=V;iHrZM|Prf9(?u`8J8od}^qT^|j@FzeB^O zq`DPNwLP{=URiC)q;kCy2IrZRCo%`r^R2c%r)!nme6J|_Z;jY$FU&Z$C*&1-Aw%T?U%exhtWxlui-c6MIns?&+-k6oUR-Q6B^IZDq z+MVL3?Csusd*3WAEVEekSDKc6Y^Rs6=_UEY@>SL6mxs*y=EL;*&@%+IDKp9}V@uahRb0IN(95SqtJKbB>}; z7&7CTV9(9MY*mrmE-mj|Wreh}z7u0l&E9+OyJhGp(1^*ZWv(S#FUP%|DiXToLs;N7 zmlx_y6_-4g_nuf=EOYh6vsGG)7JUf`e#g7!6XWyOy>h&(s?99ctU6Gy)U~kWvQf$R z9-BF73l#I-vOP5W+`eZ1;!n4uCw=X> zJL8|HZg@r1)5hOl{oelGr70L#+ZnTR^Tc(zl9~UU3wKAq*8ToF*SBBixYm;`DPpUp z75V0^Z>>!2J^AjgxvOhPNKxrWQ=R(H%scgLtnBvfzy7S6`@r5kzv}qE@fpQOyH@l5 zXAlw3k0|*UopJNNH1mzE>u)^guW|EVB>9$g-Sg$Y7KUxL@O~Fk80wy~XLq@OzPs(J zjYos#-O0T_Q8jy_@T_pH*B>usiHXbAcZJ-Z8)z!>?&-8in^?onItCndceTmt>grFv zSTEDn)qVL$|LKkEdBdwWzy9^fO1|T_sDGwWXX13N3*T1mRbBdJy8FA@ey52AiJ=3XtJj*gHFj5t`;yL!mgRSpYkW;h zFMMEAYK<~Yb=y=pCEC|+xb~)|=A->O-6j{;96Q{UT72|w z?Aq^MD$%(&Z?9VFUvc6|O>pVWQ$0ntmZ4=uTDuN3rfrj(n(^*x*QEN-;Xh~otjp{< zaOH8rs#9}z#py23wTxKVcl!L|v$G2R9&KG8QF_?$c#-!uqpz#BM7{as8!G*3r_3>5 zn@vaMwOscbOG<~|cGEXfu8hrjAg(MbvRE{wC&x``X;t6aOmp?C`_?dUbt@dG=y}-9 z@o2xl>apV0vbK-zJ&n|S@~k8@to~aXa=KCy(AO zwL9i(y=b<@(l@5pc|})E+wZxqEH~l!#8Ydw-c9Q}Kf&SNoHg&K22HD-TzhY&@bqP8 z;)VUbGM!(&%eG`zzy1Z=h|S*Y*Ctt;Y&CiJC)zmr?p}MbodI9g@%Hm>y}4H6-KyeqCB$Nqo^_<)Vet682br zEI(4~{c^)v&Qogz_TS76y>{mnoB5}CTN7K${!ICDgnvixy0fd+UJpBcQuX`N`aSEG z)pt$W`XVB1JPkguGhWeLTJEiOQ{h1WH*Lug~qoNxP|B5fZ zwe-*nef}NkJW`2yhYMuNZucaYZToc4-CbTwdsnf?cfEI$+;ex&`x2-a1=6KGN`)5}K zh>KZS7CzV=o>g$?UH!7VnLCW^J(tXiYCFz)YG!EQ=0nf5iVZ_W#m}zl>grgrqDoC! zPyL7SrFX_3Idr1tx8D5px>oy|SL&+l$19c;{a6!x?Ad9t-)evQeZTpBH_M%KYmZ;x zUar8Po}F91UaeExI`_>pY2(7FVUIPwM`fP*%(~WUV(_}@x5MT>2)QcBTYp_)UE9Qo z7fs_{-JJ8qV?qC~Q|m)QJ&k8ea&}$~y>cgOLG~^!mtQkg zBDVW=-~F^|x$FH>GmV~e#a%z=X+GL0TVJKJOLfuTQdOfjyZIXqyK}brmlo%K%@5;R z{C4AmzQ+yEzV~Kr*|_OZxk=~uufCJNxV-4?-dFygq3G|7RqyXs&)s)oMbyJ%dm>kS z()RUbJv43BuC{IJj)A^`!l`W)ce?tLZ#@Yq4iyay3{G{`KJj^vTX^R$Ke_W$XVpp> zey&+o-S{=K?W=up z(m$l%eu=cu-yM2)bDpx%EX~EyZ;B!|?o>-V8FJmLf9=X7{dbEW_o?l)y}bRz-P!F4 z<(%R=ufI0=%5F7Un;JQ7p7zq35UsDV{~11|otv<@en(HeTkhp4w|%muwkOW`E4u8w zqifdI=!Lnqsbhy**&?Myix$;uy8c~c+j?v9p?98z`(MtT^>UR|(TdH-PKo4ff9+kh>bR~| z&Q@N(*`8cltMboEm)*_ZA->{~R#17foyD=3CF?2$<_D~uVmj$^n5XT&b#q_KT={D9 zzAs|VT+wx|eqHk(|Fm0jQ}gk&=oY^}Qr9iRe=5GZAO0ipa-PD%l*)UIZE5wM@?Wy6 zHV0p~vi}<9W*Pm*Ov!8C@jUVDJf2l`ZJDoAdMhVxyd7k5{d01t)c#2e=WNc}_F{kB zr~btOpMURHK6B1~THIG>wWh<(kImQ2`Wdlj%aB`}QIKi-#Y1 z*YTA3t_Zgdn;Goxt1?CGcGIua+>oxL@9J;;NGw+oT(wGh&iC)VAK%@HXPcNI$GbpG zbnAm1Wrpq1b9V2VcRHu7&3ygdlhV;=_IJHo7L|16*tOZd`&yr@JZf>sw)$)O6yNFt z?_!Ly?*3*wyC`+C>TxYwxlPl;zq*FFo4$#^pL}C&am-wq>q^TzH{Ex44}Z7v*4gas zH>AUDC)NLF=#A0P*E)MirA_17BFlOAi~LT^=-L~Y8uIt;v=2Y#y!msn&uG=ktWsmY zk8jrP>e73}b@OqF>BQsv{&d>-rOes=ZpFRaiJ?`c!SfHtvqX6w{AwCgmEMqCQ8S%w zNolA^$o=P`KCXAyOe)u2S{+!mIOeHK=>4Q;%JNnh?qrGt)-Uy%du#7WpCen(yKH=? z^kv=q_EeE|t2fNsU0PcMZu>7jUVqberHyL(&1oC5zH&uus+o6dTXya;&&RWtX{gMdeBS0y z*V?3=7Y_Ag>Ajfq=fu5^s114{Ypv$z-kE>y+iugd3nkJ-=Uk~O@qVyo{qrjf+-}<# zOqsVS_wTfDdibd(ooCge)z@-e+Pu@WbH216x3!MzI{D5otTd(MO}MSx(=6><^;cX& z@A9uSd(&L@?5xGxf=BQ4EGicI${b&{c-5u9(mRjFPYHGEOS)TBp)$31yJh&|moI1S zxum4D=*)`luTsl2m+#0`+j4W$T>YJ%A|+DuGo~FCnY3z6$#ve_ru$0$tF@II%|B(| zziO_mt8`f^R`H-_&XldDrSE$``G>}a{i~W)|En`@lef*fxOLU@p2l7cExT#{A~j@d z(1ok+HbQoi3#;rbC7x!_coKUtF!*4gZ#RGY!^?Ny|CsPKduPbKSi!zB`{!n>&vm6$ zm@V|U#r8t=TFt9Pvo_XeZJTy%?aqsfZC?iZdd;qnTKezrblo=!53Ba~?^85g9%J0* zZmN54S$0bO-!HLWLW^S5-meQVuAM5FG4;w_QOo4@p?+&!OzXE+3-8K2E;QBhnXanu zwu9@px$L;Qt#h?Z(A8aGW-ncK*XDmd5tN$$HNE?&_}aH+-UT!ENEC=RKKvT8+PiLE z|ChaA*X3POE%kq!lKl6zly>6%yIdlVS7`(m#ioDH{yuX`P*MH<*C+m#t-P(drgnza zSyxwoR#{m!$w(FfM=5s^!EK`15!aT35B3vYq$G9tOI69HlWS}Hzn`&JUDWru|7m#l z(M^wi{xfhcm}T*}y8KgIXzWz0MQ>JKn#{nzimm=C-Qu15ck=`Bz*^?{3+v#KZi-FY>2{&EIv``&@SCmCg-s!ZjaE z?%31qu0J)@@X4&mNZB;w(uq>*_eP4jM%R{q4Rgs3oMbATws+3n@Zxo6chsw0w5^(% z8QFV!>Gt1KR!xl43B7bSYx&gI7e8OPqSJl1SgTmoW@C|gX}0)O<=Cyi9A;kIT=00+ z4!vbbWnJ0-rXJ7xD?TN_GdI=M=95{aT+iAn^{NwdPKqi`Ty^i6OV!r1)t76P*SvMQ z$ep@(yA_Xcke+$k;?&eh`yPAp?wnK-SO4~F;nvh?y1(>w4ELV>`)t*_nLm7g2K7ug zfBIuaX~JXk-5359II8|<2+4^$dbn-5Y2N0Sd#CNoPP*c?>1@sys}(P^*PfYJ9=a^z z$uzgk2m9M+&e`+cJ>^gONA0y?`vfaW9xBcIu$}u~V0stVudec<(>04{J-3ye*8558 zx5k!_PW7AA-)qn4+O52E#~jY2o4J#ghkkt?kTB`yq}RHtp`z0!MTkl2@vdK+>RWnH zDL!+`i5qi8@;+2AE7v!2d+Mj2p=%bKcy3F4M~z(Tb(71|wfk;X)mcWp6}|;7$uj@2M*xVM?nx?r(VCbvO8-^%kzjhtd|u zX61d$xF4Il?ebZxbEi#XRs2_EuUt|dcG;W7KcxR~x!a1K&?>9s&9&OP(zE@e!{ZxX z+1mL{SZ=$E;dRIo?dfHz%=d_UZ`YS;KZ{jb$b$YyetI>akqhbDi{)tCl zE?>7J=&VkVs%@yNi%^iWug`Z=p_Ddp>zOYviuT?WjOmy$KkjA7uW;|8efwPhGo)AM zi5D;^^h}sMky*=^w{GW0-8n%Y`^C6od;nP`V%WjwFPRn~b=hc&E*(ph;zjseN&2MWHoBg}u z+*`q`zP`&nr4u*%&5$#@8G2fI#oPBqzGmlM9XlKJG9_D3a+CF~tli~$a*3S}0;alN z-@f{9%sm^+oBMCic5FZB87F>ke*Gu++5Xq3)IKxy_m|b-=~6SYSe#|plazC9QHhI- zKa2A>zWq8UUwl}Tw(otx0m~uacF! zCTF^7z5V7{$1!n->_gUSw;!h#9(b)-GOKiX|Duz{D}_uZNgeU5e5os>v?^z+w)C8* z^}g39spoF`YRf1Ud&Bt9Qh(k#3^(<~PqANoHfwFLT6XRG*;}2(Rtjb&RILwNQnHe( zDCbJ@T=h*?!=)FM$cRZMzF3ug|Mi_eZ*TXmT)Rc`Xw0$2-=epOP4K@N-~BnafpJQf z!pgk+eVoY`*KD&>-)Lp=a9hYP)5Sp=D<6lHd|Z7gPRo0{U)PU0&yK3k+W02^Zqc+$ zr91oNv#!`Uy-wJ7`=#DB@24`?ez)?5WU7cx`Lr>4nx@oVnd64%vKD;_3Dv#2RBA)X z^NW)z&GI`>eY~=nM`n9gaCv-Joo}q^U9*0x$qBaN_4aA*N7r+T&pR8Z`t)-46jT1o zbGjl|l|1`yvRZ%1Wwmp)+rr;oS~P#IRM-1;=Un|ooMlXS;>0Sd*3J3P@YDT8+=;h- z!Wl-VD*FV#KGpc%Gd*Iz->ubl&!vU0$ZT%?o4YAnZnjSD*^gm5!58vrf>-0R%CU8iPg-Z}5HCDb@&+N7nu zp-*O+#;px~)pcF%ZE%ROitXtp`^8Sdxi9- zRcE;@D{tJL7M9nwdy(blNWJ7;*W^||z5U5zeeXP}zgly)wd=HBbFIy>4*#h7C;P1a z)>Y51TL0o<4{drLmg{#ow^GcyWZ~W$>q|CXyAXcS=jO`Siq(N@F)-VwcYzm#Y34~-iS zy<4a9YvPSv-+%4+eelPsRb5@PJeN(JaF{#vlgD@EsAG%rR;}7AC}?y3=J5;jB=uvL z+V~t?I_*TB$glYR6SsOjPpqt;8gV1(Y54Js*58YCU4EOczg^m8DSBIL`;>EQLxcN1 z8)^m>PkUvydBbw&ykB3tpUgTrJIHQ1~7UFogXjP^fs^S$kz-jJNjCwg;= z%+pm0^}8%rP0M^x8llFYd09s8Y;S~y!q$k5uOxJ*-O>;Y(z41(&M9=c5`Q;as{Y#Y z2klwerCMG^_a>T3tXQpNey7<$dRd!*eoOq~vtJ(26 z!TU82yf69TJFjmSS4q9D>*h;~m*uRVH1*D^h-2>E!X_XU;5zpUZOVlk$@L3nlHAC;pn;mT>*9`(^Dtp&~z7W;|sntq=FMt*_Kop7YG* zYNS$0u*+AM4>{GVR;^k)=~Cd){H1*yN_`xOSwzkxAZ=YZP?)tt9HsM|`C#l`o;&ts#)3a~dv8t~39vpe6RJH8Yv7=tS69wx-S3R9s zo;|C#aIM$!-V^^BbmGn5Pgno5;P*?v zmea@d#iC*t7w!$ZIqmMGhm&-wb$T`j<^~4c+bezV(>9f&_g8-x?KF3OkZ*r+-^1Tu zr#)X~<8b|wO6G)+e@h+CT)Vv9_twc(-~3`PuQd<*VOeMtV=gYRu9vU5fB5Eq2E)uPTQ&w}O&m}_p<<%EmFP>yA`acZiN_hT>zjL}e z*579~IB;CpzkJt={|vExtq;%L3%@z%WY}}9df`ngWy8Nu|FQUL_Sy2Cf$WbK&9hn| zFR~_OqQ}+b8(;3ObA7R5#XgPYp>0n-KM~nla$P&Ov|VA-m6LgUqqG-AWW5cYxL#+2 z$I(|^-4FM7Y3V;GXY01`5-Oau*?sSah&y)XygXr2UM0^a`<7(RmcH@&maIOr)ppm# zl2?zuy?EwY{r1U1yRL;;o;i|Nw6p%z_mVg-&wIN!h6Zl5jot6Q^X#t8XP2dRTu9%s zwRF~V{(9%a&cvCs-|W_JTJ%#(?^O4b6|ED#$&}5w{yfOIJvV6A>F5;}SB1`Z-Fp?Q zGAZ@ijEm*(Q_6l{3tp7-_p0cdn5h}lB-`Ah>lq^5?AI`tAWBTmW zkN+8_t@ye0KZBqD_D}mCUi@tpcdCKq;^E1TLdNwEZ%sX}>Yt&uHLfIIY~rRDX2M}7 zK4nkw=$6YZUp{q`s!0C*(#6ZBt_|P0^0#N=P0`3xPiO7U{O!D2D{t!`!*!I*v=?bm(a%U{a&}GS+32>-K{t^#dqqN>XO^chje%4wngihb(LL?&NX?n ztg)kWzjp9z%lhD>r*^NNel#>ReAOfi8NJ{4r@JI2t$wF_+YMo{e0c2BCcgoA787QN6kK4v#O_yO?_v~$}{iTwwL}9%L)n%Pl-u- z@}~c7uAS#vtMfe>=jQ5ouh{v?e#fe*^?R=Tc*`w#Ij$H4#sQbM(>)iCqMX%3Td)(Od@7R66w-clNSu&2jnZ0<4`~KRgEADPJ zy%VN*wSMaFGPR70A&>JOFeHmNFfi1-TA8$N*(AxueHm$4n>_AaDUQ49I~8>N_40{d z7(^6{F3y@K_+!ddU5R=3f7#t^k6W@U>9^J{%QxnnX)6}H?YtYavF?(%ev_5%p1wOb z?=KNtwB=U$?96b1E$>#gZhN)mK+$ryt0mbvtKTnOJTLS^eX_#Z7ptGY%xK#v&BnIw zugd(;6CFn{-(6XH=UC}<-<4mRz4dRL_5Qu$y-ELaPqX{G>bvE)&)2@V`VV)`n@NxE z?e3LhHdwRkw+{aqjY!jGwUm5!E9z2zLV=Ey(?K^wiS`RpmXmA5F|ocB@c+wlwV2^U7aZ>YeFEODif zVz@FH%M1&u$<;&crmCSNm|0JAAL4gRJvij4=lkWJbIWEunw6SfTIc90x@@XosC-~S za+vS7yHfXJ@9Yg;92mah;c16eN57<v}i)!}EGmC7*?czp!|xm^1Hf!AwEX zmm)ght0S(4JezpCXzR+W=Zd4|hVpV>jbD=6@_3>zpL%obr>JdTQm%@wboSW2{F-aT zU8T40B5v>BYvc9$@$s$kkrh8yZ^~@F^qI9?^wg?5ulFvO@4d2S#e&YeZ+d6B7M*yu z?ri#&FIjKD%G9rloa=GW(tDAL(I3{FJhgekeCw?y1$v+JJ8|U8y`NQAGC%1$oV*l& zt=4;QXsS5h&%aMLR{3=OSQwsj<(9=xsb05@Yh9kYZBJIW7y0t>(t#6;l9jv67E2sc zJDa8M;^Okb#XjA7edN`ZT9e+Lzhu*`v3Tm!FGa89)24)k&z)}ms{X$DvoqoyZ+^wv zUdnFy608$m-L>s*&QsreuVzl4x@Z5rtYYiG{j48i?>&6IUFh_|{|r1o(xzvAn{4MD zC!X1Lo454R-_5U{WNDqWe$>Z1@zSYvQ&05Y6n*F7;yYzsZt`wxo9nlvgAC^{{;(_G zXXahel+|;08}4s1GkNwY_U?m~o9gFW&ON13u;Eqg)AOJH{C(cLC-0X3t!if-UGu7n z(jEI}uerbW@BB}*KTrCrl$*KBU+DJ6x3*i499w0%uQ}LyNqp7n6 zxwxJo-w;#H2}AiM>8q#homqLLfO|{s-xmq1mQKBAr+wdcU*>}=FXnx{v%bN6#>VU& z`Ikbr`y4k{yi|27-E{Xh@6xZEmvrxM+W2AfRI}Ubjkm|EsGc!@$^OF4{qDAh-gA@R z$4-15nbj9&T9vnA!)c{erS!&S z<%`d5Y}p=i>FktC`pS~Q(rL-UmsU>By*hjGjqcr(C*NxLSTn2L==h3v({6RVT9LiT zGjVEHSD)*rKceC#A)i7*J}D(HI8=1K;QfsK`zH#s?+;P0m@9Q!)%%;vMEl>%*Vns# za9baLPTuT5;p3xC-=^Q&Z-1@5{6qec{u@79CqFa(&oF((-)X;sC;xPd{jL7C=-bQ< z&)sJyn@;a|p=TD|^G#>H?CQRk344NfM%%91rt0pl9cr`PLq)iHsM7t+KsZr(jMX{Y$^wac=0o_ZB|an&=ebuZRdSH0;gyDpc%(bn;_ zMf|nfY8zi}I(Fy2Xwp$z>08}=o_R%!&gaekP^G@btA#%cOZ_rs9*r^t;PHgoNA`6)iurTWn*<_r+IB_YmGE=7@{*^kF8*ievX$TYCGA!d^VfHafA0+a*!$CceX0E2Q|o*3Pk9tP zU3h*6!Fr;e))fr?;`eDisN$nu@k??oSx?*Qm4NTVkJXz$9YEg){;kK}xZw4BoBUSX zk9|v#ww=-~?Q5H#d%V(dI`w^Pka+3)JX7BI)xLiB(zRCQd|xbiQRcaM_mSt>`}7YT z>$$sG`ki&8PKd6@iWiI4<}ZoWy0>S;WtTZ!tG@3}dC`69O7ZlYS*t?7%AQugUYoo> zyWVe!?WHWSLT-sIxz*EVOKw*?*L2g}l;7n#p3yZh<$-tutmxf9zCom%qdmq_Rl zH^Y1GkG(fYZrB|f8hUGA_Or+dA^ToVythhx)}oK`TC1PUe0NhkFEu2)zI39>zoS!t)PV-Epc zbAC5Vy-B@mXLyR+^3YHh->U)Vc58f%cii$@WBDWVDB}o?uY4IQl3)-Q|p(lTv@gKWc}_nC+5%k^!4S# z2YdDZD(Y7LXK+4X|IoPp@hk)W*=Hi|)&Fve`uwlGq5e?Xe}?1oUs|?4|I5$tpP}XK ze}=w{1JW2utYgw&ioSMTx61xf#J#z9H7EIH3Tk96n0fa0tF12s*5*H3Q{FX;jqS6T zj($hqo%-GB;xc;AXC=;l=@M}1**2-&@yjp938gGvQ4{TG<*1^$>!^`YNZjW|8~0h~ zWgq9dwKRD3EX9nSF|qP5SH*q0Tap~pwPsc0Yw4?HAHs_kfBSCBTWx($=+lia&pV>m zSt@y)lKC`K`^B$+XSZH?TVHdQmzJ5pM{rJqQvGeHUTR+QhEmV9N==a5Mwaf;co+9-w&3W=OlX5=p?9YxnzG&;& zqP#xWkFHL21wq~2?_3V$83noC&2(E4X}aB~@Xc|lwSABKpNhTEoAzp2g)hs+B|T;L zyiYy3YZF-R`oW0#yf|xY{fb#9Z=SE+m1)abyX$xB!>R9AY>Rw1Wo=DdW7zj|SNhUE zojK}Sd^xW)Ic9!na7panOZ7`KTT{edMHIc!df$I1%xtO4m8+WJ?&r^LT3wc2(Yfv1 z?Wtw2X73CXy|v}qn>q3!{(9M!Vh+5S2Y>r)jP=^Gw#?q0_tC_4Pim%YSM!)yzdQG5 zOvl|@Z>Nf<-mF@9x9U5zKwRoIXMWP{)v}%+1mxkBif#3ZfA2zTlIsEwPiyYxrGi|2 z{weAkN`jg7RPhA~7NXggLkr*6i}$^<-T%un_+#%+cD^V+9aGZ-3~3V|Ol(xFmrYBb z5xwOFB%~8YsMKYX6b{41(9?RKBu*S?Uwl zp1UaPVBTWa`#XBWOT+bN-@O>Kze&AGG10~^!zIS~WoT?`cG`kf*^`z{3On)a=zUZ1 zsj6AEX?lOFw3c_3I<4RI#_wTM%GGPtYjx_klyjG?=K1Jx)irza`So2|IV<*Yb#=`Z zIegSB)>?8#sNCLjJAQuHnejL0tWnR^-zq}(Uu1W#zIykJ-o5azuR4B;n)%HSEq8sf zTv%)Eifxa@wPtzT)eW`P+2nNW$KDr5!xojqi@JPLk&}M&Wt%PQk%T41vfOJ6&aKP4 zt^Fj+<7@o~|NF&zg6r#J&z4)RdDwn8{>a;Rugdo`7I{^iT{ul|{a+4C)qk4R+7D*e zZ8J_@f7+@V^i@#|+i@#}z^9Ch8?e~*nSH7`GHCdbV zWNPf&D%096i`vuo+VhncnU{Y2HaYe6w#_XIUWfJC*2SI=uYa3Y%QId5NLulKhUMb< zmUe-0KTUefJvFpq`_5MEFnw8aQY&RwXz{xDStoXH?ArHi^Hj5&f>vLgHSK$n+^%E? zN?luaqGPs_;$QRgDs@HI)>>^<4O_ft$?g2GpW7H1wn4{>Exvol+P=GMsv2W>B{;+| zQYGK_)|YtY2@LgiRh%ofTFAM|an{ZA)Lh~kQ?;+sa&EAc+H0?`w_k6xTeZHs%;kei zTZvT?tnBD*C{xi&cozGh1`KvzH;)&#(f7`TQ zJ^9bjrTruR$D&=?@}}oJt^VpZ)FTUe4ACJ*OX!&g2SeOH3?%ntRUnKf~vV z@82%UJ$Lte+?=y-_@~ygn0raC%u-Id^3`ycW^z^D^{pp2E&9jR<@#Xbkpmyq{ZVbw|;l5 z*2@>V({@#Ay?V90%1A3CIcx7H+tU}Nt}R-%>W7ld< zV${*N@L09{_F66For1wPde7E>_Dh}MKb4m!?3704%EvhY!5cTa9s6Op)_0=tCl|XV zN42s9@4D%FzPE0UwAgd))SUOKvwaP3#@()R-xgfhTJ~;nQQj1tvi}URFaN6D-^LJBTW>tn)W~COr`zg0CFErj>ck+q8GljFe+xeE|@$=WOnZDzB)Z3D8-X$he zCLH(o^*fSMxX~)Yp|?RnkXpFb;g|GF+r z@5QR_hZlCcEoxbJ(dTh#^5p6^tLpkCYdQrby54vrTy$%ubn#dT6eD!W)t2dvw;t<8ex7{Pm8SGD+N*(Vdu6 zJ~Q%bb!T~m+<%55qqsTu@4I}LD6}u^&RDvyVEf#|k=lu!(<)y{JuTP!dI|rt7ml8ue=z3HvCNU*~}GJf?`kl@Z4UW zeq-8>=to|U52r0ydWdb`s*CX_c`x;f|EjoHWw|%d`dHr6to3_?51xwLr#vnC^PaS} zk6Ej_Hr+4mRBMX3)76*tv*ZKlCZD6CqT;JW<=Ya!%Q~D|p|fpP`qew@ip@Bb^50vA z9}Pb!)wyfcdKW8~(728$ab7D?etxNN?|%1K(?fY5ubLX$hEGhZGL@OQwQjZWR5Smx z;j32mw@%qrCb8o9`eJ(q$u^0JjY{=`_t(0Kf9rKWIR<>xx7FF0T0DSr_;^u=Vfazz>uDEUwJ5D7r9_QTErB#QKaYH7ffx5UTcUm9fn5 zXz2T!Ww3usmYq=ilq$HYdr^HdTT~p}>$Xb7-!hfw)IVjLRS#2^uj|eiC8VIdAMOY_ zxH9u;i`#WM1+Y3*`gGvoX)PTb@2@T9{_VE-q3Ta}xQBY5u6TIb$%UmH;dZzxw@+6J zo-S0Xr@a^P`mi1v62y3MzR9E6a&_v3-nwVs?AGD`67K1)v{mKy^6s+xclY~#yT9yt z>@pj_h!?u16Ysv;9w{}|`$gPrCeM%?mXd#!7v(Fhx35^a?N!IhT`NN$XWu#5$LH6) zwtmk}>*)P!_s5=G(rU5x!M>|U<`)*Ut)1r6G|9AgYi^@TZg5r6rVv-x5Z|eSC$Cyg zKPsH8j)-n}z%CWKJ883yn{oFpx87IF)9)?LyyW#GSLbAg;Hx9kuC2Ddb9cLIM46}6 zvX>WEb*xyqziAEga;tuG-ujQbB~D~&FFC$)Nm2Cc1&d22U3{-IY1`>)k{ z<9TH_O^bXsvFgp$Z)I8Q?(v1h+io-P$!dB#G1c^Dp4&wC%AJR9Rb(p1rA57rTJ`Ke z-`}U9aq0R^yALN98OsTmG(C+}*(P)7XL3sCuA{m;ujaVF-L%un@NSiUXuRFt;2f_1 z42OJK%`1QDTW<}^c{}rE*sE1}^=ZGaPu-NWzdioU!9!024x2qZyYKDdtlRb?n`@UX zm9f(=6It|rH_N5`NVD5z&+|@ue^yLL+g{7EKRV@>yweW#uPdL0Eua3a8iI-PS5h~C$5&ay?S2s?rH4g z($LV@3Gcu~R6V$i+ACwDo4I?+rQ=B&p}je_k2SVjjt!2v9Ay%&`#v=7(yS|6vqGo6 zZ;V&0FVuf2r5WuQsAT!}+45CS-!1LEdwc3S_nejcZok=GXE^iII^FCA$4VAmE?L$0 z>g)2gr&hh)d^ls%p|!3x-O9H*Rraj=CNVd5msVbDPuNG(rkMJbb9r5(Un$nzxp>l5 z`PSR%C3i)4S1kMr&tgGFl59ez71MJwZ@m6-UaoAu;B*_dH_B>jUa4GpyXyI_+0Vnp-c1ut2e$4-6stY}e*U+&}-7iV3h zLbe`J%KGQK2X|N%Q>$dhTkOG0y?UCJ?8Fu9^^{az#CZ{~59=wZyomE6ULV#IsGm{2 zsM!AcUvKn|wu>>dId`4-p-~jYsWIPJIj4VlxcX-8z!NLhB~M)Ee{|(l@s(Gxw+^_3 zW8P$Z-fFM@uza;Y3!Nm&a^(SL@s>MV8{}S3@m3WdfB<&xPKNS#hsp_rl$X zBwe#&$E<_8Th6x4Tl?k1=DLW-izfEwz25bvp>vlrJtUNC##Ym;J~Hz%&z zXuU2xu{w3Zx%JcAH%0w=#a>=yUUGB8CiOQfMXHqprB?6Cd3t-5nbN)p?TxdiObOT0 z+FhHXy=6kkp%+V&e&nnzQd*d?58h}gnR#qOX56yqX!i-hm+omk4lT)Dy=|Z0%kV|3 zMWc6z=bPO0cr_)tUVYDeV?EKdofcE4@NPX{k#I4mY5l&9Po}@A6t8{wB~t65e|E|3 zxq>e@<;{)T$N8*#PjUT2vGcz7>bkFRah;vL+g9sxpzoRYMW4RUR)2i`li^)SWyKJm z7RI^vepK(h6}OVrb3=LcUY>R#`t8LNldDAcimx|yS+(-{Uzei) z45!b3)(Xt|S!B3&XZ)7O77NZ6rX3EhFWKhws%mx3i8<4~LgUh1&u)8LrT6N(def>O zi&p7;?Em<8S-G}*ees@<$5V5%t6xbk6}fO;c>1EPf>JB~PA`dbjotQo+l!)&=Y%q} z=Kg1heqOdp?DvbeS3|uY|9y7+>3@dTXU=bUCu~x5Kb+?#TWrm~U)Hykle+G0nYi=B z-0~OS>#P5*p0&5e=Z~J+TGd^0X;*k31q#oqkSuu^I!k17Aw!~GY0?va$jOe;DbBfTuh4q1Dcg4b$PQ3l*FRtGt z84qu}&d>Urvwf9O$99f)mpgkutUlN~zinH{wUZ&I-#Lc9sj6Q2d&;uTK=VGc&(^uu zYwzxRebLOtDFdlwN92NV*&C~st}M2+-h$aMuLrf?HNRJ81rJO?R1dC&!Id!njsj{y zM74fGJ-FvXL`Q)NWi7U%)(T!;*utB*1iM1K{tOaJIyN7C`kpb`zQ4$D)zc6cm%HJ2 z>YbLo-1OCz{c84S3xj*I%8$Yiym&abGP!D}ce^fCHmywnRHgQxj5cAEcVyy)2s8oy}tFAfni0@=7Uf98AareRB2BY3=FjiE}E_~ z%l9k$7lx3@6PcIF)!bxP>3aM9<4xP!^Bp2rw=WM0oO1O}m3(jp1NZR*lMg;U%fzvJ z^28+plNT_DWt7b7^bC(}zk1Z|X1w;qJ!d-0CVBjv7-u+*4Lr`1+QW zYpmq`vBU0}cw_YAX6+TzZs)Jxc5B*1No6gG7neML{?al%z3;`{i{bwnEdg)=4UL^B!2F9(cDCZ86H3)DRwb>- z$v*Wi^w)mSIWwOvTZ6j0w@jV+$tWnidlv)K*g@nM>%WyXCJ|l{tv| z70tdk`B^ZB#@ZWS7?_$S3r_T#eBtRnExvWDzMF_2yR4EEraf!6mi62hyWc(ebkpWP zgQ~Ry*He|ZsmYIgOBtA&LGG~7;*;HU>zAh7y5dk#!F{LnxBh+l$1lOoWcJR<-r_-X aH7_=QOV9qji-GaWvCRjc#xgSfzX!W929OnkEUbZSLc)rMj_iqzN`(_QiWn_Cc<}>=sIswB z&_k7^qNYikJ~}5K5>pLc^yt#$GUn6C-j-=@8xH$}^CiUuyTTHXIzP3!hG^P;}z`6ZizcfOQ#e`#%VXE2C@??#FnJ>Ll1zi#s*5MT_RDYCbia1xvGo;SuW27$ z_gK_eD~R*PNu`h){}mGzN(n(NFhU*uf6yYls-rK!iXvX`z~ zbXPZ5`0i=h6yBM=kqJf1PJDa6X_Zp&n^hf~I7MGf=h0poS@lG`X4~(XaVyvQZis%B zXBd3=iP^IglT>UrZ0uC&dbTxQ`+M4(=V15O@y=a*WWIJ@xke}>jiuB-SKx4#Xy zKfnJO1Dj&S;k zuR3@AntU{Tk<{8*W&asIOl`ZfbYXv3<|eKm_wOzd^-*0z% z)7xFk4xd>iFy+Z&*0L|=DxzO=e|W{%hu)DnwWdCDZP}Nit$LvmF{izrxaXdkd;3n_ z-)(pAE7#82YyQGBs`B>nLvc&|MMQp`P1tVa6`mbv2)Qh%%&5Eubl@467SLW~4 z-karRCwKa!%y%zV+Q%;Js2(+EacywCao)ir8}F|us`e4*&dpUl)UZ?dD=2828ujt{ z?Yl*LQm01P^Z0Fyo9%w@VA&O`A7bmyduxYEO}ss$&+VE=_nFmN@0oIDmv`)5;(Y7n zEzN?*-4R8+QitA|ip(->4PC0|Si0@1o&D|VX5q|?iEnRLX~e8czG&{5lJ;U%{gtFy zSJO6KO5V0YBSUk+;>Amo+(isFN}RYgZ;8u`7P<7)yBB3=YINEUX3}ebJhE<&iNH>IekxcT~(#;f0{I} zfA+}-Y5#bW&78M3&9jP_WHIB!jr(j{1qJOM)jOm^O5=Y;i zF1j18w&c3G>ix?50fpW5H7(Uyx%uIW&P~U@eAABU>MC+fG~2nTs-Wl5 zW7Cq~#!na2-(<@__%BlSxm)p@cE7v(zpVE0|MXk*sMUXlct@i(Uhh`TdGn-7dEVOM zn0HAhf1B9O;MSO*GOIV43RFXaq_3d#&Isek8 z6hzO+33>N0ZPIM7w-%XqcWAF$_m|&k!K!^n`7V2JvtMCy$2#li*X-&afhG49)>qFB zEbi=B^*hvM^)9Q5sLs2#r}yag_=Sd+YlmIs-8MDiO4CaAlk=?48TEvP_pWR>cD!t< zdD_0OtFmX+UN>OS6I?KPBC}aN^TU!|!I8RCMYnDh2)ual$jj&RDupZ-^sZP}eCO$l zYm1aXUUT5z*<8qaE%;nRz-`~Jn{Xhlzw`et3R7tU(v6L zUJo9dZ#%8_h+Abg@58o-qMN0*Up?zye`VGxjaSN3&xB?j&gk;JZ65ME;M;1mkoqvC zFGa6ZXSc5wN}c@Vrpk1l@5XBnDotzqo7B`(5w1tloBVyV#K&&8!zMmqo08apOtW;$=&xO51qup16B&=S$_; zpJqMrYBE^!*rDEV&U2;3`>bXyJ3Hz2{Ch$1I#+|D*Oi=m)qOgUYwPP>+LKd5{XNTW zh8NxS**ty2sfT^f-zs0o&=PLxyZ+bt!F|or*>QPaBfs^XdVW%@;FY`ogyj6HcfISn z*#0wkE_J;t_|f&A@%;71fopR&X1-e#QJT%UEoH~iN4F;=e_tUT?5te4U`4L0X^h{8 zYPqW+A-`=iR=9;M)ygmPINS1AwPNlGhHW8}Co+fCU+8b)JbL%DlSSI`FV6*5*Y4K3 zcDv`A>iVucukO@k8oN)ox>)O*SDyH>$kpX(e%-2d**nee7qwaYY%Q&r^49fA_wM`Q zs_VUz+nF}I>Z~aVI4Lc(XrJ50y;9Hp&DCD-zPfRd*7C1~kCHdaa0#uvzkSc0ZOm!^ z8RDMbsM+UzBkyzle+HJy(~qW3pY3AVku=4^Oy4nm+o1^ow-@FJY&5%{;xGDbXLxDo z*Hx>2ojbuif7|Wd_RcFVwrUkF^^G$0RN1AnQ)Tb5@82rQmIh>=Q_Q{W>$Uv-$7}VD z3wN(l=~>+PdwFrt(Vu~8zm+G~g?$NIrS@`0VgF6*ge!N776+Jkt-DkIWBIaA({8+o zyZK^WwAN?4Nojkdu7-T*6^vRnTWR~j5^XU&hkkXK3Qb(^6qKvwPhz?3#q=m zcv?C<_0>GPE2?+21Ak0>@ZLAi$HRtE?aQaw?K|-8(&fFsx0iVaaxKv-+I_U^ zYUtCCA->Br9-F`TurZ*h>&5lZSA}otA1D87pS|aN>c$C&AEm1vS!!8#Zs~pNqp>Tk zzs3H{+g=>+v)j4EUEz^(aPEzH#y+=ZuRR%iYLnJB4T&q^R-Q5)d)B!4t=_)TYSki% z&dD$CEl-uQU-9ksH|f~m{1Y$dZM=ArMR)GIlHQ1`b8pXjwtuF~%2R7&zkj%&q&Dx} zulq0W)!+5oJmatWi>-ETk5;|gdtLk8`{-$3ci#G&dt-~P`orxW)>>bVe>-lv^K#6m zm6E4FwtQGJ`Ly2cpSCP=x?h!cA78cl-m#LruEP7r*FNvfnRjne^y5v*W#VVHy%O_S zKk>D?mdl zoYK-lhCN>wM|9j@(OI;|?tSBZ)ot;*;nJq3cz56OdX;|pyxc#TGgZoy-#htB_sni* zn_{l{a{ZoX(c&9#cv(E3{j6eZ_wn7oy*!U`FAnH>vGdlqm|Ys5_bINp;gvq)^2($& ztGC5url#g@d+4dXaK*N(N9x~IWGPpN%3R<0qN}T``|(xo?Qa?$d#&z^W8e5@()ZoP zIeD3eIonKqx9z%Q+Nm?|{Jmp8(qCS*{=3)JSlakTo2ywWTe?>Ly=opIdA%;AEX}cV((DDl?6U9w{3(_Hl6BLU*HWop zKA-abHf2`No`-tVua|{+|M7Qvet_*tr3APb7x{W?>#@J?a#oiMFU~P~DjU|8#FrB} z^;BP6*wg71_s>mx@icpTsS4LbE7!a`pSDI{UF%wQ|J&n2|C)z~n>yc0xZDLuCcx{7f#At zICG_@$neCoy{l#~TD08N)j#r!_W1`tv;Usj?_R9SvwvUYIw{R)?wqMcJ43T|L|2|&noo;mSJnI=~+Fo?{b%qSO9U%BG&r}|Hw(_X2??>B$D zuC#vN=iKe)wS}|S-B!D={v-OE;>(!Nwo7L$*_A8i-|n~Jryu{6dxbxvMYOq-OKoe; zJbe;Bc~kDD+>2&kC(Qi%uV?M5pT@iD`X?^?Hf{0zP`9w}@15W6oYKH+@vU*=9@THN zp35k`{BvXPqMQA3I-f%A>NlC)QJ$H)y!zsbC)qQVgC|y&-wX^d*LwfT$WFmJZu8sv zOWNmTLlcj#4GF(-o7LAtKZvI;MpJC0b#H82xn)$`QPTu>rcYR$gU6uC1`S#WoZ(BRnlv{SWxI8P4 z47n2eb(MO}ZuP6XW?eoSFH-(b@2jiPnyyKgox???H5A+Kb1&|kuOG*YX47nOP6lVvdNot zws3ikNXJ(GkPP+4||Mgtod)B+ce^kZH+5P3?omb~h8};23i!V)`5}Wp2CF%oj^b zPYtaXHGdjzd(8N_zCcyzk$tmo7HQjSG4)lw6pZmT2&o9YI4?p~juDU-zIE;a%v8A{o_R6e#verId-1WBm2g}-(7R6fb zyL{|Qb@s~D(kfeSFWR}gJT!3YpOd>5Y46fMS^9KdrG;tFiAR@ryUEY;xp~co-DG1* zUWu`aU+OI& zm&{nUKO*;Q@O_h6D>aMwRT@(#Etg$cWwtQx%9lA)K547@Zg(@iY+2?Kt|pe)R{G)7 zvR&W4FRuLXI8%AzTQ+&w;P2&k=l`frJ-Od6=!^Cdc`dFVc~cCo2A?>&@>O!qMvtR+ z*Jn>I3HdcuA% zt6>}a!ZwBqT2B9~JFzm9gXR4O-jI`97Cn1)Cs}cC^3|Z+^SZmXd8K=F?mO|$)i34M zUh(>pSNkq~teWU*z1=i@4kE1NbmbIyUN%1du-2q-)f1kv(3M}+wzUaOU|XLCb_^f zrSA6^x64ar>$}{a8NEq=t0>=m|KG7&_p>a_wb{wa=2$N*8oFQVg1h$R+F#l?Pki;g zUhf&6JJH5U;@$FZ(_hD}+O>3Q<=)zLeG5--)m_@NFvT~ds7QIS%f#r-)1TU&ezgwHdX@gI^DNs`{BR4;PipoeJ`g)E#C4xYH7i2!@UQ7 z%sDkH?8>L5swS)6d&^2y$A2IJw3iILTRt-0m^_i$w4TxB*U7%!e!pFQ%swV>^Vv@4 z=JYQ)9d{R}o@<)5R#4P7Zq~AUOI+@!hO#Wb&AN2*3-!#ei}fRwYWw3pUc02VyRNEw z>D(3fV*d!PU$!D?tCiNy{%?Yb8y+m*>sl!&vE$Za2FdMw*La-OuW|eGl^4ys+!Ip1 zGCWjxXROo`|A@c3^>a^kD;b(Ujh7E9^;v1HJ>zBUjYE!mET^YD?Ka!G_Pnq0uB=m$ zqG4uXd#46imnqNc3}h;Kweqw0#VY;Sy?V2~cPp&F`YvkDb=B=RHI+h&7i`~tDs|%Q zythxvwUtA@z4`KDFHdRr((F5Xzhq6{+H218_t?Jfmwvs6Qx_jFn)&{EeY)j+i6gI0 zyp}rgGipt}O-{Dp?f1LO?_c`hq9F7|ZMp1|s5vpQGZ;jt%&^-Wxj#>TR(kvQD--_R z%~G>W_%~6$QhN98DS9`fU%NcH8+@%dfO4 zA~_`np3-8o?hD^}*YVxoXn)GxKNDApFH+JvDSJo2vgPvX)EmRE(#!rt*Iex16#I39hi;j6$v}#FS@zo1^&%K(xH8fN-$ikK{D{bcEU#A;l zKgO)O=v;R^|H}HsJEC7Jc`B^xJh^G>iT!6qtrpcU($dmWnsW2FcrxFD53YsY$J%au zstvzXzGQM}^4YmlE5&p-y_U_E~sk@>=KhrR#Tm zX>Xlpc=)cDc7sEYGuF5XEy;5HQkc2E z>j?uZTZCQc*AG!Io~&3kODn4)YW<|hxSnJ|+pN_W1zs$_vdZhswaH=|F5ENL*|+!a zUDIaS#ihp{Yb|=Se|P#xm#?d@uIT8>XJ^>kDk--=M)Px?dhY7fV~O?E>6dDn~Kfn2A(Yz^JkrU?TE>(Ev0`5@u;=QP@Y{%8X3&(_&07i+B2|DB1>eo(F!Thd$h>1*;t!7mf6 zOVWNXe%fEpwv&6go!IVJ(@8h|T^(KhS!HEqe498FdX>94ZgpJSxYn;XOG!yd-NnW3 z*>k5BjmseqFUl$3lKIadIXC%Ln#Iew;=0bVu8XQC>l7H`6eoj*#CRj$c0D+^zgLgr z{k1)56F0w7Q#7gclloE}sTA|lygD&^`ttXSBNcC+>J6Q`>ZyzGrBx-1gEh8hb1mBw z+jTllNySNo`jv zuP|GhVwGI_=}y`Al1*3hu9i$G)o?de>t3zey>Yf_O--nH%1s+VfrAJAUhRE*=J%er*$s?=A7uS1XWuTl z&9n3Vy05&;w%y9SA8dU!xGrq@$t?Zusby}8}T-15l z-{!oVJGa#A)pJ%~6cm{9+t5O4N8!(P(|Ds!z1>y#f?bo8SW^@K;Z*e->ch_I*Yq{02mugSLbFQp#d6GQw#qKAJ>%9E@-puqmb%KGv z{Q{^L3c{0TGW*x_#=Q-C@Yubg@u9o@NmF^QO?S07yvci9wP>G_$$3=ZD-Uq zkE0=e`($p{#x1^ZK6_ut9qUc6<6qs`xK-_--WBV;>x%LNy?&Lvm|I_dFRuGR_onr} zr>rjT((f+$chrCL<&$r}e0=ktVajZ`E3dzPQ7FE3X*oyU_k8!yw%iZcg571ij@2rf zEta@-X-dxRn)hP!T@p8CrY-PQp7AztuIALbG<&a`-@a-8^KV}(F>n2T(+9_!Br0aS z<-K&);`FCC-~P6z8s5|1B$e@Q-QxP3DPN}4J}F#Ybi{4z=Ur+$%l%zLrPdZLn!D2a zo8gVQlgjo-%)1imQ|_-Xu3ofv#ad6T6)(3J>4)ZhTBM{N`|F3&#F@UCAxGVeyzcx~ zy?s(P_~@S1ybU*V{FHiD<=^A93|*}qSLk;tc+#_Vd%de3-fsS@`%qavI&D^h#4=G| z6_2&9uADSRx@>8ir=?%^^YFUtzWAY@E-YSFnJ=gO+9PT$FDc~b+4U}Mq1Gi{H#cFptaSiNiKzAoi$Pm4wGHTrGWJG@q^vG?lD z_19MCzPlKACDoU=)>tcZRlQVKSI3WgUDwrKbZ=VTr8w1DJZQS=S+T5#5AE_-x`o}I zYx=Bns!6FpXzNx-!s@HW0*3_=9SIQ&XY_$w#qP?mvy`R z+Rc}4t$@OQkcjK6h^;6QiF<+)mmp&RA(lgCM=Ee0)m9U!nCI953ekj)4&NX|@tIqh#Hn{iZn`_pw zk9oJ;jrPr6lq+krZ&8sDwM#w9QkJzlR{g!MReJu)sMVz=E8b1MlO=uX)=5D@%Osa~lWVV+hMR1j9lLJU z$(-ej7A@Cl>g(%MJIEs7Ht{G+u1j{rwdHPG1qB6#7b(dXIQuPG_I=5_lM+W=qZAkd zKqJ@@^=vx}Pv2U+M0Wn$B@55!ece81*Q4HAG1b09r(1umGSA<#&;Q(&KGmmXm%N@C zhOX*ZwPHo)-`fv0@20OSnPw;Xnd@}$t?Q1a$F;ZLel@S_O6c?EOiNMOUAbpgt>{?2 zY2C@ZrCBBa87fuwzEz6WJ7H{d&@#c`s@Br$MM6{ean9!bP~Y%L({SGLznQbtE&Eq5 zT(Dhf>x%b3e9ujqz3$)odtc*4e6Lz95*7Dn)=WqVT&}I0Wx8_TZzZ)8zIzwnU02zk z5zbR8l_=J7XTy$n)4Nl1zDM<}>e{=()i+$`o!{GzqjxK90>cjm=j~pil`Z+Ts#HeQ zQa$@i`Gv3M4c7KEQn!4p-+V^HZ}RMA)BeQdP5b+H&(vR^+0K`--4uF#t8;~T?Ck#x z6H5+hvD^)n=?*SQ>E5L7>grYYZuM1B;e1ikmeUqIkIR+bynPfOwCPl?%IYgtKIg9H zY!5o?U%zDAu9=$G!cXq6>ML42S2;L$@~-*?HHU!TnOOB-0!-$^_B zSDMi)G+k@LQ;wb1+PiOQ?vB-~<#%jYwf^6vve5qwPpf|aXZU=&{y&4pbc^I4jY1OfxPuz=)Pd}{Mx@ujPq4hCC(M!g;fAwPbNz5{? z-Y_fwj)#A|E>sQJg3HcCYqW13&H~*2j%c@+f-hcb?pTR$G z+r0P3>($mZ)${JkzyIU?_33%@b~wyGefPy8b&35MrIBZsKmMck(ed>8r(292PoF%$ z-zG2b&c6Nf{E=C*-9Pi+u1~eAZ@N}K_kD5u#S8iO%Xe2Aht1FZ8(kh<^ylu*TGu4$ zzaPr=^>&nbyj&~NJ8^Tws`q8v7f;-+o`}7a@ zQO8u#3Jn6=YHI;nkvZ^6#7wq_x=&2*>sdZ$f(sAk8N;*cSXN!do zu5%6BX?ARy-jr-D-rxQwe|~@YNB_a8DYDyl3kfis)SNt#S=)h00JI_As6!+DCU6+2o`4)NS*`nitR{D#cecnDhrCjgj{@|9h_==9dgjh|vxFU>lgekkzHZo9R?Dbq@`c1ALX zFP=5$xB7w??OR@NJM?pfrSECaA9=fj54-xTUwm?_+T52WCaczlo%GBus?uNKQXHBU z7`kzlzW&n9mt8mV7&UWjvzpar{@$c--l9dBVo_ZuV^%#stdCTq>EbCg=wa&CFBQ@VRCF{qcg{RrC z+$wi9Rg^q>DC^~?%r6=D*ByFyF}gR*-=42(X8o+kwTl|B?y4?cH+kNouQ{EwPdoe+ zEuXY#>e_I%-#afXTJ@hHY}K}!%4Jt{!XDQw+kR)`?=?TZ#rB3BE!zqg5o zS?P;qp-)47r<%oHzOq|<;?2zCXT>wjxu;0#x*F?BZte2#-1ORL?`qX;Plbc$p6J+r z<w7zXp_BU6XJzNrBQB}{k@#?ai z4u&a~lNsgA>lOPff4n%fgYDw>)X1FotJdxCyItFK)a%*LI@h?rldK}7_H7OIOJBd} z*t*xRTqk`s4mSKNbwKZDSZMje4Ue};giAAn3@IyD?AWpLEO(4HXm&4dgPs zYNznY?_!?f-8GhTd8WOoI)6Vfb8nlw-nH2|-7mvEj=p?a>g#c}{`8~XWU0AQch^6B zVYT_L>#nV#7VnKWU3pt`eVXrKc3^QZ?GyFW#!ujH1rfa0DpwW?#yzk0?%G=fy z%btJx(|$@yx%Sm{nu<$T?23C;zxtY($JOjvoyK=My1MpPDlo+MD2ryS7JF*xdC%`b z-_66iU6Z0(7w=B{b|XtmZB=Jro>_f*){nF28SyulUSa}RnES6N8ih14?jyQFyg6 zdYq8>YEZIlZMOKru9f0t?_!_Le3fRuW(VtHt)qEg%-@v#^*VLB_E2BQB(4>6W-p$# z^3PQ9RiJ+HqJ{TF%nz^I@Jc-0Y`O3B%#f?~=4-UJxu2hyx#VkJ*X_b^rQ$0WDmG2q zd?7z1U1zp(>_tJb`#X9xii;o(^|Iby?-c^<=xxA z@@89}Evm3Ai(RPw@VVzLm!(!4XYKKv!VsY+WBt$Gd1|EA+U-_eRljRX{Mr`HtGMK` zEO~Nj_AH0Jq9QL!R=X7X3U0d^l(fyu+QjtIlB?X}#`CQwnz0;Z*aip3AbE)2Ce9Ykj49$@S`| zBGabKdhYl0YIiWN$)6WTQf^zCSIcbta#MEK`;B3*Ys9*1M5bKaCY2R&TO@G%!Je#~ zj`=}Kir-j^W=~fO)!bRiz|=HhVxx3DW8+8NBiHy3vGv7nzU#98Qu2(WGgoX5IlFtV z^4*IQU5+i<e!-Hzs+0&c;;K3TXQS9?XHnd*GuP=jgguuYuB$|J9ES3i-(S_ zp09lG?ZmY%uA!lt$y+vW4OV_DuzuCSEt_7JA1N`Clx02lmG8@ToA*;+zc{d8k4yH} z-0-QN>y@XQi4` z-L)0`T|1uKjoCMOgH=_<%Y>9b!-+?w1ACH%)3ypPQc|i=lKPfDM)KOJi`sbgW=CDEnQR-LcI?>laNE-trRIkEMr!(n#oV?H4qD2i z%Wk=qt03mS%A!d>R3@I;b8n^L?U1imzZwKyytFZ8TIRf-lwAL)RbQM6-h6qp>vXkW z#>!&vueVh$`wC_MeEYTD?E6~P-v-s8`=)3;TR-{YpDpi2MK5WoYnO!yt?C zlSs@mvbb?2JK~D(L{N)WeZ_5~J9C4!dcFE|dDFk;6ZiOjoV6|K>9mxfg8GG*g2RL6 zPkJx$cm3X}mlvG7^p5#s-1&9-Uk-~OGOG338~DWH@42@nX`c0^HPOda0-aBE^!RnX zG zPP$i~Tvwiwt@AVJ(#2gIdZ8v4S1U!_S@V+bcHVsTgTl$-uU{u`yKpv8>#e9w-o)2$ zTzsz|f1}5}Azm)c^rqm#4~A#!>(gd!J(q21UhA6b^6su}_F1KO`z_1kBWG^@@>oxK z(tiIvm+S34dM*pLwXsc;TiiT(#l6?r%bu=Je|GBiTa!2YW^elSGU>db&wRtvCUt*) ztoi=rq#kF%+GBb8RZDHXQ{6WI(z(4P&o%GOM8VKg{n?S+a;>J#o`ruaFWqV8Ikome z?8ZCu+M-JjO-fs|En-R5*0TEtPwsnLRGK|e)M}Aj_19>pqIx;@9ew*>%u6)&joIe5 zG)=Q&MY{f5)2XLc^89|cVzb+dji)-dolAPt)v+pk?$cNIJ(le%{ZlW@e&D@ex>kSs zXRF?wW-q<`-u;b{uKL$VH*bUN*~AnN6eN#4=9 zuJ^2V%vja2RpeY;%BwkN!t1w}xQ1FWe+=}O4dL$!GxAuHwed|=-gTufAtCW1LF}BJ z)8tmIl>g~ockAxV!|6X`V>XLk@}B%&Qg2e+^N-=N=Upwz60@$@I9;vZ7^A6o&HJg0 zId^TTPN$0KlusK~x+3n(l{s#Bwn(caB*a>2{%+PEw`RBZhS&4%%*{F7nX<{wxA1b+ ztC<&*x1YV{HQQ+Qu4S**O%u6We)sL&m?thfgzFYZnI^1qUTkk`d}g-jl*g-{-Z*h< zsd@VI#Zk+4F26gu(bS@T`L@Sfm>%|f%Ja@D4h&|?pLgrpV)cEOEzkPcomQT6UCVOi ze+I6VZk{r^cSU>4t={w{cP$iGTh!mXWZl`Cw}FpU?=FsdUVO<~UT2s1vh8km?~9kM zs4_O&b7=mDkdT}5u0G#wW#$HXE=rylDs^0qq2yP6Q?$u(?ro31RoKkBomJns!Qt%p z*vUsjYx6?yhSp}ST3(P-QN=aIJUmEhZ+cMp8=koDD@6mJY4;~r#4X5@{l=BAvu45J zH^TQ;>26p(am}QK6Bez>ty;A>w5Brr)&0+_em*_Szcny0`C8VT#YQJq-OM?j6S6iu zBzCn*?5typDoj`IzW4N|;M&-$R$^Cg*4E#Ap7TK5b+vT3alX{#xo1W1o9^8y7#kgZ zV$YV3`rVnCKkuE0+;^g{c$fB-jXg&{?49vd@8O2u|E}y3<(>BGo%3?B7kQFtJ+HUP zrcGPLWqvpRhimM%`~E7I%rq`}K6TqTd+%A7yH%^c7*9HACvbMD_HJcUuZ=6N%sXy6 z?=|<-@C)@3d0+gC7FB4isd>?{*F5CIN3Y*@4>k&|n)f}iYq3<>-FG}%wF&EYymGxS zdTh({(Bj)$+c>ncZ+9gN-@WZEb7HmhybbTxx)<#f3>6fOdgA*n*i`M_5$jDie*1lm zyVUh0_dkQ*+UeoSfugIneCJ%?8XC7^xA#TiMay38Ez?VSb*g@@?TaaiD~}a#=}o!3 zHf>v$>Zi|XQP%hDCns+%7mw!s*5qA#>CXG`YL?lSyTAO)+;{rI>2Axna&Pt>wfJ>d zGTb|2hu(^tljj|t6}|HEY0XgkFI6qBSywLY&YjDBJwGaE_xq5Whf-^FU-v|Lt}zje zEN*wccUy1DiPdSR6J0|*U(`Phaeemk<&iJhGoIc~)p=OBYWZe6pPlhskKZ~koFH*! zn$2q8Qm@HDCaX199@r{(=iJNe#C%)PZ!9-!`W~~NT+vt=C_Ga%V#Rgy)zaI%cupQN zj@}g06XARGz01aRXa8M~@$a)<8^&F~{bWP7Z4>LXmp!2;`n&d-z1hFkrnW)7LyL*M44<|6-B(RKXQ@j&HG#t@*gyWAmT6Unhq>o)sCc#@X%g z+HCHrOZ>!=rKW7jbClqm~)|IR9)&2UD<+dhc$hEy`OJIX%@q>1pinhm|BUKZ_}xhi<%wA|FWbeFZQ-+(&C8K<}KN~48v0@HOmsp>>kUo?#j8W zygsdb&Gl0$U5_W8m0BXUmxX#k+jpK$VH&mu`wrG}pNE>CGmI)IC2> z$J!q6{Nw)7UvkS-IjPo{4}+gdf1cJ?_0xUP=b8fyQ!EYLWY>M|-&=O@`TNM*#yLAm z+Zv^==D)K(uQ7Y#iMi!*spav(ldo>%mi(TfdvyE1>vk&HH-28-cs*k6*_73Pqa4$g zxz@XV4RKq2S83Vpnzh$geL3JOZ#ng2@t2><_vZ0jc$iZs^f&JJk1JF6ot9-=9V2vk z=}q0BRZ788tCq%I47HVr*|%=rqVKzPKHk3>ch;6+QP_Ezp3A32Hf>6|`SGMGi;?ZB z*=n~fPtDd3xxGH9sbb0w-OUa~KLtZA*9ITGC|DOAI<_a%gG5zL?f2Z=#JhoqwTm8(!%F4}^-1 znLSq@4P%ell-Tb?&96MbWjFn#w+%&0EuY z>g0kd{pJ~8LVlaYN8Xjry?yhb%^j;(iz}ua(a=&k^2z*Y-jyn@2&pv-XD=za-r{mQ z_iD7r>DPDrZib#(xnlDA?c((&F{hb6T+P|H`sI%*xt|}-=ViXt3t4sc)?RD3MW5fQ zKGoaj_j==%^c`K##LV1TW4_&9%IXr%9b3cqbk^NS?uj4H9rb57e9`?aZ{DWo)r!{c zkKZyr{1oxYUU6I2HEyk_Vr?HIL-U!!-%BrS6t7obk#;`oO~>^mYy47@EU)}X-BT}= zUH!xPt^B1quhdWT&Nf`{!>`_@`=4Ry(=m@wk`E%Yj><&bTTrmqif3syA;N(G~zJ`W|hQ_aXvs-f07vsv%icV9B z=%wp!?=PG0ol&t{F!J)&e&;Ct^)t!^CFUQW5$5PPAv*Byl}W*?wtlcbKFQ-w$B(<) zW9MCoohp9NXHWg-)r;@cK9ij+Y--=kQchcDjl8g}By z-7^z+Tdv;U9rJAW#X$ZoH*Jc})NGjYbgyXI?AK|#r)PSe;>zE_Ai$ac8c<`f?<+D~ zwQ5Dj+|clY4E78DI9qEaKkt1rarfKZ;U)G7CSXMnVq%X({jsn8p}JC{OCrPa>uWyV z*znpm_S2Ie%8{wLrY8FHLbHRPT2Jh|X`6k4iTADZTaj(wDqf`Op5m^5%U3@mWY_t& z8xuu?9>=Y{zh`!;YpzN3)=N7@#Z$8b17o_TDlVz2EI5>VUF%KT_voogcV{4o-3L>zKXr{O+uI!NE{lcl1t; zSuMhGHFnaXuupdBi>mzZ=g!)*^1kp48M7zlPp?j#vFrEwB3s65X_dA6{XbgwzIz*R zD>`@8+^?oWtMX4BTlRXBdT8he7r#}jI_8GFIdgwAceBb{&Fiy#z4m=ybJ4b5dEcko zFYfL#Hs2S#I>mkG?q4Ax>)u^orJY)}bKm5^w|Ra_yO#1ki&*G-W$JEe)*Jl?bfZEX zkK9`voxS$ww&Vdh8sq;@sZYi{gi$EZ%pe&+k7&FL*Bc2-qgHkMiMI^%}>?~vG&vL9^^ zt>ZkVHsyNat;U2Udv9e+?Y+{MWwz?B*}Yy@liS74#^R~jH=)Q zK{IR7+GTwiDJhtXVk<2tzjf587nMDpo+_7l;GT2&6VDMKvGOXP+}u~L{b7b)+0U#Cn_gzGx~n`-CFE82rmgj7 ziqP{;I95`<=@&$U|#UQC?rx z@=qagD^{#n(bd(ea9TLM_e^!vH(Swl*^^6(^y|B{W;PEwpVP*S^FbbJzl>h?#09P3s)v-nJwasnB=acv`Ft<_Qa}1`oWu&dLBTE78p5s zKC@MQveeC0BC`}1Tb5-OKhFNbMm$Qxgb-Mlk+YWMZj+s9Ks7!`Z$ z6F9c!^m5r5mZ{VF7H;|O>$UUthEuAM5yx$_UPW!*xZ?N zv#3`ybfr{4cu}T)wdU^jDz9TNW!LR{@^#kR3FXsQx16ibj(E9zRrT`fscT)b>*AY~ zlyW*>87Dt=bQayzCY2$5lGP@+%k16iQ`eTAn7uxp#csL9+Q2I-HTS)H{<6-0`eDX~ z#f|M=1wHkbCjIVjoy>QtbbZtYTfKw#^Ov7Cm3yqaZ_>7%GQX-*41-VFx(3g<5^kH^ zWo{|G?bOPvfj0Tv4fT2Fe68PnxqS2Oj;Si!WhQ;7{bv16zY~!cBUYY%^3i|S;#p7Q zLVPdE#dhvY`H^w?@UgPzdin2cA|HocdSuMIXl>IYbGPQeo@&j=eCzDJrS-J}3_{1{ z85sDjtsYNsoc{6Zk-6vC_V)f~(A@4_wCMe&waQ7$iI@x0#bd7ENXW3NhITz&bVRf+Xt$1_W7LjFE~k>0k&B3iex|L>0d z{q}nf?3ljsO6n~8=#<41mDlXQ7I5ofXnn}5m#-DOm%ZxPE4NoP&~`7s-}2d!Z*ot6 z?RI~|AMvwD*X!8ZuIsC3U0*U?BRDneYgWlezrFmPZpSBRC(iy{uTr`EOUwHGTc#}h zvn6St(d^$B7=+U~t?nG>-erj>vBn2FzBtFJH8jz3z&7V7Y0iC>z>)$GZ&+g*L9Tv{1Y z@@&~|>v@mP8VDRuSe>w{HfrLO_+6gs_w4JnyY|Yr{=ue;E2hZa&NSvRv;LBs^lqZc z7f*Bbt)i=*W-a>a>gxKcK0q*iZ`ZHGcG))$*KP_ut#kEO;BV)4AJBBbl(RJ#)Wi3d zc~x}?3YOgz6cnB+wK~FmRgKQ(#T}F0J^qybj4#uvB-_eVbg9_o@5|F%_xN9~N%n6K zs`%;W>~nVS?!}Y;_=mVp+ncrg(_e?nQnA}V^{nfiU0ptLcHUi@oqDXeyVdv5<&dks6WbcDIJC@#B)a9`xdzGf>t1VmKxW1OT_))g|c35BbOL z;*Zz6NX~fdsj9N2baRxx*vWbQvo6LnE%IibYGr8_wzu!5PS~PFyZ78IPp`;-86dmy*R-=KZ+(t#jJSP2AY+}lZc6{n z)pugv3vCpguUzu4(_89m-RtugS9E+WePd((N@Ggsv^O#xebc6CX=OZYGjrzAb#s@N z>dltwtly-hRN~_DRenRA)~ZE|mQBiBl45Y^YRx3u6W2Dbn7wM%dKVY}$jt)o;mdD{ zPW;yPk>xMn!FN|J{)B{lyt8>tpGC}*4Yy_1x-9R!ubQo8Icwt9@FyyLAF@`(&71jh zp8eto*2SVnb4AQ#$_{&-vaa3Nr_#q2F>AJRROg?o;j31ys$aEg)yk#&*_*wi`wKYL z>TR_XcfD5gFFCDRd~?f5pUt~wO)@R-S90__zSaDuP-?um#l6STN3NBs-G1SFaoIxI zD-3LwB@dp8#ozMDdYt#ZdcOYBNwfDnefI9>jkV8im)y_&WA1$JJ#%UC)eno?RJ|-W zUk*Cy_077ZBwOT?>!}rc>jR@tZd$%FFnD?6ivyp}9$vfDFj_9W-&E>avgF)X(+b`r@T3Mc043?dh?}`aAc}NtPckP4CSXd@J~{?Q5{~oZfS>nc3T7 zXT3Tl)gd)|k=CEBS#KZgS-tO`<~PHhWp8#I+x0^9rRa&5g{sD8engavVZfkdI@l~IB`u2zHC@P)IcZF-F zY2fF5D@O&kb8$%ND)N zl6B|w)kh4Ml!lgZ&Ac>i(Y$ceuAhsOpZB?KJ-wycSr4)J*I^(#W|=8A34LPL7DY!x^zRiUit_UEekl$CLZ-#X+?|JLqp+T)fxH>%yTUEHhj;`&6{tCi1Ie3^5v zW4CGe%oo#61gy`jTV6k%?^q4dkIbp{{M?q6(T`8u|D$(me?+byUw6!6+wbq1ihoCWU+HnMs*iO$71{hieD&cw zJ>IDzS2b2|4>#>v>vA_xG&E39xNg;owswh~rlNPg|5Mtd5i~Wc?_yW(?@7CLWkG)5yNxi+Py6{rL z^P4Ld-B|J_Cv?k=y{3nDnJub&SHEtf*rtW6RyFhmWVmGT>yRl+{(j2cKZA|&$Z}zc>0DCD!Bd}!zV>z&o+P2rDfrd& zvzFF2iO5~Wwq>CoU0hs4LtH|&lDp>JlnuEaeK*!jzi7qfKe4xu^XhJM@wyrPs%C1v zM#q=>t5O?LKb0(w-Rb+Kr|S3pl)e8tr`s3qx^(m9 zwX9t;G?V>*M>^obSmyYHaw*Vr6Dxo0LaznzOWEPg4HAvo0^%Yu#gIi$#-*w3eUBU%Nl^ z?B+L(rLXDEZq(~Dl`Z!40^cy*7fP@y=(q-cdU6_?eQXO_w-j{de7gV-c#B; zasREnm)o!JTv*SMuXm_4zU{2}xs5T4rS`>sd2P0I+DeUeQ$C&b&sp2&<+WVf^5?}p z@0W#!)VtoEzAAV3?A4CJB{!=U%?hb0K7Mk?wL=Gwe)IFZeeeAzvo&IeE*?tCO#1M3 z$#Oq0?@6!4W?kN;Y>;lA6Ey9`)sQ4-{grQg_s^<2WA;36(&eZZs<-E^-0#n>^h2vQ z{+(Iv+*^Od^5$s9nTnf>U%xlM^xIFl9Vfoc=A8Lk$$fcxrVr{37K>;Z2zj#(BhTmw-3L+Xpba-uf@@4_cMGeZ!Wc%nd(`&^nW z+}pLc->zHY|IyZV*0KB6&r54B{%6QC*=4_@ef=4REcs0KEY{U6uXEkByX>ZYTrt(K zH0iCXZRa}QOP-UTd#zZpw)^Jhxtl8kf4z&I_Q>$-HECYylYhIz7YWbm+O0k}zy8r- zzl!`E&Dp8fX7haIecm<8eOJ^<>8qBLBraakE_e0Ii{1Wp?!8Ibewyng7U$2X{dIRj z)YaF*%a%-@y{k$|YvbG4ImdHW>{;g$J5@Y)D!*;zy4>3^v=-em8|8LOJ7Z|FSn~wmYSw|Zc$ULzl+1` zjXbNmt&Y4c-<`Af@2-!YqNO_XK50huC-3{VQ{;_bRBAKVBjNTQ>#kmv-3dRRPMY?g zq4(b6Co7iK&o0~9=X!UO+qYF#mJ++Ql%(C8oV8DVoY|&ik;7_k z)xRjVviy^GaDdK#23F_xESFU_zwx)R2w?(UzzPhWu+?C_En74Cj+^m&O zUV*h2<8r4z-eA$*dPd=4ePC(O>+}2P?_uD60vZbaU~p%8$64FM+H<`t&V4xT>s=QT zI(=1!ivQO2RhmU}HLsL4<^C+z>QU7T3^!Itw%E7z;m*B21viWCq`fy;y;;(=q-o*# z--3Oi!D@DXa~8ZcO@CH1CF;oq1`&C9(;C94OPe|6qGkOj+l?Dn?w<4Xrl8$chQG}H z`MZPeK8n=T%6v6ruH~YMa`VsfIe;`AGhH9Na!a^}QO&+};vttGhwbW~{4jgsy7{|$ z&wE@9U!*-%aOKyPU$u8Dz2!1q8)UL_^(kMKt@)FTiW+ogEx4y@(Q>UeHf437=ZeUw z@kfI`Z+xk`u02bt-t<}4D*bm4ey%I7F$?uuJtzI{`dz>0#%e$9H~rDow^Q!e#c16x zAC7w+S6Z%9q%EtZrSzp}Z%p@9nXb+)`U@)0S+?GKbAu&FS2R^rc&@X^s#Q}3HipJ- zzJB!V{ZiN0+e2P-Z#gE;t`&TLw%gZjaiY&7<)Xj*ac)^yvUJDo!u{U$_q3(`pGSMp*YEGTztAnl>*9Xdw*iluF05&sc)V^)%z8yrQ*tg? zUOn~1+)%+4Pj6bSyUS_QV{viIrmu(AmGX3Nj?9`=@;fk<-jlX&sK4$|J`_eweFU`pOm&qO+WHpeX9A3zP^+`w^ctZJN7N| zW00$=h&wO8Qi{1dR^3xF_KD8YwJCGuPR*z<)v~npK6hO2^i^};Uo$@*x?;mwBHZ^+ z(d6l;vnnBy#h<#XJf6fwS??Cwx+Z_wyPk=kwy!&VQD)`tzRb-R=KVEQ653Kb5E_TRiF1x zbwlP>dB>vFu0}hzZVs@^GR^)ex>YdOM62)R>EFkU*RMXZ`y5+ETe_Hx?8{|~mu&F1 zi|-E#zq&@_O0w286R$QU({pa0&P+0&K2tn&&u;yYAa$eGRhn5I3C}B{okAG|k41p{ z2JAwAYnB|-Dc!E!^6}Dz=m)jFKIeZL96Ppp-qT+bSFHXnms!%RGe0Ev`k!}OMfIfm zC*C#MwJ*(ZU8J_wlj)b9xa6B_ZLgguXd}Exv0Qfht}Ac3-)z1n-D>MzSiCQCe_HO_ z>>D@J<~>%{n7Hw?<-SQ~<$FWL%eM9vDSdhqtf!k;-!FPh_u7t7G3i{LkToIsTG|mu zvP$ljy_hFG>)(aYts0lF-hcR?L4DDG2KSid-7_C;medP*uxRh+@}G`>{3aKSMH*9hZeSJ~<+KTceM{k-gos{jK-N*7W z<8Elyr9Wj)r(M}ue^Gfs%4hQvnw3}2ggkTiR=#mV=r-V8b;&+_y)CCwYNxNo07()^)UqJHDcqx;g0HXF@9 zttYekQ^v|WUDxz~eJ)y68?aOS$cu_9y|u2s<@T1J-`tW+V_Iic^F3U3bj{P?1}U_?fke?$J6^;ei|)3bbqDhe+JV_ z&!4QleEO~C&vouwMMXu$S7}w9Td%t-EZOXO>|U*Wvw@t@(^?b59O z3_?m3T8qBtAIsd>U2AJAZM`aD*2ImS56(_LXxsT!-NlYS%XZauCGAkNka$)Vjj)BY z61J~>b2f6V{lkB1-SeJGK5vW8`0&T~j-OEBlytdC-CmySHILr%K6~{3%#E?Ve(g4I z3opNV6&`#g@OJ%%=&QFRV|Ks088%O(SU9gQWTJW8ysn*gOE=ED&Zn~ca;)y6L%OE2 zXV2?r-;H@@oqp8m>dmvic3-cukB(HTI(6rVfyCAj+r?3nHYwkAZ%^17<`usB@~@rm zzI@&)(|t8OV^{7);o3g|^LGbty7{Tjc#~9R%6o-P!9fAR%Rdbvx0aL zW2v2HXHT`NXNFAY`{!S|zb80u`PPD;OLbS>>P)xZcjhtIw9f%e-goBvt7LEF`pA0h zo%JGfOI?#IpW@$d_|FjS&$Cj-+Ddt+KL*RE4MUN3ETna+C1tFkHR zSm&;NAxW!+^W)y#m~F?iJ#C%kr25Re{(?8Jvf4RMx~n%;iBe zs{QP_D@BV|3#o?0-rHSxp4&{GecrXz@pA9|rtY2ccF)~kThFTIUCaIcBqus{i)hiU zz+Tq3UVpx9o4YPsZ(_!LsXb1&lXfLlvEGTwDl0L%H}hk7#nD&&Sy!(dSf8~#q&Rxh zulnsO%L}d_SvECL=hys&({I}{+r?fx9O+-ZtkeAVtcaDV(;^msU46YItF&B8X;nOj z^*Z}QZ)YF5P?FppP`gy@a$Idx-O9zYFWio~G}qPK_UYmm{~7FDISw0ZDW*)^yUFc~ zyXo23izoJRb-z(uXZZQq%h1gt`^{XlZlWTCX#4Z|Ys!tgFeQ;#c+ut=uTP zWyinJ!_PBYPxbS7`UE?0kTS!T&y+7o--cb@wGrej_C>Njq4wx|CwJoeP` zPxd2i$BWC$OWta#)z9)S53j4a74viR#?*>8mkkaD9!vRAx$~T-n`fNiq)Gd}Ojnuy zeQoIz@2ag`<~qmUzC3wech`Hzc%d&}!mMUoJ$?NzYyIc1KV&;^g_bO$KD%IoZ=+TK@MR`=5L zRf)(te@R=vsdnzowfdejZo5u?RBXFsZTn&Ur@P-wds4aoyxnomUXR24Y=8cxCEiNB zwcUH6;q?czO2b*pvR1s%e&=(`L&y8Un)>`MyM?xMqmF*Odt$BEoL#Y6>!(|F-MTgN zwYIiu$>sAl-71?;JPj?r^At3k5*iw}YE@0j#7ifhTb_DuSsn^n2D!{~W!2p5OM5D> ze%CAu&%2?J^zYlk{|tw&{Abu(Bk(HH&%g1+hrF}e+NbjOKiCp)=I#}|T3f&I%-Q1X zy!rKyKgYbA%Da47`=YA5%6omXs_yJNzyF}9-{wX+maoj)!aKUEDiqcp-?CeFMgH;d zDf#bSD8d20cPYUHcxJS?pdFWtH~j z+s^kz@1CD{diPxQ)R^a5t5&U=Gda8L*s^r>w!_sX;m6|gPrJVQ`DOY-CyUbZbM?xq z$KROD*xJ^1J->0v6|q|tFEbY=<=j}59JnT{*5iuH@4f`Kt{PUEZ{1HWKb@2N%GTw5 z^L5d`L5!J^3usB$KGB)e&Fcc4OYu$S=P@v68|Oi z)%?Qe>RsiZGWb09f8z0fuFd`D&7tO#yUn)<6p5R`j^O zSQi?%;<#z%w5LTY_Qa&GUOg{s)vlGYCYOD_)=aiNwd%R$>8mlTR;^lnHPo+l<8M`& ztY3MCb>}zz%Qt`exh}ShXR&7JbgAuE-)#NY(!D+=;g!A6b@8*)pN4C<8ttxlpE0?x@I3c9$!v zUu)dC^3_yk&&B$yJNK>q{y|B4J6gt zyyUul^Yd3NSr0b`-u3m&sE>QjT2ubWCNoKY)|IDQpKSXv>-XGA<%^dsyIb~Nx$MNG zqh~M5b#%>MWGS_(W7qQAsmJE!FZtEn|MHt+^^W9{t7cPn-_d&eSx3}VTjkP`6O-KD zd^26iJ+(5_a_8lGrhO&ngFo>~ozwlPr(e8cOT2E-k}X#a^_za(diKM%&-db)_?AAK2 zT<%h2DI9k2%`$oBd6%ZW`>OdqZ~3`PUf-%d?T+u-d8)?iz_o*^lh?LR4$O_a8?@j1 zUx~FH-|vJ?>x9;q3cnJ)ta5gPWz>D$zC~-V)|XCO_F3(#fKJ!CBGWymUhJGGGdDP0 zDZkiaU0~ih!|L2u7b95@U9MQ#wXJKFc(HphOON|;#Z!Gr_u^ch1%PAJhIbd?@?cw>aEd>qCTgYUJtz7P^`qBSUJ|p+X z&qq^YT7K2&w{Lc;(TZo1^>eL+!@HjA7yXHy zzS4fn&DjT1uWCEq@}Km5|H0T_Qnypz@?4v(ws^Zn-r`hI(ZBy0>V8#qJwNHJANzaj zve0+C_lrDrTcq~aOn39<$6Mqj9)I@NySiXwunbAvUEq;1Z-+jWI+o@XiXem>7y z*D%XK@ry-TN?W~j%(yok4t{#6{@r!0p31ba3t457Hr!n6&Q4l4@uaov*PR;<8`VzI zytv2pDD1lwn-|OS;I!!;N29|<>lXi5)EM`3(`PpU7cJ9@epB)x^ zxhro)*LN+$-OG*ZCzlw?UD|hHHGlfPHmmPJC-fpyU(cH@yT$U7I~#@2|Um_B2_&IVmasv`DUBPw$G|roApM z7Vm`FUi}VwQMziXd8KmUk6k|;qYkbsmt3*I+;y46vsc$tg|;nv9&oRI<({c}`3qmg zF3J|Qv7GxTQ?GpGPrVg)&{ytN+Y?YOUtj;AP zjT^Ifo{ODm_gP|o=*m@jhJm+Uyw=+qd}5-jj8E*-qID;FeW#vUwQp@_{EZ8-6SG8K zh1Q+gIV(!vbjH_HTBo>n&63(7dsd|W%cotM%JEs2tGc?sN%jRET=k3{Nw|Lp&hv%c`rvEs%-0^E2cX-z|bJ6uR8uRX@whHI( zIUeyev^ZYo!b$17G84~AFP@~nHFRC}tS7G76Cpb#wU$Rsb$_#azE`Xv=d||p3+&i`n|bEnB~Sk| z2w!4Pydut3cZydy_vE`;ubXnuw3gj=+8V5*`Q4>{a!|l|5KBdzvq6h^Y4tl zZ^bQrTQmPN>=iL9RNrv%%Dsdgp1vYex2!2CIP>h?i&^ido_=%xR=dvQyLnr#S=VeW zoqW{Sm$`DuG4~Fmi&pKFxbGR&G5g)ByAy4ACq7)h*}f-F!{pKF**7-aNo$rk@lvv2 z>-mcHO;fd3KFPAOoGsTSI{ ztM(ibTq7f$eV*&a<8`xEF5T{JJ4-ZV+V8Y^+IzRDxZI65y1e&Ou<_Ni#(}&4JYv5p zr=TOTPc~F{-)rZB9sWX_rfFr))>?eE-pt*4YIusj-0u8s$8TO;95g%klaaB`e}>e} zZ)UC8D7w%pEO*(ZDY3iNGc_~w)-OFDFe`rLkAGWUKAo*|G;hoFGvx|PQ*-z2ntA(p zu<+%QqWn#ZeoYk>3=9km6cy$Bv3`BCZp%}N^3=79e0sH%7w^6QPF$NOSZV9U=sO!X znz_EJ@2&ZG#be%5Pr;KH1H%sbR(#}nyjyL8X8abb<7S4pMOVMpzOm+HVNKpk?(mc% zBa7urW4DFgwOm~Gdr`&m)v3`dG#_tcI(6GTCw9{+d)Mh_6_-zPao<__wCQ8e(c+0! z>I-!;W>?ETe0}Pmb(ou-YTT5L9Y?l)y8m%oYuc9Cw)aBo6W4X8slAKKsuW&+{mN-S z-B0&FZk@Dga+>w21vSyO=2@RjgV$fZawBEk8fVv=%c7U3wT0Zdzj?XiyA?04ew|gH zRI;bHIO=B5edd%brLQ;T`uyYDyM9bAT)DS(X3EXwDQ&ISLezC8Jih19xl4bcug#V> zA6$NJRR4XoYTZq##p(y@LF4`_>+bBen(t@rV$y8ix>0v~;Kr;!X4}(NTd$hM8Mcdk z@9j6wZ6}{Ow(P`ix3^boMLcZo%eR;=Id|6D`qgJEFVC!ZzpN)jZ;lE(G;j9ernqNI z_e#9I{p9kQr}xvAE61$f%*(xOWooKPvD>?hr&+eEx7}W}?8TCM(bks>FZ9+Qce@mH zfao)gfgyY^WHnC>gpqQHuI3on%1@9$3siEoa#^7z39`Yi|6f5?^64{XwmA)`8#{` z{i~hkh^#f2_3mU4NLc{#GZasr!)#U0TKh-kRn+qW!JcbJWsTQtTkEzl^nU8J)bz=L z-zRNc@AAy0{!9C1)2Js!MLXZ!E?Yc1GJS!cQVFxfquDN-Z0*jhc)I@Brdh5_)^=&m z#=F1#&h=JpTy^}Qw6+ zZM}S^W7Wz{-+iBk-t>*QP1J-cRUam`M(SF$~~ zd_hfTpvk$cPn$2enZBCyF7Nc|avA*(H@gd(7wotR zUV16Z(D&=B+fVbR)%w(bSt@tytjlzZ$LD@Jy#3u1cGoqleZ8w|r&i4V+bfD{k6srs zzEyAh{PE-9Sf!mY)7`dOPENh4*em>dBJX{*-q+?&f5<6+Oxm(|YH-s(&DFo${GVn2 zJ+{v}c3;)X>C>b#?rLAZac$Y_zbA6GA1r&wxa;nE$@2m?O=U_0lRoddnDD+{Q07=n zdXn9uu-~%0){m3xRxOPeTeNKP>s0TRCXj^))65zyIrHI%EmQA27tODBYmSdRn_u*wfosu!hQ^C?zrL*hlrz8l?~4+(y2B^; zuuOhy{;9rm^}pE_RVCj(^IMe86PsQ4Pc`Guq`0;-e`ICacWM?bxhoo-<{(@3Gs}rMBwLro9_C)rEXpuTsxfe&ed%?yh@cIW}RL zORhyPGMe<%@49E!&TV>?xtF!nmu`D`R(hLDwYgu4zethk*$aRCZ${007az>oo*B~f z{c&CI>ecaEFV}6`uate*=AC7oID5z1b4E)!_U5LZe-qbgFzGnoovidfdXKwPkGwM} zh?us>Yk&9hMST%Mk+Nr%>n|^|UG-dRXJt&sx}sHILxYqbCCz$&u&&s&Jv7I>$JJ(G z!lFG^eOa?r?^>;n^^G`IWL>uG)k(og=FbiJrb}J5NjDDLc6q|hJpcM;&DF^h|1%_Q z6)%ZjoqRIr^tN_|HLvnQ7pk7F%vbr(aAv3JtBWsOJ5CpCW$7MT5}%&_%`UV4@3P+y z_HK>T6}h-w^>EH~iR~`cZ?_6vvK79)`S+F3U)z2EEzaD+zD3;EqIFeU+x_y|d0)-W zrfz$4W%;adec#1puVuRSE!%qP{YtI|IkwA_e(azBVA;OOrg2i9Dt}cbm4AO<-QjaM zanl)>crLv;TVw6`ryn|YtwuFgZ(iTwMN%8nh&$8v^OvHTeAE>T-|b#1srI|Xf7Yhw<(EFjrvDNB&yaXca{6q!J=Y&xjV!I} zeOlqhnVIBYy!&Z3>$YWPTAw!dEG+)BH0Gzwv3F}+vMfVyOJu&Rzt8$%s>V~(9jne> z`Ok1n-T344%uR2eTQ3gQS+&YZ1Z*6&N+tk3?GJ?lxS=#Es=vdZ)m^Htui->~(c z%bKc*l)UO zx7zEs_YaB&uL_wa&apIZalpN-`nR8UKbd;}pmL|GGJqu3%*4-_=e(sW6-)m2O z_4_PqHuqt<*rm|G3s)9vz1M%5vu1hcid8Q(ulBi?tlm7m+_d{#e@#WBUV-b;ySJOx zRxUoRkvwnP*|2LDo|xUZyXj8G&h4RD`mVE7Lu*w&z#L z)PJw`K6UHmhj%FnuRkpN^ZP~IJI01cll5HNl4smq)pR^@)8%cG+M2q=4zud``p!CL zYNaH*^J>D*ql<$LPKP-su3x?@GQVWwwF_4dyvul{IB~@@Te~YEA79Peyw&D|2Ll7c zLOs2u?|-bn^8G)9Ty$yq=QUIIU23wJH~W;u)GL-Y)%9m)J$e5;RB>VM=K+R2#oZ?xsCS+H;=kow(vJ8fx$2eth0SYwsQASF(@f6|1FA z%kqf3dNX;_LZP{R{%d8m^zY}D=xoO1dD%6EpLVS;H;tS7%DU{`wZ(yf zt5)t>`C?9~)Q_6I7fvTvE?F$sb$9)_)03V*JJ)UDHCOhO_N*|s%Vo0PXk(~^(%e4?k?^$^At3Xzx!#)^y!Hk0v=t9^3Gk? zHR*QVg3b-WL6;8QNLb#xa&yEnQ^B=aN;w^!n?waeZ+ou_JCoLRvL~`2#_eME^1i+{ zF7BNEPaeuyMi#dwc|B7yUD46e<8qVZvEf^j>p2hma^n`qWzN{Qx~AavRl6S&NB@1E zcKJj7ZB zmv~5E*w0#1)6&a3vvz7c%{Q{DOK~^tczd<4sA!eaPT8=X(>6T4)wTM!KyZvtV+sJ=b^Q2#Vp8fnt?>_%GIY(~KF)5T( zQ|f;8=+^h8rQa6Ynb$vmup^y!@ln(N4E{fN2Fssbu+LTMKLcxyey6DIUX9uN@4hvW zxS8Mla;`PYTmSPPSISJh^gO~k`*Ggy@~I-54_sSz|8w4o_}#A+|M(uxfBNOM{=?}v zF8{t{^ZVgG<#Oq;=6@RT*K}*oPA?4&l@&Fa?DNf)M>l-$JJ1;md8<~xs&{cdpDr@% zxVnIiOPb~6JKx=Fcb>L2vNS8!yjZD_^q*n1aK!x`JN2&Y&H2xuct_}&Xu;V#ck(|h zZR<`i+8H0bTW)QVCPx6R6X_1(BR_wRl%vT-|pZ>f$UjpHHrxxbb?f$Ey87W|^XOYtK!)U)1!H`^oZ& zn>Ja-b5FI)zVS4B@>_SMh0PzO3s)aAn8nj|Z^f-YQExrVmX&|-l9P|Eey(=c`&+eEz>}s;;-$FYn4M_e%4e5WdlB zx$(~W1bJfs+RwM?{gSkrO1+TFb?YbnzQ6F| zx8L#yPVeCSyyESPo%?rIO_=)YGoN+Jn)NH;V?xkxq06H^Aqiki(7jy`}8fTM()*WBX?Ck&);gjJ64BJ%Xn8_8FjMiOI${5=&9~U zy^Xdl{hgNW($fBn?5DWi*WcGa82u>X!+XX92SSdWEMDL}x7~spFQ1I8Jh^(|qNU6FpI-4)>Fu+){5MnPivNbISzacY^|58< zRv~wzx~wK$XONw@tNqsDwS5~O=SHguCQt3(7yrCB)<3uR)NUoUm-nvN3f`HxXnE7B z)lprKFZ#3E&iZA0Kuw-?xBo^hsq9&9J*)SJ8EzG??w)8C?isN1Ovm2viE}nCd%Zch zc!{CMb`?ed7U*7>(e{U zrQST(JY5y*$$2)qNM;iI3_H6|KaI~>m=?WO-uY*_{?2Wt-&{_ul$5GHlO6od)=n<8 z^xw+tt@q95hK8o?54R1it-j*1q%UIcN@KqLF0QxM+7~xpRo_!A{huLM{11Qd9fri- z%llYMvX0gFJSknzu{rqU<=iJ;8kJY;wwAsAJ}+!*=bssM_m5f&|NHu%f%&@Gj9d2U zUvA4SxIO(u?vyLPt1XqX>kn+5X@BdN_{yS1d*8paJ{+?Qi1w11mX-RsTk?eq86Zr%T%Vbaq04~7|a-|W8R?3R{&^Pi!fY5)76{|q%=){1-c zj;ymfyl%%bLI1)}QqfCdUr#-;uD8#1V$9d9nx$@rWv=n^QF*I;S`y=@MSa+3Zm@gm zvwf3p<}Tju@p4sGipQhwvQX3AJFC>*g)P6e!awO!f#;Xpn)BfmC*zjt&RFwux7nk8 zw{O2ueRI1#T5i^ht77vWnVhd*w(nK$y}NA(V^2*A3-gZ+I1w8A(lq{sm8-|C6<0sp z6buc%_>8ml_LuwYo0GTAsF`;)VPVrBTwGqFvqMn*wj^ZYkOJyL1;@aL}d8E;kk~ z>+E&gWM;UcYn8qvk2QDAl9kI&@5-&`uG7g~nYI1h(^?J>hMXme`}VWPy_!@OlWdlI`)qeg zB=5?Tn?9Qc)xQrlI~UKc|9SgOEqY_<)wR64Y_H6W-L10ryl#Ny z@8j{Q>nE9gpRnv+m$Q{lzJKu2tmUU-*BrRI>gcgtqbj|Z1`HZn3=BNMu_awM*Zr1?Drtki=>2HUp znQ3YJ?3q`-ngs2ddA59g?c(fRUvHk+xB0?Hf7{hEO7|_)9y#k>>(1TAbywob?H1FU z%x}N!nUolw?sj77%DKJw=S^D|@;=_EX6Dj*BX#4@pF6ltiR$Y096K6Z+^)Bx+i$nz z3FQMnE<9YXn6-22gjcoe&PqQnsrOVbFL5s;}ip!6zg|Gd3UGr_P z;$^RsuMKC-nleeM=h%ylb}aMMNs+2<$6kG z>@Q*j7_Og8m^_i$t6rq|Hgm`MuCm6o_fzL=xI3wD-`xAhjt3pN8h<4D@;iNrHT^B@ z3yjU4x4kM=$t&USEWF*dsHFF7$>hts|4lb}v1A%0}z1|RS*lhY{X8pyN3#%-@ zh=_*Woc-X%lcsHpRI`?^EX&frv0|y-G}arUM`P!^Yi){EI-wU3z4j*W+58z-rt-VF zoLU(u9qf8$w{qp3W1d14+VhR8^p)(K%@2DOhAQnUHQCQ?*3>4oG-kJ;?mcBc-7oiI zW_{n9UA^||qBCF5M;ZQ;`I4=1-e}eSdd1^~+$rC)TTXPW_gI*;H|p4`^x| zS3K*=s}+@Z7GCk0-LdAo^3^l1JeQm<72Eh-b@?>csoT87En~g&ThIBWv`I`|(Hpz# z{r=di<>K2vckQU?eZ(z%A*O2Q)E&zhjZ%K@xw7fAtLa(Gna(-Yv-ZjhX+NK2dRKf; zd+nUV^}*>YQcbd+@098&p7UN`vvLHs3i{Ucu9t+#93Qm1d%5)54G zd3(-czHhHHeNTB7m1Vv9uK1?v^W@;dh2aw(OwZK$StoWw?_1QiRYhj&re3gIGja8c zUFOzhmg`)zC!Xr+n!WI4`{vKR((>{#I?1!T(>pb^RwqYU-(4HCu6EK(A?2)Sq3}+n{sbuYx>uvLV{8F}r^TElBtJaqNUebG0Jk_PDXwB~Cq4-hMpY@WtAq+7(&nHkFBgSh@D{zUsdI$KSe^=dCoe z*ZCHbw0`~WrPWIDzkGtqF051kFi$zBXZ6wbC0C0-6`ys~o}_gvKFdxuF2yBo&dJ^3 zS5~DzyV-Iq;Al|jhs(juFD~z@Tk-sAX4t}dbH7D}lU~hN3)`0cp?J-YF1zI(Uz;tD zrex)v_VYOL{@e82htko%S0-is(4P3NDF5{b)6+2)8RvE+?+=bDUY#qdo9dITY8$(+ zJR~4|>*~#OdHS+rFP7cy&yKr$x#VWl^Vp4x_HL@$-5tB(Hk+bvxOeQ7i?Kqx(hfbT zUZLQzB)NX3((;qVcb@6%_g#FqVy^j ziShK4MiT`@5{ckv{)Wq(#J>z#A&w9YT@@_ar0yamMX~LK>L-s=6m*@jrrU7n5|f^;Z;~6!E<|ZPnAe z=ezUSjw>n8JL1>5`Bq2AwfD=~7xiXdd@Z-{W$9~y6E7#Nx>&tDLe1s&Jk^gWJ)y2Q z-xQgijSt$&CHAPiJ^DGd^`i0l)w=Ua%Rkrr^;x8$AYJIQo#Y%3i?Ww6+*8A*Zre1i|iH|;u)`rWk zoO#>qYSGlYnODOXxdwf`yHDD0zh!!8?q<2{)LymTGi9%?tDWBTCZ<27UEces+jM(@ zQ`x)Ux*lG6tA47{sokD6i(K8@qvjt~(%L#X_rcffZ&^OamM!1@+xSb>dZWYoN&dH@ zJimXppTAd9BJ1|)(ywk08u-#una{r$5UzCF^XyXf>A%(c=eo2nP(D9x!`Y`+JExp{ zd@uIZ-9OK&X0hF~zj-k(|DCPyFFW_&ey0B!%H%Bt$|d@rJbd?Ke*KYOCI1<2DaU`X zmHtrf`=mxWGsQahZj#uvdM%BB&#lL@f10qpn19sPs{VD<{s&b)52wvPX_0sN#UAT5 zS$EDq^_G&n&9{Gp_n-WyLej@q#@jC0vQ+-N&pF<_w}s)$)6dnO-go+Az1h7bKaNfR z&+y`=ko@EC3@fhOo%m~Cm5VhimaIzhxc|%gbA91`$@6LK zOuOul`e&HA_Pu&%tNQQ$gyhv_8;(rZnk8{R(qF}AMQa$R#BUU%~QkDFDqpIHlQiR|c%JGSrcj%^2ZJ)Y#={hFVDwrN^;{`b{^ z`|l33wR-wbxek-po1EKXbv*uQUifQO{P1R^ z>YF)-X5an} z%QgR&y{SF@G3UDa7SZ^tVSj$j%PN%7?~IKv78ZDT-ENv@a9POJ$kjqK>tDyp1pa5Z zrRw9n$+~ZEP<6~7eVKzVpWL1n-Fm4}Q22Fn$~>3fw|Bls5%~ITwb|;gt4~(%ojNXL%Yg5~i&=WA)ek?bjm0)7~eu z&HPrBa8uND-KvLEpIWvGuf5*=_h4_Ar)H?t<-@|E(L7%JCM|ncJg4)_Q@5?s+rF>9 zD`uWGZ{Oo^Z%1dZbCs*KQgZ^G?q|<=>f-Y2svn#1iXH!!M$1O`#pl%DWEGabyKB+y zXxSLw@(-&Q7cKkG5GWY7O=dabIBxwO;nO2}8Kt*b1%zsy%VV7w#h z>wMPJx!ae7EqmwEmNI$y^)uJze$HImck|}8*vFE8mVVlKuq^I}?!s2_KbP8%ef)W2 zi`@OSxj!yj9ya+lEBDcs%XZ&muC05q>C|cwjeW;WdnVSMoUnGzeT{DJBYNSHJ1aFb z?`tXjsJA^aueAl#pQOTKU`R0lnSL4@) zTv?~T{%dHNx1DxwSJdo2$FOVLI09o;PV~7X3$DBxddYHkb?EY2W+%RtdVZRcSpWI- ze}>E3cPu^lyxMWc&SOE_e=7fHcv|DLytT*fKZEDtv%A%I*Izy@yI*bh^*^yT^M6G- z-&u0rf2Hcgv%jMrZ@uPi6#r$l!qVI2R&C)MZPz7-zWw)YVM^_y7~!CTg*Rs}nDJD` zQ0G_4%JlWq#NOP@%2tSc_3Y)V+7SKnTVGyZS^x4usty#G zt=MY0d$$+=+jwpHvX!;`_4aeKvQAeS$0z^1vu&Pq#eqEg8?r60ctUHgOZkX#v+A69 zdvEK7_c_`7wwpyu!Jd%?Ubq`Py~Q z$k2;*B_8_@bDl2JD3nQhSTaBFRTKNUmHY18S-H#nZRkzA&+G{X+^kbi3rA0`pPlzYy7bNIIzC}nuGxy#*F^n{_q#W5SGjt8*tI{3+~UXn&Ne^Q z7g~O_e06Tv@0z*K-fjQSaP95)Ipvc5)65O0Y1JRs{#6#&J@I4WdE0fsX5Y-IArYm#u|F^F-Mv+%ZJyu5{|wpc)5I73j%eE@z4}9b z_QOqO>tiJAjW)_x9>{*sJo{+ety!L;!mpon-YK`>{Ig; zUWzrxeXfwbn7IG?vHhh!9aSrBc79x$^`pC|H)`SSeC0Fm1#;g!T{m<81FzKnTN9J^ zyEt0yTY-S zJ#UzOxc2L{#`(YA<$o~z@SkCC|6b{^L&vK#HfaBQV}GYB+*t0kjNZ)^wmYJNJk&x_nyA{Q7`K6tu4|jHgZkAwL9;+>8jaUN;3*Izv*83nV%=8^LP6v zo2&=_88%mWM*n9x=Kaim*H>HH$1!U+=Vn{{SyIKzAmHA60JO59#oB4d)y)Nxhh-m| z?=Z7EebsrN#?iHY?ppWP2OIu#cbT&{Q0|-7&ikf4)qA5w?k=10^d6`FPP5SP`j363 z^JAW#*p#*Rd-Ce#H_vzJ%S9;tTW6;9=Gs=X+r@^Du6IRNdsbXrb1vi6^7$Sn_vf8% za=Ll-OZl#CC$+WS+ur)~H2$v3`?4b;H_Pw$_@@4-z41}?>ckzVu2*+3a4NGLEqXIs z;lf$(L#6$^Oxin6#G_`N&()|zz->t8*jO^wAwff4$gQ5Q! zmYq&z5M--h@L^zJ5R@ulUf6r(#%7a?cMW~k@wxWB{%!33G;rtaB3t>p?ThG|>`dH_UADx$? z?@3P#{{C(EU8_T1UHmHKADxU?{otFe)RXw^+POSCoFitme`CYpe zpHCju=ZVzkl-eKLk@7*wpQ-%H)WSvI#ii1<7OVG$KU;UIYo2a#%+*(2?(PfX41bs& z`Elja%ECL7)Pt@EFMhJ+p5~3K^{cn|t>`>=G_Eh{&Ap1dFZN2!ezP`v_Ve%{Q!!rM zt30RWXIahZyWAeH^~QU0{gRDTdJ`% z^4g&b#QoDzol#Cx|dmdgN&>!X6CI~yQ0bB;fkGpuU74hIFkLU zerfrsNvm&29l(Xv$9#-7iw<&ApZPDO`uO{uUuXht$zgDnnXN{Fo{v!`7$%T6y z%lhvrZGGv-SPV$-MfyRy|?nB)Z1_7^`UiqvX`6p zv1e`m6ZSEBUUr+TRov?rDjbiUN^3OGV+_`@#11{ujq+O>PBZ} zUY?pKKmY!dQhvVrJ*JDB&uBc}))u|ev)XXWoY0>qzvXGq^4wZi{w8}qkA@P1tFT>|=mcBV<`($n2^!!zO?=JnN zb#v|2!t?$n8~lYQo|$B>9e4EGqU9k$4qHE#uPV!kmbF{>%;VUX?D(>IE?L#WGf!W* zdcxx7p%+@0rv1BpPdjR__3XL3T<+G_R$G}=Y1LN0DW5VY?B&_=6K8bR-oNLy@jt_R zC7F{c(XI{oMXec?NBz!UvzdS7sp&=uu1N*!9+%z<+x30bPvN7a_5hMaGDI6qA^ z!1LlqtG8Be@3*daJN>7G@|<-=t5&UA9~$~~;?>jLw&q*io_kNfCDZGBeP`8~{Y8eN zA^r8n|1PfaI&-vHdeP35spr2Wg>+^vD4xDZ?VVp~>|c*_`>yB(+^k)4R!jB3YV$Qy zCdEISI_bx>)R|9bcwI$jqvz}u zwEKEfFjVDzGw0#2zoRV{UYVz?|K+vprfIXHS=XM=TAfz%?%3U$w_aDI^8!~*`R;3c=|}86v#3?6%T}%EuG@IwlIP3C^E&45pJ`bZ5)x?{ z*!nv|ttDxXQO4hPmP2a;A`9o_P2I93WaHNmmsijCp1%6Y_SAFBcXwl+TZV>)d|BTv z&9JSmXZ53~sa0L)?kd&qdbhUnbN=3`yJA1BU2`jShG*d7Q-Z(a*1wDU#Qk>iig(ra zo1XoCwYu8=+lknJteWBnZ<#JEk5k%Vefr~U9?jsINfy}}3E?@LPqLhun(X_l*tVxQ zdcR+~+Ecz%QNah_wQgBo>Ddx`JGIs}Ms%H5rDjUfn`a)^->fat($dm9)n32ukLi(% zk-1)Zo}Rwj*56$5`FoM&F+JV05ofCP6F$wm`<6fN)QZ!w7f*l9&EB>C?{B$|e(Sq! zSGm{KZric<-MQ;mZf$rid#*CwO>6tEPnIip{#z26b*p3b<6YJMF6z3sVqC3$F0I-! z_tBF#U*CA z$cq&#Uj^^I)SGy+qVCFUyUdPIv)PKrmwU}hnHauvb>3}HeKf~Icui2!X`ZtA|UX8R>;klXnX?ggyMe2Wo_l0zSmg%c{cil2FqH6Lw zGhXve-hrm2rlIlr?=%&ruAi2kdwEg*sr%W}m*3j0^h>I*eA+Y1l-1WJg*;iSa^E+6 zzi*|9+p19IK#g_ji_ZyH%sgIkNU^j7geA7dH2tgqIqrpwoy})R~$2yR@ioR>zP&C zV^(P{%buK?eN%hZlaQ~auJxAh?%gly|GDq+#rVay`=w=e-G7hMvSK~1e$UPKtl8mmY*s&`i{~q}#ExHz4e$W4%>3-QP&H7xH zpjyqNwQK)AFQ`}P-L&y+ap2jaoE0l~X;t&TFnioB;(9!td+Qw4kD`^w<)yEk4f?u% z)47$Gsw`#pbngFX7?@ms?Pxr!lj-G}UoV&3>Q6ka6DsFfb8K~VtfSrS??p=5q2hqF{LU@czBqMS z|402T2e;ntl+kXx6BNBKxqji6BPXtYxV+CLYSmHy**qS5K3Uf%)#uF9TG6p8Xqn^j zbz4$C*jcUhJri}(%2M;4QE=Y8^LJNQ3Ff}~9Xlyz$(kM4Lc_25>^^Dhvu>LE`fJa% zR!u9YllHH*2~Eva+W9Bmzgc7P=DzQ%?c!XXACH%})R(+@X3nROTLq^$!yoN7@_eyK z-DOtoF1u9!trFd*?nloR%S_Lx_lvxFxGXKRuUvH7udZED*>@K$H1B%td2i9)-uRhD z<})MJ&xXccj9QoVuzdAhHOuT-+x9J!^71PC?5VTPZENSZ{|t|dWDk9?*}YY`Gbi6` z%cHhMUYf6hqPnghdfL?|5|Xp^@_z;vL(|inv=;4*>Gk(~o4MhwX$@QS6mMpcX`kx1 zB;UXP^6K{cXQm$05-~W}J9X{l_d18S^Bwmrx!$8~u}!}+^X$e9^`^Mk-Ot^=>zhCH zW?XdB&)9eR&1-FI_gr~5OETu}zVLG86qnzk(VPByMJ>iCXs0*WUJS@DJplnrs!(cS38s@6El^vnHthb-1_ zcF1S32UfMEyR{a1dNX~u{`I7M(UE_b7N*>14Q?&HoF}lUH+08=l_ghRZ#w9%{A<Rtb;{Pt1hq^~#4uG#pV`JQ>{fa}+9^LG}-=l)~6{BT|TxowH6mv8j% z{anwQ-??M&>Zqz+-3QXDxh2mAW-ae}EA)21`s6bwRpJkM3cuI5@TG9&ju@+n%Wm>n z2lYl(f8Dn1u9o$|XcNEQ^51hR&#YfC>w2uMu1j9qqFL^)I(Z+HXVvf4(!bW#`ku!y z`bN}^`lplXUxoc=ICAKtJn!z##qmEET|apLKZEkhV;^Vb#Bps4UUoV<+%#wP>*6O> zJL{*r{O;J_le5Z8N3HFsSO27Szk_<;J@!kt?Foqsae2LKZ{+svscOPsZ_ZqpdF*>m zo@CZ6mDR_-ymQ@uCu(o>-2lt=F7+WFLQ0b#^aj>Mz27nGc27xxrOnEqC(qxkFMju3De{ecgZC`3w8%&gF?eesI0X*8K9kmlMMybUv;&-u2& z+rKWaSD9Vw(fP{KcEKz~bHP2LS#i>yzE7u1Z|y4&aNHib>Y>ZLxhub}x#-q%gx}uH zuU^-r>}GZN{^FC)v(^?ZTC`}ntLs;x@9FFIIv(0CdnM;)yYzDA9j%JiMWGSL+S0U3NDyGRjEHvh7cvc(yv! z+||{ut83ooZuluFz- zzRjxUWH){L=TW%sc29rb$q{d4UlpyHc3aiTqx1F6OG{?!Uz;0zb)(p)ThljX>^CGoGbgGHq7Ormvx;U45QG?gu8FSby`Ji%aP1U2o=TmHgVgRx)o->ZbV3Hj_S2 zzNeC}bTwwx{Xpf2u2ntxM(eeOOK+~dDO}f)tkNdVvEuXI+d5ZP?kTaVpYF8vM{Jf- z-iuk2mj4xXjemFN>(m81zeKHHxFao?XYD+hNk^SaQhH-Axt;er8F*rUl*OmTI==JN z4PW#nUyOPZ&+4kb`N8LpuKw#{SfV%Fn$>2le97`ZLweTZ@T&a9u}>Dx&b^+tM*D7U z-m=LDd2G(j-Zg*WM5plPzBy;#nLOTJ@3ef!gVeX*um4i3FIo4W;i0+A<+!`izP`sB zkIZ7Tycm!Y5`0BV{X}o1Nyh5`41R9v_Yxk~SIbxKs;JNZ>)EvbKZ8nLs>x*e#9Z@f z-)=1aQ!`m$ZT-zXh35YmdfGX6KlrtC`nj8TmPOQ8oURj$=qoC9Tjl9=^q*hZ{Y>qd z_BVa?D_{I)kXfbi=1X#2-je#;Mt>SuB%d%aFo@o~J@eS#+(l>eA71v)7rKyktJ_o6 z&9h>A=%=fR*D~%(&v~v~wJqvMxTD;w*`_Jw{;s|!ChzD|sGn+bNjc((OWeA-{KbxqTbiiYaEZxVf)wR*NMuTb!@?u(-D zLSt_oDGL*7UTHUHV%D1P;d*P{8m`G|=Gzby^|oX}K=cYFkIa`3^R<5b-ec8GS$q1;XDvLl`uOXcj;b}iDfQ|*miBgvoDEkuo@w;uruqD$O}pZ! zxE!0ZRIR5zV#kz27L1oy*Z%vRxAl3{;)%hkakd>-7teRhURL&J>UR}a*W$SPc~b(E z7VTZt7wS@^UHQdoyS<2vS?0gBF>l4R`JAVpEncwm;!Vx4Y4@H7`WCM@#Ouoi8n;UTqh@g-*v_R?rm+Ytjzh2 zD&3zWzBVngOTD>bectO`3)4(jp5j_m`{ti4&&rEgdYnRind^5>P}sq z8b2x7z|KlDTR9{yGEex+EW4D~DqgGB{#^YaTw~dr$9w+9f2oiA)MfPa&Fu3x#c%D* zd~1H0d(Y-uO2>+G0zbM}Y&~vY%hNMa_U@GfPhE&kW%9=;`f z+-}N8*XhZ(N*8uk9?~tHdv)GpKGlMqKTBlRhD^QeYOVx2a@g(dgO$6qW<9^*yK2iE z>q5?|YrM|Or}H1*dh6dA{d$SU2|6KDL$?;64B2G3dfSx^`z&5wil5ZKGCTO-pY5Am zuRpx7?owB_`;Bw0Pesdu4(|@Cb{GH8u=#CN?X2pO{|wJ&JnR1UpP?|k_|bid%Q^jQ zhv!%9h<}-Lom*s@*DkFe*E}PxZ(sBK$hWPh_MFdJTz2FmvuW%b=^?DeeFu@y}!E_D_8yMy7I&1k3@`Ve2CFGwav@U7OgFf z^_A^fwsy~@uyDUsuU@^qYPCxFno3bg=(LiLnUnoWmb!(e`>O2JHw(HlWlFGK?dsjZ zbzSuiiaelOhW+c=&#hXeC6%c*%j032*y<+}-+>0%?uLd|DJfMQFnPXhcmJ<@ToyTt zHYVkTzp7hvHn2b0_Rifq+m?Oji<-Sk{hXKEE_0>olS%h4KGVGIXW(UPbTGF}isfH# zPNR~0?xs`k#rFo^dagZZfAo|y7446l+)AOM2$Z)*pEBGgiJht#9GG z+>nX8pIo_OUB0&_aL<}o*A`xxRaf5gDD=VcC3W?eKiV#Qkax6h^{M|1(Mic!H(F1h zny)tf=lm^ywwG9WubY)T{if*GZQQ2OcXqE{wy5`A=(l$(cV0cZQ12?Q=bM zW!8Vw5pP>3^HER8L|^*y9I@LU{dBu7>zayMo!Df5sd~vI_nlR{JXNZn6z|Qep1$l^ z5#!EziW<#ZZa4XVF8P@Es$19k<(KLR?UdCUw#uHBZThtPWN`j}1}Dv`(_9rb+ZI)6 ztriwPdh9;OkMA;b44+12PFxinoFcMnN;%u1NoUj7)Tb}?j}*%5J}=U7J*O|OBwYq@8s;=q4sk7J=>VtkFWOcF1@6l9-q5x*X1>#As<4H z?9-Xr@ooK`<>d$J%k&rBiah2j+aLbrxA2KC_e0aVuKPw8EJ+R)-u-@y{(CEJ%~j^_ z?##KfX7a?l!n5nvyegifcYno>-a{u#y7w*Iab%-c=XT@TjA!qDP6nw#u>Ydsi6kFs-eX#yI1PX`E~P4o!_@zu9q%-Q~I#9-aTUTW|xhs zRlnwKtF--hXR_N5#f#_URx7VM_+>ZK(bbE7nofHyYhqeobK=~`y6;jOZ}{Gl zk3Mp)H{_*VZK%$yolCx)S+-{7R5PDR*Uzk3y5smRwb!RlitG)oKDKyj`Q)j)KjcrG zG%2Xxt*$QF;75;X=EIGe#|m;yel6Q+QqREZreP}G^Y4hB{EnAbPHwi@FS{%H)2?Ig zvbpC@7L>|NeR0HXV_Mp|-gj<`%;!&^KUHe>n=7~T9JG4o#9n0m;D7Vr65IJ^(!Fvs z9=+WfaxZjs!Hz3e?AGntD!pGjR{LtG#OzgzrBB_x8lHPKWG(~yvD@Vd4E*hnmd&!d zm8m$(tlpbvZJ2F;mgV}aWv9BjF9rr*$y9UxP;L=;vNSDcU9R2A=2PlXGjqOdubNdI zyd?Bls7J(?F!TB!+bq|(#7^8@VqU?t;#}a1bNhvlyseNkc1+zAossjcI)-Q2;)RPE zHw0fga^>d6W5*Vmu66O9C}`%qfkC8c|L&OG2FAQ4C6({$I|7sQ&Q5*zSIt`%Cf+@k2mf5&)|9b)vn^L z>*j|pzFK{X{o(u#$(?$tKjt3OvwGWi+hDHU@$AK`b~wDAtLk;_&`GJ6nhUz-Wroj+ z3&}e1T}e4KRP@e@tNR=3xu;|VFJ|?dv?bi7+p;gU^Z4~?>f+{>r&rh9W?*{R#1Y+d zkNHEMxxtSWpCYt!ub(c-&t3MPA+I=j{Wk4AfubkYPErkVEeSF`6FafYT{&j5hhETX ztKv}2ZL?lnSL<46>GonNy@!?@7Zb?Yoy{_kVk}OG`WwHmbk&d&#!52A6e~>+eu^+t$~X^-^N>!?V2B zG5fzw_;NP=VY*M@tL6UrmwWiy()Eo_`X?;uJhkucZ7IEHnb}){A~kONyL$V(``w=` zBDf^Sf2VL_$L%w>R&7aH{4T!t)T;Eaw>E{@{42Qlp~|A~vD;J6@@vvtq9VJBmvnlD z^{&{tw|@VplER&mQmcy9P0nXuUi8V5d-;RK4Qq`bFnc{dTJq?y>^@7ubvt5~--_;i z6ypCnOYNrU>#Jp1N`|vnnXdI~Il=3-w`%LMS7DQ<%rAR)qU*-2sj<&aT<^XoyRu@{ z!^bLzwA6EDwns?)vRayN6dZEw%Ov&n>!;6M(RX{*)|h#l8tZ>F98-H(9I7`XuGE&# ze!?wLv8bw9(~S4@p4_e48yY;%Ts@?yB%WU+#NWfk`e=Rnx4y!|j_!Ob6Uus4c^8LH znVMg+W$Tu+u~#Ebb;z9z>{`8F-Ck>b>~=HI!OdZToPoegHtMnwTyS=fiH+FK#i~5!)PH8un z)*Khs2~+&-@7G!8G3P*nMnb`bLy1!t%T{gswfz}a>f5FVtG2iP4cha{#rAT^cb%QO z&a3V`$<{TUyff}c>ixwLFD<9`y}0iw`Dvo%x{O!FbA(Q=ywQ4C{={3c+h4oha$UZ5 z`<=*{70Xul)@xFnqHNQ z-J0I%%_rV_Zrko&*-LMYMYmkMd}7kZzW8}xeJ={ylzoin&sw_TkGLKCIxF47^W4`+ z+VXtael~cTT9nYj-5%3slozMJzACgReCORN%LzxGym*{ac<*4J(8ij3+<*0YZ$4SO zZ1(;X)B13&U#s+LFV<>hrkCjD`%ieLT~k$R_H5E5Ev|?KO&SlI#8e88O9!s$T`^lZ zPQ`?sdU{jdfpNXi zGvhT?wtdWr&+OF{dMJ->stfQ7Dqi>rKL2* z_m=35(p7)dQo^X=G8gt?g_kRY~ zSE0{+@9{+Gzt*1Tba%zJ8CoiBiz+p>6swNw7$5rPDLk<(Y^SJ|mcDPR+mcAl$IqgE z+`U{o+`ql5x;0I&|B2n_)MaaH>R;`0)7t(nNMruS`>nUS zXKUSEIIC*X#&Wl9H?AGopOdkt`}@M_zfLXPrTl2I``&+t&s@{4J+ZZ3d-?GVI#J)J z#AjPMx;wk7#=7jgniHrzXXRC^U%ek6IzPDmk#qI7Rcn?9=v|Aoo;s!2?q=G$`ub^M zVLof(-cH&kUS4u>=bha{a5-b74-cu7#g^?<2D#{~0dkT)UBx82W8> zQg&eY>$qhB$^PPDK|%Qoi#~J}w$uxs+_&k`*FAPwwcmNpB>w1DJ@#s@d%?mLMa74e zN?m=oyPKX3DUQ2)>)FnAt|1}8`E|T(>tgFu-`efIwdP*9Y18latL`Pq*nrWtiT1W@1$L zzO&(4YOl9<&3(@MNAhJnN7$-ewk8KYp0S+zXJxo9tCrcKwbJ{wyp6X{a>;wW$?{a^ zuD6e3*4OvUjd-^u*iYoa?C_mxbKPniZf^DF-SPM)@2**IQ+GRU2)*QY_olJb}rj#a=j!-T`IQukNeH7W$(^PuQ{rJL-p9g zOVMG=woaL@9pfJw_bl(LW&GVADm|g$N=mDg-nCu&CSGP#AHUl&yJ*h)K)r9fmo0p{ zr8752>}9-(*eSoSsuR~uJ#lrCXG)4+*~!h-OK!&QTA6fUU1_@gns+{Fv)yMt3+yTU z`ZTzF+2_3bvemB`SXmSpF6!O(yTG|c-8b=K4%6!=yDqL4(eG=DxF|E@?)sV0p@p-r zoy)js6R@f@GBDJBb%V9 zTVwg8h^0G@J$rx8(O-I+#`M~$=c+H4l%2eEyX2Q_>7h@1jaP;hy%Jsf?UrcuRB7I` zeL3I0fBA54mB!-GukI$D4_0+|WbT`Lt7Ja=_T+6=`KnuQJ$kpGH)dVjs&&QnQ^Sv* zE82N#-_}qguBeq6S&Qd!%JW>)$Y@o$^EGxN)Oi5aN0k3 z^5JOsQL)uo@Af^HxjN~t_T1dQ(Bzm?uU2)|-;OSDH$AcP#ItfkORLZB!NyhjJD0{T zvv9rdXEA&C{f!}OmTbtry2*O>%M}q%`qpJ;CD)enoqW{0Gg$k!RH@q)_bkFp;tezIvcp_&y$?~Fs1(t+|q9}j$a8_a_hDI=J+jV z7mGZtKR>a)x9q~YyVI@C|7Uok{h#6YV$=N_v)g5|yYmkH+;U%UN#ADqGwHi8T-kcY zeHXiK@HEYv`&}k!MxBg!KkLV>eHtaQJLYbvN=~@k8~gC2Ze?#;c3@stP~;m7o1FCV{_(A0yM9 zFH^VlFFviS?Qp8Qw&c}Uce4kxwWn!jUfsC$^(MpQ5O<}WD|Yqk=k)VQT-{{-w%gg* zYt1&3oDa9&m4Ex=?HMrJQhZO=noY;9*IeIdIngY3yK%v#m0DSzu|Mr+b_dOSbFcpO z(`N}XO50Vh$C_QU6WeOHYSAWN!|h>rH~xGweeddHuQjwDE?d29`PAF1liXIFxu$kD zXUdwQoUSLOJInM7cb7b7Zgs!)*=okqtGqgE{!Tx2z4ZCInjC-i9a>teR)rkut=hdv zr_)?ZNl7WRo+)Bmbjr%BwUt*SRJNt;I_(+inp(eP8f%+(bN1`V;Mf9>>6cQC%+y__ z_sG4Rd-}}8ox!@>vSjZ!&8l^K#4NTuH0s@!8M7XK3OsaepY-0;oHt&aYS|M5ZKm&D zIaluPyw%dm&z@Az+O}~=p7tKAyS01k?(bPQH&yc8{_{`e=iTzH-Cwq#Y--XR>z7ad zg=ZYis~6gMCayk1ZI}H&>5#wE*OXk`dM5UA*>~erd3}1@+htideAvIRV%z-32IXQg zVfSTu?Ot^JoVs%N)4IE&pKN2k>#sdu^y}1~ABHlVXLC2i|7bh4^69ka6Lq%D$^2@) z^EH$Guh_KL`(CT8eRuJ`rjTY$kkdUMomyAv#D|ycjnyXQ->yBt(8r_)8V1p-Pso21 z&Y!k!8Q*rU^ZkF8YJ~r1Pz$XT&YCv+)TEhNzxS(qUYq~DQ@---sd;j274DY`4tJbh z!#R7`v`5=hR{c1B^4inDk44v2t%8>3Pb&Uy7cfD+Y*Nwt?eSALP2vpMUYR#DV*cXa z^6vXx_g2^DecPUE-N5MC1zJo7!4td1>Mz>2XdYR!%l<&EA8S_5yOUcF?c9+oedGDY zDN`nyrmUa)F7NhM&Dkn7yWc&XyRZ9Jf9Bp+;cx3dvdjrDo0n2}@y@l!9WQdF9+@3; z>zeZM?$f7}UMh!|KAYM#F?esSh~Gousb%iFr6oH;G)^s>Yx}o%ed4#W$Y+)9r^ByK zS+B3LuDU_3U zZWGh#FZyA+V)m;449fF9=lm7xN%RwonH1Nly!oP>r1p>Bk7n~-T*a|k<#=}1<6X~7 zx7;~#J9ZlDdwJm}`4LN26$eRNKVGi2N;@#*i);4Q%aOYEQ@(_RdzJkt6s7tUODQn@(6Js>$eDtKC9=Nv26Xqc~+~ePTV#zI<|Y8o29v{fBlXplhQNx zGY5Z5Dr7pb_R7S|FTxgvf3IlyxGz$&H+<)uPf^Qjx}LgB4Dw7Y+P%um?a$R)#wId( zd=XXagkIi!)qkP3M^ml#UWwmS7o8^ARr}-AXyn1mP zulu2=rM~laMxT{=TO7LSlHc8LHO8i)ef6#%p4~Nj6}LZqy$EuA@ON`?rozK3-7c~_ZP@qy(5-odUbA! z&f;^1I|6(DF5JE~G$_on&NoDQ^^GU5p4{!)vueeroo300Yqr=UrFYdNyutam-bhkPxHd9GjZS6PZoxkD8v2Hk>E@rCIshXYD0oG0CC} zCp|1&J+;bRTDUH3`_WI9W!VyU?|k36HcNX>#{##z3vEgt&tWY19Xl;n;`TQ8xYhYb zH{Mw4b~UBkeA$J|8*KvToa&q8;`;8fyLD<@*seJns`COTKiR(5;YxQ)_}jp<&pz#b zdvwLzJG%aEQWnDX`A!_kZiZ|9W^WBIy~}qzpmej+Tee4>vtG`=a4m9C(>yO8X~|ix zPmksHg)5y_E^{f3^?UVG{`$pY$^F_=z3({p@QD`|s$QMAW7qfUi7)v0yeC~qyvDVA z>7{jC+@&nurmimMo~HQti-!JZIQHD)?GEJ!zZP$m?&vD>7Zt7N|5cw~a$9ej`|e$* z@+O*YI-1o#@x=N*)f%HytM=@TxVLIW>h(1%ohxTt$+ViZ$?W=u&#lr&f4ga$HV3c0 zD&)PwbjtNP&f6+}|#r07g9UYw)1^IWb^DCOYr*p}qFqg^|F-kAp);{@k z@6%qR%Wr0VwvIZf{cguw)l{F}teh*6D!u1ITwGjS<2u^E`&)QinyYj&d2iCJ^yNQ} zJ`&qG@p@F@D=)2SrYAQ~ROvI@DHs?kYW}LFg(PlHcLX?>ESxoKk=bchXIYt^ z`gr!O!KwaFma4t-y>I&9bI+aAUZ1LL?4tMZ{#|h7(+Y#tx}v$?&T3y(F0bV^PVwr> zv|L#A?z;Bk=YCy%(L1y+KNQSh4gKCO;~u4B_B|wii_@>uQ%`wF?{%5+*QwlGVpiv; zZGVrf-tV?eQj~i~*6zu^Uo=*;Yi!vytGe!l_NUeLd%klo&5b>^Z{?lOAy<7~E}L0) zyWIBFs@0p+yMFawUG`gb)x1qJzg)ZByYH!ZVYFk>!nR#qTRWZ+0&NJ==Hcnxfw2or$q+ ze?onauyb6kSoT(wjTicC8cN?N|8XzN)I7{CW}HBkxWtPcrFx?Rc%-d6k9y@&6~ zZU5$n3v{mO>6$7>X{*lscGj%4ie(r7yLop3Pb; zv+<^zba!X?OS$^?TP5?wzfJ#YclO%D-63m#Tl{C3{o3B+{=99v`&kaYwMuTjxp6fs zi`Z&0TW8iyw_TaET-|+na{Dx9b$^aJwsqxK#aj*e>`mZh=LdewdbphT(SHW#_rJ>L z-Adl`SW-sztWUkxJ5S{zEz3#AzPvgq@g;lKlMi9byYgDuvd*FzE688&Y^earOlnD;i` zuJJqb%v;>+({jB~#XlGSGyIB8`fFttbiiu1?xBx4r;K#mb+?@CdtTvMyf%_|nZHz2 z+xsmO*S$W^(lO`biLSNPqN1X~tG*p;51X>`?4hi)a(_>KwlPa?S>AW>tlylgm*eNH zUK|_zu@`K;TubQh<>3e#S%){@zmA8dDD^)}?hMe(f2tAU%8%iOHf zf9;H|7Mc8yTeALI<)OWiD~q&UeOXHcuLfRody&@Va(9#A$xVy?9{c!B`rCw<4Ke$= z+s+2>T^pj!wQN@W>ZjGucN{pETDz=L)GTsg+TBa5mYZbs_^mj$?)v0sHW44P>@!O~ z$9LIGeeB-0f3^0W&$|6@)c)>R|6ua_r;_$9J4-Uf_AsdX+cz*UFif7ptUK9CQ>K2? z33twUY-yZP3&RoiQ?Za8*r>%`5AluTncS-uawu{rk0 zBiYEn6pgPRc&l_r%mRXk{Cv?7$F_4xn60>_SgLClo15!$<=p)$t!0)Mu3TQVzP~h3X5;(UPwrm} zzPagdYMibT5InZQ!m+ke%0kKqQ^hZhg6k~#mVOJ zEWUq2Ydf#}JUp$ro7cB<^7Kg6dhOj2b%JH=UBPGB6x-s8W_`1bxT&Re+u42FeO>tz z-*>NHJ<PHBB<}ThThHEwCeZ2z+d*8eu~=6)?7F(=%t^g`I=oPf1TX^Dmm)l z{LMZl*WOo!t(hF;u+m?u;;i*vi5v5?udaOka(}(6S$d=1O|uW`2aky_i}*GzAS_1b z%B1tH6x(?z@OEJS zbTiXh(XjQpHu=9}))j4E_o8EW?xy88Zhp#=v66njW?yW-+K-Q0=KG%yi}k%HQJVkx z)VX-p-STQP_ti(1ACkTH``w#uw+y&t>P;`)UOp>6yz8X(tbN=MuDp1kcPjZm!}E`i z#9zvU|Lr>eeO44_?z4i|(o6r<%PH1PJX(Ka&3}f9{|xs10{cB4?SB(izvt2g^BEg= z#Up8&`%d~pTj_DR>PgSD54`_qd;5K0-Yiau*%hWq^)uJruARO*wC=DA!@Z=VOA_Nb zgH}#HF6X}F%cmpHb5*|Gezoz8-`*fg#kkZDFVD^6zP|3H&V&C99LwGFdy@4lu2m+@ zJr`0u+uJ|f@5)_4@tK>IzuycEwca1z^+mHnzWl}}^Y>d{N11T<)TH%?ZJDmKbX#_s zJlj>XTdzZXh0@CEmo2jLl1z=*yZ{6|JzjfWO{%5#6{d0Y5{g>&#c3Z#6 zyqKlO?7QN}>9?QH278(mnJw$vG|RPbQPaZiJ;leKgoN$wyBQeh_iWNS?N*iGgF3|r zt%W?E^qzR;an<+YiIo=vgV(*N<#iICqOw%ZSMJ==#Ehg5pAKK|nrpdiR?TIft^1Dk zUEbAaYGB>QIM2vRHudtVh)JLCZalNB{zS&ryLZB^>Qe6p{x((hpRK%0NqN?lyO+<- z4J`{^Zuzu5;LEEQx7ijyEZVi~e9YQsePugW-ON@tC#oNMUgXZb=zhKXM#@9mENVb@${!zEB1<)_`cUYwkFhi{hD3t z_k5_2@0`sVo%&h!YI*z0a=&Wh+FI=N%ICi$G*R%CiM?r`_I8#T$T zy~?Zh+RLoll@j{9{$lbpx2uMmJ4!Y%x z-Y!SOHrL+^Ik8_!P5oT;^b{BWOrx@ZkIV~Ww30=u_O7Y)-S&K)WqdWSDeJbIq0zsk zvt0b%-RJ2z+P$ahvt4A=lV_2E^|MzQo{M^N?yKyb(DW^pCL2O7J-Q|-cbiq@uGq@o zU)N6Dw=~pu#(Y!h{p;5!I3$1E{pn7-i}%BV-`!QQktH*yAJVuuTfb6vvCR4RMceDb zf6AJg@PE90spQVfU5jeYvsVWv$(^keT6(NPwO{5^l~!bBSzq&|cOT8(5f7&0#xrO`u{xfv1t&p80Zo1-1+g+3MS<6G?GS!N-*0-O$ zoxgtN#rpZjJK~oV#(&eczn7U|mv5L{vj6^g?BzR?oTzOZ%{*2`&Dm_6FYxv@(5_ne;MKwGb;sz#^IhTN$=W0PyDk*{~` zg2dDN;pz{Kqqp3SS+PPk=B>e=HQPHDyGEvOx_abS)VHlGKh3%E)H8a&ONqxaw}PUa zvdQ|#-igin@%xqZQj;lD4c~9KDKd?Ca{sk!P~KWo3yXdAPhu_Kd3x;AidwOH<>FbA z%CjVA_4m11%3R+XToMxUV#UhWcJ1^2as5syz1)%|Y4UH|U*DOxOMY#C6tA#9NO|6t zg5~A@cTb&*jJh7Y#OrFfrC>z&rgu-u{$!j#q(*k=Qn}?f9+g!P9wyt@8 z?RNK^Nv7h*Qmo{!3Pr?73*cZzkcf%-*oj(o~U3@z=b0(pU-l=Ini+CuAOy9oVHn< zc+^#={Q22Wsk3axnfI(~t^bNn4S(wQ<)3Rmg-4sR{@$ta!dmp9|?F|Ury zyuu=#345b{-0AAe-lbKX^ThROT=%w9p~p67%3gQ=D)g`~_VKMny|<4V2L@TKsGq)C zHGS(k|0gR}>FZqFXA-uHKo_Nlep61Ki}`wy?*I~?wwQRrE6KtR&i)%KF$gGa&eo+jQeb+D>o_CcC_EP9}*JOQ>Fa5 zUAlX9*Aaiw*n7o!zOQcYt`}gin*ko&V_;zZtm8XR-SBPpjW1z4*ZE#Nu}@<~T?2dU z;+dPj_-mvYmaZszEZ+Gur_{(YRQI#>s*5|r5B7cR4L_XfSHJtqJP&!zqc1jV^SW+( z$mQ=HbT8ceU|>yPV69j8Rgn`rYOiL!I`yi@UUh29zFRlXyGH!I{J1OR#iYD_M%x$J z+U@=IHRO76&;E5v^VdKA@y9=;Lj94ynBmPc=i)B?y)wV_Pw%V!&7p6;d7e7%m~qAX zI>)SKe}j%{T-!DC!xG8dY4vtts;@d{udlfpKiS4M=6c0W^QJ|*0I$$RXpqM_t_m#d*N2{ibK&CgRcC!c=X|2uFnhA%f+tit0ypM86KF}s8KKLRy{Xr%W0mSPsC5% zsxDo0-tX6{Rh>(+C8eciuLmvPc`&zX)gsxQYhu@IovQzE*2N6B{f}~{8*GkxKgo2@ z-K)Z@0^i-gQ19+3}PebqVdmzC^}N8ZR0eAGPXhXuZ;B znY33Ao!1vzv$y|eSgG$kSH!nTZDVh?#1XfxYkeoKn8(pk*Pzg80GX9$U|`-mZI`*} zr%In}w-=SszMm(S-4xCbkJ~+iEwN_4Ur|oB`4Ug-GeM6|uC`us_fvrVg_TL_>&x{1 z)|lNn(Pw+@Chx23!R`U~s;YL(XRu>caPc}lJq@XIs4_U zRZko5aoXhG&r5mH{m0jLPvGuI+hwnPYqti62l|VK*2|{&&f{EMZmiaOqAz>azAYgk zA@OTgz7@U1y=>axXV|JuQA(v@_c>+!Qv4@ zPwW?|XB4Y^kW}~X{m-(03!gW3{@%U+>Fr-#<&Rg!b5#k=P&#kJVLH(43YkLrC|9&%_g1C2af!`d;inhzs_(&cz?XI z2);1oAU5Z={VA2veBqVQjc_8uggUD}kuRzSuJhn7M0j|=Y`r^OyouA7^<;RnaowEk zpu@9VMNNh0rn?_GzGQ;+skH3v&nK>PFWNr&;+IhI*{NSYetF~SEVK2eddvMiyB}{~ z87O|M`xqiH;n5*>XVKM}iB6e!l>@g1Zw|ISxO4d?U9oVtz7T)a^1`5N%bVv4U(efj z%<}brhRU_yR=2)xT{CH4*X!iHb_a`APFfcgvbZWd>Xl6W)8`?*fif>*o~?Vi?M+C0 zV5S{Bo?aF6DVjVE(9K`8FLL?rpuMZ^y<62}8MtD1{S7q<2zZ$vZ)T_xoF=|mJr6S*}m*$;Vw_wROzh5i9 zhq$_%Ms>`t*ZOt$`qiDS7fu#mk-7M@^wV68v{I`}w{?H#z2Yh@H(GuDy7u+d_=kS; zu9yc0Y|(f5^y;P7+Pu?+CsoUh4tt$=y39ZC%*4=>-;^f`*L7|?;V%A8%<#sY?wm8( zPhI2ItlG4sX65#eX6gCYUpd+HPPugWrz zmiM1vx6j#r=k(uPHf{CA`rkzAnV;~lpK$(N>c2ztt8A(s7KVCNNuB)m^7oFI_rE7Z z$QY!AR0U4BUi9g8Z~Vpdb@ysgvRZOiUo>B)Mx|McOb zT-)Q?PcLR=xt;JZU4HWJ(#r;G+b`aIvvl+K+15AuO3uFg`u2O(Nn!sj;;tVvFJ&L8 z-x=qrq+DNalDoW7rhC_VoqYGw4>x00Zu`$rnl)vn_bj)yHw;hrg_rcTU3ZKwT08qm z@TCJUm)767wrJIV2Bpw#-@>!>Hb-Y>J+IZ{jn11mb=s+4+ZVq|oLpaW_NriTNwLb) z`^){)o+ib(WS(Qr{bVgWE!tIUz0pzkye>A&8uR*)?8&9SuCKiH6IKc?`jX-NWA5p~ zBiCA{yo}Q=_TQDg>%w}QW}}l|#46WDZSIOUoZZU&r1yJOb^xfH!8XR-m=t-FV5fUZrv22v+YG_T>pyqa-H|JE5)bw zx;`taUzGo-?JwMNL=oI^b;5%mbNtFKZ@j+r@xH64^?&g`+?!o!9`~QYJMR14{qx@b z{%Ut4Ulehrbf&leIu#l9?WD-rZ#yS#?05MPnt2gX%fjmV zUu}O%?N$}Xyvcm~JZMv$%&S*xs_M7)rHB+o$=}tB&fDxCn6T^UiRYUZs`jq)h+CVq z`f-uE(xUZl?@xa^Ub^n%5!)QGSo!1YB}H><-Y);~Z`;*i|NdKn(Pv&RpZhl7T-$1E z@2kHTrT4wu_ZUlt>i*B*Gj(n8bH=#e`x}?sWKUhU=p}bvy=cf(-t)_MTv;2NddgC8 z>eM3p<;IVy-gVraXc@82#nttn?jrARmW4<2^p@-j2)mtibH9mcfR&{5rd4`xiRb+hp)vI?&ufmr)9povOa73?o|u=LbCL3zumn{??v~noZXA`yA)-E zdQ#raoXWMeUR+&hE92H*jSH&ur`)w!b(S_QkGSc>iv6F*T5y8nXKe1mwk^bH2KSQEBq>^Z;Y5WSQO@iOM_s8gIt@L+}w7Y9x z&OP@(LlHM~8&6limyy)FxagEK?s~URJUhPqbBJ}fJOB38Ege&Z0|GW*+jQdjy4$}d z_QqcSSy55HFzoe(pC#^MJZ&ErTlM}o2%zMpLqFd+><3oGtyj(mU`)2&GnmI z_jFaq?Dr3zZw*epYs0(v$d3As%X8RnKPj`;+13>rm)g~LSA?hNN8XC-YOlYp58euI zdAXnJ44L-Vy=bbYll7Lz$;GOYi%e5`Fxu-U#uGw+!is$m%2Um1{ikP=- z`Mp(pJr%mKw1-_!oYIUGi&49K3*08Ihc(+PVfEkQcYjJXQ5)$blxL(CXVCU9{zf_p z*t?WTIsnv zeglJ~s={Q(XQ#ETR(`Jb)qSgbDg5%Lt)bF)wRgSS$FcfB*S_;YD-H$yTJ_XuPV(2e zeODNQLMBgSUSh?}vh%_9s4nZ?c@`P5&c$m=gRWb-zE^a&m07Xo_NA%{rT5$Y1LrpV z<#AbQef-mPx5(9QrlLz2SergfW_-3?*1o?wIcevq-t6Gg(AbFr%)j^_X<349Bd!to z2U^9yB#wFQsWsXYZ`I6INfzB?6yhm)US`fZ*QeFxerfCO1{ZH)4Vc|CW${&!Q(B%! zzgtKgo&2rnB(HqMP3x`I+p{gD=9~}Dx%O_iQvN2je;n;LjGC67r(z?&83uZ3Z(tCa zKbcW3Y_hymYd4Ez~@9RIms%`2XKTla-du-zQD)Wm~Ti0cWuAM0S zTuDFvKf}W_tktK>u00Ff^?m#L(+&(8+LI?TTbM8&S-ogl*0B@U7nxd?eVHn{TR(R4 v!E(R3ei52eLZ;4~+H&+fzwNKu+`RhvKV#-z&S2o`3E0f|EQXPp|Nl(@P#4XF diff --git a/xbox/live/social/oskiewar-title.mp4 b/xbox/live/social/oskiewar-title.mp4 index 2c6a43887c5224d0ac13cc36f17e63a5bcb2c2cb..73b099b94fb95163d583419a9fa36566f1224eb9 100644 GIT binary patch literal 232200 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

Vh3^?3MY`5b*t|hUemj8%yPQn4^T|FFoG#s61s7 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%0D}P!&-t_U&ffX6Cnmf&{ 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 hDkw=_<&i^+1? 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

B@!;1%p5I%-Ia}&JX#chG z{N4DUYvFpP8A~sF@ZS#+4CA%9rj*_Niy=PRekFUL@CAO$rTNEu56<$FdjI^CreomR z`H~&-A}c>|sWu#&(%mUkw14k`?Dk19+qB}F?@i>*nV!#f_+fSPr~fz4yX2mECwirx zty-s)^@r&62gVJ%mGvDg#QpLGf?_UA3SeG5Ii$L&zjV#?;Gc)v{;_W2{Sa|0d_kN7 z%j5eKvjNeY|N#^~Am_tyYYZ1#7+tlviJoU$EP4Q^7{z z%TrJK-;Vs+75*#qzyIQ|u5aIYvwwVd`HT0;ed2{yv&=)vOr}Xqv1gaJ=i6qpc+sYZ z&HK8(Hq=;7c=|}}M5OZC`qw*JpB(;Udga>GviYa}o|@hICHtv@g3tMNZih9dE%*L^ z+4HyJAKo)xYIW~`{%t*xmI~Sxa`oTDPR88eR*}7J3Mfo%-c=V){C3G zk*6<%Js;QDWUzl5tFT<11#1L*w;T@g-aB#X@2cc7*ZPhryFR_`{O#Fz`{vsrzEwvA+rz zmt;%7;T1gEd-$4h?@U#0Ca-z=Q7iRX?*H=X*S=sk=|EroYK1SAN10}K_pL6tKXZ$X zZp-wic2YXp(i8WeHM+!AvTT)m`|;HaIirGDO;#`6^w(TULe2kGPU5z@klnxRr0?-e zzfzE};|u#F&Y%MxtGPBRJ@vNz|L*1grm>~{4DPx zyVaImt*1=ho?e?&wc+pCMql5Hx3Xd%+?am!fZeg}yAJjUZ)%wlbyufz`N2ubH_W6J zCjN6Y^sbdoOJDK(!$OWt&Ks}pJ=M9QEyW@K$lmP}b|1U-@6zq(cs4I-l*^x4F>7%|SL}h^N%pZ-(i4LxZp*sBz&L>; z_6rASexTTe;n{WP()H&I6d4%!w>!>$09^uH4<5}l&}dv#!FtkT)!!=LA6at@8n`#D zH%ZOBGrf1>qV;pl1mxHmzRsSpTX9PMw{(v62_+3-hS}9onp387{+bq9rjW4^G?4X5_E0PhKW{|cNebM zeJQMIdhwew!*^dJK3+I?RF0=F`@kW~WhPNZGX?neId;phzTUi3VMhjMMJ) zzb)Cl{pOXnjMRp%g;$Msf8*27tJW}VaCIsaRQ@${Qdm;KfrWoU+?SoXDW1@OfXViW z_p?dHpKAhES1n3e|7OSBZT2rt2JA_?;U6t$^eJGU!d*p0SJSUWZ)EzFo(BHzGs@ZB z%bYvqk^4q>DaL98@1DJPUzuue3A`q-&m{5l?bCIF;y3@dgqJIp-JR0F*?4A8R9f*) zfjw0QAuMNNxDmP6XU}6CU*70ecKb&K2HnnQx&+eOW})o%F*o?UI@%SYV5v3 z{lGOQokzzK-n})vz!XvFoH%L5j<`E6xhJD%HO=2@aCF=J2@h*}cJt_6-2PInzU#-@ z*6_lmO>0&zeZL`9OYp1RfxP%G(N`XF?fhKEKODH!mDw&V)?dD@T5rjILEVTo?hDfT zCk7R!#U8TlyCwMk^t?5u@8%cyI|!K1izyOV`&vsV`}^q!F0-1l16OXEnUcQNacQmg z2lt&0Ei;<;HeL96{PNv*A9sJ>$x=P-!b2-@&0UxOPg$USs#7#tzsBP2W8cq`x6YLB zb52Q(y;0`1y3Jjw=g6myv&{RQw=;MO`c4ERgukj@^JM^?M)$VhMLQNOqS@YWVmriCRk{xRInS5W)yeTVuqC+PTvbl z{|HFC3T3=HXtl|iS8dN!$JvQ{BhzmDZ8XVxEw}U5&$`#$U-tA`8_p72P_RAJ%uuFz z&9W`>1{@o2roI#D75SysxZ(--rCX9I#_}>|uRm-xs*KCOHe1MKi%iOnmq)g?yw6Yk zvB>+Ojn^u{Rm$hy_+7|oxt!dv=}t#q(eit_QKGSGX*o~kO32?0Vw!!yFJWrztmlDu zpz zB(Xr=toc#m;#(IMax3I)zqX~K_Wfd!(?PE))@mJ3L-sr&ry0)RV_FO{8-1tn{}}OsbkA|8INqakbp)ALlkrev)xC%)xAvvJ71&%XD|-b~+OR_gy=Eb8NxP5%%2r+c(~{qS~i?PGJ1*Vp_FEBHQ@ zeA~Hn-!UJRXup{u8ydE|rrrxWxQ^}Ag$~Fnk{pQhh8uCut%&5-A~#O&mxt%ps17Cw!dlkL9b3o+_%i1(*OC==cLyYxOLj6a}U}F-TLT!$~Wxb+J@uN4jFKeCl?dSO8);{NX9>2LG6H8>K-SzGHt3NI1iRYbg+D5_mVV7>R z)~s!Z_V3=>w6FU9!Pdz-ht>%8u6|o%UzRfO^#3f2Qhbp6|rWxfCC zeC3$<#6tm<+?$gQpJ$FMc$0iPx8FG=E8&Hy%MqvB{6`L&Pn=P{Sfg#p?qb#?k9CU< zTDe)P$@j|pSw^08VPIQwEdIHW^Px|S4y#ti-8(0%=-tC$mggINCel@Gp8S=_ULEzH z&viHTA8MOm=bJw%@OZ4K)T#YR%XJuaEY2?~ORKx)pv4(KM?-Sr7k}1p^^A)?D~l^H zZAy_nuMqi7@W$-h`;M0A_U5_FS2VL)rD@AE^Kgr@_&c^cV$557jdP7AokKnP+OSC%g$(inNUj1D5dAPhH)5Uc{>*c(4O}V~aGrV|R?WVLu zra0HF4L%QEtEfI{JGOi3l8Q+YF*f_wDju!>qNuGSnAVr$&A=RJ*Sp=uGvwf;IMM0? zd(ZDmMfOj6i;~tp;5{RDPN%+Ccy{0mPNCp1_2=$PIwpyo+*>cboM<}v!hy3JeKu<@ z77O4D{$#T2Y)ikx1yj!i)khjk8-katQs-m++;CcKj{TLZ%@Hd;9SCrmx#f8N!o-`d zr@n2=73?jDJ?~wSnc;VuI zu9SD?4$PuIT2fn%N456OmfAbP#5Xg^NR4H0(e2#B*F+ypY`f-BvL+<&$(y7%W|g|L zw7P3pUB%lxKjw&;sfyY6&+aGGtOs2;8> zSeD+tDEz_~0r#85{u3%%FHE^S#lS4*$4MipKXue(5c^n&Tiy44f3!%nk2UcFDB$2|Xndu6NPCzi=e_g*l(-aP$E z$<~6bKBJijbw9XnZO%4(%5{EKgj1NZ*JW9T|F5N9`KHn@I+ti(OnKaC3@^)n`JyUSFTF=Qr#bUJMhJgob85^$5-}!oVEDtqFdE6#=j;#N-z~s5Z;!z z`I_G`r^wSa9Bf|NzOQE=oG1{kbhvQG!|C~zchBI8Y(an+je!zldFXrz3#2{SyI``J%&%68rLpY_}#h7)r zhHmA*vt+4R|LV;~Z#lJDW_87{agyuZQ!OoY=;iARk*lXzKR@ERcuV8K!uuAHzM7j> zM7=-p;-)xD&5FVmKX{V)zN}f7+N0HTR9Nnt#>M14O)N|G3+wKFp6UDXrI{lOn_A@U z8*EVzHJOrUu?O$A)OLIJBe={@ymk7|cZoB_=bsdItzBIB@5tmC6&rL9mCQZ9ev_TJ z_N;8%gOA%Mn^&Fg?w+M!8u0xTqvdv&N4HnMNW8RHY`c0TBS+14`M zIYZaw!h`h+it_ShTUDDcmG^Fq-LUFm)#as5OPo)df0tluJm8B`)=P#E~n1riM#dzr0&p#-%CiQlR&b@JIWzl>Fx8 zS*-dyI(e=BOZ@DeZNA`;+du@LWv3I_u}_a{ssU zPcmGX!EVnJE9zMMAuavn<=9`9T+MUi=0)(`_0-ey3@Kre(SP5%w}qL3fmzORo*Z<+ zYl*Ct{*>!`oDX`qHwS(D$a1X0EBijgCM$(iCSCq# zURSmR=2-YM2VK^_KewR&>xQY76TQRTZ{Lls7W+{ip(XJ`=N+f)AO3nyHW$CPnI=Lu z3_qivJbEn2wl;U-^*#6Y-U!i>dy%o)sX^fCyXDIxEmv^wTi~SqVB29ImHu_AhQLU6;MIdHbw0))yjl>bHf7$zD7BZ`1y_djBMk?G4X& zvti7AAF;OMx&6~t#tqfeDl%&JrRG^mJywx?l>I_3)krhzDE}EBasTXlRtp^$mpsYd zZQ5&*Z2596x4pm57sZ$@jCJOhT-}u;toozB2J+2iy3MV<;L?T$mUNkU=AB_1m|Q*F zG|%d%*O&ZQ(GkbItNmXLf7Ys~V=0_>&sV!Hs@!B_XVp7dJECRh)9a@-D;~=>&&9_@)i$N!M`zVfe&QP~7Rh7ReDP_3 zU%!~I^sZdZmZaqh>(jP#{@c&Rc`#gPGt&oOwa?wVE4g<|GAHTHTKP!aXXA#Pp_wWbl-%l`TfBy3I;?*iWpQEd~7rhag z(i|OM@$4mc!oIoB4u`yY(O|x!rhRI%=`stZLlvyXpK{Mu>^lt{^ zIw`iJ|+F|fyi|T?;DZPK$?jI=I?7Z&Bis_CVV!In(F7}B3BHz^e zdDVq$ncK8#i`KfveHWem;!4R~-WLoEQijdzn=VZcVqj!sVElPVaNdPKhB^`}6c`v7 zCNR#k1ut@)_IvM|XokN5EPs8ZZWJdlFq$?nFgWK1y=7d<$8-cUaI(2i(t4axKp?On=hiJA#N-tH^;VEJRtzcpv; zw_i6uSS86_eX#IX_zb_3Q!YMy!x56+e*3P+qy`3-PYnzV$qY=9s%&`y-Uk>Mm`WMv z*@K6Tr_I#)c}M5w+Q@z032(mbHr3ZV8@%{)nXgY}=&4B@+k@)=EWLYK;gWnS3nSOQ zYxkILRL;tk{Te^WJ^k?V0NX7+5@(aWgE-n6pA4 zYs)4E&bZ9^B2_betT-9pf8yMgd$HZ$fT3x2<#FqS!d-b6#Le4Nk8OR}sCTSNt#|ef z#(R(F?D16l>+*Wbp zf_3t4jy(n%-|7`vOfG(uocHp;H6)*|XZ3DlulxJYJ8Y|@Ee_|H zAN}YNlXl^Z*zv3-wI7q6at>c8=|={syMn`k94M3sA4cDU_` zug);KqsDrU#UZ%$Sr!8WuO`#V?F|gJ4;bbc9DS9Sdio&)1D~SfEEUMYRgU=o|3C{@ z4Hoauoxva*TEJkZcTMPm#*T%bQ=d-p3~x12eaLCeGT$?Rtt-pu=MU43eL5?9lk1}< z%$2*ow0#bb@o|x-S5BI?M=pPK?37rQ;qU()=1Oz&=2)=o?OCmNAtu!BjC-t78)u=p zO1^+|xZ78gO-mQO>-=c;z@ZMSY~k0IsY3U!UDg#ynU5!drz`)0?YHN6?F+hy_LSq zGr4Q(JAaq^pX=<~I-?xcR*kVOrzPorxV2|karJ0gT4hNrqE@qiV>$Y5drmxj~eM0#S@p`?R_tQ_Qkp<-}m_~x7O>I(|__Se%AN@ z=O1}InD4gSW+ERaZ)2j#`F^gfux_KMH@5P=S1uen9#I~-KfU$k;Z4jInQzp;c(niE z4qmtVz?PV#vj$a@=C?jh=-S+zx$2>o3CpP|i|?08d0I#Y8ntyky5*AZu~6Pt;Eyuv zygeNjv)L@({@ba4eQopHe{8cPH~jn0QmeW_=3l=4I%CnVi}(~bpJtk?_P3)_qkB=? zjk8g#_ER2wmupICskm3puDz3S);mMzw*Mbkzc-gB)qMUQaOLlovcivD)yG%1-pKpm zYsvRaV!e;fv51(Ef2Lt!PtI&Nl=}E@=gC#mS(&VsB!tWOJy%-R?XgYFXFJ4vEW9LhQn7xCM6oqHeI$zr(tLK#lAy1J7Rv%eysSp297!>0cVi(Ii_X4tDov(g@WM=`Y>+aVU-_;hVy zqS4jciQgU+3oe$P7NEI+{Xg4GD-7 z_pr{iP@WX0`3u6b?hD#l_+Mu|y54%?@7DN@j)~8u%RiU&Xs(`8`Md1j&L@u==d~wf zt=`doKHt>(-0N*((Sic9i>@Sk>etLL?%nXwXO5z*okX_XB*-<zu8oF^Q*2*Yzufh%^t5x^UNM%*rGGygYH(jP zI+T3z`Lp1@lOlO`mixCZ_;pLo`rfydJWKUYJdE@Y-XQT);Y8%!zaq^){wjXWPz=cF znmS7{WOdhaNts|RtJ!bWuHEtMPTR| z^FqeOV?mr}{ao|=`OK=}8zbj6sl0K%{=w?YoX_s{c5m%#awEEZ-n#Xio3QfEN4sm! z3hS%o!&g;*m3q7SU{Qgq%=D-34gbrfID&I?o^Mx)nzA=)RhMU#18>`=d;6}Me&sKD zvxw6p_{qDShMGl+F}qn+r)=JP_~e`Y7mDk3S=7&Ol6k{>YemaF;fA?0be|drG4A{7 zJbhtJmf;l*=NAi}iV67XUX=0+TPNEgQ&sQlvC{XJ!^!K#A#3KJk6-$Htx2xkr%;o* zHILa2oIRDnUolhs_N^Irm`+A=J{S00v~-%`n+u_Aan{RT_b|t%M|{hj?4_W$_U~JF zbvZ+RmJI@I|Ao)FG|Zpk^u?!=QTHIwr?wZR>ybi*zqUxr>%6+XN~tQU18p~N5=DY*ky;-b%MEn^z(l^ z?Y?x$Sg43Q`3)zhuf$(dNtZLc9O`i;n@e4pU-w8pOq|r^w7DUC*>)d1Fp@n=gK+$?2`7Pw>cATKWlb#&iGf@zWFYQ9`l|Hb;$ro=>@FTWW? zBX3N6qnyHW=jcKco~_S+88WNsJiPI$;Q^<>;#CPVtJ3nEuCAVwF>%|CuDOS|GP-|Q zr@d5|{qnK@`~jaf$z?3tle<~s^{UfbbqYTfoQgN!bS}1_KFjVU;J3#RJ({Xa85}B0bs8zi#I9{#m_IyJf|l89sV8FOF6# zrcP_W(K>s>gIBYy^#TOD?LSqfT<1yXQU-X{5?7iI6W)n{G^*gV=^LvTl zq+PSs|0nA_@9!6E`kri(c}+M^V1t9`8vP8D`d1$S(p$g8yuE(q zOWudM$^E@PlQ&Fqn6$U_=%pXEA^Y~`KJE}w6U#O{=JN4uCCBr1%Bxo{*uVZ@sm@t# zmp-32izgpwh%HxIb;7B5LY7O7($AbPpI1c21SYQXlvs9|XS!2~QF2d;U=-`!y1DOn zuuRg(cAi-|Q{{_>!|op8n7#!nm-`~OKmD;=VP4b81BJ3+$|l^z&L!oPFr*+@2fz|EV-H%nNwOVQLzFa$#gr-aMVUWiKsusob3-Hq$>} zhW%{aZ^8c|CvDx!o=TQI3NZb_m3xBKNMZdUzq{3ft0tOuTCKQIoLpJxx2>t^w3z5S zq3mz5>WeE*xzr~6et0qWQL*Iy3DvPeqQAfHJHop1$)$H%!G|uZ%AMmfocH<3Op!@{ zS!EPwO}foL_uos_#;{)wYCCwcw%-&vEwS$6g`HdGzOOAelzSS!y_QGdc5-9i^*P_n zW=(XFiI`Ek*!};}taYa>Cx~jwKEH1L+A4IJrs{dt%4J=t$4|W0sZ#IklJl)J>FhDB z43JIm4VRuSB{nUAHF@D-T;ye0 zEu-80WcMVlNGO#1T(U<{EP82*g7ML4_tt=AdvkpE^oE-%8$D;x@U7S;A#WI}`C|5Z zX5X30ZpVwv>SCINwzP(?a({p8+v;CAZ`(7)n0RuV9$vDU&tmEDKIos-#xJ%TSFL)H z^XAc|&iig(i&K<>7bssn`h!GuP#P!2Vsu&ZE>^lvmle#zS)^FsUvCt!?;_$2x=_kbVtsq};$`1jRi~<&uTZME+`G=xW!?P#E`d*K_e349mcRPU z$)@a{RdM9b@l*F5Z+s4_G}x!MvSbG9!$Ud|m-h?2yQ4S%X<=?v-?!szkM)a}8;uTPw6yq&u5 zh>ZEvz~2$_*^&1^(|Yd^?eG<(o>%f2QMvc?eWiC zVth3vc~QrSc}~qdM?M>EXh~7oS+@AhiWM41Zmo{r(5j*u@$>EJy2y&z*QWSBG_l>o zE&6nWh5B!M*`H}7l1%e&hT zGpyY3J7Dv!eUjY1IlodLPp+K(x>BZak%oHPk)_L23*93!OyXw!s?xXI|8%{MT+*{g z>FOd2FC=B&wNl*Hv+b4qRh!y~<;sh+B^34+c@i`50ceRuu-uFJ8ix2LIg z)9$Ii0@kkO+VM+<_3Boi!)5`c28?dU{#0r zliSr>XYI9|VJPvRS4Md@b6s5fwv9#}Z&#l3ZIJkUXo@x?uVlpmhBg0J29-Q(w(xmw zEb-iPZR}IGti?>y$C~t)?z*<|P}1?AvkC-cE-xt1+u;C7S+msEr?&-Q+$7xe)acSkb3z-M)+a<35tek&qAJ=zg<)zi?XFI!oy?^zt zfq{X=!f~FHtDp{O6MeC|)B#0hpZp!m*bi+^P5bLJdxeXO&bOuKo+-XbH{fXe&h~O% z%f~MXY!@_>dhR;!jGkEch9I1;zy15*B_C1)Pzs-2zDbwudoZ1;~DKiAxxx&G%vF}B2p zMN=#fUfUM5>)nAl*KVD?%yzRp1t!Z_GNp`rh%@q6VPh9$7C6so=y+*G$Ga4d z8_RumSI^J*^X=kR)!(AK-+b-p=`-z5HY=KNPkQS8EypuHvVQs_^-`C^p#9-aN#9v| z_p^RYxs+jbe7&V<*|i%Fj~(Y~OH8;a{JE@r{qf!NO>cd>Y`3qj&FTV!&BVSX@tf?{ zH%wiYX>sXQz`ISduhL!iraxBN^x(0s%gW_{x9@j;D|l{|*BU>m4=UPPveUvh%si(w z$>@yGk1LNPnKzgop3F6~$EH_B(0J-CHnx+Jhxn&mV^CQ5;EK%zjT_Zf%XdW{PI;#A zHteW6n~}Q1dZoJ)d3N3l73z~Qn%xz^{pyxk*z$m_a*|=H!t0ANckF&E`2U3Y@<+># zbyTX(skO}JO$fwvUJIS(Nb6c0V(bhmT>iD#_#?iX}T9T9}ZQ%;lA=tMc&DTFKcewo1W~c`}0fqWJiH( zdE}$-aRu6E+zY<;RK%~Hd*`P5su#zDZYKEN#1N{!ue4 zU;=BIU|Oq*zvSOJ5susAChfTKrLFHzSDgHw`0hWp^DY(6)3;?+Jffd`H}99#$9(He zYtxv;e0S&^xYzm6@#*QZTU-41U2!=%b&lZVltM@2PdxMFo(nIO+!|fEZ@3yjKVo|6k8t=ECdoAecc{@JD0h z$s677R%?%x@jbksyQ!#j3e&ORA4Zc(>Rt!TKb-mJL43!IA3xSlyPcE#?#z@2Z0;Xq z-5j5Du4q2BMD%p^0Tm}z!^ABbQ!AxhW{YrFbDrOGBkI9Rl`vkRYmKen<2Fr}V{M&& zTy5z^rLuDm#5P5iez8@st=s+eiPPIhj`ho)#D<==JY4%NT|>vyUtM-bLg8C=tBDe?=$h{xOBt9f8(w9&PLjapvpW;AlM$Roi-ly++_trgjyt?ZcWkw;d2?3lTlM8o0foPf>Bj|Fj%Jr@MO?Xh_@=V&hs{}%^3s0A zZTkvVYBEji=G|e(nbhs4AoO)^%C051=J{Akop}3D=;f~yN`99cKYp08Crl-{uuIn~ z>xW70{ln7o58pmGE10tSch>Too?kzzvCO`@w|4yuFHxny6nZK@K@|5zrlibxL zaj8LINA%ssmCNefPyBs9@x_HBH@W*WbhmZ*ddw3%B_VQI=*)BPn9bcq&HI>~MO~^t zt(w8Ef1!%+N}9bZSI4VA)u-pFiBFrjr0&J_dvlJ7hv%tnG5+b?R4AF+AQQbOr2l5= ziYT{iGj@%(#3_)pz|u=cyhNB0sIypHG<-RAKz|+nJ9d#>@5^DfFsbc=7l0 zWJ`}Nk>`Gk7}WA!x~s$Px@pT+jTo zYXB`iovPUB!E=IvfuWXhUNU5;{q4uKN?os%tPj4AG&>Bm&wrW*t>uO43<_63~Vbvj=0~*z#w?saaM-s3dfw8J{+(i zSBcdVTpKJ~*!Wa-`L$LC&b+t2@?Y)Oie18g^DaoV-zhn+&7JnA_wll)Q{Qggo7*u> zc70X;fs6B_)ng}JHTHbi&Dhyj`}tki?ue&r)P5>8t#7r>nW5cUc)?s)EL=`)s@V%> z*Y@pe`6IZed~0G56iw@ve0u%U!_1axB7ZjQ_EGODT-A}?=MZdjoRPaq{MoV76V)zt z`WNT?O~2?^peXc8waxxIOT|m3n6I6i%dQ60<<3k~|GA{#qQO&DebF*kbJ_X#m-QGg z@>o%-zc74%$Nb(kty^}jPOQph&(TYJz`ZPR`kUR)7S~%J3A9MO_|Mzr7f*FoC~JmV z;_+=gC$#oW^^B-j)-|`Bwr=arwA7xv`{jp|IsUKstsdRRc>eS1u+o;NB_Z>8=0A4WWa`%4!JqLtkMZLU{u@zC zvwZ6XyS8pq5UclCrpo*=kF9W5?XvG?GrP}7>$~q1ixg20PquOWu%`bmo9X>Sr-Hp4 z@-O_HF>B|E<9eIsaNjh4?0#@UZ`#1>U8IJQik*1 z!uy@-3@NMiPKR4No%*o*L2%XU_sK_3neI2*wqbY5$(;KgvQy{v%&0RkeiFxE{N`$6 zR*Uif?CSiVk29hYj4b6lZN0f~KAc$c+~I;uCRV*x z=|BF4@oN~OO=jq7`isPH9Q0kN+7%Lg|Ip$51h1VT9`2T%44%J&Zrs>#=s8!3jCTy{ z4>PmJo+)JuKmBxW(R28hp07A7YqOBovL#z|8EStN*StNsMP}0WX=N8~d2?L$2r?2i zmzM05y1wkO_hb2Dp1e;bQ_fwoSy&xhK4JTkCvGifLP49AKU7I(RYda~d*3Q`o1?(p zLhW+YseOVzp-=78R!Qi%tZ_e}V!=~-WbrN`gM)_Uhh)_5zIbDDtyuHlLh0ADy2RHn zujH?q^RhHRiTj|%6|U3Yw`IuW{9t777JvB0%=6)ovmIPg54jrZOzIMzIyVR>mEUSo zKd^3Mdta^nB$FxD3s}PKDkmJ|Q8+H<8>(${B06KXZS^FDlgH*A{uLt^6`+$KA#CWn z=J>=wk)wMaKW)9Rm0$j3{G>Z({Zm9LQrg`w#YOx-7sR(P?CE1G-oH=y#O4d=KA(A8 z?Q6fj?wkXu(!X}Z-{$_DTF*cIp|q%dOWoC)7wZjreit6Uv#E2^;kvJZO_zHY|Lybo!^5vEU5{Q@D4%Bh*8l5A ze2Ulut)Dk$H!foOTpXQyxa92H_O;FN6SgJrwy#`ZAOFvmEB_O3xONpQ12t-R-;$ zWs&#n-aD^hE!#gQcF8%dV|mX`h=$s)jOftdQvkn;CRO&>__s1_9!|O3 zzR3La{c~ofsvhyze16E^k&NCwZ_>}npRc&j_WW2D@bu~5zw5cP&o55cxYgsv?`vNt zoo_v0eDRu2@=5>bJuf0Z{Bpf@jG6M z(3y#kB2|_@|0rEJxm0TtQ{u%V&c16-9&b-B{%`%+=Q7uovz~pkl;@pU{_Vi7va}z< zr@G`)m)rfEwT)%Bdd%Nqw~t;aCqqS63MICNCbNCJq^&7?bd~1)c@HYn$ozD;riyny>yO@xxqd?J||0D?C^5c3r*wKAPdr!N5wb`Pb}iJN1tpm?Lxg z_sgVXCcKt5;W?_6X{(~9^&C~?2|BUnr<*A$R7QQ#j=o;Dh}jo*d)V}TJl1BmN2K&c5mwtCoB+zVDOCAuz-1&t2sO3f8~>vDM{GIKz6?hU;sJ^fB>>*zI;{Wz0MN zNHuKl+*MoCF8bd3#73#whE0Wn3W6?-j34<|zM4C)YS z>&O&;t-OCllYXt&gabKS^xqaWiqCvkDrfmoZo6@vk{IJo-_SkJcj}zo*>Py``EQGM zHm*^z(=wd%Ci%(F*L9+W8&b_)+~B_!*l_xp2&=^1xU8;O$M;UM{BdEmw)A?X(D#PY zD(PKwzi!i!d9-9k$D&8vA#qMATRYbsx0T6wEA}i?(_-4zZ996SHgI1KK9i9zdp?M} zDEsmAkF%U76>ZSDb!lGwdLMT&?z5fz1?xPTGS-O&CLPS$%kMmQf?3(ATt9}-8`D=_ zZ`Epby(Qq89{*=Yv+cZcR(`QBEGI8Y#i_6w%f0f5nr`yo&~8RmgDZ1(iwVc4pWzSU zn074HcB`=}i6)f5H>mVJ5~ z^f)_rpSWJ>UwD1$*85_dt}D3b?22Yv+hw2=7tr(f^8u|(jn~!O@4eo5XxEgiKO2&> zeIDgkPTJY37@@s4!_%>bYsH7TY)c=OHM89?)BbuuBC_)7ycw$)_m@v^?!WOh{VdCB z*OyN>pH%Oez&3?>$=2lxR=Wj%xPEpK>5`jP>Al9^I{U#|o->@^MRK1O6yBN5ytP&| zm0$GaJoA;4xGyeCUHq$AqEFzr`nhihwyaY>b4GLN^~xoc55u`A8xHI`}uVq z@9ZwM&l4UfE6p%k67Wa(^l2rAtj<*jln(tUZ7JbSJfU!SgMF*y|Jl>Nzh-`Om?2sG z)H)vB843mdc9|Ax5zDfCpSUTP)lOlW$?B55Le}BN5_uJ|!)|}rWjD!8SCdfsTt0KF ze8`2pe72FQcW+wCQ<7qh5Mw#{v}pSbr|NmAAH*E%0r&3>-F z=VEB+TTk9%6!;k&<^X3Gd9RAjXt6$Gw z_{cuVJ0)`e>CNdsuIc2gs4=_Hr|>mV{Yvrm7gEBvKl~Q{R?=@K{OI@jiWc@)=Y@6# zDhni~-I~0~)$7sKHqX}U&pqCRO!!jrq?Dt7y_dq7XN3zd)O^pMd_N|-&FLLq)xtwp_iLw? zFZ~e0vboyom%!8CS0gt+HJr)J_;o#RTH~d+VTqUKAH1y2Qj{s+%NY18;LyYDYsYKM zIgZ|+`6y+1oFVhBqLkYob{cP+^wTz^-#4tfO6zgBb&j4Xv!jLKCEbMei&rm=aDV$| z1~1RmQe&Mb(oyd2;j=R`{tMTaG{v7?tbO^k;@2Hg3)gK@)pL;DUVV^hKF7HlKFzDk zH!-R%{5Shr<))K))!YRWuitd^-R|U=eqvX+Y8_!;$a>mj*Pp}+gD zy!uvKrRl7EOUz%IotU2I~>VkW)B(`WqltLk+=bFh7uX{4HDSbufy#tWW5mv4RM zW?q{c)BcU`)V>-0HuZ^j+5ejOy*Y2T{juq!I}c9QJURPUIWKAH8kIavDURPOHF-Jo z_XjUXH$U)f?3Z=OTCw$Rfe?_36SGD#mF4MBO?k%fw z(!k}V)&m)(L>{j0qdqIVmi%1)X;NzQq;h)&anTEIJz8A0%AI%lg@hj`ovs#MapGJ0 zvxfh>C)~4H7hIcu+h_Gv6U$E?duMQ;wmE+9@}tIxjt>iNrN5AwuiP}ncKVT?_G$mm znM~Lr(slc~78BE!%p<%ZQL3L9PxkCK=G0|nWQn}y>Bzh6d7JLl8r>_G5?H29pKsSZ zrL*-+y4||DcAs(*84_kiEN>B=v3gQ%q`_75GSk3tbKbv?PWL-~362R`0H! zU~v1IeD0;~4}+N$4}W3$;W71)eC(Y}?*^rSQs&TILZ6tKH{4%aka9<78h5%{XvFL_ zL3Xd$PMP#~PN)yAikJJfLE_QRpP}~^4l3zAEj|2-h394f+xi2%W|pbNrA2evie?M4 zi>-Kh+HGgXucsda7(W=z_FfsdqbT-}IZN-~)QuTkwOW=r8f;Z{Q8JQK*jad|vj5G! zEP3wpg%667`+QISR!;xFvQXvI*UA5qmdbuA-2Mk-sl*+Au`!mYp;Cblxx4m`#5C`+9pjydtWYpD8PTc|W7Sm17}zB#MEV zDKWvX_}siB&($*5Jz%^nJx@OU(7bP3LVnw}SbGc3Fl=dHU=Yv_R{SMhw|ZfzXve8Z z_pa)fT%EUe$>PHe9Q!`LS;sn~R|~%F&y>|)EBD}ur0Apt+ui58JleQa`M#a}4Wp-Le{Tu2 zmf}e~UsBhyElx{i+6RRn2I~CcHgnJJ(>l`fMAlj0{Peshb5HnNP0Qkz6kZjvW4er; z)xyY11O>mwpAP=^xO1ho+{f*+w{e*? zaV)%4^4@8=2KScm$yfhmw|D(}C>XqGYI?{%|AxyCzV3|kC~nd&`mkv26#wEE7dxcx z>ulf42|L3@~FI)X9H+%@*%IeU&V;u&WG&$<$>4GwQteZ41C zd92+dU86KkxO3|lah}ud7w^sbuXx%`Y+C)CgGoO)F5NA^)lxJqE%BXX{hzCCRg8*7 zmL?b9F_rffq+0l$+ZS&*vAeQj$i)+^KHje zQr_?XtRML5hLvxyQtFnw(z}8S-mPPc>~NYUHUC_f%by+p@`X=5zkdC!#lt189-CM5 znD6NE6nYV;e)8PMvIDHIr>7Xsp7{TCfU0Tjj#l0>TPL3z&g$=#5`5k^U9=3GuC{Ex zK=DD2=MSe$6nAIYpkeQHAe~qKz#GpL&l#JK-DX(JzhXYS-3;FqVs6{LR1?2S#>+Hx znzCHIn5Oa6e+&478?QBGU?`(r0KZMAoKo%EnL`>fR)VUz#QRy8(k3dz+- zT)HJQt@fGYjdlB51$@s5npf9^#qM+bx$xiTeRrI`%x!$|-9swq(Wm_zq&incdiwSI zPIrm63jJ-Fb^N-<0GM778|C-*`d-ecd%-_D;D@|X&@BFoEolhK}|NUkxex*78@$%Yv zD<;}Sp6E(H5O;ueZp>@(eXE(~xrTV`)!v+Hna}GtH$iD8@4Dv^(_)t}HTci|xqQyA zkXaAr+^MNJ9bn|YS5?}jHutO9HXV?vd0@}wNvi*9J7|z*e5bAnEq-*%L)|*S>I5#LpH?=)5@ob%lF1#&v|j6 zc|CV2_o4SHe{S~#)|&o!p1l1OdyCbzUw(gHxa}#N@x9+}$FV%WM2XiA{z!b$oV(O* ziPEPyR$u${g^R-kt$ZgiFbKKb={i??g@HlqsP&hISg-fXdmR|;gSLF-c+4{Yj{dJ- zQw@1E)SI?5Ffe^!oVOG*&(+y3%hWGvzs7#LP4bfat9?}-O1kjx1`Yo+2YYVyPi1`| zT={_M?#J-!YwhP4=`}Uq*XdB$^4asOe#B4F=4(s;C1hWT+c|9_gO>ug9dq5;*D5^| zG#D6D7(|we`k(IqE>;{Kc8;IXEGtiSrwRAfCWF8$hrWxq{??5BxBaf_he^EwlUg=^ z?oyd?DD>s$3D+u{F6B?$`tID3v(JkS)${9`ypt@ZIcu;;IVw)r{9&bsdF+x%g_H$d zO-Tp)V&B>pIS1O^p0=IiUTC!G&RdHo9t%tRv52MchWYQu9OZpM7e9aferW%)!bNP2 zZ=VF8oAqJaFYDYKuDAA=p1&8f`f4zD_KTBK3VCgtmQ4B3vQ6pVZ>4=RPuT5L%gFNz zjWIqq$9>JWi=Hd;;v>xVRUA$<66wug{FS`0$T6_<6R+fX8`&-kx1&e0)cu+l7<(9> zeEG||Yv$DrTEWLN(`T7FwMe?Y-+D+`=PG-|`Rhk6eM)z5JoHcDSD<|A8k;H8Ojk(q zp82!K=aGf*PpQ!Dt?biEnEvPHmbRWyy6WsT@5|-r?{y24=X$Z`6nYC>kIH`MzEd!4 zR@9Fz&6658c^=lZQ8rnz&D41N$+xU8e5)Vjy-;kBNN0W?A{p$gQmZ^^;<}Tn36Wd> z8TG`Qd^-`Me{^o%(JRY;-r!j`$AEL|`9H3Aa}M->V7}BY`qbO=>*1Sk&#k`Pv(@(8 zH0BEn*X;gYdbEZ?!s>y?!a#9PM)m4iM(1tm4_DR)h5eqr=^{gR>Ced1|AeFL9?o%` zmGa-#VewkSK>d@MYuZzcXX-^i7k#l#^0lH1lb(Eb!1qPJ7OzpbTpx8-F7Eu^ot8hg zCskhS=T0;5Wq#thiS3PsNW>?@?}~j^&T&_ry4`B$9e*s!%Kd!KPkW;k{_%I-WjtFN zzB*ebflH2~#OT$Bpxh^|r|(^@JGSu3`-iu`bFSUJ$a0;-`{nA9*dhcP1-)49&0xy z?2zL)#Ig0M=>{$D$o9N5228Gnm%q$Q%(%YD=+vHV-ww05{+;&c!bz8VS1o?JIcFC{ zz5HhXA@Kh;jeOhRmVR^AUJRHsw|MEiJ^xjHocnu#X(5|zNc8IIe(@{BxA}aWUBP^3 z(Vb0?-sU}N6uhdb;wt>0%Xh|&RR5bM-(>EJUEU&Kzw2z#rqk~ho1`*c`QtP{#ns+z zzDLJ#_31B4=W&D|`>4Uk8ZnV!;{mNVGh`nWoMI^Wx$~Vt-?nWhU7pu&yLIYXRAIq| zY06IxWsj7UeR5p5Ky;aSF|Z=_$=@Vw_GcGajwKvuyFc?w`3X zSucN0y1yZYWnos_sqf7n3T-%R7sgNJ`a0K4+%@Ep_=3o--?``IeP>y=$#vDU&0Ez^ z2RaA;KkWDK<}Po8x2AiVw-@P7oDnIvWus(Z$?dc`0eaf*s&h3$=XOr1zxP@*Z{p_N zmXFVF=jVT(xiC}M{y#6zeVzB|k`3olejW5%(z<6(WN>GQECf4mY3C8ZGFeVTsyV?^K9{N z`w|*i?dBCX3;UWJ32k&zslNK!Y?EXC^qqxK(s}Fp-IFb~9U|Fes~)W4eEuuQ({PW^ z_mW)U8{VHd3+~8r^nU$ZcW_l-eNXT0ljzaMr5?cI%hd;V(b}EZNsqi ztd+urrzQJu^wll+|M&QwPxsu`=B&GZdCN-umwkbo-a0rv5;Su7d`W+0PJc$>yK^VK zW`#s52Tl$CcGYj*v}v>MHXq!4_{j?2-{;@fmpys6{o}*PgJCurVZVZ$qK_HwwV#}x z!g6u>g|bq6W;f6ICLw9Pyq$~-mmE_rezjtq)!e#=Yc-$A$?Q9@Fa7hnW%Jz9`p&P~ zubXb91+OrM}k+Dqn>TAaNubA+SaooQbk{uFKsxmJVT>fK3XMOZhPXE-wBd)w^yIxTE6dV zn$P*`cdJsG%5T@qUfOIDvCQe5?6j`PtbjeiHrL8lKI}?=&t91v+g-i=rkmxX39EG` zJQcF~{HA&1HgUc}u1U(mk1SuaPMfK4)o=59zU;mOA8N17ynWaz?PGf7t6QB9pL{+g zWpXTHy_}`y$GmgwecF5f{yeU-E+Wm@w?+b>s zeuXywKM$TBS>Nzbe&;4m_UvP=aiP*bA5Ol+a{j_nqg5PiqH^zEm&-41&avb8HRsd8 zxt{VjY8)PCM4xbr6Oir8crP{0)9B>N^{0X)xEeqGxzKTU?eC}nwmq*tKdzd7Vz>1t z?se(LmuJSaus43)>%)31CMZD0_i_HF3T1XRXLo)9DQQl_>d1~vrGqVd-`&`{a*ev~ zF1htA2X6CDopaXA!Q$KJqRR?J>{l`?rgvZMvxt~|_x%m8fQtF|;%}~dxLq*%ZT8Hz z%Zkt3-!Ax{vTpK~NGlP+ZL_82_ndWWS~uHyzsY$6$M*a4VhSo{H%3W0mkCDwWN$29 z`Dy0=SyS@dKbVR6%H4N#QCNBCqMOSy%gdk$<C zyLCygNNqy&PaUiIj82dFD}zp^v;TkEn5C{$|E%{U+nt-iM*IwyzQh~JZ8~LY`fK)6 zzCDd!!U8rpxNO;(9v>)ZG;?p5+RZmBWdn0MA15!Vv->9V=!^HNw&{PfW+#0!zF@fY zKCA1Q^>g~14$dy0%wMv2^$iJSp>^`|9gm*WlG29>+6=w>bJwJ$r2{8_nWhZ#5xAs5kV{yU)&Vnm;~U z;`xl@-xnjtz8mbR*=5SN=HAeK%oQW>R`l((s>@6bzqPsMPe^{gN;P>&N)z{#0G~kT zbxp>xZELPLYc=B@`gCe44cLVo_FJ*}D>cjl&7Tc;j4Ym?6&6q8+c z;`eQnGgGWBJgTRc9X_~M|NY4$4F7Di%jK4rzq2UoVi%pwoUl)NMUy(ytv&u$Ew*=f zgN09vnv2Xct}TB$>tJ8Vs=F;d60z?d&;3_1?NhhW9qZs@CSumFO)ftV+pC^zG;|W%;`K#iP%w7F_rydQfl8AC>n9KS%HW%)jTqK-3PN8@=a+-bw#6yY+4Z z)8>aeUKQm?Pq97Y$a2Kw+xd-xxwfC{!c_9*QUmH$<2_i4%53a~PsvGaT6kuq|D6uz z=FsQcEmda!oPOX<@UH`FSZ6P(m{j=Zg6Z0T=qE3Xn~o_b7r%J-;*I5jUcX$eC`Y3; zM|7Xw*#FOaV^F?WbaVVwjz58OPuu;x7yf0PidimKjK;4CD-70OcW_?%Uq|1g=jnm( z%PiC7xU0<16ndQ8vL^2Jf%Q|Xg4U%x*?%$JJz&k_Rs7Smg?4>Ya^shppSw{+Q%7Cx za!0!Qqea^V#bcCC=ryjf+hAYUop=7NnA5Sm_5a@|Rn7UDA*=4Jd%G>)azK^6Qf0?FYh_gDiv}?Eh6GAN88$(=f87bw0CSevgfb+ z-ACUY)!zGV6SDo^7EzV+=4I5*?H|Nyj@+y0oPEOe^$mG|6l&&vdeX8!um7j zy;!ZR^)67kC3C&*Jf#`6#@UbFy?iMCXV=v5iUc;s)3;_dEtorNo`HJy?7LqU>~65D zt>Y*OrGB^v9l7_JkII3QlcV`j!WpohP_tRGDqFyYX15H#~p!60X}f*H-0U|I&Krx7Q?w zlSNB-DvuXD3YpwH+xXA-MN-4jMZ5uef+sP~n`#t(o5GB~R8f zzrJW6W~0?JJ+na7Q_mE$tqqShA76gM?@Hnx`~Q;0bIXfF6%K~`wJEK+-#bbF zmgLt5Zyu$;+V$M0zTbN3y#B*K%9D=i1y7eYn`|zzjm5y``1vk|^L1R4nah=aKl0za zhI#5UO~cE3-KR&NZF*W#8z^y3_XYos>KBLReA`v8S@Y#t!t@)*ZtuFb>Gvb&rA9~p z%w2BDZsu2Nd+lB5OD6r_8YxFrESvYO^v~e$|9CRc+=tm~XP^4%TM>D(_VXFJF|Oab?4sMLrFs{+~}bZXinYesX!V-Kx3?Zwc+1sVe7?5z`V;xtJ4?bo=9yYvSk*qOslL2(^}ls_ zP98UI@iZ@}{Ic`$an=c@UzF2&-TZo;LoP4b;=#xwmAEn|{Ozio#UCeyy$W3_D|gDJ zd(UOVdF_AZ^G3eEzG`ya)ZWjgFY35UUTlszz4Z}gY@{3sYQ$N+% zcjx#W$dTR|7MGbi`vHTN-6Ibz58WoeTMuOmkF7ewr*B@`&hNmr{F=i`tFQLg;!;D; zPgxf+yJK>N|F3OF`F!6tP2BF7usr4D_4&*7moT2*Gi~-O3Cm-Tg_%AciC!waahlA( zdp1js+Jv4dK6dtgz`V%^cg*hSTi%r%Ggsi-m)*a%+C1N|DOoS-?mkbg$tzRZd3HY6 zZ|V@TQhF+P{Kp%{+pX+LD`#qOEc&q3QYS{Rz&%mkNa)ryeuoC_%hpM@w?ZP^!=}8c zwf6Q}bBLX3_8x_T4lTYfoK zSaUA7c*};_^P3p`Iiq=d~=d51btQ^yYi6yE@%#Ro&Dsx$J+Y!JEB7Zq6Z* z#Q4cO8(5@QzgXs$FZ+>A!m_007Ee&~LE)cAo%Na=FS^fYUa!JkZM|yWk1lD(-bdRq z&IJEh{NhyZ29?V1zm2UUud8lhp0P`>MfneJ-l?!PVS8>H-~T;PZ{zEx(=5+YG%c?R zO}slJA$Ff?*R(4OCttZBy}dbu?|mc^*^#`#jd<|Y?{px~tlUC+;-4|_YPn;LpP3n2abKpc#%8Ltf!5Z1~ z`r6wcg>MyGtNUHXM$CoJZo}>3Du<0$3s#*xz`($K)N$S^=uBCOto6pPbFEI-##whU zG$@5$3SGN1bSg)jmrJ$yH>I3OQ)bDkKA0!GBo5q()yP`1d8y$xmEzhW2L=Y&O)@*z z+8nceHmgl~({l!vZ+!gUKmD$^FzN>>=A807_-wJI76YG+-_LbdJ$E`;R~tuPDK<2i z{klDQ74NHzy>qwE_FYu@rBTM!p6$^u-MN(x_S5r~HaHr_y|&MFE18>daWY4GuF9pY zP7YHn!vC|VWGS+(=2ELNH)}akQ0#T2VBv-zGu`Xf>y$m%=ASU!ODpo|&B^w~#}{&y@l`XueHE5pDP3mB z__q0^y&reTUOVNN3+@`N?kKsH`qDon%qHQ~(gnhnSyy#8&AiWA^}FO=*p{oMHJOw8 zIXsU1)SmQ|;r|5bGe@uHUgJC|$FMQ{fZtp1^OCblKN;TBIm#fpwB_^c=;MEQn~iQC zD|cD-ck|=Ec!Ld0qW>E=Z~qeUe{-RJv0RGeH@nc186VjCmIbU{cW1GnCR2LC^~CxM ziL5KOM0!Oe%xm3zHC=eC=N*eHCi{;qsh(HH^{e<~hRwI|Q&&D&#-DE8xFTQl;DhjI zKR^Byoclj;_PQ1B@2d4q%GVj+ie}lZKdJxMw&S^O%r$4jzMRh5xwzEfWuIr@B+idT z8GlxtJe;z2?}m2UPTxza6+LTjwX)wn`Pi8`Yj&DP>SoOvoy!*mj*8ysTs}MdP=?XD zDQ4}}b3QWICfqsP^`uPR?WXH2!)UJ7oGCUw=O@P<+-kDs+s@h7T_0)7osj?fw074& z?PHhfBz}}uENNL8)5UxFp3eVhlarPa42);P{>LaY%`=s}e#BN|?OeenCP90(s#g8v zf7|ycwdp{C>@^=1o7=u8?zJy=PfBZ^(>_1^-XGbp{g;{6)=PxE%AdGPL81S8x~U!C zU%RN4^ZTs+ds#j$W=)a)x$5SX_5F^Yiuw=nPLQ>~dBb-VFUv&ZiM#4I9bSBS;;&CX znd{ZL`lUqFVQqHHt zn;H2vKYyBXKT2=D#q-Er+Bfdky$@=f>$XC*KVALpqzI-HwLe2T*j8U$_UWV9%?EE? zobQUeKRIpcx@l3Y*8=86k<7_U=bElwb8)=@1A|z3=JmGbTy+Kpkqr#u(lN8y+bb4` z8Zt02Ok|w*5;D)R?@`)AFNLT>Vl6hm*6*)TK4Ee&Nm88k5yQTCd*uf@4R>sUI(ALq zWMDY!nj5T>muiu4=DYQzH?r%~9=$a^|GntZc9T_JTMHASB+pM=zf;vorp;(Y)MtI= zs#MLxzvH#$=^0GqE%#LH)mT{2ee|z#T!4nn(v`26Kg+ITV90&u0Lt((2U;4985o%T z8Rxyua;j%wnD$2F-JNGfORi6vUi8N;dV|}fJu5_8m%V?}$g^M3xL_Yh69Y2?gIJ;2 z?>j#QRJq)v6O0l!T=Q^tf3f7k1;rVfck)-9agcs|@U+CS&hqWcm=BPyU*)cS9Ief0v10y)BKIYCTZ8R7ypELnHyvBTiqSqe+e?OY3tVQxUHIS!fE>p z>lufLs5>DXJcW72)CswpB4fXoDXGX?oG#jSGSp`CkNVxG9hRHF zKfd%VvtoF5z1``Txrb-*@N{O^D}S1+{&&g+?uOQXQjPzXUx*45wlLs{uVgy7BP;#B zlVp}5Q`VBRn%=LsOJ+Px-q(CzgLRKDM{<(lJsXqB96c{qEuH8g@$`M+z0HDCgRh-j zfANb_hPcH?{-YPum5!av+RFIg-TK(ub3$@AEY}PUWt`YK$sx=2%Br5Nbx$i9rx>37 z{qSwy(|Ky5Y^;u-Hl{unoVoD(tfiNeZYajBcga@VDf^>hrBTa?cK^^52c8QRhrScI z_(Z&3e&&j$OII<~tQB4|o$<^vsr@IaZrO@$t(aYV+n9gW)myW2&X(R53ShDN^d)#^ z%xvC5*YsaP4(aW3+v{gBBor*@JsG23xpg0}h3bK9*Qu3FiZ&-_>0 zq`9ndS1NuV-TGNb^!1U0C9j_+&t@{-$;V&0UV81y+y(nJxcYajnEOanV!~?m!)K`%ZlrnhZ&qZ(>DKV z)0!@>hkPfueEM3Z)|Gmx{)kIS|DhS&`<9o5nV&df_90Ddh3s*)J1qW+_f4u27_zHh z$0pSNmAz6G8}sIC8b7zq?!6*AChrSpy*_2`mJrXIzV;3b3?gB2hihMmYJf5ZcfjBB zP1n5~IvW@mxSbqly@L#Li}>h+PljR-{GKWwMteRb_r)*uDP zvQO-5&lq2uK6x?ohnd&^Z=3ev#3haZ;R#n?h`G+mcP>*dwt4DstfEvtA*U~V`u05k zv#Qv%hL}oA-07+`myc zdrrN>DLJbQ6T?M3DcpJ9p`Di>+*y)r{YZ`DqFV-Q*6ZyP72gNx>0HvD(zX6zd2$Z#0Cisyj&)@Opdu6-k9|5ZY0_l<#-wu@z_IWR9PB$Mvm=>GrxU4CiJh zmTp;Q(^0CYFfYfss4n!v^sr!`idpIz^SiTnJMw>R&3}L6sKX;Z|4YwSU!0`Ueq;-4 z!b*zQe`~+oma&z7nZU z`x#iUQfkG+x1rJvQ111TpJV6Ca|XpX5|?LvD%GT&l;~NXM?(f!={%^|^VEX?Lr*-}}%`>;Iac$(!`*k%n%=O=4 zji2Y1#UF{A|IQ?Yg>B=k3hh5LWus5cUvjSat+w{*gP*Il^aL9-gYTZXa%jpya}U3O zLpv88?5Oek9OXM>`Nl&U($7!$xvo0lSyI|v^mM_&gPU#VE_FM8YuYvLmtXj`Dy`xV zM@g_w@Z7OuH_t;Z!8I-GvJ1>^9$M@5a!$^)4H-U(2Sm>7u7AmLxWh&Gt=5g7j2{#e zSLo-z*1vi>#qYMX)Wlz#HXdA~?kO41{dDW^bl(p9%U@2HKi`>Jx#qmT`K_H#ZXGcE z9JsdP*xSfIjm2MAO^g3F>zdfDDf8#f__gqD>KxOh+zQ-^?^m^cFS0iO6}4<}^UBEI z3@wpWPjh<2?xZmlWu$3OEvnAYKJ~^VaL4RlC;wc^y8FQCeEspb+cF-!&(>|>wft@+ zmTkJ{Z)H&14%t<^n9jsUy|k$7NbXhAFy`rPzID86+MMdkD?<-mI~}%Z`PL_?{TrI@ z2y*l`yiM;oC_X!TT|tTJsxZ;t@pj&P$p?>?#k^VGscyd4XVsa9Zw`4I8##K}ece1S zmtmp>8)NM6Ih*U9q~Dy1oBup`lV$P4y1+N5nZI0KzjdCIrJk72vsYUruJ-o0Ja?PD z=#VDI?dej!6+(fsdQ!V@&K3Lo&LFup!JF4_ z3;p_aFC~^g`NKa;hs)|sQ{rpW(~92{eyio5Jh6Gs4YlQ0Z~psne`$8ye&6b+8-9Ir zI(O5VTldOo$@{l+oo;t*SvE~zjh)HmTc^tT>H_CxF5YnD<;@R!Sd~sU@6TQ&zv^_k z)eMbYLc6#a^m8)xHs7y3>eUuHt9b3ZWLc-HPq}}v+@GnwgMX6cUP%tcpzABwmY$G0 z@KEF?;~VxX)>)HJf9(|b^DVA}S29(9-A|DNpRS+eF849fd&2!n29mcEtF^qZQCZwI#sxuO@YbUPs-0Jk zb7W@S+}p^ZtR}m+YSPA{1mCmwY+_9>{QQ!9D1hrvr2|`-!3}|i4RK0OF8?#xaagwX zQHFH-Tc^m5iW?Wc3NBq{m%RI7P1XIiM|q9@&yLqInD>O~@XO0*qkm4Z3u9vs^V%l! zqi|2;(#d`6_Y~C|_<8;dFxWDC+D@$#x8wh-+-*_FPKYU)VR*bSm)j=bGym_;3r(93 zi^<-Z-@g5SyQ1QjlIweBwmI&&ANP zCC)#3uz$rnPs6i%HO_nva{_kXc`?y~{aR;WJkRurdku=Ws2#tRc=Ou58GH9MX&YE- zZ9K%XFz{oli1?Oca?^ZrmU2p7S9p4FE?4+D--;i%z27e~JCe<7vSJ}`QzG-y2e<#I zJdp`~SL)7lMdbev>$wZ1wYPOl?TBkzb_smL}mF=JSxVNP{vXu9WWszXb6T_w9bDcK_dkUup$@}Fr^3496 zpQKUJc{cpVy*HXlZ(r3e*z2}?sr6}xm$TjX?_A1sS)0XYr_Hr_*4Lli4tF=R@RHM= zRiYw%NF-}^iQx{WX{R3k?2tSvXVtam*QI1@?y4(}>GRVrJv3;)JXv;O_k|Z5cdsv6 z>AdkzLMzMvzu$LW+Ir{WT~)4lhEkq|9Va&}co*KzZn%`ZeFSh#enu|dK$pI3gQ15wm1k$s-Z9 z47A!yi-oKu`_Wp^;;QW zuK!Zae>P7ONREmuynN4P+Z=_at+g-zZv6Ny-~7l%t#7`qmo(W{)h{`@W@bC@i@Ecr zxny58P2tUWThQb4QT7B!*QpC7?HvbvYUW8D@{ayF)4NpVN3}#?7JJkA(=BJ&|4uA? zzP)>|^4&%LUu>VAD5{$Fd}FpX>rFT9!X2NYHyn9l)idR;F6;5GMJK=dp4rJ~ao>^S zK&@k4FXE2qt-TqTwf05F<~gMY%XAlHBwqZWRG_1fCjEr%k7T!S<>J^xYlp

EdEtmJ5H2sT5bQ!V+N=x&fB?lV|{^xr0u=w z4h#&UzeApHpCGa{_~wef`&axexmO;Uv%#-a-*>XgMMw7(1}Wo13~X~e=6_urxV6eL z`pSF9_rJUJWOUV^FEx!}yb`xfY|`D$ZwqGr{r{rhdS!*&76S$)nSB54$|{Z-zLyOq z-k!0_^JZhoeVxm!o=!Ip%lyr}XSi;s*y{Z++7h>)oFBWx!(m$0wnH56U0z2#^DJ$mkhpaZ8XJik9QmTwb#v`+eQ3A=UjyQ!XCnU9{_ zRWXo_RMRz@{>5#@3V*-k=IE=U{LbfZ90}~WK1WhQZPMmjC+aUpyq0*@PbV&f$;|0;+ys}HJ+Aq z-nV#Dkx6b{ef{;dJnO>a&)ewpfALl`yFL4%b+YGzK8Ia*6&5|ocd~Y?x&25;bbcWJ z)MK4{-pojpFsigDsEI6-4`bT@@x%1wnlS!HE^^}h$9A`FP~SfJk^ujad;6>NY(6RH zpLJTYT{GPgJXQf3cHmAFjCm_5p!Se~ft%BDwvgvTuAo!{#dy#nA{h(!Nv=Nx74}?e zk}lSH^PtR^#p+P8o!OrxU+xW`wO%;;t!&!5VEawSi;A+JYo$_W&mkGZ9R;po}A~UtMG*18P&863B7c9$vwCSL%&x4XR zU;B5~Sf=qjbAHa=JF#fd=cbPC(7<;W?i_Z=y2zFk?i3YltHgE4d+~?K{N}4qv_*AS zSDfy;*Ye<#zOSZ(X+J z*i5I7Mez}-J!xXK#p_;2fiePv*JjHi7io9Zy`5%Xct5Z5FZQnKI=a;IsQl9<|2x90 zx9p#F#z+43nmbocUpaTe@0IhnnP0nQb|p)Ba#$Q#nJ%DwqxSTP=^qV_Cttby=g!Y9 zR;NU~jmrZzPF{Sud@)y0!jEI>m6r zSK6?7-p*8iyA1StN~wR|X(q>}mnpxCY*yJZ`|$J&UU$}q zmU7SeZ>ga3hCOID^UaeESGCys7U<3@6fRufs=ZQkQ-FHC?wTz^GhG*|mdtHk+`(ro z#VWk-7@L}3wyELT!rZT0t!0a61gz()4VQ{LrtD*QRBryw)jj$T^L=*YYvflMdgcDR zwtiloj}oJ8MvKYRGq&5J6IV~aqH^EHL3xVrE3cEaHy_UyTf@s@oA1+?llqX;zWQs< zwKy(~E$KhwR~8)*dh<dC|EysfpHr#;A@TfghqeuIYYdF;vGw1B02hHN9e=GC~oqnxoUFNbU=N|t2&(XZyQswuVbqe9ZSAHbQO1AVr zm$cdUmQCJwy9Mjqo0D&x6Pdqq<(7(HS35ahhY3CF=`C<(dn$foe#^(6%7g%C*8O>P zC-Ogdtz#+CZCZbpvEa>T>*WUo8MgN69b9X)SZY;i)y9*|_m}f6Ke8&u=iD__UFC?p zWhVqa1lwi4Oziggld}EaWBt2q7y8OqX}#VUd#Ta4MaN*H{n5D`ETZPKc(}v3-9Jle zSue8_6;=#mV_UWKg)om+!HM@g=lDNN@R@RZV{WPW!fz+LXSQXs%OyWu;tRVhKE>>7=9?N(%~e-sC7-&X-e$Gz=HECj zYYXe56O-pSxH&$1=H9Y?%h%+f%NMc^q*y9Gx#4WvWwN-`L-x!>aTi^iE!=+MGkDD; z!nW)GH~u-VJ~aEY?Y@W&=`P9gmGNCwu|=^LCj3%gzf$H_@rU_}Zjlnt>$rp^dj00u zEjWFu{>8$u*SlN)>ae^sPhY%rIScdO5wFxs8xlFj9~4cu*WmZ<+&olt2IRAYUOuY|!U>!reizs(Pu zO>3Gy&g|gGkNu+KFYA!Wy?eh;!C~cqOrL-6`h0^Yev4SSPF-NlNeR_^@xC@Qgf_mA zHM9}2$JLfcp#_FS89!Ebd(7ec4oLfV_%w@qF0iSi^kCz9w&V0L}<}+8*pZOfS zjQ3dX-WHf;^q+OF@TNnpuOw%?&-uf3=7PWcOCdoG8_D4H-9}S$rEl$+m{Y%jdwaOB za_f`tE#_6??W<{JP<+>bg^VOX0sW8b_^VZ^>26_;#{Drf_ZMC!?g|{US`! z!OQnuKOt3+t$ImyTKQ*hRTtishYCb=lg%>bJ(S+JU}-^EjzQ2&hlzT1U;cFe-eAM; z_bAV^X5lLC74?w(0;u0Z|LUj zDNHdXcb2NC?tLbBaQ43M8Rt(woi#;%|Hr0<+$|quGIb@Ru1vFi%Al*+zI#u_XX%X# zZ%)4&DR;!Prtw)??vW{;e81-xHnIlkXoR&A=GtrMd$iVpKZ|?WD zIao~gv9qaf?YdgG?GcdyZZkRyYY!~>zDc_0?7RLeOmo`ukDV4)zPEly$}MSarxmA| zy94Jh*`k%);gMMP*|?(Rw8i0-zi0AZNP2NZXzr{MAyK_sH+mzU85OP;EBzk6c>W5G zJMvNy&0aSQciT1kEVHYNJPL1)9LhRkk{@;FwvyxG zW3w)w+QC;ajs23|R&%jSFBVR`y|7v9RBPhxWW#ehx~E#=6RRGGoZIjG!E=sy7+1)< z7LQ%_zo+d{|6qB=_e;ZV`vBvf-|>;##A21tF8VV=FWr0o{A8B`k96Ayj|?@w6lrPi zUVq49s(b-=^q;wJQn|{~Et3>%|5dYbsn#ux^-goCUNm1w_3KBADPNpD!d4tPF8V&( zD@%(x`|Zn5VpAta1PB_IDsKJWFZ9&nq|)p40>=KgCtONAu+jL|iV2EVPE6KLK^0Xy z^u=FjGT(PO9w_E+JX z@(zYiKP%PoW69N}R;uzUFKqN#ADk__+TF6XeS7(my*F|d_glxx-B0SMV3D6b+pzs6 zSHS1Og(dnie|I@^i0+vFAj|asb|*$|sn91c;{H{*Md!iy7M7XYOxN z=A6i0dqs24k?X<59v`FftB=^9J7D%!Ss=IV-E;Ou+V=Ok4OTsh*OB8pw6H<`(UR)R zX1U)&pVSFUUj6&hVAF(&i>Gq#*sxZK{m1WHJG>mF=IZ;G98AkHTO7st_0p|*r)>4M z?#c|*FKxM`zoD#ISMiC{?lUKRf4T^|*DUn^81VeSJdWv`pNN_3|B9>*F0)To-1qzN zlr*mv$!d+If2u$9m@L?n|0wd%jinPOo@F;&DiYSexRHT@ImL0lfvbs+_J0P3ny~Di zRheP7Kf7GZr!c0iy_oZEul>{w<<`L*re zCLPQup>uV43xiJL33lP$tYb&aCj7m-rLRv@RaZzLs@Y$=@kfBHWE|h0S0y36?3X0o z@9yht-urjy#COe7Ey}NW!b@apPdAu5ea^Kzl64`YT*Kwqk1JW+OT+gp`LgL&fcVb* z2Rjr41v;Mga@?MEVZT?Dk>qThqp~XPH@lQiSkBg(FIOk_PS1Ezx&1EBi<7n#9Mj4< zbG`pw18?y6kGu9apM8C1N{L*(YE^={{Cc&m#(&z9zf~j(uS~wA+4|M$qgiIXda-xy z3};0yEp|n?vEp{foz9^7Q1t?!5n6gqK(7UhO9zhcib)?KbRrn-RX@ zpM>N!&dR)pwi4yb(YyrBAf@h#`KKRoBh9sc@#_HiS|2PPAl+H&2SjZ^Ed+ctZz zn5Am(@#=ZnYW+(O`U6!~eU#Z>_j=Q#Cud(w`Zb|o-_$)z=Po`!X?JXvbaRHwLXLuS z!AoE6aaWC4EV=)H_&Fo%&gI6u_9jjdM*^3B5o*1>V4KE|sezVOyZ1Y12TMoQKc97E zn}NW`*Rk8#Bip9_V0m6B{Oz1?K-DFOiw$>zSsYKteTvWjc2+!tVUC#o=KHSlcg_bW z?p?X7?SYDwZ!^;_GleP1mm&U;o^^e-|LO@FR@9$P^6!iNJ$cS9-D5ooDgiHK4$IHhbX}MLO7=z`n=ZUg zW?&FkU~pK?bN$WQ2mE5iV^QG+1pL_lC zlfIvq$XxF!p8V4D*PMN6{jyB4hJ>0)OV$C7-_V|@*E4Y*u?%rYfUMx`7a&md& zUnb6=9LE>mUtI;w-ZLpH8-Se5z;;2nfPsN&9pn5!@Sw?jbpf6^4o0p?5eM=t_vt>6 z{3V)fr?aoyah~S^SHT#~$`=-~uLX==zf5)aFTSIiqXhd)j}RTcj8Q|Dg%hQ%kAE;2tdH^*L7K>kaz&BM|xxjVUs>aEK!J>q#jD`fMn zm27)#--yn%oz@sW)AIePDS4&y=c=4{Vm$hN(Or!N1F5KK+|yuf6M7wErTlUDxUs zZJ4-v>gxoD=)}C@1|#OsbA=l#j06*{eJ~APueZNSnuDBMMBoI%^N3u z)ZFH^y?=k`UWJ-hpW+^UVW|AJT$JyiRhq?S!CiqjzORz==TqWNofjc@f8+7>C3Ev< z9$&>Lb4BsM+?~c<{EuZ*G+q@Y|8;%Fec)u(=QAshOb`3$d?f6{jDue$zw9cmXf%6g zR%>}S(x_W=_s?fa+n0ZE=8oelXk8b@>a={-x1@I21E0MYS>9DwO*k}DdXw2amrB!u z+L);Lh+UA}{&@m%4UG1Eun!+P*wPX2-V?`2E1-_2#) zV_)qmz<%)LGK&k{C*OU_e%+)LCbE$8;cL0m%3lxXI3%pUE^^qS<~e)!?xr2nm6%KW z6h6<1THNsG*QsmY-F&=64(Nz^)NH?^@~*i_F!Y>)W>8#P`&DbUg)U4xJZ8Onvn@fS zT*vP8#`KG3yL#Of z2ZioV(ahU?mOW;vt?F@kKcBu=EB#(?P_dnPft{5Es* z?T8yc*WYAZ82VZxt87F3cU9RPCX*AFNcIGHO@GL_eM)*+)rs8qs?$20Y!t4}HF^I1 zQ}lh4+GQn^guRx@L>>S*oyG}I74J&D zt_ys;i>p6lPHj+W*tb0IgRA95+{LVXD^gZnyYqVMM<;vV%H-%X-i~b>(l;d?aXRsW z^@io_PaBz9pDN#K%6zj-bGqZ_Zt+%0{!=^OZ!>IAmHK6~wz_M2?rf&Hix$ew+S4R2 z<+RB9(e0WoduKH~mYaY726OH!wH;Hho)FJB^7%OF=f}e#W*638-j}^bqL1;uwH{-| z`U{^~lMDB@rbX=u?w|Ks{=C<#B@fNnb@S3^I_~A-Z2VHFy1e4K>bpXr<*h0vZ>1L1 zed3I~Tqbl`uVRx?k1kvE#R-JC7A4h8!`u`NyEeC|$yscgLailQw)|{VMP1z9d^%QzC`SFITL%)JyB{o!7k z_CERh^vu+Hg+-I*{Qprf?_^s3juYk=g3soyD{Bo5JQMosg2c6rFTd=N%)ECjPxDnu zn@vc_Z2qNvy60kKbjkK)eV?82M{g~5TbFoeS=I9u`Iozyq}a?-U#^;A>b$Bd=1bPoPmQ|;Oq<6&(GifI{NY!VTFT<`+jTP{x^ZegU96Khl`)y zs@7QjUU7J-5%alcS@(=qm#+DdW^R1x&kKdJ2}~Y4d^06%vyIZdzxz#4ciwz<6{9DA z|C$SHk6hjLkbA?UL#tf5FRs73uC;iUK(t$jt58php4%5Ivx$?|`TdBH=v$@KV)g!- zv4NFCg<^_GpqIsmCC{%5>e;y8V6e6P+1qn{fBgif%e!Mgnj7xekS?C4bz8J;?UqG5 z?WHqLp88=F7H&45FEIIxl#l+D677=S)r;&m?9;5}D|cTSxjk65aC6A+8$v`*bQ zE!@0fv8YVt>q&b(BmVwjQeM&!#q^JDk#|;t+Wo~0VHw|N39GI6FMMJ4&0qOt9Oc4m z)x{m}_FOaFfAV32T)Lb5b&jbzGn(UX+%YnJY_c@HY%$wU-^WveD;J;MEa&kzUWI)(6u$O}>D_eNG;PW=!~c;isb6?Dc&<=jUb^i5 zx|0heqIX?*H1}d*FMH7cx}KzW27j(i{k;3s$M(LPI*qMaOMPxURpWmh$gnJN%_U7u zF~(ZC;`+Y#rxXufy4}Umk+8U1IINfDsQ0S1sa!`po3}i;FK*F&Bk1Oei(aSA?|=0# zVZIXFRug|!+%U{X;M1*#Z#S0g-Lo>AZ_na8yK|}^h@N7$QV|U0Zm-{?9AoOTs{DxL zB2}fZnU*=(Ss}ZgTI(7ur3K*XvmQ zE$3Cliigv3&VKsqd%}@5t9oXB>QB9L%dda5PEFsw@pRxc zuDD;frd?w@9{cO3jOB$Ip2DgPx^B_?Lxl{L&b*l>deyP^@sdNXPh~c>9yyULqR*Q4 z`>NLRrpNPc7#|b<`j7Fb;f-SEt3Tw9&q|x?{IO}lLDoJN=|H34=9f)-n76)}8>&8A z&&Ss9?fddYzRzcFoHePXeczJJQwj^t9C>ZszoEmurQbY!8~3TnUwhYWey*{?)cm`| z8{fN=td`W6c}G7lTbB7FpQm{(bN1&6KmE&M4Lp*5`+Z54tnyxXy z^ILqvrK167x(>gO)|=AB^!~yMEAtB1h>Py=q4oP;9IdRNg&#;dLZ?LB`~h`ywogCvh!VTV2L}&HPd5mk8M=|>F9O^?t3z$v$4e z&pu0inKpL3i|TafVbsXJ>y&A}igSbc@|mj_Jm|SqR;;MFe!;=Ha*tnrs<>BjN!cfX zzpu~P`{Mik&7vFp4b(O)d;DrgyzsX;-;$QM*?sZ_3yoe+3t5?8AW??;d=UeYtgm8+yjkO&T1Y!Z9jouncJ_gv1-=a+RVF8EM``4&%AKgU0A;J z#rJRTjc!=a`clMuy5`7dduxr>=t#q9-D@wOIm@iV@%_z@pTDrbc*EiuDD^C^cHlK^V zK2xg&WQ3Rdq@LTrz`(qPaegtVTgUiO_s*Mye|($rQ{G4_=i6T1*1$63tX$o~kkI10 zQRnM@__y|2T@kyGf4^znnu{_~d+#Rf)i}`ccVdHGJD1pNuiU3s1DrZ$ow|NB&untd z^C=U+)2r#*SFf&NJbl%bXNv9ie=6ef9UFQ~SMTa#ubBQ$Lh5C&iq_)Bm$~Lr^B;)J zcgudYJ|=KYotmbc>~jZgbp!3l_(}_ihyY7kTdXM*pv#%q?Y+0WJF@_0*oTRLE=I)hSE$ar8I1qjXfgyP(9! zqbH?#a{1lZ4y8|Dv*k--S5~Z*GXRVicbMwZv zdQoSL|tNYweF6l_LN7aSpc7{EYw>Mk43jAv@ z>-<+WRp?3Tsz1(MyC=rQial9yv3sI~ecJR#-LLKPcJ+mQ`WoE$;rfebZ#eu8@f)vE z&E3(ecI}$@dH4Bul5(zaTwJlJc2hL>3FbuY2{YED2V6hRY0P>0&5svytuLAHeAWKNYg?F?*#w^?Un$ePN+clG=uxyBu$WzZC{QcRl!YHeaphxl>>Mt?SE$YmM8Baxb$pPFd?-dek9f$@RpPqb*?&?VjSXWPZAB^r|3J`(O>R|4GgTUq7#z z<8$S;x5t$*AB9_P%Ej}Z=$rQEJiAs`ViVxJwQEVzi+6uE@H47;y%g>*tQ1kd!M*zK zyn3Tk;d+MOc^_X1e|*j%G0xupThYB&yDH-A*Rd^F-yJwbr)8nt`;eOo5vt}W#AbHMRmTWL9u8?g^8bj)D zLVm^Wt1qu+@^F~oBk-kt%F-`wX$!g4Zgg1BF_7Jowv(eWrO{2ZUbadl&MIJ;-^#b}CB@==ZIRUh;rAz1e{Qnc?qc{w^xz#Mrac^PJ3n7>GqS!UX{o*Xh4-h^jBH(jjp=0+E;9bfWZuhepVC6(~;RX}gE+vGD{ zX9^A+th_z<)fS!N>XvGk!b|t!eR<7_)yw-IulViY)o1roY#)DW?iTw497+sX<^Kx; z_srfurQ0@Pa_w7r|D89D_z&ssd3wfXpY!_-Z~tW<6RouCiDG~8N36}t`T3=%)jO(6 zc~0^S4<)tDh=eaDK}Y&;OPi-btJ`OnJm>wH+SyY8TM?U)M?`ipF!7p2mG?3qfA@Kdeevy9=l9*psX2vAVZSqlPTp1DRwpd<`IKC@ zaaF;?3_&&qE#sR^^KyD03RkuUcbuQknz-`mo|$L=yI+}SzTte8dWZGK zt#qX(`>|q1?I&j0wbMf9_U7L&zw~_W`fYM- z5_Y-wq}!4k=E#&R3E4kctMJqMf3ZqxTi2BwbBn5Fd2wTBX?R(8sJuVZi-}?%E@s)r zy~q{%e^W;`tfui>j_TD*Eh?$!vnJVx`5j*?mB*fxAv8(1w0vtAvqba0nF;%+$#RG< zex;w3IC-gil2H39MH`-5qAS1rJ^i>OJ*==_q+fZJ%;GPLbz;4zDiqFtT@v^^SiGX> zfxz9hiQ(d=@2fmiRvkHiSNdVcu^qP64a$?ZF8auDyltXK;Hzdqw-^1no3B58I5pDg z{sz;1{kJ=LcUVY$+xynRm&>zS zEp2|3vqc>+h0$d*_;}XM|3CSw zmhR?-^X@MD^XhlZ%4p9|HgXDrXJS8{I-x5drmRzACv$e9~& zUQ3T9zFc`I&e7Gms^?eH*N%-U zC%3Q#KA0*dvAF2#hvVl{eb^GpVl~w=kJNu^(#rNLcCIq02#5;moZJ;;I%&)P5)<*e zXXI?Zd%jIR`AB{8pP=Wg^F$LoUe$*#{;%$@?0<)EC=LBKvZ*KAu`O^P|x1vf|Y|R|I=6Cc9+sN`Ec# zMB3)@^-Z}6OApjK$eoT9c_9|CS74KI@~*27i}v63XDe5^9F;6%aqPP9$`Z~+SqTgdSy)5~2sP60CX(cCk+K#cVKKaBrf6~*K@+#&@bF;4*@B7VG zdR2J+6(?bnRWIJXzC3x^^S^VDI`uM=L~DKfeBbAQls+xa)*ip+sR-2d;G5bVx4+_()_iv8jre0HMlPLc2I7`@0RmFzC2j@t3vvc%C{4< zT$eV_on`ym=|Hc3SKWpSOzV=(6!Z=}ERIzS?f=*Q<4f_$dj=CE{&j9O*;p9%?Zuk) zBGaT!9_TiIr#}62Pm<2`n>P-AnB6TWeA%H$FMXPDb(I>IzOg2MH(QM6R!8d}8T&b{ zWp_+jqh1ib=aa^p(y;mUd{S!e3=9lc9OqAkOeiy!?EC#_)+4@IFFmfTQFiTi=CFKS z_rUqe#C@j!W@na)GHhMOkio#f7RJCaGb_scRHN&$51$Vih!!mn31e_5(e`wIrr$fw zmHXO_@Vk-WJpC1>HB7&G-kI4fT{IZEtlcIyHUwU5f(}3=id$?@iou^$Wwh8dk;k zH>T_iGx&6B#=qCgJ~1$`8wqVmV5qwqP|BS5ukPWJFHMYh85mgj8Ru^UccN}r99(q0 z_SxsnGZ^GP$E`cM`HDD4YfW;)&({8u?M!(#HajngD4D<8aVM?sulkjhv9c4lh_Wx9 zt1QA8?AF+#{9z{|&?yag*4C|o?<%V2zaR%B0K$pZ!kW~MbJruW#~W?etMNwBhg zPK94{u;Po_N9(SXYc5%6=22MfY9(@fn}Vd}++Eii7?kgtM}-~w@>Mr3KYFv{(RN0* zxik1GYR}KLUiUw+VD97>2{LSZW`#cLJ>j<0c#ZAOso4{LtrS&E6uvES*wXXut>CD? z4D;-tge_iO<503BXD^4i$o{FX7j>QfEOtxLbY{_4_t5vhid(9j-kuR2lB`^Le z$Ihv2=2P0Ow>Q^Lu?TBl!Y}_^tKrn~4UQYKQ$u$A@UlDeBvG!UE|ufR%gdK;UC&>* zx#Wm(pwoI;Tj_o#{&-IBNV#>(4hrag{#uan&gJoeppuZOx`GR@|FZI1XFTc2&6t(X zc6bFRpW$K&(!04$W!}%k>ffIaa`~4UJ&1e1GtETM(fcgpu_LvyIZNAi|6Q$Mwq-Bd z49^>J>AOuhrIeID26z^GPZ!nRxwE6|w*Hm+_-RYe9ZR0PY}nQ`%gXT&wR$GiQOTj=J@@_OIP zdk5KFJ|n?Y%QDgWjTwJ^hR5)xcswhrAxZi+{>64KeIDLJ&sGu-um^Q%9p?A&6-@F zex9}Rz52PhyZ?MwE!(>CZFxf0^~VXpOpkNUXX$Lr>CR2?yr}NW^YO3LYDM+odtDW>LfCxTQ~Nl04?iCZ~y=R diff --git a/xbox/live/tests/oskiewar.test.mjs b/xbox/live/tests/oskiewar.test.mjs index ff731aca8f..b43efd3371 100644 --- a/xbox/live/tests/oskiewar.test.mjs +++ b/xbox/live/tests/oskiewar.test.mjs @@ -131,7 +131,7 @@ function createFight(startImmediately = true, enterGame = true, const drawLine = (...values) => lines.push(values); const fight = new Function( "runtime", "gamepad", "capabilities", "telemetry", "gameSignal", "saveReplay", "publishLive", "analytics", "drum", "wipe", "box", "line", "triangle", "triangle3d", "triangles3d", "write", "systemWrite", "gameView", - `${source}\nreturn { boot, sim, paint, playDrum, airParticles, countPoseBuilds: (run) => { const original = buildRunnerWorldGeometry; let count = 0; buildRunnerWorldGeometry = (...args) => { count++; return original(...args); }; try { run(); } finally { buildRunnerWorldGeometry = original; } return count; }, skateContact, skateFrame, resetSkate, dismountSkateboard, terrainProfile, terrainSamples, captureClientError, drawDetachedPart, clientErrorState: () => clientError, clientErrorDetailState: () => clientErrorDetail, errorReportStatus, errorRestartSeconds, combatLegend, commandFade, dummyPopLine, filledDisc, spectatorCode, runShadow, glyphColor, contrastShadow, stateDumpRows, dumpTokens, dumpTokenInk, clientErrorDumpState: () => ({ url: clientErrorDumpUrl, modules: clientErrorQr ? clientErrorQr.getModuleCount() : 0 }), controlLocale, animatedTitleColor, comicGlyphAdvance, handleWidth, displayTheme, players, ball, balls, bullets, grenades, impacts, gunPickups, saberPickups, grenadePickups, bodyTrees, treeFruit, detachedParts, runnerWorldGeometry, fighterAnimationPhase, sampleCombatBoxes, combatBoxContact, jevStrikeOptions, combatRect, buildBoxTree, queryBoxTree, boxesOverlap, runnerDistanceToPoint, segmentSegmentClosest, meleeLimbContact, damagePart, isPogo, isHeadOnly, resultCardText, pacificTimeLabel, projectedBallRadius, deathCinematicState: () => deathCinematic ? { ...deathCinematic, age: deathCinematicAge() } : null, disableBall: () => { ballEnabled = false; for (const item of balls) item.active = false; }, enableBall: (index = 0) => { ballEnabled = true; const item = balls[index]; item.active = true; item.serveAt = 0; item.safeUntil = 0; item.safePlayers = 0; }, setWind: (value) => { windAcceleration = value; }, setDebugHitboxes: (value) => { debugHitboxes = Boolean(value); }, debugState: () => debugHitboxes, frameMeterState: (index) => frameMeterState(players[index], runtime().monotonicUs), frameMeters: () => frameMeters.map((meter) => meter.slice()), windState: () => ({ direction: windDirection, mph: windMph }), nextRound: () => resetRound(runtime().monotonicUs, false), killLocal: () => killPlayer(players[0], 0, runtime().monotonicUs, "BLASTED"), knockOut: () => killPlayer(players[1], 0, runtime().monotonicUs, "KO"), selfBallDummy: () => killPlayer(players[1], 1, runtime().monotonicUs, "BALLED"), startAttack: (kind) => startMelee(players[0], kind, runtime().monotonicUs), bootFirstBall: () => bootBall(ball, players[0], runtime().monotonicUs), wackBall: () => { players[0].attackKind = "KICK"; returnBall(ball, players[0], runtime().monotonicUs, false); }, shieldBall: () => returnBall(ball, players[0], runtime().monotonicUs, true), crossWackBall: (contact = 1) => crossWackBall(ball, players.map((player) => ({ player, contact })), runtime().monotonicUs), enterGame: () => enterGame(runtime().monotonicUs), shellState: () => ({ mode: shellMode }), startFight: () => { shellMode = "GAME"; selecting = false; players[1].npc = false; players[1].bot = false; applyRoster(players[1], 2); startReplay(runtime().monotonicUs); matchBallType = "soccer"; resetRound(runtime().monotonicUs, true); }, startFightAgainst: (kind) => startFightAgainst(kind, runtime().monotonicUs), startSurvival: (bot = false) => startSurvivalRun(runtime().monotonicUs, bot), survivalState: () => ({ active: survivalActive(), lavaY: survivalLavaY, height: survivalHeight, bestHeight: survivalBestHeight, peakLevel: survivalPeakLevel }), palSelect: () => PAL_SELECT, titleToyState: () => ({ title: titleToys.map((toy) => ({ ...toy })), prompt: promptToys.map((toy) => ({ ...toy })), bounce: promptBounce }), selectionState: () => ({ selecting, step: selectionStep, cursor: selectionCursor, ready: selectionReady.slice() }), selectionOptions: () => selectionOptions().map((option) => ({ kind: option.kind, label: option.fighter.handle, disabled: Boolean(option.disabled) })), cameraState: () => ({ cameraWidth, cameraCenter, cameraCenterY, cameraAspect, stageRight, stageTop, stageBottom, viewHeight, cameraContainFloor, doll: { width: cameraDoll.width, target: { ...cameraDoll.target }, position: { ...cameraDoll.position }, perspective: cameraDoll.perspective, roll: cameraDoll.roll } }), screenBounds: () => players.map((player) => runnerScreenBounds(player, runtime().monotonicUs / 1e6)), dumpTokens, dumpTokenInk, drawCornerCrops, playerStatLines, playerHandleLayout, statStackHeight, setBallKind: (type) => { matchBallType = type; resetBalls(runtime().monotonicUs); }, ballTypeState: () => matchBallType, seriesBallType, seriesState: () => seriesName, sessionState: () => sessionName, selectionLayout: selectionTouchLayout, actionSafeRect, hudSafeRect, projectPoint, terrainSpan, terrainFloorAt, terrainTangentAt, stageGeometry: () => ({ platformY, platformLeft, platformRight, floorY, ceilingY, worldLeft, worldRight, worldNear, worldFar }), platformTable: () => activeLedges().map((rung) => ({ ...rung })), backToTitle: () => returnToTitle(runtime().monotonicUs, "test"), enterLobby: () => beginVersusLobby(runtime().monotonicUs), lobbyState: () => ({ lane: fightOpponent, lobby: lobbyActive() }), botSceneState: (index = 0) => players[index].botScene, botSceneNow: (index = 0) => botScene(players[index], players[index ? 0 : 1], runtime().monotonicUs), botSubgoalState: (index = 0) => players[index].botSubgoal, frameRect: () => fighterFrameRect(), liveFrameCount: () => liveSequence, roundState: () => ({ roundResult, roundElapsedUs, matchOver, gameplayStarted, roundStartedAt, timed: roundIsTimed(), introAge: runtime().monotonicUs - roundStartedAt, introLimit: roundIntroDurationUs() }), viewerState: () => ({ active: Boolean(roundViewer), mode: roundViewerMode, status: roundViewerStatus, name: matchName }), netHealth, qrBox: spectatorQrBox, versusAllowed, versusDoor, setVersusRequiresAccount: (value) => { versusRequiresAccount = Boolean(value); }, wireHealth: () => ({ gapMs: roundViewerGapMs, jitterMs: roundViewerJitterMs, lossPct: roundViewerLossPct, delayMs: roundViewerDelayMs, queued: roundViewerFrames.length }), instantReplayState: () => instantReplay ? { active: true, paused: instantReplay.paused, cursor: instantReplay.cursor, frames: instantReplay.frames.length, speed: instantReplay.speed, action: instantReplay.action } : { active: false }, replayFrameCount: () => roundReplayFrames.length, inputPadDown: (index) => inputPads[index]?.down?.slice() || [], startSelfPlay: () => startSelfPlay(runtime().monotonicUs), selfPlayState: () => selfPlay, gameSpeedState: () => gameSpeed, replayActionCurve, replayRampStep, startInstantReplay: (now) => startInstantReplay(now) };` + `${source}\nreturn { boot, sim, paint, playDrum, airParticles, countPoseBuilds: (run) => { const original = buildRunnerWorldGeometry; let count = 0; buildRunnerWorldGeometry = (...args) => { count++; return original(...args); }; try { run(); } finally { buildRunnerWorldGeometry = original; } return count; }, skateContact, skateFrame, resetSkate, dismountSkateboard, terrainProfile, terrainSamples, captureClientError, drawDetachedPart, clientErrorState: () => clientError, clientErrorDetailState: () => clientErrorDetail, errorReportStatus, errorRestartSeconds, combatLegend, commandFade, dummyPopLine, filledDisc, spectatorCode, runShadow, glyphColor, contrastShadow, stateDumpRows, dumpTokens, dumpTokenInk, clientErrorDumpState: () => ({ url: clientErrorDumpUrl, modules: clientErrorQr ? clientErrorQr.getModuleCount() : 0 }), controlLocale, animatedTitleColor, comicGlyphAdvance, handleWidth, displayTheme, players, ball, balls, bullets, grenades, impacts, gunPickups, saberPickups, grenadePickups, bodyTrees, treeFruit, detachedParts, runnerWorldGeometry, fighterAnimationPhase, sampleCombatBoxes, combatBoxContact, jevStrikeOptions, combatRect, buildBoxTree, queryBoxTree, boxesOverlap, runnerDistanceToPoint, segmentSegmentClosest, meleeLimbContact, damagePart, isPogo, isHeadOnly, resultCardText, pacificTimeLabel, projectedBallRadius, deathCinematicState: () => deathCinematic ? { ...deathCinematic, age: deathCinematicAge() } : null, disableBall: () => { ballEnabled = false; for (const item of balls) item.active = false; }, enableBall: (index = 0) => { ballEnabled = true; const item = balls[index]; item.active = true; item.serveAt = 0; item.safeUntil = 0; item.safePlayers = 0; }, setWind: (value) => { windAcceleration = value; }, setDebugHitboxes: (value) => { debugHitboxes = Boolean(value); }, debugState: () => debugHitboxes, frameMeterState: (index) => frameMeterState(players[index], runtime().monotonicUs), frameMeters: () => frameMeters.map((meter) => meter.slice()), windState: () => ({ direction: windDirection, mph: windMph }), nextRound: () => resetRound(runtime().monotonicUs, false), killLocal: () => killPlayer(players[0], 0, runtime().monotonicUs, "BLASTED"), knockOut: () => killPlayer(players[1], 0, runtime().monotonicUs, "KO"), selfBallDummy: () => killPlayer(players[1], 1, runtime().monotonicUs, "BALLED"), startAttack: (kind) => startMelee(players[0], kind, runtime().monotonicUs), bootFirstBall: () => bootBall(ball, players[0], runtime().monotonicUs), wackBall: () => { players[0].attackKind = "KICK"; returnBall(ball, players[0], runtime().monotonicUs, false); }, shieldBall: () => returnBall(ball, players[0], runtime().monotonicUs, true), crossWackBall: (contact = 1) => crossWackBall(ball, players.map((player) => ({ player, contact })), runtime().monotonicUs), enterGame: () => enterGame(runtime().monotonicUs), shellState: () => ({ mode: shellMode }), startFight: () => { shellMode = "GAME"; selecting = false; players[1].npc = false; players[1].bot = false; applyRoster(players[1], 2); startReplay(runtime().monotonicUs); matchBallType = "soccer"; resetRound(runtime().monotonicUs, true); }, startFightAgainst: (kind) => startFightAgainst(kind, runtime().monotonicUs), startSurvival: (bot = false) => startSurvivalRun(runtime().monotonicUs, bot), survivalState: () => ({ active: survivalActive(), lavaY: survivalLavaY, height: survivalHeight, bestHeight: survivalBestHeight, peakLevel: survivalPeakLevel }), palSelect: () => PAL_SELECT, titleToyState: () => ({ title: titleToys.map((toy) => ({ ...toy })), prompt: promptToys.map((toy) => ({ ...toy })), bounce: promptBounce }), selectionState: () => ({ selecting, step: selectionStep, cursor: selectionCursor, ready: selectionReady.slice() }), selectionOptions: () => selectionOptions().map((option) => ({ kind: option.kind, label: option.fighter.handle, disabled: Boolean(option.disabled) })), cameraInputState: () => ({ yaw: playerCameraYaw, pitch: playerCameraPitch, zoom: playerCameraZoom }), cameraState: () => ({ cameraWidth, cameraCenter, cameraCenterY, cameraAspect, stageRight, stageTop, stageBottom, viewHeight, cameraContainFloor, doll: { width: cameraDoll.width, target: { ...cameraDoll.target }, position: { ...cameraDoll.position }, perspective: cameraDoll.perspective, roll: cameraDoll.roll } }), screenBounds: () => players.map((player) => runnerScreenBounds(player, runtime().monotonicUs / 1e6)), dumpTokens, dumpTokenInk, drawCornerCrops, playerStatLines, playerHandleLayout, statStackHeight, setBallKind: (type) => { matchBallType = type; resetBalls(runtime().monotonicUs); }, ballTypeState: () => matchBallType, seriesBallType, seriesState: () => seriesName, sessionState: () => sessionName, selectionLayout: selectionTouchLayout, actionSafeRect, hudSafeRect, projectPoint, terrainSpan, terrainFloorAt, terrainTangentAt, stageGeometry: () => ({ platformY, platformLeft, platformRight, floorY, ceilingY, worldLeft, worldRight, worldNear, worldFar }), platformTable: () => activeLedges().map((rung) => ({ ...rung })), backToTitle: () => returnToTitle(runtime().monotonicUs, "test"), enterLobby: () => beginVersusLobby(runtime().monotonicUs), lobbyState: () => ({ lane: fightOpponent, lobby: lobbyActive() }), botSceneState: (index = 0) => players[index].botScene, botSceneNow: (index = 0) => botScene(players[index], players[index ? 0 : 1], runtime().monotonicUs), botSubgoalState: (index = 0) => players[index].botSubgoal, frameRect: () => fighterFrameRect(), liveFrameCount: () => liveSequence, roundState: () => ({ roundResult, roundElapsedUs, matchOver, gameplayStarted, roundStartedAt, timed: roundIsTimed(), introAge: runtime().monotonicUs - roundStartedAt, introLimit: roundIntroDurationUs() }), viewerState: () => ({ active: Boolean(roundViewer), mode: roundViewerMode, status: roundViewerStatus, name: matchName }), netHealth, qrBox: spectatorQrBox, versusAllowed, versusDoor, setVersusRequiresAccount: (value) => { versusRequiresAccount = Boolean(value); }, wireHealth: () => ({ gapMs: roundViewerGapMs, jitterMs: roundViewerJitterMs, lossPct: roundViewerLossPct, delayMs: roundViewerDelayMs, queued: roundViewerFrames.length }), instantReplayState: () => instantReplay ? { active: true, paused: instantReplay.paused, cursor: instantReplay.cursor, frames: instantReplay.frames.length, speed: instantReplay.speed, action: instantReplay.action } : { active: false }, replayFrameCount: () => roundReplayFrames.length, inputPadDown: (index) => inputPads[index]?.down?.slice() || [], startSelfPlay: () => startSelfPlay(runtime().monotonicUs), selfPlayState: () => selfPlay, gameSpeedState: () => gameSpeed, replayActionCurve, replayRampStep, startInstantReplay: (now) => startInstantReplay(now) };` )( () => ({ monotonicUs: now, unixMs: 1785870000000 + Math.floor(now / 1000), simCount: Math.floor(now / 16667), paintCount: 0, @@ -244,7 +244,7 @@ test("mobile controls live in the canvas rather than DOM buttons", () => { test("touch controls need no duplicate tutorial legend", () => { const legend = source.slice(source.indexOf("function drawControlLegend"), source.indexOf("function drawTouchControls")); - assert.match(legend, /capabilities\(\)\.inputFamily === "touch"\) return/); + assert.match(legend, /device\.inputFamily === "touch"\) return/); assert.match(webShell, /\.touch-enabled #account/); }); @@ -400,6 +400,93 @@ test("local controller arrival leaves self-play and a remote viewer alone", () = assert.notEqual(viewer.fight.lobbyState().lane, "local"); }); +const connectedControllerIds = [ + "8BitDo Ultimate 2 Wireless (STANDARD GAMEPAD Vendor: 2dc8 Product: 6012)", + "8BitDo M30 gamepad (STANDARD GAMEPAD)", +]; +for (const order of [[0, 1], [1, 0]]) { + test("Ultimate and M30 map all game controls independently in seats " + order, () => { + const devices = order.map((model, seat) => ({ ...fakePad(seat * 2), + id: connectedControllerIds[model] })); + const host = createPadHost({ pads: devices }); + const standard = ["A", "B", "X", "Y", "LeftShoulder", "RightShoulder", + "LeftTrigger", "RightTrigger", "View", "Menu", "LeftStick", "RightStick", + "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"]; + for (let seat = 0; seat < 2; seat++) { + for (let button = 0; button < 16; button++) { + devices[seat].buttons[button] = { pressed: true, value: 1 }; + host.sampleGamepads(); + const expected = [standard[button]]; + if (button === 10) expected.push("ArrowUp"); + if (order[seat] === 1 && button === 6) expected.push("A"); + if (order[seat] === 1 && button === 7) expected.push("X"); + assert.deepEqual(host.gamepad(seat).down, expected, + devices[seat].id + " button " + button); + assert.deepEqual(host.gamepad(1 - seat).down, [], "no cross-seat input"); + assert.equal(host.gamepad(seat).analogTriggers, order[seat] === 0, + "Ultimate full trigger pulls must never become attacks"); + devices[seat].buttons[button] = { pressed: false, value: 0 }; + } + devices[seat].axes = [.7, -.8, -.6, .9]; + host.sampleGamepads(); + const pad = host.gamepad(seat); + assert.deepEqual([pad.leftX, pad.leftY, pad.rightX, pad.rightY], [.7, .8, -.6, -.9]); + devices[seat].axes = [0, 0, 0, 0]; + } + }); +} + +test("both players can rapidly retrigger attacks and shield immediately", () => { + const { fight, pads, tick } = createFight(); + fight.players[0].x = 700; + fight.players[1].x = 2600; + for (const seat of [0, 1]) { + const player = fight.players[seat]; + for (const button of ["B", "A", "B", "A"]) { + const previous = player.attackStartedAt; + pads[seat].down = [button]; + tick(); + assert.equal(player.attackKind, button === "B" ? "PUNCH" : "KICK"); + assert.ok(player.attackStartedAt > previous, "every new tap starts an attack"); + assert.equal(fight.sampleCombatBoxes(player, player.attackStartedAt).hit.length, 1, + "no startup delay before an attack can connect"); + assert.equal(player.attackUntil - player.attackStartedAt, 220000); + const started = player.attackStartedAt; + tick(); + assert.equal(player.attackStartedAt, started, "holding does not invent repeat presses"); + pads[seat].down = []; + tick(); + } + pads[seat].down = ["X"]; + tick(); + assert.equal(player.blocking, true, "shield responds during the previous swing"); + assert.equal(player.attackKind, "", "shield cancels the swing"); + pads[seat].down = []; + tick(); + } + assert.equal(fight.clientErrorState(), ""); +}); + +test("either local player can orbit, zoom and reset the shared camera", () => { + const { fight, pads, tick, tap } = createFight(false, false, "web"); + for (const pad of pads) pad.localController = true; + tick(); + for (const seat of [0, 1]) { + Object.assign(pads[seat], { rightX: .8, rightY: .6, + analogTriggers: true, rightTrigger: .8 }); + tick(); + const camera = fight.cameraInputState(); + assert.ok(camera.yaw > 0 && camera.pitch > 0 && camera.zoom < 1); + Object.assign(pads[seat], { rightX: 0, rightY: 0, rightTrigger: 0 }); + tap(seat, "RightStick"); + assert.deepEqual(fight.cameraInputState(), { yaw: 0, pitch: 0, zoom: 1 }); + Object.assign(pads[seat], { analogTriggers: false, leftTrigger: 1 }); + tick(); + assert.equal(fight.cameraInputState().zoom, 1, "digital shoulder never zooms"); + pads[seat].leftTrigger = 0; + } +}); + test("a browser pad takes a player seat from whatever index it landed on", () => { // Browsers recycle freed slots, so the pad the player is holding is often // not at getGamepads()[0] or [1]. @@ -3825,8 +3912,8 @@ test("a falling fighter can stand on the opponent head hitbox", () => { test("a neutral fighter cannot defeat an attacking fighter by contact", () => { const { fight, pads, tick } = createFight(); - fight.players[0].x = 5940; - fight.players[1].x = 6060; + fight.players[0].x = 1700; + fight.players[1].x = 1820; pads[0].down = ["B"]; for (let frame = 0; frame < 10; frame++) tick(16667); assert.equal(fight.players[0].alive, true); @@ -3840,15 +3927,15 @@ test("melee collision uses active attack boxes against hurtboxes", () => { a.x=1800;b.x=1930;a.y=b.y=1800; fight.startAttack('PUNCH'); const start=now(); - assert.equal(fight.sampleCombatBoxes(a,start).hit.length,0); + assert.equal(fight.sampleCombatBoxes(a,start).hit.length,1); const active=fight.sampleCombatBoxes(a,start+5*16667); const target=fight.sampleCombatBoxes(b,start+5*16667); assert.equal(active.hit.length,1); assert.ok(fight.combatBoxContact(active,target)); - assert.equal(fight.sampleCombatBoxes(a,start+8*16667).hit.length,0); + assert.equal(fight.sampleCombatBoxes(a,start+220000).hit.length,0); }); -for(const [kind,startup,active,total] of [['PUNCH',5,3,17],['KICK',8,4,26]]) +for(const [kind,startup,active,total] of [['PUNCH',0,14,14],['KICK',0,14,14],['WHIP',0,12,12],['BASH',0,17,17]]) test(kind+' hitboxes exist only on authored active frames',()=>{ const {fight,now}=createFight();const a=fight.players[0]; fight.startAttack(kind);const start=now(); @@ -4313,7 +4400,7 @@ test("the frame meter records what a fighter was doing, frame by frame", () => { // but the window, so a strike in this game is live on the frame it is // thrown and the meter says so. fight.startAttack("PUNCH"); - assert.equal(fight.frameMeterState(0), "startup"); + assert.equal(fight.frameMeterState(0), "active"); // Once it lands it becomes RECOVERY -- the limb is still out and can no // longer hurt anybody, which is exactly what a player is being punished // for when they get hit during it. @@ -4501,8 +4588,8 @@ test("damaged limbs redden without perpendicular segmentation marks", () => { test("simultaneous body strikes recoil without player-order bias", () => { const { fight, pads, tick } = createFight(); - fight.players[0].x = 5940; - fight.players[1].x = 6060; + fight.players[0].x = 1700; + fight.players[1].x = 1820; pads[0].down = ["B"]; pads[1].down = ["B"]; for (let frame = 0; frame < 9; frame++) tick(16667); -- 2.51.2 From 7b0ea31975172e9fcf7c1abf97527cde415b2ff8 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 13:43:01 -0700 Subject: [PATCH 04/10] oskiewar: rotate local maps and clear gameplay chrome --- xbox/live/oskiewar-workshop.mjs | 26 ++--------- xbox/live/oskiewar.js | 70 ++++++++++++++++++++++------ xbox/live/social/manifest.json | 2 +- xbox/live/social/oskiewar-title.jpg | Bin 61666 -> 62810 bytes xbox/live/social/oskiewar-title.mp4 | Bin 232200 -> 209667 bytes xbox/live/tests/oskiewar.test.mjs | 38 +++++++++++++-- 6 files changed, 94 insertions(+), 42 deletions(-) diff --git a/xbox/live/oskiewar-workshop.mjs b/xbox/live/oskiewar-workshop.mjs index afe028e8dc..2f9ab08d4c 100644 --- a/xbox/live/oskiewar-workshop.mjs +++ b/xbox/live/oskiewar-workshop.mjs @@ -5,13 +5,7 @@ export async function mountWorkshop() { globalThis.__oskiewarWorkshopEnabled = true; const style = document.createElement('style'); style.textContent = ` - #workshop-entry { position:fixed; z-index:12; - top:max(12px,env(safe-area-inset-top)); right:max(12px,env(safe-area-inset-right)); - display:grid; place-items:center; width:46px; height:46px; border:2px solid #6e768d; - border-radius:10px; color:#171b28; background:#d9dfee; box-shadow:2px 3px #14192655; } - #workshop-entry:hover { background:#fff; } - #workshop-entry:focus-visible, #workshop-panel :focus-visible { outline:3px solid #00bfea; outline-offset:3px; } - body:not(.title-open):not(.workshop-open) #workshop-entry { display:none; } + #workshop-panel :focus-visible { outline:3px solid #00bfea; outline-offset:3px; } #workshop-panel { position:fixed; z-index:12; top:max(68px,calc(env(safe-area-inset-top) + 56px)); right:max(12px,env(safe-area-inset-right)); width:min(280px,calc(100vw - 24px)); max-height:calc(100dvh - 90px); overflow:auto; padding:16px; border:2px solid #6e768d; @@ -26,10 +20,6 @@ export async function mountWorkshop() { #workshop-note:empty { display:none; } `; document.head.append(style); - const entry = document.createElement('a'); - entry.id = 'workshop-entry'; entry.href = '/workshop'; - entry.title = 'Workshop'; entry.setAttribute('aria-label', 'Workshop'); - entry.innerHTML = ''; const panel = document.createElement('section'); panel.id = 'workshop-panel'; panel.setAttribute('aria-label', 'Workshop tools'); panel.innerHTML = `

Workshop

@@ -39,23 +29,15 @@ export async function mountWorkshop() {

`; - document.body.append(entry, panel); + document.body.append(panel); const note = panel.querySelector('#workshop-note'); const onWorkshop = () => /^\/workshop\/?$/.test(location.pathname); const show = () => { panel.hidden = !onWorkshop(); document.body.classList.toggle('workshop-open', !panel.hidden); - entry.setAttribute('aria-expanded', String(!panel.hidden)); }; - entry.addEventListener('click', event => { - event.preventDefault(); event.stopPropagation(); - const room = globalThis.__oskiewarVersusRoom; - const target = onWorkshop() ? (room ? '/' + room : '/') - : '/workshop' + (room ? '?room=' + encodeURIComponent(room) : ''); - history.pushState(null, '', target); show(); - }); - for (const element of [entry, panel]) for (const event of ['pointerdown', 'pointerup', 'keydown', 'keyup']) - element.addEventListener(event, e => e.stopPropagation()); + for (const event of ['pointerdown', 'pointerup', 'keydown', 'keyup']) + panel.addEventListener(event, e => e.stopPropagation()); addEventListener('popstate', show); show(); panel.addEventListener('click', async event => { const button = event.target.closest('button'); diff --git a/xbox/live/oskiewar.js b/xbox/live/oskiewar.js index a09db33ac0..0b85fb929e 100644 --- a/xbox/live/oskiewar.js +++ b/xbox/live/oskiewar.js @@ -81,7 +81,7 @@ if (hostAnalytics) }; // Monotonic count of committed revisions to this piece (next revision included). -const buildVersion = 138; +const buildVersion = 139; const floorY = 1800; // Oskiewar now opens as a versus game. An ordinary web visit hosts a room — // the URL becomes the invitation — and until a friend opens it, all you can @@ -1364,6 +1364,45 @@ let workshopHistory = []; let workshopHighlight = false; let workshopTainted = false; +let localMapIndex = -1; +let localMapInstalled = false; +const localMapVariants = [null, { + name: "BOWL", + features: [ + { from: 0, to: 12, kind: "flat" }, + { from: 12, to: 16, kind: "transition", rise: 360, dir: -1, lift: -360 }, + { from: 16, to: 24, kind: "flat", lift: -360 }, + { from: 24, to: 28, kind: "transition", rise: 360, dir: 1, lift: -360 }, + { from: 28, to: 40, kind: "flat" }, + ], + decks: [{ col: 9, cols: 4, row: 3 }, { col: 27, cols: 4, row: 3 }], +}, { + name: "HIGH GROUND", + features: [ + { from: 0, to: 12, kind: "flat" }, + { from: 12, to: 16, kind: "bank", rise: 270, dir: 1 }, + { from: 16, to: 24, kind: "flat", lift: 270 }, + { from: 24, to: 28, kind: "bank", rise: 270, dir: -1 }, + { from: 28, to: 40, kind: "flat" }, + ], + decks: [{ col: 7, cols: 4, row: 3 }, { col: 18, cols: 4, row: 7 }, + { col: 29, cols: 4, row: 3 }], +}]; + +function rotateLocalMap(keepMap) { + if (!localVersusActive() || workshopTainted || + globalThis.__oskiewarPublishedMap) return; + if (!keepMap || localMapIndex < 0) + localMapIndex = (localMapIndex + 1) % localMapVariants.length; + const variant = localMapVariants[localMapIndex]; + const map = variant ? { ...workshopBase, ...variant, + features: variant.features.map(f => ({ lift: 0, rise: 0, dir: 1, ...f })) } + : workshopBase; + installWorkshopMap(map); + currentMapId = ["halfpipe", "bowl", "high-ground"][localMapIndex]; + localMapInstalled = true; +} + function workshopSnapshot() { return { format: "ac.oskiewar.map", version: 1, name: workshopMap?.name || currentMapName, @@ -1379,6 +1418,7 @@ function workshopSnapshot() { } function installWorkshopMap(map) { + localMapInstalled = false; workshopMap = map; parkSegments.splice(0, parkSegments.length, ...map.features.map(f => ({ ...f, left: gridLeft + f.from * tileSize, right: gridLeft + f.to * tileSize }))); @@ -1469,7 +1509,8 @@ function installMapPickups(target, authored, type) { function resetWorkshopMap() { if (!workshopMap) return; - if ((globalThis.__oskiewarWorkshopEnabled || globalThis.__oskiewarPublishedMap) && + if (!localMapInstalled && + (globalThis.__oskiewarWorkshopEnabled || globalThis.__oskiewarPublishedMap) && !survivalActive() && !roundViewer && !resimActive) { installWorkshopMap(workshopMap); return; @@ -3196,7 +3237,7 @@ function updateLocalVersus(now) { // Restart the interrupted round with the match tally intact. Absolute // attack/death timers cannot safely resume after an arbitrary unplug. if (matchOver) startLocalVersus(now); - else resetRound(now, false); + else resetRound(now, false, true); startInputPending = true; navigationPrevious = padSnapshots.map((pad) => pad?.down?.slice() || []); } @@ -5882,8 +5923,9 @@ function gameBoot() { } else beginTraining(startedAt); } -function resetRound(now, resetMatch = false) { +function resetRound(now, resetMatch = false, keepMap = false) { resetWorkshopMap(); + rotateLocalMap(keepMap); if (replay) { const nextRoundName = pronounceableMatchName(); // A versus room is one address for a whole match — the link a friend was @@ -12990,6 +13032,14 @@ function drawFightIntro(introSeconds, titleInk, statusShadow) { const touch = typeof capabilities === "function" && capabilities().inputFamily === "touch"; const nameSize = touch ? 28 : compactLayout() ? 38 : 54; + const safe = hudSafeRect(); + const mapLabel = currentMapName.toLowerCase(); + const mapSize = Math.min(nameSize, nameSize * (safe.right - safe.left) / + Math.max(1, handleWidth(mapLabel, nameSize))); + const mapX = centerX - handleWidth(mapLabel, mapSize) / 2; + const mapY = safe.top + hudTypeSize + 26; + typeWrite(mapLabel, mapX + 2, mapY + 3, mapSize, ...statusShadow); + typeWrite(mapLabel, mapX, mapY, mapSize, ...titleInk); const drawHeadName = (player) => { const head = runnerWorldGeometry(player, (runtime().monotonicUs - startedAt) / 1000000).head; @@ -14674,19 +14724,11 @@ function drawDebugBug(x, y, scale = 1) { filledDisc(x + 2 * scale, y - 7 * scale, 1.2 * scale, detail); } -// The round QR owns the top-right corner whenever it is up, so the HUD clock -// asks for its footprint before choosing a lane. -// The versus lane's whole premise is the shareable address, so its QR stays -// up in play; every other untimed round keeps the code off the fight. +// The title owns the share code; active maps keep the corner clear. function spectatorQrBox() { + if (shellMode === "GAME") return null; if (typeof capabilities === "function" && capabilities().socialPreview) return null; - // A watcher is looking at the one thing the code is for. `versusLane()` is a - // fact about the fight on THIS machine, and a watcher's machine is not in - // one — so an untimed versus round, watched, used to lose its address at - // exactly the moment somebody might want to pass it on. - if (!versusLane() && !(roundViewer && roundViewerMode === "LIVE")) - if (shellMode === "GAME" && !roundIsTimed()) return null; if (!spectatorQr || typeof spectatorQr.getModuleCount !== "function") return null; const safe = hudSafeRect(); diff --git a/xbox/live/social/manifest.json b/xbox/live/social/manifest.json index 629b3f2fb2..55cb464bac 100644 --- a/xbox/live/social/manifest.json +++ b/xbox/live/social/manifest.json @@ -1,7 +1,7 @@ { "format": "ac.oskiewar.social-preview", "version": 2, - "build": "08da3c903a1a9a91", + "build": "81c5595a8f42455f", "theme": "light", "imageWidth": 1200, "imageHeight": 630, diff --git a/xbox/live/social/oskiewar-title.jpg b/xbox/live/social/oskiewar-title.jpg index 2a53ebf1d0f181c8947026d28774a172f92d4401..fe91608a4c85d3cceea760b94563edcf52de99db 100644 GIT binary patch literal 62810 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

p#QEwXUK6To$Ll z*>zRdeZ}_p7niQL-dn5Z`64TC)2dx*mbNS6MPkl9DJm(lpBh|y`QzOh=?Ig}zB(T- zL?|^~^%lzMS-$NgYE$zK~d+Iv(oR#}- zzu8@9IP=pw-RuR&N)}x%S=IOI>+-dyR=wSPIAhbHwXQYY%C|aI_N@CRF*kOXR$gmQ z*hkZ*n3Z#RU87$q*4?>y(pCA^+vz2DMR!*${0h%oK}M2nLZ%hdb2D$e{&8NeY`)-h z8@4yfYHMDpTzR|d`L5Z|%cd`#Z@m3NuKe~7{}~ob923o+6#1fXc8Q7LS^euP!b}A( zS(?XAefO+rQHfvfy6&gb}?o) z=dKe!G>W1)HRc;D=kzZRSKq81cw)u62ppxmi(7Q1!?se>5xEs+>s9CXN)6MOSs?|Rd5cTdQPh?A<>iytqTz3;V2vCf+lS8cRj7oJ$1y5QXU>Ft}M ze!XHZFETH=xnYy~o0THf%7Id=cjY|2y~<2!UxfC?*;A&3YiaGSP0`*mA>`1DrAa?> z))px(%-9ESqm;}%wjncaS#-4fgy2i}G#`hSkvJq_Sd&PYdJRdq1l8-ilkv>bmJ! z$3BxwdspnUzhyY@{mw8JEC0opR~;I?Gd%U(?R)j_-tTmKePPve7yiAeo0i>K zF;(RA!TtWX+}8eQ*z!YUz5@dTy>h@c|oz?H% z)u`EDU2C$X^goszFHgG={r2LC$yK6z#n+pdv#sCY1NNKt8_m0fBd_wT-&|Acu&aV zsX5uzucViXTsSX0ebH7ysTF^xm&CcoZhO7$MbXA{LK#|f|1(5CFIy${`^DR)XmnUH7(3+<9Vd`HSz>|5nf1TjTRbPi?L0 zu3eQgw!XML-@N*#)XTNMKHG~1Zst1lV%@sq+ViFE$P|Hy}oGX;*^24G!K`(v0CZM zVoU2S*jwP5-z&3%M@Dmb==TSB{TU>dbl~Z^jY#EWiK~< zb!ESr{n^6co~-ht@B=R%&aF(Y+9_W9$J}4{T;buiGbd7#zE9d`F}>n((Qlpj-+qZc z`FAFrRc$VgcMgmF_4@Scyl<~>{bgWS(KGx4iy|M%AF0xwDi|1Q6I?W1WtQ((_Ad+} z6d6b_%{4dKRl44O|9I2(_I!uP)$PlJ0;gQPQzajq!N7g|0KHs67kfB%6S+2!F0R3C zNy)5E&+ypxt4G~##%oX9bEdOwlE=@9ao5)GjowvfCzoEvJ!O@JuWwno#!B8FJM5l` zH%32h)?P8~cK-Tpx28>$RMwJsamn-NFD=v4`(E6=82+E((z6E9N7`1K@72#gIwfGy z%HyRBj0t;iyI>H@*!Nc_CG9-bn;l#l8aq*d`4^w;Y{f+N?MVVed=B4ul=A? z)IM9b26cCDnL6{6QBZjIE(WH_F9xx%piZ+ZE!lWI=rqsT=Ur*qa(BNybM>9dzrb#J zUWRF%&+EcBaWdt5!+e7SRn{hpezp`1?D3s-<))ySOX#P&<*!ziIf(id&AvDJSulsj z+8bXOn3_Q2GEk#OJjJ(e)prx|W0zHO!n9}2*0P@aV)wfzpKjXxXHd0v;Cia^HZ}Q? zZz%&)Gui2cPj=I-Uz&33ibF*O_np$;`uFJ{zXUsz**hnDiwDisyx9CLJ^S}A2F5SP NMto$@G64SH1OQXqj8p&s diff --git a/xbox/live/social/oskiewar-title.mp4 b/xbox/live/social/oskiewar-title.mp4 index 73b099b94fb95163d583419a9fa36566f1224eb9..dff46fd646bd007175138aa161cae77db3a9e9a3 100644 GIT binary patch literal 209667 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

;d}SYlBD>^=S?^oZGqxqaUwm?3 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 z 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 z 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

Vh3^?3MY`5b*t|hUemj8%yPQn4^T|FFoG#s61s7 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%0D}P!&-t_U&ffX6Cnmf&{ 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 hDkw=_<&i^+1? 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 lines.push(values); const fight = new Function( "runtime", "gamepad", "capabilities", "telemetry", "gameSignal", "saveReplay", "publishLive", "analytics", "drum", "wipe", "box", "line", "triangle", "triangle3d", "triangles3d", "write", "systemWrite", "gameView", - `${source}\nreturn { boot, sim, paint, playDrum, airParticles, countPoseBuilds: (run) => { const original = buildRunnerWorldGeometry; let count = 0; buildRunnerWorldGeometry = (...args) => { count++; return original(...args); }; try { run(); } finally { buildRunnerWorldGeometry = original; } return count; }, skateContact, skateFrame, resetSkate, dismountSkateboard, terrainProfile, terrainSamples, captureClientError, drawDetachedPart, clientErrorState: () => clientError, clientErrorDetailState: () => clientErrorDetail, errorReportStatus, errorRestartSeconds, combatLegend, commandFade, dummyPopLine, filledDisc, spectatorCode, runShadow, glyphColor, contrastShadow, stateDumpRows, dumpTokens, dumpTokenInk, clientErrorDumpState: () => ({ url: clientErrorDumpUrl, modules: clientErrorQr ? clientErrorQr.getModuleCount() : 0 }), controlLocale, animatedTitleColor, comicGlyphAdvance, handleWidth, displayTheme, players, ball, balls, bullets, grenades, impacts, gunPickups, saberPickups, grenadePickups, bodyTrees, treeFruit, detachedParts, runnerWorldGeometry, fighterAnimationPhase, sampleCombatBoxes, combatBoxContact, jevStrikeOptions, combatRect, buildBoxTree, queryBoxTree, boxesOverlap, runnerDistanceToPoint, segmentSegmentClosest, meleeLimbContact, damagePart, isPogo, isHeadOnly, resultCardText, pacificTimeLabel, projectedBallRadius, deathCinematicState: () => deathCinematic ? { ...deathCinematic, age: deathCinematicAge() } : null, disableBall: () => { ballEnabled = false; for (const item of balls) item.active = false; }, enableBall: (index = 0) => { ballEnabled = true; const item = balls[index]; item.active = true; item.serveAt = 0; item.safeUntil = 0; item.safePlayers = 0; }, setWind: (value) => { windAcceleration = value; }, setDebugHitboxes: (value) => { debugHitboxes = Boolean(value); }, debugState: () => debugHitboxes, frameMeterState: (index) => frameMeterState(players[index], runtime().monotonicUs), frameMeters: () => frameMeters.map((meter) => meter.slice()), windState: () => ({ direction: windDirection, mph: windMph }), nextRound: () => resetRound(runtime().monotonicUs, false), killLocal: () => killPlayer(players[0], 0, runtime().monotonicUs, "BLASTED"), knockOut: () => killPlayer(players[1], 0, runtime().monotonicUs, "KO"), selfBallDummy: () => killPlayer(players[1], 1, runtime().monotonicUs, "BALLED"), startAttack: (kind) => startMelee(players[0], kind, runtime().monotonicUs), bootFirstBall: () => bootBall(ball, players[0], runtime().monotonicUs), wackBall: () => { players[0].attackKind = "KICK"; returnBall(ball, players[0], runtime().monotonicUs, false); }, shieldBall: () => returnBall(ball, players[0], runtime().monotonicUs, true), crossWackBall: (contact = 1) => crossWackBall(ball, players.map((player) => ({ player, contact })), runtime().monotonicUs), enterGame: () => enterGame(runtime().monotonicUs), shellState: () => ({ mode: shellMode }), startFight: () => { shellMode = "GAME"; selecting = false; players[1].npc = false; players[1].bot = false; applyRoster(players[1], 2); startReplay(runtime().monotonicUs); matchBallType = "soccer"; resetRound(runtime().monotonicUs, true); }, startFightAgainst: (kind) => startFightAgainst(kind, runtime().monotonicUs), startSurvival: (bot = false) => startSurvivalRun(runtime().monotonicUs, bot), survivalState: () => ({ active: survivalActive(), lavaY: survivalLavaY, height: survivalHeight, bestHeight: survivalBestHeight, peakLevel: survivalPeakLevel }), palSelect: () => PAL_SELECT, titleToyState: () => ({ title: titleToys.map((toy) => ({ ...toy })), prompt: promptToys.map((toy) => ({ ...toy })), bounce: promptBounce }), selectionState: () => ({ selecting, step: selectionStep, cursor: selectionCursor, ready: selectionReady.slice() }), selectionOptions: () => selectionOptions().map((option) => ({ kind: option.kind, label: option.fighter.handle, disabled: Boolean(option.disabled) })), cameraInputState: () => ({ yaw: playerCameraYaw, pitch: playerCameraPitch, zoom: playerCameraZoom }), cameraState: () => ({ cameraWidth, cameraCenter, cameraCenterY, cameraAspect, stageRight, stageTop, stageBottom, viewHeight, cameraContainFloor, doll: { width: cameraDoll.width, target: { ...cameraDoll.target }, position: { ...cameraDoll.position }, perspective: cameraDoll.perspective, roll: cameraDoll.roll } }), screenBounds: () => players.map((player) => runnerScreenBounds(player, runtime().monotonicUs / 1e6)), dumpTokens, dumpTokenInk, drawCornerCrops, playerStatLines, playerHandleLayout, statStackHeight, setBallKind: (type) => { matchBallType = type; resetBalls(runtime().monotonicUs); }, ballTypeState: () => matchBallType, seriesBallType, seriesState: () => seriesName, sessionState: () => sessionName, selectionLayout: selectionTouchLayout, actionSafeRect, hudSafeRect, projectPoint, terrainSpan, terrainFloorAt, terrainTangentAt, stageGeometry: () => ({ platformY, platformLeft, platformRight, floorY, ceilingY, worldLeft, worldRight, worldNear, worldFar }), platformTable: () => activeLedges().map((rung) => ({ ...rung })), backToTitle: () => returnToTitle(runtime().monotonicUs, "test"), enterLobby: () => beginVersusLobby(runtime().monotonicUs), lobbyState: () => ({ lane: fightOpponent, lobby: lobbyActive() }), botSceneState: (index = 0) => players[index].botScene, botSceneNow: (index = 0) => botScene(players[index], players[index ? 0 : 1], runtime().monotonicUs), botSubgoalState: (index = 0) => players[index].botSubgoal, frameRect: () => fighterFrameRect(), liveFrameCount: () => liveSequence, roundState: () => ({ roundResult, roundElapsedUs, matchOver, gameplayStarted, roundStartedAt, timed: roundIsTimed(), introAge: runtime().monotonicUs - roundStartedAt, introLimit: roundIntroDurationUs() }), viewerState: () => ({ active: Boolean(roundViewer), mode: roundViewerMode, status: roundViewerStatus, name: matchName }), netHealth, qrBox: spectatorQrBox, versusAllowed, versusDoor, setVersusRequiresAccount: (value) => { versusRequiresAccount = Boolean(value); }, wireHealth: () => ({ gapMs: roundViewerGapMs, jitterMs: roundViewerJitterMs, lossPct: roundViewerLossPct, delayMs: roundViewerDelayMs, queued: roundViewerFrames.length }), instantReplayState: () => instantReplay ? { active: true, paused: instantReplay.paused, cursor: instantReplay.cursor, frames: instantReplay.frames.length, speed: instantReplay.speed, action: instantReplay.action } : { active: false }, replayFrameCount: () => roundReplayFrames.length, inputPadDown: (index) => inputPads[index]?.down?.slice() || [], startSelfPlay: () => startSelfPlay(runtime().monotonicUs), selfPlayState: () => selfPlay, gameSpeedState: () => gameSpeed, replayActionCurve, replayRampStep, startInstantReplay: (now) => startInstantReplay(now) };` + `${source}\nreturn { boot, sim, paint, playDrum, airParticles, countPoseBuilds: (run) => { const original = buildRunnerWorldGeometry; let count = 0; buildRunnerWorldGeometry = (...args) => { count++; return original(...args); }; try { run(); } finally { buildRunnerWorldGeometry = original; } return count; }, skateContact, skateFrame, resetSkate, dismountSkateboard, terrainProfile, terrainSamples, captureClientError, drawDetachedPart, clientErrorState: () => clientError, clientErrorDetailState: () => clientErrorDetail, errorReportStatus, errorRestartSeconds, combatLegend, commandFade, dummyPopLine, filledDisc, spectatorCode, runShadow, glyphColor, contrastShadow, stateDumpRows, dumpTokens, dumpTokenInk, clientErrorDumpState: () => ({ url: clientErrorDumpUrl, modules: clientErrorQr ? clientErrorQr.getModuleCount() : 0 }), controlLocale, animatedTitleColor, comicGlyphAdvance, handleWidth, displayTheme, players, ball, balls, bullets, grenades, impacts, gunPickups, saberPickups, grenadePickups, bodyTrees, treeFruit, detachedParts, runnerWorldGeometry, fighterAnimationPhase, sampleCombatBoxes, combatBoxContact, jevStrikeOptions, combatRect, buildBoxTree, queryBoxTree, boxesOverlap, runnerDistanceToPoint, segmentSegmentClosest, meleeLimbContact, damagePart, isPogo, isHeadOnly, resultCardText, pacificTimeLabel, projectedBallRadius, deathCinematicState: () => deathCinematic ? { ...deathCinematic, age: deathCinematicAge() } : null, disableBall: () => { ballEnabled = false; for (const item of balls) item.active = false; }, enableBall: (index = 0) => { ballEnabled = true; const item = balls[index]; item.active = true; item.serveAt = 0; item.safeUntil = 0; item.safePlayers = 0; }, setWind: (value) => { windAcceleration = value; }, setDebugHitboxes: (value) => { debugHitboxes = Boolean(value); }, debugState: () => debugHitboxes, frameMeterState: (index) => frameMeterState(players[index], runtime().monotonicUs), frameMeters: () => frameMeters.map((meter) => meter.slice()), windState: () => ({ direction: windDirection, mph: windMph }), nextRound: () => resetRound(runtime().monotonicUs, false), killLocal: () => killPlayer(players[0], 0, runtime().monotonicUs, "BLASTED"), knockOut: () => killPlayer(players[1], 0, runtime().monotonicUs, "KO"), selfBallDummy: () => killPlayer(players[1], 1, runtime().monotonicUs, "BALLED"), startAttack: (kind) => startMelee(players[0], kind, runtime().monotonicUs), bootFirstBall: () => bootBall(ball, players[0], runtime().monotonicUs), wackBall: () => { players[0].attackKind = "KICK"; returnBall(ball, players[0], runtime().monotonicUs, false); }, shieldBall: () => returnBall(ball, players[0], runtime().monotonicUs, true), crossWackBall: (contact = 1) => crossWackBall(ball, players.map((player) => ({ player, contact })), runtime().monotonicUs), enterGame: () => enterGame(runtime().monotonicUs), shellState: () => ({ mode: shellMode }), startFight: () => { shellMode = "GAME"; selecting = false; players[1].npc = false; players[1].bot = false; applyRoster(players[1], 2); startReplay(runtime().monotonicUs); matchBallType = "soccer"; resetRound(runtime().monotonicUs, true); }, startFightAgainst: (kind) => startFightAgainst(kind, runtime().monotonicUs), startSurvival: (bot = false) => startSurvivalRun(runtime().monotonicUs, bot), survivalState: () => ({ active: survivalActive(), lavaY: survivalLavaY, height: survivalHeight, bestHeight: survivalBestHeight, peakLevel: survivalPeakLevel }), palSelect: () => PAL_SELECT, titleToyState: () => ({ title: titleToys.map((toy) => ({ ...toy })), prompt: promptToys.map((toy) => ({ ...toy })), bounce: promptBounce }), selectionState: () => ({ selecting, step: selectionStep, cursor: selectionCursor, ready: selectionReady.slice() }), selectionOptions: () => selectionOptions().map((option) => ({ kind: option.kind, label: option.fighter.handle, disabled: Boolean(option.disabled) })), cameraInputState: () => ({ yaw: playerCameraYaw, pitch: playerCameraPitch, zoom: playerCameraZoom }), cameraState: () => ({ cameraWidth, cameraCenter, cameraCenterY, cameraAspect, stageRight, stageTop, stageBottom, viewHeight, cameraContainFloor, doll: { width: cameraDoll.width, target: { ...cameraDoll.target }, position: { ...cameraDoll.position }, perspective: cameraDoll.perspective, roll: cameraDoll.roll } }), screenBounds: () => players.map((player) => runnerScreenBounds(player, runtime().monotonicUs / 1e6)), dumpTokens, dumpTokenInk, drawCornerCrops, playerStatLines, playerHandleLayout, statStackHeight, setBallKind: (type) => { matchBallType = type; resetBalls(runtime().monotonicUs); }, ballTypeState: () => matchBallType, seriesBallType, seriesState: () => seriesName, sessionState: () => sessionName, selectionLayout: selectionTouchLayout, actionSafeRect, hudSafeRect, projectPoint, terrainSpan, terrainFloorAt, terrainTangentAt, stageGeometry: () => ({ platformY, platformLeft, platformRight, floorY, ceilingY, worldLeft, worldRight, worldNear, worldFar }), platformTable: () => activeLedges().map((rung) => ({ ...rung })), backToTitle: () => returnToTitle(runtime().monotonicUs, "test"), enterLobby: () => beginVersusLobby(runtime().monotonicUs), lobbyState: () => ({ lane: fightOpponent, lobby: lobbyActive() }), botSceneState: (index = 0) => players[index].botScene, botSceneNow: (index = 0) => botScene(players[index], players[index ? 0 : 1], runtime().monotonicUs), botSubgoalState: (index = 0) => players[index].botSubgoal, frameRect: () => fighterFrameRect(), liveFrameCount: () => liveSequence, roundState: () => ({ roundResult, roundElapsedUs, matchOver, gameplayStarted, roundStartedAt, timed: roundIsTimed(), introAge: runtime().monotonicUs - roundStartedAt, introLimit: roundIntroDurationUs() }), viewerState: () => ({ active: Boolean(roundViewer), mode: roundViewerMode, status: roundViewerStatus, name: matchName }), netHealth, qrBox: spectatorQrBox, mapState: () => ({ name: currentMapName, id: currentMapId, map: workshopSnapshot() }), versusAllowed, versusDoor, setVersusRequiresAccount: (value) => { versusRequiresAccount = Boolean(value); }, wireHealth: () => ({ gapMs: roundViewerGapMs, jitterMs: roundViewerJitterMs, lossPct: roundViewerLossPct, delayMs: roundViewerDelayMs, queued: roundViewerFrames.length }), instantReplayState: () => instantReplay ? { active: true, paused: instantReplay.paused, cursor: instantReplay.cursor, frames: instantReplay.frames.length, speed: instantReplay.speed, action: instantReplay.action } : { active: false }, replayFrameCount: () => roundReplayFrames.length, inputPadDown: (index) => inputPads[index]?.down?.slice() || [], startSelfPlay: () => startSelfPlay(runtime().monotonicUs), selfPlayState: () => selfPlay, gameSpeedState: () => gameSpeed, replayActionCurve, replayRampStep, startInstantReplay: (now) => startInstantReplay(now) };` )( () => ({ monotonicUs: now, unixMs: 1785870000000 + Math.floor(now / 1000), simCount: Math.floor(now / 16667), paintCount: 0, @@ -360,6 +361,7 @@ test("local versus replaces the waiting room and preserves rounds and seats", () tick(); assert.equal(fight.lobbyState().lane, "local"); fight.players[0].roundWins = 1; + const firstMap = fight.mapState(); pads[0].localController = false; const before = fight.players.map((p) => [p.x, p.y]); tick(5000000); @@ -367,6 +369,7 @@ test("local versus replaces the waiting room and preserves rounds and seats", () pads[0].localController = true; tick(); assert.equal(fight.players[0].roundWins, 1); + assert.deepEqual(fight.mapState(), firstMap, "reconnect keeps the map"); assert.ok(fight.players.every((p) => p.alive)); tick(3100000); fight.knockOut(); @@ -374,6 +377,7 @@ test("local versus replaces the waiting room and preserves rounds and seats", () tick(30000000); assert.equal(fight.lobbyState().lane, "local"); assert.equal(fight.players[0].roundWins, 2); + assert.notEqual(fight.mapState().id, firstMap.id, "next round changes maps"); assert.equal(fight.roundState().roundResult, ""); tap(0, "Menu"); assert.equal(fight.shellState().mode, "MENU"); @@ -385,6 +389,33 @@ test("local versus replaces the waiting room and preserves rounds and seats", () assert.equal(fight.clientErrorState(), ""); }); +test("local rounds rotate distinct terrain and wrap without repeating", () => { + const previous = globalThis.__oskiewarWorkshopEnabled; + globalThis.__oskiewarWorkshopEnabled = true; + try { + const { fight, pads, tick } = createFight(false, false, "web"); + for (const pad of pads) pad.localController = true; + tick(); + const maps = []; + for (let i = 0; i < 4; i++) { + maps.push(fight.mapState()); + assert.deepEqual(validateMap(maps.at(-1).map), maps.at(-1).map); + assert.ok(fight.players.every(p => Number.isFinite(p.y) && + p.y === fight.terrainFloorAt(p.x)), "both players spawn on the new floor"); + assert.equal(fight.qrBox(), null); + fight.nextRound(); + } + assert.deepEqual(maps.map(m => m.name), ["HALFPIPE", "BOWL", "HIGH GROUND", "HALFPIPE"]); + assert.equal(new Set(maps.slice(0, 3).map(m => JSON.stringify(m.map.features))).size, 3); + fight.startFightAgainst("dummy"); + assert.equal(fight.mapState().name, "HALFPIPE", "leaving local play restores the base map"); + assert.equal(fight.clientErrorState(), ""); + } finally { + if (previous === undefined) delete globalThis.__oskiewarWorkshopEnabled; + else globalThis.__oskiewarWorkshopEnabled = previous; + } +}); + test("local controller arrival leaves self-play and a remote viewer alone", () => { const demo = createFight(false, false, "web"); demo.fight.startSelfPlay(); @@ -1934,10 +1965,7 @@ test("a watcher gets the match HUD and the round's own clock", () => { "fight"); assert.equal(fight.roundState().timed, true); assert.equal(fight.roundState().roundElapsedUs, 9000000); - // And the address stays up. `spectatorQrBox` asks `versusLane()`, a fact - // about the fight on THIS machine — so an untimed versus round, watched, - // used to lose its code at exactly the moment somebody might pass it on. - assert.ok(fight.qrBox(), "a watcher keeps the round's code"); + assert.equal(fight.qrBox(), null, "watching a running map hides the code"); } finally { Date.now = realNow; if (realQr) globalThis.qrcode = realQr; else delete globalThis.qrcode; -- 2.51.2 From d5bb04276520a419839acc11564685df1d362f84 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 14:04:18 -0700 Subject: [PATCH 05/10] oskiewar: fix missing powerup cycle after map changes --- xbox/live/oskiewar.js | 19 ++++++++++-------- xbox/live/social/manifest.json | 2 +- xbox/live/social/oskiewar-title.jpg | Bin 62810 -> 62656 bytes xbox/live/social/oskiewar-title.mp4 | Bin 209667 -> 255819 bytes xbox/live/tests/oskiewar.test.mjs | 29 +++++++++++++++++++++++++++- 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/xbox/live/oskiewar.js b/xbox/live/oskiewar.js index 0b85fb929e..f164c25ab2 100644 --- a/xbox/live/oskiewar.js +++ b/xbox/live/oskiewar.js @@ -81,7 +81,7 @@ if (hostAnalytics) }; // Monotonic count of committed revisions to this piece (next revision included). -const buildVersion = 139; +const buildVersion = 140; const floorY = 1800; // Oskiewar now opens as a versus game. An ordinary web visit hosts a room — // the URL becomes the invitation — and until a friend opens it, all you can @@ -1398,7 +1398,7 @@ function rotateLocalMap(keepMap) { const map = variant ? { ...workshopBase, ...variant, features: variant.features.map(f => ({ lift: 0, rise: 0, dir: 1, ...f })) } : workshopBase; - installWorkshopMap(map); + installWorkshopMap(map, true); currentMapId = ["halfpipe", "bowl", "high-ground"][localMapIndex]; localMapInstalled = true; } @@ -1417,7 +1417,7 @@ function workshopSnapshot() { skateboard: skateBoardEnabled }; } -function installWorkshopMap(map) { +function installWorkshopMap(map, cycleHandgun = false) { localMapInstalled = false; workshopMap = map; parkSegments.splice(0, parkSegments.length, ...map.features.map(f => ({ ...f, @@ -1430,6 +1430,9 @@ function installWorkshopMap(map) { players.forEach((p, i) => { p.spawnX = tileCenterX(map.spawns[i]); }); installMapPickups(gunPickups, map.pickups.filter(p => !["GRENADE", "LIGHT SABER"].includes(p.kind)), "gun"); + // Portable maps contain authored pickups, not the built-in refill policy. + const pistol = gunPickups.find(p => p.kind === "HANDGUN"); + if (cycleHandgun && pistol) pistol.cycle = true; installMapPickups(saberPickups, map.pickups.filter(p => p.kind === "LIGHT SABER"), "saber"); installMapPickups(grenadePickups, map.pickups.filter(p => p.kind === "GRENADE"), "grenade"); skateBoardEnabled = map.skateboard; @@ -1516,7 +1519,7 @@ function resetWorkshopMap() { return; } const spawns = players.map(p => p.spawnX); - installWorkshopMap(workshopBase); + installWorkshopMap(workshopBase, true); workshopMap = null; workshopHistory = []; workshopRevision++; @@ -4413,7 +4416,7 @@ function applyRoundViewerState(state, now, dt = 1 / 60) { try { installWorkshopMap(globalThis.__oskiewarValidateMap(state.map.workshop)); } catch { return; } } else if (workshopMap) { - installWorkshopMap(workshopBase); + installWorkshopMap(workshopBase, true); workshopMap = null; currentMapId = "halfpipe"; currentMapName = "HALFPIPE"; @@ -7017,12 +7020,12 @@ function updatePowerups(now) { // Only the slot marked `cycle` is the rotation's business. Asking whether // ANY gun pickup is on the map would let an untouched space laser sitting // on the top deck stall the pistol reload for the whole round. - const occupied = gunPickups.some((pickup) => pickup.cycle && pickup.active); - if (!occupied) { + const pickup = gunPickups.find((slot) => slot.cycle); + // Authored maps may intentionally have no replenishing weapon. + if (pickup && !pickup.active) { // The cycle's whole job is to keep six more rounds of ammo appearing // somewhere worth crossing the station for — the corner tiles, // alternating, so the reload never lives on one fighter's side. - const pickup = gunPickups.find((slot) => slot.cycle); pickup.active = true; pickup.x = tileCenterX(powerupSequence % 2 === 0 ? cornerColLeft : cornerColRight); diff --git a/xbox/live/social/manifest.json b/xbox/live/social/manifest.json index 55cb464bac..2c953392ea 100644 --- a/xbox/live/social/manifest.json +++ b/xbox/live/social/manifest.json @@ -1,7 +1,7 @@ { "format": "ac.oskiewar.social-preview", "version": 2, - "build": "81c5595a8f42455f", + "build": "26167bf545168c41", "theme": "light", "imageWidth": 1200, "imageHeight": 630, diff --git a/xbox/live/social/oskiewar-title.jpg b/xbox/live/social/oskiewar-title.jpg index fe91608a4c85d3cceea760b94563edcf52de99db..1ef2deb891e235b3f739aee99431dff255bd0784 100644 GIT binary patch literal 62656 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 literal 62810 zcmex=3)=m5zjCKnfgXdIZ4f#KUVkm(EzmvwQd!6(d_l3JY1z`*cfiVEYE(!^9W?*1UVPIg;NJnBPA+eJS zia_dn7#J9Aa&t;Sc7fc($iTqBlbRPA%)r3F!N9;E!%)l+#Nf{01oA&f0Ruz+A_fMF zuM7;#6A)raGZ`4Rw=ytD+(L+{EMQ>ZZ((5Ab{-*y2$O=uqC~KHEDQ_`OlfHh44;-W zFz`k)FbH2@VBm@d%P}x8;BcD)*lq3%`3(6C=?pmxsSFAXo(y>m$qaf73JgXJ1`LJ_ zX8&(9I5RLYGJ+5j1TeEQg8&-~3o|P_8#_A)b8vEVa&T~Qu(NaVa&d9<@bK`kbMo=? z^6-J!AVV0Ln3$NEnc0|`*?2hEIY25%!~YL32y!r$v20*wRAOKfWMmd({C|W&j)9SZ ziJ1`uVBTfpWM${zVqs(*Ey2vGA6dIN|MN~}LsjzY4LF1sLg^Q$AfuYUDj67k)5pR#o`U70*5&)s9vUJR5s4bhmZt z&G1yMyA}72GtaR}na;rFHxxpHNqOBZPqv*eU2lue+qLM%bg?5pRx2dO{fb;Pb+W6v z_T+Tsl-{nj@k=^Z?#kcUcHu0~&dh0^Q&J?^0{*O5Id#|T)~aQVsdfkgkvY7 zp6BeF)3q*K@6XALX0JCMj9RHGd#~O4yaWSNGewDn*L$^0`omwAvqNs`h5VF_x;2w! z`>NNatD;uP)LCB7m>;fP<<{pCUg8=Tw`#U@#ucfh2bXq-Z1%o;&HGz$#*)(umn}QF zHtg4oneG#gGHFMg-1)d<;=8kpiw^y`dU4U#nsT$xQ9W5oN=oW3E?>p3XI;N|`IlY! z#@Ffl#P9FD-)8k>`{I||m%g+t`Ca#>`tybV3=XWF_$mrYW8PF=%KXi4xl2`&h3;`L zAI|#f&gK}IvgFh0wYx5TUlnrRn_s2tXY>p8#nN}K?R@99YJ15l!_x=vXXm}X)+=)9 zUd8Drxd$@ySl?HQe)e9kzvuc>^Vufmw>mafFY|QUGCg|kO6AVvS!vo5|2D08aeQxY z@#AcnwSFn)9#hKWxYoU$yEij1-{S4xKjH2N7`VI>2>Isno}`a2m)_w>6o~sOuhMqo z)k`7i+D)^}L+|Qs(t3N^-{ytFlG+vdwe~m7nxr@20v{ z-?zjV*t|-My0~uE!gFtCcf8G76}c!U=xFA?e=f@>r>&0N6S6irR8+Lw^?rT4(IPG9 ztS^tMUSEn`dSzZq(th(;jy2!f68MiA~ zw~8w7wRdN~dG`5#hKQ53%a>lLynb}+`k0bulXo5a(S2=|n(3RG!kG24o@H{XZr0NMOS+!D-210G=p`#&WFThZ$%#W6IOliyJ=STsi2~5`|g_fFWDJ&Z$ntK-fbdr&~5|^;h zH*Hb!D;1B&^L*;w%1Z4FuG`AD)Fb%%uGQaMU0q+b-MDOb`JK$yCX4?J=35VYXD^$2 z>R7P7%F^YliasmXFPQpva%#Ae(x*48R&IN4k#KJTGew09KEGSc-$=3X+kcr~35E53EA z;$8X9rF|EBZpl2&y7%t#;z_e+idrqw*S`1ktGn=3t3@J_uDbsj%+D6_{I*;leQnY6 zP|m^=dfX2-6)leR70TPQ!Qn_w;8rVT<@`IHvMcVd&Z>+_`Kg>*k^b;+?D8w-S!rfp zew_23KPCB(|C`9#$uXJhXZ5d|?(2F*`mJC3itFFDYOfdd&5mXc6cyr%xYcn(AxrPX zF{P4^MhP4Fge@2^^6CAs-L`hwLtC+h$C)QRFX~(8skI_&=bhc29-GRu`NI~6N?om% z>OR-^ELdo%*Veb;$Bm9v?B6JN;L6un>7*~G48It)?)%igQf9?-yDdMS%UJ9)%KemD z-kkN(|KPdYLv~SHEKPTw&Rse2?Dp6NUta3*y2egj=lfHBQ{Kk?>FRx_y1I6)*s{_u zU~# zO8IWrioMB=vlpFK?{8mp|5}mOR`FRT>0w?X*P^XTbCXVcZ=L$~udCmj%I%+Gqicmu z*9x8!I~9FzcGlAEfm?q43~qbn+PUhM^jR(C*~VreQB^bM?pAMndGTy@__Es-Vjpk1 z-#RZYbLHy}x9aR|4}V?k57tdBUDp}^)9S1HnO?73?6&8Mj&(iT`f=yEn!J#^q2eVM zWS82gX3XcD#hfP}ofq1@tG8>_*{MBQt0(Tx>-gNT zZo|EgIp<~0ZP;}p*Q&KCY}@nxJ1V|6P6oep)~efLw7JZ7^`q;Ww%O%Dr&euWce($# z{Qb}mCURGE>Sk}3^7+>7v{c!_{$+vBK5U-$pCK(qI$P+|mwCM0H}@ZRoxg>@ zjoUBVlSgb%*UZy7r*wL&c6p0lQgNBZo_~F6x%DoGBLn68p>YmD1hI zA<7p86T3_E&bwQ#&)RTVc4h41N_CN_t+f|@bYpCD$tZCkpFJ50A<`Z->Tz9^BYsa3G;**X% ziToMyq#_T%+R#$F3(M4 zW@}HpvwQ3PTduCZPkLBO`OkF9Ei(A!Jt^xtN9pI#jJ_53HfC`?&M8XzzBT%q)rwv> zrK2pbo(Eg5b-9^XT<-BW?ZlC%*7rA`-nMbp+ZA7SMXufPcfIdcyNyBGuC=nxcYB}d zf2rltOuP9pB=7B{S?;!{FQ@N}Ju$~2VXL~Y&a9p7S8o(aajY{tb>z$Ax)*ChJ`~5y zje7D`OYcQw_{NrN$p@#0ta~aa^r-tQYj{~$*~FA6`PDnN^UqpcymJ3zOOZOquc?vKC$v@dFqM@Q#DTs-JNdaXA~5Dk%6gc0ls8Hrrc7# z+xrwXc1(RMxb>mft6i&Zvo%Lu&5pXh{lwk6^=>;)Zc=|K%c`C1do_IGr@gxk&z9R; z3+C#bdU|E*sm+qFo~>VTwrKU>-SCx7Mp{gz$4w)$zhi{;mbYE7!Wb1D0w?A3QH{a&T{Di{9To2-0P@2Xk!S+SR* zE*jTMLT*Mq+bOy}>({L(A@PYaR?jzoZmLy%l;&;IbOr=F|5b#V!MyYK1RwNg{FG%i=v-I4UW{94Q^ZN7D{mtM&HRhPQwmG4MA z&folc9^2>3c30QxJ`#3$y>V^97I*JxS$UmP)4qpYx~t;0N@c>HFm|r%#?geR=lu+;1=U{g!=vls)ZQOUA#pCz8Cg zgI{0znzyuOi^$jOv!vR>&s|$R+waDs&i>;2+fJU^YZGebdb`p4tY7G7iI~JKJJ;2H z=KFB&x?{l3-8cU;cuEydI-@qLCo1x*aBT7M?kCe(CaKO6j_-~7x>$7OnT3-Ui!R?4 ze6qB+_u2F1o`P{*S6su*^Os!ly}El*&Z@5R^s1fMvzYOnCJcS)xEmXxpBq1dZBv$y!Rbj*sb@A;eSzTOlq``fW}O48pcHr8<) zUs-K?wfE73TOAi)2Kv@*J1(;O*R89qr#ioDPg(Cf^>oY2+YifY=I_|@QK|3jr9E5r z-;%hpV)34Z9Lu$Gm(4EfiutjQ_mOwAuhLGVIm@2TequU3`)F}DNz(PVSx8cQ4v|J7HRw-l;unJy!;Wtvk8Da%wcW?uGu|yt zUu~UjxYustt=i6AnwO$N`)0XY?OJBnxqIo#P`?ttHA$v&-*Q&o&-K0(5@_{0F%s6uU^XjI$ymf=DU7qsPTi_cZ@%zPx|Pcd_p_NblR-^ z6SlXjSM3a4x2pQqcV+2Q-KW0@nwOn?SrU4)?8H)yLzXpyTvL{P*s(dFx$-4{`nrW# zTlf79H#Jq$_f0IBa8mW<`Q$Rfch}xpk*`{Bc4xdyjz}#QjaqdyBraTe z@^`J0_*+fJJ+nPO3AIc*?f!{zXVE`4FM+IXZ6jBHZA5{v+?fY;+3xgWo6bBZHtPG z+I`$4&v)wj-Y6USpW%eeEX&a9r7Mb6 zr(L(Z$MI!le$o24-jvsGgN_F*TFU$Ntaw>zq3-dM(@Pi>P8yJrrtoWVsc6^}v+*ta z*>z%RSNFYlPFS~MVXl_axy_sAxw}n#w_?tp6SMPn=Wo=r=U%#v`|PGgeM{#)HI4CW z3(H%1?zqyTWiPLqyT&u{8|^U(I_|kZqFK54&eg4lzJ{xv-aY%w%HQUpx8JF&h_`2} z{Aio4XB{r{;abvl>(*(DG_Q(9%=ZsBsp-4@b)ukPjnxme+ro=u@3|h^bNSuB^h>rA z*K^&Hof}c$H`V;jS8@IV2C-*O5Wg@=UDLXDyJXkzfYP`;>NqymkU4cfA{33XmF~{ zr$WW7*_xMr8ve@aSednHb}R2R$&`F!z|~W2LIu|qeR+N1%R_H(QC^dR!!iYj zxdSI2JGMCL*rJ?{j=6$@wr+(B@0<&Z>-^;3ZlAw-eg4G9=T8akNnRVYy*)y6e_pD{ z^quMV>Kd2=K7$6TAzmPbWc(Dre#(raecPTE%(IH(uHj#~a^`;qH;Efpi|_0&G8L^a zeBRv5^=kKhJ~QpTM?ZKLo={!0Cv>00PpO|-Sn2puc$WS@8ZyM{956}Bd zdjB)*pS$k<`#X~^i?6#sF}>!m>svF;tA8io%AS;BwLgAhw7%Zfh&2;8X)n?Ja_#v& z<(-O8<2pLlhHGD6mD4ddG}O}J^rKtN^#>QNNuBhweDkKqQm!Glq)uvHTH3jP(U+v< zMx}Ax`@4R7W?d+5?t0}OJgH~O%&b|j%jS3NM)_nTe{4@SZ^x0eIpMESCwQ~(uwV&et*Zq@LvH82WHkH@g z7rvMr`JgOp?Ms6X+}01~pWc!8(5&h0ik-furt@|xuHNn%@^;d7mJ{7FF|S{0?Vc%n za{I!ow!6a=r|o?{{miVh`P=TSH_vX}b?Kg$RMf1Us%^cym2#zJR$Ws&(YZO$M&Q|_ z{-s`)4+`DZFRnhG`fcmWcY$TgH$4-$7hQBnqNmBq;;P`3U|Z3kytyi#f>!oNt<;+q z9zGWJc3!;xjlaChc6}~eyEWSWMM?10ld87rfA3_ix>onZSt!(Lc8f@)Z{*6;mCR8e zQz!a2zGQzMt8DqYVE57Wip&2>d2W80{a|YN)S6nc-OFBnU#0f!l<9QI?P|Angr9p_ zuXk?CY5wq{uXShq-xrm9{ULKTve|#bqK_88{asA928IW_n;5y97@Nw=^b}dH&sz3k z#mb9;!Pn|qirou;x2Z3QSi9=YzfZ4oHeU(~v)=RGa#^34nd`H^`JUqI*G!zT(}I+A zOr%;7YL+>2I0k#j}p=Hoa)2wYq5MIk&Cqox$n)Efd|Z3dRIa zoBv$oS98zNf;P>SYVKBCyDTqHThz3$`?QMC)~c;<%3iEk(f!BAJ$6gM>X(mpct5LF zK2W=UdG(Tisq6JGT{!pZz3-mo&v)JS-*neFfr;gQyJuNd*1FEjzsHppUDL_qUJ~xo zsG%o((Q2EOifeI7*2djCSM51lZY;HWv#3p(>&sW~*ed)U=}oHIqi(V6`11568!z0K zT5&YQ_3nqz&mO(6Uxh9Ey-45HY4brvr(Xt5%Y){mOh5i8`)zSz_Pu!TzztWlqpwUe zTCDr3Mkqe;!^``UkDJa$A9~JyN2BOUYNV-HVDaLre@*+|KE15cb2oI|(xooG+q1T3 zMy%ZLde_hN@%rGB!@*zcw0gCUN%!5zSQ#`cQn^)g@s1OHq3@%a)L&dqyGZ(a4B6&)R2d%ZOrPk9+WJ9F#RtEpQh?}Sh4 zQJ9_k$+Ix$Ztbi&7V9Nsm+VMgw9YF$smhlrefo`-Zn6n zBoUcL(UpBZeArI^*>2(enSWNFj$iiE^uF|}&NDUny@~5)@4ma?%jH|N~&IK_Pn&iGC9w(t9G91 z+_id_+V6Fz_ARxu^}U$0+3nq@z?5&?Q|D#e>3KF!|H6sY`|eCy_NGc-d)L-e^SXYE z{4Gh3DavI$J?VRQ%-sC7CADW(Y~1FtN;%Xu%(lzsW&`QPTO=zME@>+)g0%)?K@mOq_V9xYkf zdwyAwzs!kMcX!TMbzEP2^32_feplsRdG+W0)?)DkA3N4s#kLvE+*r%6x2&(PYku9n z9s%p}{C}6Ne)|PnpQp0vol5?duRlYNZuNBP&y_U^G}Edw+Z!0ulT}@o_pWI5RH-YW zv6E9RuTI%?P5f4|#pSL;mGy}%4C3q#3RW-s&#nxYwLg%N@agru`q`1W0)bm&&sx`P z(_B*YY0>KBWTkN1zk+LhuLfVYGiOiMn-EgSdP{opE0NC*Gmf=Ji=EDEPqXq`efN~= z`)9rvL)W%Vl$CGNTI=*_XYiiP?8@Mx$)6v@L>;bL^yyLb0fytA4d{u93Vcz|+uS!D zr$m${eO-S`u`eWL()}5e(j$C#&JMYgnw0x9sLkY8sm;nQ6Si6|i}w_~WO-`aHoje3 z76$PNNBT^<__cbk-Y4;I#&=e-Px;TVTy55a%MUI-J1=rZ!`QlbmB!MdUFvI0MLum! zUa@%Usue$$_SR}V$y&5%>xr(ewt%gC7w#QiW8dv_Xm_B=rw_9NS8rW?Hnx2E(x}~e zZXH){S-o;CGM|0X<^AKQ6D{Yg^EAs+&3XNv!^WW?-{0G8>C4*GbEj2Sv&=N(d#OKd z$KCU%uAk(U^7Fh1O?<)|&5izZReW^}F1G8~0_l)VfW{c=a~= z+LPOVW9FCY-~1eOD1Oh06-r{h^@of!rB3;5I;hegJ6n2na__siy@KmPLO*;H5_@v( z`o*Qrc_P|=yWeX0-E+NteBJMouM;jUwb_fZOef`b5`tW(qU*C`Qo|e#E_YrUMsjf^yIU9Gulq_xP*;>Ntm_g1aw=$L=^%KN(G>rUBhd%ea? zPGRe;^94tq9ba7ip+{|J$JCJgY3hd8rCYM*wfyN1=@Y$qQA>I5sW0Zo)BiIh{*yf9 zx5#nD&7<$nty>wi_00A=uhyPjvhDGkP*;~lOTtf{)XG`0dFQ){f#G?+SH*YqEcd&# zIRBUD$LXhU{+Ji=QTyoWxeM=IelvM__B{XB{xWlR>#fpWFLs}Yfo1112XYf{rrrfV zj>2~r_@whJR6kYCPAxGNy!-L@QRAIiI^hw5_k6>p-t2dcdA8Fgbds%LV5rROEi4D0 z|K`}0Dse8j_VQo%ZLa;V>iCU<;&snXlsS28t-EV9)3OsU)Up=edh%lS8!vB(x2A8V zZ~k~cKK-oWoW@(_tAA|KX5FpSHc`Flx$l|&DCriDwIvs{7JXW8_EG!J6Zg{ORsU>O zD_`Clxc2hiprflxJ_oFQ^)!_?Y1PI1irIILtloa^Nmj^#r&(X~UR}K_UYfPiI*l>=(>Gg?CA1`e<+9d0+y2z4?-V|z zCo28vz}f8~S?jHTDXE79bzbQa`!X{`QPald&t|PX`;E>T-nF`{9TNW5>ztO&ted{- z=96zL_`h5y>UAZ~t0FKkX7!_09Ubph#5`xb!=LzfevIwK1c|C^p&PU0i+11DPKngk z-!2(-WZtIK`!DxT?A%n69dYILw%2Q_jdpA2{9!ixJ2fu<^Yf_nvyRG?pJ|GiCXx9d z?_4ggjP?3bpXHOuGRAR$PIiYZ_7{3ZZC_?{u@2bY{?DPTkYjr z&-uR6jQ5)>yzckui#38}p)YrEEQl4jbf)g(LW{1LH(}A;Pq$q5dLDA|xYh1?X8Tv| zUA1q^Klvj0>Wb*g*TPg@c1HfZT-PnM+UmzI>remA&9!xz?e}88+RMLP^V644zWws? z&HoIZX1yz~zkiX&TOIUl)tosg*P>t5%5AuL)+{VUu`r)=$02P!!ThG!i@ysdFZuCh z?!rA5H+6qpoyD6>LsSIi8&vpes~FR!b2WlwKAz3=pk6AS&$*3{lq z&wkJUHsV@@ZeU8er_{#pJ+7&%JR(-V$~(UzYw`4hfr3`+Ue>0?FMfKGgP^UOak zzj!=b`{Ghji9;sWgbw|hINd*kK`3n{xtS2GPwH~#J${q(J!hQyj;`F%x?N{`^zzbB z@hMgw=?iC`DHiic>pU|}{nO4`HA_)Zsg+mPhTKeGTJd%D2KV4EMVppwcKqr#Tjh9S z@8#e}RtEuc>zc>A zc-5Gsv{UEfUhi6@lzaX7!TQXuvle?#7Vgn{Sik&|%t764Czi}xI+{b#q^hb4Z6Io;z_UE)s;Ivj!e8OyXm;F;Oa;H zAs;u~6R|M7Y{yaZvar_h$lD)BH)RTCZ9lSZ+N#G|YIondybt#@{`Ph6>21H&PG0!A zgX7fQxgT^FT|d6d-R^T!#Opchv!k9y=6cjXrpKY zgViZov@jSLm_O`_)m$^}RM)Lr9U3oQJSzEo-lkI~!0k%7<-4LU*@1$gp;bzXp>twt z7FNG=Unweaomb2zUSUJjd|lP^mM4{GMdw`Qt=HPr#IdCJDsPt3DxY=l?yQ=vuBANx zde|Dx<8_MgDnIVv@XvyiV;?*56WmuJ>8n?Y?Numy1J^ zqxSSf#H`%4XnlXzgx}CH*lD?UU23}* z-@5u@-y+M`Vck>q9seP%*WM%@sp)#I$-Aw#q9FdK{9GHJrHvEa=B(*mac$Y}HyyJT z|28DD@0{eBD1CWj+p#y(w~3v4wx-Xg+;81?bJJDV77Kap^2)tlx2kKCQqJ7+n>FV8 z0-uY!?tI>>d@ZwhujLi(ZLAYQZq_TDw-sg8^wpl~z%=_TsU1)hjlg7S4Dz=U$p+q^Pg(BA24YalIvL zicC{p^||D$ZY@wgUM75tc~QaBA1#+IUA=VjN%?8nw6i;sudbLk*VNh8Yi{Uzf7iFK z=56t;uHI#OEz?_V)~(o{YbKn>q}Gb_zVp{S`gpVNnxDm=%mWy98d6es$P}*GyC=r{ zrR}e6XLC-iyEVCP`-vCNwkLe6e4p=bn(Uryk}>7=sY!XOCcS;J({57HdQJ0#%o|Sy zKK^vl&h)n6I&Kx-KApD1J$IF=1EcRLYpN~{*LQK(TBCLMV)&Ab*j0q3i_$DvccFC42)|wl3-FklAG2Z&>#&z$q zw(p!}>hkPv_@0-Wy-!bJGn|Q?7G{NcCohhGSjoZFYo;-^_{-%_tC30qU9kkH(q&a z^)00ANRkX+fo?};SmCl?4-^7JE-)U~pFn{WJky2sziv+H_7Z;A?vmbo6i ztNDDQ{a(4})y**l7mq%hS=is^KOwU%JL$~ZkV#8KjiR4Dt5xZ`my)t^r{Kq(!K;*S zbuBw?bT0sl)eZly>E-oeRDmv&LwP>*6NzF`$Z3CP8D19P%NkE)=SyEeHRWE zEDc|FE@D~lCgT#<*y&SGzSf><>8f^WPE=%C2tz;+UUx9rubQ>C_eI&f*iCm1ea}5^ zxLSleIKFWGT*c+f(q43|EBbZyRIiKQy5fm~qM-tfg^Q2t%_-nsQj})ZU+rBg{lu$^ zi>qwOcj+UqR&=uJNH1Pm9};>yC9BFWY^$i3Ikxvp*37|yn}&0|0OpP~BHDbr_dpXY3p>C2g#_pzz> zM9133*_OB0ThHmbk~VwGt;`&=Q&n186)Q6}lRXx;sV$C_4m5Ld@n^AXNHm{*RWE(7 zU95QWo!ycfZsnbgs+BusIs4b;`Y8W*v5R)-n@>CNV-wG`+nu+kZF*g>Xj_o!iKFw@ zl^vGS`k`(-Rk+k}n{3$8PqSxhtevUa^f*#UYZF&=i?P=em%E`-*R|H2ys|Ci$+b^0 zJd2io-D;CT;P$Q-!Crc9j=-vwYV`o@DyX za@CWN_*=CW*A_p%IX7lPKysmkNw_SP`_BGVwKf@`dZJX0_ zOaB@zn_Ye?W`4xUqDkLsS8K0)(d_q?>*VSP+4<_n)|E`3Q?IbNYv0{ipMMou4<@eo z=5h6#cBuI6x5la#-{d~N4LtO0F@lO`jNEyLjrU z_05OVKX1PD-0$7vo?pEgSDRMy`TTsnK4W^6>)%+bZx(aS+i!l$KDkc&WCP?&q68cw0_tmQJ#Y$D2 zdjq>CAF{|*otBYzP42?&^CG)8S6_%#Klx5fM_p)Eb=dNIFBZLfzB@!~vDj%(tL4Um zb2csYzPag_Z~yG+bLG$9IHsF>Xidnq)4rmn`9_DLut8G;s~))%RVzN)dxUv9Qm z^YF`@X%(@ux<*<%Kk1uXHPR11t-U|aech|)`d#ba8836r&0Fa%>rwUfuKN=P){_@N zzGDen%(NqM*Y5NyckT9^Z_P@xJhLS{D#W#IXZLkDn#cGJ3QTZXFNn(9!&;G#Qo&f>{xt3 zLhC<6!@OJ8$7ZL6#cDn>z4GDGmA9__uezUlWaO=Pap{`%?5bZ>)>4=9mpdm}hJTG( zu`b#{;kjQx^`;n4kCUFM0)L|}YTIo*oL^dVJ-hVSMdc^k@2m~I6c~0<`}Rq7m7dsd z)wSYE@4Du#>qs@Z@Ao#!zvcGF*DCzWw?#*+?OZ?g(%w_gweNkmJ+Y-M#n??b*RRITmfvx9N}N&8qW=uV zXEx_dOI^7qex2X56>F+it=EozD54u07cuk2Rx_6u9d56rrsyv2D|-85w)5frJo?*a zZCYz{d0Y3_<@bLi&dcBZRBmU5zv0T8?+TBGt*<GD`=bf*7@tgRr|Bd zRz`h!?XP1hxoq+Mi(zf&eZFnnU}zQ|5^`$wX%=1AyD?vVzumMc*L}U|^u}Lj4-~H| z&N=j&t$NM(6Jb)X-=RzdQ-KTNzmCX>0B|wf<7bL;3le zKbp38#_2_62u^Kn(~7mP$^3bG_gneuLx-x8H|uX?GIw@d`N#Xl+UaNZxqY9OBei(< znk`9ZLbH}k-o9EZTYUPeov|_*PhDI?T=OQry?e<=-D}6~3#aX*+ma;~D;#@2-D>}d zYgO6RSz?}=iAj4Cv%_5Tl_v_`UR-%K_@%|JqG`X&jo4$W!#8#ptArm;y)@%VmCBs6 zeO|M-y1iKYA$e!!jeXaZXTNf}ue`S>GxD54gr{8Ajp);BqjTQs<)=Ll3Kf}MbML); zQN)AkEIVbcF&G%%Z?F6_@1JnV`;Z;(=Rf%zW;nEIb?g1${QTu>ci&v8C$!WicUj|_ z85wXf~?tQXt3dml?}T&}5m?7DBl)`R(Zfj%qd z1?J9G$`sC_G%U1*{3Gi*IYk&c%xbKrs;yaOoeNv{jT3>8TzjH&i<*Z7Tmr4 z#XXm)#BX-aKCR`Y(n==R7Y9t&N%*VKwS9|;JirT%Ky=c+Q#mlP;cF6ynpB?MA?@`#k=f1_i zu5AubTAsf!Y4@owDdBM;zOzNW?_BfQ|1##f-n)r{m2H;NI=R&{ec6*sLSiol-%9w^ zJ9*pc-M{sxe}7WF`Ec)!#aniTeJ6 z=Rd{-#1#d9oo{0Efxjl9^Ba zuTIkxJX2IP=jzv-WrvK7kMx4-9g?v@)y$PM{`Dq^*R0msec?voZC>rydg5FsgDfeyUVYT$>zd9vT|g z(J^oHZ+knr9Z@^J&G~3(Hub3JrGBrCC4HL%^1o!CytgXnN6v@SzczdA>6;k5TG_qs z=$^Ha!F^x4qeA9-<}Efn6wflpq3}OL|J~0yMi1LFzs*_d6_h-6rs}pus}`##i=Na? z@$G&4ba}XvN?yp9%d09hKNT)M*tYXq?F|E;+4^Tqp6hIQ8rjRI8R(z2>FQ;F-=~It zUuMSr3|-N&p=jC5tCx(AAI$sCcld2oWk=K+G3{E_Whavtx82WQxU^Tfsc)W|N};QC z@ZyMTrfXgNIy%|~{w$hpomFlBw!GZROizFQZn#Vvi}43dmIH8REppI7fG{HVF&M;`CgM2n?joQ^r`v)_lUe04YM z*0xjKn-@*oU9?ZUB;-}!?_K}qxMjwzEMQ!5B}_MMTlA{J=*zQZ7YF2Q^px#ewD7F! zC#z|DW426I`n)*IUCFEW?ta(X`F=;WU$6PQa#nwOr0mI>%Tm^p%=bKXjmlp9DBk(& zwoffz_J_|E{@NXU<*f1XuhSWJKiV0(sO@jx{gv_V1>3K=OmYkro}8LJvA#>I)YT;< zB*axwJ2qr_Oi?Yr#gN_b)I{kv%YTc(M_xK^815g*NSerE}dI!eL_p2%Fa^y;lUt_Y2ourw;7u|mE?M^w<+D5GmJrm(2SH9}p4Gdl9A7v@J zs{87?tVN5ow1k*izOaXUes@mSV|RL#&Gk5)?VWqpt6ko;Yiif^+IaVQRjw}aDr=wS zom4V?TkaC3rLJ{Ho;ju}!KOab=*f-PSXbNJy)S)hHpE0si2ZnLy{C283iHsURa@_@ z`=#%;YHN6^OXK={D}N!?m7%?^GiEPgD3K+h-G#rXS)F%X?)sZ`cUPI8WxufMloWUG zzPXy8bzWKierfppCpB2 zD(~tOI&X8%b-pfGGjYn4b6Hyh@3m~+_^LM~cE)bY{hk`jy*{{Q?qki}vUsMctBr2d zuD0b-yIOspP7SSEwe$A6*Vk{kzS{oo)~q|f&QE`oyPo44)3i%j#&e(5vdUPh{`P%d zX8B^CbZ+6H<2=ju^(ZrM&-}Z|tBT`k$yB4YuCXDXbhes)-u?2dN%z%HmQ|~#Ut5+U zf7I2bWP@E~+=)lMtG@4jy*aA$YG`PUAdgzml&5>ur=2g1jt^FbA7^{56&tz+B$!GUB{~4xeuT04{l9{*6G}=s2cxv#xO1th?R$80pnpgjfy_~i? zGn`e1FMaQ-N|uXBrBfr)`fq1VoAz_|YT$-OJSCMvT`HGNtH@~ktTl(a~ z@xyZB2fuYkZs1`$%R60m)A7?XxnGv9oLF_z=8}G-TJ>Ia+q?Z`Cb}U@DGTp|sz~gH2uUxKW9i%irsduX-+i|Fo($Gk5zveWBAOo1U6g ze%y0jeC?#m6C$7A-n0Fh+ipuMtwkH}d-l186o-n62CtlDAhqSGU!HJ8#xKrgugt!G z+wwkFb+6wdU%Qw88EV4a58RHO{wFWwTk%Ja)488sszk}JDt)tTSFnA#bN9W}kQ8$^ zwcqYM=Wba}6%;g2zFz0z^u6C~<~&W$Igh4u+ZIcz>Kqv)r%GB_!nT>P^cx z269h*WB({^edoP%IeLrUt4vC{;k^9N`@Z5(%U5gPy^H$$&827`-y_%Ci>%zuOT$*p ztn03L9aQrCoW1h#IEy#2vdY12i_>L-cAU;$H0#%mH%sR%y>IcbrF7%cud}z9yM1BS zpLTG{vo9gx9cJ%eX1>hQj`vypYg4)4UWvE6KJ5&=t)+L@_rmH;dHXmj51ulz+H+iW z$K7|rc8m7C3|39`Ssz-wWRm;pdrw1Oty&ivoRJfE`rMa6O4Quv ztdZ~EbAIz~gALDitSz3@RDIM`_usW|iy!Q{P?a}HTxrp#{VAa-y*JOqvxbD5-s@Q~ zcdCJr$DO`Dx5cxbdaYFL-zErOaGecb|0=MFm4Qd2U+w;+j@z ze7?Tu^|NLdeabxwx;N)W)@=^mcQ-QDJLK5)n>rh}#zzOsWWQ9eIJVZx^P<$I-BVBe zb8h@#qjY=OjnqwtGnVI?ZoBMvDnp`U_NT3Olc(CmtlqV=CNwm(YNcXg?!NC&Pl`|E7pu1jtovX6dT6dQVVPO!(8Z}Yt7I$ZIL_4f_9w)oL;jf;U=dQ&;~dptWx)y=bEn})7E`jwC!ogwV$cawuNgyUp@E4yea)fZ)U$g zb!=nDo;A+i-yF*d?pUZ@_C6Lo@5;flYqB0Cp*wlrJe_2%qU-x`Yw%vt@-DgbV$0Q= z@2%P!D78Fk#@DNdSKF(en7Pn3xX-G&*Dk=%Ui3f1Cg})SRgg`(l-RI-2r{P-HqFyc! zEmG3@>~g)-<>l+Il9#powN;oSD$K-FTl1ei&uOzapHdz_Cn~dI>-U;Hci)#ry9S?r z_~J+YzL#IjzP{P66U5IJdNE>mf<^ACi5s_0J#%tx-_%n*ZacqqswQdg&05zQ)%$hz zuZo=QHOb#ki_SF6`RvKGakt}d@oWR>XZ~wqEQ0q=fAurI=tRlG_c>*AI?J+7>av~u zmmRU&vh2%DrBzC%U9;`ZIp%Yo;;*tf_tMq0EkJE{R;=FQ+poSY+7+2EHmg10?wjpV z=|M4TuKL8zXLZrPd2z4!l@%VRMc=BvX+Li9=!Ayxovg2Vb6@i|%}rQzA~V5LVYk!V zXwQQ7<@IbYW@~BLcI-8Gahuwje`=GBacJJI!j%zQ)7V!`b1koQ3|RHcdy8)Do^@@d zE}jpHa&|8dd%x-Zrj_Q|l~VK8>@d>XySja?oXdjl(1+XCn1`>8n!P+yG>v~{m{@tq zb*p@@dC&QcW427a@FOI6_f)~CRb6vM#V@+3D(sn~Y`RTsOgVb#UgI&KEzH_s+W2uc3EU4hg6rpJa;qdYMkpWws%)ARmRNJb=tLJ z&$;CcVyOr4H~WZ`WlgSGnj7?Kj<~DID$WP*jdeEuWIe>%zo%qM*p4vQ?Cr_3j#*VM z@Vy$fE^KjN+4I{CysvLtue2-w9j&+Rn)0=7j}5Q5)wQ-?%q^|jwJ&_pYQfO3d0uI6 z`ii4E_q*Gkn5A)e>#N<@x#V~4tEp$cwU04V-u343a@Avdp8RLHEFW6CDqbM>-I;rg zFMfMhw4KTLto3SDt>&eZxi5>i1+F@(78xCI-Dk=qpSh8~(#n2c*E}uW{cMq?)#_4~ zNoE>%zVDQ}w(Qla-Ad|Pw(w8xUgCFnw{5uj>P2m{p03`hds?&js`=b2tMw-bZGE+( ztJh=Y#j|8 zHJg9XuMGahc+Q!cyp!cCnpuZR~bG&C0Gn0zVNxZ;}IG4qt{KtVx4o)v6y z6=xV2*yr|U@7u2ZxV=+)l1laN5WO!N&y;6%P1$?b?6&?|S>cJ{*LJTex$(uXa@Emy z#VIq7EsfWbcy@Y1`c2lOr@pVg_q6s{?$vW4eyMjwE%#On+^<^x)Cle5hK zGnCD_e_QnX%uB3Cc@JJYCvWsp>PynDyDHJE-tMwb)2jPYc7M;j3G)Q(!Iooo+7Ds)VwTsPCH2SLW)Yz+5%U7>ErkyTx$FXw#%-6Z=*S{#yzIA`M*Ww?J z^Co`rmzmCYagN(X^UC{CYqpdW6(8HUdzOX7(Yvd!uHIEq)oH;s1zP#A~_okL`ec11>e%%4zqW4I$&YHAu z=BZa%FCqhlr<#Q(-|EYH`|8Dtq}k5yqROGA5kKlrzMg;bcI4Dtv*$i@HosW1ROFZD zI?YOTvA>%>+b!N^=f}2ko#~oczn4zlnb@?hx~@F4HPqhw{?R8>FDcbt3cjrNZ(sgS z(TX`YYiI46{>*yoV)u2cwKG=~pYoo^Uo`QvX>XM;|I{Eu!BZWpUahLQC}_26r=WRU zNOUgWx~J#fzgOG$pJB(zKP8vyW^VetUi4VcV*9dk`I|cX6Kl$M^{Z^U=DqLk75@4U zSu3A?`I5P!RL-*@UiHJfwO{%F3GVc_OkY}~9k=%MKmULI?Dy-=@3|aPV4bVEefhSx z^8Xnw8@}4qHCI#PQKyYklA(Q3PG#JqN3%b*S@v9dyX(sRgtU8iZ+-cfzA9Pbqv(Hz zIj4Unf6{xq|K;Pi^#u$Pnzz8&f34h=yh}Q(nnTw~l{dy_Z#*Sa<@e}$(W0qItJbb~ z>ROUBao?1j-teiFp`z#9OK%ES>uJv3s@w?k}g;OwN4dQUcFkh zqd(qLRwZ!ft1F>lMTyG|?@odKJFa91I zV~j4%*|x^*yl3iSzqr_i%UUNKzkKz@Mk}$Xsc9R1#lu3b$=p<75M=#f`kz58V$RL? z+)~q%mc>PNU(+mE&{^hs^V7vsM?Qx5i>r4nf9sqe-+Jjb>$97I?m_21&044KtZg3h zJb7YZaLKFLi`F-=&$}nQPJYUdlmjVuyH6)B?!FLv`9kNKe|G)x`->B1&2HRPnNbma z^rd=zrRn}tFP0Q(t*ZClKvc{6nEPpz*RtsmJ`MKrYn;rAz zYK-Ed*14MpX1?K5EM%aI5RD{*K9;>lZOF9oWS-?eY4CGu&I0UGKN2 zn`||-o0YP5^SunY33uLz=KeAjxwJ}OdveNMQPFjNUGt>#CNMhNc)ZNZzj<_Z*dFmv zvFc-{RZ}%L_PTV<-?jZ-?55S3t1g#%WgT%__cmNR{`8sdZO`vS_h&5UTl?sIV{Pc= zBW<3qKIP=CldhI{uJkioV$&sk->HFG%AKM6*L1AdE3$N*Y$@}(d96v)zkB_BzT-^Jik=oApx$AbmbdI``WP0b+M*oM~UUjVK>Ut8q>yz}A$gA15x4O^lzrffx8BdNQ zUdn_$t8c$`8{fILNoNzMCal}`IMig@OTns5+g1uqnp*dt;dAGsm#;rC>U_{RH9x54 zKSS2P6|d@5c>4o4ThF~Uc~`k{Q150Pk+beOb52Y=(tUPQak18$*>6&L_@*ayHoZLB zb*|@0>9#frxw)dDZDZkC5SUv%fP zlJq?+&r?;qyrh%8v^DvPS-PEyU*wY}Hg}a(D~=UgzR#Zbyl898bFEcMtEN~Vem3>^ z5q-H`j1B&NuV!h_i@E*wkV%n}r)PHS*G-1Mx7M;-S=`#kwfobeMLR`p1ttBOz02;` zf1iK4{ZXa+r-rNhCT}s=)cw$n)Bf4?HUAmD7BVp9TyzlNQ~5FD$d16vQghZDtdEM4 zm^0xZi?92Y>t|N1x{;Xn^32zp;YS4pMMDDxL$$KI=H2uSzV3ZCR!_HJzW>Med>NB# zHwCqq=6`*%@}^v0e2Ui*e}2#4nfbaoS>cc6V$b+znw|H%7}R^XXvI%Ao4@N9#oaGT zJ^e&dlut8##g3S)g^L$2?Y(qbr|+iJwMDDe-@j-hyz*Ia>+ulZh0{D=J$k3LIyN{` zr#h#nE$6)?LB*JKApc;`lIxx-|^I~miPbVepwYzaD3_AOiS12UyJ_Ui_g@s z1kty<;h9__T8^JlgEq)S)4cddK*aJ$*PeX+ZK=*b4BuUn({ za@U;XdD+wJZ2MCp{sr7N++MA|BKY!BEpx*q-&b5YG)+42UbpYcxx#*3eWtLdHIdjsoTEGUq0DknJ#dC^5LTIiDfxA ztnAybhZ}^hd-~$?%bwHsb|gQ)D|UO8jo*uDixa-T@%lOMaj4juzNST&V@~L4{_;@o zz39=YZ2t7_x_D3Vg^p74o%apS8ZO>+U*pw-wZ~OwUHYlgpYbe3XqUy4;2wbtGRXO$fW1Xr@t->_vl*Z@7J};a{9ru@e8h(Jadf?TJ&b+ zF1;VUs#jO7IMNg!d}DV0@8D|=#yO5#zwK_Fx3{-M^vk8-6LUj1xqVw5e)D2r$hmF7 zxj9?CIxn8da_2qz`S|2l`|iECCt50PyZEx6$&Fu|S8}@ZpEa3PTkzv&nJwe<%B6hC zheMw$ZS$A)-S)cYeBqLr{n@v5jDmK#S;|}uTcsT;UJ~khf6>b48@8@Hy|-*~WHp!W z)zYnNR_{yv(RyEe*G84%C(GvDIr;L&NzrpfpV#m-`K`XHlC{WGRBEbMb^M{DzqmW~ zKK?X*uC`dxElVgOTW!lDrum=R{FjI9vkRUQWSoENi~qB#={CDwrO3su-DU0l_^D(o zciFf1fkO4hR{}dKnm(_+^3DD4irw4)Gc0f4|BS)Xe@pn5V`mTX&dRAe@GAP+!fUR3 zLRRhha7*gR-OVAnuWtrM%Xd#sjh(gfZ1>AsrANP3+>Umy@_+NWc9PbdD`6>lZ*w2@ z`|l`P-sE#zXUh%wpnDk!vs`O^&fZTgPE4|LHx*y@;_gJBWfQX7l-JMLb+6z~)7=Tt zQU6|kx^!~ap}!L=<*wd5Q+BF*^F;AfSDRn2*cROT8f>`!gpu{!*him>r>3o3y|UhB zlJ!51j@e44W^Rj=l$4YdzrU=P-x;6o`pV|H)ZD2e?^Z2azU$`m{|t-oy`1LqytRI% zl40C4kGT;~zHW`Vo>S|8cvab~ly|kpr3%~U>t65E)!TP`p6$d;ub1Z*HN~8FS#T(G zU47owTFVWoW|gwK%T>2szMC=ciA(rF8{cWBvD$#x2!wJhj=&w)ph@N$(Ebd$sjQ=1sSt z757&ynmw&%(&PDwha=@rc3q4)ZWMKU--2w@Qzs_rtl1nAuX&%@>RpffT6=q?ii*!a z^1j9`FZ=NG@Hy#2`zGBgs9`(m+4tBi;_8$u6N;@%L+@U)eHU6Y$+A4$_SL$g^`Qo{ zn2&|cF0>8|_HRqM^4;o{#qXOdp0q_}O*5|DIdRg~RnHc!QrfwDQQquTd2Q!4w$9}Y z4%(i1{6}H`hMiX*uDHCTC?)0{AOU-p>%+OfxVIMWJUYsKYBZ_Z0~u_ zx8=(AV_K)Ln(+I7kNXn5X|Cp#il*G3g<3r^J6uy{G?{k4Hj|%y#YkE&yf^mg^u>~{ z#Z3#(|Lr)g_hibWlBevQYwV5N#da8AtQTTjU;Iw@%WALHPnVqBs?T`*wPIZOU58R)xy;e*0}E!J^7n2ChEb(V}T0n&%MJ%OHGOo z>J&R`2fmru=WhBoZpDg~7X$q-EP2A<`gM2U?8U!Kr=|9_Y6VMfzIsbFQtPK0PID-8rvaXMcRW=JTIHcjcaIS#g=Zp}|TgCSHhrzG!)K z{nb8=IoAw@m%A;hD7{-XpI=~4)zdp6*Iwk!%VIs4{jyN{?Q!MkwJv}9ci2hky_;ky z(a~En(aLk~z1^3>_6i@3SvO(Ye2a(MuSy4J?NPjH;%ol7XO-JBgQXJ7r`$etoIkqT zd-3BF(~~W}nyL2QejAeeWbw9OcTeUrm#2MZi=}2ODOD&{D5>A6J!156?X*{tGN&Ta z)`b1r{v{{=#_H?8dupP-biMbxw&H$vmU+m322QiYYx4x(mY!9On>%Gv{ay{%{|t{c zHEY|hJ=FFW?%=y}m;1{?#d|EXkQ>&1YR*UT5y&+``#4O7a!c<0aT zI8E=p6Zd##zH2NjUh(tZqI;`!Ha*!EooCx`sVN`Gs%ul^ZR+Lo%=CQLu5_2RH!TGP zPrch+bf-;zW|S$r^pZUh>q^YKLyN6XRqe98ZDMSG>$+*E$np16_G;%AC~wuBezl}j zs%k1{@cFPE=1)}*{+>CBK`h0AfuZu_CGMa{JMC6JKId-wO<95H> zDXhA!a;bbGcfrQMS&MtSo@^?3UApVD&+!|tbFZt}scWaC7soPRjaaerWzphoujYnY zE$@7>=kxAkx+}NO6Z?E3?zl(K=JR$ZX203EeUIzkQ&-}5C;hP~J*{xQqV}NvmXoJ_ ztB$Yz`cduGZlkD-d-p|LKNM9gsym`=YWjNlllVyc!1YEc49eaI7#KvP&@~l+Is3{@-)}4dox!BnS5R4a(9=h_io8|*WzmUx@Y7E zr_EQob$|KGRl6J~CGXj|&wKB_48`X+r6#QoO^&@Po;$BM_S?&C|5TPpGDk+FSXETI zZupk)k>Q=jZab59i+RhmcK6;AEc4Ebft`!}t z_nx}-({fiY>tyz8Yvrrw%KQ*ZdwqA8=u9z-wc8^iZ32&+OAXsP**$RIiQaoIAIpuV zc_m%$dow5AsnTZ60tQV>;yWTZR5C`(YbJ+S&t<$c*Pt~a@~gZ_*Q!FztTG2hvZ`L22_C{{<&+{2MZ)TmE^637jp8}2PJBD*>a9M(;n?Ds6&=@u&t46bS@rZ|zGC9D zBU_ffSaE26>VF3HbGlou?zeosz5L`;zoO%xmUsMTcs0TBW?5wJfsfg}?>!h+b_52o*Ze5XKOc23H@9T%?My8Sj~ zt3dJ>{aV|uTis_!e!IQPtE?#Z&F$PC_rP1Lwr%RZ z<7@MG#vlLKio&0|nbx6Bj|6wmwG6uZb;G=v?K|}(yvtYT_Z#zESDw`cT9hMdn^y0- zwReyHN7j~CXUa12uUeJIs~)@(q#iY^QuFEZ71>sc%2)DSvNDb9RF+tMxmY-~KREfz zMOSxW&6iPg)^v7mR`L%rwe@`C&+@gzE`6g)*47h!*^^UUeJ=)_%+*_&CDyg3(z8bX zOZv=hyVFel`L}IbH?`#Q>Rgp8(+Vw2W@Vo$s0sJkdRA^y$#?tBuePzLp8WXhgW=$-V>fHM*MEk<<>7ObWxqZ@UH)w5dA6z7|Ct-U71?cf-qTmlxxP10WoeU3 zO317ItA3ir&iy+jYyI}*oHWzYEfT%gs!Os>4@p@rS=uXHTC?J4nA*L)cQ;;$S8Lwv zFFDzL(Ia=0h0RK5imF~MOYUErUp1{Gah`|T$}H>UQ%)PJ`jy^|I;O6*-1_?^IgvM} z^Y%tM{oy~ulWn{DHroBTveoi!JiGeTD+ku)-3>f(cly^hxu(dWw4 zZNIx^UU>%I);Gz^TD+)edF-x@q2*6qLyKOX{>Q!2#x?8gy8RYQmTrk$^WJ^aJkF>W zfr5ddYqD%lt*blH^)#O4_rzt3Z~F7;oBYiZpStS!h0CYU6{;Uxd-vXZo67aZ7j7+^ zy7tE1%L|j;idH<8J$cleC$+FBMrq?&Z@I5WHu)X<8~x}0!_7T!^{2TTZd+aImz$gX z-F518?wE~NR@-knxl(%HUGwR;)>(>7DY(D#-9DPxpks5H-8~)2%Qs@7~?lnv;Ldo9}P9?L^J?zJF4h+wSkb!kt|9?R~)_ z|7X$Vnai_vs%l=h&3jo|t+s!;sqL-5%oERS({En5yr`t)-*Q_k_Xo50m-Z=VZt0%u zpQ&{_T4#T_{-WrOkNz|4v*mFURp!pHto(DbJ~KY6R-7+n>kL2EK;OdisaZ!u!#XA% zOmOv&Ds{h7EwNYn(c5osR!i1TKXqr`=kUUvp;xZo(OwGbJP7GbIj^Yp zGnN0}YT;}9@66krnQ=>ZT6@N=%z`t^ex!ehoql%W zbyYa8o__T8tLe%|>*9kHr5_w`)^&M1>5Z7jm#*pu&-%HZo`c4(SvL)lmt*Ghd zdFiXPlU-elYB}z{Sluosy8*YJ(xmY9;kKt% zt^VEXz4do`a8Ta0>sJ@;Gx}URJ@tL9)GZ8d*H_KB|e|Z zyuSF~*4d>0UN2xt-ldzn|5<(&y?44L_n&~v{1b<^y~>R^q`hYP$=T-*NEuGsAGKt< z#HET)XCCZ};mf_sGw*%#19R`UO)q0p_C+ixJ=V0ZtK2!z)5LyB_Kk0=wDjKoeX*+h zV#vOI=l|BNeKftP*We2GET`!)i{+NC-cjzkB|G%wNvo~49-Fql>U?!SKhR;4X| z7W_7!$G40@^5XLYMe*{st1RAg#Rc~!`z$@V`AOdS<>6WvZ-oXgx?;Ji>-n$W%T`(E zFIjWfa#QUJn^JuasX*R+M^*gJ8BIGWx_hSJ$-GW0yOn1@gt~^fDSZjo`y1Goby@b* z)4<9dSHi;lO+#a2`es!=tJ>!|?`df9oTsnWg@%TPzFM{H$c?uXdtd#^ee_q}_4kce zfA-~{p7U+;QmxaM!+z}*uYZw~Tk}{tsA9$ryO{l2JHs!n-rjd#_|LpH`E(tgo3j^{ zJPQfes#rDaM8~UX+apZ+Ca&8Rvh!=uvX6lWI(|O!&%3=ysrFrnU-!1x7mj8eeH^u8 z<)lcH?XI74mNkj5j*s;9Hu-WUBz9-4k?BU$`!~b$A3xqSTj+hzw&fc}2=fY?02?u&k8b-#uR!KWd)&HcLG;ZnxlX z)nAj97e#ex-ZsgtUR3Xzy{I}o-SBPf)OD^e))px(U(0v9*4^ux=B|Lk6}y)0_#-c0 zW!W2DJ>%UPPw}G%(`9e;OI0*K-(s0tDZ5W?-}96eRaRNCzlt~BR`M2F?^30dyGwcE zsuk@L-_Cv9JulJfssHjF^PG#1<(mC2F)iH`oh9oV9BH!Zxsp{_&X?qfUcazaN~`DY z`zvS>?funX@nX)ayOWcyTfP-P9kNo_)+K9q{_E`9558GiS$1DM8|wOE*@?%yJEPMj zE!}iinwa!%y^|-_f8rP2V zGfVGpI_{n?YGmbgx^(U}$)9u2{C%M|skiItw_O$z@AH==*C}UCS-XB=R8L5#$4Bp` zQ#J7i7t4M4&k(S(IMJ#!<;ly_G8G@P+i%Uh+HO}i`D52V-W`>*-sX6uoXVg4&u_Dl z+v3?WT~~{r7l$9+xKXt1RoBxbeb?Xxr)uAxy7u0pCL$S4PxOY|6`m>>y?@b)-D1BF zESH(FT<(^&S#Ym=VE&pd*F7`$My-nJn|D1@$~0DLrDgix7nkCgxl&Jxqn+AA z{>*(FFq`GA?9~{__wU~Ryr%A7*Sl)3Y@n;LqKnJ7)mrMI@oyyWcS^Z(L#`?v%BRIuEZh9izkkE7%^!E%QP>jweD$iS6M}<| zy-c0@dUJAeaJgmpm5z>8b;pg$cD*ioahzqQOv&eRbDgbkHUz!d8>)6U{XfGuNu&I? zMN*6XHc!2K)jFeiw)f-fchB71{=IPPww1+pfxdsNs!!d2^n1(mz^$Ld*O}gU7e4XP zjI}E7`Yt+Wubb9dJ#E!u)v3wFp_g{rsy+*SdOzhwyT`YLvJ+~lt18}gX0^uFmPJk~ zKX*L;e0J#6+S{V{yaQHlTC&^p)k#tD`7d^-=d52Fta&rIDZEhoc5;KWQ-A4Zzq_XQ zwuSw0meuhK4gI^-=&1Pb6M4M5Hg4E_ak1B2lX*e?tn=RY+i4cQySds-?A5pL;d7(5 zO832)v*W|3ho@&pe6m%LS$|9R*4gDXjJHy^hkDI)tGBWFGUKVpiT?hQyPHBiH!Trd z_hRKP?K|Bswg#7aEYB&=VyR)z%#rw~uOpmQ7VY-EuR`!>BS+j;KQtX-#8#_D`E+F4$F?|I(3qE$auu6V1n zSAD%*ym3y*>OPJadAh$Nzi#f)p7LhT)6j^2c3(sKjwVk0V&ZZ2tLLeAmAmSf7Eiv> z`Jg!P(>?u=Yf`53R)rmvD)Ifbdissd*TK&(YnPQC(F^@4?EAr|+hC{C_F2-UELS(V z^~Fv+pX0Ho_r<=+Qw7apubKt=j+8XBs6NuBvu>wc_5}(Sh6lp1P_tfA^G2l4km)hm5R#n|`|)o4V)LDwQSc z7Od&tJ#SLRowYUj`6~kh16K7Owb~yz<;r4>Vk_m%$G5s0ym@{$X#JiYPpYcz|1)Gi z&JNyeDOw)+a^mf6mbZ89UUpLL&bpAhGWT7gtXGHWR$iJ@ZgMPJXutfa+z)qNsNbF% z&$GsT`%L@L6WyD(RxMhz=&SR|yhR~D^~B@ezc!S7Zz=q9-sIhaYeXxqr|NYEU)%eB zmN)-Y)A&ad&)RHuo4-+cV#oX%)!o0VU-iN4(Aa&qAB(>E zzOcA{=5}ArTb6-O_He)I-n&im=KGxc&mu4VdVR|`=S}(6=!owt`M)bQ^*_AwaaY-? zHA$zAt&aNY@+?d5_9Fd_W&RJ^za@X_S#`fHa_NqkSBsY{?LPYM>-v>~!mC#O7G61d z+oaQWt=CukO*IeN>}B}q_Je5_Pq&|DbCB|qEjjabwnFWCf5V&4pTy1$_%X@dP`q}| z)A)-=y8kYXzx_&0Y@YbnLl0*pmMu^DqFH^e$Vw;gzAIPxtCOqZw^u5u)O4J<)j#po z>_vusvEQ7o-gDEyD--5G!cF*I}j(?52 z=(lRq`L?sl?iwIRi)U>YE~`m9S+ID!-P-Tpv|mn}7ZsUM zE3#tM_3}>Tz`!%Hf8}K_r`|sD@NU3L_B}t!R9?M(cJj5AZ+LN--t6vsEgzP@39PxF zF7xnH`tp5JKYEY+*nCl&Z9$?r%g*GTqV~1SR|Pj6dJ>v5;ndyhlOpc*CC}dV=GppC z-zjrtFqObFRCb?xOYYO zRl&};cMF$X-?HqYZ}+zoue6gU-u>s_5|MXlbE!+X%d1(j-$G-*WlLTa6uuN6AKEG@ zI{B=`MDgq|Yr0>TuGOEVKmDSXY0#$AkxYxH28z#O-@a;jeEfrUTUd2@Z*v!<9O zC4I9N`@hMZc|JR8{nRM}8{ggBD=2!lXxY7`ew`0Oj+QFti3B@*Eix*zGS{vN6g7+O zmVLu>V!GO!){B;N?|!}%t@ZZ2n`xlnmFrxqQvLR6bqg(8RT6qPc+tZ2Rr;&`E9>t4gH(N=Eh)b18Z5PF@9ss%!_QtW z4egcQcCPT=6YWl0$t92U+vmJySRZlQbJh**HIr;#?sAzbV5e7~r5*a>Nyw|Nj+Iwd z8QslXaH&SpJJ9RqXDqI9SB)jam0gu>WZF(phc4(>uRq&o#Ndd8Zz4qwjeP?3*KC9k(+kMGD(nf4=(h=>C z#~t^-P+h;UID6%jy7#_wCM@-q+OzsvXnttj%i`tp?&hC;Z4wrvAN=;BRn=L|)4DUg zj$AF$`SRgh&&tlw6{~tmguKsg(qGiIJFlaPd+VJAdv0sK)|`JYIP}QPMRljhpT-#fjxV&>+%~VmN^`+br z*M9jG?S1Q#UA2D2)Vo{$GlXr-eycm}^Ma_m?h~#X#(U>4KbpSw(~*32qoXD<7cHgF z-AfHOpZs;(UGrD>&c+>=^|&Tmx9L^h-Uw|28FQ8$!FLPSSb3dDUAHg%(6`f~vE?Pt zRSJ%L$y&k}m%ek~BxT_*JNC|-92Yu$NuSX3$ycpYA3bZ%UJ^2Ge!;41bE2C1#b*1e z>)-XBCoivb#)ALCwhyNdrcHfddu3us(vH3Rn%2r)H$A^9hbO9ib?CXL;Xa$Jr_T)B zb6efTIj145y}i*ZcI&K8z5L^IKQ*4(drUiT(N^c{ixwT3suy3k@Z|6AwHonT-c@E< ze7kbpXSS{0iYxyaQWblp|A{!oyY*$8Km8%K{^+SoeG~m={aw{<_u}NA4;j+EHD$YN zz6M)QlghZOef`F@Wv})h5D(y5x-h6;t;e zclP^np!0Q!N6Wq z?9sEbJk_=Rjr}Kzqgi*ZRQlx?x;AG;&#T$HzeN9M*wpuTW%%>lKa0+(tew?3Gjm&G zDf8+cmLB!@VTA% z_;UZ(i5F8t zZTqr*oilvXaa~K6?QP$-Yj+Z6dDs3svQ4UUadGg8yTK~Fec{DgN*h%@Cf+S~+ZlU( zdg`8cdKM9zKgKTIDi(F`S=UFO>)si=bYk9bKexN|rl{z}-6`&yOYWM5+&r5-nf0T0 ziuUVWDQ{mC%$oPb_~eeKrt{{gemqtoDc*YPkIC#C<#ty;NcN6XIG z3cIsUj&IGE-SgmT?e7IkcKCYh`p$a0?YG^ujXh5$uDZ9|R^r>DUp`r1>}=9QKF&EC zHEmAY>7wF2lD^S0{eQcz#9pj>e8TARw(j)TyJk<#@GQ6&ebWA`9&hz6TZwfhXZ_0={{@gp^ znfCHhu2V8EzYmUBWn8VB+O??ZskGwClF|S>_U|#LUMwv;A3LjS)$Y=~qoFLZQ%-&H zm)O>HD*L5z=))DS(-t7vH zed_uC+R3bF@u%u8~vNsV;)i@^Yq7BwwCOYpDslz zMbY=WP75cv7H!>hGT^CKnbT9>OR1A51_lP6%A3m_ws?I&`L3Ec<72i-KOg=qtC{ur zRP^)ovftjDFK67!78hI|H7BV0rk9tt^u^lZtHu5{hHVdLtroeu(@)UXS;jc#ZpEaG zn<}~!tvg<C<|h!o6o-JzwR1ynUUG%+{&AT5HnJ*S~Y`-xGJM zJGMGwd2Q;iEmM+i9iG(xHhEcG;mOC6o-?A4@q1UDGkpDL(iQjE9eqy`O!{-OWt;u=&3@OO+qy9{CdJLP_h$99^)8eAUu~|Nz5b72 z*)7r3?9Bazfh+P&r~OF%;I02);+jXxg9Ty=ym=Xopn$kuOPSA5^G!sIc> z>OQR-D_%+6I=#r&^3n3;{iP*_mMivrw!YSvT{*A6q=Gr)L-Enn*Ui4=+tbRXT?q?# z`=oq#OupOFTdn6@Ycjf4-22-7^2pPWn=enTbF*`aDbC#zb*pdQ@qt?AzwR;s9 ztej^sD}Tkd*w_QPl6KbdyyuSBE=^4p4XIw_Eq%G<#onlu57vgbW-S8krk31%uGi$l zNe2cChQ<3XTK-wwyVs+wktTe)*3S|K4j)<^IpG_=*3c+2Z{-Zu>vkJMEX${XA`- z{|wbL@1I$0ry759p{3P-hG$vxj|OtzdegW3Q{I_euDsj%ZPD}pBxe0*Fx-&+N7emL ze35m%hWfwsoc(YAGkjHE)c-6p(qDMV#Iwl~UC%8~Z!#4=8tVVzN=;Rk@Rse(wQhTk zJvT~=R9n*eHg=k&mZ0X1C%-RV+FD<@AveQoZ$@ChrO7^hwua^GmMiquvsx7HKjQKy zpwM`7s<+MLX!)R5*3L1jw}cpKZ4+^cUwmfv-r!%CtZx+`+xBXTm3w2zojW~~*8XQ$ zxVZD4(5V%>^S>)8?W}up`)I&)0pE}duWI8?<%EiRy|h=3Qh7e>zD(Bj&_z2}eR&^v zdwbbdsjl8o->d#^_XF4GFSnA)DK?psv_q%lyo?@q|7Bpl zD=GQ)b$!U@*uvFo<^}gBf8KlM&z7}y_rilZH!U^NF6&ddsp4|C-hGp2okPA|c{O#t!s(c1=KlminCy zhTVUE&ssOXeb>^+{A+W9Yd+nsPx^f(FUs_4WWMjx_xc8p)?Jllx;QuB(w%;#6}uB9 z{we_ii?Zr47k zzvrI)l)U1r`R{jn+??<-PX5Z4_1x17J6)f*)P4JD=igYKyYSSMtNxxx%i^yHaA*fz zJi>eJ-rY;qd*^X?PmI}JzVXD5&_MIsrRinem)9%Tw)|%}aCwKY_SVlmyVjpwwltSb zvp@98_487z7kgDG*G%&0nrrr6?%4YWtGCB9>t9>H^0wc-;F?&ErSDJGv;3HNyFO=~ ziFTL&ym#T-?6%*@RXSnk-B1_ z-nDKC=9Yca3EbQLpP`~vYf44x^1SHKy^|iR@7miv|LFb=i;qV2_H(&l3vUl&V+dogQjo8NNYi??0 z=&$)iZtf#`;gLHlH8k&QDgCfLF|WJ6>dpK;@AM~~ zUnp`b{qVchADO4D&Wx^EQM+&6wvyYs7A(%X5_+!tuluPluD@S$oqNozuyVfqmSnLP zPgm|p5zTdJQVI9eG7XeEl2sa7(wBDcYG&!48dzvMr|;+K;F4P}Pn^*R{xVf0@?!0zyOS;bv;M6Jxt||e{P&*ORId<(X4&0t{%6(ty(-a>gt#5!|!>2m~-9Ab?X%Eu~` zwCBAKdw0{!#l^QLdD7&`r=P`NSvfzgtJ58hVv^&08x-Z{7tG%zj^V-hZ)v7V; zL;o`fzH0fDJu^f%F1~bX`Ms!<^LGDzAFA?Y>oNZuk>M{Kw-&{{=c}q;GPU>L-~S8~ zU!8BVvE5aDuy0aC)Va4hH&W+yM!$)8u`ucV_jm16a?|Sdw7Ke|mahCKK5wr-w3w&R-{fTdZ)?;(hkC!1rPEe_wQUTY5Ezan{iz zae|#!uZ3K?5TiWt(wf+qD=yV@*1Epv3+d1O7Q455+p$}wN8^HXj#ykisQq4?%Q|+~ zw64@?tJb9*=83s@#dOcPqD5-&!j`?-r{y23@?i4Qsh@4LAL~Xsr)KZiXW4(=zVO-( zwt10T_DeQhOxk`hZ^3fki4&KHue%%bykh6+*F~#V&6eN1+xzzVx$CNGeNAe=uJ<%N z-IpCQXWhF$t5S1Wm1Ewy`jtecPF?dXX?@A_Qn$sii;dT57Rq?q^xZG));#elRB^$^ zh`Ud}bN9Rpb#s*|EY^GVB;?gx`zGDR-}DParxt8pW+_*^DrDOV)9Bz=i`K4Pvb489 zChxwCPpa+a{WoL2o2T3Pg_qYp{-v}!%>8zJSWo6Ji?24u*?xX?liagsy|;QO>}Bd~ z*{puD)Pr)#{72vbz?&U*S9R z*6lTAbqc%v)?8bYxNhn##iW&+pL}P%sW@-lg9#z7p2D;DS8Uj3mnm50X5|;Zq^oVS z`WxdHVIH&3Ut`{F=U01cp5NIhYh9c7Gj}YDpKvSYx_wD&&{LBWSA4HV&Dm^vTkrJl zskPPXIp^wrs@r;Pw*OY;@GnyDCOVd`-gAD%kH2oOx=R*5;Xzo=`~QTxf;turmyPJiut-IHB5{q}-=X}2nKR&Krf@x_DW z?4sE={W+(3gq4b|DpazUbcyF(Uo%O$ta@k4x|rxL9&VkKxBco{FN6iYyR}Pt%1P&N zmoMeoGj)PK?Od0AeQH%nxl`G(J*mE~`!u?DFIBaDvcuSN^*1e_`CdlZrB$CUhDWVR zoOx&WYKa$fx}NxFRV=^Py0kO_tM%wXa=5&S&Cr|S8inuXJIqKT- zvM*V--P^+~SMPei>$0C{cgo(Sm50ByyH1+*+_!Rhjb&Kek67LL;@eN$iwupMZI;!( z@zgb!>v^m8>ADoptdB}uKJBd1<(O*WO-JuUeymP4UDjk5X1=>=p4w6AvLw@$nm!~A%*){V3qf9Kdjs{}tt4=7C{OEVV=I*D>)1)^AUcbEi z*PBuu-_Y+jzWhDXf1*NBm!Fi%&)zw1<`Q>s~o? z$=!R_E8l~9-%aYn1CI5$1qUp8)3J70tF(}oQms6*691#BwqUn))e~3#XAt&17pkZA zTyn~M=QpiW*UjC0%O~T#+tj@rAE(UnR6Tmi_o2?7ZTG{@_bbevG;z(>z4!05N&J0h zdO9{>-G{7_tZISd_w+7AJf+lf5RYmWsT*zf)3a>#5^MZA$uFv+`E%uIrw=cl)EcTg|6EIkEkW-i_bJ zPi{s#2YtKhbUyF>-Sr{ga?bu;ksZ7EBfslqebJ?VYj4_F9IjruFQ4w4W6%lL@h92G&=Rz8`x-DAx(ukG(oo7o21&fWO;rKt5y{*OtsKRf-Hd#Ivk)28)e zdoPEc>v=w_$z3IM%f5RRQ!6J5Ru!wgjSpIBZzSz~N<3t0b>_;0pE8%t-z&IvW!U!F z%L6S=7W+4A+nfKi++q>s8M^q_=~>DBNySFzryQ64cIEFL<$V289o_ioi7`)p|KTgY zrYCE>PddLK%J{ac?!JdMSwB`~Xo)SmA9p2o&JWeFt*1Ix&EEPp`}VH9yHi)a-eD2F z%{kmKd!J(eBa^KqTW|XEo;kr}tj}eRf@Jn03mzZ^|+If0g7)7cbY#p7(zK^!fgEd<-A0e{Xc| zel^$c=%=>|`>%Qi*Iasj`E=&2(7Rv5yxLY>-d-PddG992U0D@8R?AjTzP|0^+uy#q4@&Q5WKY$7_*LC^+y1F*?8~CQ z&n)i<`|^C*s!6{tPCCBVX8rq(nYPPA?Ys}9Ew#R#n{4~?QT}I*HGAT&p6XY7^XE!> zb>>US_u;|IKWn`B<^HhhKZEY7{|vqV8Mdj<*Wb76o7DA=wUxf|TU>oT`Rglo7@lUg zs_SA~?pnQf_5P-M`Te_oOH?zwHuj#oJL*T@wzC1hmYeN6*%1@5=kt2kRNsT$5AL(( z8ZFyl%-Uxh9D z)$ftUxqa8tqsLYT-CDBOD_3P#QDohHBd@DkCBaRP^>S9+yV1ug?6g(*oSdQa-A9(8 zPCs)5wr9KzJ$E-$Q251h{c!UueeT;AX$w3Gz8JSAGk0>d$)k^5DIvM*Hpgq;^$iyK zu}D9pI{a(gbtTJnAKgtwZMb9}9d4U_opaayvcvfrn|>n{!mJ#~rQWtN(~?XOOscZto7kl;=0*pF&Us}yaG z__ovBU1`~=u6c*<|5m8@RWB4(@P=D=NBOVD_RC6}7Nx(}{dMPRwq(%muO$~(ZL*xc z?$yQh z39qX6&a^!^@2&IgKizjU;=6BFzth?3`1}3YX?H{IB{ds!U;k&|_pBHGDcAC6-s69% z<@yie-&y|dV*ivO=d=IkCiRaKSH$P1=Gsp#%X(p4cDsh}+<%6uKGlDzY#+n^`N?l` z{m-zm*S_bB{(pweM*Qk;9$irTUGnb0`^R~W^)v5o=>8)L8mh6f*AV|#n799}{&%0d z&&|qq?Q;88{rv8&ysm9u>bFY&besM2P07sVKmIdZ{?+UE;CSGgFB89C_1}ClR3u~e zn!d(pD^uZXPb0SZ?+v(VW$JPHiblwERg3*C6Bn&jSsW)+EA?}VS;G2T^ZSy8Pl_J; zow;O|{!)>tKAzJ5-u=0MC*AXY>VF2ND*L1P8Dj2zS>Nn+e>E!{4||>1sTXRZQ=4it z(P)uqsZCGyoQ>9dZr8Kzto6#DyX@-gm)q*S7P9J?%&Str{%mX+)8iL0LL zf3OvJc|E0^XII3;f1VfqT2(*1J;}Rw>2yn}m9O2eeDAye{(f=gBdOYi%dg~BH$=P@ zvr6&ZJ-b$>uc5hxINQ1U;WRJ$L;xA+~`%{Jkw7}JKC;POtSeNUGUpf=dWtpm0P>p7wyw{ zrmZ<+_4oYk_sW+u|Luq>JW$q>zD-*ay}`S3X;@a_UA`?%H+5Qw4?JhuX<#2O9qM z+PZ7E%)XoJzxY%gd)1wrQyOS`^4F>tcUJDdyHi-Zd)B0I;mMQzXP7{!&_gaL;y_#)({9VPLbN5ri zjU=@qx_`&>`2Jnh{_xnb`Rk?^7OuEvl3p&V`)`$p^tL-2PAi=js(*9ua=>HBOE2z= z{o0^%YSPwo!Mzr_v6-+zt4W$me4-S6uMxSoA;xA&(890+*~&6OUC&h z3;yxH_juoT&o=MRr$<^xTQ2+bFFmY#_p7(m`^Dj*r@p%S?-FxZ`JbU;|GvGZ@kT!E ze($cwrQ~e6pyj-OU3itwe+HrD@6479N^K8ZFZFU-ny9wAnRD^1O=kATB&MFe>;CUa z#zhQcPrC4}n!9Bo zPyM?1fAeZv#is1H%jG&RajLTZr2KydZMjR?hxZBA9NkfQc%6AxrP7jM zRaJKFio?3suiqz5|6a6yE&u$E)8Z5D)v5OG?O9*rA6(VByp6q8I-M`Z z;)UtDqf)BtIk#C0M^=`V{F!j%#l81$EtBWIejC1O>gx%&X4h^A57?a-b*fS!_HSR- z_Mg4;ra$MM+p2!{P{5BgdmY}|zw8-LV+*_r=O0}u&bjJNf=+Dbk8MS#rsO`iIrO&d z##H&ud)BR++OxtXUM|g4OQ!p6|CJC+!^0M9R$e)GR+j5>y0`ND7TufQdH=|LT{m~j z+W37Ip=ba0J4a^4#oXa%+I4r%ioV6mix<0oDCvH&(Y|`>ipV#*OL9!oOQYMqrTy)0 z`Yl%b^xB;mukTU6ROPI9G=0wfr!V&?`ljwed)vGle{!=FKds63zIu~2?d5L!Gjr}e zwe8-UGqEIIZ1J8lo!3vb?#eqJ&}~v%_33)rl>qzHk1mVXP5!6j9Pww$IdR#>56h>& zI(v-u&(f9Vsf!j){Tq5k#Os^(#M+pz`YYV4tJ{8C<*lC*+OzNP&GUgFH?F=+J*oS3 zU6I<~Th@D_1E+4Jf9;_iRhTK25|z$>UuM*m!UEvt;=l1ZnY`d`hKdai$`RXodG zpj_^PocemJ$K_pK*)oOx{h5EcwqD#e@6gRV-@-hlw})K~wG4e9FOsfo9=1qa?22sU zyDwI+u7o_^bK+fVrc0FRvMXkF|GZu|Z(p@5+*5hUq{q?fOKsj2?^V~HzrR0rn}47I z!->Zt(*!xyZl7kc4}Mh?YqK}GYHq`4<3N*rTl39avqMjZ9nDt_6`p7}SxX`O*jm5U zyOeT#7>_(yE-rrMnQ-BxNqYIM@01Pq=~>hq*{UwMx^J`m>9-fJU$$KDzKdP&?KJkc z7gf5#_Nj0G8ZSNhioaLeo0LbP7XFX9-Y@#TYkP3QtRp}5E%L3WpM1Oh#Eo@p7Ur)q zSCkE3NTda`Tkx{7|3m?<#)D4Y{_vo-lk*=*BYZI`pQ zADIwz@uI^C&6kV)*^JDTOxOAcDJjWQa+?xpoCO7UWFPCi@uTaK_dV%}j`wf9FL}*< zr(@2S_a9T%gnp=&>n+mXy6;@e9+_jlHjCG7l?Yv~6)Kjj+BQGr=i>9~B6|!|_NZk2 zty7$Qpwou)eo*MK?mID=b5`}tGmXC*J5|&s>eB&>8cb>T^S6g^_<(xZhC!=1u zEqhtC?bue4b1q-^?)OvuJ-y`Lr5}^Ss$H{#7H?mzdvksBH~Sq|Zb$#L$_;Is?;n3z zcWKn6by0U8Tj)H@cb_M3aWY+do<&;Hsh^AUPHJDY&-{5(ds*50;yL@P-ete|vEbl+ zeye+-tN(^BnLpG1K+^h}_(#)T$ZT0zu*37$+CILw;@?(ZHS@o-WJ-Ff?=O#c%kL)J zC$4*)`8#t(U~li4Jas>t#pc0v>Ch1}H@~Fh=Cwl@foR1BR_jdc{XcFkQzRGNsOG;kV z*43wFvd?{e(eX64r=9bbVbU=}E}d!9R#_h{y~i@iYM)=&<&8DTN%|onu@_J6t;)T8 z;P}_O3tFXggCEb6yL>^8`Jeyws(qWKZcSM%@7`(g)Le94Zt1kTRgs<#x1W@bZsQS~ z?_uaAEpIJv(>Ue>elE0|_wwrTJAF7tPeN5z&rH96n(aNg6e0iG8xTD`R|dw=Un+37zV z+H)ZLg+fEW&U*Ir=(^dr78fr)qs!;E?Dd_!m-XMdDXp6I+2*a(QQhn(JC3rRSKHyU z;)G>Vsf}LIx)bvzm3Qradr|WGt+Ifdxl6BRE&Wopx%SDD>HmTb#S3-5niabwI#f~g zX7ZCAvlj<{)w{f;A~f~eXDerSk9)no(>(9(cQaF8doHeH{?_mm*O0sNs_)xRzgv-Q zx8kGX#9$qh?Gp2QBd5NNU0VI5E337?{z~V>;3Ivn_gi1Cy|t|O!QqYhvDSX2T(_rZ zo0!L%T;>qp)2F%MQ`WB&-(SnB>df9{m-2C5%I#FwERT+k>9-fpvhRJtHa+6Q8K(JGygO z&;9f(c9FNU7X(&(QjM8^XwugDpZ;#_bIu*-dV0O?j;z`GjT^sCTjSOA)YjKqYSpnL zw`-%V&+lAq>XPFc*R^Wi6JseOunwi<|zGqAanOt>OmEo z#Eh1{ZH`iDH%`Zgr%qoSwtU&AAj|OOIvt&xRxLZ9Enec6`^!aen)uZ^cZu;!5SCVU|ZVnDPtZVCPeOF|o*U{uh)#0hx6G1Dc7cKfB8EbLnPq(Y_ zZ@1XauxBdyZe=$<(`mAR((@f>3eQ&ws_*Yyx;0ZN|siZyz@erpY&|j znBBbAb!Y6#WzBMX(~81w#eLI`4%E7Q zcz3eHf_oZipZe5Hh5WzFv^{zM*s7pEU0jcnCPne7n6hzB&Rlph&+x>&S5S1oh*ubS=KxW1tGJDxvScl21_6uYaDcLP(xj_u1< zy%<=&cxIq^^0!wT?WeAI^7=v7+^AO7SMMf1u@YWUE)%V}?QGWGXxS|rPCody?$0K} zd;Gn(wYHwT7;rz@c>RT|YyR~Xwg>8X+TV)(^ZEMb?~>c*)^e|k>#L8J39mPLZejjb z{=kkMn=S>r$NKiC>1CNMIvQgj!V_Dxc%^7WhjMe*6k{)l^hS*v5N z-W3&3bv0Wid|Yn*%ey=!+vd8TPFUJ%*2kI0zoN_Jo9U)vCG|U<8~d~3q*wZ$JGSgq zt?K1_`@X(U?LBsWxz5FD;^{x8-*eo0zf(uMZI55{zU2CaTMnJL`r+~}m#9@&{javE z#8t}f-)QD98sZY_6?mfJ$F({0*pG&;yxAS8?yhQk^vmt#o4;h;Yg@B7K6{h*l&RCD zPObWNa(bou%Bh!5eEogrX=w1W^M@nfFE5Qu-V!eUzGffKqG{)C{!Oc~>3x1YT|QD@ z^5>a3pF(aGoZ<}s6gzWMl}6`9wfTAdGlRb^77Shcb@kS=$=}*i=gtvtORIQa7@NCt z_0nZ~Z)pivyxTJO-TUP5dZ(1Ey^-p#R;_!nHrzDPeDzf|>+D(E_AQh0@+$l6sk6>) zYv=F!Uw5uZ*v)^scf}m<$5o-rO-%V0&0DIva&3)X#EJ*5Zl`1Izbf^vi=7xMdg@75 zm4CKRcjoIGnY&!pBu%;((Np!i_Rj6vnv>pJoq9JfZS5)geVXU(%ncX+yj!_xb=I0` zcYe!kzppS;dXrbT)Pe5bm5NDk|1SA9r+iYf$W51!oRz+}UBg9_?Qi$q-v0Zv!P{#W zrDDW=OX{}Wl%DO_?`URv=H0r8+ah|)T|>SuPMZE>>H(iOy%~33ObPk1WP8-V@cv2e z6U&xOS!+7$-0b7BPyRE^On;v+uZ-n|`?=>^`*z!`Za-ysR%6Me=h9QnJFjYW`?}rV z85$OO`F-bn{%34;c844OnabaN^5w6u@8w@CT7Iu%)%)+>**}eJG%H)*eCan_ zxAa~9to4Pp58oA+P1HyXZJOBqHtW+_<_9{Yjd(yZX7+<_gYFRZ{;t4^`d{zLM+4IxoYNoF+8d^ zZ{3=LyK^7sq}yEY7ELwb-1ggN!|vU&`<{PV|IX&~q&Ugg{2QSQ{xhUSe)p`?oN!M$ zIxp_>y8T%e-HL3S2-}zF+aQW{d`{nm87YWTf;>-E-@wWrPDWw5R!%UZa@T@7?x#!}V z3tG+|SK@>BEc5%jzeG=e+qYk4QSKL47TiA)^j7rf-)_0js}pjTR<7Q?>rSZ2v)ixL z4_1Hr{7!#$t1Q#@4;v4M@h%TL=N|O%T2^+_scUba8X0y>I)N;evb%hIc;^nrg~{q-OLj@G{P?U=ZN>6Q zlgf{3%ZqHZjQD0Nx-Mzan-weeakU+Ja6C@-(0qwm`777ttnU`ut^E3?P`=6)VZ#fd z8&|$AFI4He@^z>1x4Cm~Z@$?Zzd&kb;nh24w*vzkQ>W^!+_O!r*z91u_FvT^^{|7+ zcX!8riTbW>EBn}W-C|`w(U(7s&RPaf3w&)Xd|G$rGsFD7k=ZZxwso(y)_U<;Gu1P3 zW#?OW(>FyWVXL&Xv?Q5N=XHLZxN46@u&y2N3dt~2m-UfieSHs=f-FxzdfFPA9Qym} z?n!%|Z+YIK>$ct7v-IknyH_r&U2^v>D3!9c?Y{FVZ+>~x#PvSYD!dzSzr3FGWyhbl z9+&eNH+J4EU)S|_)@gBDHe+Y&uyvs!U*e6vdMMrhdS~`3rB7R5b+ymEn|9^a+N`U8 zRvWEbwsg_j)B2+2v%0EMikx|-3frX{&N;RERM%IRyP;*uU$0)i^ICP~%2`oeo%c3* z>Z}jn=dSf`U1;2@Rr|Kuv(D_)a$BEe8$45bf2e=n(Z5^QWUP}pxAN?XLs`B%^DIiE zOhse4R960b^=|*&ov)eOWWAarD{?OX*)=O=MZ5ZO-S2KE|K|OgWoh;I_wH3yQ$B51 zme!U5O*!~Z6+alTr+;$s(Ir-U51x&ien)H8pMDRmKV4=!YpuFNo#&dW%&%AazG2-x zPHxev9h;L?tim=b^lh&z9s(|T>FhL+gXP7l$AQ}Gg>KAJ!NKX0u#r_8w?B#mf>6PZ_)dF zbL-*O#patHh5StUZv96rQ+eg85`iGY59hT`Jk1Ub4d401<;Cp%rEwkC!~N#0@^rGf zc{o#N^YqD7@ zRBlCat*%Z;$i>4vIc*YAJ$+`TQrAp{Q(RnLbacM5Tiqw0lCtsnH?GyK=b9sCyt%q{ zyVlfIJG56Vojh++<@D0(l`1(?R_y*ORkq&u%8Z*|Hw!L)^sK+N|4eo1q0hmt%Ij}# zeif?qX1dvheOupjcJ23;Kfe>hH^3r)N9q+{8p zkBTkd>RvwG_q%@EtCKq-;9?uu!D4D-5$VkD-Og&f#Yk~`00VyBj6a*=-7OEI&Z zvYWKDqt3nhX||2a^v&gC>++VhUVXFkZsy_@VM-@u{8oos_Lg^u6i*E^uV2*k zs(MQKW?%5+J6dnH)nq+3ez{WDbPFff z^?iFg=Dd4%Kag3H>+QL|s@+osSEZ-CRekKmYw5FXfBPJ-)&AD~T2YoIpXyJ3y!2zu zo=)|u8=-rvkL&B*Ex+-C@8VmQlRNAlUphPW;TMswKg0#acRX6LeAY$Q5{Ydw6U{7M zD@7*PPu{mnefRYD^&j6_PO+7~+pqurQMS)#&12Q>J7U+K zH~Dq#uI1^EtCt$ZtSz~!H_fK(&DD}G;#%Qv&z;JQ7wNqjC}wVW#xJEfwAw#lUqI}1 zx7{{h9tXUyn0st-$mR;IweOCl-kLb&>ldS4)3z;g{}mnd{Y_}n=9%Z+m21V#{QS7z zTtA{Oq0jeg^XwE8&eY{scfQEj_)E-XgVEXvp}W>CTBmXS&^%K&r{iib)=hou`%`wy z;tmHXKio|^c4dg^&gWyR&M$*sL_ z?2K!_&)0wGz0Ut*kH?MPEaj*xHwA@LTr}oy&2R4iBY!9BWaZ||KkX*H?#_1ZVHHuuU270$ERk$ZB>b*=123-(`r>mMyF z^{U%9SbP@Oj?fyFJ{NcOwwJrZ7f;!_b9--<-;`f7j-AR?J=eM_=*ruj2S3KDiho`7 zclCo0KNqz%_BNfJm|3>)sa5t|XIZ)W8 zkLzDooSJgi^0WJeztZ8`uIjAJ5-Ym5JTSG6|EwKvNygcNg-1-6H~!Pj*tBL-)3o=C zBY!X2^on)cy4I;zw&ca$^e&H>*Y}!xPVdC1uGPZxH^)46(R2EJQ~%Jniha>~9hsAF zhjnUsI%l*^oustv#k21kS8fKcd-*6R_0?JLiBVb^+6($t^=&eDHVIODJF(Aqs`z&? z^&6tc*M|N(A9=W~ymZ=Tor4;aHVf^zda7IX)6xCfim$I;4l3!b2~Be+IMa#S1fj3swXzSRFZYQN-kV zd&?$fsig0EDZ2ko?p^5zhdp*wtVsD`HZx(y+?dQwq0u@eSH60`dTktePyc<$II$LPggkDM#K{JJ;u$9o6fu zUAZ$*xOUbRzYPqlj0!8=njiFUHg~tSU7_cD*(Ux|>7fr-Qfn`5TKaYBS07hbk89zp zJ{{ks^vO`_YRKKd@Rj=+*m<{oI=~$?@=f!|&f_N^KMc0N zy7SYmz4j}Y)TW#c49r}xJ0vLT>BR8TkT!Gmvf2NZDZKYt3P>pZ(1C<>c`TjMXpAR)ZNvUudmwKy?gqugXz_Y`IY_`V~$rA|ND4k z)`ha}z>DkZrZ2l%^1LU#*|#in*{p|GMMOKl$rhR)J+~zyXV>Jm3z=oJqqA??URve- zR<`D<;P#hGbeB(jSJQPgY-{M+x->#j!ew+55K+zLxC#i=SI)X!vwVN@cd68;vnD;xnI`!#K6&P*Rr+t8uLO3SD*1PK z&XJzIH+99^l!_K-uXwz|#Xs%5>xvo7lBa=3?;H)BjX# zjc@*lyew0-^m6o<=gbRdo<6fF_=cuZ(faLW$GUf#Y>UdwnUcGF(X!=BmZx9rlDK51 z{>J5nUfK8XRojzQ<&*vth1-^Gj__ume@^nBzq#O^^gA#0ejP6B_Ac}*nW(9CajUrb z_J8O4%$1cx{ZgLId|Oo#=dM^PBU&K2tcKxbO2xW45lY)#l}xX5_q>{PC-2judhbB9 z6YJwvZw^i~FLm3x^1_{jBiYwiN98TewDkO%uhY48T;vvz~7Z6)tgK^=5a@7Uk7%`W?24eeX;QHHrA<-tV{N z>le|fhMOW}H(843{#Dz#>bmLKyX&)OJzKSC(Yz_WvPb8qo$Dw(9_Sss@>gxYMMo{g7C&w%xnHJI>Jbs%p3Ci>+Tp(6?AP{Z2i^Csl99Mt5V&gVOqO-amtQ`!>ap@# zarV6%4|{8WpP2C^^rpnOUoo@)ni-eejrx-NQ1EZyr8(Kr1>S9j({HS;RI@GZ-?e)C zoy^-d!sbWKvnK|Z#7-5p0`0ET%JazicQGbYbZ!)$t-B?QXR0qxtv$8tp(jhn?!}YlEh;~Jx@{E{6ck>h zRMmDNm-pP-$k26@0wX+&V*kEhd3RC9v|XXQ7v@fT@>$a^f78Q@@-G+~RQsE?j^@t1 zW?Zo8-U^L(+q$>fOqsf+G|((UYhiWh`rbEXFP`mOwPM9yQITcqF6^JYac1I7(bF0i z_*G7BJXt=sP`Wk0uy{edXsWKuyq1s4S8m$5NvY)7#H#5Ye5Xp&eV_3&bAFDrnfmIO z@{EH23^7x7{$rf;&{XSduXN>RUyqxj_A6cr3ckF&XnRS>tGOJhej9Er><#T*HT8Ch zOOpDZkZwLL+#<#_@-rwqSdw$`M*0N`(ZW{cF^Ez?8?A+@RZtd_} zeNXRluRmwH@q$)K)$zAB8#2_nZ@oWOdPpi)@3PIb_nrZ(uIx0Ln7kl;W#wztC(F~{ zgy&x@`=FEDI)BpgiE4(0dtWVEdNBXAR>soYU3Zf@vtGVTFAkr0HTYD=CR6dej7Qlu zR$fc59TisST+_QYS)$|G)|Hz~g%1kyzt}$YsHdmrKKJBVfrU+n(x>$4mQ4G7&~AHN z0nfLlMR#kqc)qZmXnW=hL++bQ*I=gO<{YHF)BPyP1RpT664 z-|o**I)1DAz6PFn_ejjjBbGVt{o;F85f`KGet(+NHCJj?eB7cJ&lJ~)1O}(>SZ6-v z@_|(wUCXyQ$DFuYb~kF$))VtMAHH#Ze|ST-+Puif+~aS)trp#78g4Z0zNf4XZ|KL6 zWI?I<2i9%9>$UOjL|;=s&Ufo{PR*ZM$|G*2xpGxv*P?j~yJa?d9jR8yT6XHX(wC5s z7b}*(;!bY4Rq5*Sap9+YV_Cmz+(#dKe$8qYKdL`fZ)G&^rDCY^BuIyaV z;(5=l%e5sh?%7)%A?j5${aU4perfgXBUA52`payeUGbxV(Nl(jLB93UOW%}jAz|09 zIJ&#L3ooBn`NZQ$G%YE|bHa zeO?oDCVu*DSsA_kjmjF`JM)*+T2^~|&-y*1>)*w$H{I8yZI8E}{>zs0-EEF}tX465 zP)O0nuVO0|Yc^e6EHiu6&srUyry+O69z2q~x!%2aPqNh6^*dGO1x`vY{hV~|R_pCb zEp6GS(=#uMAI_L2vEBDqm?dxYt*Ohu`|3Yh^|}6tbfjxfA!Byehg(@9MaP4FzDl07 zt$9&Z?A=pyV^7TEnDFIha9#J+Kf(%^bCTVDL|tC7X!Vt@U-2h$Q;N4|S+5P2kF40S zGkDde{?eph7d53Xr-Z1kI%U|s;y*)n|K|O-O19kR`26qR<7XSsPtM9~Dzu*zr5W+p z;BbM}p0It-);;|+r_Jkk$!VWs>%&z zGFLbL<{IKRbN=Mrw>paM*sPvhCF ztC8Hdb#1*Rm9*tHo;qfkT&1m&W!dkVJ*V4YTOIe8&mGeL+?U_f6PcyHcE{dV-n=)j zY0vo@@h5a$*$1CjQOi&3Px8BNcv2;J`^0rc+sqdSu6rMMd!3d=-vjT?Si7q_LQ$vt z`U7vzcCXl~!l}A1YTrNCsavx;*7xt}yr@$2uH(Af?$S{AqIp}tUH|ZTUe=#qNAoYt zS++SmJ2&LpueO+cowk$K58^UZ=T5W?TX<1_QP;+eF-M-pPR?DiX>pXqO8>6f`Da#b znH=$|V}1IzwNG#LFZ(rp(axu?p~v1YF6rBILpJE&w^i3=L^oUvzfitv^+xu9YbXTRFqibiD8$0ugobOi8Ps)nk>P(AVv~*gU(yn2I=lRJ5r0v&Y&m5vz9F>Fj5|u-9PcE5GHJpM?JC-L!AsS>ODPI(5-SJI9T0DJf?Bgp3Yi9n{+LcwFse0XTUR2kw9INBe z(cy(vyIkh2T6vOL@O=5w^UCqo7h|thFVDZy`RcjEtoGyI)awtI z5W-p5?i!Ir2#joj|b@lkuY_Z?vbFcmRGyC7R+mg<1rw^tCee|2v|MS4H z%m2c>A6;0wc3$jL&Ad;1?@#~yeP8v-mp}8TPoI7L^o!XiR(a|qPA@Nc;aq&dzuM6E z!!gyXm5=u;Flg!$a?0BO3{x79tls!e=3_1Y#+X$vH|3`8+&Y~t=cjvyc3j3_3eB;%l1q-`wI`f+FK53d~c2v4N^l5f*itqLHO~Ui6ceKpz zS$E0T`}DPSR&SF1(_^@W-^s0C=CN|ly0t5kRw>zjx~l!3!QdrDpY%(wAOW|^74gs*5F7uA!izbGdd_kCvNvc_MT^ZCvDtafxA-=Z(Sa^-@U zWwX57yi1lPr%XDW(s?%L@~54Ft2XUD+qirErRfL#4`Cm@X`Ng%S5NeI+lPm>*QHM< z%+|Pe>%8Wou=Vy&Udw9V=M}Z84?Q0;sr=L1v-e#3vaC#9mb-2V&CWkPrQ-K5@i?>G znlH7&FQ%Or%_|o9wLRY@>zD@<7mnD zKeaLIt9MpT6!UV|ewKG~*Va$PT8kwv?OL;aR!rAL-*{)6(vZ@L+cHvn%X4~)^19~l z_);C}Em~?a;jB!tvvKGow{MGQeOr|SYT}97x^jK%{ot#f7B2L5>4M(mi@DxwCe`@W z-a28p>$~=oY3FwDj6JdPmq*OoiBYSLxQ1DJ=w=vVh5zx)mrvfDpi&YRa+ zuM@cHGuuzMnvGAEpFS1w?&ew_z2M}XR&SF}d|W+co6cqab*Z=IcO83fn(=CJNQisx zmqm4V)@Qxzx*FG&*4P!aTB|s?`LO%it+r;j1GcVAtz^|Ij>!D>C*0)c@}q@%^_#A5 zNxObaf5GI~C)?NA&PyuZbah6=R8gV((I@)eD?SSi5BBL;-+5})Zl$fEp{rJ3R-e;r ze)Z4s=CjpXvias%p4)dz>Q?mEg)8?|#x9?`ZdUKhhxe4sXPLh}bA9XnBJtOU&Wl8( zOIk@MUD4rtaeJP9ZL3O__0+8*L5tKYeXRw zxO3|}ebueEl3x3E+`4$`#fpUc>#bJLc`3JV@|<_Ob9Udk9ldMQalhrES*zw0o$vP8 za&J4wqMdg(ai5I~p7qqUZ&ynBtK-_Q^rq&23=MtNlU1dY?~+xal(%FLvtmz3*sCYb zUVi>MC(UECP3i?#te*GU)iHC+&Z}=%tXawPjvaP8Ag1(;D^l=E_}f z+M~;43w#R}Zj0G5;Yzlzt6J$wlQZ42TkdM^KlhQ_T3$;@dG1x!HFr0kyl5-#c5n7x zzMu!)E%JXf_Bi=FMoT}taMyUpv7Irm?!Npqdrgq5Nm<#tds7Ox3VB{#eR-bRmuIfg zdllEeUg=$Avuje>mO06L_0slS(Gx6L9QG+QzcOxS<~QHUxocCVevc`ev}u{!R?Dbv zm5Dn~b#!!etiCAlpP}S)ORwf7ooUwBG?!J?_rxh?&y+1)F1KXS%H){YmO>tnvnPs* z1_sxy$We&+<(Vw0x1s;kt|soKB3rH+91Zlh7PCy6+VRcfs_)cQ-4_FcuPocM{X^-J zYtdV-OV`axn6`V#i#=Drh*@QM9SQZ_Iol>Dr?)8o;@Kig@l{%yn-~vGj+uFmOK{&K z$#T9uKIy+KSD63a7CP}!sP2wipQP8EpS4|m^OaTm=B*3g8=5k8^;wa=`zh6CuXe9G zr8Cplx2tPg@5botx7XFSPM!99?yh-H9m9HKZ{E9n#qgtT)T&iii$$YWt(q-c{Hdj) zV%lz(jk=W^qvgXVyqJ6Na_sKj->248t=xOHSajuIr6cd2m3`Jb7;cSP)zy=w9=y)Z@7?~Z@fC%qx5WJ|D0ThqqQ8FI?c}+)uXy%f zQLoLLdTPIS{^cXHOR^JtMII}^erO&Me~3SG+RW##?tMDAqBm{E6WwPwH7{*i*uQY) zSEZs*)86Xohs^bkntusd`Lx7x%c?6MeoddnpwQ`nJp+;_%5MH`%g35Mf*<(jJ)1J| zyqUADQl#OJh1H9T*M)XJ`SLz|Yhc8UJO93(K6CYHXW%+_ZNCYctGEB|(6@`pPncz! zzwXnSYEO;HIwv(FX1mHhTe<3XwQB6uu!xmYKN|{4b=;a7TD<*ferVOHsg|MBU3}l% z>kJRSs*$;+^2(&hH@o&1ovu6FSJKbW?_F}~bVBk?rQ4dbW%`pVqgA?hFDX(xc`H* zu3BF)(|u5NY|E7FJyWmhm1}Ry30X7q^^4t$v_9<>jM~>{;3Ic=nT73asSN>+SsRnD z7)0xC2~b)RQgY$gjYpj;_OH5Ty4HUu*OZ@jw^-#i6eh3ObviWE=Gt1*<$sQEICO09 z2CIhw*Zd1-#$H@kQ@GS7X7~Cp>q4`%lZ)3eoc%I8-#KUV*^fW|GdLf*XPB%1ymrZ| zm3uBP{$=r>VfkzOn$7Ju6&O^`Mldii$9?oY^iJ}aU)%kX?>1YvJ@3Dt7;$Iq(_B}P z72S8Q9Qf+`?s@OM$?}`tth_2J8dxU4Xnf9XNhVwJ!DoB#eyI+;^*lb8w=}fv-P3zE z>n@*rb~xhbhxdZgr%Z|_3*W{eh_h84j%Fc7Y*U8tqhIrTJ zD{bFBd#Y%xuaS~b*dnbr9Zy`t7U?P{T|Yf}-SsoYs@qN{oi+IN{8kZnNN;gi-zw9P z(7gW)Ug~ep99Mg>HssYZ#Wk7ty5eTd`WkPq{=@j@KHiGSKOf!A_|@~D;Ye`Y>Y7)s zHBaUCMt$A!>&#irRH|7^*>?i7k2FS8C&z4Yj3J0 zl@!JX~KKLE&^LUbFImt9QHEYqAkdT*~CT2}y4&ZT zEju46b#G3`x;M-Hf+zKOrK^hWIqQE^TR(^e&OcwUW^1P2{1BfzY?s5Xq-@W; z8mO}8%I3VTcW!24TIt{b%5*`S`G`+*VpQd1~m& z`#blXrd^K~Am7S9IGc^C{oZZUP#5Q@aEuPW)G~M^MzmU>4 zjjLt(#&{rE-#j*y?nS^?#cc48qS`DyWYz0dU`9cYW2$1CrrBjhWCW{2FjPJrs@RkKCx=z zKATCG*7#-p`ZcfV)ZDi_E_$sMd0fnNb(h9V#bc&%tutKz2CkIa^xo@K*X)}2@#6a; ztX~M)dNS8N`gCmF(~w_Ks;#Qv z#PzDFn@m^lzvFe#?ou{Shwt(!QSGVWVrL(FH`;I;tX?%~vHG%wsna!6*1Gw!KAX6b zH_3M8m(WY5sV@JPtcj1j$m(4t_d4g7{Bgbo8BbGPc#fL}wf=nCxye%E#k(ti&)Syo z_+KyCpb}i4y5-#O)0u`{SMI1iI(fs>OUru&gKR2Mm6O2xIdbCP`fk5pf1u{Uhy7d1 z?$_3_Tck^$-f75U{hYn^@8WI0Uw@Fdu+e`jyZwHA!{Jex0Sg1ub6dX6c+u8$J1cG9 z^K0$bg0-Wzy%N`rt)BDto8QxpbuKR-y`430tM7$}AD#)HSI&J^xA3+}w{MZmrmy;i z=||sAHP8BKIpf|tu8O%jeRp47TXrUC-Mb?7t$|ka3JiKaydG=Uz5HD zPP%g0rE6lqQSJR_U*5cEIa@~Kh`Uy?b?w#IM|(|goxL3>FEcCWF306FMekF$J~!8x z^tx=#>TE6bt-&WwF3UP9rC)YawBxGZ_wwb7_nj;D<@WcN)#2$}vGW zv%Mkj{>r<}Gyh#)we!^d>r7cbnr!5MKAq!t z!M*rNsRzocKfXM?JbgWLgxI|B=ON}Y%WmdJooU?WZJY9D<*pFR&sTSZ05P% zbM~o4d6v zUd2Wd-y%zoteRFGdhTJ)%$k%XD{A!Oy5{MI#IwdfS}vSbSUBrc>ebe_)!H4gx6U3b z$XvE_S#NvmGn2@7roJWHceyTK>3VmP`J{-r?#+*@>qFlbX@}Z+b*1{1FF%vD#W)~q zlWJ*bn)Remo$W8KSIYYbe7%1S-^Q;K}Gy6>->HD89z54`giem?bjbN59d~oRuH3A zA!c*H^7j_^t=0SwPJ3$3?YEn4bY;yxPu(4Lw){rhcCD3~eb##N^hwj?%Iw06l|HRf z($ad@D)u8GUpf5S*>C+RQjXC%7tSiL?UVI7n{nUv+fVL0>ksPc-JBORXSY)5nQkSA zIVaXeTz$RmP0@$6S(#hsdwiJ1Q+3$mmUZgRITJV6-gz2&_k7W>J5NJHO3f*;RZ?HeT4(cU`+K^4!c9`=-4~_X{sB^-Ddj*Yol}L&fyk zkOP{k-E|rEdY3(|a`*jbSe$+JpKi#9kG^}V=81xrd$`Rd|L6{G2ma z&?aWpK92bZc`AF(ZJvBD1tbjqAswlFZ$Ia>pJZf)5X*;O}sK?g84zSr}q|y)@JNpR8e&*fz|rW>QZre zq}uK9pT%!=fAh}&y=DIAt^#)HH;H(pnQMELUVikS;=Aa2=OycDwkyI)!*lQLYMWIt z(Ms*rn)$QqR_#^}UsUmKx4^!O_pE;8zvX%mZgptI=hB5|6u0mD*=@G#cBs3q>7$9= zwo04QUGEy6n`pf>uJ-CCkIswbT2AvOMQsh~GC#5MYGu^wjejgx9oLTO>gwLK=*Pma zFOz~a&qN=qm}|di*L?3azrs^azLePLUbf6rUg*bR?a)Y_`gbR;Z?Atdsd?59g)_1} z&m+@#Lqo1R8ZC29@4fH2X6n0KZ{e$(Q{8q7+F#O|tC1S^wN};Ch;OUy$sH5s#-G%S zvadL78h6-JH}<>7Ca#!y76}uRrfup|Uq0>9;>llAmq$uH`MR(!DsjcN-lWSu<$4=J zex`P7ZVQfmyH#e@y??V7sht-77SDU*+q(Oe?pLoE#=KazY(?*;g8|1~m1Q4%+i4aO zf2+&4+Mqfs=|Q*fe8*C)!?YUu88?2YJk9A%j$7lt%_VG; z*&@^1g1hG0my)SOmS%^Z z>I=zx^DOVxY^`^*-{ix46W!i6-PbNX^Ks<+dGKL<#@l_r{;;3p=l<=U`~CWZ;x_Z? zMM)gxZ~;4bB{M3spOLm@s zz(C`FJ%JlnJ-4iT;u8Az_@!d=%vEV|nJ=fETl?qA^ZyLTJ%#FKiqG78-RM8VqGum( z+D+H{Yoj@5d(zDi<-IC><&QS^O26BZHZ|Zz-t=fUO>Uc6ToGv{+)?-TT=MCS_nuwX z8`p6q-}igy#fF2g(j0bdn;(~b>)$)CEKf1@yp>zJuDVs^?Dq`lE-I=_S(3D9L(h8N zu#&T-%4(;dXPso-`JZ9JTfN&~GOp#ke3HL4=Bvvymk+Kkp|7{SSNf&iqBbYf%s%z$ zlSyrzoklsGzrxjR<_iDLE5HBtZq=k_*8MxaTzzUc*S6!A@&;>bSz*WR8;+?g-mCw7 zx@3*?p-&$Fw6v6$Hhwzw&0QoneDC|%Sy%j4ty=w{qj=f;m{-P8x6eg}E64qrv^Hf~ zc8%ha{)z|bP5KvIi++?=tvj)5$$y5fJJY;;t-Ixxq^w_mMoZ}0IoGi70jrArl~z?v zQYp&)yPnl0#6av9M{bBf(B)${R=!-E6KJ@PCp$RBi%Z%^C{(zy4sW$*l9+bOq#mt_{JA~*%yOT zU0pxAIzPOa^UPQ5sBLlDk99)*p01y} zzkPZ0;g|Fispai!BiF27Ii3IH()&tVkDvDq`mVM1-c<3lGu?knUiABZzrTKa?wUk% zvCoSGFV8orWw?2F!RBjQepU7MZ01~FRh#tN`f>^Y=RTIe+Rt{OVfrZQjYelP0Uy_1lR2-Faww&GPe> z?=LXUkn_WrkucHOl6P*_D%W2EE>}aIPksGj>+Y|i zU)5gCv0qlUXK{$J)!Be6D;D}(`zl}PoS&4>XPAFCbjrl~+{&q!?2n#$yVrZq=I-CO zUf0WhkvJMONch{#|O3+N-^HtwkfxZdyENRmVKN)8gBvO#XV) zHS*ost5+B@>hym!uRoTy?BGVpsXI-d*;T!|@#~+{;<#?J-^(uTUSBrPR38)%!-9>$xi{`hii)pV z9lY$`G$D=IEWXK7*9<#)v!iA!2igb<{4k6OYvog;tW$56@gzTD1H_aLEV56?!MPna(L))s^12W9}rz^=({oa?5S4 zohf1e8E$H=(#n7R?DoP-N0zAW6*;lK2RehV( z9c_%vXHIr|61H=lf0UNiqUHCTP1Z+E4q6|4sZzv1IdjrFbLY_eYkc2}&b{;U)V)`+ zm+SoYidKDjZLPi1FJRi6>q3v7U0b`?-!(GH`}d1*dC@sS@g?zE^VS{A+Yx8zwY>Q9 zS(dzcUbg=kUM+Q7_Hxq~cdeW!A+OKwl6g4)arX3w=F!Q4bD!oKKklDvrTpznXnpdw zpjRj4mKU6Edi7Z~`k7_^tW{w<_l0v?cTHQh-t6yVv!eCpal4m?zTC9#oAI{CGdAsr zO-%AwyO;CI4O4aIrNvJtf4aI&<7M8J&q`)hRa3H*cTT?X)HQ6Ul~(PG6_cg9I$kE! zY}z~VsC4N2>g#D+g;%Xw^+QRTJKkC%BmesJ`vr6Q_BFlaiP@;Km4E5V5WiJdR&=L? z{99#Z*VVau+g-n^^S|v(jZVkfSo*TnPPydrU0pf7Hdgxfi=Cp;ejQiy7j?f>Qtx}Y z??uwpZ)I^4cbpddR$pKEs#f|__fmhqUhUKARv$f6JvC0t##Jo8FMX%@^hAdBC+4r- zwKH(yv6td{FnO9f9sZ(eYWb|ezVN`q>k#72@IkW zVZ++|>&_>vJCQYsyH+%|_7S(brU%9a)HJ^NL^Rw?J| z@7>$$E^jhfuIKT3YJ~f2i*~CcswXp7W@Ti}&)*xB`e}A)v}j=BMB&`I+q-4v%FNqh zwr%pO>d&*QF5b;Z-}qES(D1r+tdD=2$Ii)Rr;b!9?Gj&hE_rfENKvVdyY~<0%XgKt z<+G1xs;$W~uiEwY)$(xDz`zsh?@H`mq`#oo_ws?CKe`{>W_;9pB~;RN-NNnN$$?YK zt8-(fm~*8SFa9Z%aaHup{n97(#(|-sg0fd$?7MjNtc`i6p3e`zj{w6ud3DGKRB@ck(lM1ve!*pqkTh*XH{HVm{@NA zQtHHFH?75@tJcTu-n#7QhHq96bXWC%o@{(o=GcAiZMpj%*S*Vp+AA0+tv`8_`rffx~vTgUS6K;=jWUHxXV+IGrjxK=hhRa7vZ9IxA*?;Wy`0Y^n2Bw`^(IerCT~~^>*V>@syB|lXDAa zCz{Q5KeA3t`s==FuhVxOc$KxwYnt+-dFJY2tLp7VLR|e;6vy11ERi~YSF`9jQ-A&~ z+roBUJH`F$wAV!Csnt7vfAdtSRy%ul{Rfx(GpnYXldW(#xFf!6Q%qXZChx76EFSHM(<|L{Jtq5- z$;}l%Q$la<+vlbnxj!!W%awnECf~!JOv+wo?J1hG>bljY?yAT;D_@7Eop{&1>9f+8 z+c#!M-SaBlSrFUzyYkR<{w=EmO8>1W3keI_dimi^kwCHOqWH3wQ#*XF%&}S(vFgL=FDtoLS$TPdhaOom`|GprnPx8^xp_@_d{+G8 zYRRIs-R#%PHiX|$N!EU`>cxDeV$;osUR*u-)-T2P{Djxmh^W0B>zmGh>)P$F?Q!wGZ$fXUEn4)O@!PF}-F+GT%NB0Ac6XB7&i*d0aQ}06 z_o{@r#9mH){oC)BX{ujVp~gy9jU6XmcSWsOow<0Hq@;&cVWiM8&ycigK zEqk42>AczQCW{^_tKV1H?Wij{X_9H^yj3gDgk)`%TCrzMsJrFuMM~;jTFZWI_WL1t zb=R-9;H1nIKbDHRYR_%GcP=-D--pdTxU9zb!7Qg2Pc}Rbdlj|f`pm6G8?&@#?atZlt+ey){Tp4K z--Q<$iQOqyi#hjNThOlBch#(;S<4nKYSN0bvY5>xaO_@~vvi=;wXL=u9UUF>3%@YL zPJ?$I5D|sOl5u^`^!MxC`yVIOxXM9F#!@%QWA{b%Tz{Ky8Tx3hy;nd9`&1N&>s%m1Xz7liBe zagda7i$BNu`}OYqk5zv3BlIRQoH%6kuR#BP?A`wilIlk)VVZ>n*xUrC!yTgx*F2-a z$e?FG-2HM0y+;@)4pxs$X*b&&y!Tz-`;z3P<;GXH1}W{WU44Dk{QGc!7&4^J*=KVG zhsP%4iHS(#(@!q$?B8=Y?)aj`v$hs#X;q7_l-Zdq_WJb1t0f|(d|5etlf-tOm}jl@ zc9(pCMNQ?L2R+wbe6x^(rSy^&3{_RO+yM5+-x%Nv#Zf@mF?!c3m^JTZIO!>L@)g+NV?Y);YZa=sd>T$*Y zPFK>wpob?OU{7e4Cyx!EWHW5i|48hVG#JC+vL@2=gy<7jBX_w;G5 zC8g#Z6YIn0u5FoLRr0z0Lm55V!t61N(uRyKC!TU;WSU;DBCQFxwlVR^w9jy`t0D}v-f|W znWd|EJR_#-cD71U={--mzyBGE*4@A3>2N2u&A;n2L43hiq`hQ`XU8ObE)Yt6e)z6kww$F25c&9lKE~Sy3{D+`4G z?Yr2CE0QMC7z24QTLQ$E$B>R*>LCk)+df{~;i=OT|!0-~O$4!De zMwJp90*p=PKF;cyHErgEHT*e3+V@%BS1ZphTc!5u++NXgXDhCkR|+Ogsho0-tMG36 z`HUr#?q@A)ikus$V`yf6>b;~)N5{JO+mC7)M7B?#Ry0kFf#JauVr?D?>XP1UU-`~- zle>z?mF&<^!9Lf{z}w29;fq!+kG*^&l`$q|Qs&}yfs-d?K9B0tQ9~5JJc>BA8$n8s7mdh?8JqU|{bkDN4*{U|@(T$p+iWjHDWB8vg<$F$fbX z1K}{BIf{V+WG~YN1_oA$0+rO1l41r12AR~H;u44u$QvMYS)h8^8FEuH6G35=n*w$R zR2hh}VPIhRzz})_#AeXVNXaPzvlti{$}&?@VQdf`mYI^8?~$07l9LKj!?rp%GcS#S zfkC7!7i=i9vsF?caxy7JsUS5V{UCXs(xMy%h?m&1i%XJn7#J9K7nc;nA_SynH7L?R z8X)SREGWfvft7*5g8_m;VvHg_iDk)V#(IW&h6aWTIhjcnMrI};85oxM|DS<@!7#Bb z*_qMTLH_?k2FY|^2l+P(qF8wwIv5z388{dim>C~b9PHV^$iSNM`tfOy69ozqiwmGm z069w}siX)JzU+Hzpk_-Hmw>|_#09CT0Hr-pTojiSgW?1v4vKS-oGJqYLns3Sb3ige zPX@$%7LYnd1_mxD4da8jptxiLF{mKV1~rFR^GH=ssrxxV?qh<6Ark`wEF4hW!Gc2^ zmwHA91{D2_2>q10mymuG|1dIu(izxu;P7WgxC6y~xcrBto{+u6T^=P|Wr|CRlR*gw zl9xdFg`on%X8clIQd|X<15p(W493eD7=&*yFtDv*U|_LjU|?uwU=W_lz`**Efr05A z0|Rpf1B1v>1_oAt1_p+C3=Axa3=9I13=GWa3=Dz~85mfuF)%PJU|?VtU|`^{V_;yq z&cGnZ0aZVlfq_|;fq~zEfq}J@fq`iX0|P@B0|U>01_stp1_q`*3=GV13=GWn3=9m% z85kH>F)(N*F)(oPGca&&XJBAB#K6FHiGhJ<4Fd!BA_fNTS_TI0`wR>W`xqE_#2FZP zd>I({>KGVUDj67f_b@Op++<)7_|Cu}RK&o*uFAl`>dC;s;>^In`8g_Wz*zjDdmcECT~WEdvARZ3YI87Yqz;@(c|8vJ4E& zc7a`R4@&a zRz$Ara#J#k5(^4I)e%SzjCC?06{^b0l6;VXGAW5*&7i`Z!6&gS4OZzeFfeeW6{V&! zFyA|to03?yQIwyX z7@wPJYp76Cl$w*1S!`>lU{PU_l3ZeIppaacYipp8lA4%Om7kYtYhfc zP@J7vU~337ps*l5KP{~|wZvA}NTDR7C^a#q*w#`ZCqF+sF(WlGB_1Ybs8F1fnVgCc zFi^-V0^5Q6%)b2{|Dw371qY_zF7?j+5Fq)@=}4wr-V&FiEB^@H z?7H2QQg^6gnzZTeZ92sb2G1`r>}8BN{_`Vri&n2Xp%Ijr_TYn@fEc^cNn@^c;O1vuAx7ds);;Z8Xj|Cp*SRB~c zv!4k@<wGY1-QDS zGOYCMew@{syn0#Slc$?>H5N_iHndc>+MAi6KHK==lryKC_CGf<3$-*m-28-fXUIdL zy6m7Ue9qzPs{b7f@-M38FU-(;?Zj2VxYe*zQ{N>q>6)>sy3VFe=GqV9Hh+!M)s2W? zs9^E#;r;P^roypPo8R^CSRr=$>RSI3)0qzJsGad-XQn*cJ5hOq8mnV4B9F<7V=)WBf?<1Xzy0jm5-{uP3sOVo~vl@k-_%W z`x|RY@hthxf~FVl3l+R;Sa2>$|L@%$4_MP|12j2}wti=CUuA8c^?@fORqW)aQti5c zMdJJn46o;(`MaFs=aGsWW>e=4j-u)AY#djnW$nI^aC?jHyhUuMZKoIBPc;vi(47?X z`$hK2ubNYKG46G~v!%QK&p$?%W_(7eD|0w_3Kg8C-2Y;$5-#zG5^p5gNF{w zH&jc``zkd%NusW!w=u=fR$uNvQ?k~a)n8pg=PbQr_ozIXscDMyoN3Rq9UdL|q?7ck zIYTtfsO(CJ=o=NcYwd^R_ZBbkkg>@r?3#6Nmww*S^7`oqc)KU~v2z4$GXHdHo7^`a z1JMb}yqoSyy+8i1Y39lBt`1M@^Md($yM=c1%$fFyN6?FB!@`-ue@cQ?C)dmE*uG=Umgum;Re2|Q)t1{n@iR_3_^n>8((NeM^Ia4FPntDx zuI{P(E%ovnXGuBSyW3T}$0g-$D(m_9iH8?$o-$d5rT=Cj|GgV`TNWJ1J5mrlJ9eFn z3VTV6WfT7qpP!rOEy=#4s1!Nj(PaJnwB&1y7190nyFN}itF-*x|4B+(iEB$XW&ZN5 zKh2UJnVju1``dhV!4LlXMKiDIu1eXqR3ZJqwNt&eJYTED`4he`;LTdzz`T{W*5E{< zpSIgkDKCd9j!Wj|AKkg`iC@HuB@?nV4}@!P==(PJ%H6UFJ5p!T}kc z@Y&Ph&=mJuySDF5|IB(uQr)cF%EEO|qLF@Z`;NZ&=K|{Pw^wl7&?za3oc^fq(1ib7 z2Y=S8)QL>~J*|h;_@M8P9V_;`Iju0by5QHX7_;{W@6WL}dTZDD$Nj}CS;NdZ6~Z0d zg}(kX_Wa*lKTDx}`TjdX)r|_a!cA9Y!Vf&)SS7oh-`V?dQ&{-bN%mH}fxLkn8M1l( zrf*+Now7kbXz#LPu`jDvUa;!^_H)MyhZKYBrsug1J(97Vdf(1kbfebe{O`j1?!V$& zwCKVGHo3=51vQQTVwP=DnfuUv^)bai`XU#CnWx`+{>Pc=N}+0awzz0-@1v#WL1 zp80%S#=#{!^7Dh8=^33Ww%bCggH!`AO#J<1-~CMw=a{O#W-v^we<0NI*5amcrr!I9 z7th@FNvK)P_ind{)aP1W86i1C);3x3Rg0JXXWV_gtd?iV9={2#xx89&3rqa|cYMm} zxz_Y2_09viLIt&nTTeu`gnDJYn0L50rp(5=H74_=?DtClwukrM_%ljevNt}of+Oet z!^raR?`3B^Z_8=$CGthEEdI3O?58)?_Ui-IzS!wnG~xJ*n)kyM962k4rmEj2MrV6i@UjxX=7i@|8jKOCzZyuX|GVY0sa{&f-kb z(at@5@Zgh^e;%E8J-k@nds?r#|>`i0+5Pmj4zSn&Jx$)7X4SxdV=2t=Cuu=sZ^|0#3K^7!JzwT2TG2ky-Mc!TX; zsd=vd^}vnkUrkoX#7;JR^=@9Zq?7A3zjglm6?o3CZ9Q!->sPvcQNpFND%-zzCKT+k zc+z+2P4?G4CmGjeeY~Qi`Sf0T`?|KLhkl;BpkHZp&HD4a;4hk|4F9e=_e0}ZU*OB4 z-XE(Ymfq4ycGa2p+pcy}sC~yd-$vlO5VCH#j$WnXUgW zd27K3j!40!50kX+xGt~^*m^sC3Ws!n@#Q*xCeN>h+Ub_pqjQ&To~^UPk^j%%=aPy` z_7|BxQA@s195Ug4U-(;-tBG#jN~=<@?o-umf7__9c=JqG#M>&%b4TX&8?<)aUc`25 z?~~(kFE{A+_AR)nwf6JoTD|A5{(bM8tt$R=iK^n((6B3tj`wS3$9M%^lfJLK#Cx%T z?k&qH9hPP5zO6ZR#oh3&+0}T@bHC3A`{pM)zFQZ=d{t?`&c0~ zbBi*UzIgUttf1ahj@$5#Ob_$Q#SF1~Hy&I4{I0gZ%WE#XPEUTjtLSd`&GJd&zQx%a zT*7zHn^%3_j_p~vcm!kPa{jyPCS0hFXp(>S^VW>nD>rv3=C8_SnHSuUYx}3~<=2<0 zcH!-;8!o*N{HJC3KF!VF*YW9&m6o&AKCydeY*hH38U6UD~@ z^Yc&p@0;jMO}^W)8WJTFC>9Y}Dyb@MhCXa9;mmEcL=_8hofDfK@h z@$+3j`7YJ@2Kh0suP{GY`QxS9fxNAqPoHytb6cVFR(j@_J#Xe8PiHjXJTxKo%-#2}CL6|_P;bAh5VrAJv`}I2m;1|(Ju>nB>TjaE?8j!Y zfB9z%IbA=Be7_a_@YAg*=_#JAQM#8u{5lcxy?^n&hp}r-DqDm9{oYfSqhEY+&+Xqq zt_!rU`@H$bzq@X!L5ap;|K5n61ja zw@VU!Yc5FDSXw3M^u3JJC9%5X$hucYcfA(cdLYHJhtqMXLe{bH~SsStBZMIjk&Q$%lOJz~b)v{}v6=oN@_pHy#{eI(&{0TPae>ObdnWTvexIQ-@3+^iwBIM1lINQy zJg=VhMVNPWckYFblk&BFSzjD(9$C>g;dIP;QORpv@5UEjGVJ5-O9UV$+}Vo z9{)8zO3jCwsTOQ&nTwy07+qIvi8^-TVzO@A6z|6xd&o^irz$=)baMZ@#2+jq}9?Y2;$ zti5j^e}863;%c$7o*=uq6=oZ!bKbwJd{5)Mk2Ra__lci--HY*_LT1aS!^orjKAj2nq{cWU9z;X<2=(rEz#`>p1y0Zviftqyz}k8WPsDckd5nK)T(o9c33wZuk4&t<;2~7NcLIG?Vh>6T7Ucm55Dlb^!@A;tPxkulGU34OYF+*DA z?zB779ZTfJ)*Uy0bLdv}HaU_0xP;8}#d1f^HXF;lRdCcw`h99|i{&GqghTCYy3?a4 z-I;9@CU%zTx2oW+C)12u`z{AgE8TJ@JEK==cFX^C$&#!SW}mN4sH+SAsr2VR%k=L` zBJKO1K45NVJGM{%cmKsczD4-|sA4oAuz-p#abRlc+Liv3!uZ8pvw4gEX4=I0(>ynNyRckE{zuBw>b>~;N6eN}*OXVmldnLE<{-<9Oc_%B)6 z89C#5rDmAhPv_Gw{SRp~2N&tCt~P2cG_gC7IQPd{BBzE-R}FZ9!4@|^>Z-qji*}n}`6uFGoENuLiw4Uo!pVs8p7NUI*7ujYCU0umFYge;dPi<;@ zHq*hYN&9_nWE2`M-Dw&#@6V)ldv2}M`h7oLPRNx1odG}FvK3lK=S?)`;!bM{{r~!o z(Z-P7lU}8)I9j{sxxBIae21m#VuieoFCV_&HcNDW(1Oh6zjs8&{jLnPu~R5anKdJ4 z>aFy(_A55#?DciO^-A`Zh%_5Z*U8>1mOQ*iZK7ft_431RE;;b1H7q1Gv7N{96Hmex zS&`fvPv(ND4@%~;EKCbnd|-x{F1zvKY0}+E31^>wa%Z@(-EYG3BRf|tcbOdUWa=wK4(@{(b*);s3N``?svKx6jxdHrv##X-<}e>WxYFjQj3SY?V9hA^f)c z$LWf{(-{`*eY_~Y<#5swH>S2w)~iLLV%}2Bwk1 zotDOB)rZ#Ke5X4{=JrQUX~n7vAY)U65bLes-$bN%Q( zdg@;L-H3xpE0>zjSnj!jKjs#nji_z;sgp&@`8LXNsSC5RKIWwU4sr31;k>_;qHJ< zf>&3G_$;0HhrLt$n!&4cX0ie+Hvh^NJaTELf|vi+x@zZ3@1M@sxM$~Q6P}%I$Hv*e z=Y7GG*5?`$a0gncwqfSLl;;@865^?Opb$&oKJX zfBWf_UlMcgUeyUaHf@Jsis4l5jSkBgPI+8^Vpf~6pYh#7@AcPvH;SYNwpiPVNqJ57 zDcsCFPqlP~eB%@6qKiHsi|>g4SZH?g?wq)3O$@!?uctm}S@4fL>GOoGGxzp(tS)iq zzhS=Who;XniQr3$l2RfT!u4AZ$>>*2cAx(L@Y~c*{k$#aXLnsl?3=Oe=KG!r{LAVi zmzOjj`Q}r=GShU=<)|L<(;wp$te5>`23BFZ|HRJ&JdH$_vUPzFmsW=NK(I#yi)ETiKT0KPCZ=NbW?l9kun| zocOutV8pp zx#L^9PX~4Nv^}$X`1WdlGN+YG-Q0@zyJZi~k^I{kJ14IxJDnqC^6!g3zt-F>HNL;Y zQT(Nnbf1uuy|U#Q-ul-EZ6cB`o{(pZ|MlldZ!Eve--d#(IhzEoKiw|5>ZtvVUiRaB zOYY8231nFo6}SIki>X(^t^ij(!_S+n?m3r*OlZE%dyr|~gY!!Ib@CqZ-`DALctn1@ zGd(M##8W9^OOSns+=A|=AFpmK+PGO+h=b$cHA}utvpa-Z*r%UgbJXZ{iHqj?h;FHC z#osrtXr3h$SGD+JT-rOG4WY02mRn_(%O7htG+F0-y?)|5gHPh?*Wb-!dg}1HQ)k-w zxok`tjMHW*q~81fPUZLSd8_t#sNMK_f7j_Ff%X=a8$%aYGo9|UeAiafe!(TicHWGp z)aqkbnI=7~m9DeWx@sF$-}__f{P~s>cWr7(DZSXN z6#DmvyL_6W(smxp72o&GjGw;U(I<6ZeR%Q&^_iUS*F?^dbUyNMs%=S%S-DHX-pz@b zb9}kCINSGcSnzzYa(|ko_+Nt;)AGHJq<8M+K-gbuOJc*ZjS z=jLtG>lS(0nv`kCPdY5ZV6nBhzwevGboM#5KNFQNUfWsu%6M_8gnsAm`3H8g%KMsJ z&MvTQi4&c=>v@5}*9Re?g-8A31UItozg~8-W}79~t>S~4Gqx&ZhEG)ryZCA4%k623 zcb5t0Th-oQx4{0vo5^}gd+s|gsb^}pXb61Fr*pc`kJ(IQc0!p&(4Akq4=(s`F7cRbsX0l%<^v|-fl9cK@ z|HVY}11P)JW-C$PU?_MCUTXhz$egB#Du73p<< zi2Hd!Y;8f@(u4UsuXRs)JGG#Ej$oN=G1o0IvGwoUIhKXZ687`zp1w zHdoz`_3gE}_)*KxLMk#X@xxy|u5;@yme!o$x-c)_=Zkr`^VJ*wPbu;*74zI$d|>q% zP4*d!+qmv)zPQtTc#-VRB_6Y8=LnXys~X+Uk=lN=Zbe>^+pz-AScg^5rL;SZ6rBAx zyp=n7p!=|-iOj^%XLtMd0=?JEpbHa}*O5+1SF zCL;QoN1mOFbuEhr_wM-0iO)TSKeI;t-!;SO*Ns^_OO2kTy2;H-y!Yc?NMpLtYAzei zi}f|$(|5nvWqr4$Gxdt0s@UC`6YgyGU~|9nHTIFF7jJ&jl4twxg}Qv3(h{{-)zEE$ zkIB`$1`J$Is*&aVZ@;{5Wt?Hg#PXw{*!W3Q z&>Ej4{gy^TXg1FU&f+DS&h!vuCntkt7Am`1+o`hU7wH~SnhZ%N=Z86L(605n95rf z@lij^Vjbn59ep6b_*6j6xoqQ8&Q0kd^L{O3`N1a?`}Vg(@m#&t)83u5Hh9^)e12Vt zuwDN3hgMIjeiV&+~xP>(_rhsLkow$DQerZE!Q_ZDI0R{@7JgDJR?cW1Etr z1XpZ~jaA>$X)q%zt}jt)*D@mxR}S@inMps`x@3>LZ8{%dvM}mOa((NGr+h3djiK|x z7`ST_kLq5Q46{F{MeiLo8{JrhoIVa!TZL`Zt{J(Be#S*obWw$b0zm<3R zGSBtg=(1*U+XZu1j+G6MEjFBAps8J{5M6#DqHZk1Nh&YJ)>6Zdv% zdCe_7UOrn>PdWDc`lD+Xp1m7xZ1t9}GN7bvp>)E!qamuk?T>bbm<#P*uUhHMuNMAQ zbwVlMvn9rxzg?QsZ9CmXE(H)&se(A;KXJAJ%Up= z%X@w~XqKw{`EBf8$yv7oTiW{mYHdykGr3X}V#WWoPowCZf6b3WGRbQd#L5It79LHE z&U$e|xy~=LNxi$ZFt6{viS3#1)o*RK?CU;u_^xV>^z|JoUz-&D)=res>HAV?F-P)G z&iYjA<&~RyQmkz6EI#h$w*QpU1mm;+&GUOz=GkvvzskWi?7FLf|HG~9CN4FJi4S?) zpRMrSzR&91c3sKovLdqzGk#5ByS9RDZU>9^gC%LRUhWIt-`l<{pgi?Yc|k$9z@6&f zd%n%6Z4_+&?)K`~$HLMzx0|E8Yb~CeZg)67^+NFFlti|*-gcpvz6NNVSkb;g=)Y6> z{!6xh|3x%~$lXiIxVQ3lOzgS1Qm#E*6Eo^wXNhfQF65oUFgbF;-n}|5H$Ep`D0i8^ z>-v-Cw0@<6X){|`G4-Z{p0eBn1Mv)1Dof?a7ByN?wHFFN;e z&2{^#_p?t~xymoy?6C1ncFs|O@_VXnwszuo)dP+fzxh{bE4Q~wBTM0U(^YM!?`6|% zA1{qsx!}Xe8{YAXYjnGJzmt5iXX)v^ud_WvlUb_r>|a8W5$@$6rzR=8{i zN6>54>sy|j&yhdzjeXM3y_`2bdf)S7Q3`RfowvK1&BXi$Lln!N_})J!H(tBokR|pb z_D=u75Z8HAeNT6W+V*QTtx_!38 z_}|{k_Kxr@754U%Ygign6xIo^>e#in?f-$B|69+Vh+47mo6!8MlD75-5}$J}wzufA z@8S9J=KjI&2CF*`i;`6a%E1VTwx4dZ=SG*z_w(J`_)8x1VmyU*s zB)$5o*C3*@h$S>)+sEhW#(P(4G!&Pd=b2e{d;g`kUafZ%H4i*ii8{&d#d#q3^rtg@ z7CrTUdz*jF`YZeXN9R)WbzKv-E_wV^_wBsZ3d-!E>t*jKaQsxN%ndg5{x<7t=gv4L%y&HO^c#-tTG_1@HTHeFv#uQY zy7XG<`dT};j`i=;lsTnO%u&A{p0xI7c*M_dlhv=UWVmyBdb7d%TOnB)4p~|p|BC*^ z?l#d2xSAJ|v)Z%!VfclgFGZHj-*Kc}rg6>bc1!i1+GTITwu6*3BTp7X>un%JCuLn z_`m6L7qjs)gBjbV>9)R)*v7h&`|-}y7iTt~XxS}$^YY#r?H*Pg)BDzc;<>~N%Z&E5 zZxa0%?ck7O{kx0h-rm{4Nvkh8EiKgkrS{{&JPuc>{qJISE_8^RDK#Vdvc!9_zZ~x? zS{F~y3SDxP#URM!-;6yG4U4UJ%3am&I(Z@Z*`%*_4`dT>ni=ij;eIgvL+MR6rNa;Q z6_%XcBw3p_>y%5|Oo4g{*Y?uKiGTgd9~nOM&28tHyNJ_-Bb;lSXotpyA8Hk@ffxDT zFP~q~!l7lk(3Pd^590|jMS*s_1;cPr?li;&?McoI7tn0CY zcNX`Bqz09&?fdtqC`RF}@`Y(1+h?lqSnxH76)`XzU8uCue(t)0{$=3{)fSn^)rMT& z_`cE8b>ghK&HPWPMDy#V!;=i`lPnSYPk8& z^qbZkG2;L$!_3Lq{)gW1dE30Xr7~ClY{89P3%zCvbse9Uzh?c{^y7>lm6qLKe!*1m zY5a;WZ&yzW%?Oh!uR6rGIoHg7*)kWthFtMkx{hl_19GQtImoL0ZH-Dqwx3Rl$>$F@ z-n3lX7Q^o@oGsCjcYJc31S^}W+>MW0!eaZEuD%&|RjZ}S(0^{viRVj_+#hi0#Z2ci zKXR;BM6+$7`l(JC#f*I)j9cD%Yo%QJzd7v5Lg~64mN(WZmn}ZvzxUc@&wt!z<})-n z;)-7Q2xvuU&De58HZgy}%Tz``*$r-*Yi1z zK3LGTap{L8*@f-wMrEANnTw{U?b^@D$zAHF8CSN>UH{aZa~D*<_ip4h*4bLP-AbbE zeeT1Ag1aXtoY(s>@9c3&*_lytTQ4f_W#w7iek4n?$CL3DWZDS@~KH{+mhmb^1r`u_|1%iho((bNo=ml)}63U zg=15~E&e^vy(WybE^0J3{^y&zVC}@qAN?L4+a}$e9L9XOv?qJYm+J0B-{Y43QdjaC zKB#6#&%S$bFXvXJe^3AVvSyu+OH|u`MR)1(tH0M3Kgjx=t@LG4Y4+_s_L9=haW=C4 z&!*}ne{eriQtSHm-2 zYIxye`G-E&Nue`p-+u1hrCfjFj?`c0HMSxSAGmMZ+`K6Iad(zp%7^M^@$F~!x%}m1 zxpqdT@vB70fp5VdPRw|+_W34pjm<|zRn~N+{1NkBCV#kh-<{q&H|ln7-ZG-`5cN95Sw4Tv=x2aof*5!~>x~pcN?QrCsa`9D-gQqL6 zxA3zjn}2vtS^j*cGgr1c=WgKB>h}!if-X&{<`KFnS+cpeN%zs0>>Z2M zX7As>Mm*(d{=hEwMG%RfhRug<;OyDs6T`c=oZ&t11H z)5;F`_Qn35{AYjn`fYl%777&SY^i^3dTa7!6`Q8XOxCkb+}C?)H~rI#ifmO)twUyB z(dn`)l|{K93Vd0aRP*X-u-HqvP@#)ot-Kc8{T|&=5-_`9Ozxd*5uGL#vx>#SIyvWQa^C~(iayIcNSm!hiq=f4L_EPajjx~x?;oJZL%y%j)nW= z_s?4H^xkJ#OBZ!+q3Ow{P84J?`d(ewX_fXdYqk}F@mu30SkyWZvG z<3QWArR(o54u}n2rR4No@SMZv+y2Qn^SIjCHYA$A%XRx^Evug-w5%P-gId9v(JTzD;blK$-2{%Nuao8{_Orb_f$wJv?xf2GiD z+Tp!!A?_NO{|2Z;a$z z5%%VliiP=o@5NPomM?k&HwS%9w0gDkrM*qeaW}WP5^WFN$5MK8drUp058hkV$FCnY zQ*a~0w5HE8c1${=?~7~G*(JFT9arMhQeJq!@W`J3uI*7)6YI8ay3R5Cz)?>jjmr;D zTs`=J_x*a4H(UGi0%P-+2{0^)P!UQslQc8D_M;}`Rinc>qH0dZ&P29zx1R`q_jtoF zDZk54NMFBX{@mFeV%BA!rZ9Y2bN8e0T%QA+&x;Nm7v89GGM#nfr$uQtY%I@g*IpJc zJGJ!bmh~JrZSOf9tWFI~x}skCWd6)c&5KqUOcId&adXd}XP+0&jXUeaP^i1{q{dvA zy7LTDqFvkO9s1O_aMdjH2Q|I7losERJ#OiE=1fD%Tf3#XAK%q7FOj>Q8vDEVhWTnf zpT9?zRAxSrw9d7dXBpK}qFou zew+9sM$h1wxtKj`fs{ds#T=fjEvJrd4RPuYn{nj^lP0ggp!g564ooxW|#@Tz<) z@Ubrah^bc?f70=q3x`ikjapQrj-Iop9HKsS-Tyo=d|7qQ)UU5osvx}`iCmdPU z#~rA3R7E4l==;l~yQi(~JA3WYL#G8?TtB*QR0J9E-?n#iz1TJX&qMy=?$*?8aV>ML z=b3C}-??$>2N|}S+>}jMbg)Nf{ex7IhferV9%V#ZCkFMXpD}BW^ z=jK;BX^AU1sxnlicfIg?lb0>FxbuqE)Q3L~2PkWv;hsN%HK@U3(w79Y2P&H$i5IUh zcF(LxsN3pu<8-!FSvbeNm(LGdT-1BH!JJ8Ug&4b?jKkJzAND?0D7A5@TPtC5a?9+4 zTsNXZLxMMSteK|o^26@}kMr%$S34*Bhp%19IL9!{!a{vpj!khV z`D@yI+gs&JxyZ*AA$B%$B}vh*GuUp#|0vlW$2<4kM48B?Th?!gkFbCLJ8$igmI$+z zo8P@J*5vwrwNgQOOZ2NFP5Ln#uHSp-?0h&tRjI?qrs2%blRi^6eh~HDx9R%D2V2)4 z=lFVUPudp;&qbHH!+l$I1kd|VPT2Sjw0+O=<4+#Josu2?d=0zKB)7E0fB5XqET^~O z@^eN{7A2{IxBOG)i5e&*PkZY!Wx+Lz*Yo>s7&@LmDu3(YqpAO%zc*XtB;6koQXQJ~ zrDTWb+~6n8zjT>i)D|pT|1z5|Nu$??W!lB-t$}|`=LvmnJ@lxhP5AeL{|hD593M%j z3tzj>aB+ftWuoi#8uN!WY5DbM*|YXftCf6qGUiG5w+x>n+&nKTGJN-adlPz*0TUota*_rcawf?SWC|R*<;`X~UEzV!Lu#95l z(7JpE$YOmM$r$+bgVBh`M0_F#091Hv&H<2FX|Z{Up2E@ zdIPEvrmoqNZ>BB(YxQf=l>~v$W-&V#I{Eo8V6+T9VjaC8(|pCz;NTDKOoElqU%#u! zjB>9^;$kYiym6&Lmq6QBQi z*_#^UXO$uU!q#L&CaS;J{g5KDr9U=j&zjbV9exar=T9UjtJxZV(v>R6aA05%D`a30 zzT!AbCC6$1KMMy2j=Zc_5l5~%F!#jhD*SuLnj)=vY=?5vmb*u8zAJoZ(s6$F^anG4 zWhyRoJy=t3Jk9gy_xYL8FTSO0wOcxA_UTV29}E6w;CVFZ%5Eo>9F~s2v(HysNjJt; zt+;sOq`;GHiv>kpgxzx1ui5&iGJ^kfr}*;3mcmu4M;1QVz~#@9)bP2|ZeG#b=Pv{V zUkWnKi+JdlR{Haa&df7kBGY(QtXI*#WO_dOGfV8lOKI_Z3;j1%ue-g=!{+3%r@L3T zHUCIx3BMcu@U7&7Pr;Gl9YPtJ0rOS2@7DY0{eI~tA7=lBT1Hnh_Pu`VyX1za15=^q zL+`WSu4yd%;rw7*zh8l;iQ|n`)+bpy>_tl^+UajxdL~RH>U-0b*~em1yA0#GKe%zu zGP__JmAv<7=^m9Rp#-;k)1R%{5%K@T?oQXkM$a$pQC+q&cJrQGr{!uTr?Wj64L@J! zzNWl>7vKKYnT0dfCC<6olOSK99qGmMa$!^1+U8sNwuN7v0#2;nW_#5q#iQ$hLALWo z%j2HGg0rhnY*_qZ(aYHLUlU)r#k2RxZE~48G2xK#)u5zh$)cCnx$so;>}YN<>;K!% zctrN`_M?*h7tZUbUU57ABeCh9-ieK$`1^0>Ngi3c_38^g_S0(YU0Z7(MH?7)G%Pv( z<-=c@e)ZK6P93(39RAzt?yP#YW}^qAO@?~$g81Uw%a{K$T-5xwf5(*#u|3C_U#yDl z-*$T1!&95ASYr!PHt)Wr@jWw10G9>JApaQnR?_arJqPRVyc#xBI-=GXJv6XAXAZ`ZL8LOQSV za!w|8!*8F9mpN>-IpK5W{Fm)Jc%Sp|w?+u1&q}irSS-O?@^5wEme#6eQ}(TWS25k* zt+1!^U_x~G?YT8PDaE1_MEM+pE^mIIh3{)c;oD&h-m(wYlFdU7v3_t@zi1 zqasmR;b$hjy&SdW-^w-o8}F(}r*f}&o@wL0_gU;K#tAR(ay7@G0lh?~^wgq`aN~E?{!r(=sDxW`OS^hEsed0is`d z9;G!nDO6kjd~CV7d1LT@*9kREo*(l4Ts3?qg%nk+{BT>@`N~EmC6&h5hSHxGmMSjL znD*97aI!*b$hwm2O*__}TdSz@?M{bj>&oq)Urbx?#$$8u66?#Id13!HJ)EViwEp}5 zlx?rXw$AXs`EKI&3o8^OZQj~SpVF(kc;!y(%FFqOwr6oH>ibc*cfZLEC*6xtnXBrT zzud0<`pdWNnG2(eR;_80e#um`OnbJ}DZ%#2?40%s8_Sc}&fYrrQYuE^@iXCTFCKm0 z@?`y$r8+@VCh{EWthD*R@{iN9`IB8HhiV;IcF^_OdtvXBzj;%a8JWI&dgR;Du2)+# zR!8g1ox4)>#o^QMQrsJjPI+-jFY3?#dy-fDYs0kIyxaF`a{ZZHy%vOOOMOcSV`0>A z;d~(~r~9|(UQR<|tksX_YmQ$Fu0HxHGo#IX`r1FW?rtl#soaQ_F$zAn^b~vkK5MBL z>>_*D*WB?{bbd2)TOzMEf28Cg8{N6z7IpvrFA;yqooSnlziYln^0~K?hqnC^)~@l< zl^&BQr(y zI9n^*QXS6=2WE3UX?60P_WGCOjijWq%NPF~Qc&l9 zceAihDBAyWs@Ak0({4&+Hdp*wfA_1y;t;Q9+out;6OP=T^TI&RY469d6XhajoBEmwW3cWv#l8{(<|?q+0g!rbmWrq{Xm0ey#g!D0}!p z507GhPW$6EOvk@(cv-;nIE?&u`2-5V2{_{6B4;HUF%ZtuOy|<5mu{kK4&S{p+{>Yz*Nm z@jLR-zTR=t+E17Et$8tRO4mxYy_Rd3Y&hNSo-mmamo@K&oFmV%z{2!r-Tf2m_DUq( z|21v%WUrH(_R4&)K$Z5vk2He_HyIS2;=YUQ5Ew>**^sbS>4S zSgvugZJsOpDe$iLl10BNj32#!Y0>Vxc<$Os5}|*yzIs`(Y?>hZej;n(^e-oVZ)X&2 zc=4tmx1QpBMk|F4If;6%i--`GGXc9>GuM zCzX8pK8muU9tF+&4IZEb%(o|Un}jH ze*S~P{$l}?&out$k-fT0u3!FmY~9q!yTYH&Oy2rY-)D0E3(f9Awy0|xrq+lz-f-FV zGSYa#GoUVn1K8uk(82L%8mX0b3WS?MZ7MUW~q0prRJ3w&)#TxJEzvn^67t%8wG1{PJXLDzkG+f ztL2V_GxpySy>96~RQ@RcYeA}P-GqRAi##KilIg!>*P6M^Nwx`h1$@gXio-}dF>C~C~GWeu+q{Tfi)y_+7j=0^Hs6^LUtCqm(mW`+=EJV;v&|-5Co2j? z!@HwAmL1Tsy{(_Z!h6@eKG*h%xCotN`s6wPV)pd< znl(#HV@$=~ES~IKw3mhRm&Fd@0N<>t2@y{|y>cr|_W$7Rk@csid7p-I(Yb?sZnJLN zUp*22D5vB<-{fyBD;RITcg#NUc(TR4x(8;Sfv=ALSY|Z;(5)j|C$vvFJ6)(`4GUv% z+L@(NJ3n52+s{=1a{wyK@|JD*-Ou1xa%Q8j4o2io6?It#8SJ-4OV zj@%Sq(etHmk7IuG-tZ;ow!}5_S^xDptGQI+k``yr`lZ|_mwbwtDtEb5rfAa2*<0WD zMkv0Sa@}x|W#4PQ6=wvm9a(o#rzKZlf9yN?onOB-^xyk?JLJ@a4PR@G7&qAj{j;gO zzHIA^n=ae>a<&@n3DbYp(&{HCsdw^DmzPm=m61P7F8@aUE8pFER!y9eRzBv!vB&qc>Iy{|a<=h-|onE2W?q3Y(0f(;%`+w=Y&Z@Ry4%P#we+!t9V zo?&~O^xQ>|@mJcUqYS5B`~C=G$?5F%byLYUidN{*e_^owv5e)`as_^#^O1jyFMpV- z)^yEhw}+W$^8z1Re(wk6Nw(a)e8n^0_SP(((f6ctzBO0iWBz1YD)cWs1SG3SkbId*!5}hdhtBYjCc9 zB`A2keB$9pH6D$#yt&TG{$8yz;VsMT(k-G*BDLQ?F}0W7I(xdPKgC2Lj>$&z(z%yq z7ZY|DoX=g`AG|Qka@o&}v3B^PE#_B9~0iu=V<#ek3{E^0WD+r>kG@{}%GMcjnp(>-9pb z4sD3M`>}@qaoHow;5Fv#lQT9@WZOFaZe%#;13uYb7 zNaEGJZ^V^i#N5*HbMGo|maEs+Jh5=Q8=0%XfA4+mw#J+r4HGtI#Ql6N_Hd)F+~d^w zQ_>n$yvvu(N)TnLJLWz&_d(Fw#}Xp3_s-ex`!TILhZkf3SpcyV#Qajc)ER^T`J+b1e+ zpNq8UEHBRryo3-Wg2zQCeiywR_ZU~qVAnv7Z!iq&21eX z@i5_@N4Ia9zB$i6{zlgr+3MeA?mMQutTX%2y|YR0>eki^Qc+tU%LxiC(+JMIuN=Fk z(TA&!L-zfv4QJW)Cx7lXwX^GQE?v~j=Pn#N_1O%ad8;=)iHVVEuc-g{xxGk;cOR1* z=f8m>ODSj(MnOKZJlcRGmM^xyCMv=SI zk8e7;N9UZy#@&GF~@cL5hF z<}?I<;Mf{4-NsV8Sk9=E?c?nh?G>eZ!o~ZFC+yyLQ6qAP(8{Xn0;_6R zuioJ-T6~ysf@)!0l-6v)nimr5UOG2M83kPzy#D^|Otpj!Vy5#B`L^kW&fmJrFKv{>HM*{}+$nW}If$v~%OZje9gQR&u#cD1Wx% znNFpuwd1dS)ydalPPE_UlQrHf7kATK;>Ty{&@5Z0-+b}w7T@)nuzp|97R$R!q9v}o zm4wXSxJmW7*?iGg%k-|?dg-xp=9iX*zbAi=JSgwFaONYo&ewJ|oYQWs{`*kS#5uKk zz3HYZ*0n!(+@8IBX7rTpoC}-%-T(0H`yR}%ugqyK=D9w(eAkKGR@KKf^JUik7oYn% z{`;ZHEt_(#UOTjE25-QlmB+t#eB)eOYG3~T#g*9q-14?}TheaDP071uy*ueO&&!~B z`&WrCYUNd)_ky>;|Kq24%gGj{hn#lRY1$s^TTnAS>Dq_)+r>@^nqFARc`43uqay3! zWh~8;XZ!w8uS?F@YE!tJrGCmZm-+|)+SUa&P2Ayr=Z?i@%TH@m;^x0OVLC&WMLca9 z|KV%5LC4Fnt#F*@RMA?`z))0E>CV)kF2s;iAHHqITED$c;iuw{D@QoJp384(G~GPy zS4NKW7B!_(moV+0i{?n#?>Qe|u=Jawhm3!z{^`HR6dL(O&U{UJw`mf?<6|cTs=C4=(eYl&~=s?-A6B-iITctJx zKc00Y5lacWGINoBBL*1O+D?P2%O+LFy$4K|F_m@d6Rx4ie=Z$>V*?5-sdp{_D z2#{IxaMfd%)wOQ698H2N6nNj3uGzxSlqtBwV$xaLmA#dF%bqEh{_I|>KIc+hoAkfa zO740Kj4aCrMK=Zzx%Pg{b(=WeA9oa#^*hAJlf9wkF64UT`1kl z5WBqR$a<^U5A@a>tV&%_$h0}3#qd}36t$i1-Rqs+UVL${-umR6+Y2>0^`dCKyhi0a`-FQmYEC|xG<6QsP@5H)~ z>yG?fyk?`~A)YDaQ~4U!2K3aXf0nP9dQ2-=yE)ov&&>JNCBOEUJKr{uYK;EIRv)zA zYvRS+11dYL?s`Zv&p*vK%Tc_ud&-qPhG{>9Iu5p<{E?}9qS#IHq4Ooz_gdf0zpz0v-}W4qh9**08J4-2mTCqC;|;q%R2riGpvSLT`Am?Nba2(+cZ3GV&a~$IEX2*_V6BDr> z)6YwG=*YSVC)Izu(%bat8>iUv%PASL_r=6&)qNf@U);WJb1looZ5Im?KL%b}c=o9D zf^`il%O3cKueok>y8ZZH$Ai~ATtuG!Fn*ttdZJTdGoua9ih1b_w|!Ps$4&_URN*42FK4E^Lwy3D(jn%uVtzJTBL*o)xJa9@qC2c69puaGWJA60SG@(aZ)Fc!xY<*VjWwK()^eh8) z%WGYEMasWcKel6O3VN8jWBY{O+p)ZNyPhff2yd)paGMpf@9BZaQ~5O)9MfM2us-?L z(_}Z(KTO@naktXig@W(@?fkQJKI^m1b36E&(q_K-{8J(1$>fkve=O7Zi&%DLKl`fI z`d{H_gutPrH&%u&ILYy%eDhw1AG&3{>n4u<`;X{}A=$XZ|m@d4}9aYpO zrpIS4w=1!V<&=E88skpJLaQx}SFNKLTR-6Vaa(xhxx1mlY8Q`gEW6bBWc8(9)f1O% z3l_hOcz>bpPXAZ!hiOyhoYwyFYn$+2_qfjvudL7hdMew_BzA&HQ}^|<+zjVQ`9&EF zJH`H=$#0L-*M4%x+(@;WH9c(QyPR{sR`oDMR8406wle6Q(FT*?r@7M$%il_eb4R+> zzv}aR{atH!N`;^8&E9u?yVRAF|0mQIOE7)*oy_Z&ZltAcFDEyvujNzs%M0;$MY!8P zn-}l)-(=;%yEdeC((E&Ddo+F;>|=IOah`hf=seEuYwh+QA9N>Z?{E2WqE+K^^bMBB z!4LJmK5jqQ#h4`RGkw7io-Ob7l)w1jjQ#AScKLYFyRzLY7%WeEmz`FOG~em|X&S2y zlk}UnMVH)9rt}K5dT0DtT$ElaEE}#LqLk_RuX(|Z5A)VaPt`ECc-`A>%}`sdGA(7D z%4LSu?OdJWn^bc?KV{+kt@&EcnrBB&s)G28Q_E_0-g;8BNJpt>QG|5@XtIj^#msN* z3=HC}&YxG@czmfe%Js(bPg15DGJDpWF-Ea@l%{9=Ze(C!v1FW=SmIRAz%cE}3^}9D zE4ueq?_3Mv!x#?{a!+PFDHl`iX*S0Uwz8L?d<+;Kt z=G}YL_8e8XzU$Ou%T30ilSH-^fT-} z!#{?X&rGwrY&G3xEj2&j`nU7#<$@_4yBf;)b{{{gRd>nz;KM}zef}*?fqR}zd!5{V zZkf)E35`5@ro!*0O<(-ZJ!?+#ytzMB8d)}8D!BbAWwBKB!nAk=)ipM2q;swd)c@Si zbyU#iT+e;+S2Ou@C8w{c?Bbrgq`?07`NP6mW{NNGi;8Vg@89uMrnfU;jmKV(#d`cN zHXH8ZIsVOj?X;&`+&zCmnEM}kz;|_nDgXO-F)1eZ3aa0|TEe)s zuP*wa{gD|nfBlGTc|TomPG!uqD@k)NIfO^@D6Cjn*D12bYtre)uV2fW^rh`Y1Fqd{ z+ht(CU`qR+-G%{ML+Ctl60t&IoO|DElyG(j}3#YwC_K{J1&r#!JO*ska1LXBikgyt!07 zDd-Jv!Fl&PEP@Fy5AHE9Y!}^SJT+snRIq6m^U>)7M}FMt7k{_6d%-Tz-45GizcC8* z$rgRQ;x{dePk{BTlw5(K>Y|BG1t%(|7eD_v(K*)QP}6ha2h!WPN*guf)9)=jcImfl z+=FL5mtK@KF|M+-=vW=o%(Aur&K23C^L3RatUc7$+RC?>O3uH(%=CfaW!nkjid{Xz zA#rl=&CeA1PM-8eMOtR(7n|9pFXqUqZAnqT7jm?U^SI6z<^vOUtxXTrFnRNbC6871 ze^34P*URqL$X>E`46rJfU4KzLRK`p0_n83u{jnZ>Ix0P_3XN(%83YOp*k`HxfAtOQ z08ip8SKX^#Uz7cSLFkAIgJoZ|0JHn{{@@3juaxmIFfi0J&P&b$7aniFZTqF#TcS@$>WAx{LD?7(N|f@f3NkTkKoXdQne%!LHDBZM&aM9f4?1W;9hXyTW?6&OJ2TB zTO3!GAK-uX{nO5Syqh1DB+V36-~Y^Aa*_2%`su~?#C;9P_Z{3&6E;VnL zr?sE^FeQ5boL^twy*VtVkl&N45+EiPHgnqaqRNfw7HKDyQvRQLo+=R5Op_6SH<}~OpeQq@W{l2qiZ&a7+yleR!y>`ov zjLPdiQr~x&&tSZ?a_Y}(J?hu32F?o@R$M=a(xeDKVAqkKlVQEF_esmx=MqjM%K@yXLQdZ!hkRmE4Os;h2% zz1qjl>eE8j`60hd=5+^u+!85!_|4`c=brsJl_zsZY@hdwU81vhiA?UZ)w$(+_h*Wi z#+>+hhjRB#u)L5rZ+(yT{Ms$b5B6<8?NlQ-|H0Mo#!Gp8A2b|0wC38A71yeKgPjx) zi|#Q9vr1eUwO~V!s{PIr+tA#o@XR^6P1J}arEt?XSrLR=1RSKDQ%jn4Oi7CyE zA}QS`b84g4gv949E?E}JoH${MAcMiGKF^aK8%2KUv@AAysL0oL!kxo%lF9BX*SpSI z9}9g`u_vf()oimF{`UJ<-^xuD>2taL<3q8{Io95nzssMmIyqG+X;3Z%%BK+gQO~ZL_!JTYg?~j{N+n&z%Y`TlwFXUXtmVoLQ6dN9f$g!}BV?$E7@! z&+QO;?9a7f)o+hVtuwi4rG3&D=Op(m+-y1}Ppwi#bl!<4VzC!)IzKN?pI|yCwAnf` z!A0^w=|@*a-Ub)*Z3$Ve;>|!oL1x3@c|JULEG;8|1qypwEjT>HT^CRm;N9?|k!PU-jIcWw!J5 ze}@0rDO7wSEh2eo{HMoTz8D^LwBVeh1Azg0~yKUKWM zCmUWCuqkW}=Wf%RsYeZdM+kdxyI!s35Sex0QO>04Q)W(Qy54R0gz4DE?A^Dd*j?`_ zSx7$@e-+cZ?o!z2W#4wsmEx_;XFeU%|6VMfZGZD2r%2|R0ozUZ9vrrOW&b#O=|1Oa zlQlU$aeY}{yK?dlc;=5M zbC#W7#BgX{$=6w?EP;u2>dC@qx#O#KJ;WaiDXNrh30BeCVQns2rz`(l`O21k`m>(% zT4+k$xN&8M;Da-VHP;-ewqd%=vo!g1-ow@^2l4tB^S;#o)Xm=RwYX`eh<*2)f>#II z!_q$dDEWO!GkfE=`_fWY?CpZT|Lb@O)Q9~$=r}KR*Sz^Rof*&8^JSM*m`R_WyMOAU zlU0ZIw6P!El%s#?4tL{64aa12_Ag}(Z)YBGFFM5bRl1t@>Awq>wHxL)XkF6#^hR{< ztsN<$!KDo1o++xw8gc^Oxld18-_xC+zhL6uDbw#?U_GLf_|V|fiC4Tqu|^J6GT#ax zrr3ss%-DKwaqiJ)M_N*5@B6&qam=gp+Xdg3EcbjaS=PX1ShaQ0bNk7nHHXEI0FO#hKM+n`U^;a%%El=3G+O?G>xPn*F28d@02fiy5A*ZqNOt zD7xHAlI_e9kJ3ZiR;ly8Jeeb;kYI5#?8lv>CobC059qtQefH{;2~UGP3*v=y@9uIv z>!2nau++gpB`7vz(~+-_f}B5fh1#WU-lS;p#49v=cFb$0Bk!7?+5daxdreupZ*DX* z|Jv4XA^SKLDnr(k74N+$92>{f|C>`UziQ0|*J8(-a$UnusrBBAOlw^$YPWw?sECtp6!;96m8wCU?c(p6aL1FDsXr>_2j;xx(~_*)$8QWn2!Wsf-fEQ1?&FHzI1unjP^5?3lsacOj*2n=DidRkLy+niECwuhz@3=?0jW+tvjy7UBC5Cj2zujroM0^0Qhm`Y+!xo>N!Z zKkxY0DO2yfd}>s#ckR?&{j9$GwtxQp+wyrQpSRYs!a2uV-?piI6YmRInq$NuwAtQT2Q{LteGOAl^o~_gB^;)vKEWzp>otdL3uV658z> zezBCN;hX8%A7>iZ#4VKleJ`h}GHzXYoTjC4aoypbIp#ClV?TJRoXECV7Lw-Kk)bHJ z{@`C!-e2 zKHJt7{mCz@0aHk{laJ7Y^OTy6ZZq!((goBHuvO;u^7CyI5sPH zf9WCF73uP;?i`S|`Fk{QSH&q!b`fd!rq7?$^mB5*v~3f*n!Zn>ZP&?PXJqV?y&doW zKk~-)Mw;DRb{!?oGky9pOv;x|Zu8NX7Wl0FHZh(}X{qJczSaINv*ykgDb20DZT;53 zkNN6pscR*@mKR$-{qnCn6E|P$>*n8^Iu=jATb^t05mfe5-Cl4;w(Gww;Y#ldyHi6m zmAgxCe)BdI`K}&sdG4n3aiPSOr&H+ z4mWFVH&5NSd3u9(-$cjK^7!&Njiu6!otux|n6{29K)cNJWWtu1g!Z#9`UNMv-#sxu zEH_`|ivzFTg5!^;IT-8<3foZoCH(NsDep2rasJr2xN>^N&5Q9{4}Uu1Hsj*f7b?ZE zQ@jPa9&g?)Aa&&DjnuspeY5Q{Ev1i`KPN0oa5^fY6+F8%n^S87_qq>_Yu8*^ch_#Ey_WuzxN_gS zQ(&)qRsNy#W{>b)*Ay+JatVFOQXPJKycuD_Y+iIESm=S7`5qecg-QgZ96! zJJRQVz;aXj)#}y8#yuTLv;Q#Oye7_J%G`a0^&Z>wY1(F=Z+@D>81$Y$d!gu$BggH! zs*DS4WFmiRybs~Jv4!_fLrl9<-dDMl!wIdQ9QX0QmP5~+?vhE_{r`-^!Q6QX zoQG6xj?C9U zt{BCLwQ3s=rfl8g@8&%mo_QATp@RGz4O;4KP6?SDKJbGu&zy$y;;fk?5HsB zg=jN*#WSMqaqshw_3pUwsNziZR#9<2^BI2m3oCE=F+D0X*(aD@D;}l&_v6f?=0e6+ zk>`RxF3~!Aw|IL@iVCyG<*Mbgw(p3Z9Ve2bIL-8S`a9DpYl9Om=pE3tezA4h!7WQF zrrms=Rc$_H#h(`Sg!y07&lU2iB&*)fiJ2ELpZC>N$JfUiToUBeyWQrmk~p>8E`9lo z29{;DW}1%|8z`Ka^?C(6hsJ*uwOI$O4z5wCeiUQ!xWcr(puk#fN)T(dqYlfI0!Mzu zmqzU={GRiVPUrqFH1*Y;=}qrhN=l0@wjapVjh0)_Bomt#{cH1sBrQV^hOkw0q)L}1 z{RrN$;K$pT?VU4{;y*M!o8VP4`vlWM?S_eua(u)7hVR}zU;f@fQ{OvAe|NwBkTLZ@ zaOfeAe0|{+7a~J8&bem>VdPuy_Zh@ueCD| zdGLB|Yeg!voLzpbd|3UQTQ4S{vN3JV1J}sUl zYZV}K_|TLzxfN&c{GEMD&86}i#{<7+#eLz^7fue6V4Ljm-pVNY%&fycYy#cVt9QzA z98*~O^L@AZQ|+i_k@wk4w*JXd$#Xq&PrX$(%h$DUNl8%dhjsVZzW&;`H-2x?ZGG?9 z3d4Tp2W%GHlccrw?U9wepU|>lMxjrJ?OWq#H*8lQ3RvMNyOX~4j`gN{851 zhVp7%ARsCOodtu9F+`f7)aB+Dt0UcWu_U-CR& zzvEL0`-_!H6Lq51Vs|TTc{^hvckhXb#`_jBTux|AQh6uDl~mGNr0`z7P-8Mzkg>aF zqbJjLb*_hPohkyUk)o;&cj7ObhpO(qn0#-m#H<=ssmf<8m%CpUoe5gn!J;#>pu&E} z29pAlrLDDkb1s>ONzW2f;$WZE^msbcHvNWuM^#0uw?Cb}-?Lxwa(ZOJ2{Vobmsp+U z%i`PiRQ4$-2Cmq*>O>klYlrHylC4iFlxOYxHRI3DK?&tXXTw9u@L* zr*-BkX$Q~17t#T@c3z9!cti9?hkoho1utu72p_A{TQ(zaKYO8xht)=Ij~`cW^0h?0 zy(!`PzC!xPvDwb-3nv&qJHq!rWYZki54_)2?VO`@<(+ukj^cv>sz;qmxAAW;;@G_7 zX3?&*Gdwr%*0R2!{Pw`oPf5bDFSaY3*~M3%x<_DE+WBPdg*P;G0$jVjH~#B5v$KYgr6O#op1Q?9OqOf7KxwpZdRsivn%g9#{6k(rQcQAx+}BNm~X6-5C4?< z_K!*HztwA(B!2w$(pfK$d2`bAk_3TuZ*wXpG_8o-x_UluOU{CTRCBZQSKk<3wHD=H zmr(Uaj6U_mh|6n)9Yus)9+7VIAhpGur_)?t0Ro5Cao?Nn_ zSXSs(#3kXh&Ei>W`AS?9FNt{GaNII6MDL&Z?W-q+Im?SSO<@$!lvZb4Y&2=t>YhF} zmLsnoyFL9ovd}Hnu+|H>ZA~9`*oKk zquLV@$;IytM3~o{xwBxe_N`~dzH)4~j~HU_tI7)>vbuP9cl~tVhwYA;DF=H+g1qF+ zZBo9a9OYvwU8UD=Ud;TfQX$1{9nUg@K*tx(vW;CYyAmc&G>y98RpI-v;pPsB9W(o8 zo-y4p$0+!;NV&ibo;}UJ>nFVV>HTp21N}*ndu7;DR(IBa+L?Xo*)f&(dg-&bU)o&! z|H6@;T^CQTw|w>ITHnNtv-7vKlz(7JwVsytCaZAChSjWJUoPYL*Y^L`qxAnf4x2cO ziy0^EI^<>ObZ&l1b9!pwJCV3fCMVs;_a?Znx?NUWxZ?0?o<;@+*0+xH+FS*7wEr_O z6n(zcmlr0NHm#Di`@Cb*?ukd{c563QEligz&5T^} z-Q;TYJ+7%6EGmV%-+k6qJMOb`(SrBKswUJid|x%&nxQZI-n+Nl|3svw*#>f4b5H+b zTiEA&_dv+Dik+v+ZZS80Ub=Yp^{=0mO+wGSf8_jnitYB)z>o71gY6aMV7vJ*c-GaOQS8eAvU3O^xQN}qjz~{1C%egJO3tyZ`{k{9O%`{c_?XoVPs@_a{ z+VSaAk=OR-kB3#$T~=64iuLhQTk9U+a`JJ@n-|JfFWyB=xK+C^SoPQp{`b`fex1MD zCv`XD`j*P1>Zdu!<$E1Ws^0hi&p2Sazascxn(GqH6OU$diG1T*9$C{Vy?2&Ex2weA zIi|~Gh||&w;})Cm%Uw`QAV9!UX-i^#?{{`OhN+J4{7MmFxq-4 zGWw?c)(_`08ZDQ8vRfP)vQw0O0VB(%J05RX&IT$np1rhVda}gIxgS1S%v^s>!=R&T z- z*7pTI^L;(q>$GlVdQJ0g4~D}I-s*?!O*yBZdM&zRQ`|eQo04gsDVbp}56aK^+jy|& zwRz5`-a|57zn+9S%shAEA(wc>lQX9I49Yu}@8heH>x$D@S~ORmktuz`Ou@GSLIG0# zch1!uIZ(RS@q=n&ue-zwyNg+^OQlktxN)29k4m2>$g%QV|KAB4lj=JX)9)$FcBp8- zo0;s|-*Tp`YO4KKE8_#t8cPcQxuma~aZl%y+ST<1s+WD0KOYOaB(O}(I8nCe{hy3u z#~V^q6n&?!?t1LGgYRh2o#z|&EV(rQ%!J9|o0z=!G8&#j&9we_Gb!~F*h>$Xgks*shEi4D5G*JI1} z)PnzypVsqF^R3&b{o~u8xrz7k^Udqo*4)1zDS1;yQb2#BcxaRKIrNdz>O-$w=@wG-<$2rR;?5}@j7#{gBUjCx--8A<1t4`{r8_rlOAC&KL_-5t1{yhFA zzN&uvCmAxDR3Bj~XJ?+co4>8+sKjh5@7S8nNBDeid88;iTvBZLC3GuTUfy8Ui7nI4 zZBQuB$xZKCcSBlYOSw%#=%tzq?t=8}r_=PBLZR zIllMDRfPHl4{nh<@~z@e$ifCjhyAMz5@$7^Vyn4x-sk7<)c&`u1#)+PaO!sR=2Buex^Oizpk!RF;gjHpF^`0x8 zIeB8jBqbZZ#XJS8{HNTx^};_Q>DQ!9c}qJFbMieD*j>=qz$dk}C1|Vd1_tTpH) zee(6Z_J5Jzsq20&`{xLK*ic(>bhXbS>%@e3OXL4)4Iqcq|2@j`?}6CChb?M?_BtU! z2hB`p23z$Re|W&4t`(XYqi!00O zX3b$gFu`>DueZ0JzY^oMjFkmlBy36D4WT(=fdFg&dH+os*Kxx0i>W52YTNqJ=Qlfdv} zKYEs*O+EiZwl_C&M{iyQ+Dm^`UBj3(k%k_W*`68c22E6`!u)G;w9e4t&`23USAoK zZQyLp5jyLKY{c7AxhBt>9a~-A@~!wCvg7!(pIX|>#SPn5zxTYt7cH=+-FIe{SBuJ* zRks(3d}H{QZ@pK{ znIZdWkJrofUEF@IbF`L}hb=q&P0a0#;gTsAzpFkx_^QlL=gb!2-oV3#Oa;t}$qPka zG)ywET4C#Zn$bLu+u{D!z2}^5yw5GtUR_wjkg3yoVovi%)*rJTuUIL3Xx7W-l#}(Y zckM2|ezmVPYW`Xu)xE+g^HdKoFj$>#U|`zCz}B{))*PdO`E$k5A_cm@uAtDRMmWXxRHjGcz6SKX8V>l5BGR zon0Pt=WQk%2X|XD7mq+oqQP8`@7q(RZWU!oiE>h#s_^S16T9-xQ>hiDTk`{+U0kwZ zp_jQ~(6r8SPOL^P^ad*Op9)$O#6LE^oaf4g+J7t-+Z2_ zb@op0`2~$Dcqd1xk`+vFo?l!u+I9Kz571PrXNAE27as2Yz zI^G;ToAh?E5Hr@)UrThaYu(uIuXyp{ z%ILxXe@?IBu8$0zk<5Sg_^hdDD_LF993meRClz#v`@*%o3W5I9i{>-#c^5b#?+Rz) zesUn)p!2Dl+CackjmS>R{dhRKRxo@^@E8Q_CyX{k6-7P=sl3J~b zJ{!He4xf{v)tF=J)P(1^SyjKBwX@4}PRtrn*Xzzg>x0vILSJ9*obaj9p+WG%%MD+D z-{**)>SSZ~GWeXsU!zv1&0GHzoeliF^dswbmdiW*Q+O7y2%L92h5h0I_u4akw@-Z$ zU42|w;nPMZt=t!r`pR7QIOSwFY_*fWd*5sJg($P8|G^%IHqL03&aU?0o044m>`07% z!KRhvochfztDG~+Be>stZ#?}rxbw_|r;%?q{#4r-si{4oqV2=PmD9Oz{L2jDmg)1m zpmTTWjW@@){JmqkU}=5&lMbce%eR)4tXh(E?RZVs_3u~R*Iy{j@A#m_rWO%$x{Q;@mj00V=_LC0BZJXbj8%=F<1{}0+V zFXQ07hl#(xIdA8d$EB@B7bMR{qKIX3_4W%%k%c)b@E$0KXZjFIT6{M{!Q=&+qS!>@8&r_ zj(?JJAR*jMk@wTIWHy1wB??>Bm#Ete)Z0|4CU$SneY;%Tbe@#%&$(X$SM%oz5QepCmB%&k4Sy+_{e~^O!nwwQqiJ zzkBAdd(~@&R#?J=ee^^oSnLO{*79_y>=D4YcAZ0k_uio+v4r>nLFZ6%AEW9 z%5Hhut+P)vHnSb&j}yG*c}n-&sd>g*xz%gWu9eHG@D)DxKWJTrdU-%Xz(U{m?pHXh zCTc$|dgQUT&$-+C!ul15MT_Sf2>x}NuP}Me-jqX0(cg}}Jm&Iu-3x~=`2Tsh<@85Y`Sw(~+kRYsMSWQ;{$EL$Rv)D1XPqEwaRJ1;R z))lL^^Ig{ubFKL9pg;ee=^jJY%o#Tu2j!Y1rp#PeeR#@t({-n>=N!B|+4R_Kn-e>he5;tEP{?`d z_3Zk2?lbPbJ>+fLx%Z-D+{wNpRp&QnK45WU{?7lh`Kv%elw$kT{*^y=-Kk+K5Ll{M zdDP>k=Zh|*qff5u{F%A#-)~nR?PA3=4$189=%A*_e?>XD{aAZA{g^ev7Z^QUW%5Wm z`%w6vb1wfvjkENZ*4OVg^=wErP4-}5K46lQ|0yBt-jbCk7G&2s&-xf)B2c0_WA^Df z&vQq_Zbb@z{$?xOm?_I4GvkTleEr9Y{dbSf2~-lO?DecRP!3HH4A9_Te)qy;ciGl< z7YA_>`w4ZI*cj6;tz)`zTEghx5%YS9{pwMH)l206J<#~>(YCVcR_m5Jfth=2J8fQy zIi$Y*Q*$t-ICAmfO&0`r<*$QeLm)i_;fe|9HqH?O1A^`lQIZt&Df#ycsXW zlX&v}2fmxQH^3=kJ9Ecuud??~t~iv>^<21r#Sx3GSM`JE_%MEQ_+s+>=`a1*>fm__ zFCykxYE9Qy>f67ino`vT%J^0B-2$~Ov4 z`l+p^W`|MI=75KCCe z@jdQrx_dT!5H|BcJH>-2* zpL=rG`bhdzJ6jpgn9RuynmQ+)Cv>x{VBELP)o@DBsT2R>O3klco>L?G|FvM((QBWJ zF6XXYTc5YyR9MeO#@A_bPTll_N-dqdCcn>YOFD75aj&)6L(AKKiYxTN9D7x)F z@jXrb?Om?*fA&Z3yZUp=S()Gt&3hOA+LsDV6Fl3-$PxHCBx6y{k1KKy=l<~esjEB3 zZt9PI9@$eZPvtMZVLKM|=SkwC{+?yGd>=(?B&3$ktqc6HpJ{`Ze$u13D@jqBbN@z` z?=U%0kr%LN;}bKVfJH~MId5ul_y74FIk*4nHo-g5ikmJv$?o2HXzi4pie5_ZxxW@! zHx{cTm8Q+j_L$83sy?GSA>oNjf3ninBYR@rtnH4!U{Sb?+iFeEUGeXS>W-{l|K?X{ zj)&CriMoAx^ZHgDdAw75U0t7}bew#jpHJw=>Pr`+=jt5~yIbCJ-M635KPmCvL{~3p@53^?hrKuMUClW?+cIPsOD6ZC z!r;E+;_Es;d6}$|Joc<}RqmnpWx4^$XVb)M6)nH6D?cYNq3O{Dy?f50?dPva@|{;J z-M&{tIHF4BjOFE%yO@(NZ#b|rnD4)LrrP37hL;D_5RnFO;AD^UvPI03%hl*H83q zCayQ%X8k^M>nt|rRKbZd*{-Exi7%yTepW#?kRI<2lb3navd| zi|*N;S?8jgP}n%bUw`uF1JXY&l6JlcGpw4RvG4q{`t^;h`1-U-U-}&03_lx#_X|>I*QG5#Dfxd@>u3MFUlwk(*umUnsku(3 z%jML*6Mf3{uZ?cXpT7V9w6n_$#Vek(|19&p{xiXBUB((Mxoa;nb_Fi%sk=12qf~$D z^k1C!H}%*bQDN@=^4?*^yhQoS=cjTRo;%Y)T z)&t+R?u*YqH{qkqM8-u89#^`5?2G?@y7xWLrJFr$s~$VuS#BxCyMB^!zNF9keb<&~ z{!G87^YbF3`R%mxpOeIRWh7oMl9?y-Ia6zMcff?VnJ14=KF?vxK7aaO_P(M!l@;eN z2cCNUyGwV|k)8PqWJH=d_+2=k&x@X&kR*2`}xe`Rs)%^6;W8`rc?Eml*M|HuDwzt=~{|C$0N z^LWIzmSnpe%n&Zs_qAFW#;c>Me)aT!Nk_NZeUp-=t-t(pW!1^|-(-08ZA4-?{R<6OArj`}KN`{gNEp@blGr-zIT+f9N+o{cYA3_q`R4kN4WDe)_${ zJXE=ThIszF$+Pk|OWAL6nZ;`Lxsb0x-*6PuLct zD~BgcKOMY7MNQ~%_~Wc|2ZI|g?{BFsHTJq%Al94^v0&wMBfrWUk1PE(mssvm`k3y~ zueHP+zTd|YoGxB`o%hz1NvRy~qN4h;Dt9hFKc^;Xg5=E} zo&_r>7CsPCPubOwpEPF)%crRO0u~2(tobw(-@ceTRr>2~!F4N&lO7zq-!O;sBg=x` z54`eUijN;)E{Xm6cUylH-|CWWDt%w(f86yxQ-sy}(;s%Zu*j2o3g;>;CEl0`WNlEe zE{a-PS^3hBFDUZj-3PaeG&Uuks`YP)->jp%w5qLc|Ank*=`X$VcfY$79BuD8QBuNa z`m)wt``Jm;`l|x0tyfNl`d?$J<}nJcJjp6J)$YzkL;ige3Nxm%DW_jMqt5@<>PvXz zoQRX#;%;)pYfib>{!nM-3&rWGv%J_0_XJ)QSS#K#?``JUul)P>JW#rOCs)JofQfO^ zzW2g1jcb2uET3*aufS=iWNZKD1p?LOzc`9zug&|$uvcpTGu7&tRa?W4hefl^H|ziM zG(aMx!Z*KA@sF!d&r^2d~yIGZ9-_N=q&e5Nx_8UfRXX>}_aWvHxHLp~-6}IN7N8e*f7t>`{1;*;^ zujBU~dF*g7Oi8e?xnP-@?baRVk6kUm(4WrfsBRrlUeeve;&OKN?ICDf`;FjN8W6**)jdQ-5~Z zbcerbSL3%|-mNjC=WhQLo-&rKgU)`Hu_=dkdnOq$rd!BHum?X>IkQgfy_&~~Ll*pI ztQ!kXe&DW+?@x7lUa_a%`!IhU$NJJ~)!P^Ulgmw+KH*#N_TPV1Cw)A@E8CxRTw+aJ zvD8P;lWm*%nrxdBVmXd!2>2YDKf&Sl6II7Uhkt9n&Z~XeR4qH(s`i=7Js+2^;=Ttp z@|UMEL>e%0*iT+{|3TDwztz9rpAEJ32@f&lnz)9&BBp@zq_4@^y}j2wm*=Z~%F&y5 z{x8yDT~#zm{rCTD@ea$z4XF#nRZp+Ixgclt+Wkwn%g>ti?B>+(jDig{<@xXS?$+z{ zv9Xr^UYmUEim$@so(&srcmBMUWb;iR(5*4^s|nw$Z_DzhY}E2QL>yA8ogMp?IPxz;RbZdA3i_t)gAg6Q|^DiCxL}^!@s4e*5-5I@G$_ zaL@jOJB}~nICR~_an-4XXSU^g&#>oP8NqwT*)6H*?4FO&0qxd@jlwme%2MoSTjkzo z-L^Z_M1A$w*vw~<#>aVbgHkP?yvsJ4@blQWqwnv(oT1^%&>88vwCUi_3+q;1%}~{5 za@BcbyxvUg-WLBE+h1`ge>?V!LG<0aFNMw*-ag!< zwRo2N|5Ht&YnIr}OtM)i^6yWlP{hNq^;bgA&e9f@s8Zqnvi9XaQ#%v&wCA2xI)SHI zx>iIi{qMA5y|#7a^RO#gUs!|9FX#oBGzKd~7~b5z=i9+|XX2+Y@NVi$UNMJt$=>8! z+g86QRpBmt+MuU@;k}UEnv5^MPsmg(I~f|4D3G+a!&*bz`}-%u?0 zG=a}w&P#-e@UL6fGO=Fct%Ub4AFT_Q6D35vIhKA8E}UK6x?8fgcU$wOQ`7ECv~X=b zD$jg|_xUC1i_iMkJgl{^;SUQD3O~a4zxcd(cel(D69bJOydQHV&#vR?k#D|b^J}8c zq8u*IFw+}T&FlTA>B}})?_TqZSt}rP%7=q<-*mbE`<3}w%5Q1^Zj;THA1eQ!k({79 znb%2?Eoyar#1%hjiI(Y-r*+#Rsvn45`LO%@rOP^d#G_jx9|;Lg&Jo(ty!DvMBEL_( z`#7Ww-<%e@7HE{wl(hWDkH3Zv|Lfm28+@(gDElz+|3Y_T)7#1MkNu@)uCQ=qICh*f zLN$rsW3Sls%|csM9iHkH7OoMgJv&cAD0oTUX;TH4>c)Vxi(?-d{rg_zs}j6HoqtF7 z?@7(?eJrj$H}adtP``fWg3W>AmX-~d6dDKL;o8;EcgFi z%d$6niL>_kh0*T!LT+&^y3Ub(pgz&;#vv7kIM!?3!or{4{eE_xz4ZNjVVCYbMz_R& zBpyE&5@K&tUS=?V)%HGCu_d=%7fNXTJ>YiO*~+A2z2O7?`asu}R_<+=kKO5Uy_7jw z+f`(Z*W&{!{Zc2_)Nj1=IAOx`W`^qMmqs5sf7GlHzT*8;FR>`6X6tjN(}JAmE03)? z(BN}H+F5Ge{~JGYx6i1L|9tn~WyZEEKU94SYn#^A*+%O(Gp0A3J+P2LetG)h7u71K zwuV1+zwmGN3D&6xHH>*S&F7D6dt@*A!r&YJ z_rey#i3dZI|JioMl^xwWdCLiw<(pLJr-ki&SP*7-+kJiL!5#N^rTnVjtKIW@!`Zh- z-Q|i~ugVEX_{aHj&9li_U6|ujeR@^1zeT0G%<%)MODv7^6H<0?*{A%j4q1^ubq2HZ z@$=t;-~Ozfdpw_gzENb(7pYqZPTz<&2r;k7^|VC}iTY1Vh4=xiG8v~wm_u{Hv>v{*@lsi4kH8!D8V?msCSbp5%g?UDcIZXAf@BQHsJ-Ea(=&-fSFcSrmQeWqVZ{x_jZsrO`oB*Nbz80T zNlLci)Q-QeKJFF$cvR!HOTa?I_1BJOPrc6P_B-mcl+Rrei|720)p!5f^y{aalk?vR zC#Ot2S0_ECM6B=G&eQq2tXBI>U;*u@=rJ6YxH@$i`jyL~TKKdw7CH$u(K z%l>uJQJtE<4d0fX6a4&9_EqSW`E0W9>~0iv89k`4n10N4wUza&$D4jX72l$6_e-hc z{LXt$OTRwd`{apapZX@Y8S?MMZpvnVv1UxH+NBrE8tC!-6nn>9?&9aGV{}e@+-F*P zsrMes%f!d>yMLa|ifZxrlDfU1z=>N#{lM9&qH&j3Ijw%iY%TojnoLRVnSxm#gHMN? zZ~V9Qh{y&>KJ`P_B?4xjkzl)S$nMr$zVYZ9v8g+Jbnh8FERuWwL7-P!Ge*|x!OAdc zhUu;Bvsb0Px_S57`c>1EJw>@!co|F=bd+tm?ZZ8S>U&?E2xUc8t)%|_3T+gm>%LTPH zFPP6&^TdX)%~)N`@VxByt@jg`8S3X$EmKmuy7Pn7@A_W{<^@rHd}z`t0ygdSQh`-N$4RrYN=#iMNit z(d(;x;~l`Ztz4%j>PF|zOZ{%wL$YoqXeDoR7k-fVl;!TdA?vmz3gHeE7p(89cA1SZ&G5!`3eyS8eIs_uKlSm(-@E3oa=2N?fhd zUMf5F$o%Ldmv&4#JfUQt06RziBC%%=w*UK*Wi`Lc+pFULpF5sR;)<`F^V469R&#@^f6iPqBS{HRt`uyUv=PETBx5u4- z&!$xo8!@H$mw4e_?+i--X?)Fok6dYm3(F|Taw4XAjx#> z0E3VKL-uTI%>(iV3=Ax?jPqWDW{Md!ypp zXjTd~&Fx8M+O(gu)O7jA^)KAz98dM@yLH`ResQCD_DSO@Z|xdqv>E7#oXI+QY^vy_ zYqLJ7x~i~L9yE}Bt#fRztAgd_xfQM9#WmAzdDO6f_cc}3=%}$ey~k28fH_x}KkJ@T z^xt**2DR5NTE+5ialJM3%Dgk##Xt3H-2;A{+GLb^`kcjG=W9pJtG;cSe?cjIb;*g> zAKPo35`_LOWBtD_!+^)i{tJUj!9-U3>t_@smq!X+x1AzuwbSRqy1ASzX1wgbrfzv{ z+i_DoZN`DS>+RM5xt65Nk$AUd)oQ2x9JMu#lV;pr zGgbG-tw^S)3W8@pX&>f@xa-E&-<}-hE_K!3Uqx7vx3s=zj@|zHL+|I$JYgs`lix=m za)Iym4)XzaH~cZ;~LGi`BvnzMbD(2PPw-H)Or z5hrZVtoh9Qpmm8a-%p|GNQvy*v-zx~3GQD8) zCz%MDFDn+8Fn?<~v9Z*GU1Z`3aW9U3-qfnRXindkY3javrs;U_rk-o_P5*d#<(+MI z_cAX2l3J)XtM5U3sIKmxOs5>vUrTTOd+e5Q^6$|e56f39|Mbhx&tIT$!Ek@&KfCh0 zB?1PV?@Z;Gm^Y}tvYvci%bBTPP$%|%;zR|p^=u}7?Uz3HF!=mVO#1t0m7lJz=~JsI zx}D5R<8LMy9Eo^sd0f*m+{k=K=J5!V>DBx6INmQk#VRu4+o9wL7wb3sh2~p!{z#0z z>v${bvqRW=h9RCNo}-YnlD^ zMSEE$`LBIyE&RJdLwNzi!uRU#3+2MEpLiN9wxaO8(ru{!$F;|=0DwhtV#Lr-b^8%i*t^x-Y`}CX5ojg4_Awxd^O|dwwqts zbA^pRHf&2T;oS7|=kzlh1E()Iv2Xp-W5u?ojP6hLNd1?gaOBQ*nMGnh?U>Z%Mc#hO zd}FiJFTSvBX*H=2cVM~F3m|E7VHS$+K9DSiy^VjkD z--}_%n@!yXmx}(eNH|>eVBW(Ivl48XWt`31J+3S@kLJI1qvrLJE1JCJo#EFr8hzj2 zl-LmX^o6F?4}~&Cr<==k9QXfzzkthYi>}%8+xig>!talFvH)rU%FzS-dxshadzd3G}Spzf5xXB z{<(-3JzsgKbBn2b%Y*9$!m)>i7Vk0GkrEvKU;eAC z;_s+=QBfZ%^^Q#nD+%9mwb-BW@mJ>~2clQFcJY}1OIq@0RSb9DQoq8ZSu&xA|F4nZ z)#ukaCw?m^EL>sRA5)3_k-1O5Pda2I_Cq6|?|5o&?T(AvZ_mzraBX$_{S`0nZ(*vx zS<##vd{nix#InOd_08kJS1hK2Pq{-&b5gst?Dr%J1jHA27%k2TEPdaX;`feozr#bB z>j|~rt1ZPIUlv)^ceYT);Z*)Fuf#V$r`@^OJlmvw!?l3dWtmaZYf6{TP#0aFC&HEN~rhZ`yn`m7Xfdg;AD_sDDWTT3;U2S+NVhqQZtNG!UHaKsAtf!+y*B-e#5;u)!+NdVDHTU<*l?Zj-NC4NcGma8EsaXM z+OAckR9m{|Z{G5B)0DLQ$JdLC`mDK*WtFI`GSU}v+9)HOklkH6|K>K1W3q}Y6*rUX z81^Ph#26TRcdGqc^-d&NJM;1DvLLQK^=<~+{;!?6;Kd#X`PEa}do2#mJ3nV4=ZuEB zKEb(}u^2aleyNo!$!mdN2zGcj!P^+$h1+A@W6Iwnjk?f%`d z)=Me$0OzUReWiy5r|qyipL2@;X?{V^n@>A#roPx()Zx0+VSVcTs)v&n#U3`;_At#i zsM~hSgr;qi5C7Z#edmI5!K3w4o~&!%{Eg|n#w+_8-)i=@)g>D)r*!W$5e=FW>-Bi$ zy~m!Ot0m2Z4MbdH&UgDQIB;^U?46jT1y zQ#s@=uB0F-F51R^Gc@s-+?8)OLZ1^n`NS)AWqd>*tO=D{^@Ahh_>Y1KTNT((e1Cb! z;DHx0d9P2~+EmGG;I#GJu9T1UWzViiSFF$IcjnhM z-pSjxZKG6hf?)IRkgs^jOh)EcFTJU58H4~(R5mLa6&VG-HRYConVG(a~`i3 z?0hd^6W{w}Lg&RO@$U!UYDW~D= zY+a?e&)cVEG45Ervp&&@dD;CR-E!Lf(J8^7_*(PL`30UZ_2hYFGX1^w@6Vd44C@ZY z*q94BtA3STZ(23^UBM>bs8^CVn===d?VM%(du3Cd{JHFNnw&nz-RJ)84qA5i#J2CN z-q`&5cVoxoR;{VWgTIvR*xTyxQgz*=Jr{Qx^n7lJNq(6Bg}=$|z>IH|SC-FPv?5Py zp0Gbl`WNkcU0FtNX3L34_8eN(7Uuuq?VSG4e>QD#a|!=^?$?a`+pbsbVr*8hoImEQ z$>^8-{Ox(E6C7%em)LhLHNPppC(r%mLnZmW_vcy7m~&R{i0cNU2V!bxEKkn)@Zw?I zj+5H|mt48xt@*k2uFJJ&&-ZPv6DtNikoB0;o>U~xfd#fhL|Ls3~^y3m0QAM^TA%+Fk#|>{K zXZ#RcmzZ(PxN<_g@y~|UU%R5T!p6}wDM86I{)Jjs8}_F?@%R%%7VGllK^XUrC%6qB}k|Gbx1C#889&VThG z%AspP~PAxvSjwgVlQ7qbUB3Q+BEu7<2G7 zu{IgV*Ujv^8F;0LC+bCz${U$TvGV-T9~;6aYlkc-7VG%CiZ}7XXEyIN$>!EYYxDnn z*z{P1lljKKu(j)d{#kD>zU9981pmA}TZB0tFzr#5`1SjZ#oNf(6R*$9u5uKAm-0e7 z`-kPHdquC88s79+Pzd_X@_W<^D-NB@{kNUho5v|fgTYkV^_H>kBl{=ozTDFe zP0cU!T97MnV{_Ye`>uf7Z(m7GUMIipPNCgn-QRkF9W`1qv)eC)ioIVrX}PqCujqvj zH#md@{=Uuf5Ggsg-7a3e&_|vt$lj3mP5CZo)Aro75#9wm zUv=*I|NOO7x>k|w=Lp6_H7!rR*A!fwbka2`LA?GtW+LU9oxF7quH_?bg5N{oZ`*Q;mb@RE@qj|Mqe%mV7M|zpPha>*?x{4WIwF zIqQ8mbu&y}y6fC~&F~=YSVzMt)yK;jB)*+K(qz6zw%$EpWtpx>Qi;{nI)x8uohyDy z{t1?F*At4G`sG;go0f0M%Va0+Tz}t`YnPZ+EX&p?3BL}Pjzd$XPo43{t>n7jgre%A z2c}th9Y29sW9}qNwIcNO>)h0E@yPv}q z^&;Ju^QzRx)1e>UiV$RqtV|M<509288f{Jd^u?h|&6r9SsL6HiD?TI}Vq z>R`C&>Dr{JI~?;RY%fneS75>MuTl8SDU}4H+s!(S50%+p?%J81qiV|aK~z95!qU z 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

8YGxxb?Ic{K3UFWdo?v2*E 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%0A3yR(7m=EcV!N$-SVrVws5?^)}|hCln+? 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 { } }); +test("local maps survive powerup timers and replenish collected pistols", () => { + const { fight, pads, tick, signals } = createFight(false, false, "web"); + for (const pad of pads) pad.localController = true; + tick(); + for (const name of ["HALFPIPE", "BOWL", "HIGH GROUND"]) { + assert.equal(fight.mapState().name, name); + tick(3100000); + for (let i = 0; i < 260; i++) tick(40000); + assert.ok(fight.roundState().roundElapsedUs >= 10000000); + const pistol = fight.gunPickups.find(p => p.cycle); + assert.ok(pistol, "built-in maps retain the replenishing pistol"); + pistol.active = false; + const before = signals.filter(s => s[0] === "powerup").length; + for (let i = 0; i < 250; i++) tick(40000); + assert.ok(fight.roundState().roundElapsedUs >= 20000000); + assert.equal(pistol.active, true); + assert.equal(signals.filter(s => s[0] === "powerup").length, before + 1); + for (let i = 0; i < 600 && fight.mapState().name === name; i++) tick(40000); + assert.notEqual(fight.mapState().name, name, "the completed round advances maps"); + } + fight.startFightAgainst("dummy"); + assert.ok(fight.gunPickups.some(p => p.cycle), "base map restores its pistol cycle"); +}); + test("local controller arrival leaves self-play and a remote viewer alone", () => { const demo = createFight(false, false, "web"); demo.fight.startSelfPlay(); @@ -6978,7 +7002,10 @@ test('workshop public maps survive rounds without granting coach editing', async name: 'Public park', features: [{ from: 0, to: 40, kind: 'flat' }], decks: [], spawns: [4, 35], pickups: [], skateboard: false }); try { - const { fight } = createFight(); + const { fight, tick } = createFight(); + for (let i = 0; i < 525; i++) tick(40000); + assert.ok(fight.roundState().roundElapsedUs >= 20000000); + assert.equal(fight.gunPickups.length, 0, "empty maps do not acquire automatic weapons"); assert.equal(fight.players[0].spawnX, 405); fight.nextRound(); assert.equal(fight.players[0].spawnX, 405); -- 2.51.2 From bdd98403843ac7d785614fdfe9792f77f82c0dac Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 15:42:04 -0700 Subject: [PATCH 06/10] Fix tape draft upload event delivery and retries --- system/public/aesthetic.computer/bios.mjs | 5 - .../public/aesthetic.computer/disks/video.mjs | 143 +- .../lib/disk-worker-manifest.json | 8 +- system/public/aesthetic.computer/lib/disk.mjs | 7 +- .../lib/disk.worker.1b7bee60455e.mjs | 48011 ++++++++++++++++ tests/tape-draft-upload.test.mjs | 125 + 6 files changed, 48202 insertions(+), 97 deletions(-) create mode 100644 system/public/aesthetic.computer/lib/disk.worker.1b7bee60455e.mjs create mode 100644 tests/tape-draft-upload.test.mjs diff --git a/system/public/aesthetic.computer/bios.mjs b/system/public/aesthetic.computer/bios.mjs index 0ab0ccf6f1..29e450ce3d 100644 --- a/system/public/aesthetic.computer/bios.mjs +++ b/system/public/aesthetic.computer/bios.mjs @@ -20318,11 +20318,6 @@ async function boot(parsed, bpm = 60, resolution, debug) { overlayCan.style.display = "none"; } // Force sync rendering during tape playback for immediate UI updates - { - const d = imageData.data; - const mid = Math.floor(d.length / 2); - console.log(`🎬 BIOS putImageData: ${imageData.width}×${imageData.height} corner=[${d[0]},${d[1]},${d[2]},${d[3]}] mid=[${d[mid]},${d[mid+1]},${d[mid+2]},${d[mid+3]}]`); - } ctx.putImageData(imageData, 0, bumperOffset); } else if (!forceSynchronousRendering && window.pixelOptimizer && window.pixelOptimizer.asyncRenderingSupported) { try { diff --git a/system/public/aesthetic.computer/disks/video.mjs b/system/public/aesthetic.computer/disks/video.mjs index 64278ef1e8..4324501156 100644 --- a/system/public/aesthetic.computer/disks/video.mjs +++ b/system/public/aesthetic.computer/disks/video.mjs @@ -688,6 +688,7 @@ function beginTapeDraft(rec, send) { function finalizeTapeDraft(send) { if (!tapeDraft || tapeDraftState !== "ready") return false; tapeDraftState = "finalizing"; + finalizeWhenReady = false; send({ type: "tape:draft-finalize", content: { @@ -3371,7 +3372,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { }; if (e.is("recorder:compact")) { - console.log("🎥 compact:", JSON.stringify(e.content)); + if (debug) console.log("🎥 compact:", JSON.stringify(e.content)); if (typeof e.content?.bytes === "number") tapeBytes = e.content.bytes; requestPaint(); return true; @@ -3379,14 +3380,14 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // Handle upload progress (from 90% to 100% as file uploads) if (e.is("upload:progress")) { - console.log("📤 Upload progress:", e.content); + if (debug) console.log("📤 Upload progress:", e.content); // Map upload progress from 0-1 to 90-100% of overall progress // Transcode goes 0-90%, upload goes 90-100% const uploadProgress = typeof e.content === "number" ? e.content : 0; printProgress = 0.9 + (uploadProgress * 0.1); // 90% + (0-10%) - console.log(`📊 Upload progress: ${Math.floor(uploadProgress * 100)}% -> Overall: ${Math.floor(printProgress * 100)}%`); + if (debug) console.log(`📊 Upload progress: ${Math.floor(uploadProgress * 100)}% -> Overall: ${Math.floor(printProgress * 100)}%`); requestPaint(); return true; @@ -3395,7 +3396,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { if (e.is("tape:draft-progress")) { tapeDraftState = "uploading"; if (finalizeWhenReady) { - printProgress = 0.85 + Math.max(0, Math.min(1, e.content || 0)) * 0.1; + printProgress = 0.9 + Math.max(0, Math.min(1, e.content || 0)) * 0.05; requestPaint(); } return true; @@ -3420,6 +3421,10 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { finalizeWhenReady = false; isPostingTape = false; isPrinting = false; + currentExportType = ""; + currentExportPhase = ""; + exportStatusMessage = ""; + printProgress = 0; if (postBtn) postBtn.disabled = false; completionMessage = "PRE-UPLOAD FAILED — TAP DONE TO RETRY"; completionMessageTimer = 180; @@ -3430,7 +3435,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // Handle tape:posted callback (successful tape upload) if (e.is("tape:posted")) { - console.log("✅ Tape posted successfully:", e.content); + if (debug) console.log("✅ Tape posted successfully:", e.content); const { code, slug } = e.content || {}; @@ -3443,8 +3448,8 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // Complete the export flow (sets progress to 100%) completeExport("post", code ? `POSTED! !${code}` : "POSTED!"); - console.log(`📼 Tape posted: code=!${code}, slug=${slug}`); - console.log(`📼 POST button will show "POSTED" (disabled), HUD will show !${code}`); + if (debug) console.log(`📼 Tape posted: code=!${code}, slug=${slug}`); + if (debug) console.log(`📼 POST button will show "POSTED" (disabled), HUD will show !${code}`); requestPaint(); // Force repaint to show new button state @@ -3456,8 +3461,18 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { console.error("❌ Tape post error:", e.content); isPrinting = false; + isPostingTape = false; + finalizeWhenReady = false; + // Keep an uploaded draft available when finalization fails. + if (tapeDraftState === "finalizing") tapeDraftState = "ready"; currentExportType = ""; - postBtn.disabled = false; + currentExportPhase = ""; + exportStatusMessage = ""; + printProgress = 0; + if (postBtn) postBtn.disabled = false; + if (gifBtn) gifBtn.disabled = false; + if (mp4Btn) mp4Btn.disabled = false; + if (zipBtn) zipBtn.disabled = false; completionMessage = "POST FAILED"; completionMessageTimer = 180; // 3 seconds at 60fps @@ -3469,7 +3484,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // Handle detailed export status messages if (e.is("recorder:export-status")) { - console.log("🎯 Video piece received status:", e.content); + if (debug) console.log("🎯 Video piece received status:", e.content); if (e.content?.message) { exportStatusMessage = e.content.message; @@ -3485,8 +3500,8 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // Handle export progress updates for all export types if (e.is("recorder:export-progress") || e.is("recorder:transcode-progress")) { - console.log("🎯 Video piece received progress:", e.is("recorder:export-progress") ? "export-progress" : "transcode-progress", e); - console.log("🎯 Current export state - isPrinting:", isPrinting, "isPostingTape:", isPostingTape, "isExportingGIF:", isExportingGIF, "currentExportType:", currentExportType); + if (debug) console.log("🎯 Video piece received progress:", e.is("recorder:export-progress") ? "export-progress" : "transcode-progress", e); + if (debug) console.log("🎯 Current export state - isPrinting:", isPrinting, "isPostingTape:", isPostingTape, "isExportingGIF:", isExportingGIF, "currentExportType:", currentExportType); if (e.progress !== undefined || (e.is("recorder:transcode-progress") && typeof e.content === "number")) { // Handle both message formats: {progress, type} and direct number content @@ -3495,7 +3510,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { ? (e.content?.type || currentExportType || "gif") : currentExportType || "video"; // For export-progress, fall back to current export type - console.log("🎯 Processing progress update:", progress, "for type:", exportType); + if (debug) console.log("🎯 Processing progress update:", progress, "for type:", exportType); // Update status message if provided if (e.message || e.content?.message) { @@ -3516,7 +3531,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // Handle transcode progress for any active export (e.is("recorder:transcode-progress") && (isPrinting || isPostingTape || isExportingGIF || isExportingWebP || isExportingAnimWebP || isExportingAPNG || isExportingFrames)); - console.log("🎯 isValidExport check:", isValidExport, "- conditions:", { + if (debug) console.log("🎯 isValidExport check:", isValidExport, "- conditions:", { videoAndPrinting: exportType === "video" && isPrinting, gifAndExporting: exportType === "gif" && isExportingGIF, postAndPosting: exportType === "post" && (isPrinting || isPostingTape), @@ -3529,7 +3544,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { const oldProgress = printProgress; printProgress = progress; - console.log(`📊 Export progress updated: ${Math.floor(progress * 100)}% (was ${Math.floor(oldProgress * 100)}%) - type: ${exportType}`); + if (debug) console.log(`📊 Export progress updated: ${Math.floor(progress * 100)}% (was ${Math.floor(oldProgress * 100)}%) - type: ${exportType}`); // Track progress history for ETA calculation const now = performance.now(); @@ -3546,7 +3561,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { rec.tapeProgress = Math.min(Math.max(progress, 0.01), 0.999); } - console.log(`📊 Export progress: ${Math.floor(progress * 100)}% (${exportType}) - ${exportStatusMessage}`); + if (debug) console.log(`📊 Export progress: ${Math.floor(progress * 100)}% (${exportType}) - ${exportStatusMessage}`); requestPaint(); if (exportType === "frames" && progress >= 0.999 && isExportingFrames) { @@ -3562,7 +3577,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // Handle export completion for all export types if (e.is("recorder:export-complete")) { - console.log("🎯 Video piece received completion:", e); + if (debug) console.log("🎯 Video piece received completion:", e); const exportType = e.content?.type; // Get the actual export type from content const isValidExportComplete = (exportType === "gif" && isExportingGIF) || @@ -3572,7 +3587,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { (exportType === "frames" && isExportingFrames) || (exportType === "video" && isPrinting); - console.log("🎯 Completion validation:", { + if (debug) console.log("🎯 Completion validation:", { messageType: e.type, exportType: exportType, isExportingGIF, @@ -3581,7 +3596,7 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { }); if (isValidExportComplete) { - console.log(`✅ ${exportType?.toUpperCase() || "Export"} completed successfully!`, e.content?.filename || ""); + if (debug) console.log(`✅ ${exportType?.toUpperCase() || "Export"} completed successfully!`, e.content?.filename || ""); completeExport(exportType, `${exportType?.toUpperCase() || "EXPORT"} COMPLETED!`); if (typeof rec?.present === "function") { rec.present(); @@ -3609,16 +3624,26 @@ function handleSystemMessage({ event: e, rec, needsPaint, jump }) { // 📨 Receive (Handles direct messages from the system) function receive(e) { - console.log("🎯 Video receive() called with event:", e?.type, e); + if (debug) console.log("🎯 Video receive() called with event:", e?.type); if (!e || typeof e.is !== "function") { console.warn("🎯 Event missing or e.is() not a function"); return false; } + // Worker events may arrive through act() or directly through receive(). + // Both paths must advance the same draft/upload state machine. + if ( + e.is("tape:draft-progress") || e.is("tape:draft-ready") || + e.is("tape:draft-error") || e.is("tape:posted") || + e.is("tape:post-error") || e.is("upload:progress") + ) { + return handleSystemMessage({ event: e }); + } + // Handle tape info reply from BIOS if (e.is("tape:info-reply")) { - console.log("📼 Received tape info:", e.content); + if (debug) console.log("📼 Received tape info:", e.content); tapeInfo = e.content; return true; } @@ -3651,7 +3676,7 @@ function receive(e) { // Handle AudioContext state updates from BIOS if (e.is("tape:audio-context-state")) { - console.log("🎵 ✅ Video piece received AudioContext state:", e.content); + if (debug) console.log("🎵 ✅ Video piece received AudioContext state:", e.content); audioContextState = e.content?.state || "suspended"; hasAudioContext = !!e.content?.hasAudio; audioDiag = { @@ -3659,13 +3684,13 @@ function receive(e) { ctxRate: e.content?.ctxRate || audioDiag.ctxRate || 0, latencyMs: e.content?.latencyMs ?? audioDiag.latencyMs ?? 0, }; - console.log(`🎵 ✅ AudioContext state updated: ${audioContextState}, hasAudio: ${hasAudioContext}`); + if (debug) console.log(`🎵 ✅ AudioContext state updated: ${audioContextState}, hasAudio: ${hasAudioContext}`); return true; } // Debug: Log all message types to see what we're missing if (e.type && e.type.includes("audio") || e.type && e.type.includes("tape")) { - console.log("🎯 🎵 AUDIO/TAPE MESSAGE:", e.type, e); + if (debug) console.log("🎯 🎵 AUDIO/TAPE MESSAGE:", e.type, e); } // Helper function to complete export and reset UI @@ -3695,7 +3720,7 @@ function receive(e) { // Handle export completion if (e.is("recorder:export-complete")) { - console.log("🎯 Video receive() handling export-complete:", e); + if (debug) console.log("🎯 Video receive() handling export-complete:", e); const exportType = e.content?.type; const isValidExportComplete = (exportType === "gif" && isExportingGIF) || @@ -3705,7 +3730,7 @@ function receive(e) { (exportType === "frames" && isExportingFrames) || (exportType === "video" && isPrinting); - console.log("🎯 Export completion validation:", { + if (debug) console.log("🎯 Export completion validation:", { exportType, isExportingGIF, isPrinting, @@ -3713,7 +3738,7 @@ function receive(e) { }); if (isValidExportComplete) { - console.log(`✅ ${exportType?.toUpperCase() || "Export"} completed in receive()!`, e.content?.filename || ""); + if (debug) console.log(`✅ ${exportType?.toUpperCase() || "Export"} completed in receive()!`, e.content?.filename || ""); completeExport(exportType, `${exportType?.toUpperCase() || "EXPORT"} COMPLETED!`); } return true; @@ -3721,8 +3746,8 @@ function receive(e) { // Handle export progress updates for all export types if (e.is("recorder:export-progress") || e.is("recorder:transcode-progress")) { - console.log("🎯 Video piece received progress:", e.is("recorder:export-progress") ? "export-progress" : "transcode-progress", e); - console.log("🎯 Current export state - isPrinting:", isPrinting, "isPostingTape:", isPostingTape, "isExportingGIF:", isExportingGIF, "currentExportType:", currentExportType); + if (debug) console.log("🎯 Video piece received progress:", e.is("recorder:export-progress") ? "export-progress" : "transcode-progress", e); + if (debug) console.log("🎯 Current export state - isPrinting:", isPrinting, "isPostingTape:", isPostingTape, "isExportingGIF:", isExportingGIF, "currentExportType:", currentExportType); if (e.progress !== undefined || (e.is("recorder:transcode-progress") && typeof e.content === "number")) { // Handle both message formats: {progress, type} and direct number content @@ -3731,7 +3756,7 @@ function receive(e) { ? (e.content?.type || currentExportType || "gif") : currentExportType || "video"; // For export-progress, fall back to current export type - console.log("🎯 Processing progress update:", progress, "for type:", exportType); + if (debug) console.log("🎯 Processing progress update:", progress, "for type:", exportType); // Update status message if provided if (e.message || e.content?.message) { @@ -3752,7 +3777,7 @@ function receive(e) { // Handle transcode progress for any active export (e.is("recorder:transcode-progress") && (isPrinting || isPostingTape || isExportingGIF || isExportingWebP || isExportingAnimWebP || isExportingAPNG || isExportingFrames)); - console.log("🎯 isValidExport check:", isValidExport, "- conditions:", { + if (debug) console.log("🎯 isValidExport check:", isValidExport, "- conditions:", { videoAndPrinting: exportType === "video" && isPrinting, gifAndExporting: exportType === "gif" && isExportingGIF, postAndPosting: exportType === "post" && (isPrinting || isPostingTape), @@ -3765,7 +3790,7 @@ function receive(e) { const oldProgress = printProgress; printProgress = progress; - console.log(`📊 GIF Export progress: ${Math.floor(progress * 100)}% (printProgress updated from ${Math.floor(oldProgress * 100)}% to ${Math.floor(printProgress * 100)}%) - type: ${exportType}`); + if (debug) console.log(`📊 GIF Export progress: ${Math.floor(progress * 100)}% (printProgress updated from ${Math.floor(oldProgress * 100)}% to ${Math.floor(printProgress * 100)}%) - type: ${exportType}`); // Track progress history for ETA calculation const now = performance.now(); @@ -3860,68 +3885,14 @@ function receive(e) { return true; } - // Handle tape:posted callback (successful tape upload) - if (e.is("tape:posted")) { - console.log("✅ Tape posted successfully:", e.content); - - const { code, slug } = e.content || {}; - - // Store the code for HUD label display - postedTapeCode = code; - - // Set progress to 100% and complete the export - printProgress = 1.0; - completionMessage = code ? `POSTED! !${code}` : "POSTED!"; - completionMessageTimer = 180; - isPrinting = false; - isPostingTape = false; - currentExportType = ""; - currentExportPhase = ""; - exportStatusMessage = ""; - exportStartTime = 0; - progressHistory = []; - - // Re-enable other export buttons, but POST button will be disabled by paint logic - if (gifBtn) gifBtn.disabled = false; - if (mp4Btn) mp4Btn.disabled = false; - if (zipBtn) zipBtn.disabled = false; - - console.log(`📼 Tape posted: code=!${code}, slug=${slug}`); - console.log(`📼 POST button will show "POSTED" (disabled), HUD will show !${code}`); - - requestPaint(); - - return true; - } - // Handle waveform data response from tape audio if (e.is("tape:waveform")) { - console.log("🌊 Received tape waveform data:", e.content?.length, "samples"); + if (debug) console.log("🌊 Received tape waveform data:", e.content?.length, "samples"); tapeWaveform = e.content; requestPaint(); return true; } - // Handle tape:post-error callback (failed tape upload) - if (e.is("tape:post-error")) { - console.error("❌ Tape post error:", e.content); - - completionMessage = "UPLOAD FAILED!"; - completionMessageTimer = 180; - isPrinting = false; - isPostingTape = false; - currentExportType = ""; - exportStatusMessage = ""; - printProgress = 0; - if (postBtn) postBtn.disabled = false; - if (gifBtn) gifBtn.disabled = false; - if (mp4Btn) mp4Btn.disabled = false; - if (zipBtn) zipBtn.disabled = false; - requestPaint(); - - return true; - } - return false; } diff --git a/system/public/aesthetic.computer/lib/disk-worker-manifest.json b/system/public/aesthetic.computer/lib/disk-worker-manifest.json index ee8d356098..738d091565 100644 --- a/system/public/aesthetic.computer/lib/disk-worker-manifest.json +++ b/system/public/aesthetic.computer/lib/disk-worker-manifest.json @@ -1,8 +1,8 @@ { - "filename": "disk.worker.efeba13c8913.mjs", - "sha256": "efeba13c89135818f32f78ee8e15ac063ef090d3a071abd7351cd692daf24ce7", - "bytes": 1683714, - "sourceSha256": "f8c32c7c5b2d89dc5d85933826294c021756fa4e7187c35864dbd560014989a6", + "filename": "disk.worker.1b7bee60455e.mjs", + "sha256": "1b7bee60455e87b07768131f71844746b22e7647aff633f0b357bc8d7ffbfd35", + "bytes": 1683771, + "sourceSha256": "ceab94e27f6ac549eaf25904b4ec32447f2db30e17a653a3482eb00bd52ad964", "sources": [ "public/aesthetic.computer/dep/@akamfoad/qr/qr.mjs", "public/aesthetic.computer/dep/gl-matrix/common.mjs", diff --git a/system/public/aesthetic.computer/lib/disk.mjs b/system/public/aesthetic.computer/lib/disk.mjs index a5170866bb..064f79ce8b 100644 --- a/system/public/aesthetic.computer/lib/disk.mjs +++ b/system/public/aesthetic.computer/lib/disk.mjs @@ -11550,7 +11550,7 @@ async function makeFrame({ data: { type, content } }) { // Media Recorder Events if (type === "recorder:transcode-progress") { - console.log("📼 🚨 DISK.MJS caught transcode-progress EARLY - updating rec.printProgress:", content); + if (debug) console.log("📼 Transcode progress:", content); $commonApi.rec.printProgress = content; if (content === 1) { send({ type: "signal", content: "recorder:transcoding-done" }); @@ -11570,6 +11570,9 @@ async function makeFrame({ data: { type, content } }) { type === "recorder:export-complete" || type === "tape:posted" || type === "tape:post-error" || + type === "tape:draft-progress" || + type === "tape:draft-ready" || + type === "tape:draft-error" || type === "tape:download-progress" || type === "tape:load-progress" || type === "tape:preloaded" || @@ -11619,7 +11622,7 @@ async function makeFrame({ data: { type, content } }) { progress: type === "recorder:transcode-progress" ? content : undefined }; try { - if (!getPackMode()) console.log("📼 ✅ Calling receive directly for export event:", type); + if (debug && !getPackMode()) console.log("📼 ✅ Calling receive directly for export event:", type); receive(event); return; // Successfully delivered to piece } catch (e) { diff --git a/system/public/aesthetic.computer/lib/disk.worker.1b7bee60455e.mjs b/system/public/aesthetic.computer/lib/disk.worker.1b7bee60455e.mjs new file mode 100644 index 0000000000..0fa3e8970c --- /dev/null +++ b/system/public/aesthetic.computer/lib/disk.worker.1b7bee60455e.mjs @@ -0,0 +1,48011 @@ +var __defProp = Object.defineProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; + +// public/aesthetic.computer/dep/gl-matrix/quat.mjs +var quat_exports = {}; +__export(quat_exports, { + add: () => add4, + calculateW: () => calculateW, + clone: () => clone4, + conjugate: () => conjugate, + copy: () => copy4, + create: () => create4, + dot: () => dot3, + equals: () => equals4, + exactEquals: () => exactEquals4, + exp: () => exp, + fromEuler: () => fromEuler, + fromMat3: () => fromMat3, + fromValues: () => fromValues4, + getAngle: () => getAngle, + getAxisAngle: () => getAxisAngle, + identity: () => identity2, + invert: () => invert2, + len: () => len3, + length: () => length3, + lerp: () => lerp3, + ln: () => ln, + mul: () => mul4, + multiply: () => multiply4, + normalize: () => normalize3, + pow: () => pow, + random: () => random3, + rotateX: () => rotateX2, + rotateY: () => rotateY2, + rotateZ: () => rotateZ2, + rotationTo: () => rotationTo, + scale: () => scale4, + set: () => set4, + setAxes: () => setAxes, + setAxisAngle: () => setAxisAngle, + slerp: () => slerp, + sqlerp: () => sqlerp, + sqrLen: () => sqrLen3, + squaredLength: () => squaredLength3, + str: () => str4 +}); + +// public/aesthetic.computer/dep/gl-matrix/common.mjs +var EPSILON = 1e-6; +var ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array; +var RANDOM = Math.random; +var degree = Math.PI / 180; +if (!Math.hypot) Math.hypot = function() { + var y = 0, i2 = arguments.length; + while (i2--) { + y += arguments[i2] * arguments[i2]; + } + return Math.sqrt(y); +}; + +// public/aesthetic.computer/dep/gl-matrix/mat3.mjs +var mat3_exports = {}; +__export(mat3_exports, { + add: () => add, + adjoint: () => adjoint, + clone: () => clone, + copy: () => copy, + create: () => create, + determinant: () => determinant, + equals: () => equals, + exactEquals: () => exactEquals, + frob: () => frob, + fromMat2d: () => fromMat2d, + fromMat4: () => fromMat4, + fromQuat: () => fromQuat, + fromRotation: () => fromRotation, + fromScaling: () => fromScaling, + fromTranslation: () => fromTranslation, + fromValues: () => fromValues, + identity: () => identity, + invert: () => invert, + mul: () => mul, + multiply: () => multiply, + multiplyScalar: () => multiplyScalar, + multiplyScalarAndAdd: () => multiplyScalarAndAdd, + normalFromMat4: () => normalFromMat4, + projection: () => projection, + rotate: () => rotate, + scale: () => scale, + set: () => set, + str: () => str, + sub: () => sub, + subtract: () => subtract, + translate: () => translate, + transpose: () => transpose +}); +function create() { + var out = new ARRAY_TYPE(9); + if (ARRAY_TYPE != Float32Array) { + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[5] = 0; + out[6] = 0; + out[7] = 0; + } + out[0] = 1; + out[4] = 1; + out[8] = 1; + return out; +} +function fromMat4(out, a2) { + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[4]; + out[4] = a2[5]; + out[5] = a2[6]; + out[6] = a2[8]; + out[7] = a2[9]; + out[8] = a2[10]; + return out; +} +function clone(a2) { + var out = new ARRAY_TYPE(9); + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[3]; + out[4] = a2[4]; + out[5] = a2[5]; + out[6] = a2[6]; + out[7] = a2[7]; + out[8] = a2[8]; + return out; +} +function copy(out, a2) { + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[3]; + out[4] = a2[4]; + out[5] = a2[5]; + out[6] = a2[6]; + out[7] = a2[7]; + out[8] = a2[8]; + return out; +} +function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) { + var out = new ARRAY_TYPE(9); + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m10; + out[4] = m11; + out[5] = m12; + out[6] = m20; + out[7] = m21; + out[8] = m22; + return out; +} +function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) { + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m10; + out[4] = m11; + out[5] = m12; + out[6] = m20; + out[7] = m21; + out[8] = m22; + return out; +} +function identity(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 1; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +} +function transpose(out, a2) { + if (out === a2) { + var a01 = a2[1], a02 = a2[2], a12 = a2[5]; + out[1] = a2[3]; + out[2] = a2[6]; + out[3] = a01; + out[5] = a2[7]; + out[6] = a02; + out[7] = a12; + } else { + out[0] = a2[0]; + out[1] = a2[3]; + out[2] = a2[6]; + out[3] = a2[1]; + out[4] = a2[4]; + out[5] = a2[7]; + out[6] = a2[2]; + out[7] = a2[5]; + out[8] = a2[8]; + } + return out; +} +function invert(out, a2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2]; + var a10 = a2[3], a11 = a2[4], a12 = a2[5]; + var a20 = a2[6], a21 = a2[7], a22 = a2[8]; + var b01 = a22 * a11 - a12 * a21; + var b11 = -a22 * a10 + a12 * a20; + var b21 = a21 * a10 - a11 * a20; + var det = a00 * b01 + a01 * b11 + a02 * b21; + if (!det) { + return null; + } + det = 1 / det; + out[0] = b01 * det; + out[1] = (-a22 * a01 + a02 * a21) * det; + out[2] = (a12 * a01 - a02 * a11) * det; + out[3] = b11 * det; + out[4] = (a22 * a00 - a02 * a20) * det; + out[5] = (-a12 * a00 + a02 * a10) * det; + out[6] = b21 * det; + out[7] = (-a21 * a00 + a01 * a20) * det; + out[8] = (a11 * a00 - a01 * a10) * det; + return out; +} +function adjoint(out, a2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2]; + var a10 = a2[3], a11 = a2[4], a12 = a2[5]; + var a20 = a2[6], a21 = a2[7], a22 = a2[8]; + out[0] = a11 * a22 - a12 * a21; + out[1] = a02 * a21 - a01 * a22; + out[2] = a01 * a12 - a02 * a11; + out[3] = a12 * a20 - a10 * a22; + out[4] = a00 * a22 - a02 * a20; + out[5] = a02 * a10 - a00 * a12; + out[6] = a10 * a21 - a11 * a20; + out[7] = a01 * a20 - a00 * a21; + out[8] = a00 * a11 - a01 * a10; + return out; +} +function determinant(a2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2]; + var a10 = a2[3], a11 = a2[4], a12 = a2[5]; + var a20 = a2[6], a21 = a2[7], a22 = a2[8]; + return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); +} +function multiply(out, a2, b2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2]; + var a10 = a2[3], a11 = a2[4], a12 = a2[5]; + var a20 = a2[6], a21 = a2[7], a22 = a2[8]; + var b00 = b2[0], b01 = b2[1], b02 = b2[2]; + var b10 = b2[3], b11 = b2[4], b12 = b2[5]; + var b20 = b2[6], b21 = b2[7], b22 = b2[8]; + out[0] = b00 * a00 + b01 * a10 + b02 * a20; + out[1] = b00 * a01 + b01 * a11 + b02 * a21; + out[2] = b00 * a02 + b01 * a12 + b02 * a22; + out[3] = b10 * a00 + b11 * a10 + b12 * a20; + out[4] = b10 * a01 + b11 * a11 + b12 * a21; + out[5] = b10 * a02 + b11 * a12 + b12 * a22; + out[6] = b20 * a00 + b21 * a10 + b22 * a20; + out[7] = b20 * a01 + b21 * a11 + b22 * a21; + out[8] = b20 * a02 + b21 * a12 + b22 * a22; + return out; +} +function translate(out, a2, v2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], x = v2[0], y = v2[1]; + out[0] = a00; + out[1] = a01; + out[2] = a02; + out[3] = a10; + out[4] = a11; + out[5] = a12; + out[6] = x * a00 + y * a10 + a20; + out[7] = x * a01 + y * a11 + a21; + out[8] = x * a02 + y * a12 + a22; + return out; +} +function rotate(out, a2, rad) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], s2 = Math.sin(rad), c4 = Math.cos(rad); + out[0] = c4 * a00 + s2 * a10; + out[1] = c4 * a01 + s2 * a11; + out[2] = c4 * a02 + s2 * a12; + out[3] = c4 * a10 - s2 * a00; + out[4] = c4 * a11 - s2 * a01; + out[5] = c4 * a12 - s2 * a02; + out[6] = a20; + out[7] = a21; + out[8] = a22; + return out; +} +function scale(out, a2, v2) { + var x = v2[0], y = v2[1]; + out[0] = x * a2[0]; + out[1] = x * a2[1]; + out[2] = x * a2[2]; + out[3] = y * a2[3]; + out[4] = y * a2[4]; + out[5] = y * a2[5]; + out[6] = a2[6]; + out[7] = a2[7]; + out[8] = a2[8]; + return out; +} +function fromTranslation(out, v2) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 1; + out[5] = 0; + out[6] = v2[0]; + out[7] = v2[1]; + out[8] = 1; + return out; +} +function fromRotation(out, rad) { + var s2 = Math.sin(rad), c4 = Math.cos(rad); + out[0] = c4; + out[1] = s2; + out[2] = 0; + out[3] = -s2; + out[4] = c4; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +} +function fromScaling(out, v2) { + out[0] = v2[0]; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = v2[1]; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +} +function fromMat2d(out, a2) { + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = 0; + out[3] = a2[2]; + out[4] = a2[3]; + out[5] = 0; + out[6] = a2[4]; + out[7] = a2[5]; + out[8] = 1; + return out; +} +function fromQuat(out, q) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - yy - zz; + out[3] = yx - wz; + out[6] = zx + wy; + out[1] = yx + wz; + out[4] = 1 - xx - zz; + out[7] = zy - wx; + out[2] = zx - wy; + out[5] = zy + wx; + out[8] = 1 - xx - yy; + return out; +} +function normalFromMat4(out, a2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3]; + var a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7]; + var a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11]; + var a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1 / det; + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + return out; +} +function projection(out, width2, height2) { + out[0] = 2 / width2; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = -2 / height2; + out[5] = 0; + out[6] = -1; + out[7] = 1; + out[8] = 1; + return out; +} +function str(a2) { + return "mat3(" + a2[0] + ", " + a2[1] + ", " + a2[2] + ", " + a2[3] + ", " + a2[4] + ", " + a2[5] + ", " + a2[6] + ", " + a2[7] + ", " + a2[8] + ")"; +} +function frob(a2) { + return Math.hypot(a2[0], a2[1], a2[2], a2[3], a2[4], a2[5], a2[6], a2[7], a2[8]); +} +function add(out, a2, b2) { + out[0] = a2[0] + b2[0]; + out[1] = a2[1] + b2[1]; + out[2] = a2[2] + b2[2]; + out[3] = a2[3] + b2[3]; + out[4] = a2[4] + b2[4]; + out[5] = a2[5] + b2[5]; + out[6] = a2[6] + b2[6]; + out[7] = a2[7] + b2[7]; + out[8] = a2[8] + b2[8]; + return out; +} +function subtract(out, a2, b2) { + out[0] = a2[0] - b2[0]; + out[1] = a2[1] - b2[1]; + out[2] = a2[2] - b2[2]; + out[3] = a2[3] - b2[3]; + out[4] = a2[4] - b2[4]; + out[5] = a2[5] - b2[5]; + out[6] = a2[6] - b2[6]; + out[7] = a2[7] - b2[7]; + out[8] = a2[8] - b2[8]; + return out; +} +function multiplyScalar(out, a2, b2) { + out[0] = a2[0] * b2; + out[1] = a2[1] * b2; + out[2] = a2[2] * b2; + out[3] = a2[3] * b2; + out[4] = a2[4] * b2; + out[5] = a2[5] * b2; + out[6] = a2[6] * b2; + out[7] = a2[7] * b2; + out[8] = a2[8] * b2; + return out; +} +function multiplyScalarAndAdd(out, a2, b2, scale7) { + out[0] = a2[0] + b2[0] * scale7; + out[1] = a2[1] + b2[1] * scale7; + out[2] = a2[2] + b2[2] * scale7; + out[3] = a2[3] + b2[3] * scale7; + out[4] = a2[4] + b2[4] * scale7; + out[5] = a2[5] + b2[5] * scale7; + out[6] = a2[6] + b2[6] * scale7; + out[7] = a2[7] + b2[7] * scale7; + out[8] = a2[8] + b2[8] * scale7; + return out; +} +function exactEquals(a2, b2) { + return a2[0] === b2[0] && a2[1] === b2[1] && a2[2] === b2[2] && a2[3] === b2[3] && a2[4] === b2[4] && a2[5] === b2[5] && a2[6] === b2[6] && a2[7] === b2[7] && a2[8] === b2[8]; +} +function equals(a2, b2) { + var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3], a4 = a2[4], a5 = a2[5], a6 = a2[6], a7 = a2[7], a8 = a2[8]; + var b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3], b4 = b2[4], b5 = b2[5], b6 = b2[6], b7 = b2[7], b8 = b2[8]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a22 - b22) <= EPSILON * Math.max(1, Math.abs(a22), Math.abs(b22)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= EPSILON * Math.max(1, Math.abs(a8), Math.abs(b8)); +} +var mul = multiply; +var sub = subtract; + +// public/aesthetic.computer/dep/gl-matrix/vec3.mjs +var vec3_exports = {}; +__export(vec3_exports, { + add: () => add2, + angle: () => angle, + bezier: () => bezier, + ceil: () => ceil, + clone: () => clone2, + copy: () => copy2, + create: () => create2, + cross: () => cross, + dist: () => dist, + distance: () => distance, + div: () => div, + divide: () => divide, + dot: () => dot, + equals: () => equals2, + exactEquals: () => exactEquals2, + floor: () => floor, + forEach: () => forEach, + fromValues: () => fromValues2, + hermite: () => hermite, + inverse: () => inverse, + len: () => len, + length: () => length, + lerp: () => lerp, + max: () => max, + min: () => min, + mul: () => mul2, + multiply: () => multiply2, + negate: () => negate, + normalize: () => normalize, + random: () => random, + rotateX: () => rotateX, + rotateY: () => rotateY, + rotateZ: () => rotateZ, + round: () => round, + scale: () => scale2, + scaleAndAdd: () => scaleAndAdd, + set: () => set2, + sqrDist: () => sqrDist, + sqrLen: () => sqrLen, + squaredDistance: () => squaredDistance, + squaredLength: () => squaredLength, + str: () => str2, + sub: () => sub2, + subtract: () => subtract2, + transformMat3: () => transformMat3, + transformMat4: () => transformMat4, + transformQuat: () => transformQuat, + zero: () => zero +}); +function create2() { + var out = new ARRAY_TYPE(3); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + } + return out; +} +function clone2(a2) { + var out = new ARRAY_TYPE(3); + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + return out; +} +function length(a2) { + var x = a2[0]; + var y = a2[1]; + var z = a2[2]; + return Math.hypot(x, y, z); +} +function fromValues2(x, y, z) { + var out = new ARRAY_TYPE(3); + out[0] = x; + out[1] = y; + out[2] = z; + return out; +} +function copy2(out, a2) { + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + return out; +} +function set2(out, x, y, z) { + out[0] = x; + out[1] = y; + out[2] = z; + return out; +} +function add2(out, a2, b2) { + out[0] = a2[0] + b2[0]; + out[1] = a2[1] + b2[1]; + out[2] = a2[2] + b2[2]; + return out; +} +function subtract2(out, a2, b2) { + out[0] = a2[0] - b2[0]; + out[1] = a2[1] - b2[1]; + out[2] = a2[2] - b2[2]; + return out; +} +function multiply2(out, a2, b2) { + out[0] = a2[0] * b2[0]; + out[1] = a2[1] * b2[1]; + out[2] = a2[2] * b2[2]; + return out; +} +function divide(out, a2, b2) { + out[0] = a2[0] / b2[0]; + out[1] = a2[1] / b2[1]; + out[2] = a2[2] / b2[2]; + return out; +} +function ceil(out, a2) { + out[0] = Math.ceil(a2[0]); + out[1] = Math.ceil(a2[1]); + out[2] = Math.ceil(a2[2]); + return out; +} +function floor(out, a2) { + out[0] = Math.floor(a2[0]); + out[1] = Math.floor(a2[1]); + out[2] = Math.floor(a2[2]); + return out; +} +function min(out, a2, b2) { + out[0] = Math.min(a2[0], b2[0]); + out[1] = Math.min(a2[1], b2[1]); + out[2] = Math.min(a2[2], b2[2]); + return out; +} +function max(out, a2, b2) { + out[0] = Math.max(a2[0], b2[0]); + out[1] = Math.max(a2[1], b2[1]); + out[2] = Math.max(a2[2], b2[2]); + return out; +} +function round(out, a2) { + out[0] = Math.round(a2[0]); + out[1] = Math.round(a2[1]); + out[2] = Math.round(a2[2]); + return out; +} +function scale2(out, a2, b2) { + out[0] = a2[0] * b2; + out[1] = a2[1] * b2; + out[2] = a2[2] * b2; + return out; +} +function scaleAndAdd(out, a2, b2, scale7) { + out[0] = a2[0] + b2[0] * scale7; + out[1] = a2[1] + b2[1] * scale7; + out[2] = a2[2] + b2[2] * scale7; + return out; +} +function distance(a2, b2) { + var x = b2[0] - a2[0]; + var y = b2[1] - a2[1]; + var z = b2[2] - a2[2]; + return Math.hypot(x, y, z); +} +function squaredDistance(a2, b2) { + var x = b2[0] - a2[0]; + var y = b2[1] - a2[1]; + var z = b2[2] - a2[2]; + return x * x + y * y + z * z; +} +function squaredLength(a2) { + var x = a2[0]; + var y = a2[1]; + var z = a2[2]; + return x * x + y * y + z * z; +} +function negate(out, a2) { + out[0] = -a2[0]; + out[1] = -a2[1]; + out[2] = -a2[2]; + return out; +} +function inverse(out, a2) { + out[0] = 1 / a2[0]; + out[1] = 1 / a2[1]; + out[2] = 1 / a2[2]; + return out; +} +function normalize(out, a2) { + var x = a2[0]; + var y = a2[1]; + var z = a2[2]; + var len5 = x * x + y * y + z * z; + if (len5 > 0) { + len5 = 1 / Math.sqrt(len5); + } + out[0] = a2[0] * len5; + out[1] = a2[1] * len5; + out[2] = a2[2] * len5; + return out; +} +function dot(a2, b2) { + return a2[0] * b2[0] + a2[1] * b2[1] + a2[2] * b2[2]; +} +function cross(out, a2, b2) { + var ax = a2[0], ay = a2[1], az = a2[2]; + var bx = b2[0], by = b2[1], bz = b2[2]; + out[0] = ay * bz - az * by; + out[1] = az * bx - ax * bz; + out[2] = ax * by - ay * bx; + return out; +} +function lerp(out, a2, b2, t2) { + var ax = a2[0]; + var ay = a2[1]; + var az = a2[2]; + out[0] = ax + t2 * (b2[0] - ax); + out[1] = ay + t2 * (b2[1] - ay); + out[2] = az + t2 * (b2[2] - az); + return out; +} +function hermite(out, a2, b2, c4, d2, t2) { + var factorTimes2 = t2 * t2; + var factor1 = factorTimes2 * (2 * t2 - 3) + 1; + var factor2 = factorTimes2 * (t2 - 2) + t2; + var factor3 = factorTimes2 * (t2 - 1); + var factor4 = factorTimes2 * (3 - 2 * t2); + out[0] = a2[0] * factor1 + b2[0] * factor2 + c4[0] * factor3 + d2[0] * factor4; + out[1] = a2[1] * factor1 + b2[1] * factor2 + c4[1] * factor3 + d2[1] * factor4; + out[2] = a2[2] * factor1 + b2[2] * factor2 + c4[2] * factor3 + d2[2] * factor4; + return out; +} +function bezier(out, a2, b2, c4, d2, t2) { + var inverseFactor = 1 - t2; + var inverseFactorTimesTwo = inverseFactor * inverseFactor; + var factorTimes2 = t2 * t2; + var factor1 = inverseFactorTimesTwo * inverseFactor; + var factor2 = 3 * t2 * inverseFactorTimesTwo; + var factor3 = 3 * factorTimes2 * inverseFactor; + var factor4 = factorTimes2 * t2; + out[0] = a2[0] * factor1 + b2[0] * factor2 + c4[0] * factor3 + d2[0] * factor4; + out[1] = a2[1] * factor1 + b2[1] * factor2 + c4[1] * factor3 + d2[1] * factor4; + out[2] = a2[2] * factor1 + b2[2] * factor2 + c4[2] * factor3 + d2[2] * factor4; + return out; +} +function random(out, scale7) { + scale7 = scale7 || 1; + var r2 = RANDOM() * 2 * Math.PI; + var z = RANDOM() * 2 - 1; + var zScale = Math.sqrt(1 - z * z) * scale7; + out[0] = Math.cos(r2) * zScale; + out[1] = Math.sin(r2) * zScale; + out[2] = z * scale7; + return out; +} +function transformMat4(out, a2, m) { + var x = a2[0], y = a2[1], z = a2[2]; + var w = m[3] * x + m[7] * y + m[11] * z + m[15]; + w = w || 1; + out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; + out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; + out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; + return out; +} +function transformMat3(out, a2, m) { + var x = a2[0], y = a2[1], z = a2[2]; + out[0] = x * m[0] + y * m[3] + z * m[6]; + out[1] = x * m[1] + y * m[4] + z * m[7]; + out[2] = x * m[2] + y * m[5] + z * m[8]; + return out; +} +function transformQuat(out, a2, q) { + var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; + var x = a2[0], y = a2[1], z = a2[2]; + var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; + var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; + var w2 = qw * 2; + uvx *= w2; + uvy *= w2; + uvz *= w2; + uuvx *= 2; + uuvy *= 2; + uuvz *= 2; + out[0] = x + uvx + uuvx; + out[1] = y + uvy + uuvy; + out[2] = z + uvz + uuvz; + return out; +} +function rotateX(out, a2, b2, rad) { + var p = [], r2 = []; + p[0] = a2[0] - b2[0]; + p[1] = a2[1] - b2[1]; + p[2] = a2[2] - b2[2]; + r2[0] = p[0]; + r2[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad); + r2[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); + out[0] = r2[0] + b2[0]; + out[1] = r2[1] + b2[1]; + out[2] = r2[2] + b2[2]; + return out; +} +function rotateY(out, a2, b2, rad) { + var p = [], r2 = []; + p[0] = a2[0] - b2[0]; + p[1] = a2[1] - b2[1]; + p[2] = a2[2] - b2[2]; + r2[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad); + r2[1] = p[1]; + r2[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); + out[0] = r2[0] + b2[0]; + out[1] = r2[1] + b2[1]; + out[2] = r2[2] + b2[2]; + return out; +} +function rotateZ(out, a2, b2, rad) { + var p = [], r2 = []; + p[0] = a2[0] - b2[0]; + p[1] = a2[1] - b2[1]; + p[2] = a2[2] - b2[2]; + r2[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad); + r2[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad); + r2[2] = p[2]; + out[0] = r2[0] + b2[0]; + out[1] = r2[1] + b2[1]; + out[2] = r2[2] + b2[2]; + return out; +} +function angle(a2, b2) { + var ax = a2[0], ay = a2[1], az = a2[2], bx = b2[0], by = b2[1], bz = b2[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && dot(a2, b2) / mag; + return Math.acos(Math.min(Math.max(cosine, -1), 1)); +} +function zero(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + return out; +} +function str2(a2) { + return "vec3(" + a2[0] + ", " + a2[1] + ", " + a2[2] + ")"; +} +function exactEquals2(a2, b2) { + return a2[0] === b2[0] && a2[1] === b2[1] && a2[2] === b2[2]; +} +function equals2(a2, b2) { + var a0 = a2[0], a1 = a2[1], a22 = a2[2]; + var b0 = b2[0], b1 = b2[1], b22 = b2[2]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a22 - b22) <= EPSILON * Math.max(1, Math.abs(a22), Math.abs(b22)); +} +var sub2 = subtract2; +var mul2 = multiply2; +var div = divide; +var dist = distance; +var sqrDist = squaredDistance; +var len = length; +var sqrLen = squaredLength; +var forEach = (function() { + var vec = create2(); + return function(a2, stride, offset, count, fn, arg) { + var i2, l2; + if (!stride) { + stride = 3; + } + if (!offset) { + offset = 0; + } + if (count) { + l2 = Math.min(count * stride + offset, a2.length); + } else { + l2 = a2.length; + } + for (i2 = offset; i2 < l2; i2 += stride) { + vec[0] = a2[i2]; + vec[1] = a2[i2 + 1]; + vec[2] = a2[i2 + 2]; + fn(vec, vec, arg); + a2[i2] = vec[0]; + a2[i2 + 1] = vec[1]; + a2[i2 + 2] = vec[2]; + } + return a2; + }; +})(); + +// public/aesthetic.computer/dep/gl-matrix/vec4.mjs +var vec4_exports = {}; +__export(vec4_exports, { + add: () => add3, + ceil: () => ceil2, + clone: () => clone3, + copy: () => copy3, + create: () => create3, + cross: () => cross2, + dist: () => dist2, + distance: () => distance2, + div: () => div2, + divide: () => divide2, + dot: () => dot2, + equals: () => equals3, + exactEquals: () => exactEquals3, + floor: () => floor2, + forEach: () => forEach2, + fromValues: () => fromValues3, + inverse: () => inverse2, + len: () => len2, + length: () => length2, + lerp: () => lerp2, + max: () => max2, + min: () => min2, + mul: () => mul3, + multiply: () => multiply3, + negate: () => negate2, + normalize: () => normalize2, + random: () => random2, + round: () => round2, + scale: () => scale3, + scaleAndAdd: () => scaleAndAdd2, + set: () => set3, + sqrDist: () => sqrDist2, + sqrLen: () => sqrLen2, + squaredDistance: () => squaredDistance2, + squaredLength: () => squaredLength2, + str: () => str3, + sub: () => sub3, + subtract: () => subtract3, + transformMat4: () => transformMat42, + transformQuat: () => transformQuat2, + zero: () => zero2 +}); +function create3() { + var out = new ARRAY_TYPE(4); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 0; + } + return out; +} +function clone3(a2) { + var out = new ARRAY_TYPE(4); + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[3]; + return out; +} +function fromValues3(x, y, z, w) { + var out = new ARRAY_TYPE(4); + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +} +function copy3(out, a2) { + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[3]; + return out; +} +function set3(out, x, y, z, w) { + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +} +function add3(out, a2, b2) { + out[0] = a2[0] + b2[0]; + out[1] = a2[1] + b2[1]; + out[2] = a2[2] + b2[2]; + out[3] = a2[3] + b2[3]; + return out; +} +function subtract3(out, a2, b2) { + out[0] = a2[0] - b2[0]; + out[1] = a2[1] - b2[1]; + out[2] = a2[2] - b2[2]; + out[3] = a2[3] - b2[3]; + return out; +} +function multiply3(out, a2, b2) { + out[0] = a2[0] * b2[0]; + out[1] = a2[1] * b2[1]; + out[2] = a2[2] * b2[2]; + out[3] = a2[3] * b2[3]; + return out; +} +function divide2(out, a2, b2) { + out[0] = a2[0] / b2[0]; + out[1] = a2[1] / b2[1]; + out[2] = a2[2] / b2[2]; + out[3] = a2[3] / b2[3]; + return out; +} +function ceil2(out, a2) { + out[0] = Math.ceil(a2[0]); + out[1] = Math.ceil(a2[1]); + out[2] = Math.ceil(a2[2]); + out[3] = Math.ceil(a2[3]); + return out; +} +function floor2(out, a2) { + out[0] = Math.floor(a2[0]); + out[1] = Math.floor(a2[1]); + out[2] = Math.floor(a2[2]); + out[3] = Math.floor(a2[3]); + return out; +} +function min2(out, a2, b2) { + out[0] = Math.min(a2[0], b2[0]); + out[1] = Math.min(a2[1], b2[1]); + out[2] = Math.min(a2[2], b2[2]); + out[3] = Math.min(a2[3], b2[3]); + return out; +} +function max2(out, a2, b2) { + out[0] = Math.max(a2[0], b2[0]); + out[1] = Math.max(a2[1], b2[1]); + out[2] = Math.max(a2[2], b2[2]); + out[3] = Math.max(a2[3], b2[3]); + return out; +} +function round2(out, a2) { + out[0] = Math.round(a2[0]); + out[1] = Math.round(a2[1]); + out[2] = Math.round(a2[2]); + out[3] = Math.round(a2[3]); + return out; +} +function scale3(out, a2, b2) { + out[0] = a2[0] * b2; + out[1] = a2[1] * b2; + out[2] = a2[2] * b2; + out[3] = a2[3] * b2; + return out; +} +function scaleAndAdd2(out, a2, b2, scale7) { + out[0] = a2[0] + b2[0] * scale7; + out[1] = a2[1] + b2[1] * scale7; + out[2] = a2[2] + b2[2] * scale7; + out[3] = a2[3] + b2[3] * scale7; + return out; +} +function distance2(a2, b2) { + var x = b2[0] - a2[0]; + var y = b2[1] - a2[1]; + var z = b2[2] - a2[2]; + var w = b2[3] - a2[3]; + return Math.hypot(x, y, z, w); +} +function squaredDistance2(a2, b2) { + var x = b2[0] - a2[0]; + var y = b2[1] - a2[1]; + var z = b2[2] - a2[2]; + var w = b2[3] - a2[3]; + return x * x + y * y + z * z + w * w; +} +function length2(a2) { + var x = a2[0]; + var y = a2[1]; + var z = a2[2]; + var w = a2[3]; + return Math.hypot(x, y, z, w); +} +function squaredLength2(a2) { + var x = a2[0]; + var y = a2[1]; + var z = a2[2]; + var w = a2[3]; + return x * x + y * y + z * z + w * w; +} +function negate2(out, a2) { + out[0] = -a2[0]; + out[1] = -a2[1]; + out[2] = -a2[2]; + out[3] = -a2[3]; + return out; +} +function inverse2(out, a2) { + out[0] = 1 / a2[0]; + out[1] = 1 / a2[1]; + out[2] = 1 / a2[2]; + out[3] = 1 / a2[3]; + return out; +} +function normalize2(out, a2) { + var x = a2[0]; + var y = a2[1]; + var z = a2[2]; + var w = a2[3]; + var len5 = x * x + y * y + z * z + w * w; + if (len5 > 0) { + len5 = 1 / Math.sqrt(len5); + } + out[0] = x * len5; + out[1] = y * len5; + out[2] = z * len5; + out[3] = w * len5; + return out; +} +function dot2(a2, b2) { + return a2[0] * b2[0] + a2[1] * b2[1] + a2[2] * b2[2] + a2[3] * b2[3]; +} +function cross2(out, u2, v2, w) { + var A = v2[0] * w[1] - v2[1] * w[0], B = v2[0] * w[2] - v2[2] * w[0], C = v2[0] * w[3] - v2[3] * w[0], D2 = v2[1] * w[2] - v2[2] * w[1], E = v2[1] * w[3] - v2[3] * w[1], F = v2[2] * w[3] - v2[3] * w[2]; + var G = u2[0]; + var H = u2[1]; + var I2 = u2[2]; + var J = u2[3]; + out[0] = H * F - I2 * E + J * D2; + out[1] = -(G * F) + I2 * C - J * B; + out[2] = G * E - H * C + J * A; + out[3] = -(G * D2) + H * B - I2 * A; + return out; +} +function lerp2(out, a2, b2, t2) { + var ax = a2[0]; + var ay = a2[1]; + var az = a2[2]; + var aw = a2[3]; + out[0] = ax + t2 * (b2[0] - ax); + out[1] = ay + t2 * (b2[1] - ay); + out[2] = az + t2 * (b2[2] - az); + out[3] = aw + t2 * (b2[3] - aw); + return out; +} +function random2(out, scale7) { + scale7 = scale7 || 1; + var v1, v2, v3, v4; + var s1, s2; + do { + v1 = RANDOM() * 2 - 1; + v2 = RANDOM() * 2 - 1; + s1 = v1 * v1 + v2 * v2; + } while (s1 >= 1); + do { + v3 = RANDOM() * 2 - 1; + v4 = RANDOM() * 2 - 1; + s2 = v3 * v3 + v4 * v4; + } while (s2 >= 1); + var d2 = Math.sqrt((1 - s1) / s2); + out[0] = scale7 * v1; + out[1] = scale7 * v2; + out[2] = scale7 * v3 * d2; + out[3] = scale7 * v4 * d2; + return out; +} +function transformMat42(out, a2, m) { + var x = a2[0], y = a2[1], z = a2[2], w = a2[3]; + out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w; + out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w; + out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w; + out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w; + return out; +} +function transformQuat2(out, a2, q) { + var x = a2[0], y = a2[1], z = a2[2]; + var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = -qx * x - qy * y - qz * z; + out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; + out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; + out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; + out[3] = a2[3]; + return out; +} +function zero2(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 0; + return out; +} +function str3(a2) { + return "vec4(" + a2[0] + ", " + a2[1] + ", " + a2[2] + ", " + a2[3] + ")"; +} +function exactEquals3(a2, b2) { + return a2[0] === b2[0] && a2[1] === b2[1] && a2[2] === b2[2] && a2[3] === b2[3]; +} +function equals3(a2, b2) { + var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3]; + var b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a22 - b22) <= EPSILON * Math.max(1, Math.abs(a22), Math.abs(b22)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)); +} +var sub3 = subtract3; +var mul3 = multiply3; +var div2 = divide2; +var dist2 = distance2; +var sqrDist2 = squaredDistance2; +var len2 = length2; +var sqrLen2 = squaredLength2; +var forEach2 = (function() { + var vec = create3(); + return function(a2, stride, offset, count, fn, arg) { + var i2, l2; + if (!stride) { + stride = 4; + } + if (!offset) { + offset = 0; + } + if (count) { + l2 = Math.min(count * stride + offset, a2.length); + } else { + l2 = a2.length; + } + for (i2 = offset; i2 < l2; i2 += stride) { + vec[0] = a2[i2]; + vec[1] = a2[i2 + 1]; + vec[2] = a2[i2 + 2]; + vec[3] = a2[i2 + 3]; + fn(vec, vec, arg); + a2[i2] = vec[0]; + a2[i2 + 1] = vec[1]; + a2[i2 + 2] = vec[2]; + a2[i2 + 3] = vec[3]; + } + return a2; + }; +})(); + +// public/aesthetic.computer/dep/gl-matrix/quat.mjs +function create4() { + var out = new ARRAY_TYPE(4); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + } + out[3] = 1; + return out; +} +function identity2(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; +} +function setAxisAngle(out, axis, rad) { + rad = rad * 0.5; + var s2 = Math.sin(rad); + out[0] = s2 * axis[0]; + out[1] = s2 * axis[1]; + out[2] = s2 * axis[2]; + out[3] = Math.cos(rad); + return out; +} +function getAxisAngle(out_axis, q) { + var rad = Math.acos(q[3]) * 2; + var s2 = Math.sin(rad / 2); + if (s2 > EPSILON) { + out_axis[0] = q[0] / s2; + out_axis[1] = q[1] / s2; + out_axis[2] = q[2] / s2; + } else { + out_axis[0] = 1; + out_axis[1] = 0; + out_axis[2] = 0; + } + return rad; +} +function getAngle(a2, b2) { + var dotproduct = dot3(a2, b2); + return Math.acos(2 * dotproduct * dotproduct - 1); +} +function multiply4(out, a2, b2) { + var ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3]; + var bx = b2[0], by = b2[1], bz = b2[2], bw = b2[3]; + out[0] = ax * bw + aw * bx + ay * bz - az * by; + out[1] = ay * bw + aw * by + az * bx - ax * bz; + out[2] = az * bw + aw * bz + ax * by - ay * bx; + out[3] = aw * bw - ax * bx - ay * by - az * bz; + return out; +} +function rotateX2(out, a2, rad) { + rad *= 0.5; + var ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3]; + var bx = Math.sin(rad), bw = Math.cos(rad); + out[0] = ax * bw + aw * bx; + out[1] = ay * bw + az * bx; + out[2] = az * bw - ay * bx; + out[3] = aw * bw - ax * bx; + return out; +} +function rotateY2(out, a2, rad) { + rad *= 0.5; + var ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3]; + var by = Math.sin(rad), bw = Math.cos(rad); + out[0] = ax * bw - az * by; + out[1] = ay * bw + aw * by; + out[2] = az * bw + ax * by; + out[3] = aw * bw - ay * by; + return out; +} +function rotateZ2(out, a2, rad) { + rad *= 0.5; + var ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3]; + var bz = Math.sin(rad), bw = Math.cos(rad); + out[0] = ax * bw + ay * bz; + out[1] = ay * bw - ax * bz; + out[2] = az * bw + aw * bz; + out[3] = aw * bw - az * bz; + return out; +} +function calculateW(out, a2) { + var x = a2[0], y = a2[1], z = a2[2]; + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = Math.sqrt(Math.abs(1 - x * x - y * y - z * z)); + return out; +} +function exp(out, a2) { + var x = a2[0], y = a2[1], z = a2[2], w = a2[3]; + var r2 = Math.sqrt(x * x + y * y + z * z); + var et = Math.exp(w); + var s2 = r2 > 0 ? et * Math.sin(r2) / r2 : 0; + out[0] = x * s2; + out[1] = y * s2; + out[2] = z * s2; + out[3] = et * Math.cos(r2); + return out; +} +function ln(out, a2) { + var x = a2[0], y = a2[1], z = a2[2], w = a2[3]; + var r2 = Math.sqrt(x * x + y * y + z * z); + var t2 = r2 > 0 ? Math.atan2(r2, w) / r2 : 0; + out[0] = x * t2; + out[1] = y * t2; + out[2] = z * t2; + out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w); + return out; +} +function pow(out, a2, b2) { + ln(out, a2); + scale4(out, out, b2); + exp(out, out); + return out; +} +function slerp(out, a2, b2, t2) { + var ax = a2[0], ay = a2[1], az = a2[2], aw = a2[3]; + var bx = b2[0], by = b2[1], bz = b2[2], bw = b2[3]; + var omega, cosom, sinom, scale0, scale1; + cosom = ax * bx + ay * by + az * bz + aw * bw; + if (cosom < 0) { + cosom = -cosom; + bx = -bx; + by = -by; + bz = -bz; + bw = -bw; + } + if (1 - cosom > EPSILON) { + omega = Math.acos(cosom); + sinom = Math.sin(omega); + scale0 = Math.sin((1 - t2) * omega) / sinom; + scale1 = Math.sin(t2 * omega) / sinom; + } else { + scale0 = 1 - t2; + scale1 = t2; + } + out[0] = scale0 * ax + scale1 * bx; + out[1] = scale0 * ay + scale1 * by; + out[2] = scale0 * az + scale1 * bz; + out[3] = scale0 * aw + scale1 * bw; + return out; +} +function random3(out) { + var u1 = RANDOM(); + var u2 = RANDOM(); + var u3 = RANDOM(); + var sqrt1MinusU1 = Math.sqrt(1 - u1); + var sqrtU1 = Math.sqrt(u1); + out[0] = sqrt1MinusU1 * Math.sin(2 * Math.PI * u2); + out[1] = sqrt1MinusU1 * Math.cos(2 * Math.PI * u2); + out[2] = sqrtU1 * Math.sin(2 * Math.PI * u3); + out[3] = sqrtU1 * Math.cos(2 * Math.PI * u3); + return out; +} +function invert2(out, a2) { + var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3]; + var dot5 = a0 * a0 + a1 * a1 + a22 * a22 + a3 * a3; + var invDot = dot5 ? 1 / dot5 : 0; + out[0] = -a0 * invDot; + out[1] = -a1 * invDot; + out[2] = -a22 * invDot; + out[3] = a3 * invDot; + return out; +} +function conjugate(out, a2) { + out[0] = -a2[0]; + out[1] = -a2[1]; + out[2] = -a2[2]; + out[3] = a2[3]; + return out; +} +function fromMat3(out, m) { + var fTrace = m[0] + m[4] + m[8]; + var fRoot; + if (fTrace > 0) { + fRoot = Math.sqrt(fTrace + 1); + out[3] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; + out[0] = (m[5] - m[7]) * fRoot; + out[1] = (m[6] - m[2]) * fRoot; + out[2] = (m[1] - m[3]) * fRoot; + } else { + var i2 = 0; + if (m[4] > m[0]) i2 = 1; + if (m[8] > m[i2 * 3 + i2]) i2 = 2; + var j = (i2 + 1) % 3; + var k = (i2 + 2) % 3; + fRoot = Math.sqrt(m[i2 * 3 + i2] - m[j * 3 + j] - m[k * 3 + k] + 1); + out[i2] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; + out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot; + out[j] = (m[j * 3 + i2] + m[i2 * 3 + j]) * fRoot; + out[k] = (m[k * 3 + i2] + m[i2 * 3 + k]) * fRoot; + } + return out; +} +function fromEuler(out, x, y, z) { + var halfToRad = 0.5 * Math.PI / 180; + x *= halfToRad; + y *= halfToRad; + z *= halfToRad; + var sx = Math.sin(x); + var cx = Math.cos(x); + var sy = Math.sin(y); + var cy = Math.cos(y); + var sz = Math.sin(z); + var cz = Math.cos(z); + out[0] = sx * cy * cz - cx * sy * sz; + out[1] = cx * sy * cz + sx * cy * sz; + out[2] = cx * cy * sz - sx * sy * cz; + out[3] = cx * cy * cz + sx * sy * sz; + return out; +} +function str4(a2) { + return "quat(" + a2[0] + ", " + a2[1] + ", " + a2[2] + ", " + a2[3] + ")"; +} +var clone4 = clone3; +var fromValues4 = fromValues3; +var copy4 = copy3; +var set4 = set3; +var add4 = add3; +var mul4 = multiply4; +var scale4 = scale3; +var dot3 = dot2; +var lerp3 = lerp2; +var length3 = length2; +var len3 = length3; +var squaredLength3 = squaredLength2; +var sqrLen3 = squaredLength3; +var normalize3 = normalize2; +var exactEquals4 = exactEquals3; +var equals4 = equals3; +var rotationTo = (function() { + var tmpvec3 = create2(); + var xUnitVec3 = fromValues2(1, 0, 0); + var yUnitVec3 = fromValues2(0, 1, 0); + return function(out, a2, b2) { + var dot5 = dot(a2, b2); + if (dot5 < -0.999999) { + cross(tmpvec3, xUnitVec3, a2); + if (len(tmpvec3) < 1e-6) cross(tmpvec3, yUnitVec3, a2); + normalize(tmpvec3, tmpvec3); + setAxisAngle(out, tmpvec3, Math.PI); + return out; + } else if (dot5 > 0.999999) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; + } else { + cross(tmpvec3, a2, b2); + out[0] = tmpvec3[0]; + out[1] = tmpvec3[1]; + out[2] = tmpvec3[2]; + out[3] = 1 + dot5; + return normalize3(out, out); + } + }; +})(); +var sqlerp = (function() { + var temp1 = create4(); + var temp2 = create4(); + return function(out, a2, b2, c4, d2, t2) { + slerp(temp1, a2, d2, t2); + slerp(temp2, b2, c4, t2); + slerp(out, temp1, temp2, 2 * t2 * (1 - t2)); + return out; + }; +})(); +var setAxes = (function() { + var matr = create(); + return function(out, view, right, up) { + matr[0] = right[0]; + matr[3] = right[1]; + matr[6] = right[2]; + matr[1] = up[0]; + matr[4] = up[1]; + matr[7] = up[2]; + matr[2] = -view[0]; + matr[5] = -view[1]; + matr[8] = -view[2]; + return normalize3(out, fromMat3(out, matr)); + }; +})(); + +// public/aesthetic.computer/dep/gl-matrix/mat4.mjs +var mat4_exports = {}; +__export(mat4_exports, { + add: () => add5, + adjoint: () => adjoint2, + clone: () => clone5, + copy: () => copy5, + create: () => create5, + determinant: () => determinant2, + equals: () => equals5, + exactEquals: () => exactEquals5, + frob: () => frob2, + fromQuat: () => fromQuat3, + fromQuat2: () => fromQuat2, + fromRotation: () => fromRotation2, + fromRotationTranslation: () => fromRotationTranslation, + fromRotationTranslationScale: () => fromRotationTranslationScale, + fromRotationTranslationScaleOrigin: () => fromRotationTranslationScaleOrigin, + fromScaling: () => fromScaling2, + fromTranslation: () => fromTranslation2, + fromValues: () => fromValues5, + fromXRotation: () => fromXRotation, + fromYRotation: () => fromYRotation, + fromZRotation: () => fromZRotation, + frustum: () => frustum, + getRotation: () => getRotation, + getScaling: () => getScaling, + getTranslation: () => getTranslation, + identity: () => identity3, + invert: () => invert3, + lookAt: () => lookAt, + mul: () => mul5, + multiply: () => multiply5, + multiplyScalar: () => multiplyScalar2, + multiplyScalarAndAdd: () => multiplyScalarAndAdd2, + ortho: () => ortho, + orthoNO: () => orthoNO, + orthoZO: () => orthoZO, + perspective: () => perspective, + perspectiveFromFieldOfView: () => perspectiveFromFieldOfView, + perspectiveNO: () => perspectiveNO, + perspectiveZO: () => perspectiveZO, + rotate: () => rotate2, + rotateX: () => rotateX3, + rotateY: () => rotateY3, + rotateZ: () => rotateZ3, + scale: () => scale5, + set: () => set5, + str: () => str5, + sub: () => sub4, + subtract: () => subtract4, + targetTo: () => targetTo, + translate: () => translate2, + transpose: () => transpose2 +}); +function create5() { + var out = new ARRAY_TYPE(16); + if (ARRAY_TYPE != Float32Array) { + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + } + out[0] = 1; + out[5] = 1; + out[10] = 1; + out[15] = 1; + return out; +} +function clone5(a2) { + var out = new ARRAY_TYPE(16); + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[3]; + out[4] = a2[4]; + out[5] = a2[5]; + out[6] = a2[6]; + out[7] = a2[7]; + out[8] = a2[8]; + out[9] = a2[9]; + out[10] = a2[10]; + out[11] = a2[11]; + out[12] = a2[12]; + out[13] = a2[13]; + out[14] = a2[14]; + out[15] = a2[15]; + return out; +} +function copy5(out, a2) { + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[3]; + out[4] = a2[4]; + out[5] = a2[5]; + out[6] = a2[6]; + out[7] = a2[7]; + out[8] = a2[8]; + out[9] = a2[9]; + out[10] = a2[10]; + out[11] = a2[11]; + out[12] = a2[12]; + out[13] = a2[13]; + out[14] = a2[14]; + out[15] = a2[15]; + return out; +} +function fromValues5(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + var out = new ARRAY_TYPE(16); + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m03; + out[4] = m10; + out[5] = m11; + out[6] = m12; + out[7] = m13; + out[8] = m20; + out[9] = m21; + out[10] = m22; + out[11] = m23; + out[12] = m30; + out[13] = m31; + out[14] = m32; + out[15] = m33; + return out; +} +function set5(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m03; + out[4] = m10; + out[5] = m11; + out[6] = m12; + out[7] = m13; + out[8] = m20; + out[9] = m21; + out[10] = m22; + out[11] = m23; + out[12] = m30; + out[13] = m31; + out[14] = m32; + out[15] = m33; + return out; +} +function identity3(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function transpose2(out, a2) { + if (out === a2) { + var a01 = a2[1], a02 = a2[2], a03 = a2[3]; + var a12 = a2[6], a13 = a2[7]; + var a23 = a2[11]; + out[1] = a2[4]; + out[2] = a2[8]; + out[3] = a2[12]; + out[4] = a01; + out[6] = a2[9]; + out[7] = a2[13]; + out[8] = a02; + out[9] = a12; + out[11] = a2[14]; + out[12] = a03; + out[13] = a13; + out[14] = a23; + } else { + out[0] = a2[0]; + out[1] = a2[4]; + out[2] = a2[8]; + out[3] = a2[12]; + out[4] = a2[1]; + out[5] = a2[5]; + out[6] = a2[9]; + out[7] = a2[13]; + out[8] = a2[2]; + out[9] = a2[6]; + out[10] = a2[10]; + out[11] = a2[14]; + out[12] = a2[3]; + out[13] = a2[7]; + out[14] = a2[11]; + out[15] = a2[15]; + } + return out; +} +function invert3(out, a2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3]; + var a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7]; + var a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11]; + var a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1 / det; + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + return out; +} +function adjoint2(out, a2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3]; + var a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7]; + var a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11]; + var a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15]; + out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22); + out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); + out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12); + out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); + out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); + out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22); + out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); + out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12); + out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21); + out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); + out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11); + out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); + out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); + out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21); + out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); + out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11); + return out; +} +function determinant2(a2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3]; + var a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7]; + var a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11]; + var a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; +} +function multiply5(out, a2, b2) { + var a00 = a2[0], a01 = a2[1], a02 = a2[2], a03 = a2[3]; + var a10 = a2[4], a11 = a2[5], a12 = a2[6], a13 = a2[7]; + var a20 = a2[8], a21 = a2[9], a22 = a2[10], a23 = a2[11]; + var a30 = a2[12], a31 = a2[13], a32 = a2[14], a33 = a2[15]; + var b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3]; + out[0] = b0 * a00 + b1 * a10 + b22 * a20 + b3 * a30; + out[1] = b0 * a01 + b1 * a11 + b22 * a21 + b3 * a31; + out[2] = b0 * a02 + b1 * a12 + b22 * a22 + b3 * a32; + out[3] = b0 * a03 + b1 * a13 + b22 * a23 + b3 * a33; + b0 = b2[4]; + b1 = b2[5]; + b22 = b2[6]; + b3 = b2[7]; + out[4] = b0 * a00 + b1 * a10 + b22 * a20 + b3 * a30; + out[5] = b0 * a01 + b1 * a11 + b22 * a21 + b3 * a31; + out[6] = b0 * a02 + b1 * a12 + b22 * a22 + b3 * a32; + out[7] = b0 * a03 + b1 * a13 + b22 * a23 + b3 * a33; + b0 = b2[8]; + b1 = b2[9]; + b22 = b2[10]; + b3 = b2[11]; + out[8] = b0 * a00 + b1 * a10 + b22 * a20 + b3 * a30; + out[9] = b0 * a01 + b1 * a11 + b22 * a21 + b3 * a31; + out[10] = b0 * a02 + b1 * a12 + b22 * a22 + b3 * a32; + out[11] = b0 * a03 + b1 * a13 + b22 * a23 + b3 * a33; + b0 = b2[12]; + b1 = b2[13]; + b22 = b2[14]; + b3 = b2[15]; + out[12] = b0 * a00 + b1 * a10 + b22 * a20 + b3 * a30; + out[13] = b0 * a01 + b1 * a11 + b22 * a21 + b3 * a31; + out[14] = b0 * a02 + b1 * a12 + b22 * a22 + b3 * a32; + out[15] = b0 * a03 + b1 * a13 + b22 * a23 + b3 * a33; + return out; +} +function translate2(out, a2, v2) { + var x = v2[0], y = v2[1], z = v2[2]; + var a00, a01, a02, a03; + var a10, a11, a12, a13; + var a20, a21, a22, a23; + if (a2 === out) { + out[12] = a2[0] * x + a2[4] * y + a2[8] * z + a2[12]; + out[13] = a2[1] * x + a2[5] * y + a2[9] * z + a2[13]; + out[14] = a2[2] * x + a2[6] * y + a2[10] * z + a2[14]; + out[15] = a2[3] * x + a2[7] * y + a2[11] * z + a2[15]; + } else { + a00 = a2[0]; + a01 = a2[1]; + a02 = a2[2]; + a03 = a2[3]; + a10 = a2[4]; + a11 = a2[5]; + a12 = a2[6]; + a13 = a2[7]; + a20 = a2[8]; + a21 = a2[9]; + a22 = a2[10]; + a23 = a2[11]; + out[0] = a00; + out[1] = a01; + out[2] = a02; + out[3] = a03; + out[4] = a10; + out[5] = a11; + out[6] = a12; + out[7] = a13; + out[8] = a20; + out[9] = a21; + out[10] = a22; + out[11] = a23; + out[12] = a00 * x + a10 * y + a20 * z + a2[12]; + out[13] = a01 * x + a11 * y + a21 * z + a2[13]; + out[14] = a02 * x + a12 * y + a22 * z + a2[14]; + out[15] = a03 * x + a13 * y + a23 * z + a2[15]; + } + return out; +} +function scale5(out, a2, v2) { + var x = v2[0], y = v2[1], z = v2[2]; + out[0] = a2[0] * x; + out[1] = a2[1] * x; + out[2] = a2[2] * x; + out[3] = a2[3] * x; + out[4] = a2[4] * y; + out[5] = a2[5] * y; + out[6] = a2[6] * y; + out[7] = a2[7] * y; + out[8] = a2[8] * z; + out[9] = a2[9] * z; + out[10] = a2[10] * z; + out[11] = a2[11] * z; + out[12] = a2[12]; + out[13] = a2[13]; + out[14] = a2[14]; + out[15] = a2[15]; + return out; +} +function rotate2(out, a2, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2]; + var len5 = Math.hypot(x, y, z); + var s2, c4, t2; + var a00, a01, a02, a03; + var a10, a11, a12, a13; + var a20, a21, a22, a23; + var b00, b01, b02; + var b10, b11, b12; + var b20, b21, b22; + if (len5 < EPSILON) { + return null; + } + len5 = 1 / len5; + x *= len5; + y *= len5; + z *= len5; + s2 = Math.sin(rad); + c4 = Math.cos(rad); + t2 = 1 - c4; + a00 = a2[0]; + a01 = a2[1]; + a02 = a2[2]; + a03 = a2[3]; + a10 = a2[4]; + a11 = a2[5]; + a12 = a2[6]; + a13 = a2[7]; + a20 = a2[8]; + a21 = a2[9]; + a22 = a2[10]; + a23 = a2[11]; + b00 = x * x * t2 + c4; + b01 = y * x * t2 + z * s2; + b02 = z * x * t2 - y * s2; + b10 = x * y * t2 - z * s2; + b11 = y * y * t2 + c4; + b12 = z * y * t2 + x * s2; + b20 = x * z * t2 + y * s2; + b21 = y * z * t2 - x * s2; + b22 = z * z * t2 + c4; + out[0] = a00 * b00 + a10 * b01 + a20 * b02; + out[1] = a01 * b00 + a11 * b01 + a21 * b02; + out[2] = a02 * b00 + a12 * b01 + a22 * b02; + out[3] = a03 * b00 + a13 * b01 + a23 * b02; + out[4] = a00 * b10 + a10 * b11 + a20 * b12; + out[5] = a01 * b10 + a11 * b11 + a21 * b12; + out[6] = a02 * b10 + a12 * b11 + a22 * b12; + out[7] = a03 * b10 + a13 * b11 + a23 * b12; + out[8] = a00 * b20 + a10 * b21 + a20 * b22; + out[9] = a01 * b20 + a11 * b21 + a21 * b22; + out[10] = a02 * b20 + a12 * b21 + a22 * b22; + out[11] = a03 * b20 + a13 * b21 + a23 * b22; + if (a2 !== out) { + out[12] = a2[12]; + out[13] = a2[13]; + out[14] = a2[14]; + out[15] = a2[15]; + } + return out; +} +function rotateX3(out, a2, rad) { + var s2 = Math.sin(rad); + var c4 = Math.cos(rad); + var a10 = a2[4]; + var a11 = a2[5]; + var a12 = a2[6]; + var a13 = a2[7]; + var a20 = a2[8]; + var a21 = a2[9]; + var a22 = a2[10]; + var a23 = a2[11]; + if (a2 !== out) { + out[0] = a2[0]; + out[1] = a2[1]; + out[2] = a2[2]; + out[3] = a2[3]; + out[12] = a2[12]; + out[13] = a2[13]; + out[14] = a2[14]; + out[15] = a2[15]; + } + out[4] = a10 * c4 + a20 * s2; + out[5] = a11 * c4 + a21 * s2; + out[6] = a12 * c4 + a22 * s2; + out[7] = a13 * c4 + a23 * s2; + out[8] = a20 * c4 - a10 * s2; + out[9] = a21 * c4 - a11 * s2; + out[10] = a22 * c4 - a12 * s2; + out[11] = a23 * c4 - a13 * s2; + return out; +} +function rotateY3(out, a2, rad) { + var s2 = Math.sin(rad); + var c4 = Math.cos(rad); + var a00 = a2[0]; + var a01 = a2[1]; + var a02 = a2[2]; + var a03 = a2[3]; + var a20 = a2[8]; + var a21 = a2[9]; + var a22 = a2[10]; + var a23 = a2[11]; + if (a2 !== out) { + out[4] = a2[4]; + out[5] = a2[5]; + out[6] = a2[6]; + out[7] = a2[7]; + out[12] = a2[12]; + out[13] = a2[13]; + out[14] = a2[14]; + out[15] = a2[15]; + } + out[0] = a00 * c4 - a20 * s2; + out[1] = a01 * c4 - a21 * s2; + out[2] = a02 * c4 - a22 * s2; + out[3] = a03 * c4 - a23 * s2; + out[8] = a00 * s2 + a20 * c4; + out[9] = a01 * s2 + a21 * c4; + out[10] = a02 * s2 + a22 * c4; + out[11] = a03 * s2 + a23 * c4; + return out; +} +function rotateZ3(out, a2, rad) { + var s2 = Math.sin(rad); + var c4 = Math.cos(rad); + var a00 = a2[0]; + var a01 = a2[1]; + var a02 = a2[2]; + var a03 = a2[3]; + var a10 = a2[4]; + var a11 = a2[5]; + var a12 = a2[6]; + var a13 = a2[7]; + if (a2 !== out) { + out[8] = a2[8]; + out[9] = a2[9]; + out[10] = a2[10]; + out[11] = a2[11]; + out[12] = a2[12]; + out[13] = a2[13]; + out[14] = a2[14]; + out[15] = a2[15]; + } + out[0] = a00 * c4 + a10 * s2; + out[1] = a01 * c4 + a11 * s2; + out[2] = a02 * c4 + a12 * s2; + out[3] = a03 * c4 + a13 * s2; + out[4] = a10 * c4 - a00 * s2; + out[5] = a11 * c4 - a01 * s2; + out[6] = a12 * c4 - a02 * s2; + out[7] = a13 * c4 - a03 * s2; + return out; +} +function fromTranslation2(out, v2) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = v2[0]; + out[13] = v2[1]; + out[14] = v2[2]; + out[15] = 1; + return out; +} +function fromScaling2(out, v2) { + out[0] = v2[0]; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = v2[1]; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = v2[2]; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromRotation2(out, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2]; + var len5 = Math.hypot(x, y, z); + var s2, c4, t2; + if (len5 < EPSILON) { + return null; + } + len5 = 1 / len5; + x *= len5; + y *= len5; + z *= len5; + s2 = Math.sin(rad); + c4 = Math.cos(rad); + t2 = 1 - c4; + out[0] = x * x * t2 + c4; + out[1] = y * x * t2 + z * s2; + out[2] = z * x * t2 - y * s2; + out[3] = 0; + out[4] = x * y * t2 - z * s2; + out[5] = y * y * t2 + c4; + out[6] = z * y * t2 + x * s2; + out[7] = 0; + out[8] = x * z * t2 + y * s2; + out[9] = y * z * t2 - x * s2; + out[10] = z * z * t2 + c4; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromXRotation(out, rad) { + var s2 = Math.sin(rad); + var c4 = Math.cos(rad); + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = c4; + out[6] = s2; + out[7] = 0; + out[8] = 0; + out[9] = -s2; + out[10] = c4; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromYRotation(out, rad) { + var s2 = Math.sin(rad); + var c4 = Math.cos(rad); + out[0] = c4; + out[1] = 0; + out[2] = -s2; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = s2; + out[9] = 0; + out[10] = c4; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromZRotation(out, rad) { + var s2 = Math.sin(rad); + var c4 = Math.cos(rad); + out[0] = c4; + out[1] = s2; + out[2] = 0; + out[3] = 0; + out[4] = -s2; + out[5] = c4; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromRotationTranslation(out, q, v2) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - (yy + zz); + out[1] = xy + wz; + out[2] = xz - wy; + out[3] = 0; + out[4] = xy - wz; + out[5] = 1 - (xx + zz); + out[6] = yz + wx; + out[7] = 0; + out[8] = xz + wy; + out[9] = yz - wx; + out[10] = 1 - (xx + yy); + out[11] = 0; + out[12] = v2[0]; + out[13] = v2[1]; + out[14] = v2[2]; + out[15] = 1; + return out; +} +function fromQuat2(out, a2) { + var translation = new ARRAY_TYPE(3); + var bx = -a2[0], by = -a2[1], bz = -a2[2], bw = a2[3], ax = a2[4], ay = a2[5], az = a2[6], aw = a2[7]; + var magnitude = bx * bx + by * by + bz * bz + bw * bw; + if (magnitude > 0) { + translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude; + translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude; + translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude; + } else { + translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2; + translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2; + translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2; + } + fromRotationTranslation(out, a2, translation); + return out; +} +function getTranslation(out, mat) { + out[0] = mat[12]; + out[1] = mat[13]; + out[2] = mat[14]; + return out; +} +function getScaling(out, mat) { + var m11 = mat[0]; + var m12 = mat[1]; + var m13 = mat[2]; + var m21 = mat[4]; + var m22 = mat[5]; + var m23 = mat[6]; + var m31 = mat[8]; + var m32 = mat[9]; + var m33 = mat[10]; + out[0] = Math.hypot(m11, m12, m13); + out[1] = Math.hypot(m21, m22, m23); + out[2] = Math.hypot(m31, m32, m33); + return out; +} +function getRotation(out, mat) { + var scaling = new ARRAY_TYPE(3); + getScaling(scaling, mat); + var is1 = 1 / scaling[0]; + var is2 = 1 / scaling[1]; + var is3 = 1 / scaling[2]; + var sm11 = mat[0] * is1; + var sm12 = mat[1] * is2; + var sm13 = mat[2] * is3; + var sm21 = mat[4] * is1; + var sm22 = mat[5] * is2; + var sm23 = mat[6] * is3; + var sm31 = mat[8] * is1; + var sm32 = mat[9] * is2; + var sm33 = mat[10] * is3; + var trace = sm11 + sm22 + sm33; + var S = 0; + if (trace > 0) { + S = Math.sqrt(trace + 1) * 2; + out[3] = 0.25 * S; + out[0] = (sm23 - sm32) / S; + out[1] = (sm31 - sm13) / S; + out[2] = (sm12 - sm21) / S; + } else if (sm11 > sm22 && sm11 > sm33) { + S = Math.sqrt(1 + sm11 - sm22 - sm33) * 2; + out[3] = (sm23 - sm32) / S; + out[0] = 0.25 * S; + out[1] = (sm12 + sm21) / S; + out[2] = (sm31 + sm13) / S; + } else if (sm22 > sm33) { + S = Math.sqrt(1 + sm22 - sm11 - sm33) * 2; + out[3] = (sm31 - sm13) / S; + out[0] = (sm12 + sm21) / S; + out[1] = 0.25 * S; + out[2] = (sm23 + sm32) / S; + } else { + S = Math.sqrt(1 + sm33 - sm11 - sm22) * 2; + out[3] = (sm12 - sm21) / S; + out[0] = (sm31 + sm13) / S; + out[1] = (sm23 + sm32) / S; + out[2] = 0.25 * S; + } + return out; +} +function fromRotationTranslationScale(out, q, v2, s2) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s2[0]; + var sy = s2[1]; + var sz = s2[2]; + out[0] = (1 - (yy + zz)) * sx; + out[1] = (xy + wz) * sx; + out[2] = (xz - wy) * sx; + out[3] = 0; + out[4] = (xy - wz) * sy; + out[5] = (1 - (xx + zz)) * sy; + out[6] = (yz + wx) * sy; + out[7] = 0; + out[8] = (xz + wy) * sz; + out[9] = (yz - wx) * sz; + out[10] = (1 - (xx + yy)) * sz; + out[11] = 0; + out[12] = v2[0]; + out[13] = v2[1]; + out[14] = v2[2]; + out[15] = 1; + return out; +} +function fromRotationTranslationScaleOrigin(out, q, v2, s2, o2) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s2[0]; + var sy = s2[1]; + var sz = s2[2]; + var ox = o2[0]; + var oy = o2[1]; + var oz = o2[2]; + var out0 = (1 - (yy + zz)) * sx; + var out1 = (xy + wz) * sx; + var out2 = (xz - wy) * sx; + var out4 = (xy - wz) * sy; + var out5 = (1 - (xx + zz)) * sy; + var out6 = (yz + wx) * sy; + var out8 = (xz + wy) * sz; + var out9 = (yz - wx) * sz; + var out10 = (1 - (xx + yy)) * sz; + out[0] = out0; + out[1] = out1; + out[2] = out2; + out[3] = 0; + out[4] = out4; + out[5] = out5; + out[6] = out6; + out[7] = 0; + out[8] = out8; + out[9] = out9; + out[10] = out10; + out[11] = 0; + out[12] = v2[0] + ox - (out0 * ox + out4 * oy + out8 * oz); + out[13] = v2[1] + oy - (out1 * ox + out5 * oy + out9 * oz); + out[14] = v2[2] + oz - (out2 * ox + out6 * oy + out10 * oz); + out[15] = 1; + return out; +} +function fromQuat3(out, q) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - yy - zz; + out[1] = yx + wz; + out[2] = zx - wy; + out[3] = 0; + out[4] = yx - wz; + out[5] = 1 - xx - zz; + out[6] = zy + wx; + out[7] = 0; + out[8] = zx + wy; + out[9] = zy - wx; + out[10] = 1 - xx - yy; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function frustum(out, left, right, bottom, top, near, far) { + var rl = 1 / (right - left); + var tb = 1 / (top - bottom); + var nf = 1 / (near - far); + out[0] = near * 2 * rl; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = near * 2 * tb; + out[6] = 0; + out[7] = 0; + out[8] = (right + left) * rl; + out[9] = (top + bottom) * tb; + out[10] = (far + near) * nf; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = far * near * 2 * nf; + out[15] = 0; + return out; +} +function perspectiveNO(out, fovy, aspect, near, far) { + var f2 = 1 / Math.tan(fovy / 2), nf; + out[0] = f2 / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f2; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[15] = 0; + if (far != null && far !== Infinity) { + nf = 1 / (near - far); + out[10] = (far + near) * nf; + out[14] = 2 * far * near * nf; + } else { + out[10] = -1; + out[14] = -2 * near; + } + return out; +} +var perspective = perspectiveNO; +function perspectiveZO(out, fovy, aspect, near, far) { + var f2 = 1 / Math.tan(fovy / 2), nf; + out[0] = f2 / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f2; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[15] = 0; + if (far != null && far !== Infinity) { + nf = 1 / (near - far); + out[10] = far * nf; + out[14] = far * near * nf; + } else { + out[10] = -1; + out[14] = -near; + } + return out; +} +function perspectiveFromFieldOfView(out, fov, near, far) { + var upTan = Math.tan(fov.upDegrees * Math.PI / 180); + var downTan = Math.tan(fov.downDegrees * Math.PI / 180); + var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180); + var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180); + var xScale = 2 / (leftTan + rightTan); + var yScale = 2 / (upTan + downTan); + out[0] = xScale; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = yScale; + out[6] = 0; + out[7] = 0; + out[8] = -((leftTan - rightTan) * xScale * 0.5); + out[9] = (upTan - downTan) * yScale * 0.5; + out[10] = far / (near - far); + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = far * near / (near - far); + out[15] = 0; + return out; +} +function orthoNO(out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right); + var bt = 1 / (bottom - top); + var nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 2 * nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = (far + near) * nf; + out[15] = 1; + return out; +} +var ortho = orthoNO; +function orthoZO(out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right); + var bt = 1 / (bottom - top); + var nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = near * nf; + out[15] = 1; + return out; +} +function lookAt(out, eye, center, up) { + var x0, x1, x2, y0, y1, y2, z0, z1, z2, len5; + var eyex = eye[0]; + var eyey = eye[1]; + var eyez = eye[2]; + var upx = up[0]; + var upy = up[1]; + var upz = up[2]; + var centerx = center[0]; + var centery = center[1]; + var centerz = center[2]; + if (Math.abs(eyex - centerx) < EPSILON && Math.abs(eyey - centery) < EPSILON && Math.abs(eyez - centerz) < EPSILON) { + return identity3(out); + } + z0 = eyex - centerx; + z1 = eyey - centery; + z2 = eyez - centerz; + len5 = 1 / Math.hypot(z0, z1, z2); + z0 *= len5; + z1 *= len5; + z2 *= len5; + x0 = upy * z2 - upz * z1; + x1 = upz * z0 - upx * z2; + x2 = upx * z1 - upy * z0; + len5 = Math.hypot(x0, x1, x2); + if (!len5) { + x0 = 0; + x1 = 0; + x2 = 0; + } else { + len5 = 1 / len5; + x0 *= len5; + x1 *= len5; + x2 *= len5; + } + y0 = z1 * x2 - z2 * x1; + y1 = z2 * x0 - z0 * x2; + y2 = z0 * x1 - z1 * x0; + len5 = Math.hypot(y0, y1, y2); + if (!len5) { + y0 = 0; + y1 = 0; + y2 = 0; + } else { + len5 = 1 / len5; + y0 *= len5; + y1 *= len5; + y2 *= len5; + } + out[0] = x0; + out[1] = y0; + out[2] = z0; + out[3] = 0; + out[4] = x1; + out[5] = y1; + out[6] = z1; + out[7] = 0; + out[8] = x2; + out[9] = y2; + out[10] = z2; + out[11] = 0; + out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + out[15] = 1; + return out; +} +function targetTo(out, eye, target, up) { + var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2]; + var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2]; + var len5 = z0 * z0 + z1 * z1 + z2 * z2; + if (len5 > 0) { + len5 = 1 / Math.sqrt(len5); + z0 *= len5; + z1 *= len5; + z2 *= len5; + } + var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0; + len5 = x0 * x0 + x1 * x1 + x2 * x2; + if (len5 > 0) { + len5 = 1 / Math.sqrt(len5); + x0 *= len5; + x1 *= len5; + x2 *= len5; + } + out[0] = x0; + out[1] = x1; + out[2] = x2; + out[3] = 0; + out[4] = z1 * x2 - z2 * x1; + out[5] = z2 * x0 - z0 * x2; + out[6] = z0 * x1 - z1 * x0; + out[7] = 0; + out[8] = z0; + out[9] = z1; + out[10] = z2; + out[11] = 0; + out[12] = eyex; + out[13] = eyey; + out[14] = eyez; + out[15] = 1; + return out; +} +function str5(a2) { + return "mat4(" + a2[0] + ", " + a2[1] + ", " + a2[2] + ", " + a2[3] + ", " + a2[4] + ", " + a2[5] + ", " + a2[6] + ", " + a2[7] + ", " + a2[8] + ", " + a2[9] + ", " + a2[10] + ", " + a2[11] + ", " + a2[12] + ", " + a2[13] + ", " + a2[14] + ", " + a2[15] + ")"; +} +function frob2(a2) { + return Math.hypot( + a2[0], + a2[1], + a2[2], + a2[3], + a2[4], + a2[5], + a2[6], + a2[7], + a2[8], + a2[9], + a2[10], + a2[11], + a2[12], + a2[13], + a2[14], + a2[15] + ); +} +function add5(out, a2, b2) { + out[0] = a2[0] + b2[0]; + out[1] = a2[1] + b2[1]; + out[2] = a2[2] + b2[2]; + out[3] = a2[3] + b2[3]; + out[4] = a2[4] + b2[4]; + out[5] = a2[5] + b2[5]; + out[6] = a2[6] + b2[6]; + out[7] = a2[7] + b2[7]; + out[8] = a2[8] + b2[8]; + out[9] = a2[9] + b2[9]; + out[10] = a2[10] + b2[10]; + out[11] = a2[11] + b2[11]; + out[12] = a2[12] + b2[12]; + out[13] = a2[13] + b2[13]; + out[14] = a2[14] + b2[14]; + out[15] = a2[15] + b2[15]; + return out; +} +function subtract4(out, a2, b2) { + out[0] = a2[0] - b2[0]; + out[1] = a2[1] - b2[1]; + out[2] = a2[2] - b2[2]; + out[3] = a2[3] - b2[3]; + out[4] = a2[4] - b2[4]; + out[5] = a2[5] - b2[5]; + out[6] = a2[6] - b2[6]; + out[7] = a2[7] - b2[7]; + out[8] = a2[8] - b2[8]; + out[9] = a2[9] - b2[9]; + out[10] = a2[10] - b2[10]; + out[11] = a2[11] - b2[11]; + out[12] = a2[12] - b2[12]; + out[13] = a2[13] - b2[13]; + out[14] = a2[14] - b2[14]; + out[15] = a2[15] - b2[15]; + return out; +} +function multiplyScalar2(out, a2, b2) { + out[0] = a2[0] * b2; + out[1] = a2[1] * b2; + out[2] = a2[2] * b2; + out[3] = a2[3] * b2; + out[4] = a2[4] * b2; + out[5] = a2[5] * b2; + out[6] = a2[6] * b2; + out[7] = a2[7] * b2; + out[8] = a2[8] * b2; + out[9] = a2[9] * b2; + out[10] = a2[10] * b2; + out[11] = a2[11] * b2; + out[12] = a2[12] * b2; + out[13] = a2[13] * b2; + out[14] = a2[14] * b2; + out[15] = a2[15] * b2; + return out; +} +function multiplyScalarAndAdd2(out, a2, b2, scale7) { + out[0] = a2[0] + b2[0] * scale7; + out[1] = a2[1] + b2[1] * scale7; + out[2] = a2[2] + b2[2] * scale7; + out[3] = a2[3] + b2[3] * scale7; + out[4] = a2[4] + b2[4] * scale7; + out[5] = a2[5] + b2[5] * scale7; + out[6] = a2[6] + b2[6] * scale7; + out[7] = a2[7] + b2[7] * scale7; + out[8] = a2[8] + b2[8] * scale7; + out[9] = a2[9] + b2[9] * scale7; + out[10] = a2[10] + b2[10] * scale7; + out[11] = a2[11] + b2[11] * scale7; + out[12] = a2[12] + b2[12] * scale7; + out[13] = a2[13] + b2[13] * scale7; + out[14] = a2[14] + b2[14] * scale7; + out[15] = a2[15] + b2[15] * scale7; + return out; +} +function exactEquals5(a2, b2) { + return a2[0] === b2[0] && a2[1] === b2[1] && a2[2] === b2[2] && a2[3] === b2[3] && a2[4] === b2[4] && a2[5] === b2[5] && a2[6] === b2[6] && a2[7] === b2[7] && a2[8] === b2[8] && a2[9] === b2[9] && a2[10] === b2[10] && a2[11] === b2[11] && a2[12] === b2[12] && a2[13] === b2[13] && a2[14] === b2[14] && a2[15] === b2[15]; +} +function equals5(a2, b2) { + var a0 = a2[0], a1 = a2[1], a22 = a2[2], a3 = a2[3]; + var a4 = a2[4], a5 = a2[5], a6 = a2[6], a7 = a2[7]; + var a8 = a2[8], a9 = a2[9], a10 = a2[10], a11 = a2[11]; + var a12 = a2[12], a13 = a2[13], a14 = a2[14], a15 = a2[15]; + var b0 = b2[0], b1 = b2[1], b22 = b2[2], b3 = b2[3]; + var b4 = b2[4], b5 = b2[5], b6 = b2[6], b7 = b2[7]; + var b8 = b2[8], b9 = b2[9], b10 = b2[10], b11 = b2[11]; + var b12 = b2[12], b13 = b2[13], b14 = b2[14], b15 = b2[15]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a22 - b22) <= EPSILON * Math.max(1, Math.abs(a22), Math.abs(b22)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= EPSILON * Math.max(1, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= EPSILON * Math.max(1, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= EPSILON * Math.max(1, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= EPSILON * Math.max(1, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= EPSILON * Math.max(1, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= EPSILON * Math.max(1, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= EPSILON * Math.max(1, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= EPSILON * Math.max(1, Math.abs(a15), Math.abs(b15)); +} +var mul5 = multiply5; +var sub4 = subtract4; + +// public/aesthetic.computer/dep/gl-matrix/vec2.mjs +var vec2_exports = {}; +__export(vec2_exports, { + add: () => add6, + angle: () => angle2, + ceil: () => ceil3, + clone: () => clone6, + copy: () => copy6, + create: () => create6, + cross: () => cross3, + dist: () => dist3, + distance: () => distance3, + div: () => div3, + divide: () => divide3, + dot: () => dot4, + equals: () => equals6, + exactEquals: () => exactEquals6, + floor: () => floor3, + forEach: () => forEach3, + fromValues: () => fromValues6, + inverse: () => inverse3, + len: () => len4, + length: () => length4, + lerp: () => lerp4, + max: () => max3, + min: () => min3, + mul: () => mul6, + multiply: () => multiply6, + negate: () => negate3, + normalize: () => normalize4, + random: () => random4, + rotate: () => rotate3, + round: () => round3, + scale: () => scale6, + scaleAndAdd: () => scaleAndAdd3, + set: () => set6, + sqrDist: () => sqrDist3, + sqrLen: () => sqrLen4, + squaredDistance: () => squaredDistance3, + squaredLength: () => squaredLength4, + str: () => str6, + sub: () => sub5, + subtract: () => subtract5, + transformMat2: () => transformMat2, + transformMat2d: () => transformMat2d, + transformMat3: () => transformMat32, + transformMat4: () => transformMat43, + zero: () => zero3 +}); +function create6() { + var out = new ARRAY_TYPE(2); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + } + return out; +} +function clone6(a2) { + var out = new ARRAY_TYPE(2); + out[0] = a2[0]; + out[1] = a2[1]; + return out; +} +function fromValues6(x, y) { + var out = new ARRAY_TYPE(2); + out[0] = x; + out[1] = y; + return out; +} +function copy6(out, a2) { + out[0] = a2[0]; + out[1] = a2[1]; + return out; +} +function set6(out, x, y) { + out[0] = x; + out[1] = y; + return out; +} +function add6(out, a2, b2) { + out[0] = a2[0] + b2[0]; + out[1] = a2[1] + b2[1]; + return out; +} +function subtract5(out, a2, b2) { + out[0] = a2[0] - b2[0]; + out[1] = a2[1] - b2[1]; + return out; +} +function multiply6(out, a2, b2) { + out[0] = a2[0] * b2[0]; + out[1] = a2[1] * b2[1]; + return out; +} +function divide3(out, a2, b2) { + out[0] = a2[0] / b2[0]; + out[1] = a2[1] / b2[1]; + return out; +} +function ceil3(out, a2) { + out[0] = Math.ceil(a2[0]); + out[1] = Math.ceil(a2[1]); + return out; +} +function floor3(out, a2) { + out[0] = Math.floor(a2[0]); + out[1] = Math.floor(a2[1]); + return out; +} +function min3(out, a2, b2) { + out[0] = Math.min(a2[0], b2[0]); + out[1] = Math.min(a2[1], b2[1]); + return out; +} +function max3(out, a2, b2) { + out[0] = Math.max(a2[0], b2[0]); + out[1] = Math.max(a2[1], b2[1]); + return out; +} +function round3(out, a2) { + out[0] = Math.round(a2[0]); + out[1] = Math.round(a2[1]); + return out; +} +function scale6(out, a2, b2) { + out[0] = a2[0] * b2; + out[1] = a2[1] * b2; + return out; +} +function scaleAndAdd3(out, a2, b2, scale7) { + out[0] = a2[0] + b2[0] * scale7; + out[1] = a2[1] + b2[1] * scale7; + return out; +} +function distance3(a2, b2) { + var x = b2[0] - a2[0], y = b2[1] - a2[1]; + return Math.hypot(x, y); +} +function squaredDistance3(a2, b2) { + var x = b2[0] - a2[0], y = b2[1] - a2[1]; + return x * x + y * y; +} +function length4(a2) { + var x = a2[0], y = a2[1]; + return Math.hypot(x, y); +} +function squaredLength4(a2) { + var x = a2[0], y = a2[1]; + return x * x + y * y; +} +function negate3(out, a2) { + out[0] = -a2[0]; + out[1] = -a2[1]; + return out; +} +function inverse3(out, a2) { + out[0] = 1 / a2[0]; + out[1] = 1 / a2[1]; + return out; +} +function normalize4(out, a2) { + var x = a2[0], y = a2[1]; + var len5 = x * x + y * y; + if (len5 > 0) { + len5 = 1 / Math.sqrt(len5); + } + out[0] = a2[0] * len5; + out[1] = a2[1] * len5; + return out; +} +function dot4(a2, b2) { + return a2[0] * b2[0] + a2[1] * b2[1]; +} +function cross3(out, a2, b2) { + var z = a2[0] * b2[1] - a2[1] * b2[0]; + out[0] = out[1] = 0; + out[2] = z; + return out; +} +function lerp4(out, a2, b2, t2) { + var ax = a2[0], ay = a2[1]; + out[0] = ax + t2 * (b2[0] - ax); + out[1] = ay + t2 * (b2[1] - ay); + return out; +} +function random4(out, scale7) { + scale7 = scale7 || 1; + var r2 = RANDOM() * 2 * Math.PI; + out[0] = Math.cos(r2) * scale7; + out[1] = Math.sin(r2) * scale7; + return out; +} +function transformMat2(out, a2, m) { + var x = a2[0], y = a2[1]; + out[0] = m[0] * x + m[2] * y; + out[1] = m[1] * x + m[3] * y; + return out; +} +function transformMat2d(out, a2, m) { + var x = a2[0], y = a2[1]; + out[0] = m[0] * x + m[2] * y + m[4]; + out[1] = m[1] * x + m[3] * y + m[5]; + return out; +} +function transformMat32(out, a2, m) { + var x = a2[0], y = a2[1]; + out[0] = m[0] * x + m[3] * y + m[6]; + out[1] = m[1] * x + m[4] * y + m[7]; + return out; +} +function transformMat43(out, a2, m) { + var x = a2[0]; + var y = a2[1]; + out[0] = m[0] * x + m[4] * y + m[12]; + out[1] = m[1] * x + m[5] * y + m[13]; + return out; +} +function rotate3(out, a2, b2, rad) { + var p0 = a2[0] - b2[0], p1 = a2[1] - b2[1], sinC = Math.sin(rad), cosC = Math.cos(rad); + out[0] = p0 * cosC - p1 * sinC + b2[0]; + out[1] = p0 * sinC + p1 * cosC + b2[1]; + return out; +} +function angle2(a2, b2) { + var x1 = a2[0], y1 = a2[1], x2 = b2[0], y2 = b2[1], mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), cosine = mag && (x1 * x2 + y1 * y2) / mag; + return Math.acos(Math.min(Math.max(cosine, -1), 1)); +} +function zero3(out) { + out[0] = 0; + out[1] = 0; + return out; +} +function str6(a2) { + return "vec2(" + a2[0] + ", " + a2[1] + ")"; +} +function exactEquals6(a2, b2) { + return a2[0] === b2[0] && a2[1] === b2[1]; +} +function equals6(a2, b2) { + var a0 = a2[0], a1 = a2[1]; + var b0 = b2[0], b1 = b2[1]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)); +} +var len4 = length4; +var sub5 = subtract5; +var mul6 = multiply6; +var div3 = divide3; +var dist3 = distance3; +var sqrDist3 = squaredDistance3; +var sqrLen4 = squaredLength4; +var forEach3 = (function() { + var vec = create6(); + return function(a2, stride, offset, count, fn, arg) { + var i2, l2; + if (!stride) { + stride = 2; + } + if (!offset) { + offset = 0; + } + if (count) { + l2 = Math.min(count * stride + offset, a2.length); + } else { + l2 = a2.length; + } + for (i2 = offset; i2 < l2; i2 += stride) { + vec[0] = a2[i2]; + vec[1] = a2[i2 + 1]; + fn(vec, vec, arg); + a2[i2] = vec[0]; + a2[i2 + 1] = vec[1]; + } + return a2; + }; +})(); + +// public/aesthetic.computer/lib/num.mjs +var { + abs, + round: round4, + floor: floor4, + ceil: ceil4, + random: random5, + PI, + min: min4, + max: max4, + sqrt, + pow: pow2, + atan2, + sin, + cos +} = Math; +var p2 = { + // Turn two values into an {x, y} point. + of: function(x, y) { + return { x, y }; + }, + // Get the length of the point as a vector. + len: function(pA) { + return Math.hypot(pA.x, pA.y); + }, + // Normalize a vector to have a length of 1 + norm: function(p) { + let len5 = this.len(p); + return len5 === 0 ? { x: 0, y: 0 } : { x: p.x / len5, y: p.y / len5 }; + }, + // Check for the equality of two points. + eq: function(p1, p22) { + return p1.x === p22.x && p1.y === p22.y; + }, + // Mutably add P->in to P->out. + inc: function(pout, pin) { + pout.x += pin.x; + pout.y += pin.y; + return pout; + }, + // Mutably scale P->out by P->in. + scl: function(pout, pin) { + pout.x *= pin.x || pin; + pout.y *= pin.y || pin; + return pout; + }, + // Immutably add pA + pB. + add: function(pA, pB) { + return { + x: pA.x + pB.x, + y: pA.y + pB.y + }; + }, + // Immutably sub pA - pB. + sub: function(pA, pB) { + return { + x: pA.x - pB.x, + y: pA.y - pB.y + }; + }, + // Immutably rotate p by angle in radians. + rot(p, angle3) { + return { + x: p.x * cos(angle3) - p.y * sin(angle3), + y: p.x * sin(angle3) + p.y * cos(angle3) + }; + }, + // Immutably multiply pA * pB. + mul: function(pA, pB) { + return { + x: pA.x * (pB.x || pB), + y: pA.y * (pB.y || pB) + }; + }, + // Immutably divide pA / pB. + // If pA is a single number then this function expands it to an `{x, y}`. + // Note: Other library functions here could do the same. 2023.1.19 + div: function(pA, pB) { + if (typeof pA === "number") pA = { x: pA, y: pA }; + return { + x: pA.x / pB.x, + y: pA.y / pB.y + }; + }, + mid: function(pA, pB) { + return { + x: (pA.x + pB.x) / 2, + y: (pA.y + pB.y) / 2 + }; + }, + dist: function(pA, pB) { + return sqrt(pow2(pB.x - pA.x, 2) + pow2(pB.y - pA.y, 2)); + }, + angle: function(pA, pB) { + return atan2(pB.y - pA.y, pB.x - pA.x); + }, + dot: function(pA, pB) { + return pA.x * pB.x + pA.y * pB.y; + }, + floor: function(p) { + return { x: floor4(p.x), y: floor4(p.y) }; + } +}; +function add7(...args) { + let numbers; + if (Array.isArray(args[0])) { + numbers = args[0]; + } else { + numbers = args; + } + return numbers.reduce((acc, curr) => acc + curr, 0); +} +function midp(a2, b2) { + return [(a2[0] + b2[0]) / 2, (a2[1] + b2[1]) / 2]; +} +function number(maybeNumber) { + return typeof maybeNumber === "number"; +} +function intersects() { + let a2, b2, c4, d2, p, q, r2, s2; + if (arguments.length === 2 && typeof arguments[0] === "object" && typeof arguments[1] === "object") { + a2 = arguments[0].x0; + b2 = arguments[0].y0; + c4 = arguments[0].x1; + d2 = arguments[0].y1; + p = arguments[1].x0; + q = arguments[1].y0; + r2 = arguments[1].x1; + s2 = arguments[1].y1; + } else if (arguments.length === 8) { + [a2, b2, c4, d2, p, q, r2, s2] = arguments; + } else { + console.warn("Invalid intersection input."); + return false; + } + let det, lambda, gamma; + det = (c4 - a2) * (s2 - q) - (r2 - p) * (d2 - b2); + if (det === 0) { + return false; + } else { + lambda = ((s2 - q) * (r2 - a2) + (p - r2) * (s2 - b2)) / det; + gamma = ((b2 - d2) * (r2 - a2) + (c4 - a2) * (s2 - b2)) / det; + return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1; + } +} +function signedCeil(n2) { + return n2 < 0 ? Math.floor(n2) : Math.ceil(n2); +} +function signedFloor(val) { + return val < 0 ? Math.ceil(val) : Math.floor(val); +} +function wrap(n2, to) { + return (n2 / to - floor4(n2 / to)) * to; +} +function even(n2) { + return n2 % 2 === 0; +} +function odd(n2) { + return !even(n2); +} +function byteInterval17(i16) { + return min4(i16 * 16, 255); +} +function rand() { + return random5(); +} +function randInt(n2) { + return floor4(rand() * (n2 + 1)); +} +function anyKey(obj) { + const keys4 = Object.keys(obj); + return keys4[randInt(keys4.length - 1)]; +} +function randInd(arr) { + return randInt(arr.length - 1); +} +function randIntArr(n2, count) { + return Array(count).fill(n2).map(randInt); +} +function randIntRange(low, high) { + return low + randInt(high - low); +} +function rangedInts(ints) { + if (ints[0] === void 0) return; + return ints.map((str7) => { + if (str7.match(/^\d+-\d+$/)) { + const range = str7.split("-"); + return randIntRange(parseInt(range[0]), parseInt(range[1])); + } else { + if (str7 === "?") return randInt(255); + return parseInt(str7); + } + }); +} +function multiply7(operands, n2) { + if (Array.isArray(operands)) { + return operands.map((o2) => o2 * n2); + } else { + return operands * n2; + } +} +function dist4() { + let x1, y1, x2, y2; + if (arguments.length === 4) { + x1 = arguments[0]; + y1 = arguments[1]; + x2 = arguments[2]; + y2 = arguments[3]; + } else if (arguments.length === 2) { + x1 = arguments[0].x; + y1 = arguments[0].y; + x2 = arguments[1].x; + y2 = arguments[1].y; + } + const dx = x2 - x1; + const dy = y2 - y1; + return sqrt(dx * dx + dy * dy); +} +function dist3d(p1, p22) { + if (p1.buffer) p1 = p1.map((p) => p.toPrecision(4)); + if (p22.buffer) p22 = p22.map((p) => p.toPrecision(4)); + const dx = p1[0] - p22[0]; + const dy = p1[1] - p22[1]; + const dz = p1[2] - p22[2]; + return sqrt(dx * dx + dy * dy + dz * dz); +} +function radians(deg = 0) { + if (isNaN(deg)) deg = 0; + return deg * (PI / 180); +} +function degrees(rad) { + return rad * (180 / PI); +} +function clamp(value, low, high) { + return min4(max4(value, low), high); +} +function wave(phase) { + return sin(phase); +} +function lerp5(a2, b2, amount) { + return a2 + (b2 - a2) * clamp(amount, 0, 1); +} +function map(num, inMin, inMax, outMin, outMax) { + return (num - inMin) * (outMax - outMin) / (inMax - inMin) + outMin; +} +function perlin(x, y) { + var grad3 = [ + [1, 1, 0], + [-1, 1, 0], + [1, -1, 0], + [-1, -1, 0], + [1, 0, 1], + [-1, 0, 1], + [1, 0, -1], + [-1, 0, -1], + [0, 1, 1], + [0, -1, 1], + [0, 1, -1], + [0, -1, -1] + ]; + var p = []; + for (var i2 = 0; i2 < 256; i2++) { + p[i2] = Math.floor(Math.random() * 256); + } + var perm = []; + for (var i2 = 0; i2 < 512; i2++) { + perm[i2] = p[i2 & 255]; + } + function dot5(g, x3, y3) { + return g[0] * x3 + g[1] * y3; + } + var F2 = 0.5 * (Math.sqrt(3) - 1); + var s2 = (x + y) * F2; + var i2 = Math.floor(x + s2); + var j = Math.floor(y + s2); + var G2 = (3 - Math.sqrt(3)) / 6; + var t2 = (i2 + j) * G2; + var X0 = i2 - t2; + var Y0 = j - t2; + var x0 = x - X0; + var y0 = y - Y0; + var i1, j1; + if (x0 > y0) { + i1 = 1; + j1 = 0; + } else { + i1 = 0; + j1 = 1; + } + var x1 = x0 - i1 + G2; + var y1 = y0 - j1 + G2; + var x2 = x0 - 1 + 2 * G2; + var y2 = y0 - 1 + 2 * G2; + var ii = i2 & 255; + var jj = j & 255; + var gi0 = perm[ii + perm[jj]] % 12; + var gi1 = perm[ii + i1 + perm[jj + j1]] % 12; + var gi2 = perm[ii + 1 + perm[jj + 1]] % 12; + var t0 = 0.5 - x0 * x0 - y0 * y0; + var n0, n1, n2; + if (t0 < 0) n0 = 0; + else { + t0 *= t0; + n0 = t0 * t0 * dot5(grad3[gi0], x0, y0); + } + var t1 = 0.5 - x1 * x1 - y1 * y1; + if (t1 < 0) n1 = 0; + else { + t1 *= t1; + n1 = t1 * t1 * dot5(grad3[gi1], x1, y1); + } + var t22 = 0.5 - x2 * x2 - y2 * y2; + if (t22 < 0) n2 = 0; + else { + t22 *= t22; + n2 = t22 * t22 * dot5(grad3[gi2], x2, y2); + } + return 70 * (n0 + n1 + n2); +} +function arrMax(arr) { + return arr.reduce((top, current) => max4(top, current), -Infinity); +} +function arrCompress(arr, n2) { + return arr.filter((_, index) => (index + 1) % n2 === 0); +} +function timestamp() { + const d2 = /* @__PURE__ */ new Date(); + const pad = (n2, digits = 2) => n2.toString().padStart(digits, "0"); + return ` + ${d2.getFullYear()}. + ${pad(d2.getMonth() + 1)}. + ${pad(d2.getDate())}. + ${pad(d2.getHours())}. + ${pad(d2.getMinutes())}. + ${pad(d2.getSeconds())}. + ${pad(d2.getMilliseconds(), 3)}`.replace(/\s/g, ""); +} +var Track = class { + #values; + #result; + #quantize; + constructor(values2, result) { + this.#values = values2; + this.#result = result; + this.#quantize = Array.isArray(values2); + } + step(progress) { + if (this.#quantize) { + const index = min4( + floor4(progress * this.#values.length), + this.#values.length - 1 + ); + this.#result(this.#values[index]); + } else { + this.#result(lerp5(this.#values.from, this.#values.to, progress)); + } + } +}; +function cleanHexString(h) { + return h.replace("#", "").replace("0x", "").toUpperCase(); +} +function isHexString(h) { + h = cleanHexString(h); + const a2 = parseInt(h, 16); + return a2.toString(16) === h.toLowerCase(); +} +function parseColor(params) { + if (params.length === 0) return params; + const int = parseInt(params[0]); + if (!isNaN(int) || params.length > 2) { + if (params.length === 2 || params.length === 4) { + const alpha = calculateAlpha(params[params.length - 1]); + params[params.length - 1] = alpha.toString(); + } + return rangedInts(params); + } else { + let name = params[0].toLowerCase(); + let alpha = calculateAlpha(params[1]); + if (name === "?") name = anyKey(cssColors2); + if (name.startsWith("fade:")) { + return { + type: "fade", + fadeString: name, + alpha, + originalParams: params + }; + } + const indexColor = parseColorIndex(name); + if (indexColor) { + return [...indexColor, alpha]; + } + if (name in cssColors2) { + return [...cssColors2[name], alpha]; + } else if (name === "erase") { + return [-1, -1, -1, alpha]; + } else if (name === "rainbow") { + return ["rainbow", alpha]; + } else if (name === "zebra") { + return ["zebra", alpha]; + } else { + return [0, 0, 0, alpha]; + } + } +} +function calculateAlpha(alphaParam) { + if (alphaParam === "?") return randIntRange(5, 255); + let alpha = parseFloat(alphaParam); + if (alpha >= 0 && alpha <= 1) { + alpha = round4(alpha * 255); + } else { + alpha = rangedInts([alphaParam]) || 255; + } + return alpha; +} +var cssColors2 = { + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgrey: [169, 169, 169], + darkgreen: [0, 100, 0], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + grey: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgrey: [211, 211, 211], + lightgreen: [144, 238, 144], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + rebeccapurple: [102, 51, 153], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50], + // Custom brown colors for AC + darkbrown: [101, 67, 33], + darkerbrown: [62, 39, 35], + darksienna: [139, 90, 43] +}; +var currentRainbowIndex = 0; +var frameRainbowColor = null; +var rainbowFrameAdvanced = false; +var rainbowColors = [ + cssColors2.red, + cssColors2.orange, + cssColors2.yellow, + cssColors2.green, + cssColors2.blue, + cssColors2.indigo, + cssColors2.violet +]; +function rainbow(offset = 0) { + if (!rainbowFrameAdvanced) { + currentRainbowIndex = (currentRainbowIndex + 1) % rainbowColors.length; + frameRainbowColor = rainbowColors[currentRainbowIndex].slice(); + rainbowFrameAdvanced = true; + } + const finalIndex = (currentRainbowIndex + offset) % rainbowColors.length; + const result = rainbowColors[finalIndex]; + return result.slice(); +} +var currentZebraIndex = 0; +var frameZebraColor = null; +var zebraFrameAdvanced = false; +var zebraColors = [ + cssColors2.black, + // [0, 0, 0] + cssColors2.white + // [255, 255, 255] +]; +function zebra(offset = 0) { + if (!zebraFrameAdvanced) { + currentZebraIndex = (currentZebraIndex + 1) % zebraColors.length; + frameZebraColor = zebraColors[currentZebraIndex].slice(); + zebraFrameAdvanced = true; + } + const finalIndex = (currentZebraIndex + offset) % zebraColors.length; + return zebraColors[finalIndex].slice(); +} +function resetZebraCache() { + zebraFrameAdvanced = false; + frameZebraColor = null; +} +function resetRainbowCache() { + rainbowFrameAdvanced = false; + frameRainbowColor = null; +} +function findColor(rgb) { + for (let name in cssColors2) { + if (cssColors2[name][0] === rgb[0] && cssColors2[name][1] === rgb[1] && cssColors2[name][2] === rgb[2]) { + return name; + } + } +} +var organizedColorIndex = [ + // 0-15: Standard 16 web colors (c0=black, c1=white) + "black", + "white", + "red", + "lime", + "blue", + "yellow", + "cyan", + "magenta", + "silver", + "gray", + "maroon", + "olive", + "green", + "purple", + "teal", + "navy", + // 17-32: Additional reds and pinks + "crimson", + "darkred", + "firebrick", + "indianred", + "lightcoral", + "salmon", + "darksalmon", + "lightsalmon", + "pink", + "lightpink", + "hotpink", + "deeppink", + "palevioletred", + "mediumvioletred", + "coral", + "tomato", + // 33-48: Oranges + "orange", + "darkorange", + "orangered", + "chocolate", + "saddlebrown", + "sienna", + "brown", + "rosybrown", + "sandybrown", + "goldenrod", + "darkgoldenrod", + "peru", + "burlywood", + "tan", + "navajowhite", + "bisque", + // 49-64: Yellows and golds + "gold", + "palegoldenrod", + "khaki", + "darkkhaki", + "moccasin", + "wheat", + "lemonchiffon", + "lightgoldenrodyellow", + "lightyellow", + "beige", + "cornsilk", + "blanchedalmond", + "papayawhip", + "antiquewhite", + "linen", + "oldlace", + // 65-80: Greens + "forestgreen", + "darkgreen", + "darkolivegreen", + "darkseagreen", + "limegreen", + "seagreen", + "mediumseagreen", + "springgreen", + "mediumspringgreen", + "palegreen", + "lightgreen", + "lawngreen", + "chartreuse", + "greenyellow", + "yellowgreen", + "olivedrab", + // 81-96: Blues and cyans + "aqua", + "darkturquoise", + "turquoise", + "mediumturquoise", + "paleturquoise", + "lightcyan", + "cadetblue", + "steelblue", + "lightsteelblue", + "powderblue", + "lightblue", + "skyblue", + "lightskyblue", + "deepskyblue", + "dodgerblue", + "cornflowerblue", + // 97-112: More blues + "royalblue", + "mediumblue", + "darkblue", + "midnightblue", + "slateblue", + "darkslateblue", + "mediumslateblue", + "mediumpurple", + "blueviolet", + "indigo", + "darkorchid", + "darkviolet", + "mediumorchid", + "thistle", + "plum", + "violet", + // 113-128: Purples and magentas + "orchid", + "fuchsia", + "darkmagenta", + "mediumvioletred", + "lavenderblush", + "mistyrose", + "lavender", + "ghostwhite", + "azure", + "aliceblue", + "mintcream", + "honeydew", + "seashell", + "ivory", + "floralwhite", + "snow", + // 129-144: Grays and remaining colors + "gainsboro", + "lightgray", + "lightgrey", + "darkgray", + "darkgrey", + "dimgray", + "dimgrey", + "lightslategray", + "lightslategrey", + "slategray", + "slategrey", + "darkslategray", + "darkslategrey", + "whitesmoke", + "rebeccapurple" +]; +var remainingColors = Object.keys(cssColors2).filter( + (color3) => !organizedColorIndex.includes(color3) +); +var completeColorIndex = [...organizedColorIndex, ...remainingColors]; +var paletteColors = { + 0: "rainbow", + // p0 = rainbow + 1: "zebra" + // p1 = zebra + // Add more palette colors here as needed +}; +function getPaletteByIndex(index) { + if (index in paletteColors) { + return paletteColors[index]; + } + return null; +} +var staticColorMap = { + // 0-15: Core web colors (never change these) + 0: [0, 0, 0], + // c0 = black + 1: [255, 255, 255], + // c1 = white + 2: [255, 0, 0], + // c2 = red + 3: [0, 255, 0], + // c3 = lime + 4: [0, 0, 255], + // c4 = blue + 5: [255, 255, 0], + // c5 = yellow + 6: [0, 255, 255], + // c6 = cyan + 7: [255, 0, 255], + // c7 = magenta + 8: [192, 192, 192], + // c8 = silver + 9: [128, 128, 128], + // c9 = gray + 10: [128, 0, 0], + // c10 = maroon + 11: [128, 128, 0], + // c11 = olive + 12: [0, 128, 0], + // c12 = green + 13: [128, 0, 128], + // c13 = purple + 14: [0, 128, 128], + // c14 = teal + 15: [0, 0, 128], + // c15 = navy + // 16-31: Red spectrum + 16: [220, 20, 60], + // c16 = crimson + 17: [139, 0, 0], + // c17 = darkred + 18: [178, 34, 34], + // c18 = firebrick + 19: [205, 92, 92], + // c19 = indianred + 20: [240, 128, 128], + // c20 = lightcoral + 21: [250, 128, 114], + // c21 = salmon + 22: [233, 150, 122], + // c22 = darksalmon + 23: [255, 160, 122], + // c23 = lightsalmon + 24: [255, 192, 203], + // c24 = pink + 25: [255, 182, 193], + // c25 = lightpink + 26: [255, 105, 180], + // c26 = hotpink + 27: [255, 20, 147], + // c27 = deeppink + 28: [219, 112, 147], + // c28 = palevioletred + 29: [199, 21, 133], + // c29 = mediumvioletred + 30: [255, 127, 80], + // c30 = coral + 31: [255, 99, 71], + // c31 = tomato + // 32-47: Orange spectrum + 32: [255, 69, 0], + // c32 = orangered + 33: [255, 140, 0], + // c33 = darkorange + 34: [255, 165, 0], + // c34 = orange + 35: [255, 215, 0], + // c35 = gold + 36: [255, 218, 185], + // c36 = peachpuff + 37: [255, 228, 196], + // c37 = bisque + 38: [255, 239, 213], + // c38 = papayawhip + 39: [255, 228, 181], + // c39 = moccasin + 40: [255, 222, 173], + // c40 = navajowhite + 41: [245, 222, 179], + // c41 = wheat + 42: [222, 184, 135], + // c42 = burlywood + 43: [210, 180, 140], + // c43 = tan + 44: [188, 143, 143], + // c44 = rosybrown + 45: [205, 133, 63], + // c45 = peru + 46: [244, 164, 96], + // c46 = sandybrown + 47: [160, 82, 45], + // c47 = saddlebrown + // 48-63: Yellow/Green spectrum + 48: [255, 248, 220], + // c48 = cornsilk + 49: [255, 255, 240], + // c49 = ivory + 50: [255, 250, 205], + // c50 = lemonchiffon + 51: [250, 250, 210], + // c51 = lightgoldenrodyellow + 52: [240, 230, 140], + // c52 = khaki + 53: [238, 232, 170], + // c53 = palegoldenrod + 54: [189, 183, 107], + // c54 = darkkhaki + 55: [154, 205, 50], + // c55 = yellowgreen + 56: [124, 252, 0], + // c56 = lawngreen + 57: [127, 255, 0], + // c57 = chartreuse + 58: [173, 255, 47], + // c58 = greenyellow + 59: [50, 205, 50], + // c59 = limegreen + 60: [152, 251, 152], + // c60 = palegreen + 61: [144, 238, 144], + // c61 = lightgreen + 62: [0, 250, 154], + // c62 = mediumspringgreen + 63: [0, 255, 127], + // c63 = springgreen + // 64-79: Green spectrum + 64: [46, 125, 50], + // c64 = forestgreen + 65: [34, 139, 34], + // c65 = forestgreen + 66: [0, 100, 0], + // c66 = darkgreen + 67: [85, 107, 47], + // c67 = darkolivegreen + 68: [107, 142, 35], + // c68 = olivedrab + 69: [102, 205, 170], + // c69 = mediumaquamarine + 70: [127, 255, 212], + // c70 = aquamarine + 71: [176, 196, 222], + // c71 = lightsteelblue + 72: [175, 238, 238], + // c72 = paleturquoise + 73: [0, 206, 209], + // c73 = darkturquoise + 74: [72, 209, 204], + // c74 = mediumturquoise + 75: [64, 224, 208], + // c75 = turquoise + 76: [0, 139, 139], + // c76 = darkcyan + 77: [95, 158, 160], + // c77 = cadetblue + 78: [70, 130, 180], + // c78 = steelblue + 79: [176, 224, 230], + // c79 = powderblue + // 80-95: Blue spectrum + 80: [173, 216, 230], + // c80 = lightblue + 81: [135, 206, 235], + // c81 = skyblue + 82: [135, 206, 250], + // c82 = lightskyblue + 83: [0, 191, 255], + // c83 = deepskyblue + 84: [30, 144, 255], + // c84 = dodgerblue + 85: [100, 149, 237], + // c85 = cornflowerblue + 86: [123, 104, 238], + // c86 = mediumslateblue + 87: [106, 90, 205], + // c87 = slateblue + 88: [72, 61, 139], + // c88 = darkslateblue + 89: [25, 25, 112], + // c89 = midnightblue + 90: [0, 0, 139], + // c90 = darkblue + 91: [0, 0, 205], + // c91 = mediumblue + 92: [65, 105, 225], + // c92 = royalblue + 93: [138, 43, 226], + // c93 = blueviolet + 94: [75, 0, 130], + // c94 = indigo + 95: [72, 0, 72], + // c95 = darkmagenta + // 96-111: Purple/Violet spectrum + 96: [153, 50, 204], + // c96 = darkorchid + 97: [186, 85, 211], + // c97 = mediumorchid + 98: [218, 112, 214], + // c98 = orchid + 99: [221, 160, 221], + // c99 = plum + 100: [238, 130, 238], + // c100 = violet + 101: [255, 0, 255], + // c101 = fuchsia (same as magenta) + 102: [208, 32, 144], + // c102 = violetred + 103: [199, 21, 133], + // c103 = mediumvioletred + 104: [219, 112, 147], + // c104 = palevioletred + 105: [255, 105, 180], + // c105 = hotpink + 106: [255, 20, 147], + // c106 = deeppink + 107: [220, 20, 60], + // c107 = crimson + 108: [139, 69, 19], + // c108 = saddlebrown + 109: [160, 82, 45], + // c109 = saddlebrown + 110: [205, 133, 63], + // c110 = peru + 111: [222, 184, 135], + // c111 = burlywood + // 112-127: Browns and earth tones + 112: [245, 245, 220], + // c112 = beige + 113: [255, 248, 220], + // c113 = cornsilk + 114: [255, 235, 205], + // c114 = blanchedalmond + 115: [245, 222, 179], + // c115 = wheat + 116: [255, 228, 181], + // c116 = moccasin + 117: [255, 218, 185], + // c117 = peachpuff + 118: [210, 180, 140], + // c118 = tan + 119: [188, 143, 143], + // c119 = rosybrown + 120: [244, 164, 96], + // c120 = sandybrown + 121: [205, 133, 63], + // c121 = peru + 122: [160, 82, 45], + // c122 = saddlebrown + 123: [139, 69, 19], + // c123 = saddlebrown + 124: [101, 67, 33], + // c124 = darkbrown + 125: [62, 39, 35], + // c125 = darkerbrown + 126: [139, 90, 43], + // c126 = darksienna + 127: [165, 42, 42] + // c127 = brown +}; +function parseColorIndex(indexString) { + if (typeof indexString === "string") { + if (indexString.startsWith("c")) { + const index = parseInt(indexString.substring(1), 10); + if (!isNaN(index) && staticColorMap[index]) { + const color3 = staticColorMap[index]; + if (Array.isArray(color3) && color3.length >= 3 && color3[0] !== void 0 && color3[1] !== void 0 && color3[2] !== void 0) { + return color3; + } + } + } else if (indexString.startsWith("p")) { + const index = parseInt(indexString.substring(1), 10); + if (!isNaN(index)) { + const palette = getPaletteByIndex(index); + if (palette === "rainbow") { + return ["rainbow"]; + } else if (palette === "zebra") { + return ["zebra"]; + } + } + } + } + return null; +} +function blend(dst, src, alphaIn = 1) { + if (src[3] === 0) return; + if (src[0] === -1) { + const normalizedAlpha = 1 - src[3] / 255; + dst[3] *= normalizedAlpha; + return; + } + if (src[3] === void 0) src[3] = 255; + const alpha = src[3] * alphaIn + 1; + const invAlpha = 256 - alpha; + dst[0] = alpha * src[0] + invAlpha * dst[0] >> 8; + dst[1] = alpha * src[1] + invAlpha * dst[1] >> 8; + dst[2] = alpha * src[2] + invAlpha * dst[2] >> 8; + dst[3] = dst[3] + alpha; + return dst; +} +function shiftRGB(a2, b2, step, mode = "lerp", range = 255) { + const low = range === 255 ? [1, 10] : [0.01, 0.05]; + const high = range === 255 ? [245, 250] : [0.92, 0.95]; + if (mode === "add" || mode === "subtract") { + if (mode === "subtract") step *= -1; + const shifted = [ + clamp(a2[0] + a2[0] * step, randIntRange(...low), randIntRange(...high)), + clamp(a2[1] + a2[1] * step, randIntRange(...low), randIntRange(...high)), + clamp(a2[2] + a2[2] * step, randIntRange(...low), randIntRange(...high)), + range + ]; + cc; + } else if (mode === "step") { + const shifted = [ + towards(a2[0], b2[0], step), + towards(a2[1], b2[1], step), + towards(a2[2], b2[2], step), + range + ]; + console.log(a2[0], b2[0], step); + return shifted; + } else { + const shifted = [ + lerp5(a2[0], b2[0], step), + lerp5(a2[1], b2[1], step), + lerp5(a2[2], b2[2], step), + range + ]; + return shifted; + } +} +function towards(from, to, by) { + return from < to ? min4(from + by, to) : max4(from - by, to); +} +function rgbToHexStr(r2, g, b2, prefix = "") { + return prefix + (1 << 24 | r2 << 16 | g << 8 | b2).toString(16).slice(1); +} +function hexToRgb(h) { + const int = typeof h === "string" ? parseInt(cleanHexString(h), 16) : h; + const out = [int >> 16 & 255, int >> 8 & 255, int & 255]; + return out; +} +function saturate(rgb, amount = 1) { + const hadAlpha = rgb.length === 4; + const alpha = rgb[3]; + rgb = rgb.slice(0, 3); + const grey = lightness(rgb) * 255; + const [low, mid, high] = getLowestMiddleHighest(rgb); + if (low.val === high.val) return rgb; + const saturationRange = round4(min4(255 - grey, grey)); + const maxChange = min4(255 - high.val, low.val); + const changeAmount = min4(saturationRange * amount, maxChange); + const middleValueRatio = (grey - mid.val) / (grey - high.val); + const out = []; + out[high.index] = round4(high.val + changeAmount); + out[low.index] = round4(low.val - changeAmount); + out[mid.index] = round4(grey + (out[high.index] - grey) * middleValueRatio); + if (hadAlpha) out[3] = alpha; + return out; +} +function desaturate(rgb, amount = 1) { + const hadAlpha = rgb.length === 4; + const alpha = rgb[3]; + rgb = rgb.slice(0, 3); + const [low, mid, high] = getLowestMiddleHighest(rgb); + const grey = lightness(rgb) * 255; + if (low.val === high.val) return rgb; + const saturationRange = round4(min4(255 - grey, grey)); + const maxChange = grey - low.val; + const changeAmount = min4(saturationRange * amount, maxChange); + const middleValueRatio = (grey - mid.val) / (grey - high.val); + const out = []; + out[high.index] = round4(high.val - changeAmount); + out[low.index] = round4(low.val + changeAmount); + out[mid.index] = round4(grey + (out[high.index] - grey) * middleValueRatio); + if (hadAlpha) out[3] = alpha; + return out; +} +function lightness(rgb) { + const highest = max4(...rgb); + const lowest = min4(...rgb); + return (highest + lowest) / 2 / 255; +} +function getLowestMiddleHighest(rgb) { + let high = { val: 0, index: -1 }; + let low = { val: Infinity, index: -1 }; + rgb.map((val, index) => { + if (val > high.val) { + high = { val, index }; + } + if (val < low.val) { + low = { val, index }; + } + }); + const mid = { index: 3 - high.index - low.index }; + mid.val = rgb[mid.index]; + return [low, mid, high]; +} +function rgbToHsl(r2, g, b2) { + r2 /= 255, g /= 255, b2 /= 255; + const max9 = Math.max(r2, g, b2), min10 = Math.min(r2, g, b2); + let h, s2, l2 = (max9 + min10) / 2; + if (max9 == min10) { + h = s2 = 0; + } else { + const d2 = max9 - min10; + s2 = l2 > 0.5 ? d2 / (2 - max9 - min10) : d2 / (max9 + min10); + switch (max9) { + case r2: + h = (g - b2) / d2 + (g < b2 ? 6 : 0); + break; + case g: + h = (b2 - r2) / d2 + 2; + break; + case b2: + h = (r2 - g) / d2 + 4; + break; + } + h /= 6; + } + return [h * 360, s2 * 100, l2 * 100]; +} +function hslToRgb(h, s2, l2) { + s2 /= 100; + l2 /= 100; + const c4 = (1 - Math.abs(2 * l2 - 1)) * s2; + const x = c4 * (1 - Math.abs(h / 60 % 2 - 1)); + const m = l2 - c4 / 2; + let r2 = 0, g = 0, b2 = 0; + if (0 <= h && h < 60) { + r2 = c4; + g = x; + b2 = 0; + } else if (60 <= h && h < 120) { + r2 = x; + g = c4; + b2 = 0; + } else if (120 <= h && h < 180) { + r2 = 0; + g = c4; + b2 = x; + } else if (180 <= h && h < 240) { + r2 = 0; + g = x; + b2 = c4; + } else if (240 <= h && h < 300) { + r2 = x; + g = 0; + b2 = c4; + } else if (300 <= h && h < 360) { + r2 = c4; + g = 0; + b2 = x; + } + r2 = Math.round((r2 + m) * 255); + g = Math.round((g + m) * 255); + b2 = Math.round((b2 + m) * 255); + return [r2, g, b2]; +} + +// public/aesthetic.computer/lib/help.mjs +var { floor: floor5 } = Math; +function choose() { + return arguments[randInt(arguments.length - 1)]; +} +function flip() { + return choose(true, false); +} +function every(obj, value) { + Object.keys(obj).forEach((k) => obj[k] = value); +} +function anyIndex(array) { + return randInt(array.length - 1); +} +function any(objOrArray) { + if (Array.isArray(objOrArray)) { + return objOrArray[anyIndex(objOrArray)]; + } else { + const keys4 = Object.keys(objOrArray); + return objOrArray[keys4[keys4.length * Math.random() << 0]]; + } +} +function shuffleInPlace(array) { + let currentIndex = array.length, randomIndex; + while (currentIndex != 0) { + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex--; + [array[currentIndex], array[randomIndex]] = [ + array[randomIndex], + array[currentIndex] + ]; + } + return array; +} +function each(obj, fn) { + Object.entries(obj).forEach(([key, obj2]) => fn(obj2, key)); +} +function repeat(n2, fn) { + const reps = []; + for (let i2 = 0; i2 < floor5(n2); i2 += 1) reps.push(fn(i2)); + return reps; +} +function findKeyAndValue(obj, k, v2) { + return obj[Object.keys(obj).find((key) => obj[key][k] === v2)]; +} +function nonvalue(i2) { + return i2 === void 0 || i2 === null || isNaN(i2); +} +function resampleArray(inputArray, newLength) { + const inputLength = inputArray.length; + const outputArray = []; + for (let i2 = 0; i2 < newLength; i2++) { + const index = floor5(i2 / newLength * inputLength); + outputArray.push(inputArray[index]); + } + return outputArray; +} + +// public/aesthetic.computer/lib/geo.mjs +var { abs: abs2, cos: cos2, sin: sin2, floor: floor6, sqrt: sqrt2 } = Math; +var Circle = class { + x; + y; + radius; + constructor(x, y, radius = 8) { + this.x = x; + this.y = y; + this.radius = radius; + } + // Determines whether the circle is intersecting the given line. + // function ( line, ) + // Returns a random (x, y) point within the circle by recursively generating + // random points within a bounding box and checking to see if they are within + // the radius. + random() { + const sq = [-this.radius, this.radius]; + const np = { + x: this.x + randIntRange(...sq), + y: this.y + randIntRange(...sq) + }; + if (dist4(this.x, this.y, np.x, np.y) < this.radius) { + return np; + } else { + return this.random(this.radius); + } + } +}; +var Box = class _Box { + x = 0; + y = 0; + w = 1; + h = 1; + // Params: + // x, y, w, h + // x, y, s + // {x, y}, s + constructor() { + if (arguments.length === 4) { + this.x = arguments[0]; + this.y = arguments[1]; + this.w = arguments[2]; + this.h = arguments[3]; + } else if (arguments.length === 3) { + this.x = arguments[0]; + this.y = arguments[1]; + this.w = arguments[2]; + this.h = this.w; + } else if (arguments.length === 2) { + this.x = arguments[0].x; + this.y = arguments[0].y; + this.w = arguments[1]; + this.h = this.w; + } + if (this.w === 0) this.w = 1; + if (this.h === 0) this.h = 1; + } + // Yields a new box that is a copy of an existing old one. + static from(box2) { + if (Array.isArray(box2)) { + return new _Box(...box2); + } else { + return new _Box(box2.x, box2.y, box2.w || box2.width, box2.h || box2.height); + } + } + // Compute area of box. + get area() { + return abs2(this.w * this.h); + } + // Compute center point of box. + get center() { + return { + x: this.x + this.w / 2, + y: this.y + this.h / 2 + }; + } + // Yields a box where x, y is at the top left and w, h are positive. + get abs() { + let { x, y, w, h } = this; + if (w < 0) { + x += w + 1; + w = Math.abs(w); + } + if (h < 0) { + y += h + 1; + h = Math.abs(h); + } + return new _Box(x, y, w, h); + } + // The top side of the box. (same as y) + get top() { + return this.y; + } + // Calculates a y value, representing the bottom of the box. + // Note: Returns y if the height is 1. + get bottom() { + return this.h === 1 ? this.y : this.y + this.h; + } + // The left side of the box. (same as x) + get left() { + return this.x; + } + // Calculates an x value, representing the right of the box. + // Note: Returns x if the width is 1. + get right() { + return this.w === 1 ? this.x : this.x + this.w; + } + // All four corners. + get topLeft() { + return { x: this.left, y: this.top }; + } + get topRight() { + return { x: this.right, y: this.top }; + } + get bottomLeft() { + return { x: this.left, y: this.bottom }; + } + get bottomRight() { + return { x: this.right, y: this.bottom }; + } + // Scales a box and returns a copy. + scale(n2) { + return new _Box(this.x, this.y, this.w * n2, this.h * n2); + } + // Crops one box to another. + crop(toX, toY, toW, toH) { + let { x, y, w, h } = this; + if (x >= toW || y >= toH) return; + if (x < toX) { + w += x; + x = toX; + } + if (x + w > toW) w = toW - x; + if (y < toY) { + h += y; + y = toY; + } + if (y + h > toH) h = toH - y; + return new _Box(x, y, w, h); + } + // Moves the box by x and y. + move({ x, y }) { + this.x += x; + this.y += y; + } + // Returns true if this box contains the point {x, y}. + contains(point2 = { x: void 0, y: void 0 }) { + const { x, y } = point2; + return this.x <= x && x <= this.x + this.w && this.y <= y && y <= this.y + this.h; + } + // Returns true if this box contains NO points in `arr`. + containsNone(arr) { + if (!arr) return true; + return arr.every((o2) => this.contains(o2) === false); + } + // Returns true if this box contains the point `xy` from `arr`. + onlyContains(index, arr) { + const newArr = arr.slice(0, index).concat(arr.slice(index + 1)); + return this.contains(arr[index]) && this.containsNone(newArr); + } + // The opposite of contains. + misses(o2) { + return !this.contains(o2); + } + // Grow a box from the center by `n` units on every side. + // And returns a copy. + grow(n2) { + return new _Box(this.x - n2, this.y - n2, this.w + n2 * 2, this.h + n2 * 2); + } + // Checks whether two boxes are making contact and / or intersecting. + // 📓 This might be a little unperforant with tons of boxes. 23.06.29.12.48 + contact(box2) { + return box2 && (this.contains(box2.topLeft) || this.contains(box2.topRight) || this.contains(box2.bottomRight) || this.contains(box2.bottomLeft)); + } + // Returns true if the boxes match exactly. + equal(box2) { + return this.x === box2.x && this.y === box2.y && this.w === box2.w && this.h === box2.h; + } +}; +var Grid = class { + box; + scale; + // TODO: Could rotation eventually be added here? 2021.12.08.10.51 + transform; + #halfScale; + centerOffset; + constructor(x, y, w, h, s2 = 1) { + this.box = new Box(x, y, w, h); + this.scale = s2; + this.transform = { scale: this.scale }; + this.#halfScale = this.scale / 2; + this.centerOffset = floor6(this.#halfScale); + } + // Loop through every point in the grid, starting from the top left, and + // applying a callback. + each(fun) { + for (let x = 0; x < this.box.w; x += 1) { + for (let y = 0; y < this.box.h; y += 1) { + fun(x, y, x + y * this.box.w); + } + } + } + // Returns unscaled point `{x, y}` in `grid` for given display coordinate + // `pos`, or `false` if `pos` is outside of `grid`. + under({ x, y }, cb) { + const { scale: scale7, box: box2 } = this; + const gx = floor6((x - box2.x) / scale7); + const gy = floor6((y - box2.y) / scale7); + const gridSquare = { + x: box2.x + gx * scale7, + y: box2.y + gy * scale7, + w: scale7, + h: scale7, + gx, + gy, + in: this.scaled.contains({ x, y }) + }; + if (gridSquare.in && cb) cb(gridSquare); + return gridSquare; + } + // Returns floored display coordinates from local, untransformed ones. + get(x, y) { + return [ + floor6(this.box.x + x * this.scale), + floor6(this.box.y + y * this.scale) + ]; + } + // Yields the grid's transformed bounding box according to `scale`. + get scaled() { + return new Box( + this.box.x, + this.box.y, + this.box.w * this.scale, + this.box.h * this.scale + ); + } + // Yields the projected "center" x, y point of the whole grid. + middle() { + return this.get(floor6(this.box.w / 2), floor6(this.box.h / 2)); + } + center(x, y) { + const scaled = this.get(x, y); + scaled[0] += Math.floor(this.#halfScale); + scaled[1] += Math.floor(this.#halfScale); + return scaled; + } + // Yields an array of offset points that can be plotted to mark the center of + // each grid square. (Useful for editors, development and debugging.) + // Tries to find the exact center point, but if that doesn't exist then + // this function produces a 2x2 grid of pixels in the center. + get centers() { + const o2 = this.centerOffset; + let points = []; + if (this.#halfScale % 1 === 0.5 && this.#halfScale > 0.5) { + points.push({ x: o2, y: o2 }); + } else if (this.scale >= 4) { + points.push( + { x: o2, y: o2 }, + { x: o2 - 1, y: o2 - 1 }, + { x: o2 - 1, y: o2 }, + { x: o2, y: o2 - 1 } + ); + } + return points; + } +}; +var DirtyBox = class { + box; + #left; + #top; + #right; + #bottom; + soiled = false; + constructor() { + this.box = new Box(0, 0, 0); + } + soil({ x, y }) { + if (this.#left === void 0) { + this.#left = x; + this.#right = this.#left; + } + if (this.#top === void 0) { + this.#top = y; + this.#bottom = this.#top; + } + if (x < this.#left) this.#left = x; + if (y < this.#top) this.#top = y; + if (x > this.#right) this.#right = x; + if (y > this.#bottom) this.#bottom = y; + this.box.x = this.#left; + this.box.y = this.#top; + this.box.w = this.#right - this.#left + 1; + this.box.h = this.#bottom - this.#top + 1; + this.soiled = true; + } + // Crops pixels from an image and returns the new one. + // - `image` has { width, height, pixels } + crop(image) { + const b2 = this.croppedBox(image); + const p = image.pixels; + const newP = new Uint8ClampedArray(b2.w * b2.h * 4); + for (let row = 0; row < b2.h; row += 1) { + const index = (b2.x + (b2.y + row) * image.width) * 4; + newP.set(p.subarray(index, index + b2.w * 4), row * b2.w * 4); + } + return newP; + } + croppedBox(image) { + return this.box.crop(0, 0, image.width, image.height); + } +}; +function linePointsFromAngle(x1, y1, dist5, degrees2) { + const x2 = x1 + dist5 * cos2(radians(degrees2)); + const y2 = y1 + dist5 * sin2(radians(degrees2)); + return [x1, y1, x2, y2]; +} +function pointFrom(x, y, angle3, dist5) { + return [x + dist5 * cos2(radians(angle3)), y + dist5 * sin2(radians(angle3))]; +} +var Race = class { + pos; + step; + goal; + last; + speed; + dist = 0; + quantizer; + constructor(opts = { quantized: true }) { + this.speed = opts.speed || 20; + this.step = opts.step || 5e-3; + if (opts.quantized) this.quantizer = new Quantizer({ step: this.step }); + } + // Should also reset. + start(point2) { + if (point2.length === 2) point2.push(0, 0); + this.quantizer?.start(point2); + this.pos = clone3(point2); + this.goal = clone3(point2); + this.last = clone3(point2); + this.dist = 0; + } + to(point2 = this.goal) { + if (!point2) return; + if (point2.length === 2) point2.push(0, 0); + this.goal = point2; + if (!this.pos) return false; + let out; + if (this.quantizer) { + const newPos = lerp2( + create3(), + this.pos, + point2, + 0.01 * this.speed + ); + out = this.quantizer.to(newPos); + this.pos = newPos; + } else { + const newPos = lerp2( + create3(), + this.pos, + point2, + 0.01 * this.speed + ); + this.dist += dist2(this.pos, newPos); + this.pos = newPos; + if (this.dist >= this.step) { + out = { + last: clone3(this.last), + current: this.pos, + out: [this.last, this.pos] + }; + this.dist -= this.step; + this.last = this.pos; + } else { + out = { last: this.last, current: this.pos }; + } + } + return out; + } +}; +var Quantizer = class { + pos; + step; + dist = 0; + constructor(opts) { + this.step = opts.step; + } + // Returns an array of [lastPoint, nextPoint...] + to(point2) { + if (!this.pos) return false; + let out = []; + this.dist = dist2(this.pos, point2); + let lastPoint = this.pos; + while (this.dist >= this.step) { + const nextPoint = lerp2( + create3(), + lastPoint, + point2, + this.step / this.dist + ); + out.push(lastPoint, nextPoint); + lastPoint = nextPoint; + this.dist -= this.step; + } + this.pos = lastPoint; + return { last: this.pos, current: point2, out }; + } + start(point2) { + this.pos = clone3(point2); + } +}; + +// public/aesthetic.computer/dep/nanoid/nanoid.js +var random6 = (bytes) => crypto.getRandomValues(new Uint8Array(bytes)); +var customRandom = (alphabet2, defaultSize, getRandom) => { + let mask2 = (2 << Math.log(alphabet2.length - 1) / Math.LN2) - 1; + let step = -~(1.6 * mask2 * defaultSize / alphabet2.length); + return (size = defaultSize) => { + let id = ""; + while (true) { + let bytes = getRandom(step); + let j = step; + while (j--) { + id += alphabet2[bytes[j] & mask2] || ""; + if (id.length === size) return id; + } + } + }; +}; +var customAlphabet = (alphabet2, size = 21) => customRandom(alphabet2, size, random6); +var nanoid = (size = 21) => crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => { + byte &= 63; + if (byte < 36) { + id += byte.toString(36); + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase(); + } else if (byte > 62) { + id += "-"; + } else { + id += "_"; + } + return id; +}, ""); + +// public/aesthetic.computer/lib/graph.mjs +var { round: round5, sign: mathSign, abs: abs3, ceil: ceil5, floor: floor7, sin: sin3, cos: cos3, min: min5, max: max5, sqrt: sqrt3, PI: PI2 } = Math; +var width; +var height; +var pixels; +var depthBuffer = []; +var depthEnabled = true; +function clearDepthBuffer() { + if (!depthEnabled) return; + const needed = width * height; + if (needed === 0) return; + if (depthBuffer.length !== needed) depthBuffer.length = needed; + depthBuffer.fill(Number.MAX_VALUE); +} +var writeBuffer = []; +var c = [255, 255, 255, 255]; +var c2 = null; +var panTranslation = { x: 0, y: 0 }; +var activeMask; +var skips = []; +var bitmapPixelCache = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : null; +var bitmapPixelCanvas = null; +var bitmapPixelCtx = null; +function getBitmapExtractionContext(width2, height2) { + if (typeof OffscreenCanvas !== "undefined") { + if (!(bitmapPixelCanvas instanceof OffscreenCanvas)) { + bitmapPixelCanvas = new OffscreenCanvas(width2, height2); + bitmapPixelCtx = bitmapPixelCanvas.getContext("2d"); + } + if (bitmapPixelCanvas.width !== width2) bitmapPixelCanvas.width = width2; + if (bitmapPixelCanvas.height !== height2) bitmapPixelCanvas.height = height2; + if (!bitmapPixelCtx) bitmapPixelCtx = bitmapPixelCanvas.getContext("2d"); + return bitmapPixelCtx; + } + if (typeof document !== "undefined") { + if (!bitmapPixelCanvas || typeof bitmapPixelCanvas.getContext !== "function") { + bitmapPixelCanvas = document.createElement("canvas"); + } + if (bitmapPixelCanvas.width !== width2) bitmapPixelCanvas.width = width2; + if (bitmapPixelCanvas.height !== height2) bitmapPixelCanvas.height = height2; + bitmapPixelCtx = bitmapPixelCanvas.getContext("2d"); + return bitmapPixelCtx; + } + return null; +} +function ensureBufferPixels(buffer) { + if (!buffer) return null; + if (buffer.pixels && buffer.pixels.length) return buffer.pixels; + if (bitmapPixelCache && bitmapPixelCache.has(buffer)) { + return bitmapPixelCache.get(buffer); + } + const isImageBitmap = typeof ImageBitmap !== "undefined" && buffer instanceof ImageBitmap; + const isImageData = typeof ImageData !== "undefined" && buffer instanceof ImageData; + if (isImageData) { + const pixels2 = buffer.data; + bitmapPixelCache?.set(buffer, pixels2); + return pixels2; + } + if (isImageBitmap) { + const ctx = getBitmapExtractionContext(buffer.width, buffer.height); + if (!ctx) return null; + ctx.clearRect(0, 0, buffer.width, buffer.height); + ctx.drawImage(buffer, 0, 0); + try { + const imageData = ctx.getImageData(0, 0, buffer.width, buffer.height); + const pixels2 = imageData.data; + bitmapPixelCache?.set(buffer, pixels2); + return pixels2; + } catch (err) { + console.warn("\u{1F3A8} Unable to extract pixels from ImageBitmap", err); + return null; + } + } + if (buffer.data && buffer.data.length) { + return buffer.data; + } + return null; +} +var forceReplaceMode = false; +function setForceReplaceMode(enabled = false) { + const previous = forceReplaceMode; + forceReplaceMode = !!enabled; + return previous; +} +function withForceReplaceMode(callback) { + const previous = setForceReplaceMode(true); + try { + return callback?.(); + } finally { + setForceReplaceMode(previous); + } +} +var fadeMode = false; +var fadeColors = []; +var fadeDirection = "horizontal"; +var fadeNeat = false; +var graphPerf2 = { + enabled: false, + functions: /* @__PURE__ */ new Map(), + lastFPS: 0, + // Track current FPS for frame skipping + track(name, duration) { + if (!this.enabled) return; + if (!this.functions.has(name)) { + this.functions.set(name, { count: 0, totalTime: 0, maxTime: 0 }); + } + const stats = this.functions.get(name); + stats.count++; + stats.totalTime += duration; + stats.maxTime = Math.max(stats.maxTime, duration); + if (duration > 15) { + console.warn(`\u{1F40C} SLOW GRAPH FUNCTION: ${name} took ${duration.toFixed(2)}ms`); + } + }, + reset() { + this.functions.clear(); + }, + getStats() { + const stats = []; + this.functions.forEach((data, name) => { + stats.push({ + name, + count: data.count, + totalTime: data.totalTime, + avgTime: data.totalTime / data.count, + maxTime: data.maxTime + }); + }); + return stats.sort((a2, b2) => b2.totalTime - a2.totalTime); + } +}; +if (typeof window !== "undefined") { + window.graphPerf = graphPerf2; +} +if (typeof globalThis !== "undefined") { + globalThis.graphPerf = graphPerf2; +} +var currentKidLispContext = null; +var currentRainbowColor = null; +var currentZebraColor = null; +var debug = false; +var matrixChunkyDebugCount = 0; +function matrixDebugEnabled() { + if (typeof window !== "undefined" && window?.acMatrixDebug) return true; + if (typeof globalThis !== "undefined" && globalThis?.acMatrixDebug) return true; + return false; +} +function inkFloodLoggingEnabled() { + if (typeof globalThis !== "undefined" && globalThis.AC_LOG_INK_COLORS) return true; + if (typeof process !== "undefined" && process.env?.AC_LOG_INK_COLORS === "1") return true; + return false; +} +function inkFloodLogPrefix() { + let label = null; + if (typeof process !== "undefined" && process.env?.AC_LOG_INK_LABEL) { + label = process.env.AC_LOG_INK_LABEL; + } else if (typeof globalThis !== "undefined" && globalThis.AC_LOG_INK_LABEL) { + label = globalThis.AC_LOG_INK_LABEL; + } + return label ? `[${label}] ` : ""; +} +function cloneColorForLog(color3) { + if (Array.isArray(color3)) return Array.from(color3); + return color3; +} +function cloneValueForLog(value) { + if (Array.isArray(value)) return Array.from(value); + if (value && typeof value === "object") { + try { + return JSON.parse(JSON.stringify(value)); + } catch (err) { + return String(value); + } + } + return value; +} +function isFadeColor(color3) { + return Array.isArray(color3) && color3.length > 0 && typeof color3[0] === "string" && color3[0].startsWith("fade:"); +} +function parseLocalFade(fadeType, alpha = 255) { + let processedFadeType = fadeType; + if (fadeType.includes("frame") && currentKidLispContext && currentKidLispContext.frameCount !== void 0) { + processedFadeType = fadeType.replace(/frame/g, currentKidLispContext.frameCount.toString()); + } + const colorNames = processedFadeType.split("-"); + const colors = []; + let rainbowBaseOffset = 0; + let zebraBaseOffset = 0; + for (let i2 = 0; i2 < colorNames.length; i2++) { + const colorName = colorNames[i2]; + if (colorName === "rainbow") { + const consecutiveOffset = i2 > 0 && colorNames[i2 - 1] === "rainbow" ? 1 : 0; + colors.push(["rainbow", 255, 255, 255, alpha, rainbowBaseOffset + consecutiveOffset]); + if (consecutiveOffset > 0) rainbowBaseOffset++; + } else if (colorName === "zebra") { + const consecutiveOffset = i2 > 0 && colorNames[i2 - 1] === "zebra" ? 1 : 0; + colors.push(["zebra", 255, 255, 255, alpha, zebraBaseOffset + consecutiveOffset]); + if (consecutiveOffset > 0) zebraBaseOffset++; + } else if (/^c\d+$/i.test(colorName)) { + const indexColor = parseColorIndex(colorName.toLowerCase()); + if (indexColor) { + colors.push([...indexColor.slice(0, 3), alpha]); + } + } else { + const color3 = cssColors2[colorName]; + if (color3) { + colors.push([...color3.slice(0, 3), alpha]); + } else { + colors.push([128, 128, 128, alpha]); + } + } + } + return colors.length >= 2 ? colors : null; +} +function parseFadeColor(color3) { + if (!isFadeColor(color3)) return null; + const fadeString = color3[0]; + const alpha = color3[1] || 255; + const parts = fadeString.split(":"); + if (parts.length < 2 || parts.length > 5 || parts[0] !== "fade") { + return null; + } + let isNeat = true; + let fadeType = parts[1]; + let direction = parts[2] || "horizontal"; + if (parts[1] === "dirty" && parts[2]) { + isNeat = false; + fadeType = parts[2]; + direction = parts[3] || "horizontal"; + } else if (parts[2] === "dirty") { + isNeat = false; + direction = "horizontal"; + } else if (parts[3] === "dirty") { + isNeat = false; + direction = parts[2]; + } else if (parts.includes("dirty")) { + isNeat = false; + const filteredParts = parts.filter((p) => p !== "dirty"); + if (filteredParts.length >= 2) { + fadeType = filteredParts[1]; + direction = filteredParts[2] || "horizontal"; + } + } else if (parts[1] === "neat" && parts[2]) { + isNeat = true; + fadeType = parts[2]; + direction = parts[3] || "horizontal"; + } else if (parts[2] === "neat") { + isNeat = true; + direction = "horizontal"; + } else if (parts[3] === "neat") { + isNeat = true; + direction = parts[2]; + } else if (parts.includes("neat")) { + isNeat = true; + const filteredParts = parts.filter((p) => p !== "neat"); + if (filteredParts.length >= 2) { + fadeType = filteredParts[1]; + direction = filteredParts[2] || "horizontal"; + } + } + const fadeColors2 = parseLocalFade(fadeType, alpha); + if (!fadeColors2) return null; + const evaluatedDirection = evaluateFadeDirection(direction); + return { + colors: fadeColors2, + direction: evaluatedDirection, + // Use evaluated direction (can be numeric angle) + neat: isNeat + // Local neat flag, no global state + }; +} +function getLocalFadeColor(t2, x = 0, y = 0, fadeInfo) { + if (!fadeInfo) { + return c.slice(); + } + const colors = Array.isArray(fadeInfo) ? fadeInfo : fadeInfo.colors; + if (!colors || colors.length < 2) { + return c.slice(); + } + t2 = Math.max(0, Math.min(1, t2)); + const segments = colors.length - 1; + const segment = Math.min(Math.floor(t2 * segments), segments - 1); + const localT = t2 * segments - segment; + const color1 = colors[segment]; + const color22 = colors[segment + 1] || colors[segment]; + if (!color1 || !color22) { + console.warn("\u{1F6A8} getLocalFadeColor: Invalid color data", { segment, colors, t: t2 }); + return c.slice(); + } + if (color1[0] === "zebra" || color22[0] === "zebra") { + if (color1[0] === "zebra" && color22[0] === "zebra") { + const offset1 = color1[5] || 0; + const offset2 = color22[5] || 0; + const zebra1 = zebra(offset1); + const zebra2 = zebra(offset2); + const alpha1 = color1[4] || 255; + const alpha2 = color22[4] || 255; + const alpha = Math.round(alpha1 + (alpha2 - alpha1) * localT); + return [ + Math.round(zebra1[0] + (zebra2[0] - zebra1[0]) * localT), + Math.round(zebra1[1] + (zebra2[1] - zebra1[1]) * localT), + Math.round(zebra1[2] + (zebra2[2] - zebra1[2]) * localT), + alpha + ]; + } else if (color1[0] === "zebra") { + const offset1 = color1[5] || 0; + const zebra1 = zebra(offset1); + const alpha1 = color1[4] || 255; + let color2RGB; + let alpha2; + if (color22[0] === "rainbow") { + const offset2 = color22[5] || 0; + color2RGB = rainbow(offset2); + alpha2 = color22[4] || 255; + } else { + color2RGB = [color22[0], color22[1], color22[2]]; + alpha2 = color22[3] || 255; + } + return [ + Math.round(zebra1[0] + (color2RGB[0] - zebra1[0]) * localT), + Math.round(zebra1[1] + (color2RGB[1] - zebra1[1]) * localT), + Math.round(zebra1[2] + (color2RGB[2] - zebra1[2]) * localT), + Math.round(alpha1 + (alpha2 - alpha1) * localT) + ]; + } else { + const offset2 = color22[5] || 0; + const zebra2 = zebra(offset2); + const alpha1 = color1[3] || 255; + const alpha2 = color22[4] || 255; + return [ + Math.round(color1[0] + (zebra2[0] - color1[0]) * localT), + Math.round(color1[1] + (zebra2[1] - color1[1]) * localT), + Math.round(color1[2] + (zebra2[2] - color1[2]) * localT), + Math.round(alpha1 + (alpha2 - alpha1) * localT) + ]; + } + } + if (color1[0] === "rainbow" || color22[0] === "rainbow") { + if (color1[0] === "rainbow" && color22[0] === "rainbow") { + const offset1 = color1[5] || 0; + const offset2 = color22[5] || 0; + const rainbow1 = rainbow(offset1); + const rainbow2 = rainbow(offset2); + const alpha1 = color1[4] || 255; + const alpha2 = color22[4] || 255; + const alpha = Math.round(alpha1 + (alpha2 - alpha1) * localT); + return [ + Math.round(rainbow1[0] + (rainbow2[0] - rainbow1[0]) * localT), + Math.round(rainbow1[1] + (rainbow2[1] - rainbow1[1]) * localT), + Math.round(rainbow1[2] + (rainbow2[2] - rainbow1[2]) * localT), + alpha + ]; + } else if (color1[0] === "rainbow") { + const offset1 = color1[5] || 0; + const rainbow1 = rainbow(offset1); + const alpha1 = color1[4] || 255; + let color2RGB; + let alpha2; + if (color22[0] === "zebra") { + const offset2 = color22[5] || 0; + color2RGB = zebra(offset2); + alpha2 = color22[4] || 255; + } else { + color2RGB = [color22[0], color22[1], color22[2]]; + alpha2 = color22[3] || 255; + } + return [ + Math.round(rainbow1[0] + (color2RGB[0] - rainbow1[0]) * localT), + Math.round(rainbow1[1] + (color2RGB[1] - rainbow1[1]) * localT), + Math.round(rainbow1[2] + (color2RGB[2] - rainbow1[2]) * localT), + Math.round(alpha1 + (alpha2 - alpha1) * localT) + ]; + } else { + const offset2 = color22[5] || 0; + const rainbow2 = rainbow(offset2); + const alpha1 = color1[3] || 255; + const alpha2 = color22[4] || 255; + return [ + Math.round(color1[0] + (rainbow2[0] - color1[0]) * localT), + Math.round(color1[1] + (rainbow2[1] - color1[1]) * localT), + Math.round(color1[2] + (rainbow2[2] - color1[2]) * localT), + Math.round(alpha1 + (alpha2 - alpha1) * localT) + ]; + } + } + if (color1[0] === "zebra" || color22[0] === "zebra") { + console.log("\u{1F993} Taking zebra branch"); + if (color1[0] === "zebra" && color22[0] === "zebra") { + const offset1 = color1[5] || 0; + const offset2 = color22[5] || 0; + const zebra1 = zebra(offset1); + const zebra2 = zebra(offset2); + const alpha1 = color1[4] || 255; + const alpha2 = color22[4] || 255; + const alpha = Math.round(alpha1 + (alpha2 - alpha1) * localT); + return [ + Math.round(zebra1[0] + (zebra2[0] - zebra1[0]) * localT), + Math.round(zebra1[1] + (zebra2[1] - zebra1[1]) * localT), + Math.round(zebra1[2] + (zebra2[2] - zebra1[2]) * localT), + alpha + ]; + } else if (color1[0] === "zebra") { + const offset1 = color1[5] || 0; + const zebra1 = zebra(offset1); + console.log("\u{1F993} DEBUG zebra first:", { offset1, zebra1, color1 }); + const alpha1 = color1[4] || 255; + let color2RGB; + let alpha2; + if (color22[0] === "rainbow") { + const offset2 = color22[5] || 0; + color2RGB = rainbow(offset2); + alpha2 = color22[4] || 255; + } else { + color2RGB = [color22[0], color22[1], color22[2]]; + alpha2 = color22[3] || 255; + } + return [ + Math.round(zebra1[0] + (color2RGB[0] - zebra1[0]) * localT), + Math.round(zebra1[1] + (color2RGB[1] - zebra1[1]) * localT), + Math.round(zebra1[2] + (color2RGB[2] - zebra1[2]) * localT), + Math.round(alpha1 + (alpha2 - alpha1) * localT) + ]; + } else { + const offset2 = color22[5] || 0; + const zebra2 = zebra(offset2); + const alpha1 = color1[3] || 255; + const alpha2 = color22[4] || 255; + return [ + Math.round(color1[0] + (zebra2[0] - color1[0]) * localT), + Math.round(color1[1] + (zebra2[1] - color1[1]) * localT), + Math.round(color1[2] + (zebra2[2] - color1[2]) * localT), + Math.round(alpha1 + (alpha2 - alpha1) * localT) + ]; + } + } + const r2 = Math.round(color1[0] + (color22[0] - color1[0]) * localT); + const g = Math.round(color1[1] + (color22[1] - color1[1]) * localT); + const b2 = Math.round(color1[2] + (color22[2] - color1[2]) * localT); + const a2 = Math.round(color1[3] + (color22[3] - color1[3]) * localT); + if (!fadeInfo.neat) { + const noiseAmount = 8; + const noiseR = (Math.random() - 0.5) * noiseAmount; + const noiseG = (Math.random() - 0.5) * noiseAmount; + const noiseB = (Math.random() - 0.5) * noiseAmount; + return [ + Math.max(0, Math.min(255, r2 + noiseR)), + Math.max(0, Math.min(255, g + noiseG)), + Math.max(0, Math.min(255, b2 + noiseB)), + a2 + ]; + } + return [r2, g, b2, a2]; +} +var twoDCommands; +function twoD(ref) { + twoDCommands = ref; +} +function makeBuffer(width2, height2, fillProcess, painting2, api) { + if (!width2 || !height2) return; + const bufferStart = performance.now(); + const imageData = new ImageData(width2, height2); + const buffer = { + pixels: imageData.data, + width: imageData.width, + height: imageData.height + }; + buffer.api = api; + if (typeof fillProcess === "function") { + const savedBuffer = getBuffer(); + const rc = c.slice(); + const savedPan = { x: panTranslation.x, y: panTranslation.y }; + panTranslation.x = 0; + panTranslation.y = 0; + setBuffer(buffer); + api.screen.pixels = buffer.pixels; + try { + fillProcess(api); + if (painting2 && typeof painting2.paint === "function") { + painting2.paint(true); + } + } catch (error) { + console.warn("\u26A0\uFE0F makeBuffer fillProcess error:", error); + } + panTranslation.x = savedPan.x; + panTranslation.y = savedPan.y; + setBuffer(savedBuffer); + color(...rc); + } + const bufferTime = performance.now() - bufferStart; + return buffer; +} +function cloneBuffer(buffer) { + return { + width: buffer.width, + height: buffer.height, + pixels: new Uint8ClampedArray(buffer.pixels) + }; +} +function getBuffer() { + return { width, height, pixels }; +} +function setBuffer(buffer) { + if (buffer.pixels && buffer.pixels.buffer && buffer.pixels.buffer.detached) { + console.warn("\u{1F6A8} Detected detached pixels buffer in setBuffer, recreating... (This should be rare now)"); + buffer.pixels = new Uint8ClampedArray(buffer.width * buffer.height * 4); + buffer.pixels.fill(0); + } + ({ width, height, pixels } = buffer); +} +function changePixels(changer) { + changer(pixels, width, height); +} +function pixel(x, y, painting2 = { width, height, pixels }) { + const buffer = painting2.pixels; + if (x >= painting2.width || y >= painting2.height || x < 0 || y < 0) { + return [0, 0, 0, 0]; + } + const i2 = (floor7(x) + floor7(y) * painting2.width) * 4; + return [buffer[i2], buffer[i2 + 1], buffer[i2 + 2], buffer[i2 + 3]]; +} +function colorsMatch(color1, color22) { + if (!color1) return false; + return color1[0] === color22[0] && color1[1] === color22[1] && color1[2] === color22[2] && color1[3] === color22[3]; +} +function flood(x, y, fillColor = c) { + if (x < 0 || y < 0 || x >= width || y >= height) { + return { color: [0, 0, 0, 0], area: 0 }; + } + const targetColor = pixel(x, y); + if (targetColor[3] === 0) { + return { + color: targetColor, + area: 0 + }; + } + const previousColorState = cloneColorForLog(c); + const resolvedFillColor = findColor2(fillColor); + if (inkFloodLoggingEnabled()) { + console.log( + `${inkFloodLogPrefix()}\u{1F30A} FLOOD DEBUG`, + { + input: cloneValueForLog(fillColor), + resolved: cloneColorForLog(resolvedFillColor), + previous: previousColorState, + origin: { x, y }, + target: cloneColorForLog(targetColor) + } + ); + } + if (gpuFloodEnabled && gpuFloodAvailable && gpuAllowed("flood") && gpuSpinModule && pixels && width && height) { + const floodStart = performance.now(); + const result = gpuSpinModule.gpuFlood( + pixels, + width, + height, + x, + y, + targetColor, + resolvedFillColor + ); + if (result.success) { + gpuOk("flood"); + const floodTime = performance.now() - floodStart; + graphPerf2.track("flood-gpu", floodTime); + if (inkFloodLoggingEnabled()) { + console.log( + `${inkFloodLogPrefix()}\u{1F30A} GPU FLOOD RESULT (JFA)`, + { + resolved: cloneColorForLog(resolvedFillColor), + previous: previousColorState, + area: result.area, + timeMs: floodTime.toFixed(2) + } + ); + } + return { + color: targetColor, + area: result.area + }; + } + gpuFailed("flood"); + } + const cpuStart = performance.now(); + let count = 0; + const visited = new Uint8Array(width * height); + const stack = [[x, y]]; + color(...resolvedFillColor); + const oldColor = c.slice(); + while (stack.length) { + const [cx, cy] = stack.pop(); + if (cx < 0 || cy < 0 || cx >= width || cy >= height) continue; + const index = cy * width + cx; + if (visited[index]) continue; + visited[index] = 1; + const currentColor = pixel(cx, cy); + if (colorsMatch(currentColor, targetColor)) { + count++; + plot(cx, cy); + if (cx + 1 < width) stack.push([cx + 1, cy]); + if (cx > 0) stack.push([cx - 1, cy]); + if (cy + 1 < height) stack.push([cx, cy + 1]); + if (cy > 0) stack.push([cx, cy - 1]); + } + } + color(...oldColor); + const cpuTime = performance.now() - cpuStart; + graphPerf2.track("flood-cpu", cpuTime); + if (inkFloodLoggingEnabled()) { + console.log( + `${inkFloodLogPrefix()}\u{1F30A} CPU FLOOD RESULT`, + { + resolved: cloneColorForLog(resolvedFillColor), + previous: previousColorState, + area: count, + timeMs: cpuTime.toFixed(2) + } + ); + } + return { + color: targetColor, + area: count + }; +} +function resetRainbowCache2() { + currentRainbowColor = null; + currentZebraColor = null; + resetRainbowCache(); +} +function getFadeColor(t2, x = 0, y = 0) { + if (!fadeMode || fadeColors.length < 2) { + return c.slice(); + } + const fadeInfo = { + colors: fadeColors, + direction: fadeDirection, + neat: fadeNeat + }; + return getLocalFadeColor(t2, x, y, fadeInfo); +} +function normalizeColorInput(value) { + if (value === void 0 || value === null) return value; + if (typeof value === "object") { + if (typeof value.name === "string") { + return normalizeColorInput(value.name); + } + if (typeof value.value === "string") { + return normalizeColorInput(value.value); + } + if (typeof value.toString === "function" && value.toString !== Object.prototype.toString) { + return normalizeColorInput(value.toString()); + } + } + if (typeof value !== "string") return value; + let normalized = value.trim(); + if (normalized.startsWith("'") && !normalized.endsWith("'")) { + normalized = normalized.slice(1); + } + const quotePairs = ["'", '"', "`"]; + for (const quote of quotePairs) { + if (normalized.startsWith(quote) && normalized.endsWith(quote) && normalized.length > 1) { + normalized = normalized.slice(1, -1).trim(); + break; + } + } + if (normalized.startsWith("|") && normalized.endsWith("|") && normalized.length > 2) { + normalized = normalized.slice(1, -1); + } + const smartQuotes = ["\u201C", "\u201D", "\u2018", "\u2019"]; + if (smartQuotes.includes(normalized[0])) normalized = normalized.slice(1); + if (smartQuotes.includes(normalized[normalized.length - 1])) normalized = normalized.slice(0, -1); + if (normalized.startsWith("fade:")) { + const fadeContent = normalized.slice(5); + normalized = `fade:${fadeContent.toLowerCase()}`; + } else if (!(normalized.startsWith("#") || normalized.startsWith("0x"))) { + normalized = normalized.toLowerCase(); + } + return normalized; +} +function findColor2() { + const n2 = arguments.length; + if (n2 === 3 || n2 === 4) { + const r2 = arguments[0], g = arguments[1], b2 = arguments[2]; + const a2 = n2 === 4 ? arguments[3] : 255; + if (typeof r2 === "number" && typeof g === "number" && typeof b2 === "number" && typeof a2 === "number" && r2 === r2 && g === g && b2 === b2 && a2 === a2) return [r2, g, b2, a2]; + } + let args = [...arguments]; + if (args.length === 1 && args[0] !== void 0) { + const isNumber = () => typeof args[0] === "number"; + const isArray = () => Array.isArray(args[0]); + const isString = () => typeof args[0] === "string"; + const isFadeObject = () => typeof args[0] === "object" && args[0] !== null && args[0].type === "fade"; + const isBool = typeof args[0] === "boolean"; + if (isFadeObject()) { + const fadeObj = args[0]; + const alphaValue = Array.isArray(fadeObj.alpha) ? fadeObj.alpha[0] : fadeObj.alpha; + const fadeColorArray = [fadeObj.fadeString, alphaValue || 255]; + return fadeColorArray; + } + if (isBool) { + resetRainbowCache2(); + return args[0] ? [255, 255, 255, 255] : [0, 0, 0, 255]; + } + if (!isNumber() && !isArray() && !isString() && !isFadeObject()) + return findColor2(any(args[0])); + if (isNumber()) { + resetRainbowCache2(); + if (args[0] > 255) { + args = hexToRgb(args[0]); + } else { + args = Array.from(args); + args.push(args[0], args[0]); + } + } else if (isArray()) { + return findColor2(...args[0]); + } else if (isString()) { + const normalizedString = normalizeColorInput(args[0]); + if (typeof normalizedString === "string") { + args[0] = normalizedString; + } + if (args[0].startsWith("fade:")) { + return [args[0], 255]; + } + resetRainbowCache2(); + const indexColor = parseColorIndex(args[0]); + if (indexColor) { + if (indexColor[0] === "rainbow") { + args = rainbow(); + } else { + args = indexColor; + } + } else if (args[0] === "erase") { + const originalAlpha = arguments[1]; + args = [-1, -1, -1]; + if (originalAlpha !== void 0) args.push(computeAlpha(originalAlpha)); + } else if (args[0] === "rainbow") { + args = rainbow(); + } else if (args[0] === "zebra") { + args = zebra(); + } else { + const cleanedHex = args[0].replace("#", "").replace("0x", "").toUpperCase(); + if (isHexString(cleanedHex) === true) { + args = hexToRgb(cleanedHex); + } else if (args[0].startsWith("fade:")) { + args = [0, 0, 0]; + args.push(255); + } else { + const cssColor = cssColors2[args[0]]; + if (cssColor) { + args = cssColor; + } else { + args = randIntArr(255, 3); + args.push(255); + if (debug) { + console.warn("\u26A0\uFE0F findColor: Unknown color string", normalizedString, "\u2192 falling back to random color"); + } + } + } + } + } + } else if (args.length === 2) { + if (args[0] === "rainbow") { + args = [...rainbow(), computeAlpha(args[1])]; + } else if (args[0] === "zebra") { + args = [...zebra(), computeAlpha(args[1])]; + } else if (typeof args[0] === "string") { + const normalizedString = normalizeColorInput(args[0]); + if (typeof normalizedString === "string") { + args[0] = normalizedString; + } + if (args[0].startsWith("fade:")) { + const fadeString = args[0]; + const alpha = computeAlpha(args[1] || 255); + return [fadeString, alpha]; + } + const indexColor = parseColorIndex(args[0]); + if (indexColor) { + if (indexColor[0] === "rainbow") { + args = [...rainbow(), computeAlpha(args[1])]; + } else { + args = [...indexColor, computeAlpha(args[1])]; + } + } else { + const cssColor = cssColors2[args[0]]; + if (cssColor) { + args = [...cssColor, computeAlpha(args[1])]; + } else { + args = [0, 0, 0, computeAlpha(args[1])]; + if (debug) { + console.warn("\u26A0\uFE0F findColor: Unknown color string with alpha", normalizedString, "\u2192 defaulting to black"); + } + } + } + } else if (Array.isArray(args[0])) { + const baseColor = [...args[0]]; + if (args.length > 1 && args[1] !== void 0) { + const alphaValue = computeAlpha(args[1]); + if (baseColor.length >= 4) { + baseColor[3] = alphaValue; + } else { + baseColor.push(alphaValue); + } + } + args = baseColor; + } else if (args[0] === void 0) { + const alphaValue = args[1]; + args = randIntArr(255, 3); + args.push(computeAlpha(alphaValue)); + } else { + args = [args[0], args[0], args[0], args[1]]; + } + } else if (args.length === 0 || args.length === 1 && args[0] === void 0) { + args = randIntArr(255, 3); + args.push(255); + } + if (args.length === 3) args = [...args, 255]; + if (args.some((val) => val === void 0 || isNaN(val) && !(typeof val === "string" && val.startsWith("fade:")) || typeof val === "string" && val.match(/^\d*\.?\d+s\.\.\.?$/))) { + const fadeString = args.find((val) => typeof val === "string" && val.startsWith("fade:")); + if (fadeString) { + const alpha = args.find((val) => typeof val === "number" && !isNaN(val)) || 255; + return [fadeString, alpha]; + } + args = args.filter((val) => !(typeof val === "string" && val.match(/^\d*\.?\d+s\.\.\.?$/))); + while (args.length < 3) { + args.push(255); + } + if (args.length === 3) args.push(255); + args = args.map((val, i2) => { + if (val === void 0 || isNaN(val) || typeof val === "string") { + return i2 === 3 ? 255 : randInt(255); + } + return val; + }); + args = args.slice(0, 4); + while (args.length < 4) { + args.push(args.length === 3 ? 255 : randInt(255)); + } + } + args.forEach((a2, i2) => { + if (isNaN(args[i2])) args[i2] = randInt(255); + }); + return args; +} +function computeAlpha(alpha) { + if (alpha > 0 && alpha < 1) alpha = round5(alpha * 255); + return alpha; +} +function setColor(r2, g, b2, a2 = 255) { + c[0] = floor7(r2); + c[1] = floor7(g); + c[2] = floor7(b2); + c[3] = floor7(a2); + return c.slice(); +} +function color(r2, g, b2, a2 = 255) { + if (arguments.length === 0) return c.slice(); + if (typeof r2 === "string" && r2.startsWith("fade:")) { + c[0] = r2; + c[1] = g || 255; + c[2] = 0; + c[3] = 255; + return c.slice(); + } + if (arguments.length === 1 && Array.isArray(r2) && typeof r2[0] === "string" && r2[0].startsWith("fade:")) { + c[0] = r2[0]; + c[1] = r2[1] || 255; + c[2] = 0; + c[3] = 255; + return c.slice(); + } + return setColor(r2, g, b2, a2); +} +function color2(r2, g, b2, a2 = 255) { + if (arguments.length === 0) return c2.slice(); + if (r2 === void 0 || r2 === null) { + c2 = null; + return; + } + if (!c2) c2 = []; + c2[0] = floor7(r2); + c2[1] = floor7(g); + c2[2] = floor7(b2); + c2[3] = floor7(a2); + return c2.slice(); +} +function evaluateFadeDirection(directionStr) { + const numericAngle = parseFloat(directionStr); + if (!isNaN(numericAngle)) { + return numericAngle; + } + const validDirections = [ + "horizontal", + "horizontal-reverse", + "vertical", + "vertical-reverse", + "diagonal", + "diagonal-reverse" + ]; + if (validDirections.includes(directionStr)) { + return directionStr; + } + const trimmed = directionStr.trim(); + if (/^-?\d+(\.\d+)?$/.test(trimmed)) { + const parsed = parseFloat(trimmed); + if (!isNaN(parsed)) { + return parsed; + } + } + if (currentKidLispContext) { + try { + if (directionStr.startsWith('"') || directionStr.startsWith("[")) { + const parsedExpression = JSON.parse(directionStr); + const result = currentKidLispContext.evaluate(parsedExpression, currentKidLispContext.api, currentKidLispContext.env); + const numResult = parseFloat(result); + if (!isNaN(numResult)) { + return numResult; + } + } else { + const result = currentKidLispContext.evaluate(directionStr, currentKidLispContext.api, currentKidLispContext.env); + const numResult = parseFloat(result); + if (!isNaN(numResult)) { + return numResult; + } + } + } catch (error) { + console.warn("Failed to evaluate fade direction expression:", directionStr, error); + } + } + console.warn("Invalid fade direction, falling back to horizontal:", directionStr); + return "horizontal"; +} +function calculateAngleFadePosition(x, y, minX, minY, maxX, maxY, angle3) { + const originalAngle = angle3; + angle3 = (angle3 % 360 + 360) % 360; + const areaWidth = maxX - minX; + const areaHeight = maxY - minY; + const centerX = minX + areaWidth / 2; + const centerY = minY + areaHeight / 2; + const relX = (x - centerX) / (areaWidth / 2); + const relY = (y - centerY) / (areaHeight / 2); + const radians2 = angle3 * Math.PI / 180; + const dirX = Math.cos(radians2); + const dirY = -Math.sin(radians2); + const dotProduct = relX * dirX + relY * dirY; + const maxDot = Math.sqrt(2); + const t2 = (dotProduct + maxDot) / (2 * maxDot); + if (x < minX + 3 && y < minY + 3) { + } + return Math.max(0, Math.min(1, t2)); +} +function clear() { + clearDepthBuffer(); + cleanupBlurBuffers(); + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = activeMask.x; + minY = activeMask.y; + maxX = activeMask.x + activeMask.width; + maxY = activeMask.y + activeMask.height; + } + const fadeInfo = parseFadeColor(c); + const isLocalFade = fadeInfo !== null; + if (isLocalFade) { + const colors = fadeInfo.colors; + const hasSpecialColors = colors.some((col) => col[0] === "rainbow" || col[0] === "zebra"); + if (!hasSpecialColors && colors.length >= 2) { + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + const direction = fadeInfo.direction; + const numColors = colors.length; + const numSegments = numColors - 1; + const interpolateMultiColor = (t2) => { + t2 = Math.max(0, Math.min(1, t2)); + const segment = Math.min(Math.floor(t2 * numSegments), numSegments - 1); + const localT = t2 * numSegments - segment; + const c1 = colors[segment]; + const c22 = colors[segment + 1]; + return [ + c1[0] + (c22[0] - c1[0]) * localT | 0, + c1[1] + (c22[1] - c1[1]) * localT | 0, + c1[2] + (c22[2] - c1[2]) * localT | 0, + (c1[3] ?? 255) + ((c22[3] ?? 255) - (c1[3] ?? 255)) * localT | 0 + ]; + }; + if (direction === "vertical" || direction === "vertical-reverse") { + const reverse2 = direction === "vertical-reverse"; + const maxT = Math.max(1, workingHeight - 1); + for (let y = minY; y < maxY; y++) { + const t2 = reverse2 ? (maxY - 1 - y) / maxT : (y - minY) / maxT; + const [r2, g, b2, a2] = interpolateMultiColor(t2); + const rowStart = (y * width + minX) * 4; + pixels[rowStart] = r2; + pixels[rowStart + 1] = g; + pixels[rowStart + 2] = b2; + pixels[rowStart + 3] = a2; + const rowWidth = workingWidth * 4; + for (let copySize = 4; copySize < rowWidth; copySize *= 2) { + const copyEnd = Math.min(copySize * 2, rowWidth); + pixels.copyWithin(rowStart + copySize, rowStart, rowStart + copyEnd - copySize); + } + } + return; + } else if (direction === "horizontal" || direction === "horizontal-reverse") { + const reverse2 = direction === "horizontal-reverse"; + const maxT = Math.max(1, workingWidth - 1); + const rowColors = new Uint8ClampedArray(workingWidth * 4); + for (let x = 0; x < workingWidth; x++) { + const t2 = reverse2 ? (workingWidth - 1 - x) / maxT : x / maxT; + const [r2, g, b2, a2] = interpolateMultiColor(t2); + const idx = x * 4; + rowColors[idx] = r2; + rowColors[idx + 1] = g; + rowColors[idx + 2] = b2; + rowColors[idx + 3] = a2; + } + for (let y = minY; y < maxY; y++) { + const rowStart = (y * width + minX) * 4; + pixels.set(rowColors, rowStart); + } + return; + } else if (direction === "diagonal" || direction === "diagonal-reverse") { + const reverse2 = direction === "diagonal-reverse"; + const maxTx = Math.max(1, workingWidth - 1); + const maxTy = Math.max(1, workingHeight - 1); + for (let y = minY; y < maxY; y++) { + const dy = reverse2 ? (maxY - 1 - y) / maxTy : (y - minY) / maxTy; + const rowOffset = y * width; + for (let x = minX; x < maxX; x++) { + const dx = reverse2 ? (maxX - 1 - x) / maxTx : (x - minX) / maxTx; + const t2 = (dx + dy) * 0.5; + const [r2, g, b2, a2] = interpolateMultiColor(t2); + const i2 = (rowOffset + x) * 4; + pixels[i2] = r2; + pixels[i2 + 1] = g; + pixels[i2 + 2] = b2; + pixels[i2 + 3] = a2; + } + } + return; + } + } + } + if (isLocalFade) { + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + let t2 = 0; + const numericAngle = parseFloat(fadeInfo.direction); + if (!isNaN(numericAngle)) { + t2 = calculateAngleFadePosition(x, y, minX, minY, maxX - 1, maxY - 1, numericAngle); + } else { + if (fadeInfo.direction === "horizontal") { + t2 = (x - minX) / Math.max(1, maxX - 1 - minX); + } else if (fadeInfo.direction === "horizontal-reverse") { + t2 = (maxX - 1 - x) / Math.max(1, maxX - 1 - minX); + } else if (fadeInfo.direction === "vertical") { + t2 = (y - minY) / Math.max(1, maxY - 1 - minY); + } else if (fadeInfo.direction === "vertical-reverse") { + t2 = (maxY - 1 - y) / Math.max(1, maxY - 1 - minY); + } else if (fadeInfo.direction === "diagonal") { + const dx = (x - minX) / Math.max(1, maxX - 1 - minX); + const dy = (y - minY) / Math.max(1, maxY - 1 - minY); + t2 = (dx + dy) / 2; + } else if (fadeInfo.direction === "diagonal-reverse") { + const dx = (maxX - 1 - x) / Math.max(1, maxX - 1 - minX); + const dy = (maxY - 1 - y) / Math.max(1, maxY - 1 - minY); + t2 = (dx + dy) / 2; + } else { + t2 = (x - minX) / Math.max(1, maxX - 1 - minX); + } + } + const fadeColor = getLocalFadeColor(t2, x, y, fadeInfo); + const i2 = (x + y * width) * 4; + if (i2 >= 0 && i2 < pixels.length - 3) { + pixels[i2] = fadeColor[0]; + pixels[i2 + 1] = fadeColor[1]; + pixels[i2 + 2] = fadeColor[2]; + pixels[i2 + 3] = fadeColor[3]; + } + } + } + } else if (activeMask) { + const rowWidth = (maxX - minX) * 4; + for (let y = minY; y < maxY; y++) { + const rowStart = (y * width + minX) * 4; + pixels[rowStart] = c[0]; + pixels[rowStart + 1] = c[1]; + pixels[rowStart + 2] = c[2]; + pixels[rowStart + 3] = c[3]; + if (rowWidth > 4) { + for (let copySize = 4; copySize < rowWidth; copySize *= 2) { + const copyEnd = Math.min(copySize * 2, rowWidth); + pixels.copyWithin(rowStart + copySize, rowStart, rowStart + copyEnd - copySize); + } + } + } + } else { + if (c[0] === 0 && c[1] === 0 && c[2] === 0 && c[3] === 0) { + pixels.fill(0); + return; + } + pixels[0] = c[0]; + pixels[1] = c[1]; + pixels[2] = c[2]; + pixels[3] = c[3]; + for (let copySize = 4; copySize < pixels.length; copySize *= 2) { + const copyEnd = Math.min(copySize * 2, pixels.length); + pixels.copyWithin(copySize, 0, copyEnd - copySize); + } + } +} +function plot(x, y) { + x = floor7(x); + y = floor7(y); + if (!pixels) return; + if (x < 0 || x >= width || y < 0 || y >= height) return; + if (activeMask) { + if (y < activeMask.y || y >= activeMask.y + activeMask.height || x >= activeMask.x + activeMask.width || x < activeMask.x) + return; + } + for (const s2 of skips) if (x === s2.x && y === s2.y) return; + const i2 = (x + y * width) * 4; + if (i2 < 0 || i2 + 3 >= pixels.length) return; + const alpha = c[3]; + let plotColor = c; + if (typeof c[0] === "string" && c[0].startsWith("fade:")) { + const fadeInfo = parseLocalFade(c[0]); + if (fadeInfo) { + const resolvedColor = getLocalFadeColor(null, x, y, fadeInfo); + plotColor = [...resolvedColor, c[1] || 255]; + } else { + plotColor = [0, 0, 0, 0]; + } + } + if (forceReplaceMode) { + pixels[i2] = plotColor[0] ?? 0; + pixels[i2 + 1] = plotColor[1] ?? 0; + pixels[i2 + 2] = plotColor[2] ?? 0; + pixels[i2 + 3] = plotColor[3] ?? alpha; + return; + } + if (c[0] === -1 && c[1] === -1 && c[2] === -1) { + const na = 1 - c[3] / 255; + erase(pixels, i2, na); + if (eraseTarget) { + const pi = i2 >> 2; + eraseTarget[pi] = 255 - ((255 - eraseTarget[pi]) * na + 0.5) | 0; + } + } else if (alpha === 255) { + pixels.set(plotColor, i2); + } else if (alpha !== 0) { + blend2(pixels, plotColor, 0, i2); + } +} +function skip(...args) { + if (args[0] === null) skips.length = 0; + else + args.forEach((p) => { + skips.push({ + x: floor7(p.x || p[0]) + panTranslation.x, + y: floor7(p.y || p[1]) + panTranslation.y + }); + }); +} +function point(...args) { + let x, y; + if (args.length === 1) { + if (args[0].length >= 2) { + x = args[0][0]; + y = args[0][1]; + } else { + x = args[0].x; + y = args[0].y; + } + } else if (args.length >= 2) { + x = args[0]; + y = args[1]; + } else { + x = randInt(width); + y = randInt(height); + } + x += panTranslation.x; + y += panTranslation.y; + plot(x, y); + return [x, y]; +} +function shadePixels(points, shader, shaderArgs = []) { + points.forEach((p) => { + if (p.x < 0) return; + if (p.x >= width) return; + if (p.y < 0) return; + if (p.y >= height) return; + shader.position?.(p, ...shaderArgs); + if (p.x < 0) return; + if (p.x >= width) return; + if (p.y < 0) return; + if (p.y >= height) return; + p.x = floor7(p.x); + p.y = floor7(p.y); + const n2 = p.x + p.y * width; + if (writeBuffer[n2] !== 1) { + writeBuffer[n2] = 1; + const i2 = floor7(p.x + p.y * width) * 4; + const pixel2 = pixels.subarray(i2, i2 + 4); + shader.color({ x: p.x, y: p.y }, pixel2, c, p.color); + } + }); +} +function pan(x, y) { + if (typeof x === "object") { + x = x.x; + y = x.y; + } + if (y === void 0) y = x; + panTranslation.x += floor7(x); + panTranslation.y += floor7(y); +} +function unpan() { + panTranslation.x = 0; + panTranslation.y = 0; +} +var savedPanTranslation; +function savepan() { + savedPanTranslation = { ...panTranslation }; +} +function loadpan() { + if (savedPanTranslation) { + panTranslation.x = savedPanTranslation.x; + panTranslation.y = savedPanTranslation.y; + } +} +function mask(box2) { + activeMask = box2; +} +function unmask() { + activeMask = null; +} +function copy7(destX, destY, srcX, srcY, src, alpha = 1) { + destX = floor7(destX); + destY = floor7(destY); + srcX = floor7(srcX); + srcY = floor7(srcY); + if (destX < 0 || destX >= width || destY < 0 || destY >= height || srcX < 0 || srcX >= src.width || srcY < 0 || srcY >= src.height) { + return; + } + const di = (destX + destY * width) * 4; + const si = (srcX + srcY * src.width) * 4; + blend2(pixels, src.pixels, si, di, alpha); +} +function resize(bitmap, width2, height2) { + const ratioX = bitmap.width / width2; + const ratioY = bitmap.height / height2; + const pixels2 = new Uint8ClampedArray(width2 * height2 * 4); + for (let y = 0; y < height2; y += 1) { + for (let x = 0; x < width2; x += 1) { + const index = (y * width2 + x) * 4; + const srcX = floor7(x * ratioX); + const srcY = floor7(y * ratioY); + const srcIndex = (srcY * bitmap.width + srcX) * 4; + pixels2[index] = bitmap.pixels[srcIndex]; + pixels2[index + 1] = bitmap.pixels[srcIndex + 1]; + pixels2[index + 2] = bitmap.pixels[srcIndex + 2]; + pixels2[index + 3] = bitmap.pixels[srcIndex + 3]; + } + } + return { pixels: pixels2, width: width2, height: height2 }; +} +var cachedContrastLUT = null; +var cachedContrastLevel = null; +function contrast(level = 1) { + if (level === 1) return; + const contrastStart = performance.now(); + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + const maskX = activeMask.x + panTranslation.x; + const maskY = activeMask.y + panTranslation.y; + minX = Math.max(0, Math.floor(maskX)); + minY = Math.max(0, Math.floor(maskY)); + maxX = Math.min(width, Math.floor(maskX + activeMask.width)); + maxY = Math.min(height, Math.floor(maskY + activeMask.height)); + } + if (gpuContrastEnabled && gpuSpinAvailable && gpuAllowed("contrast") && gpuSpinModule && pixels && width && height) { + const mask2 = activeMask ? { + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY + } : null; + const result = gpuSpinModule.gpuContrast?.(pixels, width, height, level, mask2); + if (result) { + gpuOk("contrast"); + const contrastTime = performance.now() - contrastStart; + graphPerf2.track("contrast-gpu", contrastTime); + return; + } + gpuFailed("contrast"); + } + const cpuStart = performance.now(); + if (cachedContrastLevel !== level) { + cachedContrastLUT = new Uint8Array(256); + for (let i2 = 0; i2 < 256; i2++) { + const normalized = i2 / 255; + const adjusted = ((normalized - 0.5) * level + 0.5) * 255; + cachedContrastLUT[i2] = Math.max(0, Math.min(255, Math.round(adjusted))); + } + cachedContrastLevel = level; + } + const contrastLUT = cachedContrastLUT; + if (!activeMask) { + const len5 = pixels.length; + for (let i2 = 0; i2 < len5; i2 += 4) { + if (pixels[i2 + 3] === 0) continue; + pixels[i2] = contrastLUT[pixels[i2]]; + pixels[i2 + 1] = contrastLUT[pixels[i2 + 1]]; + pixels[i2 + 2] = contrastLUT[pixels[i2 + 2]]; + } + } else { + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const idx = (y * width + x) * 4; + if (pixels[idx + 3] === 0) continue; + pixels[idx] = contrastLUT[pixels[idx]]; + pixels[idx + 1] = contrastLUT[pixels[idx + 1]]; + pixels[idx + 2] = contrastLUT[pixels[idx + 2]]; + } + } + } + const cpuTime = performance.now() - cpuStart; + graphPerf2.track("contrast-cpu", cpuTime); +} +function brightness(adjustment = 0) { + if (adjustment === 0) return; + const brightnessStart = performance.now(); + adjustment = Math.max(-255, Math.min(255, adjustment)); + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + const maskX = activeMask.x + panTranslation.x; + const maskY = activeMask.y + panTranslation.y; + minX = Math.max(0, Math.floor(maskX)); + minY = Math.max(0, Math.floor(maskY)); + maxX = Math.min(width, Math.floor(maskX + activeMask.width)); + maxY = Math.min(height, Math.floor(maskY + activeMask.height)); + } + if (gpuContrastEnabled && gpuSpinAvailable && gpuAllowed("brightness") && gpuSpinModule && pixels && width && height) { + const mask2 = activeMask ? { + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY + } : null; + const result = gpuSpinModule.gpuBrightness?.(pixels, width, height, adjustment, mask2); + if (result) { + gpuOk("brightness"); + const brightnessTime = performance.now() - brightnessStart; + graphPerf2.track("brightness-gpu", brightnessTime); + return; + } + gpuFailed("brightness"); + } + const cpuStart = performance.now(); + const brightnessLUT = new Uint8Array(256); + for (let i2 = 0; i2 < 256; i2++) { + brightnessLUT[i2] = Math.max(0, Math.min(255, i2 + adjustment)); + } + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const idx = (y * width + x) * 4; + if (pixels[idx + 3] === 0) continue; + pixels[idx] = brightnessLUT[pixels[idx]]; + pixels[idx + 1] = brightnessLUT[pixels[idx + 1]]; + pixels[idx + 2] = brightnessLUT[pixels[idx + 2]]; + } + } + const cpuTime = performance.now() - cpuStart; + graphPerf2.track("brightness-cpu", cpuTime); +} +function invert4() { + const invertStart = performance.now(); + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + const maskX = activeMask.x + panTranslation.x; + const maskY = activeMask.y + panTranslation.y; + minX = Math.max(0, Math.floor(maskX)); + minY = Math.max(0, Math.floor(maskY)); + maxX = Math.min(width, Math.floor(maskX + activeMask.width)); + maxY = Math.min(height, Math.floor(maskY + activeMask.height)); + } + if (gpuContrastEnabled && gpuSpinAvailable && gpuAllowed("invert") && gpuSpinModule && pixels && width && height) { + const mask2 = activeMask ? { + x: minX, + y: minY, + width: maxX - minX, + height: maxY - minY + } : null; + const result = gpuSpinModule.gpuInvert?.(pixels, width, height, mask2); + if (result) { + gpuOk("invert"); + const invertTime = performance.now() - invertStart; + graphPerf2.track("invert-gpu", invertTime); + return; + } + gpuFailed("invert"); + } + const cpuStart = performance.now(); + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const idx = (y * width + x) * 4; + if (pixels[idx + 3] === 0) continue; + pixels[idx] = 255 - pixels[idx]; + pixels[idx + 1] = 255 - pixels[idx + 1]; + pixels[idx + 2] = 255 - pixels[idx + 2]; + } + } + const cpuTime = performance.now() - cpuStart; + graphPerf2.track("invert-cpu", cpuTime); +} +function blitCropScale(src, srcWidth, srcHeight, cX, cY, scaleX, scaleY, destX, destY, dst, dstWidth, startX, startY, endX, endY) { + const srcXs = new Int32Array(endX - startX); + for (let dx = startX; dx < endX; dx += 1) { + const sx = cX + Math.floor(dx * scaleX); + srcXs[dx - startX] = sx >= 0 && sx < srcWidth ? sx : -1; + } + const src32 = new Uint32Array(src.buffer, src.byteOffset, src.length >> 2); + const dst32 = new Uint32Array(dst.buffer, dst.byteOffset, dst.length >> 2); + for (let dy = startY; dy < endY; dy += 1) { + const srcY = cY + Math.floor(dy * scaleY); + if (srcY < 0 || srcY >= srcHeight) continue; + const srcRow = srcY * srcWidth; + let destIdx32 = (destY + dy) * dstWidth + destX + startX; + for (let dx = startX; dx < endX; dx += 1, destIdx32 += 1) { + const sx = srcXs[dx - startX]; + if (sx < 0) continue; + const s2 = src32[srcRow + sx]; + const sA = s2 >>> 24; + if (sA === 255) { + dst32[destIdx32] = s2; + } else if (sA > 0) { + const srcIdx = (srcRow + sx) * 4; + const destIdx = destIdx32 * 4; + const alpha = sA + 1; + const invAlpha = 256 - alpha; + dst[destIdx] = alpha * src[srcIdx] + invAlpha * dst[destIdx] >> 8; + dst[destIdx + 1] = alpha * src[srcIdx + 1] + invAlpha * dst[destIdx + 1] >> 8; + dst[destIdx + 2] = alpha * src[srcIdx + 2] + invAlpha * dst[destIdx + 2] >> 8; + dst[destIdx + 3] = Math.min(255, dst[destIdx + 3] + sA); + } + } + } +} +function paste(from, destX = 0, destY = 0, scale7 = 1, blit = false) { + const pasteStart = performance.now(); + if (!from) { + graphPerf2.track("paste", 0); + return; + } + if (!pixels) { + console.warn("\u{1F6A8} paste: No destination pixels buffer available, skipping paste operation"); + graphPerf2.track("paste", 0); + return; + } + destX += panTranslation.x; + destY += panTranslation.y; + destX = Math.floor(destX); + destY = Math.floor(destY); + if (typeof scale7 === "number" && Math.abs(scale7) < 0.01) { + graphPerf2.track("paste", 0); + return; + } + if (scale7 !== 1) { + let angle3 = 0; + let anchor; + let tWidth, tHeight; + let crop; + if (typeof scale7 === "object") { + angle3 = scale7.angle; + tWidth = scale7.width; + tHeight = scale7.height; + anchor = scale7.anchor; + crop = scale7.crop; + if (scale7.scale === void 0 && (tWidth === void 0 || tHeight === void 0)) { + scale7 = 1; + } else { + scale7 = scale7.scale; + } + } + if (!angle3 && !crop && !tWidth && !tHeight && !anchor && typeof scale7 === "number" && scale7 > 0 && scale7 === ~~scale7 && scale7 <= 8) { + const srcWidth = from.width; + const srcHeight = from.height; + const srcPixels = from.pixels; + const scaleInt = ~~scale7; + const destWidth = srcWidth * scaleInt; + const destHeight = srcHeight * scaleInt; + if (destX >= 0 && destY >= 0 && destX + destWidth <= width && destY + destHeight <= height) { + const fastBlock = (srcPixels.byteOffset & 3) === 0 && (pixels.byteOffset & 3) === 0; + const src32 = fastBlock ? new Uint32Array(srcPixels.buffer, srcPixels.byteOffset, srcWidth * srcHeight) : null; + const dst32 = fastBlock ? new Uint32Array(pixels.buffer, pixels.byteOffset, width * height) : null; + for (let srcY = 0; srcY < srcHeight; srcY += 1) { + for (let srcX = 0; srcX < srcWidth; srcX += 1) { + const srcIndex = srcX + srcY * srcWidth << 2; + if (srcIndex >= srcPixels.length) continue; + const a2 = srcPixels[srcIndex + 3]; + if (a2 === 0) continue; + const baseDestX = destX + srcX * scaleInt; + const baseDestY = destY + srcY * scaleInt; + if (a2 === 255 && fastBlock) { + const s2 = src32[srcX + srcY * srcWidth]; + for (let dy = 0; dy < scaleInt; dy += 1) { + let di = (baseDestY + dy) * width + baseDestX; + for (let dx = 0; dx < scaleInt; dx += 1) dst32[di + dx] = s2; + } + } else { + color(srcPixels[srcIndex], srcPixels[srcIndex + 1], srcPixels[srcIndex + 2], a2); + if (scaleInt > 1) { + box(baseDestX, baseDestY, scaleInt, scaleInt, "fill"); + } else { + plot(baseDestX, baseDestY); + } + } + } + } + return; + } + } + let isImageBitmap = typeof ImageBitmap !== "undefined" && from instanceof ImageBitmap; + if (isImageBitmap && crop) { + const pixels2 = ensureBufferPixels(from); + if (pixels2) { + from = { width: from.width, height: from.height, pixels: pixels2 }; + isImageBitmap = false; + } else { + console.warn("\u{1F3A8} Failed to extract pixels from ImageBitmap for cropping"); + return; + } + } + if (!isImageBitmap && crop && from && from.width && from.height) { + const sourcePixels = from.pixels || from.painting && from.painting.pixels; + if (sourcePixels) { + const cX = Math.floor(crop.x); + const cY = Math.floor(crop.y); + const cW = Math.floor(crop.w); + const cH = Math.floor(crop.h); + const srcWidth = from.width; + const srcHeight = from.height; + const targetW = tWidth || (scale7 && typeof scale7 === "number" ? Math.floor(cW * scale7) : cW); + const targetH = tHeight || (scale7 && typeof scale7 === "number" ? Math.floor(cH * scale7) : cH); + if ((targetW !== cW || targetH !== cH) && !angle3 && (sourcePixels.byteOffset & 3) === 0 && (pixels.byteOffset & 3) === 0) { + const scaleX = cW / targetW; + const scaleY = cH / targetH; + let startY = Math.max(0, -destY); + let endY = Math.min(targetH, height - destY); + let startX = Math.max(0, -destX); + let endX = Math.min(targetW, width - destX); + if (activeMask) { + const maskX = activeMask.x + panTranslation.x; + const maskY = activeMask.y + panTranslation.y; + startX = Math.max(startX, maskX - destX); + endX = Math.min(endX, maskX + activeMask.width - destX); + startY = Math.max(startY, maskY - destY); + endY = Math.min(endY, maskY + activeMask.height - destY); + } + if (endX > startX && endY > startY) { + blitCropScale( + sourcePixels, + srcWidth, + srcHeight, + cX, + cY, + scaleX, + scaleY, + destX, + destY, + pixels, + width, + startX, + startY, + endX, + endY + ); + } + return; + } + const croppedPixels = new Uint8ClampedArray(cW * cH * 4); + for (let y = 0; y < cH; y++) { + const srcY = cY + y; + if (srcY >= 0 && srcY < from.height) { + const srcRowStart = (srcY * srcWidth + cX) * 4; + const rowLength = cW * 4; + let startOffset = 0; + let copyLength = rowLength; + let srcStart = srcRowStart; + if (cX < 0) { + startOffset = -cX * 4; + copyLength -= startOffset; + srcStart = srcY * srcWidth * 4; + } + if (cX + cW > srcWidth) { + copyLength -= (cX + cW - srcWidth) * 4; + } + if (copyLength > 0 && srcStart < sourcePixels.length) { + const row = sourcePixels.subarray(srcStart, srcStart + copyLength); + if (y * rowLength + startOffset + row.length <= croppedPixels.length) { + croppedPixels.set(row, y * rowLength + startOffset); + } + } + } + } + const croppedBuffer = { + width: cW, + height: cH, + pixels: croppedPixels + }; + if ((targetW !== cW || targetH !== cH) && !angle3) { + const scaleX = cW / targetW; + const scaleY = cH / targetH; + const maskX = activeMask ? activeMask.x + panTranslation.x : 0; + const maskY = activeMask ? activeMask.y + panTranslation.y : 0; + const maskW = activeMask ? activeMask.width : width; + const maskH = activeMask ? activeMask.height : height; + const startY = Math.max(0, -destY); + const endY = Math.min(targetH, height - destY); + const startX = Math.max(0, -destX); + const endX = Math.min(targetW, width - destX); + for (let dy = startY; dy < endY; dy++) { + const srcY = Math.floor(dy * scaleY); + const destRowY = destY + dy; + const destRowStart = destRowY * width * 4; + for (let dx = startX; dx < endX; dx++) { + const destColX = destX + dx; + if (activeMask) { + if (destColX < maskX || destColX >= maskX + maskW || destRowY < maskY || destRowY >= maskY + maskH) { + continue; + } + } + const srcX = Math.floor(dx * scaleX); + const srcIdx = (srcY * cW + srcX) * 4; + const destIdx = destRowStart + destColX * 4; + const sA = croppedPixels[srcIdx + 3]; + if (sA > 0) { + const sR = croppedPixels[srcIdx]; + const sG = croppedPixels[srcIdx + 1]; + const sB = croppedPixels[srcIdx + 2]; + if (sA === 255) { + pixels[destIdx] = sR; + pixels[destIdx + 1] = sG; + pixels[destIdx + 2] = sB; + pixels[destIdx + 3] = 255; + } else { + const dA = pixels[destIdx + 3]; + const alpha = sA + 1; + const invAlpha = 256 - alpha; + pixels[destIdx] = alpha * sR + invAlpha * pixels[destIdx] >> 8; + pixels[destIdx + 1] = alpha * sG + invAlpha * pixels[destIdx + 1] >> 8; + pixels[destIdx + 2] = alpha * sB + invAlpha * pixels[destIdx + 2] >> 8; + pixels[destIdx + 3] = Math.min(255, dA + sA); + } + } + } + } + return; + } + if (tWidth || tHeight || typeof scale7 === "number" && scale7 !== 1 || scale7 && typeof scale7 === "object" || angle3) { + grid( + { + box: { x: destX, y: destY, w: cW, h: cH }, + transform: { scale: scale7, angle: angle3, width: tWidth, height: tHeight, anchor } + }, + croppedBuffer + ); + } else { + paste(croppedBuffer, destX, destY, 1, blit); + } + return; + } + } + if (from && from.width && from.height) { + grid( + { + box: { x: destX, y: destY, w: from.width, h: from.height }, + transform: { scale: scale7, angle: angle3, width: tWidth, height: tHeight, anchor } + }, + from + ); + } + return; + } + if (from.crop) { + const cropW = from.crop.w; + const cropH = from.crop.h; + const fromPixels = from.painting?.pixels || from.pixels; + if (fromPixels && destX >= 0 && destY >= 0 && destX + cropW <= width && destY + cropH <= height) { + const fromWidth = from.painting?.width || from.width; + const maskX = activeMask ? activeMask.x + panTranslation.x : 0; + const maskY = activeMask ? activeMask.y + panTranslation.y : 0; + const maskW = activeMask ? activeMask.width : width; + const maskH = activeMask ? activeMask.height : height; + for (let y = 0; y < cropH; y += 1) { + const srcY = from.crop.y + y; + const destRowY = destY + y; + for (let x = 0; x < cropW; x += 1) { + const dx = destX + x; + const dy = destRowY; + if (activeMask) { + if (dx < maskX || dx >= maskX + maskW || dy < maskY || dy >= maskY + maskH) { + continue; + } + } + const srcX = from.crop.x + x; + const srcIdx = (srcY * fromWidth + srcX) * 4; + const destIdx = (destRowY * width + dx) * 4; + if (srcIdx + 3 < fromPixels.length) { + const srcAlpha = fromPixels[srcIdx + 3]; + if (srcAlpha > 0) { + if (srcAlpha === 255) { + pixels[destIdx] = fromPixels[srcIdx]; + pixels[destIdx + 1] = fromPixels[srcIdx + 1]; + pixels[destIdx + 2] = fromPixels[srcIdx + 2]; + pixels[destIdx + 3] = fromPixels[srcIdx + 3]; + } else { + const alpha = srcAlpha + 1; + const invAlpha = 256 - alpha; + pixels[destIdx] = alpha * fromPixels[srcIdx] + invAlpha * pixels[destIdx] >> 8; + pixels[destIdx + 1] = alpha * fromPixels[srcIdx + 1] + invAlpha * pixels[destIdx + 1] >> 8; + pixels[destIdx + 2] = alpha * fromPixels[srcIdx + 2] + invAlpha * pixels[destIdx + 2] >> 8; + pixels[destIdx + 3] = Math.min(255, pixels[destIdx + 3] + srcAlpha); + } + } + } + } + } + } else { + const sourcePainting = from.painting || from; + if (sourcePainting && sourcePainting.pixels) { + for (let y = 0; y < cropH; y += 1) { + for (let x = 0; x < cropW; x += 1) { + copy7( + destX + x, + destY + y, + from.crop.x + x, + from.crop.y + y, + sourcePainting + ); + } + } + } + } + } else { + if (blit) { + pixels.set(from.pixels, 0); + } else { + const srcWidth = from.width; + const srcHeight = from.height; + const srcPixels = from.pixels; + if (destX >= 0 && destY >= 0 && destX + srcWidth <= width && destY + srcHeight <= height && srcPixels) { + const maskX = activeMask ? activeMask.x + panTranslation.x : 0; + const maskY = activeMask ? activeMask.y + panTranslation.y : 0; + const maskW = activeMask ? activeMask.width : width; + const maskH = activeMask ? activeMask.height : height; + if (!activeMask && (srcPixels.byteOffset & 3) === 0 && (pixels.byteOffset & 3) === 0) { + const src32 = new Uint32Array( + srcPixels.buffer, + srcPixels.byteOffset, + srcWidth * srcHeight + ); + const dst32 = new Uint32Array( + pixels.buffer, + pixels.byteOffset, + width * height + ); + for (let y = 0; y < srcHeight; y += 1) { + let si = y * srcWidth; + let di = (destY + y) * width + destX; + for (let x = 0; x < srcWidth; x += 1, si += 1, di += 1) { + const s2 = src32[si]; + const a2 = s2 >>> 24; + if (a2 === 255) { + dst32[di] = s2; + } else if (a2 !== 0) { + const si4 = si << 2; + const di4 = di << 2; + const alpha = a2 + 1; + const invAlpha = 256 - alpha; + pixels[di4] = alpha * srcPixels[si4] + invAlpha * pixels[di4] >> 8; + pixels[di4 + 1] = alpha * srcPixels[si4 + 1] + invAlpha * pixels[di4 + 1] >> 8; + pixels[di4 + 2] = alpha * srcPixels[si4 + 2] + invAlpha * pixels[di4 + 2] >> 8; + pixels[di4 + 3] = Math.min(255, pixels[di4 + 3] + a2); + } + } + } + } else { + for (let y = 0; y < srcHeight; y += 1) { + const srcRowStart = y * srcWidth * 4; + const destRowStart = ((destY + y) * width + destX) * 4; + for (let x = 0; x < srcWidth; x += 1) { + const dx = destX + x; + const dy = destY + y; + if (activeMask) { + if (dx < maskX || dx >= maskX + maskW || dy < maskY || dy >= maskY + maskH) { + continue; + } + } + const srcIdx = srcRowStart + x * 4; + const destIdx = destRowStart + x * 4; + if (srcIdx + 3 >= srcPixels.length || destIdx + 3 >= pixels.length) continue; + if (srcPixels[srcIdx + 3] > 0) { + const srcAlpha = srcPixels[srcIdx + 3]; + if (srcAlpha === 255) { + pixels[destIdx] = srcPixels[srcIdx]; + pixels[destIdx + 1] = srcPixels[srcIdx + 1]; + pixels[destIdx + 2] = srcPixels[srcIdx + 2]; + pixels[destIdx + 3] = srcPixels[srcIdx + 3]; + } else { + const alpha = srcAlpha + 1; + const invAlpha = 256 - alpha; + pixels[destIdx] = alpha * srcPixels[srcIdx] + invAlpha * pixels[destIdx] >> 8; + pixels[destIdx + 1] = alpha * srcPixels[srcIdx + 1] + invAlpha * pixels[destIdx + 1] >> 8; + pixels[destIdx + 2] = alpha * srcPixels[srcIdx + 2] + invAlpha * pixels[destIdx + 2] >> 8; + pixels[destIdx + 3] = Math.min(255, pixels[destIdx + 3] + srcAlpha); + } + } + } + } + } + } else { + for (let y = 0; y < srcHeight; y += 1) { + for (let x = 0; x < srcWidth; x += 1) { + const destPixelX = destX + x; + const destPixelY = destY + y; + if (activeMask) { + const maskX = destPixelX - activeMask.x - panTranslation.x; + const maskY = destPixelY - activeMask.y - panTranslation.y; + if (maskX < 0 || maskY < 0 || maskX >= activeMask.width || maskY >= activeMask.height) { + continue; + } + } + copy7(destPixelX, destPixelY, x, y, from); + } + } + } + } + } + const pasteEnd = performance.now(); + graphPerf2.track("paste", pasteEnd - pasteStart); +} +var stampSkipCounter = 0; +function stamp(from, x, y, scale7, angle3) { + const stampStart = performance.now(); + if (x == null) x = randIntRange(0, width - 1); + if (y == null) y = randIntRange(0, height - 1); + if (scale7 !== void 0 && Math.abs(scale7) < 0.01) { + graphPerf2.track("stamp", 0); + return; + } + if (graphPerf2 && graphPerf2.lastFPS && graphPerf2.lastFPS < 5) { + stampSkipCounter++; + if (stampSkipCounter % 3 !== 0) { + graphPerf2.track("stamp", 0); + return; + } + } else { + stampSkipCounter = 0; + } + if (scale7 !== void 0 || angle3 !== void 0) { + const effectiveScale = scale7 !== void 0 ? scale7 : 1; + const scaledWidth = from.width * effectiveScale; + const scaledHeight = from.height * effectiveScale; + const adjustedX = x - scaledWidth / 2; + const adjustedY = y - scaledHeight / 2; + const transform = {}; + if (scale7 !== void 0) transform.scale = scale7; + if (angle3 !== void 0) transform.angle = angle3; + paste(from, adjustedX, adjustedY, transform); + } else { + paste(from, x - from.width / 2, y - from.height / 2); + } + const stampEnd = performance.now(); + graphPerf2.track("stamp", stampEnd - stampStart); +} +var blendingMode = "blend"; +function blendMode(mode = "blend") { + blendingMode = mode; +} +var eraseTarget = null; +var eraseTargetWidth = 0; +function setEraseTarget(target, targetWidth) { + eraseTarget = target; + eraseTargetWidth = targetWidth; +} +function blend2(dst, src, si, di, alphaIn = 1) { + if (forceReplaceMode) { + for (let i2 = 0; i2 < 3; i2++) { + dst[di + i2] = src[si + i2]; + } + dst[di + 3] = src[si + 3] * alphaIn; + return; + } + if (blendingMode === "erase") { + const normalAlpha = 1 - src[si + 3] / 255; + dst[di + 3] *= normalAlpha; + if (dst[di + 3] === 0) { + dst[di] = 32; + dst[di + 1] = 32; + dst[di + 2] = 32; + } + if (eraseTarget) { + const pi = di >> 2; + eraseTarget[pi] = 255 - ((255 - eraseTarget[pi]) * normalAlpha + 0.5) | 0; + } + return; + } + if (src[si + 3] === 0) return; + if (blendingMode === "blit") { + for (let i2 = 0; i2 < 4; i2++) { + if (i2 != 3) { + dst[di + i2] = src[si + i2]; + } else { + dst[di + i2] = src[si + i2] * alphaIn; + } + } + return; + } + if (dst[di + 3] < 255 && src[si + 3] > 0) { + const epsilon = 1e-10; + const alphaSrc = src[si + 3] * alphaIn / 255; + const alphaDst = dst[di + 3] / 255; + const combinedAlpha = alphaSrc + (1 - alphaSrc) * alphaDst; + if (combinedAlpha > epsilon) { + for (let offset = 0; offset < 3; offset++) { + dst[di + offset] = (src[si + offset] * alphaSrc + dst[di + offset] * (1 - alphaSrc) * alphaDst) / (combinedAlpha + epsilon); + } + dst[di + 3] = combinedAlpha * 255; + } + } else { + const alpha = src[si + 3] * alphaIn + 1; + const invAlpha = 256 - alpha; + dst[di] = alpha * src[si + 0] + invAlpha * dst[di + 0] >> 8; + dst[di + 1] = alpha * src[si + 1] + invAlpha * dst[di + 1] >> 8; + dst[di + 2] = alpha * src[si + 2] + invAlpha * dst[di + 2] >> 8; + dst[di + 3] = 255; + } +} +function erase(pixels2, i2, normalizedAlpha) { + pixels2[i2 + 3] *= normalizedAlpha; +} +function lineFast(x0, y0, x1, y1) { + if (!pixels) return; + if (typeof c[0] === "string" && !c[0].startsWith("fade:")) { + setColor(0, 0, 0, c[3] || 255); + } + x0 = floor7(x0) || 0; + y0 = floor7(y0) || 0; + x1 = floor7(x1) || 0; + y1 = floor7(y1) || 0; + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = activeMask.x; + minY = activeMask.y; + maxX = activeMask.x + activeMask.width; + maxY = activeMask.y + activeMask.height; + } + const r2 = c[0], g = c[1], b2 = c[2], a2 = c[3]; + const isErase = r2 === -1 && g === -1 && b2 === -1; + const normalAlpha = isErase ? 1 - a2 / 255 : 0; + const isOpaque = a2 === 255 && !isErase; + const hasAlpha = a2 !== 0 && a2 !== 255 && !isErase; + const dx = abs3(x1 - x0); + const dy = -abs3(y1 - y0); + const sx = x0 < x1 ? 1 : -1; + const sy = y0 < y1 ? 1 : -1; + let err = dx + dy; + while (true) { + if (x0 >= minX && x0 < maxX && y0 >= minY && y0 < maxY) { + const i2 = (x0 + y0 * width) * 4; + if (forceReplaceMode || isOpaque) { + pixels[i2] = r2; + pixels[i2 + 1] = g; + pixels[i2 + 2] = b2; + pixels[i2 + 3] = isOpaque ? 255 : a2; + } else if (isErase) { + pixels[i2 + 3] *= normalAlpha; + if (eraseTarget) { + const pi = i2 >> 2; + eraseTarget[pi] = 255 - ((255 - eraseTarget[pi]) * normalAlpha + 0.5) | 0; + } + } else if (hasAlpha) { + const invA = 255 - a2; + pixels[i2] = r2 * a2 + pixels[i2] * invA >> 8; + pixels[i2 + 1] = g * a2 + pixels[i2 + 1] * invA >> 8; + pixels[i2 + 2] = b2 * a2 + pixels[i2 + 2] * invA >> 8; + pixels[i2 + 3] = a2 + (pixels[i2 + 3] * invA >> 8); + } + } + if (x0 === x1 && y0 === y1) break; + const e2 = 2 * err; + if (e2 >= dy) { + err += dy; + x0 += sx; + } + if (e2 <= dx) { + err += dx; + y0 += sy; + } + } +} +function lineh(x0, x1, y) { + x0 = floor7(x0); + x1 = floor7(x1); + y = floor7(y); + if (!pixels) return; + if (typeof c[0] === "string" && !c[0].startsWith("fade:")) { + setColor(0, 0, 0, c[3] || 255); + } + if (y < 0 || y >= height || x0 >= width || x1 < 0) return; + if (activeMask) { + if (y < activeMask.y || y >= activeMask.y + activeMask.height || x1 < activeMask.x || x0 >= activeMask.x + activeMask.width) + return; + } + x0 = clamp(x0, 0, width - 1); + x1 = clamp(x1, 0, width - 1); + if (activeMask) { + x0 = clamp(x0, activeMask.x, activeMask.x + activeMask.width - 1); + x1 = clamp(x1, activeMask.x, activeMask.x + activeMask.width - 1); + } + const firstIndex = (x0 + y * width) * 4; + const secondIndex = (x1 + y * width) * 4; + let startIndex, endIndex; + if (firstIndex > secondIndex) { + startIndex = secondIndex; + endIndex = firstIndex; + } else { + startIndex = firstIndex; + endIndex = secondIndex; + } + if (forceReplaceMode) { + for (let i2 = startIndex; i2 <= endIndex; i2 += 4) { + pixels[i2] = c[0]; + pixels[i2 + 1] = c[1]; + pixels[i2 + 2] = c[2]; + pixels[i2 + 3] = c[3]; + } + return; + } + if (blendMode !== "erase" && c[0] === -1 && c[1] === -1 && c[2] === -1) { + const normalAlpha = 1 - c[3] / 255; + for (let i2 = startIndex; i2 <= endIndex; i2 += 4) { + erase(pixels, i2, normalAlpha); + if (eraseTarget) { + const pi = i2 >> 2; + eraseTarget[pi] = 255 - ((255 - eraseTarget[pi]) * normalAlpha + 0.5) | 0; + } + } + } else if (c[3] === 255) { + for (let i2 = startIndex; i2 <= endIndex; i2 += 4) { + pixels[i2] = c[0]; + pixels[i2 + 1] = c[1]; + pixels[i2 + 2] = c[2]; + pixels[i2 + 3] = 255; + } + } else if (c[3] !== 0) { + for (let i2 = startIndex; i2 <= endIndex; i2 += 4) { + blend2(pixels, c, 0, i2); + } + } +} +function lineThick(x0, y0, x1, y1, r2) { + x0 += panTranslation.x; + y0 += panTranslation.y; + x1 += panTranslation.x; + y1 += panTranslation.y; + const r22 = r2 * r2 + r2; + const ldx = x1 - x0, ldy = y1 - y0; + const len22 = ldx * ldx + ldy * ldy; + if (len22 === 0) { + for (let dy = -r2; dy <= r2; dy++) { + const h = floor7(sqrt3(max5(0, r22 - dy * dy))); + lineh(x0 - h, x0 + h, y0 + dy); + } + return; + } + const invLen2 = 1 / len22; + const minY = floor7(min5(y0, y1) - r2); + const maxY = floor7(max5(y0, y1) + r2); + for (let y = minY; y <= maxY; y++) { + let lo = Infinity, hi = -Infinity; + const da = y - y0, db = y - y1; + const da2 = da * da, db2 = db * db; + if (da2 <= r22) { + const h = sqrt3(r22 - da2); + lo = x0 - h; + hi = x0 + h; + } + if (db2 <= r22) { + const h = sqrt3(r22 - db2); + if (x1 - h < lo) lo = x1 - h; + if (x1 + h > hi) hi = x1 + h; + } + const C = (y - y0) * ldx + x0 * ldy; + const D2 = sqrt3(r22 * len22); + if (abs3(ldy) > 1e-4) { + let bxLo = (C - D2) / ldy, bxHi = (C + D2) / ldy; + if (bxLo > bxHi) { + const tmp = bxLo; + bxLo = bxHi; + bxHi = tmp; + } + const tLo = ((bxLo - x0) * ldx + (y - y0) * ldy) * invLen2; + const tHi = ((bxHi - x0) * ldx + (y - y0) * ldy) * invLen2; + const tMin = max5(0, min5(tLo, tHi)); + const tMax = min5(1, max5(tLo, tHi)); + if (tMin <= tMax) { + const xA = x0 + tMin * ldx, yA = y0 + tMin * ldy; + const xB = x0 + tMax * ldx, yB = y0 + tMax * ldy; + const ha2 = r22 - (y - yA) * (y - yA); + const hb2 = r22 - (y - yB) * (y - yB); + if (ha2 >= 0) { + const h = sqrt3(ha2); + if (xA - h < lo) lo = xA - h; + if (xA + h > hi) hi = xA + h; + } + if (hb2 >= 0) { + const h = sqrt3(hb2); + if (xB - h < lo) lo = xB - h; + if (xB + h > hi) hi = xB + h; + } + } + } + if (lo <= hi) { + lineh(floor7(lo), floor7(hi), y); + } + } +} +function line() { + let x0, y0, x1, y1, thickness; + if (arguments.length === 1) { + const arg0 = arguments[0]; + if (arg0 && typeof arg0 === "object") { + x0 = arg0.x0; + y0 = arg0.y0; + x1 = arg0.x1; + y1 = arg0.y1; + thickness = arg0.thickness; + } + } else if (arguments.length >= 4) { + x0 = arguments[0]; + y0 = arguments[1]; + x1 = arguments[2]; + y1 = arguments[3]; + thickness = arguments[4]; + } else if (arguments.length === 2) { + const arg0 = arguments[0]; + const arg1 = arguments[1]; + if (Array.isArray(arg0) && Array.isArray(arg1)) { + x0 = arg0[0]; + y0 = arg0[1]; + x1 = arg1[0]; + y1 = arg1[1]; + } else if (arg0 && typeof arg0 === "object" && arg1 && typeof arg1 === "object") { + x0 = arg0.x; + y0 = arg0.y; + x1 = arg1.x; + y1 = arg1.y; + } + } else { + } + if (x0 == null) x0 = randIntRange(0, width); + if (y0 == null) y0 = randIntRange(0, height); + if (x1 == null) x1 = randIntRange(0, width); + if (y1 == null) y1 = randIntRange(0, height); + if (isNaN(x0)) x0 = randIntRange(0, width); + if (isNaN(y0)) y0 = randIntRange(0, height); + if (isNaN(x1)) x1 = randIntRange(0, width); + if (isNaN(y1)) y1 = randIntRange(0, height); + if (thickness > 1) { + const radius = floor7((thickness - 1) / 2); + lineThick(floor7(x0), floor7(y0), floor7(x1), floor7(y1), radius); + const out2 = [floor7(x0), floor7(y0), floor7(x1), floor7(y1)]; + twoDCommands?.push(["line", ...out2]); + return out2; + } + x0 += panTranslation.x; + y0 += panTranslation.y; + x1 += panTranslation.x; + y1 += panTranslation.y; + const cachedInk = c.slice(0); + const localFadeInfo = parseFadeColor(c); + const usingLocalFade = !!localFadeInfo; + if (!fadeMode && !usingLocalFade && !c2 && skips.length === 0) { + if (y0 === y1) { + lineh(x0, x1, y0); + } else { + lineFast(x0, y0, x1, y1); + } + } else if (y0 === y1 && !c2 && !fadeMode) { + lineh(x0, x1, y0); + } else { + const lineLength = sqrt3((x1 - x0) ** 2 + (y1 - y0) ** 2); + bresenham(x0, y0, x1, y1).forEach((p, index, points) => { + if (fadeMode) { + const t2 = lineLength > 0 ? sqrt3((p.x - x0) ** 2 + (p.y - y0) ** 2) / lineLength : 0; + const fadeColor = getFadeColor(t2, p.x, p.y); + setColor(...fadeColor); + plot(p.x, p.y); + } else if (usingLocalFade) { + const totalSteps = Math.max(1, points.length - 1); + const t2 = totalSteps === 0 ? 0 : index / totalSteps; + const fadeColor = getLocalFadeColor(t2, p.x, p.y, localFadeInfo); + setColor(...fadeColor); + plot(p.x, p.y); + } else if (c2) { + const step = sqrt3(p.x * p.x + p.y * p.y) / 255; + color(...shiftRGB(c, c2, step)); + plot(p.x, p.y); + } else { + plot(p.x, p.y); + } + }); + if (usingLocalFade) { + if (typeof cachedInk[0] === "string" && cachedInk[0].startsWith("fade:")) { + color(cachedInk); + } else { + setColor(...cachedInk); + } + } else if (c2 || fadeMode) { + setColor(...cachedInk); + } + } + const out = [x0, y0, x1, y1]; + twoDCommands?.push(["line", ...out]); + return out; +} +function pixelPerfectPolyline(points, shader) { + if (points.length < 2) return; + const pixels2 = []; + let last = points[0]; + points.forEach((cur) => { + const xMin = min5(last.x, cur.x); + const xMax = max5(last.x, cur.x); + const yMin = min5(last.y, cur.y); + const yMax = max5(last.y, cur.y); + if (xMin >= width || xMax < 0 || yMin >= height || yMax < 0) { + last = cur; + return; + } + const rb = last.color === "rainbow"; + bresenham(last.x, last.y, cur.x, cur.y).forEach((p, i2) => { + if (i2 > 0 || pixels2.length < 2) { + pixels2.push({ ...p, color: rb ? rainbow() : last.color }); + } + }); + last = cur; + }); + const filtered = []; + let c4 = 0; + while (c4 < pixels2.length) { + if (c4 > 0 && c4 + 1 < pixels2.length && (pixels2[c4 - 1].x === pixels2[c4].x || pixels2[c4 - 1].y === pixels2[c4].y) && // check left and up + (pixels2[c4 + 1].x === pixels2[c4].x || pixels2[c4 + 1].y === pixels2[c4].y) && // check right and down + pixels2[c4 - 1].x !== pixels2[c4 + 1].x && // check left and right of prev and next + pixels2[c4 - 1].y !== pixels2[c4 + 1].y) { + c4 += 1; + } + filtered.push(pixels2[c4]); + c4 += 1; + } + if (shader) { + shadePixels(filtered, shader); + } else { + filtered.forEach((p) => point(p)); + } +} +function lineAngle(x1, y1, dist5, degrees2) { + const x2 = x1 + dist5 * cos3(radians(degrees2)); + const y2 = y1 + dist5 * sin3(radians(degrees2)); + return line(x1, y1, x2, y2); +} +function circle(x0, y0, radius, filled = false, thickness, precision) { + if (filled || thickness > 1) { + oval(x0, y0, radius, radius, filled, thickness, precision); + return; + } + x0 = floor7(x0); + y0 = floor7(y0); + radius = floor7(radius); + let f2 = 1 - radius, ddF_x = 0, ddF_y = -2 * radius, x = 0, y = radius; + point(x0, y0 + radius); + point(x0, y0 - radius); + point(x0 + radius, y0); + point(x0 - radius, y0); + while (x < y) { + if (f2 >= 0) { + y -= 1; + ddF_y += 2; + f2 += ddF_y; + } + x += 1; + ddF_x += 2; + f2 += ddF_x + 1; + point(x0 + x, y0 + y); + point(x0 - x, y0 + y); + point(x0 + x, y0 - y); + point(x0 - x, y0 - y); + point(x0 + y, y0 + x); + point(x0 - y, y0 + x); + point(x0 + y, y0 - x); + point(x0 - y, y0 - x); + } +} +function pie(x0, y0, radius, startAngle, endAngle, precision = 3) { + const points = [[x0, y0]]; + const angleSpan = endAngle - startAngle; + const steps = max5(floor7(abs3(angleSpan) * radius / precision), 8); + for (let i2 = 0; i2 <= steps; i2++) { + const angle3 = startAngle + angleSpan * i2 / steps; + const x = x0 + radius * cos3(angle3); + const y = y0 + radius * sin3(angle3); + points.push([x, y]); + } + points.push([x0, y0]); + shape({ points, filled: true }); +} +function oval(x0, y0, radiusX, radiusY, filled = false, thickness = 1, precision) { + const points = generateEllipsePoints(x0, y0, radiusX, radiusY, precision); + shape({ points, filled, thickness }); +} +function generateEllipsePoints(x0, y0, radiusX, radiusY, precision = 20) { + const points = []; + for (let i2 = 0; i2 < 360; i2 += precision) { + const angle3 = radians(i2); + const x = x0 + radiusX * cos3(angle3); + const y = y0 + radiusY * sin3(angle3); + points.push([x, y]); + } + return points; +} +function poly(coords) { + let last = coords[0]; + for (let i2 = 1; i2 < coords.length; i2++) { + const cur = coords[i2]; + line(last, cur); + last = cur; + } +} +function pline(coords, thickness, shader) { + if (coords.length < 2) return; + let points = [], lines = [], tris = []; + let last = coords[coords.length - 1]; + let lpar, ldir; + for (let i2 = coords.length - 2; i2 >= 0; i2 -= 1) { + const cur = coords[i2]; + const lp = [last.x || last[0], last.y || last[1]], cp = [cur.x || cur[0], cur.y || cur[1]]; + const dir = normalize4([], subtract5([], cp, lp)); + if (!ldir) ldir = dir; + const rot = rotate3([], dir, [0, 0], PI2 / 2); + const offset1 = scale6([], rot, thickness / 2); + const offset2 = scale6([], rot, -thickness / 2); + let c1, c22; + if (!lpar) { + c1 = add6([], lp, offset1); + c22 = add6([], lp, offset2); + lpar = [c1, c22]; + } else { + [c1, c22] = lpar; + } + [c1, c22, lp, cp].forEach((v2) => floor3(v2, v2)); + const dot5 = dot4(dir, ldir); + let trig; + if (dot5 > 0) { + trig = [ + [c1, c22, lp], + [c22, lp, cp] + ]; + lines.push(...bresenham(...c1, ...lp)); + lines.push(...bresenham(...c22, ...cp)); + } else { + trig = [ + [c22, lp, c1], + [c1, cp, lp] + ]; + lines.push(...bresenham(...c22, ...lp)); + lines.push(...bresenham(...c1, ...cp)); + } + const clippedTris = trig.filter( + (triangle) => triangle.some((v2) => { + const tv = v2.slice(); + tv[0] += panTranslation.x; + tv[1] += panTranslation.y; + return tv[0] >= 0 && tv[0] < width && tv[1] >= 0 && tv[1] < height; + }) + ); + clippedTris.forEach((tri2) => fillTri(tri2, tris)); + ldir = dir; + lines.push(...bresenham(...lp, ...cp)); + if (i2 === coords.length - 2) + points.push({ x: c1[0], y: c1[1] }, { x: c22[0], y: c22[1] }); + points.push({ x: lp[0], y: lp[1] }, { x: cp[0], y: cp[1] }); + if (cur.color === "rainbow") color(...rainbow()); + else if (cur.color) color(...cur.color); + if (shader) { + const progress = 1 - i2 / (coords.length - 2); + shadePixels(tris, shader, [progress]); + } else { + tris.forEach((p) => point(p)); + } + tris.length = 0; + last = cur; + lpar = [c1, c22]; + } + return lpar; +} +function fillTri(v3, pix) { + const scan = []; + const [min10, mid, max9] = v3.sort((va, vb) => va[1] - vb[1]); + const v1 = [max9[0] - min10[0], max9[1] - min10[1]], v2 = [mid[0] - min10[0], mid[1] - min10[1]], cp = v1[0] * v2[1] - v2[0] * v1[1]; + const handedness = cp > 0 ? 1 : cp < 0 ? 0 : -1; + [ + [min10, max9, 0 + handedness], + // Min and Max for each edge with handedness. + [min10, mid, 1 - handedness], + [mid, max9, 1 - handedness] + ].forEach(function scanEdge(v4) { + const yStart = v4[0][Y], yEnd = v4[1][Y], xStart = v4[0][X], xEnd = v4[1][X]; + const yDist = yEnd - yStart; + const xDist = xEnd - xStart; + if (yDist <= 0) return; + const xStep = xDist / yDist; + let x = xStart; + for (let y = yStart; y < yEnd; y += 1) { + scan[y * 2 + v4[2]] = floor7(x); + x += xStep; + } + }); + for (let y = min10[Y]; y < max9[Y]; y += 1) { + for (let x = scan[y * 2]; x < scan[y * 2 + 1]; x += 1) { + pix.push({ x, y }); + } + } +} +function bresenham(x0, y0, x1, y1) { + const points = []; + x0 = floor7(x0) || 0; + y0 = floor7(y0) || 0; + x1 = floor7(x1) || 0; + y1 = floor7(y1) || 0; + const dx = abs3(x1 - x0); + const dy = -abs3(y1 - y0); + const sx = x0 < x1 ? 1 : -1; + const sy = y0 < y1 ? 1 : -1; + let err = dx + dy; + while (true) { + points.push({ x: x0, y: y0 }); + if (x0 === x1 && y0 === y1) break; + const e2 = 2 * err; + if (e2 >= dy) { + err += dy; + x0 += sx; + } + if (e2 <= dx) { + err += dx; + y0 += sy; + } + } + return points; +} +var BOX_CENTER = "center"; +function box() { + const boxStart = performance.now(); + let x, y, w, h, mode = "fill"; + for (let i2 = 0; i2 < arguments.length; i2++) { + if (Number.isNaN(arguments[i2])) { + arguments[i2] = void 0; + } + } + if (arguments.length === 1 || arguments.length === 2) { + if (Array.isArray(arguments[0])) { + x = arguments[0][0]; + y = arguments[0][1]; + w = arguments[0][2]; + h = arguments[0][3]; + } else if (arguments[0]) { + if (!isNaN(arguments[0].width)) arguments[0].w = arguments[0].width; + if (!isNaN(arguments[0].height)) arguments[0].h = arguments[0].height; + x = arguments[0].x || 0; + y = arguments[0].y || 0; + w = arguments[0].w || 0; + if (isNaN(arguments[0].h)) { + h = w; + } else { + h = arguments[0].h; + } + if (x === void 0 || y === void 0 || w === void 0) { + return console.error( + "Could not make a box {x,y,w,h} from:", + arguments[0] + ); + } + } + if (arguments[1]) mode = arguments[1]; + } else if (arguments.length === 3) { + x = arguments[0]; + y = arguments[1]; + w = arguments[2]; + h = arguments[2]; + } else if (arguments.length === 4) { + if (typeof arguments[3] === "number") { + x = arguments[0]; + y = arguments[1]; + w = arguments[2]; + h = arguments[3]; + } else { + x = arguments[0]; + y = arguments[1]; + w = arguments[2]; + h = arguments[2]; + mode = arguments[3]; + } + } else if (arguments.length === 5) { + x = arguments[0]; + y = arguments[1]; + w = arguments[2]; + h = arguments[3]; + mode = arguments[4]; + } else { + } + if (w === 0 || h === 0 || isNaN(w) || isNaN(h)) return; + if (w === Infinity) w = width; + if (h === Infinity) h = height; + if (nonvalue(x)) x = randInt(width); + if (nonvalue(y)) y = randInt(height); + if (nonvalue(w)) w = randInt(width); + if (nonvalue(h)) h = randInt(height); + if (mode === void 0 || mode === "") mode = "fill"; + if (mode.endsWith(BOX_CENTER)) { + x -= w / 2; + y -= h / 2; + mode = mode.slice(0, -BOX_CENTER.length - 1); + } + x = floor7(x); + y = floor7(y); + w = signedCeil(w); + h = signedCeil(h); + ({ x, y, w, h } = Box.from([x, y, w, h]).abs); + const thickness = parseInt(mode.split(":")[1]) || 1; + mode = mode.split(":")[0]; + if (mode === "outline" || mode === "out") { + if (thickness === 1) { + line(x - 1, y - 1, x + w, y - 1); + line(x - 1, y + h, x + w, y + h); + line(x - 1, y, x - 1, y + h - 1); + line(x + w, y, x + w, y + h - 1); + } else { + const leftX = x - thickness; + const topY = y - thickness; + const rightX = x + w + thickness; + const bottomY = y + h + thickness; + const boxHeight = h + thickness * 2; + const boxWidth = w + thickness * 2; + box(leftX, topY, boxWidth, thickness); + box(leftX, bottomY - thickness, boxWidth, thickness); + box(leftX, topY + thickness, thickness, boxHeight - thickness * 2); + box( + rightX - thickness, + topY + thickness, + thickness, + boxHeight - thickness * 2 + ); + } + } else if (mode === "inline" || mode === "in") { + if (thickness === 1) { + line(x, y, x + w - 1, y); + line(x, y + h - 1, x + w - 1, y + h - 1); + line(x, y + 1, x, y + h - 2); + line(x + w - 1, y + 1, x + w - 1, y + h - 2); + } else { + if (thickness * 2 <= w && thickness * 2 <= h) { + box(x, y, w, thickness); + box(x, y + h - thickness, w, thickness); + box(x, y + thickness, thickness, h - thickness * 2); + box(x + w - thickness, y + thickness, thickness, h - thickness * 2); + } else { + box(x, y, w, h); + } + } + } else if (mode === "fill" || mode === "") { + w -= 1; + if (typeof c[0] === "string" && !c[0].startsWith("fade:")) { + setColor(0, 0, 0, c[3] || 255); + } + const cachedInk = c.slice(0); + const fadeInfo = parseFadeColor(c); + const isLocalFade = fadeInfo !== null; + if (mathSign(height) === 1) { + for (let row = 0; row < h; row += 1) { + if (isLocalFade) { + const numericAngle = parseFloat(fadeInfo.direction); + if (!isNaN(numericAngle)) { + for (let col = 0; col <= w; col++) { + const pixelX = x + col; + const pixelY = y + row; + const t2 = calculateAngleFadePosition(pixelX, pixelY, x, y, x + w, y + h - 1, numericAngle); + const fadeColor = getLocalFadeColor(t2, pixelX, pixelY, fadeInfo); + setColor(...fadeColor); + plot(pixelX, pixelY); + } + } else { + let t2; + if (fadeInfo.direction === "vertical") { + t2 = h <= 1 ? 0 : row / (h - 1); + } else if (fadeInfo.direction === "vertical-reverse") { + t2 = h <= 1 ? 0 : 1 - row / (h - 1); + } else if (fadeInfo.direction === "horizontal") { + t2 = 0; + } else if (fadeInfo.direction === "horizontal-reverse") { + t2 = 0; + } else { + t2 = h <= 1 ? 0 : row / (h - 1); + } + if (fadeInfo.direction.startsWith("horizontal")) { + const lineY = y + row; + for (let px = x; px < x + w; px++) { + const horizontalT = w <= 1 ? 0 : fadeInfo.direction === "horizontal-reverse" ? 1 - (px - x) / (w - 1) : (px - x) / (w - 1); + const fadeColor = getLocalFadeColor(horizontalT, px, lineY, fadeInfo); + setColor(...fadeColor); + plot(px, lineY); + } + } else { + const fadeColor = getLocalFadeColor(t2, x, y + row, fadeInfo); + setColor(...fadeColor); + line(x, y + row, x + w, y + row); + } + } + } else { + line(x, y + row, x + w, y + row); + } + } + } else { + for (let row = 0; row > h; row -= 1) { + if (isLocalFade) { + const numericAngle = parseFloat(fadeInfo.direction); + if (!isNaN(numericAngle)) { + for (let col = 0; col <= w; col++) { + const pixelX = x + col; + const pixelY = y + row; + const t2 = calculateAngleFadePosition(pixelX, pixelY, x, y, x + w, y + h - 1, numericAngle); + const fadeColor = getLocalFadeColor(t2, pixelX, pixelY, fadeInfo); + setColor(...fadeColor); + plot(pixelX, pixelY); + } + } else { + let t2; + if (fadeInfo.direction === "vertical") { + t2 = Math.abs(row) / Math.abs(h - 1); + } else if (fadeInfo.direction === "vertical-reverse") { + t2 = 1 - Math.abs(row) / Math.abs(h - 1); + } else if (fadeInfo.direction === "horizontal") { + t2 = 0; + } else if (fadeInfo.direction === "horizontal-reverse") { + t2 = 0; + } else { + t2 = Math.abs(row) / Math.abs(h - 1); + } + if (fadeInfo.direction.startsWith("horizontal")) { + const savedFadeMode = fadeMode; + const savedFadeColors = fadeColors.slice(); + const savedFadeDirection = fadeDirection; + const savedFadeNeat = fadeNeat; + fadeMode = true; + fadeColors = fadeInfo.colors; + fadeDirection = fadeInfo.direction; + fadeNeat = fadeInfo.neat; + line(x, y + row, x + w, y + row); + fadeMode = savedFadeMode; + fadeColors = savedFadeColors; + fadeDirection = savedFadeDirection; + fadeNeat = savedFadeNeat; + } else { + const fadeColor = getLocalFadeColor(t2, x, y + row, fadeInfo); + setColor(...fadeColor); + line(x, y + row, x + w, y + row); + } + } + } else { + line(x, y + row, x + w, y + row); + } + } + } + } + graphPerf2.track("box", performance.now() - boxStart); +} +function shape() { + const shapeStart = performance.now(); + let argPoints; + let points; + let filled = true; + let thickness = 1; + if (arguments.length === 1 && !Array.isArray(arguments[0])) { + argPoints = arguments[0].points; + filled = arguments[0].filled; + thickness = arguments[0].thickness || thickness; + } else { + argPoints = arguments[0]; + } + if (!Array.isArray(argPoints[0])) { + points = []; + for (let p = 0; p < argPoints.length; p += 2) { + points.push([argPoints[p], argPoints[p + 1]]); + } + } else { + points = argPoints; + } + if (filled) { + if (points.length === 3) { + const triPixels = []; + fillTri(points, triPixels); + triPixels.forEach((p) => point(p)); + } else { + fillShape(points); + } + } else { + if (thickness === 1) { + points.forEach((p, i2) => { + const lastPoint = i2 < points.length - 1 ? points[i2 + 1] : points[0]; + line(...p, ...lastPoint); + }); + } else { + points.push(points[0]); + pline( + points.map((p) => p2.of(...p)), + thickness + ); + } + } + graphPerf2.track("shape", performance.now() - shapeStart); +} +function fillShape(points) { + let minY = Infinity; + let maxY = -Infinity; + for (let i2 = 0; i2 < points.length; i2++) { + minY = min5(minY, points[i2][1]); + maxY = max5(maxY, points[i2][1]); + } + for (let y = minY; y <= maxY; y++) { + let intersections = []; + for (let i2 = 0; i2 < points.length; i2++) { + let p1 = points[i2]; + let p22 = points[(i2 + 1) % points.length]; + if (p1[1] <= y && y < p22[1] || p22[1] <= y && y < p1[1]) { + let x = (y - p1[1]) * (p22[0] - p1[0]) / (p22[1] - p1[1]) + p1[0]; + intersections.push(x); + } + } + intersections.sort((a2, b2) => a2 - b2); + for (let i2 = 0; i2 < intersections.length; i2 += 2) { + let x1 = floor7(intersections[i2]); + let x2 = ceil5(intersections[i2 + 1]); + for (let x = x1; x < x2; x++) { + point(x, y); + } + } + } +} +function drawGradientTriangle(x1, y1, color1, z1, x2, y2, color22, z2, x3, y3, color3, z3) { + const maxCoord = max5(width, height) * 2; + if (abs3(x1) > maxCoord || abs3(y1) > maxCoord || abs3(x2) > maxCoord || abs3(y2) > maxCoord || abs3(x3) > maxCoord || abs3(y3) > maxCoord) { + return; + } + const minX = floor7(min5(x1, x2, x3)); + const maxX = ceil5(max5(x1, x2, x3)); + const minY = floor7(min5(y1, y2, y3)); + const maxY = ceil5(max5(y1, y2, y3)); + const screenMinX = max5(0, minX); + const screenMaxX = min5(width, maxX); + const screenMinY = max5(0, minY); + const screenMaxY = min5(height, maxY); + if (screenMinX >= screenMaxX || screenMinY >= screenMaxY) return; + const areaABC = (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1); + if (abs3(areaABC) < 0.5) return; + const invArea = 1 / areaABC; + const dE1dx = y2 - y3, dE1dy = x3 - x2; + const dE2dx = y3 - y1, dE2dy = x1 - x3; + const dE3dx = y1 - y2, dE3dy = x2 - x1; + const px0 = screenMinX + 0.5; + const py0 = screenMinY + 0.5; + let e1Row = (x2 - px0) * (y3 - py0) - (x3 - px0) * (y2 - py0); + let e2Row = (x3 - px0) * (y1 - py0) - (x1 - px0) * (y3 - py0); + let e3Row = (x1 - px0) * (y2 - py0) - (x2 - px0) * (y1 - py0); + const c1r = color1[0], c1g = color1[1], c1b = color1[2], c1a = color1[3]; + const c2r = color22[0], c2g = color22[1], c2b = color22[2], c2a = color22[3]; + const c3r = color3[0], c3g = color3[1], c3b = color3[2], c3a = color3[3]; + const allOpaque = c1a >= 254 && c2a >= 254 && c3a >= 254; + const hasDepth = depthBuffer.length > 0; + const pix = pixels; + const bufW = width; + let pixCount = 0; + for (let y = screenMinY; y < screenMaxY; y++) { + let e1 = e1Row, e2 = e2Row, e3 = e3Row; + let rowPix = (screenMinX + y * bufW) * 4; + let rowDep = screenMinX + y * bufW; + let wasInside = false; + for (let x = screenMinX; x < screenMaxX; x++) { + const u2 = e1 * invArea; + const v2 = e2 * invArea; + const w = 1 - u2 - v2; + if (u2 >= 0 && v2 >= 0 && w >= 0) { + wasInside = true; + const depth = u2 * z1 + v2 * z2 + w * z3; + if (!hasDepth || depth <= depthBuffer[rowDep]) { + const r2 = u2 * c1r + v2 * c2r + w * c3r | 0; + const g = u2 * c1g + v2 * c2g + w * c3g | 0; + const b2 = u2 * c1b + v2 * c2b + w * c3b | 0; + if (allOpaque) { + pix[rowPix] = r2; + pix[rowPix + 1] = g; + pix[rowPix + 2] = b2; + pix[rowPix + 3] = 255; + } else { + const a2 = u2 * c1a + v2 * c2a + w * c3a | 0; + if (a2 >= 254) { + pix[rowPix] = r2; + pix[rowPix + 1] = g; + pix[rowPix + 2] = b2; + pix[rowPix + 3] = 255; + } else if (a2 > 0) { + const aa = a2 + 1; + const inv = 256 - a2; + pix[rowPix] = r2 * aa + pix[rowPix] * inv >> 8; + pix[rowPix + 1] = g * aa + pix[rowPix + 1] * inv >> 8; + pix[rowPix + 2] = b2 * aa + pix[rowPix + 2] * inv >> 8; + const dstA = pix[rowPix + 3]; + pix[rowPix + 3] = dstA > a2 ? dstA : a2; + } + } + if (hasDepth) depthBuffer[rowDep] = depth; + pixCount++; + } + } else if (wasInside) { + break; + } + e1 += dE1dx; + e2 += dE2dx; + e3 += dE3dx; + rowPix += 4; + rowDep += 1; + } + e1Row += dE1dy; + e2Row += dE2dy; + e3Row += dE3dy; + } + renderStats.pixelsDrawn += pixCount; +} +function subdivideTriangleIfNeeded(x1, y1, uv1, z1, w1, x2, y2, uv2, z2, w2, x3, y3, uv3, z3, w3, maxScreenSize = 300, depth = 0) { + if (depth > 4) { + return [[x1, y1, uv1, z1, w1, x2, y2, uv2, z2, w2, x3, y3, uv3, z3, w3]]; + } + const minX = min5(x1, x2, x3); + const maxX = max5(x1, x2, x3); + const minY = min5(y1, y2, y3); + const maxY = max5(y1, y2, y3); + const screenWidth = maxX - minX; + const screenHeight = maxY - minY; + const clampedMinX = max5(0, minX); + const clampedMaxX = min5(width, maxX); + const clampedMinY = max5(0, minY); + const clampedMaxY = min5(height, maxY); + const onScreenWidth = clampedMaxX - clampedMinX; + const onScreenHeight = clampedMaxY - clampedMinY; + if (onScreenWidth <= maxScreenSize && onScreenHeight <= maxScreenSize) { + return [[x1, y1, uv1, z1, w1, x2, y2, uv2, z2, w2, x3, y3, uv3, z3, w3]]; + } + if (onScreenWidth <= 0 || onScreenHeight <= 0) { + return [[x1, y1, uv1, z1, w1, x2, y2, uv2, z2, w2, x3, y3, uv3, z3, w3]]; + } + const mx12 = (x1 + x2) / 2, my12 = (y1 + y2) / 2; + const mx23 = (x2 + x3) / 2, my23 = (y2 + y3) / 2; + const mx31 = (x3 + x1) / 2, my31 = (y3 + y1) / 2; + const mz12 = (z1 + z2) / 2, mz23 = (z2 + z3) / 2, mz31 = (z3 + z1) / 2; + const invW1 = 1 / w1, invW2 = 1 / w2, invW3 = 1 / w3; + const u1w = uv1[0] * invW1, v1w = uv1[1] * invW1; + const u2w = uv2[0] * invW2, v2w = uv2[1] * invW2; + const u3w = uv3[0] * invW3, v3w = uv3[1] * invW3; + const mInvW12 = (invW1 + invW2) / 2, mInvW23 = (invW2 + invW3) / 2, mInvW31 = (invW3 + invW1) / 2; + const mw12 = 1 / mInvW12, mw23 = 1 / mInvW23, mw31 = 1 / mInvW31; + const mu12w = (u1w + u2w) / 2, mv12w = (v1w + v2w) / 2; + const mu23w = (u2w + u3w) / 2, mv23w = (v2w + v3w) / 2; + const mu31w = (u3w + u1w) / 2, mv31w = (v3w + v1w) / 2; + const muv12 = [mu12w / mInvW12, mv12w / mInvW12]; + const muv23 = [mu23w / mInvW23, mv23w / mInvW23]; + const muv31 = [mu31w / mInvW31, mv31w / mInvW31]; + const result = []; + result.push(...subdivideTriangleIfNeeded(x1, y1, uv1, z1, w1, mx12, my12, muv12, mz12, mw12, mx31, my31, muv31, mz31, mw31, maxScreenSize, depth + 1)); + result.push(...subdivideTriangleIfNeeded(mx12, my12, muv12, mz12, mw12, x2, y2, uv2, z2, w2, mx23, my23, muv23, mz23, mw23, maxScreenSize, depth + 1)); + result.push(...subdivideTriangleIfNeeded(mx31, my31, muv31, mz31, mw31, mx23, my23, muv23, mz23, mw23, x3, y3, uv3, z3, w3, maxScreenSize, depth + 1)); + result.push(...subdivideTriangleIfNeeded(mx12, my12, muv12, mz12, mw12, mx23, my23, muv23, mz23, mw23, mx31, my31, muv31, mz31, mw31, maxScreenSize, depth + 1)); + return result; +} +function drawTexturedTriangle(x1, y1, uv1, z1, w1, x2, y2, uv2, z2, w2, x3, y3, uv3, z3, w3, texture, alphaMultiplier = 1) { + if (w1 < MIN_PERSPECTIVE_W || w2 < MIN_PERSPECTIVE_W || w3 < MIN_PERSPECTIVE_W) { + return; + } + const maxCoord = max5(width, height) * 2; + if (abs3(x1) > maxCoord || abs3(y1) > maxCoord || abs3(x2) > maxCoord || abs3(y2) > maxCoord || abs3(x3) > maxCoord || abs3(y3) > maxCoord) { + return; + } + const minX = floor7(min5(x1, x2, x3)); + const maxX = ceil5(max5(x1, x2, x3)); + const minY = floor7(min5(y1, y2, y3)); + const maxY = ceil5(max5(y1, y2, y3)); + const screenMinX = max5(0, minX); + const screenMaxX = min5(width, maxX); + const screenMinY = max5(0, minY); + const screenMaxY = min5(height, maxY); + if (screenMinX >= screenMaxX || screenMinY >= screenMaxY) return; + if (showBoundingBoxes) { + boundingBoxes.push({ + minX, + maxX, + minY, + maxY, + screenMinX, + screenMaxX, + screenMinY, + screenMaxY, + rejected: false + }); + } + const areaABC = (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1); + if (abs3(areaABC) < 0.5) return; + const texWidth = texture.width; + const texHeight = texture.height; + const invW1 = 1 / w1; + const invW2 = 1 / w2; + const invW3 = 1 / w3; + const u1OverW = uv1[0] * invW1; + const v1OverW = uv1[1] * invW1; + const u2OverW = uv2[0] * invW2; + const v2OverW = uv2[1] * invW2; + const u3OverW = uv3[0] * invW3; + const v3OverW = uv3[1] * invW3; + for (let y = screenMinY; y < screenMaxY; y++) { + for (let x = screenMinX; x < screenMaxX; x++) { + const areaPBC = (x2 - x) * (y3 - y) - (x3 - x) * (y2 - y); + const areaPCA = (x3 - x) * (y1 - y) - (x1 - x) * (y3 - y); + const u2 = areaPBC / areaABC; + const v2 = areaPCA / areaABC; + const w = 1 - u2 - v2; + if (u2 >= 0 && v2 >= 0 && w >= 0) { + const depth = u2 * z1 + v2 * z2 + w * z3; + const bufferIndex = x + y * width; + if (depthBuffer.length > 0) { + if (depth > depthBuffer[bufferIndex]) { + continue; + } + } + renderStats.pixelsDrawn++; + const interpInvW = u2 * invW1 + v2 * invW2 + w * invW3; + if (interpInvW < 1e-4) continue; + const interpUOverW = u2 * u1OverW + v2 * u2OverW + w * u3OverW; + const interpVOverW = u2 * v1OverW + v2 * v2OverW + w * v3OverW; + const texU = interpUOverW / interpInvW; + const texV = interpVOverW / interpInvW; + if (abs3(texU) > 1e3 || abs3(texV) > 1e3) continue; + let texX = (floor7(texU * texWidth) % texWidth + texWidth) % texWidth; + let texY = (floor7(texV * texHeight) % texHeight + texHeight) % texHeight; + const pixelIndex = (texY * texWidth + texX) * 4; + const r2 = texture.pixels[pixelIndex]; + const g = texture.pixels[pixelIndex + 1]; + const b2 = texture.pixels[pixelIndex + 2]; + const a2 = floor7(texture.pixels[pixelIndex + 3] * alphaMultiplier); + if (depthBuffer.length > 0) { + depthBuffer[bufferIndex] = depth; + } + color(r2, g, b2, a2); + point(x, y); + } + } + } +} +var span32 = null; +var span32Pixels = null; +var littleEndian = new Uint8Array(new Uint32Array([1]).buffer)[0] === 1; +function fillTriSolid(x1, y1, x2, y2, x3, y3) { + if (!pixels || pixels.byteLength === 0 || skips.length > 0) return false; + if (typeof c[0] !== "number" || c[0] === -1 || c[3] !== 255) return false; + if (span32Pixels !== pixels) { + if (pixels.byteOffset % 4 !== 0) return false; + span32 = new Uint32Array(pixels.buffer, pixels.byteOffset, pixels.byteLength >> 2); + span32Pixels = pixels; + } + const r2 = c[0], g = c[1], b2 = c[2]; + const packed = littleEndian ? (255 << 24 | b2 << 16 | g << 8 | r2) >>> 0 : (r2 << 24 | g << 16 | b2 << 8 | 255) >>> 0; + const px = panTranslation.x, py = panTranslation.y; + let left = 0, top = 0, right = width, bottom = height; + if (activeMask) { + left = max5(left, activeMask.x); + top = max5(top, activeMask.y); + right = min5(right, activeMask.x + activeMask.width); + bottom = min5(bottom, activeMask.y + activeMask.height); + } + let minY = y1 < y2 ? y1 : y2; + if (y3 < minY) minY = y3; + let maxY = y1 > y2 ? y1 : y2; + if (y3 > maxY) maxY = y3; + if (minY + py < top) minY = top - py; + if (maxY + py >= bottom) maxY = bottom - 1 - py; + for (let y = minY; y <= maxY; y++) { + let a2 = Infinity, bx = -Infinity, hits = 0, x; + if (y1 <= y && y < y2 || y2 <= y && y < y1) { + x = (y - y1) * (x2 - x1) / (y2 - y1) + x1; + if (x < a2) a2 = x; + if (x > bx) bx = x; + hits++; + } + if (y2 <= y && y < y3 || y3 <= y && y < y2) { + x = (y - y2) * (x3 - x2) / (y3 - y2) + x2; + if (x < a2) a2 = x; + if (x > bx) bx = x; + hits++; + } + if (y3 <= y && y < y1 || y1 <= y && y < y3) { + x = (y - y3) * (x1 - x3) / (y1 - y3) + x3; + if (x < a2) a2 = x; + if (x > bx) bx = x; + hits++; + } + if (hits < 2) continue; + let sx0 = floor7(a2) + px, sx1 = ceil5(bx) + px; + if (sx0 < left) sx0 = left; + if (sx1 > right) sx1 = right; + if (sx0 >= sx1) continue; + const row = (y + py) * width; + if (sx1 - sx0 < 32) { + for (let i2 = row + sx0, e2 = row + sx1; i2 < e2; i2++) span32[i2] = packed; + } else { + span32.fill(packed, row + sx0, row + sx1); + } + } + return true; +} +function tri() { + let x1, y1, x2, y2, x3, y3; + let mode = "fill"; + if (arguments.length === 6 && Number.isFinite(arguments[0]) && Number.isFinite(arguments[1]) && Number.isFinite(arguments[2]) && Number.isFinite(arguments[3]) && Number.isFinite(arguments[4]) && Number.isFinite(arguments[5]) && fillTriSolid( + floor7(arguments[0]), + floor7(arguments[1]), + floor7(arguments[2]), + floor7(arguments[3]), + floor7(arguments[4]), + floor7(arguments[5]) + )) return; + for (let i2 = 0; i2 < arguments.length; i2++) { + if (Number.isNaN(arguments[i2])) { + arguments[i2] = void 0; + } + } + if (arguments.length === 6) { + x1 = arguments[0]; + y1 = arguments[1]; + x2 = arguments[2]; + y2 = arguments[3]; + x3 = arguments[4]; + y3 = arguments[5]; + } else if (arguments.length === 7) { + x1 = arguments[0]; + y1 = arguments[1]; + x2 = arguments[2]; + y2 = arguments[3]; + x3 = arguments[4]; + y3 = arguments[5]; + mode = arguments[6]; + } else if (arguments.length === 1) { + if (Array.isArray(arguments[0])) { + const coords = arguments[0]; + if (coords.length >= 6) { + x1 = coords[0]; + y1 = coords[1]; + x2 = coords[2]; + y2 = coords[3]; + x3 = coords[4]; + y3 = coords[5]; + } + } else if (arguments[0] && arguments[0].points) { + const obj = arguments[0]; + const coords = obj.points; + if (Array.isArray(coords) && coords.length >= 6) { + x1 = coords[0]; + y1 = coords[1]; + x2 = coords[2]; + y2 = coords[3]; + x3 = coords[4]; + y3 = coords[5]; + } + if (obj.mode) mode = obj.mode; + } + } else if (arguments.length === 2) { + if (Array.isArray(arguments[0])) { + const coords = arguments[0]; + if (coords.length >= 6) { + x1 = coords[0]; + y1 = coords[1]; + x2 = coords[2]; + y2 = coords[3]; + x3 = coords[4]; + y3 = coords[5]; + } + mode = arguments[1]; + } + } else { + return console.error("Invalid triangle call. Expected tri(x1, y1, x2, y2, x3, y3) or tri(x1, y1, x2, y2, x3, y3, mode)"); + } + if ([x1, y1, x2, y2, x3, y3].some((coord) => coord === void 0 || isNaN(coord))) { + return console.error("Invalid triangle coordinates:", { x1, y1, x2, y2, x3, y3 }); + } + if (nonvalue(x1)) x1 = randInt(width); + if (nonvalue(y1)) y1 = randInt(height); + if (nonvalue(x2)) x2 = randInt(width); + if (nonvalue(y2)) y2 = randInt(height); + if (nonvalue(x3)) x3 = randInt(width); + if (nonvalue(y3)) y3 = randInt(height); + x1 = floor7(x1); + y1 = floor7(y1); + x2 = floor7(x2); + y2 = floor7(y2); + x3 = floor7(x3); + y3 = floor7(y3); + if (mode === "fill" || mode === "") { + if (fillTriSolid(x1, y1, x2, y2, x3, y3)) return; + const points = [[x1, y1], [x2, y2], [x3, y3]]; + fillShape(points); + } else { + const thickness = parseInt(mode.split(":")[1]) || 1; + const outlineMode = mode.split(":")[0]; + if (outlineMode === "outline" || outlineMode === "out") { + line(x1, y1, x2, y2); + line(x2, y2, x3, y3); + line(x3, y3, x1, y1); + } else if (outlineMode === "inline" || outlineMode === "in") { + line(x1, y1, x2, y2); + line(x2, y2, x3, y3); + line(x3, y3, x1, y1); + } else { + const points = [[x1, y1], [x2, y2], [x3, y3]]; + fillShape(points); + } + } +} +function grid({ + box: { x, y, w: cols, h: rows }, + transform: { scale: scale7, angle: angle3, width: twidth, height: theight, anchor }, + centers = [] +}, buffer) { + const gridStart = performance.now(); + const isSlowFrame = graphPerf2 && graphPerf2.lastFPS && graphPerf2.lastFPS < 15; + const oc = c.slice(); + let w, h; + if (scale7 !== void 0) { + if (number(scale7)) scale7 = { x: scale7, y: scale7 }; + w = cols * scale7.x; + h = rows * scale7.y; + } else if (twidth !== void 0 && theight !== void 0) { + w = twidth; + h = theight; + scale7 = { x: w / cols, y: h / rows }; + } + const colPix = w / cols, rowPix = h / rows; + if (scale7.x < 0) x -= w; + if (scale7.y < 0) y -= h; + angle3 = wrap(angle3, 360); + let xmod = 0, ymod = 0; + if (angle3) { + if (w % 2 !== 0 && h % 2 === 0) { + if (x % 1 !== 0 && angle3 === 90) xmod += 0.5; + if (angle3 === 270) { + xmod += x % 1 !== 0 ? 1 : 0.5; + ymod += 0.5; + } + if (angle3 === 180) { + ymod += 0.5; + if (x % 1 === 0) xmod += 0.5; + } + } + if (h % 2 !== 0 && w % 2 === 0) { + if (y % 1 !== 0 && angle3 === 90) ymod += 0.5; + if (angle3 === 270) { + xmod += 0.5; + ymod += y % 1 !== 0 ? 1 : 0.5; + } + if (angle3 === 180) { + xmod += 0.5; + if (y % 1 === 0) ymod += 0.5; + } + } else if (w % 2 === 0 && h % 2 === 0) { + xmod += 0.5; + ymod += 0.5; + } else if (w % 2 !== 0 && h % 2 !== 0) { + xmod += 0.5; + ymod += 0.5; + } + } + if (scale7.x < 0 && scale7.y > 0) { + if (angle3 >= 90 && angle3 < 270) ymod += 1 * mathSign(-scale7.y); + if (angle3 >= 180 && angle3 <= 270) xmod += 1 * mathSign(-scale7.x); + } else if (scale7.x > 0 && scale7.y > 0) { + if (angle3 >= 90 && angle3 < 270) xmod += 1 * mathSign(-scale7.x); + if (angle3 >= 180 && angle3 <= 270) ymod += 1 * mathSign(-scale7.y); + } else if (scale7.y < 0 && scale7.x > 0) { + if (angle3 >= 90 && angle3 < 270) ymod += 1 * mathSign(-scale7.y); + if (angle3 >= 180 && angle3 <= 270) xmod += 1 * mathSign(-scale7.x); + } else if (scale7.y < 0 && scale7.x < 0) { + if (angle3 >= 90 && angle3 < 270) xmod += 1 * mathSign(-scale7.x); + if (angle3 >= 180 && angle3 <= 270) ymod += 1 * mathSign(-scale7.y); + } + x += xmod; + y += ymod; + let centerX, centerY; + if (anchor) { + centerX = anchor.x + x; + centerY = anchor.y + y; + } else { + centerX = x + w / 2; + centerY = y + h / 2; + } + angle3 = radians(angle3); + if (buffer) { + const bufWidth = buffer.width; + const bufHeight = buffer.height; + let bufPixels = buffer.pixels; + if (!bufPixels) { + bufPixels = ensureBufferPixels(buffer); + } + if (!bufPixels) { + console.warn("\u{1F3A8} grid: buffer missing pixel data, skipping render", buffer); + return; + } + const scaleXAbs = ~~abs3(scale7.x); + const scaleYAbs = ~~abs3(scale7.y); + const isAngleZero = angle3 === 0; + let cosValue, sinValue; + if (!isAngleZero) { + cosValue = cos3(angle3); + sinValue = sin3(angle3); + } + const bufferWidth = scaleXAbs; + const bufferHeight = scaleYAbs; + const halfBoxWidth = bufferWidth >> 1; + const halfBoxHeight = bufferHeight >> 1; + const adjustedBufferWidth = bufferWidth + (halfBoxWidth << 1); + const adjustedBufferHeight = bufferHeight + (halfBoxHeight << 1); + const colPixInt = ~~(w / cols); + const rowPixInt = ~~(h / rows); + if (isAngleZero && scale7.x === scaleXAbs && scale7.y === scaleYAbs && scale7.x > 0 && scale7.y > 0) { + for (let j = 0; j < rows; j += 1) { + const srcY = j % bufHeight; + const destStartY = ~~(y + j * rowPixInt); + const destEndY = ~~(y + (j + 1) * rowPixInt); + const pixelHeight = destEndY - destStartY; + if (pixelHeight > 0 && destStartY >= 0 && destEndY <= height) { + for (let i2 = 0; i2 < cols; i2 += 1) { + const srcX = i2 % bufWidth; + const srcIndex = srcX + srcY * bufWidth << 2; + if (srcIndex < bufPixels.length) { + const r2 = bufPixels[srcIndex]; + const g = bufPixels[srcIndex + 1]; + const b2 = bufPixels[srcIndex + 2]; + const a2 = bufPixels[srcIndex + 3]; + const destStartX = ~~(x + i2 * colPixInt); + const destEndX = ~~(x + (i2 + 1) * colPixInt); + const pixelWidth = destEndX - destStartX; + if (pixelWidth > 0 && destStartX >= 0 && destEndX <= width) { + color(r2, g, b2, a2); + if (pixelWidth > 1 && pixelHeight > 1) { + box(destStartX, destStartY, pixelWidth, pixelHeight, "fill"); + } else if (pixelHeight === 1) { + lineh(destStartX, destEndX - 1, destStartY); + } else { + for (let dy = 0; dy < pixelHeight; dy += 1) { + lineh(destStartX, destEndX - 1, destStartY + dy); + } + } + } + } + } + } + } + } else { + const skipStep = isSlowFrame ? 2 : 1; + for (let j = 0; j < rows; j += skipStep) { + const plotY = y + rowPix * j; + const repeatY = j % bufHeight; + for (let i2 = 0; i2 < cols; i2 += skipStep) { + const plotX = x + colPix * i2; + let finalX, finalY; + if (isAngleZero) { + finalX = plotX; + finalY = plotY; + } else { + const dx = plotX - centerX; + const dy = plotY - centerY; + finalX = dx * cosValue - dy * sinValue + centerX; + finalY = dx * sinValue + dy * cosValue + centerY; + } + if (finalX < -adjustedBufferWidth || finalX > width + adjustedBufferWidth || finalY < -adjustedBufferHeight || finalY > height + adjustedBufferHeight) { + continue; + } + const repeatX = i2 % bufWidth; + const pixIndex = repeatX + bufWidth * repeatY << 2; + if (pixIndex < bufPixels.length) { + const colorData = [ + bufPixels[pixIndex], + bufPixels[pixIndex + 1], + bufPixels[pixIndex + 2], + bufPixels[pixIndex + 3] + ]; + color(...colorData); + const edgeX = Math.round(x + i2 * colPix); + const edgeX2 = Math.round(x + (i2 + 1) * colPix); + const edgeY = Math.round(y + j * rowPix); + const edgeY2 = Math.round(y + (j + 1) * rowPix); + const destStartX = Math.min(edgeX, edgeX2); + const destEndX = Math.max(edgeX, edgeX2); + const destStartY = Math.min(edgeY, edgeY2); + const destEndY = Math.max(edgeY, edgeY2); + const pixelWidth = destEndX - destStartX; + const pixelHeight = destEndY - destStartY; + if (pixelWidth > 0 && pixelHeight > 0) { + if (isAngleZero) { + if (pixelWidth > 1 && pixelHeight > 1) { + box(destStartX, destStartY, pixelWidth, pixelHeight, "fill"); + } else { + for (let dy = 0; dy < pixelHeight; dy += 1) { + lineh(destStartX, destEndX - 1, destStartY + dy); + } + } + } else { + const boxSize = Math.max(2, Math.ceil(Math.max(pixelWidth, pixelHeight) * 1.2)); + for (let dy = 0; dy < pixelHeight; dy += 1) { + for (let dx = 0; dx < pixelWidth; dx += 1) { + const px = destStartX + dx; + const py = destStartY + dy; + const relX = px - centerX; + const relY = py - centerY; + const rotX = relX * cosValue - relY * sinValue + centerX; + const rotY = relX * sinValue + relY * cosValue + centerY; + box(~~rotX, ~~rotY, boxSize, boxSize, "fill"); + } + } + } + } + } + } + } + } + } else { + const right = x + w - 1, bottom = y + h - 1; + color(64, 64, 64); + plot(x, y); + plot(right, y); + plot(x, bottom); + plot(right, bottom); + color(...oc); + for (let i2 = 0; i2 < cols; i2 += 1) { + const plotX = x + colPix * i2; + for (let j = 0; j < rows; j += 1) { + const plotY = y + rowPix * j; + const alphaMod = oc[3] / 255; + color(oc[0], oc[1], oc[2], even(i2 + j) ? 50 * alphaMod : 75 * alphaMod); + box(plotX, plotY, scale7.x, scale7.y); + centers.forEach((p) => { + color(oc[0], oc[1], oc[2], 100); + plot(plotX + p.x, plotY + p.y); + }); + } + } + color(...oc); + } + const gridEnd = performance.now(); + graphPerf2.track("grid", gridEnd - gridStart); +} +function draw() { + const args = arguments; + let drawing = args[0], x, y, scale7 = 1, angle3 = 0, thickness = 1; + if (typeof args[1] === "number") { + x = args[1]; + y = args[2]; + scale7 = args[3] || scale7; + angle3 = args[4] || angle3; + thickness = args[5] || thickness; + } else if (typeof args[1] === "object") { + drawing = args[0]; + if (Array.isArray(args[1])) { + x = args[1][0]; + y = args[1][1]; + } else { + x = args[1].x; + y = args[1].y; + } + scale7 = args[2] || scale7; + angle3 = args[3] || angle3; + thickness = args[4] || thickness; + } + if (drawing === void 0 || drawing === null) return; + let xOffset = 0; + let yOffset = 0; + if (drawing.offset) { + xOffset = drawing.offset[0] * scale7; + yOffset = drawing.baselineOffset ? drawing.baselineOffset[1] * scale7 : drawing.offset[1] * scale7; + } + if (drawing.pixels && drawing.resolution && !drawing.commands) { + const [charWidth, charHeight] = drawing.resolution; + const angleRad = radians(angle3); + const sinA = sin3(angleRad); + const cosA = cos3(angleRad); + const hasRotation = angle3 !== 0; + const centerX = charWidth / 2; + const centerY = charHeight / 2; + x += xOffset; + y += yOffset; + x = floor7(x); + y = floor7(y); + pan(x, y); + for (let row = 0; row < drawing.pixels.length; row++) { + const pixelRow = drawing.pixels[row]; + if (!Array.isArray(pixelRow)) continue; + for (let col = 0; col < pixelRow.length; col++) { + if (pixelRow[col] === 1) { + let pixelX = col - centerX; + let pixelY = row - centerY; + if (hasRotation) { + const rotatedX = pixelX * cosA - pixelY * sinA; + const rotatedY = pixelX * sinA + pixelY * cosA; + pixelX = rotatedX; + pixelY = rotatedY; + } + pixelX += centerX; + pixelY += centerY; + pixelX *= scale7; + pixelY *= scale7; + const finalX = Math.round(pixelX); + const finalY = Math.round(pixelY); + const isMatrixChunky = drawing?.fontName === "MatrixChunky8"; + const matrixDebugActive = matrixDebugEnabled(); + if (!matrixDebugActive && matrixChunkyDebugCount !== 0) + matrixChunkyDebugCount = 0; + if (isMatrixChunky && matrixDebugActive && row < 8 && col < 8) { + console.log("\u{1F9F1} MatrixChunky8 draw", { + char: drawing?.char || drawing?.code || "?", + row, + col, + finalX, + finalY, + scale: scale7, + currentColor: c4.slice(0, 4), + skip: skips.length, + mask: activeMask ? { + x: activeMask.x, + y: activeMask.y, + width: activeMask.width, + height: activeMask.height + } : null + }); + } + let beforePixel; + let logged = false; + if (isMatrixChunky && matrixDebugActive && matrixChunkyDebugCount < 20) { + beforePixel = pixel(finalX, finalY); + logged = true; + } + if (scale7 === 1) { + point(finalX, finalY); + } else { + for (let sy = 0; sy < scale7; sy++) { + for (let sx = 0; sx < scale7; sx++) { + point(finalX + sx, finalY + sy); + } + } + } + if (logged) { + const afterPixel = pixel(finalX, finalY); + matrixChunkyDebugCount += 1; + console.log("\u{1FA84} MatrixChunky8 point write", { + char: drawing?.char || drawing?.code || "?", + row, + col, + finalX, + finalY, + color: c4.slice(0, 4), + before: beforePixel, + after: afterPixel + }); + } + } + } + } + pan(-x, -y); + return; + } + angle3 = radians(angle3); + const s2 = sin3(angle3); + const c4 = cos3(angle3); + if (xOffset !== 0 || yOffset !== 0) { + const rotatedXOffset = xOffset * c4 - yOffset * s2; + const rotatedYOffset = xOffset * s2 + yOffset * c4; + x += Math.round(rotatedXOffset); + y += Math.round(rotatedYOffset); + } + x = floor7(x); + y = floor7(y); + pan(x, y); + const gesture = []; + function paintGesture() { + thickness === 1 ? poly(gesture) : pline(gesture, thickness); + gesture.length = 0; + } + drawing?.commands?.forEach(({ name, args: args2 }, i2) => { + args2 = args2.map((a2) => a2 * scale7); + if (name === "line") { + let x1 = args2[0]; + let y1 = args2[1]; + let x2 = args2[2]; + let y2 = args2[3]; + let nx1 = Math.round(x1 * c4 - y1 * s2); + let ny1 = Math.round(x1 * s2 + y1 * c4); + let nx2 = Math.round(x2 * c4 - y2 * s2); + let ny2 = Math.round(x2 * s2 + y2 * c4); + if (nx1 !== nx2 || ny1 !== ny2) { + if (thickness === 1) { + gesture.push([nx1, ny1], [nx2, ny2]); + } else { + gesture.push({ x: nx1, y: ny1 }, { x: nx2, y: ny2 }); + } + } + const nextCommand = drawing.commands[i2 + 1]; + if (nextCommand && nextCommand.name === "line") { + const nextArgs = nextCommand.args.map((a2) => a2 * scale7); + if (args2[2] !== nextArgs[0] || args2[3] !== nextArgs[1]) { + paintGesture(); + } else { + gesture.pop(); + } + } else { + paintGesture(); + } + } else if (name === "point") { + let px = args2[0]; + let py = args2[1]; + let npx = Math.round(px * c4 - py * s2); + let npy = Math.round(px * s2 + py * c4); + thickness === 1 ? point(npx, npy) : circle(npx, npy, thickness / 2, true); + } + }); + pan(-x, -y); +} +function printLine(text, font, startX, startY, blockWidth = 6, scale7 = 1, xOffset = 0, thickness = 1, rotation = 0, fontMetadata = null, fallbackFont = null) { + if (!text) return; + if (activeMask) { + const lineHeight = font?.A?.box?.height || 10; + const scaledHeight = lineHeight * scale7; + if (startY >= activeMask.y + activeMask.height || startY + scaledHeight <= activeMask.y || startX >= activeMask.x + activeMask.width || startX + text.length * blockWidth * scale7 <= activeMask.x) { + return; + } + } + const isProportional = fontMetadata?.proportional === true || fontMetadata?.bdfFont === "MatrixChunky8" || fontMetadata?.name === "MatrixChunky8"; + const getGlyphForChar = (char) => { + if (char.trim() === "") return null; + let primaryGlyph = null; + let primaryQuestion = null; + let fallbackGlyph = null; + let fallbackQuestion = null; + try { + primaryGlyph = font?.[char] || null; + primaryQuestion = font?.["?"] || null; + } catch (err) { + primaryGlyph = null; + primaryQuestion = null; + } + if (primaryGlyph && !primaryGlyph.isPlaceholder) return primaryGlyph; + if (fallbackFont) { + try { + fallbackGlyph = fallbackFont?.[char] || null; + fallbackQuestion = fallbackFont?.["?"] || null; + } catch (err) { + fallbackGlyph = null; + fallbackQuestion = null; + } + if (fallbackGlyph && !fallbackGlyph.isPlaceholder) return fallbackGlyph; + if (fallbackQuestion) return fallbackQuestion; + } + if (primaryGlyph) return primaryGlyph; + if (primaryQuestion) return primaryQuestion; + return null; + }; + if (isProportional) { + const advances = fontMetadata?.advances || {}; + const bdfOverrides = fontMetadata?.bdfOverrides || {}; + let currentX = startX + xOffset; + [...text.toString()].forEach((char, i2) => { + let charX = currentX; + let charY = startY; + if (bdfOverrides[char]) { + const override = bdfOverrides[char]; + if (override.x !== void 0) { + charX += override.x * scale7; + } + if (override.y !== void 0) { + charY += override.y * scale7; + } + } + const charAdvance = advances[char] || blockWidth; + draw( + getGlyphForChar(char), + charX, + charY, + scale7, + rotation, + thickness + ); + currentX += charAdvance * scale7; + }); + } else { + [...text.toString()].forEach((char, i2) => { + draw( + getGlyphForChar(char), + startX + blockWidth * scale7 * i2 + xOffset, + startY, + scale7, + rotation, + thickness + ); + }); + } +} +function noise16() { + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = Math.max(0, activeMask.x); + minY = Math.max(0, activeMask.y); + maxX = Math.min(width, activeMask.x + activeMask.width); + maxY = Math.min(height, activeMask.y + activeMask.height); + } + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const i2 = (y * width + x) * 4; + pixels[i2] = byteInterval17(randInt(16)); + pixels[i2 + 1] = byteInterval17(randInt(16)); + pixels[i2 + 2] = byteInterval17(randInt(16)); + pixels[i2 + 3] = 255; + } + } +} +function noise16DIGITPAIN() { + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = Math.max(0, activeMask.x); + minY = Math.max(0, activeMask.y); + maxX = Math.min(width, activeMask.x + activeMask.width); + maxY = Math.min(height, activeMask.y + activeMask.height); + } + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const i2 = (y * width + x) * 4; + pixels[i2] = byteInterval17(randInt(16)) * 0.6; + pixels[i2 + 1] = byteInterval17(randInt(16)) * 0.15; + pixels[i2 + 2] = byteInterval17(randInt(16)) * 0.55; + pixels[i2 + 3] = 255; + } + } +} +function noise16Aesthetic() { + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = Math.max(0, activeMask.x); + minY = Math.max(0, activeMask.y); + maxX = Math.min(width, activeMask.x + activeMask.width); + maxY = Math.min(height, activeMask.y + activeMask.height); + } + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const i2 = (y * width + x) * 4; + pixels[i2] = byteInterval17(randInt(16)) * 0.4; + pixels[i2 + 1] = byteInterval17(randInt(16)) * 0.15; + pixels[i2 + 2] = byteInterval17(randInt(16)) * 0.8; + pixels[i2 + 3] = 255; + } + } +} +function noise16Sotce() { + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = Math.max(0, activeMask.x); + minY = Math.max(0, activeMask.y); + maxX = Math.min(width, activeMask.x + activeMask.width); + maxY = Math.min(height, activeMask.y + activeMask.height); + } + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const i2 = (y * width + x) * 4; + if (flip()) pixels[i2] = byteInterval17(14 + randInt(2)); + if (flip()) pixels[i2 + 1] = byteInterval17(8 + randInt(2)) * 0.9; + if (flip()) pixels[i2 + 2] = byteInterval17(8 + randInt(2)) * 0.9; + pixels[i2 + 3] = 255; + } + } +} +function noiseTinted(tint, amount, saturation) { + tint = findColor2(tint); + for (let i2 = 0; i2 < pixels.length; i2 += 4) { + const grayscale = randInt(255); + pixels[i2] = lerp5( + lerp5(grayscale, randInt(255), saturation), + tint[0], + amount + ); + pixels[i2 + 1] = lerp5( + lerp5(grayscale, randInt(255), saturation), + tint[1], + amount + ); + pixels[i2 + 2] = lerp5( + lerp5(grayscale, randInt(255), saturation), + tint[2], + amount + ); + pixels[i2 + 3] = 255; + } +} +var spinAccumulator = 0; +var zoomAccumulator = 0; +var zoomTimeOffset = Math.random() * 1e3; +var scrollAccumulatorX = 0; +var scrollAccumulatorY = 0; +function resetScrollState() { + scrollAccumulatorX = 0; + scrollAccumulatorY = 0; +} +var shearAccumulatorX = 0; +var shearAccumulatorY = 0; +var suckAccumulator = 0; +function scroll(dx = 0, dy = 0) { + if (dx === 0 && dy === 0) return; + scrollAccumulatorX += dx; + scrollAccumulatorY += dy; + const integerDx = Math.trunc(scrollAccumulatorX); + const integerDy = Math.trunc(scrollAccumulatorY); + scrollAccumulatorX -= integerDx; + scrollAccumulatorY -= integerDy; + if (integerDx === 0 && integerDy === 0) { + return; + } + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + const maskMinX = Math.floor(activeMask.x); + const maskMinY = Math.floor(activeMask.y); + const maskMaxX = Math.floor(activeMask.x + activeMask.width); + const maskMaxY = Math.floor(activeMask.y + activeMask.height); + minX = Math.max(0, Math.min(width, maskMinX)); + maxX = Math.max(0, Math.min(width, maskMaxX)); + minY = Math.max(0, Math.min(height, maskMinY)); + maxY = Math.max(0, Math.min(height, maskMaxY)); + } + const boundsWidth = maxX - minX; + const boundsHeight = maxY - minY; + if (boundsWidth <= 0 || boundsHeight <= 0) { + return; + } + let finalDx = (integerDx % boundsWidth + boundsWidth) % boundsWidth; + let finalDy = (integerDy % boundsHeight + boundsHeight) % boundsHeight; + if (finalDx === 0 && finalDy === 0) { + return; + } + if (gpuSpinEnabled && gpuSpinAvailable && gpuAllowed("scroll") && gpuSpinModule?.gpuScroll && pixels && width && height) { + const mask2 = activeMask ? { + x: minX, + y: minY, + width: boundsWidth, + height: boundsHeight + } : null; + const success = gpuSpinModule.gpuScroll(pixels, width, height, finalDx, finalDy, mask2); + if (success) { + gpuOk("scroll"); + return; + } + gpuFailed("scroll"); + } + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in scroll, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const tempPixels = new Uint8ClampedArray(pixels); + for (let y = 0; y < boundsHeight; y++) { + const srcY = minY + (y + boundsHeight - finalDy) % boundsHeight; + const destY = minY + y; + if (finalDx === 0) { + const srcRowStart = (srcY * width + minX) * 4; + const destRowStart = (destY * width + minX) * 4; + const rowBytes = boundsWidth * 4; + pixels.set(tempPixels.subarray(srcRowStart, srcRowStart + rowBytes), destRowStart); + } else { + const srcStartX = minX + finalDx; + const chunk1Width = boundsWidth - finalDx; + if (chunk1Width > 0) { + const srcStart = (srcY * width + srcStartX) * 4; + const destStart = (destY * width + minX) * 4; + const chunk1Bytes = chunk1Width * 4; + pixels.set(tempPixels.subarray(srcStart, srcStart + chunk1Bytes), destStart); + } + const chunk2Width = finalDx; + if (chunk2Width > 0) { + const srcStart = (srcY * width + minX) * 4; + const destStart = (destY * width + minX + chunk1Width) * 4; + const chunk2Bytes = chunk2Width * 4; + pixels.set(tempPixels.subarray(srcStart, srcStart + chunk2Bytes), destStart); + } + } + } +} +function flip2() { + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + const maskMinX = Math.floor(activeMask.x); + const maskMinY = Math.floor(activeMask.y); + const maskMaxX = Math.floor(activeMask.x + activeMask.width); + const maskMaxY = Math.floor(activeMask.y + activeMask.height); + minX = Math.max(0, Math.min(width, maskMinX)); + maxX = Math.max(0, Math.min(width, maskMaxX)); + minY = Math.max(0, Math.min(height, maskMinY)); + maxY = Math.max(0, Math.min(height, maskMaxY)); + } + const boundsWidth = maxX - minX; + const boundsHeight = maxY - minY; + if (boundsWidth <= 0 || boundsHeight <= 1) return; + if (gpuSpinEnabled && gpuSpinAvailable && gpuSpinModule?.gpuComposite && pixels && width && height) { + const mask2 = { + x: minX, + y: minY, + width: boundsWidth, + height: boundsHeight + }; + const success = gpuSpinModule.gpuComposite(pixels, width, height, { + zoom: 1, + zoomAnchorX: 0.5, + zoomAnchorY: 0.5, + scrollX: 0, + scrollY: 0, + flipY: true, + contrast: 1, + brightness: 0, + mask: mask2 + }); + if (success) return; + } + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in flip, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const tempPixels = new Uint8ClampedArray(pixels); + for (let y = 0; y < boundsHeight; y++) { + const srcY = maxY - 1 - y; + const destY = minY + y; + const srcRowStart = (srcY * width + minX) * 4; + const destRowStart = (destY * width + minX) * 4; + const rowBytes = boundsWidth * 4; + pixels.set(tempPixels.subarray(srcRowStart, srcRowStart + rowBytes), destRowStart); + } +} +var spinBuffer; +var zoomBuffer; +var spinSkipCounter = 0; +var gpuEnabled = true; +var gpuSpinModule = null; +var gpuSpinEnabled = gpuEnabled; +var gpuSpinAvailable = null; +var gpuFloodAvailable = null; +var gpuFloodEnabled = gpuEnabled; +var gpuLayerCompositeAvailable = null; +var gpuLayerCompositeEnabled = gpuEnabled; +var gpuInitPromise = null; +var GPU_FAIL_THRESHOLD = 3; +var GPU_CACHE_KEY = "ac-gpu-disabled-v4"; +var gpuFailCounts = { + spin: 0, + composite: 0, + blur: 0, + sharpen: 0, + shear: 0, + suck: 0, + flood: 0, + zoom: 0, + scroll: 0, + contrast: 0, + brightness: 0, + invert: 0, + compositeLayers: 0 +}; +var gpuDisabled = {}; +var gpuFailoverResetCallback = null; +try { + const cached = typeof localStorage !== "undefined" && localStorage.getItem(GPU_CACHE_KEY); + if (cached) { + const parsed = JSON.parse(cached); + for (const key of Object.keys(parsed)) { + gpuDisabled[key] = true; + gpuFailCounts[key] = GPU_FAIL_THRESHOLD; + } + console.log(`\u{1F3AE} GPU: Loaded cached disabled effects: ${Object.keys(parsed).join(", ")}`); + } +} catch { +} +function gpuFailed(effectName) { + gpuFrameLog.failed.add(effectName); + gpuFailCounts[effectName] = (gpuFailCounts[effectName] || 0) + 1; + if (gpuFailCounts[effectName] >= GPU_FAIL_THRESHOLD && !gpuDisabled[effectName]) { + gpuDisabled[effectName] = true; + console.warn(`\u{1F3AE} GPU ${effectName}: Auto-disabled after ${GPU_FAIL_THRESHOLD} failures \u2014 using CPU fallback`); + gpuTelemetry.report("gpu-disabled", effectName); + try { + if (typeof localStorage !== "undefined") { + localStorage.setItem(GPU_CACHE_KEY, JSON.stringify(gpuDisabled)); + } + } catch { + } + if (typeof self !== "undefined") self.__gpuFailoverOccurred = true; + if (gpuFailoverResetCallback) gpuFailoverResetCallback(); + } + return false; +} +function gpuOk(effectName) { + if (gpuFailCounts[effectName] > 0) gpuFailCounts[effectName] = 0; + gpuFrameLog.ok.add(effectName); +} +function gpuAllowed(effectName) { + return !gpuDisabled[effectName]; +} +function getGpuStatus() { + return { failCounts: { ...gpuFailCounts }, disabled: { ...gpuDisabled } }; +} +var gpuFrameLog = { + frameCount: 0, + ok: /* @__PURE__ */ new Set(), + // effects that succeeded this period + failed: /* @__PURE__ */ new Set(), + // effects that failed this period + disabled: /* @__PURE__ */ new Set(), + // effects skipped (auto-disabled) + rendererCached: null + // GPU renderer string (cached on first query) +}; +function gpuLogTick() { + gpuFrameLog.frameCount++; + if (gpuFrameLog.frameCount % 8 !== 0) return; + if (!gpuFrameLog.rendererCached) { + try { + if (typeof OffscreenCanvas !== "undefined") { + const c4 = new OffscreenCanvas(1, 1); + const g = c4.getContext("webgl2"); + if (g) { + const dbg = g.getExtension("WEBGL_debug_renderer_info"); + gpuFrameLog.rendererCached = dbg ? g.getParameter(dbg.UNMASKED_RENDERER_WEBGL) : "unknown"; + g.getExtension("WEBGL_lose_context")?.loseContext(); + } else { + gpuFrameLog.rendererCached = "no-webgl2"; + } + } else { + gpuFrameLog.rendererCached = "no-offscreen"; + } + } catch { + gpuFrameLog.rendererCached = "error"; + } + } + const ok = [...gpuFrameLog.ok]; + const failed = [...gpuFrameLog.failed]; + const dis = Object.keys(gpuDisabled).filter((k) => gpuDisabled[k]); + if (gpuFrameLog.frameCount === 8) { + console.log(`\u{1F3AE} GPU renderer=${gpuFrameLog.rendererCached} ok=[${ok}] fail=[${failed}] disabled=[${dis}]`); + } + if (gpuFrameLog.frameCount === 8 || failed.length > 0) { + gpuTelemetry.report("gpu-status", null, { + frame: gpuFrameLog.frameCount, + renderer: gpuFrameLog.rendererCached, + ok, + failed, + disabled: dis + }); + } + gpuFrameLog.ok.clear(); + gpuFrameLog.failed.clear(); +} +var gpuTelemetry = /* @__PURE__ */ (() => { + const queue = []; + let flushTimer = null; + let deviceInfo = null; + function getDevice() { + if (deviceInfo) return deviceInfo; + const ua = typeof navigator !== "undefined" ? navigator.userAgent : ""; + deviceInfo = { + userAgent: ua, + mobile: /Mobi|Android|iPhone|iPad/i.test(ua), + screen: typeof self !== "undefined" && self.screen ? { w: self.screen.width, h: self.screen.height } : null, + gpu: null + // filled on first report + }; + return deviceInfo; + } + function report(type, effect, detail) { + const device = getDevice(); + if (!device.gpu && typeof OffscreenCanvas !== "undefined") { + try { + const c4 = new OffscreenCanvas(1, 1); + const g = c4.getContext("webgl2"); + if (g) { + const dbg = g.getExtension("WEBGL_debug_renderer_info"); + if (dbg) { + device.gpu = { + vendor: g.getParameter(dbg.UNMASKED_VENDOR_WEBGL), + renderer: g.getParameter(dbg.UNMASKED_RENDERER_WEBGL) + }; + } + g.getExtension("WEBGL_lose_context")?.loseContext(); + } + } catch { + } + } + queue.push({ + type, + effect, + detail: detail || null, + device, + gpuStatus: getGpuStatus() + }); + if (!flushTimer) { + flushTimer = setTimeout(flush, 2e3); + } + } + async function flush() { + if (flushTimer) { + clearTimeout(flushTimer); + flushTimer = null; + } + if (!queue.length) return; + const events = queue.splice(0, queue.length); + try { + await fetch("/api/kidlisp-log", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ events }), + keepalive: true + }); + } catch { + } + } + return { report, flush }; +})(); +async function initGpuEffects() { + if (gpuInitPromise) return gpuInitPromise; + gpuInitPromise = (async () => { + try { + gpuSpinModule = await import("./gpu-effects.mjs"); + gpuSpinAvailable = gpuSpinModule.isGpuEffectsAvailable(); + gpuFloodAvailable = gpuSpinModule.isGpuFloodAvailable?.() ?? false; + gpuLayerCompositeAvailable = gpuSpinModule.isGpuLayerCompositeAvailable?.() ?? false; + } catch (e2) { + console.warn("\u{1F3AE} GPU Effects: Module load failed, using CPU fallback", e2); + gpuSpinAvailable = false; + gpuFloodAvailable = false; + gpuLayerCompositeAvailable = false; + } + return gpuSpinAvailable; + })(); + return gpuInitPromise; +} +var gpuContrastEnabled = gpuEnabled; +function setGpuConfig(config) { + gpuEnabled = !!config.gpu; + const effects = config.effects || {}; + gpuSpinEnabled = gpuEnabled && effects.spin !== false; + gpuFloodEnabled = gpuEnabled && effects.flood !== false; + gpuContrastEnabled = gpuEnabled && effects.contrast !== false; + gpuLayerCompositeEnabled = gpuEnabled && effects.composite !== false; + console.log(`\u{1F3AE} GPU Config: master=${gpuEnabled}, spin=${gpuSpinEnabled}, flood=${gpuFloodEnabled}, contrast=${gpuContrastEnabled}, composite=${gpuLayerCompositeEnabled}`); + if (gpuEnabled && !gpuSpinModule) initGpuEffects(); +} +function compositeLayers(layers) { + if (!layers || layers.length === 0) return true; + const compositeStart = performance.now(); + if (gpuLayerCompositeEnabled && gpuLayerCompositeAvailable && gpuAllowed("compositeLayers") && gpuSpinModule && pixels && width && height) { + const result = gpuSpinModule.gpuCompositeLayers(pixels, width, height, layers); + if (result.success) { + gpuOk("compositeLayers"); + const compositeTime = performance.now() - compositeStart; + graphPerf2.track("composite-layers-gpu", compositeTime); + return true; + } + gpuFailed("compositeLayers"); + } + const cpuStart = performance.now(); + for (const layer of layers) { + if (!layer.pixels) continue; + const alpha = layer.alpha !== void 0 ? layer.alpha : 255; + const destX = Math.floor(layer.x || 0); + const destY = Math.floor(layer.y || 0); + const srcW = layer.width; + const srcH = layer.height; + const src = layer.pixels; + const startX = Math.max(0, destX); + const startY = Math.max(0, destY); + const endX = Math.min(width, destX + srcW); + const endY = Math.min(height, destY + srcH); + if (startX >= endX || startY >= endY) continue; + const alphaFactor = alpha / 255; + for (let dy = startY; dy < endY; dy++) { + const srcY = dy - destY; + const srcRowStart = srcY * srcW * 4; + const dstRowStart = dy * width * 4; + for (let dx = startX; dx < endX; dx++) { + const srcX = dx - destX; + const srcIdx = srcRowStart + srcX * 4; + const dstIdx = dstRowStart + dx * 4; + const sA = src[srcIdx + 3] * alphaFactor; + if (sA < 1) continue; + const sR = src[srcIdx]; + const sG = src[srcIdx + 1]; + const sB = src[srcIdx + 2]; + if (sA >= 254) { + pixels[dstIdx] = sR; + pixels[dstIdx + 1] = sG; + pixels[dstIdx + 2] = sB; + pixels[dstIdx + 3] = 255; + } else { + const invAlpha = 255 - sA; + pixels[dstIdx] = sA * sR + invAlpha * pixels[dstIdx] >> 8; + pixels[dstIdx + 1] = sA * sG + invAlpha * pixels[dstIdx + 1] >> 8; + pixels[dstIdx + 2] = sA * sB + invAlpha * pixels[dstIdx + 2] >> 8; + pixels[dstIdx + 3] = Math.min(255, pixels[dstIdx + 3] + (sA >> 1)); + } + } + } + } + const cpuTime = performance.now() - cpuStart; + graphPerf2.track("composite-layers-cpu", cpuTime); + return false; +} +function batchedEffects(options = {}) { + const { + zoom: zoom2 = 1, + zoomAnchorX = 0.5, + zoomAnchorY = 0.5, + scrollX = 0, + scrollY = 0, + contrast: contrastLevel = 1, + brightness: brightnessLevel = 0 + } = options; + const hasZoom = zoom2 !== 1; + const hasScroll = scrollX !== 0 || scrollY !== 0; + const hasContrast = contrastLevel !== 1; + const hasBrightness = brightnessLevel !== 0; + if (!hasZoom && !hasScroll && !hasContrast && !hasBrightness) { + return true; + } + const batchStart = performance.now(); + let mask2 = null; + if (activeMask) { + const maskX = activeMask.x + panTranslation.x; + const maskY = activeMask.y + panTranslation.y; + mask2 = { + x: Math.max(0, Math.floor(maskX)), + y: Math.max(0, Math.floor(maskY)), + width: Math.min(width, Math.floor(maskX + activeMask.width)) - Math.max(0, Math.floor(maskX)), + height: Math.min(height, Math.floor(maskY + activeMask.height)) - Math.max(0, Math.floor(maskY)) + }; + } + if (gpuSpinAvailable && gpuAllowed("composite") && gpuSpinModule && pixels && width && height) { + const result = gpuSpinModule.gpuComposite?.(pixels, width, height, { + zoom: zoom2, + zoomAnchorX, + zoomAnchorY, + scrollX, + scrollY, + contrast: contrastLevel, + brightness: brightnessLevel, + mask: mask2 + }); + if (result) { + gpuOk("composite"); + const batchTime = performance.now() - batchStart; + graphPerf2.track("batched-effects-gpu", batchTime); + return true; + } + gpuFailed("composite"); + } + const cpuStart = performance.now(); + if (hasZoom) zoom_cpu(zoom2, zoomAnchorX, zoomAnchorY); + if (hasScroll) scroll_cpu(scrollX, scrollY); + if (hasContrast) contrast(contrastLevel); + if (hasBrightness) brightness(brightnessLevel); + const cpuTime = performance.now() - cpuStart; + graphPerf2.track("batched-effects-cpu", cpuTime); + return false; +} +function zoom_cpu(scale7, anchorX = 0.5, anchorY = 0.5) { + zoom(scale7, anchorX, anchorY); +} +function scroll_cpu(dx, dy) { + scroll(dx, dy); +} +function spin(steps = 0, anchorX = null, anchorY = null) { + const spinStart = performance.now(); + if (steps === 0) { + graphPerf2.track("spin", 0); + return; + } + if (gpuSpinEnabled && gpuSpinAvailable && gpuAllowed("spin") && gpuSpinModule && pixels && width && height) { + const mask2 = activeMask ? { + x: activeMask.x + panTranslation.x, + y: activeMask.y + panTranslation.y, + width: activeMask.width, + height: activeMask.height + } : null; + const success = gpuSpinModule.gpuSpin(pixels, width, height, steps, anchorX, anchorY, mask2); + if (success) { + gpuOk("spin"); + const spinEnd = performance.now(); + graphPerf2.track("spin", spinEnd - spinStart); + return; + } + gpuFailed("spin"); + } + return spinBlockBased(steps, anchorX, anchorY, spinStart); +} +spin.coordBuffers = null; +spin.destIndices = null; +function spinSimd(steps, anchorX, anchorY, spinStart) { + if (graphPerf2 && graphPerf2.lastFPS && graphPerf2.lastFPS < 6) { + spinSkipCounter++; + if (spinSkipCounter % 2 !== 0) { + graphPerf2.track("spin", 0); + return; + } + } else { + spinSkipCounter = 0; + } + if (steps === 0) { + graphPerf2.track("spin", 0); + return; + } + spinAccumulator += steps; + const integerSteps = floor7(spinAccumulator); + spinAccumulator -= integerSteps; + if (integerSteps === 0) { + graphPerf2.track("spin", 0); + return; + } + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = activeMask.x + panTranslation.x; + minY = activeMask.y + panTranslation.y; + maxX = activeMask.x + activeMask.width + panTranslation.x; + maxY = activeMask.y + activeMask.height + panTranslation.y; + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + const centerX = anchorX !== null ? anchorX : minX + floor7(workingWidth / 2); + const centerY = anchorY !== null ? anchorY : minY + floor7(workingHeight / 2); + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in spinSimd, recreating"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const bufferSize = width * height * 4; + if (!spinBuffer || spinBuffer.length !== bufferSize) { + spinBuffer = new Uint8ClampedArray(bufferSize); + } + if (pixels.length !== bufferSize) { + pixels = new Uint8ClampedArray(bufferSize); + pixels.fill(0); + } + spinBuffer.set(pixels); + const coordCount = (maxY - minY) * (maxX - minX); + const maxCoords = Math.ceil(coordCount / 4) * 4; + if (!spinSimd.coordBuffers || spinSimd.coordBuffers.length < maxCoords * 2) { + spinSimd.coordBuffers = new Float32Array(maxCoords * 2); + spinSimd.srcIndices = new Uint32Array(maxCoords); + spinSimd.destIndices = new Uint32Array(maxCoords); + } + const coords = spinSimd.coordBuffers; + const srcIndices = spinSimd.srcIndices; + const destIndices = spinSimd.destIndices; + const twoPi = 2 * PI2; + const maxXMinus1 = maxX - 1; + const maxYMinus1 = maxY - 1; + let coordIndex = 0; + for (let destY = minY; destY < maxY; destY++) { + const dy = destY - centerY; + const dy2 = dy * dy; + const destRowOffset = destY * width; + for (let destX = minX; destX < maxX; destX++) { + const dx = destX - centerX; + const distanceSquared = dx * dx + dy2; + if (distanceSquared < 1) { + const idx = (destRowOffset + destX) * 4; + pixels[idx] = spinBuffer[idx]; + pixels[idx + 1] = spinBuffer[idx + 1]; + pixels[idx + 2] = spinBuffer[idx + 2]; + pixels[idx + 3] = spinBuffer[idx + 3]; + continue; + } + if (distanceSquared > 16e6) continue; + coords[coordIndex * 2] = dx; + coords[coordIndex * 2 + 1] = dy; + destIndices[coordIndex] = (destRowOffset + destX) * 4; + coordIndex++; + } + } + const groupsOf4 = Math.floor(coordIndex / 4); + const remainder = coordIndex % 4; + for (let group = 0; group < groupsOf4; group++) { + const baseIndex = group * 4; + const dx0 = coords[baseIndex * 2], dy0 = coords[baseIndex * 2 + 1]; + const dx1 = coords[(baseIndex + 1) * 2], dy1 = coords[(baseIndex + 1) * 2 + 1]; + const dx2 = coords[(baseIndex + 2) * 2], dy2 = coords[(baseIndex + 2) * 2 + 1]; + const dx3 = coords[(baseIndex + 3) * 2], dy3 = coords[(baseIndex + 3) * 2 + 1]; + const dist0 = Math.sqrt(dx0 * dx0 + dy0 * dy0); + const dist1 = Math.sqrt(dx1 * dx1 + dy1 * dy1); + const dist22 = Math.sqrt(dx2 * dx2 + dy2 * dy2); + const dist32 = Math.sqrt(dx3 * dx3 + dy3 * dy3); + const angle0 = Math.atan2(dy0, dx0); + const angle1 = Math.atan2(dy1, dx1); + const angle22 = Math.atan2(dy2, dx2); + const angle3 = Math.atan2(dy3, dx3); + const totalChange0 = integerSteps / dist0; + const totalChange1 = integerSteps / dist1; + const totalChange2 = integerSteps / dist22; + const totalChange3 = integerSteps / dist32; + let srcAngle0 = angle0 - totalChange0; + let srcAngle1 = angle1 - totalChange1; + let srcAngle2 = angle22 - totalChange2; + let srcAngle3 = angle3 - totalChange3; + srcAngle0 = srcAngle0 - twoPi * Math.floor(srcAngle0 / twoPi); + srcAngle1 = srcAngle1 - twoPi * Math.floor(srcAngle1 / twoPi); + srcAngle2 = srcAngle2 - twoPi * Math.floor(srcAngle2 / twoPi); + srcAngle3 = srcAngle3 - twoPi * Math.floor(srcAngle3 / twoPi); + if (srcAngle0 < 0) srcAngle0 += twoPi; + if (srcAngle1 < 0) srcAngle1 += twoPi; + if (srcAngle2 < 0) srcAngle2 += twoPi; + if (srcAngle3 < 0) srcAngle3 += twoPi; + const srcX0 = centerX + dist0 * cos3(srcAngle0); + const srcY0 = centerY + dist0 * sin3(srcAngle0); + const srcX1 = centerX + dist1 * cos3(srcAngle1); + const srcY1 = centerY + dist1 * sin3(srcAngle1); + const srcX2 = centerX + dist22 * cos3(srcAngle2); + const srcY2 = centerY + dist22 * sin3(srcAngle2); + const srcX3 = centerX + dist32 * cos3(srcAngle3); + const srcY3 = centerY + dist32 * sin3(srcAngle3); + processSimdPixel(srcX0, srcY0, destIndices[baseIndex], minX, minY, maxXMinus1, maxYMinus1, workingWidth, workingHeight); + processSimdPixel(srcX1, srcY1, destIndices[baseIndex + 1], minX, minY, maxXMinus1, maxYMinus1, workingWidth, workingHeight); + processSimdPixel(srcX2, srcY2, destIndices[baseIndex + 2], minX, minY, maxXMinus1, maxYMinus1, workingWidth, workingHeight); + processSimdPixel(srcX3, srcY3, destIndices[baseIndex + 3], minX, minY, maxXMinus1, maxYMinus1, workingWidth, workingHeight); + } + for (let i2 = groupsOf4 * 4; i2 < coordIndex; i2++) { + const dx = coords[i2 * 2]; + const dy = coords[i2 * 2 + 1]; + const distance4 = Math.sqrt(dx * dx + dy * dy); + const angle3 = Math.atan2(dy, dx); + const totalAngleChange = integerSteps / distance4; + let srcAngle = angle3 - totalAngleChange; + srcAngle = srcAngle - twoPi * Math.floor(srcAngle / twoPi); + if (srcAngle < 0) srcAngle += twoPi; + const srcX = centerX + distance4 * Math.cos(srcAngle); + const srcY = centerY + distance4 * Math.sin(srcAngle); + processSimdPixel(srcX, srcY, destIndices[i2], minX, minY, maxXMinus1, maxYMinus1, workingWidth, workingHeight); + } + const spinEnd = performance.now(); + graphPerf2.track("spin", spinEnd - spinStart); +} +function processSimdPixel(srcX, srcY, destIdx, minX, minY, maxXMinus1, maxYMinus1, workingWidth, workingHeight) { + let wrappedSrcX = srcX; + let wrappedSrcY = srcY; + if (srcX < minX || srcX >= minX + workingWidth) { + const normalizedX = srcX - minX; + wrappedSrcX = minX + (normalizedX - workingWidth * Math.floor(normalizedX / workingWidth)); + if (wrappedSrcX < minX) wrappedSrcX += workingWidth; + } + if (srcY < minY || srcY >= minY + workingHeight) { + const normalizedY = srcY - minY; + wrappedSrcY = minY + (normalizedY - workingHeight * Math.floor(normalizedY / workingHeight)); + if (wrappedSrcY < minY) wrappedSrcY += workingHeight; + } + const nearestSrcX = Math.max(minX, Math.min(maxXMinus1, Math.round(wrappedSrcX))); + const nearestSrcY = Math.max(minY, Math.min(maxYMinus1, Math.round(wrappedSrcY))); + const srcIdx = (nearestSrcY * width + nearestSrcX) * 4; + pixels[destIdx] = spinBuffer[srcIdx]; + pixels[destIdx + 1] = spinBuffer[srcIdx + 1]; + pixels[destIdx + 2] = spinBuffer[srcIdx + 2]; + pixels[destIdx + 3] = spinBuffer[srcIdx + 3]; +} +spinSimd.coordBuffers = null; +spinSimd.srcIndices = null; +spinSimd.destIndices = null; +function spinBlockBased(steps, anchorX, anchorY, spinStart) { + if (graphPerf2 && graphPerf2.lastFPS && graphPerf2.lastFPS < 6) { + spinSkipCounter++; + if (spinSkipCounter % 2 !== 0) { + graphPerf2.track("spin", 0); + return; + } + } else { + spinSkipCounter = 0; + } + if (steps === 0) { + graphPerf2.track("spin", 0); + return; + } + spinAccumulator += steps; + const integerSteps = floor7(spinAccumulator); + spinAccumulator -= integerSteps; + if (integerSteps === 0) { + graphPerf2.track("spin", 0); + return; + } + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = activeMask.x + panTranslation.x; + minY = activeMask.y + panTranslation.y; + maxX = activeMask.x + activeMask.width + panTranslation.x; + maxY = activeMask.y + activeMask.height + panTranslation.y; + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + const centerX = anchorX !== null ? anchorX : minX + floor7(workingWidth / 2); + const centerY = anchorY !== null ? anchorY : minY + floor7(workingHeight / 2); + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in spin, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const bufferSize = width * height * 4; + if (!spinBuffer || spinBuffer.length !== bufferSize) { + spinBuffer = new Uint8ClampedArray(bufferSize); + } + if (pixels.length !== bufferSize) { + pixels = new Uint8ClampedArray(bufferSize); + pixels.fill(0); + } + spinBuffer.set(pixels); + const twoPi = 2 * PI2; + const maxXMinus1 = maxX - 1; + const maxYMinus1 = maxY - 1; + for (let destY = minY; destY < maxY; destY++) { + const dy = destY - centerY; + const dy2 = dy * dy; + const destRowOffset = destY * width; + for (let destX = minX; destX < maxX; destX++) { + const dx = destX - centerX; + const distanceSquared = dx * dx + dy2; + if (distanceSquared < 1) { + const idx = (destRowOffset + destX) * 4; + pixels[idx] = spinBuffer[idx]; + pixels[idx + 1] = spinBuffer[idx + 1]; + pixels[idx + 2] = spinBuffer[idx + 2]; + pixels[idx + 3] = spinBuffer[idx + 3]; + continue; + } + const distance4 = sqrt3(distanceSquared); + const angle3 = Math.atan2(dy, dx); + const totalAngleChange = integerSteps / distance4; + let sourceAngle = angle3 - totalAngleChange; + sourceAngle = sourceAngle - twoPi * floor7(sourceAngle / twoPi); + if (sourceAngle < 0) sourceAngle += twoPi; + const srcXf = centerX + distance4 * cos3(sourceAngle); + const srcYf = centerY + distance4 * Math.sin(sourceAngle); + let wrappedSrcX = srcXf; + let wrappedSrcY = srcYf; + if (srcXf < minX || srcXf >= maxX) { + const normalizedX = srcXf - minX; + wrappedSrcX = minX + (normalizedX - workingWidth * floor7(normalizedX / workingWidth)); + if (wrappedSrcX < minX) wrappedSrcX += workingWidth; + } + if (srcYf < minY || srcYf >= maxY) { + const normalizedY = srcYf - minY; + wrappedSrcY = minY + (normalizedY - workingHeight * floor7(normalizedY / workingHeight)); + if (wrappedSrcY < minY) wrappedSrcY += workingHeight; + } + const nearestSrcX = Math.max(minX, Math.min(maxXMinus1, Math.round(wrappedSrcX))); + const nearestSrcY = Math.max(minY, Math.min(maxYMinus1, Math.round(wrappedSrcY))); + const srcIdx = (nearestSrcY * width + nearestSrcX) * 4; + const destIdx = (destRowOffset + destX) * 4; + pixels[destIdx] = spinBuffer[srcIdx]; + pixels[destIdx + 1] = spinBuffer[srcIdx + 1]; + pixels[destIdx + 2] = spinBuffer[srcIdx + 2]; + pixels[destIdx + 3] = spinBuffer[srcIdx + 3]; + } + } + const spinEnd = performance.now(); + graphPerf2.track("spin", spinEnd - spinStart); +} +function zoom(level = 1, anchorX = 0.5, anchorY = 0.5) { + if (level === 1) return; + const zoomStartTime = performance.now(); + let actualZoomLevel; + if (Math.abs(level - 1) >= 0.1) { + actualZoomLevel = level; + zoomAccumulator = 0; + } else { + const zoomDelta = level - 1; + zoomAccumulator += zoomDelta; + const threshold = 0.05; + if (Math.abs(zoomAccumulator) < threshold) return; + const zoomToApply = Math.sign(zoomAccumulator) * threshold; + actualZoomLevel = 1 + zoomToApply; + zoomAccumulator -= zoomToApply; + } + if (gpuSpinEnabled && gpuSpinAvailable && gpuAllowed("zoom") && gpuSpinModule?.gpuZoom && pixels && width && height) { + const mask2 = activeMask ? { + x: activeMask.x, + y: activeMask.y, + width: activeMask.width, + height: activeMask.height + } : null; + const success = gpuSpinModule.gpuZoom(pixels, width, height, actualZoomLevel, anchorX, anchorY, mask2); + if (success) { + gpuOk("zoom"); + const zoomEndTime = performance.now(); + graphPerf2.track("zoom", zoomEndTime - zoomStartTime); + return; + } + gpuFailed("zoom"); + } + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = activeMask.x; + minY = activeMask.y; + maxX = activeMask.x + activeMask.width; + maxY = activeMask.y + activeMask.height; + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + const anchorPixelX = minX + workingWidth * anchorX; + const anchorPixelY = minY + workingHeight * anchorY; + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in zoom, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const bufferSize = width * height * 4; + if (!zoomBuffer || zoomBuffer.length !== bufferSize) { + zoomBuffer = new Uint8ClampedArray(bufferSize); + } + if (pixels.length !== bufferSize) { + console.error(`\u{1F6A8} ZOOM ERROR: Buffer size mismatch - pixels=${pixels.length}, expected=${bufferSize} (${width}x${height})`); + const copySize = Math.min(pixels.length, bufferSize); + zoomBuffer.fill(0); + if (copySize > 0) { + zoomBuffer.set(pixels.subarray(0, copySize)); + console.warn(`\u{1F6A8} ZOOM RECOVERY: Partial copy of ${copySize} bytes to prevent crash`); + } + } else { + zoomBuffer.set(pixels); + } + const scale7 = actualZoomLevel; + const invScale = 1 / scale7; + const invWorkingWidth = 1 / workingWidth; + const pixelCount = (maxY - minY) * (maxX - minX); + const maxPixels = Math.ceil(pixelCount / 4) * 4; + if (!zoom.coordBuffers || zoom.coordBuffers.length < maxPixels * 4) { + zoom.srcCoords = new Float32Array(maxPixels * 2); + zoom.destIndices = new Uint32Array(maxPixels); + } + const srcCoords = zoom.srcCoords; + const destIndices = zoom.destIndices; + let coordIndex = 0; + for (let destY = minY; destY < maxY; destY++) { + const destRowOffset = destY * width; + const srcYBase = (destY - anchorPixelY) * invScale + anchorPixelY; + let wrappedSrcYBase = ((srcYBase - minY) % workingHeight + workingHeight) % workingHeight + minY; + const nearestY = Math.round(wrappedSrcYBase); + const finalSrcY = minY + ((nearestY - minY) % workingHeight + workingHeight) % workingHeight; + if (finalSrcY >= minY && finalSrcY < maxY) { + const srcRowOffset = finalSrcY * width; + for (let destX = minX; destX < maxX; destX++) { + const srcX = (destX - anchorPixelX) * invScale + anchorPixelX; + srcCoords[coordIndex * 2] = srcX; + srcCoords[coordIndex * 2 + 1] = finalSrcY; + destIndices[coordIndex] = (destRowOffset + destX) * 4; + coordIndex++; + } + } + } + const groupsOf4 = Math.floor(coordIndex / 4); + for (let group = 0; group < groupsOf4; group++) { + const baseIndex = group * 4; + const srcX0 = srcCoords[baseIndex * 2]; + const srcX1 = srcCoords[(baseIndex + 1) * 2]; + const srcX2 = srcCoords[(baseIndex + 2) * 2]; + const srcX3 = srcCoords[(baseIndex + 3) * 2]; + const srcY = srcCoords[baseIndex * 2 + 1]; + const srcRowOffset = srcY * width; + const normalizedX0 = (srcX0 - minX) * invWorkingWidth; + const normalizedX1 = (srcX1 - minX) * invWorkingWidth; + const normalizedX2 = (srcX2 - minX) * invWorkingWidth; + const normalizedX3 = (srcX3 - minX) * invWorkingWidth; + const wrappedNormX0 = normalizedX0 - Math.floor(normalizedX0); + const wrappedNormX1 = normalizedX1 - Math.floor(normalizedX1); + const wrappedNormX2 = normalizedX2 - Math.floor(normalizedX2); + const wrappedNormX3 = normalizedX3 - Math.floor(normalizedX3); + const wrappedSrcX0 = minX + wrappedNormX0 * workingWidth; + const wrappedSrcX1 = minX + wrappedNormX1 * workingWidth; + const wrappedSrcX2 = minX + wrappedNormX2 * workingWidth; + const wrappedSrcX3 = minX + wrappedNormX3 * workingWidth; + const nearestX0 = Math.round(wrappedSrcX0); + const nearestX1 = Math.round(wrappedSrcX1); + const nearestX2 = Math.round(wrappedSrcX2); + const nearestX3 = Math.round(wrappedSrcX3); + const finalSrcX0 = minX + ((nearestX0 - minX) % workingWidth + workingWidth) % workingWidth; + const finalSrcX1 = minX + ((nearestX1 - minX) % workingWidth + workingWidth) % workingWidth; + const finalSrcX2 = minX + ((nearestX2 - minX) % workingWidth + workingWidth) % workingWidth; + const finalSrcX3 = minX + ((nearestX3 - minX) % workingWidth + workingWidth) % workingWidth; + if (finalSrcX0 >= minX && finalSrcX0 < maxX) { + processZoomPixel(srcRowOffset + finalSrcX0, destIndices[baseIndex]); + } + if (finalSrcX1 >= minX && finalSrcX1 < maxX) { + processZoomPixel(srcRowOffset + finalSrcX1, destIndices[baseIndex + 1]); + } + if (finalSrcX2 >= minX && finalSrcX2 < maxX) { + processZoomPixel(srcRowOffset + finalSrcX2, destIndices[baseIndex + 2]); + } + if (finalSrcX3 >= minX && finalSrcX3 < maxX) { + processZoomPixel(srcRowOffset + finalSrcX3, destIndices[baseIndex + 3]); + } + } + for (let i2 = groupsOf4 * 4; i2 < coordIndex; i2++) { + const srcX = srcCoords[i2 * 2]; + const srcY = srcCoords[i2 * 2 + 1]; + const srcRowOffset = srcY * width; + const normalizedX = (srcX - minX) * invWorkingWidth; + const wrappedNormX = normalizedX - Math.floor(normalizedX); + const wrappedSrcX = minX + wrappedNormX * workingWidth; + const nearestX = Math.round(wrappedSrcX); + const finalSrcX = minX + ((nearestX - minX) % workingWidth + workingWidth) % workingWidth; + if (finalSrcX >= minX && finalSrcX < maxX) { + processZoomPixel(srcRowOffset + finalSrcX, destIndices[i2]); + } + } +} +function processZoomPixel(srcPixelIndex, destIdx) { + const srcIdx = srcPixelIndex * 4; + pixels[destIdx] = zoomBuffer[srcIdx]; + pixels[destIdx + 1] = zoomBuffer[srcIdx + 1]; + pixels[destIdx + 2] = zoomBuffer[srcIdx + 2]; + pixels[destIdx + 3] = zoomBuffer[srcIdx + 3]; +} +zoom.srcCoords = null; +zoom.destIndices = null; +function zoomSimd(actualZoomLevel, anchorX, anchorY) { + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = activeMask.x; + minY = activeMask.y; + maxX = activeMask.x + activeMask.width; + maxY = activeMask.y + activeMask.height; + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + const anchorPixelX = minX + workingWidth * anchorX; + const anchorPixelY = minY + workingHeight * anchorY; + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in zoomSimd, recreating"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const bufferSize = width * height * 4; + if (!zoomBuffer || zoomBuffer.length !== bufferSize) { + zoomBuffer = new Uint8ClampedArray(bufferSize); + } + zoomBuffer.set(pixels); + const scale7 = actualZoomLevel; + const invScale = 1 / scale7; + const pixelCount = (maxY - minY) * (maxX - minX); + const maxPixels = Math.ceil(pixelCount / 4) * 4; + if (!zoomSimd.coordBuffers || zoomSimd.coordBuffers.length < maxPixels * 4) { + zoomSimd.srcCoords = new Float32Array(maxPixels * 2); + zoomSimd.destIndices = new Uint32Array(maxPixels); + zoomSimd.srcIndices = new Uint32Array(maxPixels); + } + const srcCoords = zoomSimd.srcCoords; + const destIndices = zoomSimd.destIndices; + const srcIndices = zoomSimd.srcIndices; + const invWorkingWidth = 1 / workingWidth; + const invWorkingHeight = 1 / workingHeight; + let coordIndex = 0; + for (let destY = minY; destY < maxY; destY++) { + const destRowOffset = destY * width; + const srcYBase = (destY - anchorPixelY) * invScale + anchorPixelY; + let wrappedSrcYBase = ((srcYBase - minY) % workingHeight + workingHeight) % workingHeight + minY; + const nearestY = Math.round(wrappedSrcYBase); + const finalSrcY = minY + ((nearestY - minY) % workingHeight + workingHeight) % workingHeight; + if (finalSrcY >= minY && finalSrcY < maxY) { + const srcRowOffset = finalSrcY * width; + for (let destX = minX; destX < maxX; destX++) { + const srcX = (destX - anchorPixelX) * invScale + anchorPixelX; + srcCoords[coordIndex * 2] = srcX; + srcCoords[coordIndex * 2 + 1] = finalSrcY; + destIndices[coordIndex] = (destRowOffset + destX) * 4; + coordIndex++; + } + } + } + const groupsOf4 = Math.floor(coordIndex / 4); + const remainder = coordIndex % 4; + for (let group = 0; group < groupsOf4; group++) { + const baseIndex = group * 4; + const srcX0 = srcCoords[baseIndex * 2]; + const srcX1 = srcCoords[(baseIndex + 1) * 2]; + const srcX2 = srcCoords[(baseIndex + 2) * 2]; + const srcX3 = srcCoords[(baseIndex + 3) * 2]; + const srcY = srcCoords[baseIndex * 2 + 1]; + const srcRowOffset = srcY * width; + const normalizedX0 = (srcX0 - minX) * invWorkingWidth; + const normalizedX1 = (srcX1 - minX) * invWorkingWidth; + const normalizedX2 = (srcX2 - minX) * invWorkingWidth; + const normalizedX3 = (srcX3 - minX) * invWorkingWidth; + const wrappedNormX0 = normalizedX0 - Math.floor(normalizedX0); + const wrappedNormX1 = normalizedX1 - Math.floor(normalizedX1); + const wrappedNormX2 = normalizedX2 - Math.floor(normalizedX2); + const wrappedNormX3 = normalizedX3 - Math.floor(normalizedX3); + const wrappedSrcX0 = minX + wrappedNormX0 * workingWidth; + const wrappedSrcX1 = minX + wrappedNormX1 * workingWidth; + const wrappedSrcX2 = minX + wrappedNormX2 * workingWidth; + const wrappedSrcX3 = minX + wrappedNormX3 * workingWidth; + const nearestX0 = Math.round(wrappedSrcX0); + const nearestX1 = Math.round(wrappedSrcX1); + const nearestX2 = Math.round(wrappedSrcX2); + const nearestX3 = Math.round(wrappedSrcX3); + const finalSrcX0 = minX + ((nearestX0 - minX) % workingWidth + workingWidth) % workingWidth; + const finalSrcX1 = minX + ((nearestX1 - minX) % workingWidth + workingWidth) % workingWidth; + const finalSrcX2 = minX + ((nearestX2 - minX) % workingWidth + workingWidth) % workingWidth; + const finalSrcX3 = minX + ((nearestX3 - minX) % workingWidth + workingWidth) % workingWidth; + if (finalSrcX0 >= minX && finalSrcX0 < maxX) { + processZoomSimdPixel(srcRowOffset + finalSrcX0, destIndices[baseIndex]); + } + if (finalSrcX1 >= minX && finalSrcX1 < maxX) { + processZoomSimdPixel(srcRowOffset + finalSrcX1, destIndices[baseIndex + 1]); + } + if (finalSrcX2 >= minX && finalSrcX2 < maxX) { + processZoomSimdPixel(srcRowOffset + finalSrcX2, destIndices[baseIndex + 2]); + } + if (finalSrcX3 >= minX && finalSrcX3 < maxX) { + processZoomSimdPixel(srcRowOffset + finalSrcX3, destIndices[baseIndex + 3]); + } + } + for (let i2 = groupsOf4 * 4; i2 < coordIndex; i2++) { + const srcX = srcCoords[i2 * 2]; + const srcY = srcCoords[i2 * 2 + 1]; + const srcRowOffset = srcY * width; + const normalizedX = (srcX - minX) * invWorkingWidth; + const wrappedNormX = normalizedX - Math.floor(normalizedX); + const wrappedSrcX = minX + wrappedNormX * workingWidth; + const nearestX = Math.round(wrappedSrcX); + const finalSrcX = minX + ((nearestX - minX) % workingWidth + workingWidth) % workingWidth; + if (finalSrcX >= minX && finalSrcX < maxX) { + processZoomSimdPixel(srcRowOffset + finalSrcX, destIndices[i2]); + } + } +} +function processZoomSimdPixel(srcPixelIndex, destIdx) { + const srcIdx = srcPixelIndex * 4; + pixels[destIdx] = zoomBuffer[srcIdx]; + pixels[destIdx + 1] = zoomBuffer[srcIdx + 1]; + pixels[destIdx + 2] = zoomBuffer[srcIdx + 2]; + pixels[destIdx + 3] = zoomBuffer[srcIdx + 3]; +} +zoomSimd.srcCoords = null; +zoomSimd.destIndices = null; +zoomSimd.srcIndices = null; +function suck(strength = 1, centerX, centerY) { + if (strength === 0) return; + suckAccumulator += strength; + const threshold = 0.5; + if (Math.abs(suckAccumulator) < threshold) return; + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = activeMask.x; + minY = activeMask.y; + maxX = activeMask.x + activeMask.width; + maxY = activeMask.y + activeMask.height; + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + const centerPixelX = centerX !== void 0 ? centerX : minX + workingWidth * 0.5; + const centerPixelY = centerY !== void 0 ? centerY : minY + workingHeight * 0.5; + const displacementAmount = Math.abs(suckAccumulator); + const direction = suckAccumulator > 0 ? 1 : -1; + if (displacementAmount < 0.01) { + suckAccumulator = 0; + return; + } + if (gpuSpinEnabled && gpuSpinAvailable && gpuAllowed("suck") && gpuSpinModule?.gpuSuck && pixels && width && height) { + const mask2 = activeMask ? { + x: activeMask.x + panTranslation.x, + y: activeMask.y + panTranslation.y, + width: activeMask.width, + height: activeMask.height + } : null; + const success = gpuSpinModule.gpuSuck( + pixels, + width, + height, + displacementAmount, + direction, + centerPixelX, + centerPixelY, + mask2 + ); + if (success) { + gpuOk("suck"); + suckAccumulator = 0; + return; + } + gpuFailed("suck"); + } + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in suck, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const tempPixels = new Uint8ClampedArray(pixels); + for (let destY = minY; destY < maxY; destY++) { + const destRowOffset = destY * width; + for (let destX = minX; destX < maxX; destX++) { + const dx = destX - centerPixelX; + const dy = destY - centerPixelY; + const distance4 = Math.sqrt(dx * dx + dy * dy); + if (distance4 < 1) { + const destIdx2 = (destRowOffset + destX) * 4; + pixels[destIdx2] = tempPixels[destIdx2]; + pixels[destIdx2 + 1] = tempPixels[destIdx2 + 1]; + pixels[destIdx2 + 2] = tempPixels[destIdx2 + 2]; + pixels[destIdx2 + 3] = tempPixels[destIdx2 + 3]; + continue; + } + const srcDistance = distance4 + direction * displacementAmount; + const scale7 = srcDistance / distance4; + let srcX = centerPixelX + dx * scale7; + let srcY = centerPixelY + dy * scale7; + srcX = Math.max(minX, Math.min(maxX - 1, srcX)); + srcY = Math.max(minY, Math.min(maxY - 1, srcY)); + const srcX_floor = Math.floor(srcX); + const srcY_floor = Math.floor(srcY); + const wx = srcX - srcX_floor; + const wy = srcY - srcY_floor; + const x1 = Math.max(minX, Math.min(maxX - 1, srcX_floor)); + const y1 = Math.max(minY, Math.min(maxY - 1, srcY_floor)); + const x2 = Math.max(minX, Math.min(maxX - 1, srcX_floor + 1)); + const y2 = Math.max(minY, Math.min(maxY - 1, srcY_floor + 1)); + const idx1 = (y1 * width + x1) * 4; + const idx2 = (y1 * width + x2) * 4; + const idx3 = (y2 * width + x1) * 4; + const idx4 = (y2 * width + x2) * 4; + const destIdx = (destRowOffset + destX) * 4; + for (let c4 = 0; c4 < 4; c4++) { + const topInterp = tempPixels[idx1 + c4] * (1 - wx) + tempPixels[idx2 + c4] * wx; + const bottomInterp = tempPixels[idx3 + c4] * (1 - wx) + tempPixels[idx4 + c4] * wx; + pixels[destIdx + c4] = Math.round(topInterp * (1 - wy) + bottomInterp * wy); + } + } + } + suckAccumulator = 0; +} +var blurAccumulator = 0; +var blurTempBuffer = null; +var blurTempBufferSize = 0; +function cleanupBlurBuffers() { + blurTempBuffer = null; + blurTempBufferSize = 0; + blurAccumulator = 0; +} +function blur(strength = 1, quality = "medium") { + if (strength <= 0.1) return; + const blurStartTime = performance.now(); + const scaledStrength = strength / 3; + blurAccumulator += scaledStrength; + const threshold = 0.5; + if (Math.abs(blurAccumulator) < threshold) return; + if (gpuSpinEnabled && gpuSpinAvailable && gpuAllowed("blur") && gpuSpinModule?.gpuBlur && pixels && width && height) { + const mask2 = activeMask ? { + x: activeMask.x + panTranslation.x, + y: activeMask.y + panTranslation.y, + width: activeMask.width, + height: activeMask.height + } : null; + const success = gpuSpinModule.gpuBlur(pixels, width, height, Math.abs(blurAccumulator), mask2); + if (success) { + gpuOk("blur"); + blurAccumulator = 0; + const blurEndTime2 = performance.now(); + graphPerf2.track("blur", blurEndTime2 - blurStartTime); + return; + } + gpuFailed("blur"); + } + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = Math.max(0, Math.min(width, activeMask.x + panTranslation.x)); + maxX = Math.max( + 0, + Math.min(width, activeMask.x + activeMask.width + panTranslation.x) + ); + minY = Math.max(0, Math.min(height, activeMask.y + panTranslation.y)); + maxY = Math.max( + 0, + Math.min(height, activeMask.y + activeMask.height + panTranslation.y) + ); + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + if (workingWidth <= 0 || workingHeight <= 0) { + blurAccumulator = 0; + return; + } + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in blur, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const blurRadius = Math.max(1, Math.floor(Math.abs(blurAccumulator))); + const kernelSize = Math.min(blurRadius * 2 + 1, 15); + const weights = generateGaussianWeights(kernelSize, quality); + const radius = Math.floor(kernelSize / 2); + try { + const requiredSize = pixels.length; + if (!blurTempBuffer || blurTempBufferSize !== requiredSize) { + blurTempBuffer = new Uint8ClampedArray(requiredSize); + blurTempBufferSize = requiredSize; + } + blurTempBuffer.fill(0); + applyHorizontalBlur(pixels, blurTempBuffer, weights, radius, minX, minY, maxX, maxY); + applyVerticalBlur(blurTempBuffer, pixels, weights, radius, minX, minY, maxX, maxY); + } catch (error) { + console.warn("\u{1F6A8} Blur operation failed:", error); + blurTempBuffer = null; + blurTempBufferSize = 0; + } + const blurEndTime = performance.now(); + const blurDuration = blurEndTime - blurStartTime; + blurAccumulator = 0; +} +function generateGaussianWeights(kernelSize, quality) { + const weights = new Array(kernelSize); + const radius = Math.floor(kernelSize / 2); + const sigma = radius / 3; + if (quality === "fast") { + const weight = 1 / kernelSize; + for (let i2 = 0; i2 < kernelSize; i2++) { + weights[i2] = weight; + } + } else { + let sum = 0; + for (let i2 = 0; i2 < kernelSize; i2++) { + const x = i2 - radius; + const weight = Math.exp(-(x * x) / (2 * sigma * sigma)); + weights[i2] = weight; + sum += weight; + } + for (let i2 = 0; i2 < kernelSize; i2++) { + weights[i2] /= sum; + } + } + return weights; +} +function applyHorizontalBlur(sourcePixels, destPixels, weights, radius, minX, minY, maxX, maxY) { + if (!sourcePixels || !destPixels || !weights) return; + if (radius < 0 || radius >= weights.length / 2) return; + for (let y = minY; y < maxY; y++) { + const rowOffset = y * width; + for (let x = minX; x < maxX; x++) { + const destIdx = (rowOffset + x) * 4; + if (destIdx < 0 || destIdx + 3 >= destPixels.length) continue; + let r2 = 0, g = 0, b2 = 0, a2 = 0; + for (let k = -radius; k <= radius; k++) { + const srcX = Math.max(minX, Math.min(maxX - 1, x + k)); + const srcIdx = (rowOffset + srcX) * 4; + if (srcIdx < 0 || srcIdx + 3 >= sourcePixels.length) continue; + const weightIdx = k + radius; + if (weightIdx < 0 || weightIdx >= weights.length) continue; + const weight = weights[weightIdx]; + r2 += sourcePixels[srcIdx] * weight; + g += sourcePixels[srcIdx + 1] * weight; + b2 += sourcePixels[srcIdx + 2] * weight; + a2 += sourcePixels[srcIdx + 3] * weight; + } + destPixels[destIdx] = Math.round(Math.max(0, Math.min(255, r2))); + destPixels[destIdx + 1] = Math.round(Math.max(0, Math.min(255, g))); + destPixels[destIdx + 2] = Math.round(Math.max(0, Math.min(255, b2))); + destPixels[destIdx + 3] = Math.round(Math.max(0, Math.min(255, a2))); + } + } +} +function applyVerticalBlur(sourcePixels, destPixels, weights, radius, minX, minY, maxX, maxY) { + if (!sourcePixels || !destPixels || !weights) return; + if (radius < 0 || radius >= weights.length / 2) return; + for (let y = minY; y < maxY; y++) { + const rowOffset = y * width; + for (let x = minX; x < maxX; x++) { + const destIdx = (rowOffset + x) * 4; + if (destIdx < 0 || destIdx + 3 >= destPixels.length) continue; + let r2 = 0, g = 0, b2 = 0, a2 = 0; + for (let k = -radius; k <= radius; k++) { + const srcY = Math.max(minY, Math.min(maxY - 1, y + k)); + const srcIdx = (srcY * width + x) * 4; + if (srcIdx < 0 || srcIdx + 3 >= sourcePixels.length) continue; + const weightIdx = k + radius; + if (weightIdx < 0 || weightIdx >= weights.length) continue; + const weight = weights[weightIdx]; + r2 += sourcePixels[srcIdx] * weight; + g += sourcePixels[srcIdx + 1] * weight; + b2 += sourcePixels[srcIdx + 2] * weight; + a2 += sourcePixels[srcIdx + 3] * weight; + } + destPixels[destIdx] = Math.round(Math.max(0, Math.min(255, r2))); + destPixels[destIdx + 1] = Math.round(Math.max(0, Math.min(255, g))); + destPixels[destIdx + 2] = Math.round(Math.max(0, Math.min(255, b2))); + destPixels[destIdx + 3] = Math.round(Math.max(0, Math.min(255, a2))); + } + } +} +function sharpen(strength = 1) { + if (strength <= 0) return; + const sharpenStartTime = performance.now(); + if (gpuSpinEnabled && gpuSpinAvailable && gpuAllowed("sharpen") && gpuSpinModule?.gpuSharpen && pixels && width && height) { + const mask2 = activeMask ? { + x: activeMask.x + panTranslation.x, + y: activeMask.y + panTranslation.y, + width: activeMask.width, + height: activeMask.height + } : null; + const success = gpuSpinModule.gpuSharpen(pixels, width, height, strength, mask2); + if (success) { + gpuOk("sharpen"); + const sharpenEndTime2 = performance.now(); + graphPerf2.track("sharpen", sharpenEndTime2 - sharpenStartTime); + return; + } + gpuFailed("sharpen"); + } + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + minX = Math.max(0, Math.min(width, activeMask.x + panTranslation.x)); + maxX = Math.max( + 0, + Math.min(width, activeMask.x + activeMask.width + panTranslation.x) + ); + minY = Math.max(0, Math.min(height, activeMask.y + panTranslation.y)); + maxY = Math.max( + 0, + Math.min(height, activeMask.y + activeMask.height + panTranslation.y) + ); + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + if (workingWidth <= 0 || workingHeight <= 0) return; + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in sharpen, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + try { + const tempBuffer = new Uint8ClampedArray(pixels.length); + tempBuffer.set(pixels); + const centerWeight = 1 + 4 * strength; + const edgeWeight = -strength; + for (let y = minY + 1; y < maxY - 1; y++) { + for (let x = minX + 1; x < maxX - 1; x++) { + const centerIdx = (y * width + x) * 4; + if (tempBuffer[centerIdx + 3] === 0) continue; + for (let channel2 = 0; channel2 < 3; channel2++) { + let sum = 0; + sum += tempBuffer[centerIdx + channel2] * centerWeight; + sum += tempBuffer[((y - 1) * width + x) * 4 + channel2] * edgeWeight; + sum += tempBuffer[((y + 1) * width + x) * 4 + channel2] * edgeWeight; + sum += tempBuffer[(y * width + (x - 1)) * 4 + channel2] * edgeWeight; + sum += tempBuffer[(y * width + (x + 1)) * 4 + channel2] * edgeWeight; + pixels[centerIdx + channel2] = Math.max(0, Math.min(255, Math.round(sum))); + } + } + } + } catch (error) { + console.warn("\u{1F6A8} Sharpen operation failed:", error); + } + const sharpenEndTime = performance.now(); + graphPerf2.track("sharpen", sharpenEndTime - sharpenStartTime); +} +function sort() { + let minX = 0, minY = 0, maxX = width, maxY = height; + if (activeMask) { + const maskX = activeMask.x + panTranslation.x; + const maskY = activeMask.y + panTranslation.y; + minX = Math.max(0, Math.floor(maskX)); + minY = Math.max(0, Math.floor(maskY)); + maxX = Math.min(width, Math.floor(maskX + activeMask.width)); + maxY = Math.min(height, Math.floor(maskY + activeMask.height)); + } + const pixelsToSort = []; + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const index = (y * width + x) * 4; + const r2 = pixels[index]; + const g = pixels[index + 1]; + const b2 = pixels[index + 2]; + const a2 = pixels[index + 3]; + const luminance = 0.299 * r2 + 0.587 * g + 0.114 * b2; + pixelsToSort.push({ + r: r2, + g, + b: b2, + a: a2, + luminance + }); + } + } + pixelsToSort.sort((a2, b2) => a2.luminance - b2.luminance); + let sortedIndex = 0; + for (let y = minY; y < maxY; y++) { + for (let x = minX; x < maxX; x++) { + const index = (y * width + x) * 4; + const sortedPixel = pixelsToSort[sortedIndex]; + pixels[index] = sortedPixel.r; + pixels[index + 1] = sortedPixel.g; + pixels[index + 2] = sortedPixel.b; + pixels[index + 3] = sortedPixel.a; + sortedIndex++; + } + } +} +function copyRegion(x, y, w, h) { + x = Math.floor(x); + y = Math.floor(y); + w = Math.floor(w); + h = Math.floor(h); + x += panTranslation.x; + y += panTranslation.y; + x = Math.max(0, Math.min(x, width)); + y = Math.max(0, Math.min(y, height)); + w = Math.max(0, Math.min(w, width - x)); + h = Math.max(0, Math.min(h, height - y)); + if (w <= 0 || h <= 0) { + return null; + } + const imageData = new ImageData(w, h); + const buffer = { + pixels: imageData.data, + width: imageData.width, + height: imageData.height + }; + for (let srcY = 0; srcY < h; srcY++) { + for (let srcX = 0; srcX < w; srcX++) { + const srcIndex = ((y + srcY) * width + (x + srcX)) * 4; + const destIndex = (srcY * w + srcX) * 4; + if (srcIndex >= 0 && srcIndex < pixels.length - 3) { + buffer.pixels[destIndex] = pixels[srcIndex]; + buffer.pixels[destIndex + 1] = pixels[srcIndex + 1]; + buffer.pixels[destIndex + 2] = pixels[srcIndex + 2]; + buffer.pixels[destIndex + 3] = pixels[srcIndex + 3]; + } + } + } + return buffer; +} +var stolen; +function steal(x, y, width2, height2) { + stolen = copyRegion(x, y, width2, height2); + return stolen; +} +function putback(x, y, scale7 = 1) { + if (!stolen) return; + const result = paste(stolen, x, y, scale7); + return result; +} +function shear(shearX = 0, shearY = 0) { + if (shearX === 0 && shearY === 0) return; + shearAccumulatorX += shearX; + shearAccumulatorY += shearY; + const finalShearX = shearAccumulatorX; + const finalShearY = shearAccumulatorY; + shearAccumulatorX = 0; + shearAccumulatorY = 0; + if (gpuSpinEnabled && gpuSpinAvailable && gpuAllowed("shear") && gpuSpinModule?.gpuShear && pixels && width && height) { + const mask2 = activeMask ? { + x: activeMask.x + panTranslation.x, + y: activeMask.y + panTranslation.y, + width: activeMask.width, + height: activeMask.height + } : null; + const success = gpuSpinModule.gpuShear(pixels, width, height, finalShearX, finalShearY, mask2); + if (success) { + gpuOk("shear"); + return; + } + gpuFailed("shear"); + } + let minX = 0, maxX = width, minY = 0, maxY = height; + if (activeMask) { + minX = Math.max(0, Math.min(width, activeMask.x + panTranslation.x)); + maxX = Math.max( + 0, + Math.min(width, activeMask.x + activeMask.width + panTranslation.x) + ); + minY = Math.max(0, Math.min(height, activeMask.y + panTranslation.y)); + maxY = Math.max( + 0, + Math.min(height, activeMask.y + activeMask.height + panTranslation.y) + ); + } + const workingWidth = maxX - minX; + const workingHeight = maxY - minY; + if (workingWidth <= 0 || workingHeight <= 0) return; + if (pixels.buffer && pixels.buffer.detached) { + console.warn("\u{1F6A8} Pixels buffer detached in shear, recreating from screen dimensions"); + pixels = new Uint8ClampedArray(width * height * 4); + pixels.fill(0); + } + const tempPixels = new Uint8ClampedArray(pixels); + if (finalShearX !== 0) { + for (let y = 0; y < workingHeight; y++) { + const distFromCenter = y - workingHeight / 2; + const rowShift = Math.round(finalShearX * distFromCenter); + for (let x = 0; x < workingWidth; x++) { + let srcX = x - rowShift; + srcX = (srcX % workingWidth + workingWidth) % workingWidth; + const srcOffset = ((minY + y) * width + (minX + srcX)) * 4; + const destOffset = ((minY + y) * width + (minX + x)) * 4; + pixels[destOffset] = tempPixels[srcOffset]; + pixels[destOffset + 1] = tempPixels[srcOffset + 1]; + pixels[destOffset + 2] = tempPixels[srcOffset + 2]; + pixels[destOffset + 3] = tempPixels[srcOffset + 3]; + } + } + tempPixels.set(pixels); + } + if (finalShearY !== 0) { + for (let x = 0; x < workingWidth; x++) { + const distFromCenter = x - workingWidth / 2; + const colShift = Math.round(finalShearY * distFromCenter); + for (let y = 0; y < workingHeight; y++) { + let srcY = y - colShift; + srcY = (srcY % workingHeight + workingHeight) % workingHeight; + const srcOffset = ((minY + srcY) * width + (minX + x)) * 4; + const destOffset = ((minY + y) * width + (minX + x)) * 4; + pixels[destOffset] = tempPixels[srcOffset]; + pixels[destOffset + 1] = tempPixels[srcOffset + 1]; + pixels[destOffset + 2] = tempPixels[srcOffset + 2]; + pixels[destOffset + 3] = tempPixels[srcOffset + 3]; + } + } + } +} +var Camera = class { + type = "perspective"; + matrix; + #x = 0; + #rotX = 0; + #y = 0; + #rotY = 0; + #z = 0; + #rotZ = 0; + fov; + near = 0.01; + far = 5e3; + position = [0, 0, 0, 1]; + rotation = [0, 0, 0]; + scale = [1, 1, 1]; + // centerCached; // Saved after each call to `center()`. + perspectiveMatrix; + #transformMatrix; + // Takes x, y, z position and an optional scale (xyz) array. + constructor(fov = 80, { x, y, z, scale: scale7 } = { x: 0, y: 0, z: 0, scale: 1 }) { + this.fov = fov; + this.x = x; + this.y = y; + this.z = z; + if (scale7) this.scale = scale7; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + } + set rotX(n2) { + this.#rotX = n2; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + this.rotation[0] = n2; + } + get rotX() { + return this.#rotX; + } + set rotY(n2) { + this.#rotY = n2; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + this.rotation[1] = n2; + } + get rotY() { + return this.#rotY; + } + set rotZ(n2) { + this.#rotZ = n2; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + this.rotation[2] = n2; + } + get rotZ() { + return this.#rotZ; + } + // Returns the rotation of the camera in radians. + get rot() { + return [this.#rotX, this.#rotY, this.#rotZ]; + } + set x(n2 = 0) { + this.#x = n2; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + this.position[0] = n2; + } + get x() { + return this.#x; + } + set y(n2 = 0) { + this.#y = n2; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + this.position[1] = n2; + } + get y() { + return this.#y; + } + set z(n2 = 0) { + this.#z = n2; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + this.position[2] = n2; + } + get z() { + return this.#z; + } + forward(n2) { + this.#z -= n2; + this.#perspective(this.fov); + this.#transform(); + this.matrix = this.#transformMatrix; + } + #perspective(fov) { + const zNear = this.near; + const zFar = this.far; + this.perspectiveMatrix = perspective( + create5(), + radians(fov), + width / height, + zNear, + zFar + ); + const zRange = zNear - zFar; + const ten = (-zNear - zFar) / zRange; + const fourteen = 2 * zFar * zNear / zRange; + this.perspectiveMatrix[10] = ten; + this.perspectiveMatrix[14] = fourteen; + this.perspectiveMatrix[11] = 1; + } + get perspective() { + return this.perspectiveMatrix; + } + // Recalculate the camera matrix for a new display constraint. + // TODO: Eventually this should be redundant for custom cameras + // that don't hook into the `screen`. 24.02.21.15.26 + resize() { + this.forward(0); + } + // Get an XYZ position on a plane at a given depth, + // relative to screen coordinates. + ray(X2 = width / 2, Y2 = height / 2, depth = 1, flippedY = false) { + this.#perspective(this.fov); + const pos = [...this.position]; + if (flippedY) pos[1] *= -1; + const rotX = fromXRotation(create5(), radians(this.#rotX)); + const rotY = fromYRotation(create5(), radians(this.#rotY)); + const rotZ = fromZRotation(create5(), radians(this.#rotZ)); + const rotatedX = multiply5(create5(), rotX, create5()); + const rotatedY = multiply5(create5(), rotY, rotatedX); + const rotatedZ = multiply5(create5(), rotatedY, rotZ); + const scaled = scale5(create5(), rotatedZ, this.scale); + const world2 = scaled; + const invertedProjection = invert3( + create5(), + this.perspectiveMatrix + ); + const invWorldPersProj = mul5(create5(), world2, invertedProjection); + X2 = 1 - X2 / width; + Y2 = 1 - Y2 / height; + let x = 2 * X2 - 1; + let y = 2 * Y2 - 1; + const screenPos = fromValues3(x, -y, 1, 1); + const shiftedScreenPos = scale3(create3(), screenPos, depth); + const xyz = transformMat42( + create3(), + shiftedScreenPos, + invWorldPersProj + ); + const worldPos = sub3(create3(), pos, xyz); + return worldPos; + } + #transform() { + const panned = translate2(create5(), create5(), [ + this.#x, + this.#y, + this.#z + ]); + const rotY = fromYRotation(create5(), radians(-this.#rotY)); + const rotX = fromXRotation(create5(), radians(this.#rotX)); + const rotZ = fromZRotation(create5(), radians(this.#rotZ)); + const rotatedY = multiply5(create5(), rotY, panned); + const rotatedX = multiply5(create5(), rotX, rotatedY); + const rotatedZ = multiply5(create5(), rotZ, rotatedX); + const scaled = scale5(create5(), rotatedZ, this.scale); + this.#transformMatrix = multiply5( + create5(), + this.perspectiveMatrix, + scaled + ); + } +}; +var Dolly = class { + camera; + xVel = 0; + yVel = 0; + zVel = 0; + dec = 0.9; + constructor(camera) { + this.camera = camera; + } + sim() { + this.xVel *= this.dec; + this.yVel *= this.dec; + this.zVel *= this.dec; + if (abs3(this.xVel) > 0) this.camera.x += this.xVel; + if (abs3(this.yVel) > 0) this.camera.y += this.yVel; + if (abs3(this.zVel) > 0) this.camera.z += this.zVel; + } + push({ x, y, z }) { + const xz = rotate3( + create6(), + fromValues6(x, z), + fromValues6(0, 0), + radians(-this.camera.rotY) + // Take the camera Y axis for strafing. + ); + this.xVel += xz[0] || 0; + this.yVel += y || 0; + this.zVel += xz[1] || 0; + } +}; +var formId = 0; +var showWireframes = false; +var showBoundingBoxes = false; +var wireframeLines = []; +var boundingBoxes = []; +var renderStats = { + originalTriangles: 0, + clippedTriangles: 0, + subdividedTriangles: 0, + wireframeSegmentsTotal: 0, + wireframeSegmentsTextured: 0, + wireframeSegmentsGradient: 0, + wireframeSegmentsClipped: 0, + wireframeSegmentsOther: 0, + pixelsDrawn: 0, + trianglesRejected: 0 +}; +function setShowClippedWireframes(enabled) { + showWireframes = enabled; +} +function clearWireframeBuffer() { + wireframeLines = []; + boundingBoxes = []; + renderStats = { + originalTriangles: 0, + clippedTriangles: 0, + subdividedTriangles: 0, + wireframeSegmentsTotal: 0, + wireframeSegmentsTextured: 0, + wireframeSegmentsGradient: 0, + wireframeSegmentsClipped: 0, + wireframeSegmentsOther: 0, + pixelsDrawn: 0, + trianglesRejected: 0 + }; +} +function getRenderStats() { + return renderStats; +} +function clipLineToScreen(x1, y1, x2, y2) { + const INSIDE = 0; + const LEFT = 1; + const RIGHT = 2; + const BOTTOM = 4; + const TOP = 8; + function computeOutCode(x, y) { + let code2 = INSIDE; + if (x < 0) code2 |= LEFT; + else if (x >= width) code2 |= RIGHT; + if (y < 0) code2 |= TOP; + else if (y >= height) code2 |= BOTTOM; + return code2; + } + let outcode1 = computeOutCode(x1, y1); + let outcode2 = computeOutCode(x2, y2); + let accept = false; + while (true) { + if (!(outcode1 | outcode2)) { + accept = true; + break; + } else if (outcode1 & outcode2) { + break; + } else { + let x, y; + const outcodeOut = outcode1 ? outcode1 : outcode2; + if (outcodeOut & TOP) { + x = x1 + (x2 - x1) * (0 - y1) / (y2 - y1); + y = 0; + } else if (outcodeOut & BOTTOM) { + x = x1 + (x2 - x1) * (height - 1 - y1) / (y2 - y1); + y = height - 1; + } else if (outcodeOut & RIGHT) { + y = y1 + (y2 - y1) * (width - 1 - x1) / (x2 - x1); + x = width - 1; + } else if (outcodeOut & LEFT) { + y = y1 + (y2 - y1) * (0 - x1) / (x2 - x1); + x = 0; + } + if (outcodeOut === outcode1) { + x1 = x; + y1 = y; + outcode1 = computeOutCode(x1, y1); + } else { + x2 = x; + y2 = y; + outcode2 = computeOutCode(x2, y2); + } + } + } + if (accept) { + return { x1, y1, x2, y2 }; + } else { + return null; + } +} +function addWireframeLine(x1, y1, x2, y2, color3, category = "other") { + if (!isFinite(x1) || !isFinite(y1) || !isFinite(x2) || !isFinite(y2)) { + return; + } + const dx = x2 - x1; + const dy = y2 - y1; + if (dx === 0 && dy === 0) { + return; + } + const minX = -width * 0.1; + const maxX = width * 1.1; + const minY = -height * 0.1; + const maxY = height * 1.1; + const p1Valid = x1 >= minX && x1 <= maxX && y1 >= minY && y1 <= maxY; + const p2Valid = x2 >= minX && x2 <= maxX && y2 >= minY && y2 <= maxY; + if (!p1Valid || !p2Valid) { + return; + } + wireframeLines.push({ x1, y1, x2, y2, color: color3, category }); + renderStats.wireframeSegmentsTotal++; + switch (category) { + case "textured": + renderStats.wireframeSegmentsTextured++; + break; + case "gradient": + renderStats.wireframeSegmentsGradient++; + break; + case "clipped": + renderStats.wireframeSegmentsClipped++; + break; + default: + renderStats.wireframeSegmentsOther++; + break; + } +} +function drawBufferedWireframes() { + if (wireframeLines.length > 0) { + const savedColor = [c[0], c[1], c[2], c[3]]; + withForceReplaceMode(() => { + for (const wf of wireframeLines) { + const margin = max5(width, height) * 0.5; + const p1OutOfBounds = abs3(wf.x1) > width + margin || abs3(wf.y1) > height + margin || wf.x1 < -margin || wf.y1 < -margin; + const p2OutOfBounds = abs3(wf.x2) > width + margin || abs3(wf.y2) > height + margin || wf.x2 < -margin || wf.y2 < -margin; + if (p1OutOfBounds || p2OutOfBounds) { + continue; + } + const clipped = clipLineToScreen(wf.x1, wf.y1, wf.x2, wf.y2); + if (!clipped) continue; + setColor(wf.color[0], wf.color[1], wf.color[2], wf.color[3]); + line(clipped.x1, clipped.y1, clipped.x2, clipped.y2); + } + }); + setColor(...savedColor); + wireframeLines = []; + } +} +var signGlyphCache = {}; +function sign(text, options = {}) { + const { + scale: scale7 = 0.1, + color: color3 = [1, 1, 1, 1], + align = "left", + glyphs = {} + // Pass in typeface.glyphs from the piece + } = options; + const positions = []; + const colors = []; + const [r2, g, b2, a2 = 1] = Array.isArray(color3) ? color3.map((c4) => c4 > 1 ? c4 / 255 : c4) : [1, 1, 1, 1]; + const lineColor = [r2, g, b2, a2]; + let cursorX = 0; + let totalWidth = 0; + const charData = []; + for (const char of text) { + const charCode = char.charCodeAt(0); + let glyph = glyphs[char] || glyphs[charCode] || signGlyphCache[charCode]; + if (char === " ") { + charData.push({ char, glyph: null, advance: 3 * scale7 }); + totalWidth += 3 * scale7; + continue; + } + if (glyph) { + const advance = (glyph.advance || glyph.dwidth?.x || 4) * scale7; + charData.push({ char, glyph, advance }); + totalWidth += advance; + } else { + charData.push({ char, glyph: null, advance: 4 * scale7, missing: true }); + totalWidth += 4 * scale7; + } + } + if (align === "center") { + cursorX = -totalWidth / 2; + } else if (align === "right") { + cursorX = -totalWidth; + } + for (const { char, glyph, advance, missing } of charData) { + if (char === " ") { + cursorX += advance; + continue; + } + if (missing) { + const s2 = 3 * scale7; + const h = 6 * scale7; + positions.push( + [cursorX, 0, 0, 1], + [cursorX + s2, 0, 0, 1], + [cursorX + s2, 0, 0, 1], + [cursorX + s2, -h, 0, 1], + [cursorX + s2, -h, 0, 1], + [cursorX, -h, 0, 1], + [cursorX, -h, 0, 1], + [cursorX, 0, 0, 1] + ); + colors.push(lineColor, lineColor, lineColor, lineColor, lineColor, lineColor, lineColor, lineColor); + cursorX += advance; + continue; + } + const offsetX = (glyph.offset?.[0] || 0) * scale7; + const offsetY = (glyph.offset?.[1] || 0) * scale7; + if (glyph.commands) { + for (const cmd of glyph.commands) { + if (cmd.name === "line") { + const [x1, y1, x2, y2] = cmd.args; + positions.push( + [cursorX + offsetX + x1 * scale7, -(offsetY + y1 * scale7), 0, 1], + [cursorX + offsetX + x2 * scale7, -(offsetY + y2 * scale7), 0, 1] + ); + colors.push(lineColor, lineColor); + } else if (cmd.name === "point") { + const [x, y] = cmd.args; + const px = cursorX + offsetX + x * scale7; + const py = -(offsetY + y * scale7); + const ps = scale7 * 0.3; + positions.push( + [px - ps, py, 0, 1], + [px + ps, py, 0, 1], + [px, py - ps, 0, 1], + [px, py + ps, 0, 1] + ); + colors.push(lineColor, lineColor, lineColor, lineColor); + } + } + } else if (glyph.pixels) { + const [charWidth, charHeight] = glyph.resolution || [4, 8]; + for (let row = 0; row < glyph.pixels.length; row++) { + const pixelRow = glyph.pixels[row]; + if (!Array.isArray(pixelRow)) continue; + for (let col = 0; col < pixelRow.length; col++) { + if (pixelRow[col] === 1) { + const px = cursorX + offsetX + col * scale7; + const py = -(offsetY + row * scale7); + const ps = scale7 * 0.25; + positions.push( + [px, py - ps, 0, 1], + [px, py + ps, 0, 1] + ); + colors.push(lineColor, lineColor); + } + } + } + } + cursorX += advance; + } + if (positions.length === 0) { + positions.push([0, 0, 0, 1], [0, 0, 0, 1]); + colors.push([0, 0, 0, 0], [0, 0, 0, 0]); + } + return new Form( + { type: "line", positions, colors }, + { pos: [0, 0, 0], scale: 1 } + ); +} +function cacheSignGlyph(charCode, glyphData) { + signGlyphCache[charCode] = glyphData; +} +var Form = class { + primitive = "triangle"; + type = "triangle"; + limiter = 0; + // Only enabled on CPU rendered `line` at the moment. 22.11.06.18.19 + uid; + // = nanoid(4); // An id to keep across threads. Takes ~4 milliseconds. 😢 + tag; + // Gets sent to the GPU as a named / marked tag. + // Currently only available on `buffered` types in `3d.mjs` 23.02.07.09.46 + // Model + vertices = []; + indices = []; + // TODO: Texture and color should be optional, and perhaps based on type. + // TODO: Should this use a parameter called shader? + texture; + // = makeBuffer(32, 32); + color; + colorModifier; + noFade = false; + // Set to true to disable near-plane alpha fading + // GPU Specific Params & Buffers + gpuVerticesSent = 0; + gpuReset = false; + // Assumes this object is being recreated on the GPU. + gpuKeep = true; + gpuConvertColors = true; + gpuTransformed = false; + gpuRecolored = false; + MAX_POINTS = 1e5; + // Some buffered geometry gpu calls may use this hint. + uvs = []; + #gradientColors = [ + [1, 0, 0, 1], + [0, 1, 0, 1], + [0, 0, 1, 1] + ]; + /* I haven't needed support for this yet so it's left commented. 22.10.13.23.12 + #texCoords = [ + [0.0, 0.0, 0.0, 0.0], + [0.0, 1.0, 0.0, 0.0], + [1.0, 1.0, 0.0, 0.0], + ]; + */ + // Transform + position = [0, 0, 0]; + rotation = [0, 0, 0]; + scale = [1, 1, 1]; + gradients = true; + // Blending + alpha = 1; + constructor({ + type, + vertices, + uvs = [], + positions, + colors, + texCoords, + gradients, + indices, + keep = true + }, fill, transform) { + this.gradients = gradients; + this.uid = formId; + formId += 1; + this.primitive = type; + this.type = type; + this.gpuKeep = keep; + if (type === "quad") this.primitive = "triangle"; + if (type === "triangle:buffered") this.primitive = "triangle"; + if (type === "line:buffered") this.primitive = "line"; + this.indices = indices || repeat(positions?.length, (i2) => i2); + if (fill?.pos || fill?.rot || fill?.scale) { + transform = fill; + fill = void 0; + } + if (fill?.tex) this.texture = fill.tex; + if (fill?.color) this.color = fill.color || c.slice(); + if (fill?.alpha) this.alpha = fill.alpha; + if (positions?.length > 0) + this.addPoints({ positions, colors, texCoords }, this.indices); + if (vertices?.length > 0) { + this.vertices = vertices; + this.uvs = uvs; + } + this.position = transform?.pos || [0, 0, 0]; + this.rotation = transform?.rot || [0, 0, 0]; + if (typeof transform.scale === "number") { + this.scale = [transform.scale, transform.scale, transform.scale]; + } else { + this.scale = transform?.scale || [1, 1, 1]; + } + } + // TODO: This needs to support color (and eventually N vertex attributes). + resetUID() { + this.uid = nanoid(4); + } + // Clears vertex and index attributes to prepare for replacement geometry. + clear() { + this.uvs = []; + this.vertices = []; + this.indices = []; + this.gpuReset = true; + this.gpuVerticesSent = 0; + } + // How close we are to being beyond the max points allotted by the GPU for + // buffer geometries. + maxProgress() { + return this.vertices.length / (this.MAX_POINTS + 1); + } + addPoints(attributes, indices) { + const incomingLength = attributes.positions.length; + const verticesLength = this.vertices.length; + const pointsAvailable = this.MAX_POINTS - verticesLength; + let end = incomingLength; + let maxedOut = false; + if (pointsAvailable < incomingLength) { + end = pointsAvailable; + maxedOut = true; + if (debug) + console.warn( + "Max. cutoff in GPU form!", + this, + incomingLength, + pointsAvailable + ); + } + for (let i2 = 0; i2 < end; i2++) { + const texCoord = attributes.texCoords?.[i2] || [ + attributes.positions[i2][X] / 2 + 0.5, + attributes.positions[i2][Y] / 2 + 0.5 + ]; + this.uvs.push(...texCoord); + if (attributes.colors?.[i2] && typeof this.colorModifier === "function") { + attributes.colors[i2] = this.colorModifier(attributes.colors[i2]); + } + this.vertices.push( + // For sending to the CPU. + new Vertex( + attributes.positions[i2], + attributes.colors?.[i2], + // this.#gradientColors[i % 3], + texCoord, + //this.#texCoords[i % 3] // Replace to enable bespoke texture coordinates. + attributes.normals?.[i2] + ) + ); + if (!indices) this.indices.push(verticesLength + i2); + } + if (indices) this.indices = indices; + return maxedOut; + } + // Get the world position of this form's local vertex. + transformVertex(vertex) { + const panned = fromTranslation2(create5(), [ + this.position[X], + this.position[Y], + this.position[Z] + ]); + const rotX = fromXRotation(create5(), radians(this.rotation[X])); + const rotY = fromYRotation(create5(), radians(this.rotation[Y])); + const rotZ = fromZRotation(create5(), radians(this.rotation[Z])); + const rotatedX = mul5(create5(), panned, rotX); + const rotatedY = mul5(create5(), rotatedX, rotY); + const rotatedZ = mul5(create5(), rotatedY, rotZ); + const matrix = rotatedZ; + scale5(matrix, matrix, this.scale); + return vertex.transformWorld(matrix); + } + graph({ matrix: cameraMatrix }) { + const scaled = scale5(create5(), create5(), this.scale); + const rotX = fromXRotation(create5(), radians(this.rotation[X])); + const rotY = fromYRotation(create5(), radians(this.rotation[Y])); + const rotZ = fromZRotation(create5(), radians(this.rotation[Z])); + const rotatedX = multiply5(create5(), rotX, scaled); + const rotatedY = multiply5(create5(), rotY, rotatedX); + const rotatedZ = multiply5(create5(), rotZ, rotatedY); + const panned = fromTranslation2(create5(), [ + this.position[X] * -1, + this.position[Y], + this.position[Z] * -1 + ]); + const transformed = multiply5(create5(), panned, rotatedZ); + if (this.type === "line" && this.vertices.length > 0) { + const fullMatrix = multiply5(create5(), cameraMatrix, transformed); + withForceReplaceMode(() => { + const savedColor = [c[0], c[1], c[2], c[3]]; + const baseColor = this.color; + for (let i2 = 0; i2 < this.vertices.length; i2 += 2) { + if (i2 + 1 < this.vertices.length) { + const a2 = this.vertices[i2]; + const b2 = this.vertices[i2 + 1]; + const transformedA = a2.transform(fullMatrix); + const transformedB = b2.transform(fullMatrix); + const clippedLine = clipLineToFrustum(transformedA, transformedB); + if (clippedLine.length < 2) continue; + const [lineA, lineB] = clippedLine; + const screenA = toScreenSpace(perspectiveDivide(lineA)); + const screenB = toScreenSpace(perspectiveDivide(lineB)); + if (!Number.isFinite(screenA.pos[0]) || !Number.isFinite(screenA.pos[1]) || !Number.isFinite(screenB.pos[0]) || !Number.isFinite(screenB.pos[1])) { + continue; + } + const clipped = clipLineToScreen( + screenA.pos[0], + screenA.pos[1], + screenB.pos[0], + screenB.pos[1] + ); + if (!clipped) continue; + if (baseColor && baseColor.length >= 3) { + setColor( + baseColor[0], + baseColor[1], + baseColor[2], + baseColor[3] ?? 255 + ); + } else if (a2.color && b2.color) { + const avg = [ + floor7((a2.color[0] + b2.color[0]) / 2 * 255), + floor7((a2.color[1] + b2.color[1]) / 2 * 255), + floor7((a2.color[2] + b2.color[2]) / 2 * 255), + floor7((a2.color[3] + b2.color[3]) / 2 * 255) + ]; + setColor(...avg); + } + line(clipped.x1, clipped.y1, clipped.x2, clipped.y2); + } + } + setColor(...savedColor); + }); + } + if (this.type === "triangle" && this.vertices.length >= 3) { + const fullMatrix = multiply5(create5(), cameraMatrix, transformed); + for (let i2 = 0; i2 < this.vertices.length; i2 += 3) { + if (i2 + 2 < this.vertices.length) { + const v0 = this.vertices[i2]; + const v1 = this.vertices[i2 + 1]; + const v2 = this.vertices[i2 + 2]; + const t0 = v0.transform(fullMatrix); + const t1 = v1.transform(fullMatrix); + const t2 = v2.transform(fullMatrix); + renderStats.originalTriangles++; + let clippedVertices = [t0, t1, t2]; + clippedVertices = clipInClipSpace(clippedVertices, ["near", "left", "right", "bottom", "top"]); + if (clippedVertices.length < 3) { + continue; + } + let anyWTooSmall = false; + for (let vi = 0; vi < clippedVertices.length; vi++) { + if (clippedVertices[vi].pos[W] < MIN_PERSPECTIVE_W) { + anyWTooSmall = true; + break; + } + } + if (anyWTooSmall) continue; + if (clippedVertices.length >= 3) { + renderStats.clippedTriangles++; + } + const nearPlane = NEAR_CLIP_Z; + const fadePlane = 0.5; + const minZ = min5(...clippedVertices.map((v3) => v3.pos[2])); + let alphaMultiplier = 1; + if (!this.noFade && minZ < fadePlane) { + alphaMultiplier = (minZ - nearPlane) / (fadePlane - nearPlane); + alphaMultiplier = max5(0, min5(1, alphaMultiplier)); + } + const screenVertices = clippedVertices.map((vertex) => { + const persp = perspectiveDivide(vertex); + return toScreenSpace(persp); + }); + const hasInvalidVertex = screenVertices.some( + (v3) => !Number.isFinite(v3.pos[0]) || !Number.isFinite(v3.pos[1]) + ); + if (hasInvalidVertex) continue; + const finalVertices = clipToScreen(screenVertices); + if (finalVertices.length < 3) continue; + for (let j = 1; j < finalVertices.length - 1; j++) { + const s0 = finalVertices[0]; + const s1 = finalVertices[j]; + const s2 = finalVertices[j + 1]; + const x0 = s0.pos[0], y0 = s0.pos[1]; + const x1 = s1.pos[0], y1 = s1.pos[1]; + const x2 = s2.pos[0], y2 = s2.pos[1]; + if (this.texture) { + const subdivided = subdivideTriangleIfNeeded( + x0, + y0, + s0.texCoords, + s0.pos[2], + s0.pos[3], + // x, y, uv, z, w + x1, + y1, + s1.texCoords, + s1.pos[2], + s1.pos[3], + x2, + y2, + s2.texCoords, + s2.pos[2], + s2.pos[3], + 300 + // Subdivide triangles larger than 300px to reduce overdraw + ); + if (subdivided.length > 1) { + renderStats.subdividedTriangles += subdivided.length; + } + for (const tri2 of subdivided) { + drawTexturedTriangle( + tri2[0], + tri2[1], + tri2[2], + tri2[3], + tri2[4], + // x0, y0, uv0, z0, w0 + tri2[5], + tri2[6], + tri2[7], + tri2[8], + tri2[9], + // x1, y1, uv1, z1, w1 + tri2[10], + tri2[11], + tri2[12], + tri2[13], + tri2[14], + // x2, y2, uv2, z2, w2 + this.texture, + alphaMultiplier + ); + if (showWireframes) { + const w0 = tri2[4]; + const w1 = tri2[9]; + const w2 = tri2[14]; + if (w0 > 0.01 && w1 > 0.01 && w2 > 0.01) { + const wireColor = subdivided.length > 1 ? [255, 255, 0, 255] : [255, 255, 255, 255]; + addWireframeLine(tri2[0], tri2[1], tri2[5], tri2[6], wireColor, "textured"); + addWireframeLine(tri2[5], tri2[6], tri2[10], tri2[11], wireColor, "textured"); + addWireframeLine(tri2[10], tri2[11], tri2[0], tri2[1], wireColor, "textured"); + } + } + } + } else { + const color0 = [ + floor7(s0.color[0] * 255), + floor7(s0.color[1] * 255), + floor7(s0.color[2] * 255), + floor7(s0.color[3] * 255 * alphaMultiplier) + ]; + const color1 = [ + floor7(s1.color[0] * 255), + floor7(s1.color[1] * 255), + floor7(s1.color[2] * 255), + floor7(s1.color[3] * 255 * alphaMultiplier) + ]; + const color22 = [ + floor7(s2.color[0] * 255), + floor7(s2.color[1] * 255), + floor7(s2.color[2] * 255), + floor7(s2.color[3] * 255 * alphaMultiplier) + ]; + drawGradientTriangle( + x0, + y0, + color0, + s0.pos[2], + // x, y, color, z + x1, + y1, + color1, + s1.pos[2], + x2, + y2, + color22, + s2.pos[2] + ); + if (showWireframes) { + const w0 = s0.pos[3]; + const w1 = s1.pos[3]; + const w2 = s2.pos[3]; + if (w0 > 0.01 && w1 > 0.01 && w2 > 0.01) { + const green = [0, 255, 0, 255]; + addWireframeLine(x0, y0, x1, y1, green, "gradient"); + addWireframeLine(x1, y1, x2, y2, green, "gradient"); + addWireframeLine(x2, y2, x0, y0, green, "gradient"); + } + } + } + } + if (showWireframes && finalVertices.length > 3) { + const red = [255, 0, 0, 255]; + for (let k = 0; k < finalVertices.length; k++) { + const vA = finalVertices[k]; + const vB = finalVertices[(k + 1) % finalVertices.length]; + if (vA.pos[3] > 0.01 && vB.pos[3] > 0.01) { + addWireframeLine(vA.pos[0], vA.pos[1], vB.pos[0], vB.pos[1], red, "clipped"); + } + } + } + } + } + } + const transformedVertices = []; + const matrix = multiply5(create5(), cameraMatrix, transformed); + this.vertices.forEach((vertex) => { + transformedVertices.push(vertex.transform(matrix)); + }); + return transformedVertices; + } +}; +var X = 0; +var Y = 1; +var Z = 2; +var W = 3; +var Vertex = class _Vertex { + static X = 0; + static Y = 1; + static Z = 2; + static W = 3; + pos; + color; + texCoords; + normal; + constructor(position = [0, 0, 0, 1], color3 = [1, 1, 1, 1], textureCoordinates = [0, 0], normal = null) { + this.pos = position; + this.color = color3; + this.texCoords = textureCoordinates; + if (normal !== null) { + this.normal = fromValues2(...normal); + } else { + this.normal = fromValues2(0, 0, 1); + } + } + // TODO: Optimize this function for large vertex counts. 22.10.13.00.14 + transform(matrix) { + const vert = new _Vertex( + transformMat42( + create3(), + [ + this.pos[X] * -1, + // FLIPPED + this.pos[Y], + this.pos[Z] * -1, + // FLIPPED + this.pos[W] + ], + matrix + ), + this.color, + this.texCoords + ); + return vert; + } + transformWorld(matrix) { + return new _Vertex( + transformMat42(create3(), this.pos, matrix), + this.color, + this.texCoords + ); + } +}; +var NEAR_CLIP_Z = 0.02; +var MIN_PERSPECTIVE_W = 1e-3; +function clipInClipSpace(vertices, clippingBoundary) { + let clipped = []; + function inside(vertex, edge) { + const p = vertex.pos; + const w = p[W]; + switch (edge) { + case "left": + return p[X] >= -w; + case "right": + return p[X] <= w; + case "bottom": + return p[Y] >= -w; + case "top": + return p[Y] <= w; + case "near": + return p[Z] >= NEAR_CLIP_Z; + case "far": + return p[Z] <= w; + } + } + function computeIntersection(v1, v2, edge) { + const p1 = v1.pos; + const p22 = v2.pos; + let t2; + switch (edge) { + case "left": + t2 = (-p1[W] - p1[X]) / (p22[X] - p1[X] + (p22[W] - p1[W])); + break; + case "right": + t2 = (p1[W] - p1[X]) / (p22[X] - p1[X] - (p22[W] - p1[W])); + break; + case "bottom": + t2 = (-p1[W] - p1[Y]) / (p22[Y] - p1[Y] + (p22[W] - p1[W])); + break; + case "top": + t2 = (p1[W] - p1[Y]) / (p22[Y] - p1[Y] - (p22[W] - p1[W])); + break; + case "near": + t2 = (NEAR_CLIP_Z - p1[Z]) / (p22[Z] - p1[Z]); + break; + case "far": + t2 = (p1[W] - p1[Z]) / (p22[Z] - p1[Z] - (p22[W] - p1[W])); + break; + } + if (!Number.isFinite(t2)) t2 = 0.5; + t2 = max5(0, min5(1, t2)); + const newPos = lerp2(create3(), p1, p22, t2); + const newColor = [ + v1.color[0] + (v2.color[0] - v1.color[0]) * t2, + v1.color[1] + (v2.color[1] - v1.color[1]) * t2, + v1.color[2] + (v2.color[2] - v1.color[2]) * t2, + v1.color[3] + (v2.color[3] - v1.color[3]) * t2 + ]; + const newTexCoords = [ + v1.texCoords[0] + (v2.texCoords[0] - v1.texCoords[0]) * t2, + v1.texCoords[1] + (v2.texCoords[1] - v1.texCoords[1]) * t2 + ]; + return new Vertex(newPos, newColor, newTexCoords); + } + for (const edge of clippingBoundary) { + const input3 = clipped.length > 0 ? clipped : vertices; + clipped = []; + if (input3.length === 0) break; + let prevVertex = input3[input3.length - 1]; + for (let i2 = 0; i2 < input3.length; i2++) { + const curVertex = input3[i2]; + if (inside(curVertex, edge)) { + if (!inside(prevVertex, edge)) { + const intersection = computeIntersection(prevVertex, curVertex, edge); + clipped.push(intersection); + } + clipped.push(curVertex); + } else if (inside(prevVertex, edge)) { + const intersection = computeIntersection(prevVertex, curVertex, edge); + clipped.push(intersection); + } + prevVertex = curVertex; + } + } + return clipped; +} +function clipLineToFrustum(v1, v2) { + const clippingBoundary = ["left", "right", "bottom", "top", "near", "far"]; + function inside(p, edge) { + switch (edge) { + case "left": + return p[X] >= -p[W]; + case "right": + return p[X] <= p[W]; + case "bottom": + return p[Y] >= -p[W]; + case "top": + return p[Y] <= p[W]; + case "near": + return p[Z] >= NEAR_CLIP_Z; + case "far": + return p[Z] <= p[W]; + } + } + function computeIntersection(p1, p22, edge) { + let t2; + switch (edge) { + case "left": + t2 = (-p1[W] - p1[X]) / (p22[X] - p1[X] + p22[W] - p1[W]); + break; + case "right": + t2 = (p1[W] - p1[X]) / (p22[X] - p1[X] - p22[W] + p1[W]); + break; + case "bottom": + t2 = (-p1[W] - p1[Y]) / (p22[Y] - p1[Y] + p22[W] - p1[W]); + break; + case "top": + t2 = (p1[W] - p1[Y]) / (p22[Y] - p1[Y] - p22[W] + p1[W]); + break; + case "near": + t2 = (NEAR_CLIP_Z - p1[Z]) / (p22[Z] - p1[Z]); + break; + case "far": + t2 = (p1[W] - p1[Z]) / (p22[Z] - p1[Z] - p22[W] + p1[W]); + break; + } + if (!Number.isFinite(t2)) t2 = 0.5; + t2 = max5(0, min5(1, t2)); + return t2; + } + let clippedVertices = [v1, v2]; + for (const edge of clippingBoundary) { + if (clippedVertices.length < 2) break; + const [p1, p22] = clippedVertices; + const p1Inside = inside(p1.pos, edge); + const p2Inside = inside(p22.pos, edge); + if (p1Inside && p2Inside) { + continue; + } else if (!p1Inside && !p2Inside) { + clippedVertices = []; + break; + } else { + const t2 = computeIntersection(p1.pos, p22.pos, edge); + const intersectionVertex = new Vertex( + lerp2(create3(), p1.pos, p22.pos, t2), + [ + p1.color[0] + (p22.color[0] - p1.color[0]) * t2, + p1.color[1] + (p22.color[1] - p1.color[1]) * t2, + p1.color[2] + (p22.color[2] - p1.color[2]) * t2, + p1.color[3] + (p22.color[3] - p1.color[3]) * t2 + ], + [ + p1.texCoords[0] + (p22.texCoords[0] - p1.texCoords[0]) * t2, + p1.texCoords[1] + (p22.texCoords[1] - p1.texCoords[1]) * t2 + ] + ); + if (p1Inside) { + clippedVertices = [p1, intersectionVertex]; + } else { + clippedVertices = [intersectionVertex, p22]; + } + } + } + return clippedVertices; +} +function perspectiveDivide(vertex) { + const w = vertex.pos[W]; + if (abs3(w) < MIN_PERSPECTIVE_W) { + const vert2 = new Vertex([NaN, NaN, NaN, w]); + vert2.color = vertex.color; + vert2.texCoords = vertex.texCoords; + return vert2; + } + const vert = new Vertex([ + vertex.pos[X] / w, + vertex.pos[Y] / w, + vertex.pos[Z] / w, + w + ]); + vert.color = vertex.color; + vert.texCoords = vertex.texCoords; + return vert; +} +function toScreenSpace(vertex) { + const x = vertex.pos[X]; + const y = -vertex.pos[Y]; + const z = vertex.pos[Z]; + const sX = (x + 1) / 2 * width; + const sY = (y + 1) / 2 * height; + const vert = new Vertex([sX, sY, z, vertex.pos[W]]); + vert.color = vertex.color; + vert.texCoords = vertex.texCoords; + return vert; +} +function clipToScreen(vertices) { + if (vertices.length < 3) return vertices; + const edges = [ + { axis: "x", sign: 1, bound: 0 }, + // left: x >= 0 + { axis: "x", sign: -1, bound: width }, + // right: x <= width + { axis: "y", sign: 1, bound: 0 }, + // top: y >= 0 + { axis: "y", sign: -1, bound: height } + // bottom: y <= height + ]; + let polygon = vertices; + for (const edge of edges) { + if (polygon.length < 3) break; + const clipped = []; + const prev = polygon[polygon.length - 1]; + for (let i2 = 0; i2 < polygon.length; i2++) { + const curr = polygon[i2]; + const prevVal = edge.axis === "x" ? prev.pos[0] : prev.pos[1]; + const currVal = edge.axis === "x" ? curr.pos[0] : curr.pos[1]; + const prevInside = edge.sign > 0 ? prevVal >= edge.bound : prevVal <= edge.bound; + const currInside = edge.sign > 0 ? currVal >= edge.bound : currVal <= edge.bound; + if (currInside) { + if (!prevInside) { + const t2 = (edge.bound - prevVal) / (currVal - prevVal); + if (Number.isFinite(t2) && t2 >= 0 && t2 <= 1) { + clipped.push(lerpVertex(prev, curr, t2)); + } + } + clipped.push(curr); + } else if (prevInside) { + const t2 = (edge.bound - prevVal) / (currVal - prevVal); + if (Number.isFinite(t2) && t2 >= 0 && t2 <= 1) { + clipped.push(lerpVertex(prev, curr, t2)); + } + } + } + polygon = clipped; + } + return polygon; +} +function lerpVertex(v1, v2, t2) { + const w1 = v1.pos[3]; + const w2 = v2.pos[3]; + const safeW = w1 > MIN_PERSPECTIVE_W && w2 > MIN_PERSPECTIVE_W && Number.isFinite(w1) && Number.isFinite(w2); + let newW; + if (safeW) { + const invW1 = 1 / w1; + const invW2 = 1 / w2; + const newInvW = invW1 + (invW2 - invW1) * t2; + newW = newInvW > 1e-4 ? 1 / newInvW : w1 + (w2 - w1) * t2; + } else { + newW = w1 + (w2 - w1) * t2; + } + const vert = new Vertex([ + v1.pos[0] + (v2.pos[0] - v1.pos[0]) * t2, + v1.pos[1] + (v2.pos[1] - v1.pos[1]) * t2, + v1.pos[2] + (v2.pos[2] - v1.pos[2]) * t2, + newW + ]); + vert.color = [ + v1.color[0] + (v2.color[0] - v1.color[0]) * t2, + v1.color[1] + (v2.color[1] - v1.color[1]) * t2, + v1.color[2] + (v2.color[2] - v1.color[2]) * t2, + v1.color[3] + (v2.color[3] - v1.color[3]) * t2 + ]; + if (safeW) { + const invW1 = 1 / w1, invW2 = 1 / w2; + const newInvW = invW1 + (invW2 - invW1) * t2; + const tc1OverW = [v1.texCoords[0] * invW1, v1.texCoords[1] * invW1]; + const tc2OverW = [v2.texCoords[0] * invW2, v2.texCoords[1] * invW2]; + const safeDiv = newInvW > 1e-4 ? newInvW : 1; + vert.texCoords = [ + (tc1OverW[0] + (tc2OverW[0] - tc1OverW[0]) * t2) / safeDiv, + (tc1OverW[1] + (tc2OverW[1] - tc1OverW[1]) * t2) / safeDiv + ]; + } else { + vert.texCoords = [ + v1.texCoords[0] + (v2.texCoords[0] - v1.texCoords[0]) * t2, + v1.texCoords[1] + (v2.texCoords[1] - v1.texCoords[1]) * t2 + ]; + } + return vert; +} + +// public/aesthetic.computer/disks/common/debug.mjs +var DEBUG = false; +function setDebug(bool) { + DEBUG = bool; +} + +// public/aesthetic.computer/lib/ask.mjs +var tokenProvider = null; +function setAskTokenProvider(provider) { + tokenProvider = provider; +} +var Conversation = class { + messages = []; + forgetful = false; + memory; + controller; + // from the `disk` api + store; + key; + constructor(store2, slug, forgetful = false, memory = Infinity) { + this.store = store2; + this.key = slug + ":conversation"; + this.forgetful = forgetful; + this.memory = memory; + } + // Retrieve messages from the store. + // This can probably be deprecated... 23.07.24.17.17 + async retrieve() { + if (!this.forgetful) { + this.messages = this.store[this.key] || await this.store.retrieve(this.key, "local:db") || []; + return this.messages.slice(); + } else { + return this.messages.slice(); + } + } + async forget() { + await this.store.delete(this.key, "local:db"); + delete this.store[this.key]; + this.messages = []; + } + ask(options, and, done, fail) { + let prompt, program = { before: "", after: "" }, hint; + if (typeof options === "string") { + prompt = options; + } else { + ({ prompt, program, hint } = options); + } + let messageLength = this.messages.length; + if (messageLength > this.memory) this.messages.length = messageLength = 0; + if (messageLength === 0) { + program.before = program.before?.trim(); + program.after = program.after?.trim(); + if (program.before) + this.messages.push({ by: "system", text: program.before }); + this.messages.push({ by: "user", text: prompt }); + if (program.after) + this.messages.push({ by: "system", text: program.after }); + } else { + this.messages.push({ by: "user", text: prompt }); + } + this.controller?.abort(); + this.controller = new AbortController(); + const signal = this.controller.signal; + const host = ``; + const responsePromise = (async () => { + const headers2 = { "Content-Type": "application/json" }; + try { + const token = await tokenProvider?.(); + if (token) headers2.Authorization = `Bearer ${token}`; + } catch (err) { + if (DEBUG) console.warn("\u{1F511} ask: no token \u2014", err); + } + return fetch(`${host}/api/ask`, { + method: "POST", + signal, + headers: headers2, + body: JSON.stringify({ messages: this.messages, hint }) + }); + })(); + if (this.forgetful) this.messages.length = 0; + let timeout; + const timeoutPromise = new Promise((resolve, reject) => { + timeout = setTimeout(() => { + this.controller?.abort(); + reject(new Error(`Reply timed out after 10 seconds!`)); + }, 10 * 1e3); + }); + let streamedReply = ""; + const convo = this; + function reportFailure(error) { + convo.messages = convo.messages.slice(0, messageLength); + fail?.(); + } + Promise.race([responsePromise, timeoutPromise]).then((response) => { + clearTimeout(timeout); + if (!response.ok) + throw new Error(`Failed to reply: ${response.status}`); + const readableStream = response.body; + const decoder = new TextDecoder(); + const reader = readableStream.getReader(); + function read() { + reader.read().then(async ({ done: complete, value }) => { + if (complete) { + convo.controller = null; + done?.(); + if (!convo.forgetful) + convo.messages.push({ by: "system", text: streamedReply }); + if (convo.store && convo.key) { + } + } else { + const got = decoder.decode(value, { stream: true }); + streamedReply += got; + and?.(got); + read(); + } + }).catch(reportFailure); + } + read(); + }).catch(reportFailure); + return () => { + this.controller?.abort(); + }; + } +}; + +// public/aesthetic.computer/lib/color-codes.mjs +function splitColorCodes(str7) { + if (!str7) return [str7 || ""]; + const parts = [""]; + let i2 = 0; + while (i2 < str7.length) { + if (str7[i2] !== "\\") { + parts[parts.length - 1] += str7[i2]; + i2 += 1; + } else if (str7[i2 + 1] === "\\") { + parts[parts.length - 1] += "\\"; + i2 += 2; + } else { + const close = str7.indexOf("\\", i2 + 1); + if (close === -1) { + parts[parts.length - 1] += "\\"; + i2 += 1; + } else { + parts.push(str7.slice(i2 + 1, close), ""); + i2 = close + 1; + } + } + } + return parts; +} +function stripColorCodes(str7) { + if (!str7) return str7; + const parts = splitColorCodes(str7); + let out = ""; + for (let i2 = 0; i2 < parts.length; i2 += 2) out += parts[i2]; + return out; +} +function hasColorCodes(str7) { + if (!str7) return false; + return splitColorCodes(str7).length > 1; +} +function escapeColorCodes(str7) { + if (!str7) return str7 || ""; + return str7.replace(/\\/g, "\\\\"); +} +function mapColorCodes(str7, fn) { + if (!str7) return str7; + const parts = splitColorCodes(str7); + let out = escapeColorCodes(parts[0]); + for (let i2 = 1; i2 < parts.length; i2 += 2) { + const replacement = fn(parts[i2]); + if (replacement !== null && replacement !== void 0) out += `\\${replacement}\\`; + out += escapeColorCodes(parts[i2 + 1]); + } + return out; +} + +// public/aesthetic.computer/lib/text.mjs +function capitalize(word) { + return word.charAt(0).toUpperCase() + word.slice(1); +} +function reverse(str7) { + return str7.split("").reverse().join(""); +} + +// public/aesthetic.computer/lib/ticker.mjs +var Ticker = class { + #offset = 0; + #speed = 1; + #separator = " - "; + #text = ""; + #textWidth = 0; + #separatorWidth = 0; + #cycleWidth = 0; + #api = null; + #lastUpdateTime = 0; + #targetFps = 30; + // Lock ticker animation to 30fps equivalent timing + constructor(text = "", options = {}) { + this.#text = text; + this.#speed = options.speed || 1; + this.#separator = options.separator || " - "; + } + // Set the text content for the ticker + setText(text) { + if (this.#text === text) return this; + this.#text = text; + this.#updateMeasurements(); + if (this.#cycleWidth > 0 && this.#offset >= this.#cycleWidth) { + this.#offset = this.#offset % this.#cycleWidth; + } + return this; + } + // Set the scrolling speed (pixels per frame) + setSpeed(speed) { + this.#speed = speed; + return this; + } + // Set the separator between text repetitions + setSeparator(separator) { + this.#separator = separator; + this.#updateMeasurements(); + return this; + } + // Set the target FPS for animation timing (default: 30) + setTargetFPS(fps) { + this.#targetFps = fps; + return this; + } + // Strip color codes from text for accurate measurement + // Color codes are in format \\color\\ or \\r,g,b\\ + #stripColorCodes(text) { + if (!text) return text; + return text.replace(/\\[^\\]*\\/g, ""); + } + // Update text measurements when text or separator changes + #updateMeasurements(font) { + if (!this.#api || !this.#text) return; + const strippedText = this.#stripColorCodes(this.#text); + const strippedSeparator = this.#stripColorCodes(this.#separator); + const textMeasurement = this.#api.text.box(strippedText, void 0, void 0, void 0, void 0, font); + const separatorMeasurement = this.#api.text.box(strippedSeparator, void 0, void 0, void 0, void 0, font); + this.#textWidth = textMeasurement.box.width; + this.#separatorWidth = separatorMeasurement.box.width; + this.#cycleWidth = this.#textWidth + this.#separatorWidth; + } + // Update the ticker animation (call this in your paint function) + update(api) { + this.#api = api; + if (this.#cycleWidth === 0 && this.#text) { + this.#updateMeasurements(); + } + const currentTime = api.clock.time(); + if (!currentTime) return; + const timeMs = currentTime.getTime(); + if (this.#lastUpdateTime === 0) { + this.#lastUpdateTime = timeMs; + return; + } + const deltaTime = timeMs - this.#lastUpdateTime; + const targetFrameTime = 1e3 / this.#targetFps; + if (deltaTime >= targetFrameTime) { + const framesPassed = Math.floor(deltaTime / targetFrameTime); + this.#offset += this.#speed * framesPassed; + this.#lastUpdateTime = timeMs; + if (this.#cycleWidth > 0) { + if (this.#offset >= this.#cycleWidth) { + this.#offset = this.#offset % this.#cycleWidth; + } else if (this.#offset < 0) { + this.#offset = this.#cycleWidth + this.#offset % this.#cycleWidth; + } + } + } + } + // Render the ticker at the specified position + paint(api, x, y, options = {}) { + if (!this.#text) return; + this.#api = api; + const font = options.font; + if (this.#cycleWidth === 0 || font) { + this.#updateMeasurements(font); + } + if (this.#cycleWidth <= 0) return; + const displayWidth = options.width || api.screen.width; + const numCycles = Math.ceil((displayWidth + this.#cycleWidth) / this.#cycleWidth) + 1; + for (let i2 = 0; i2 < numCycles; i2++) { + const baseX = x + i2 * this.#cycleWidth - this.#offset; + if (baseX > -this.#cycleWidth && baseX < x + displayWidth + this.#cycleWidth) { + if (options.color) api.ink(options.color, options.alpha || 255); + api.write(this.#text, { x: baseX, y }, void 0, void 0, false, font); + api.write(this.#separator, { x: baseX + this.#textWidth, y }, void 0, void 0, false, font); + } + } + } + // Get current offset (useful for debugging or synchronization) + getOffset() { + return this.#offset; + } + // Set the offset directly (useful for manual control) + setOffset(offset) { + this.#offset = offset; + const currentTime = this.#api?.clock?.time?.(); + if (currentTime) { + this.#lastUpdateTime = currentTime.getTime(); + } + return this; + } + // Reset the ticker to the beginning + reset() { + this.#offset = 0; + this.#lastUpdateTime = 0; + return this; + } + // Get the cycle width (useful for calculations) + getCycleWidth() { + return this.#cycleWidth; + } +}; + +// public/aesthetic.computer/lib/gizmo.mjs +var Hourglass = class { + ticks = 0; + max = 1; + progress = 0; + complete = false; + flips = 0n; + #completed; + #flipped; + autoFlip = false; + #every; + // Callback that fires every frame. + constructor(max9 = 1, { completed, flipped, every: every2, autoFlip = false } = {}, startingTicks = 0) { + this.max = max9; + this.ticks = startingTicks; + this.autoFlip = autoFlip; + this.#completed = completed; + this.#flipped = flipped; + this.#every = every2; + } + step() { + if (this.complete === true) return console.log("\u231B Already complete."); + this.ticks += 1; + this.#every?.(); + this.progress = this.ticks / this.max; + if (this.ticks >= this.max) { + this.complete = true; + this.progress = 1; + this.#completed?.(this.flips); + if (this.autoFlip) this.flip(); + } + } + get progress() { + return this.ticks / this.max; + } + flip() { + this.flips += 1n; + this.ticks = 0; + this.complete = false; + this.#flipped?.(this.flips, ...arguments); + } +}; +var EllipsisTicker = class { + #ellipsisDots = 0; + #lastUpdateTime = 0; + #updateInterval = 500; + // 500ms = 0.5 seconds, locked to 30fps equivalent + constructor(options = {}) { + this.#updateInterval = options.interval || 500; + } + // Get the current ellipses with a padded end. + text(repeat2, opts) { + let ellipsis = ""; + repeat2(this.#ellipsisDots, () => ellipsis += "."); + return opts?.pad === false ? ellipsis : ellipsis.padEnd(3, " "); + } + // Update the ticker using clock time instead of frame counting + update(clockTime) { + if (!clockTime) return; + const currentTime = clockTime.getTime(); + if (this.#lastUpdateTime === 0) { + this.#lastUpdateTime = currentTime; + return; + } + if (currentTime - this.#lastUpdateTime >= this.#updateInterval) { + this.#ellipsisDots = (this.#ellipsisDots + 1) % 4; + this.#lastUpdateTime = currentTime; + } + } + // Keep the old sim() method for backward compatibility, but it won't do anything + sim() { + } +}; + +// public/aesthetic.computer/lib/ui.mjs +var { round: round6 } = Math; +var TYPEFACE_UI; +function stripColorCodes2(text) { + if (!text || typeof text !== "string") return text; + return text.replace(/\\[^\\]*\\/g, ""); +} +function defaultRolloverScheme($, small = false) { + const mode = $?.dark ? $?.theme?.dark : $?.theme?.light; + const bg = mode?.buttonHover || mode?.buttonBg || ($?.dark ? [24, 32, 42] : [220, 245, 255]); + const outline = mode?.buttonHoverOutline || mode?.buttonOutline || [255, 220, 0]; + const text = mode?.buttonHoverText || mode?.buttonText || ($?.dark ? 255 : 0); + return small ? [bg, outline, text, bg] : [bg, outline, text, 255]; +} +var activeButtons = /* @__PURE__ */ new Set(); +var hoveredButtons = /* @__PURE__ */ new Set(); +function updateHoverCursor(event) { + for (const button of hoveredButtons) + if (!button.over) hoveredButtons.delete(button); + event?.cursor?.(hoveredButtons.size ? "active" : "precise"); +} +var recentRollouts = /* @__PURE__ */ new Map(); +var ROLLOUT_MEMORY_TIME = 2e3; +function trackRollout(buttonId) { + recentRollouts.set(buttonId, performance.now()); + for (const [id, timestamp2] of recentRollouts.entries()) { + if (performance.now() - timestamp2 > ROLLOUT_MEMORY_TIME) { + recentRollouts.delete(id); + } + } +} +function wasRecentlyRolledOut(buttonId) { + const rolloutTime = recentRollouts.get(buttonId); + return rolloutTime && performance.now() - rolloutTime < ROLLOUT_MEMORY_TIME; +} +function addActiveButton(btn, reason = "unknown", netLog = null) { + activeButtons.add(btn); + const logData = { + buttonId: btn.id || "unnamed", + reason, + totalActive: activeButtons.size, + down: btn.down, + downPointer: btn.downPointer + }; + if (netLog) { + netLog.info("\u{1F518} Button activated:", logData); + } + if (activeButtons.size > 5) { + if (netLog) netLog.warn("\u{1F6A8} Emergency cleanup: too many active buttons:", activeButtons.size); + emergencyButtonCleanup("too many active buttons detected: " + activeButtons.size, netLog); + } +} +function removeActiveButton(btn, reason = "unknown", netLog = null) { + const wasPresent = activeButtons.has(btn); + activeButtons.delete(btn); + if (wasPresent) { + const logData = { + buttonId: btn.id || "unnamed", + reason, + totalActive: activeButtons.size, + down: btn.down, + downPointer: btn.downPointer + }; + if (netLog) { + netLog.info("\u{1F518} Button deactivated:", logData); + } + } else { + const logData = { + buttonId: btn.id || "unnamed", + reason + }; + console.warn("\u26A0\uFE0F Tried to remove button not in activeButtons:", logData); + if (netLog) { + netLog.warn("\u26A0\uFE0F Button removal attempted but not found:", logData); + } + } +} +var debugButtonStateChecks = 0; +function debugActiveButtonsState() { + debugButtonStateChecks++; + if (debugButtonStateChecks % 60 === 0) { + const activeButtonsArray = Array.from(activeButtons); + const stuckButtons = activeButtonsArray.filter((btn) => !btn.down); + if (stuckButtons.length > 0) { + console.warn("\u{1F41B} INCONSISTENT BUTTON STATE DETECTED:", { + totalActive: activeButtonsArray.length, + stuckButtons: stuckButtons.map((btn) => ({ + id: btn.id || "unnamed", + down: btn.down, + over: btn.over, + downPointer: btn.downPointer + })), + allButtons: activeButtonsArray.map((btn) => ({ + id: btn.id || "unnamed", + down: btn.down, + over: btn.over, + downPointer: btn.downPointer + })) + }); + stuckButtons.forEach((btn) => { + console.log("\u{1F9F9} Cleaning up stuck button:", btn.id || "unnamed"); + btn.actions?.cancel?.(btn); + btn.over = false; + btn.downPointer = void 0; + activeButtons.delete(btn); + }); + } + } +} +function resetAllButtons(netLog = null) { + console.log("\u{1F504} MANUAL BUTTON RESET - clearing all active buttons"); + if (netLog) { + netLog.info("\u{1F504} Manual button reset initiated"); + } + const buttonsToReset = Array.from(activeButtons); + buttonsToReset.forEach((btn) => { + console.log("\u{1F504} Resetting button:", btn.id || "unnamed"); + btn.down = false; + btn.over = false; + btn.downPointer = void 0; + removeActiveButton(btn, "manual reset", netLog); + }); +} +function emergencyButtonCleanup(reason = "unknown", netLog = null) { + console.warn("\u{1F6A8} EMERGENCY BUTTON CLEANUP:", reason); + if (netLog) { + netLog.error("\u{1F6A8} Emergency button cleanup triggered:", { reason }); + } + const activeButtonsArray = Array.from(activeButtons); + const buttonStates = activeButtonsArray.map((btn) => ({ + id: btn.id || "unnamed", + down: btn.down, + over: btn.over, + downPointer: btn.downPointer + })); + console.log("\u{1F4CA} Active buttons before cleanup:", buttonStates); + if (netLog) { + netLog.info("\u{1F4CA} Emergency cleanup button states:", buttonStates); + } + activeButtonsArray.forEach((btn) => { + btn.actions?.cancel?.(btn); + btn.down = false; + btn.over = false; + btn.downPointer = void 0; + activeButtons.delete(btn); + }); + console.log("\u{1F9F9} Emergency cleanup complete - all buttons reset"); + if (netLog) { + netLog.info("\u{1F9F9} Emergency cleanup completed:", { buttonsReset: activeButtonsArray.length }); + } +} +if (typeof window !== "undefined") { + window.resetAllButtons = resetAllButtons; + window.emergencyButtonCleanup = emergencyButtonCleanup; +} +var Button = class { + btn; + box; + down = false; + disabled = false; + icon; + dom = false; + over = false; + // Keep track of rollover state. + multitouch = true; + // Toggle to false to make a single touch button2. + downPointer; + // Keep track of what original pointer downed the button. + actions; + // A held list of callbacks for virtually triggering events. + noEdgeDetection = false; + // Set to true to opt out of global edge detection cancellation + noRolloverActivation = false; + // Set to true to prevent activation via rollover from other buttons + stickyScrubbing = false; + // Set to true to prevent rollover activation when scrubbing from another button + offScreenScrubbing = false; + // Set to true to allow scrubbing to continue off-screen but still allow horizontal rollover + get up() { + return !this.down; + } + set up(value) { + this.down = !value; + } + // (x, y, width, height) or Box + constructor() { + if (arguments.length === 1) { + this.box = Box.from(arguments[0]); + } else this.box = new Box(...arguments); + this.btn = this; + } + publishToDom({ send: send2 }, label, message) { + send2({ + type: "button:hitbox:add", + content: { box: this.box, label, message } + }); + } + removeFromDom({ send: send2 }, label) { + send2({ type: "button:hitbox:remove", content: label }); + } + // For using in a piece's `act` function. Contains callbacks for + // events that take place inside the button. + // Usage: act(e, () => {}); // For 'push' callback only. + // act(e, {push: () => {}, down: () => {}, cancel: () => {}, draw() => {}}); + // You can optionally pass in an array of `pens` {x, y} for multi-touch support. + act(e2, callbacks = () => { + }, pens = []) { + const btn = this.btn; + if (btn.disabled) { + if (btn.over) { + btn.over = false; + hoveredButtons.delete(btn); + updateHoverCursor(e2); + } + return; + } + const netLog = e2.net?.log; + debugActiveButtonsState(); + if (typeof callbacks === "function") callbacks = { push: callbacks }; + btn.actions = callbacks; + if (e2.is("ui:cancel-interactions") && !btn.noEdgeDetection) { + const shouldCancel = btn.down && (!btn.offScreenScrubbing || btn.offScreenScrubbing && (e2.x < btn.box.x || e2.x >= btn.box.x + btn.box.w)); + if (shouldCancel) { + console.log("\u{1F6AB} Global edge detection - button cancelled:", { + buttonId: btn.id || "unnamed", + timestamp: performance.now(), + reason: "ui:cancel-interactions event", + wasDown: btn.down, + offScreenScrubbing: btn.offScreenScrubbing, + cursorX: e2.x, + buttonBounds: { x: btn.box.x, w: btn.box.w } + }); + btn.down = false; + btn.over = false; + hoveredButtons.delete(btn); + updateHoverCursor(e2); + btn.downPointer = void 0; + removeActiveButton(btn, "global edge detection", netLog); + callbacks.cancel?.(btn); + } + if (!shouldCancel && activeButtons.has(btn) && !btn.down) { + console.warn("\u{1F9F9} Edge detection cleanup - removing orphaned button:", { + buttonId: btn.id || "unnamed", + reason: "button in activeButtons but not down during edge detection" + }); + removeActiveButton(btn, "edge detection orphan cleanup", netLog); + btn.over = false; + btn.downPointer = void 0; + } + return; + } + const t2 = this.multitouch ? "any" : "1"; + if (e2.hudButtonActive && !btn.noEdgeDetection) { + return; + } + if (e2.is(`touch:${t2}`) && btn.box.contains(e2) && !btn.down) { + const wasRecentRollout = wasRecentlyRolledOut(btn.id || "unnamed"); + if (activeButtons.has(btn) && !btn.down) { + console.warn("\u26A0\uFE0F CORRUPTED STATE DETECTED - button in activeButtons but not down:", { + buttonId: btn.id || "unnamed", + reason: "cleaning up before new touch", + wasRecentlyRolledOut: wasRecentRollout + }); + removeActiveButton(btn, "corrupted state cleanup before touch", netLog); + btn.over = false; + btn.downPointer = void 0; + } + if (wasRecentRollout) { + console.log("\u{1F504} Retap after recent rollout - ensuring clean state:", { + buttonId: btn.id || "unnamed" + }); + btn.over = false; + btn.downPointer = void 0; + if (activeButtons.has(btn)) { + removeActiveButton(btn, "retap after rollout cleanup", netLog); + } + } + const downed = callbacks.down?.(btn); + btn.down = downed || downed === void 0 ? true : false; + if (btn.down && btn.downPointer === void 0) { + btn.downPointer = e2.pointer || 0; + } else if (btn.down && btn.downPointer !== void 0 && btn.downPointer !== e2.pointer) { + if (this.multitouch) { + console.log("\u{1F504} Transferring downPointer ownership:", { + buttonId: btn.id || "unnamed", + fromPointer: btn.downPointer, + toPointer: e2.pointer, + reason: "multitouch pointer transfer" + }); + btn.downPointer = e2.pointer || 0; + } else { + console.warn("\u26A0\uFE0F Button already has downPointer - NOT updating:", { + buttonId: btn.id || "unnamed", + eventPointer: e2.pointer, + existingDownPointer: btn.downPointer, + reason: "downPointer was not cleaned up properly" + }); + } + } + btn.over = btn.down; + if (btn.down) { + addActiveButton(btn, "touch down", netLog); + } + } + const isControllingLiftPointer = !this.multitouch || btn.downPointer === e2.pointer || btn.downPointer === void 0; + if (e2.is(`lift:${t2}`) && btn.down && isControllingLiftPointer) { + let up = function() { + const up2 = callbacks.up?.(btn); + if (up2 === false) { + btn.down = true; + btn.over = true; + console.log("\u{1F504} Button kept down by callback:", { + buttonId: btn.id || "unnamed", + reason: "up() returned false" + }); + } else { + btn.down = false; + btn.over = false; + btn.downPointer = void 0; + if (activeButtons.has(btn)) { + removeActiveButton(btn, "button up callback", netLog); + } + } + }; + const isControllingPointer = !this.multitouch || btn.downPointer === e2.pointer || btn.downPointer === void 0; + const isValidPush = isControllingPointer && btn.box.contains(e2); + if (isValidPush) { + btn.down = false; + btn.over = false; + if (activeButtons.has(btn)) { + removeActiveButton(btn, "valid push", netLog); + } + callbacks.push?.(btn); + up(); + } else if (isControllingPointer && !btn.box.contains(e2)) { + btn.down = false; + btn.over = false; + if (activeButtons.has(btn)) { + removeActiveButton(btn, "cancelled - lift outside", netLog); + } + callbacks.cancel?.(btn); + up(); + } else { + const isStuckButton = btn.down && !isControllingPointer; + if (isStuckButton) { + btn.down = false; + btn.over = false; + btn.downPointer = void 0; + removeActiveButton(btn, "force cleanup - stuck button", netLog); + callbacks.cancel?.(btn); + } else { + console.log("\u26A0\uFE0F Button down but lift ignored:", { + buttonId: btn.id || "unnamed", + timestamp: performance.now(), + pointer: e2.pointer, + downPointer: btn.downPointer, + isControllingPointer, + containsE: btn.box.contains(e2), + pensLength: pens?.length || 0, + reason: "lift event ignored - waiting for controlling pointer" + }); + } + } + } + if (e2.is && e2.is("move")) { + try { + const containsNow = btn.box.contains(e2); + if (containsNow && !btn.over && !btn.down) { + callbacks.hover?.(btn); + btn.over = true; + hoveredButtons.add(btn); + updateHoverCursor(e2); + } else if (!containsNow && btn.over && !btn.down) { + callbacks.leave?.(btn); + btn.over = false; + hoveredButtons.delete(btn); + updateHoverCursor(e2); + } + } catch (err) { + } + updateHoverCursor(e2); + } + const horizontallyWithin = btn.offScreenScrubbing && e2.x >= btn.box.x && e2.x < btn.box.x + btn.box.w; + if (e2.is(`draw:${t2}`) && !btn.over && (btn.box.contains(e2) || horizontallyWithin)) { + const anyButtonDown = Array.from(activeButtons).some((activeBtn) => activeBtn.down) || // Also check for buttons that might be down but not in activeButtons due to rollout + e2.drag && (e2.drag.x !== e2.x || e2.drag.y !== e2.y); + const isDraggingFromOtherButton = anyButtonDown && !btn.down; + const hasStickyButton = Array.from(activeButtons).some( + (activeBtn) => activeBtn.stickyScrubbing + ); + const shouldPreventRollover = btn.noRolloverActivation && isDraggingFromOtherButton || isDraggingFromOtherButton && hasStickyButton && btn.noRolloverActivation; + if (isDraggingFromOtherButton && !shouldPreventRollover && (btn.box.contains(e2) || horizontallyWithin)) { + for (const otherBtn of activeButtons) { + if (otherBtn !== btn && !otherBtn.stickyScrubbing) { + if (!this.multitouch || otherBtn.downPointer === e2.pointer || otherBtn.downPointer === void 0) { + otherBtn.down = false; + otherBtn.over = false; + otherBtn.actions?.up?.(otherBtn); + removeActiveButton(otherBtn, "rollover deactivation", netLog); + } + } + } + if (!hasStickyButton || btn.stickyScrubbing) { + btn.down = true; + btn.downPointer = e2.pointer || 0; + addActiveButton(btn, "rollover activation", netLog); + callbacks.down?.(btn); + } + } + if (!shouldPreventRollover || horizontallyWithin) { + if (callbacks.rollover) { + callbacks.rollover(btn); + } else { + callbacks.over?.(btn); + } + btn.over = true; + } + } + const containsDrag = btn.box.contains(e2.drag); + const inActiveButtons = activeButtons.has(btn); + const horizontallyWithinForOffScreen = btn.offScreenScrubbing && e2.drag && e2.drag.x >= btn.box.x && e2.drag.x < btn.box.x + btn.box.w; + const allowScrub = containsDrag || inActiveButtons && !btn.stickyScrubbing || btn.stickyScrubbing && btn.down || btn.offScreenScrubbing && btn.down && horizontallyWithinForOffScreen; + if (e2.is(`draw:${t2}`) && btn.down && allowScrub) { + const isControllingPointer = !this.multitouch || btn.downPointer === e2.pointer || btn.downPointer === void 0; + if (isControllingPointer || inActiveButtons && !btn.stickyScrubbing && btn.downPointer === e2.pointer || // Rollover scrubbing with pointer match + btn.stickyScrubbing && btn.down || btn.offScreenScrubbing && btn.down && horizontallyWithinForOffScreen) { + callbacks.scrub?.(btn); + } + } + if (e2.is(`draw:${t2}`) && btn.over && !btn.box.contains(e2) && btn.box.containsNone(pens)) { + const shouldRollout = !btn.stickyScrubbing && (!btn.offScreenScrubbing || btn.offScreenScrubbing && (e2.x < btn.box.x || e2.x >= btn.box.x + btn.box.w)); + const isControllingPointer = !this.multitouch || btn.downPointer === e2.pointer || btn.downPointer === void 0; + if (shouldRollout && isControllingPointer) { + trackRollout(btn.id || "unnamed"); + if (callbacks.rollout) { + callbacks.rollout(btn); + } else { + callbacks.out?.(btn); + } + btn.over = false; + if (activeButtons.has(btn)) { + removeActiveButton(btn, "rollout - always remove from active", netLog); + } + if (btn.down) { + btn.down = false; + btn.downPointer = void 0; + } + } + } + if (!btn.down && activeButtons.has(btn)) { + removeActiveButton(btn, "safety cleanup - button not down", netLog); + } + } + // Draws a callback if the button is not disabled. + paint(fn) { + if (!this.disabled) fn(this); + } + enableIf(flag) { + this.disabled = !flag; + } +}; +var Slider = class { + box; + button; + min = 0; + max = 1; + value = 0; + step = 0; + dragging = false; + constructor() { + let opts = {}; + if (arguments.length >= 4) { + if (typeof arguments[4] === "object") opts = arguments[4]; + this.box = new Box(arguments[0], arguments[1], arguments[2], arguments[3]); + } else { + this.box = Box.from(arguments[0]); + if (typeof arguments[1] === "object") opts = arguments[1]; + } + this.min = Number.isFinite(opts.min) ? opts.min : 0; + this.max = Number.isFinite(opts.max) ? opts.max : 1; + this.step = Number.isFinite(opts.step) ? opts.step : 0; + this.value = Number.isFinite(opts.value) ? opts.value : this.min; + this.button = new Button(this.box); + this.button.stickyScrubbing = true; + this.button.offScreenScrubbing = true; + this.button.noRolloverActivation = true; + } + get normalized() { + const span = this.max - this.min || 1; + return (this.value - this.min) / span; + } + setValue(value) { + let v2 = Math.max(this.min, Math.min(this.max, value)); + if (this.step > 0) { + const steps = Math.round((v2 - this.min) / this.step); + v2 = this.min + steps * this.step; + } + this.value = v2; + } + setNormalized(t2) { + const clamped = Math.max(0, Math.min(1, t2)); + this.setValue(this.min + clamped * (this.max - this.min)); + } + _updateFromEvent(e2) { + const t2 = (e2.x - this.box.x) / this.box.w; + this.setNormalized(t2); + } + act(e2, callbacks = {}) { + const onChange = callbacks.change; + this.button.act(e2, { + down: () => { + this.dragging = true; + this._updateFromEvent(e2); + callbacks.down?.(this); + onChange?.(this); + }, + scrub: () => { + this._updateFromEvent(e2); + onChange?.(this); + }, + up: () => { + this.dragging = false; + callbacks.up?.(this); + }, + cancel: () => { + this.dragging = false; + callbacks.cancel?.(this); + }, + over: () => callbacks.over?.(this), + out: () => callbacks.out?.(this) + }); + } + paint(draw2) { + draw2?.(this); + } +}; +var TextButton = class { + txt; + btn; + #gap = 4; + #cw = 6; + // Character width in pixels. Set from `typeface`. + #g2 = this.#gap * 2; + #h = 12 + this.#g2; + // 19; // + #offset = { x: this.#gap, y: this.#gap }; + #typeface = null; + constructor(text = "Button", pos = { x: 0, y: 0 }, typeface = TYPEFACE_UI, gap = null) { + if (gap !== null) { + this.#gap = gap; + this.#g2 = this.#gap * 2; + this.#offset = { x: this.#gap, y: this.#gap }; + } + this.#typeface = typeface; + this.#cw = typeface.blockWidth; + this.#h = typeface.blockHeight + this.#gap * 2; + this.txt = text; + this.btn = new Button(this.#computePosition(text, { ...pos })); + } + get act() { + return this.btn.act; + } + set disabled(d2) { + return this.btn.disabled = d2; + } + get disabled() { + return this.btn.disabled; + } + get down() { + return this.btn.down; + } + set down(d2) { + return this.btn.down = d2; + } + get noEdgeDetection() { + return this.btn.noEdgeDetection; + } + set noEdgeDetection(value) { + this.btn.noEdgeDetection = value; + } + get stickyScrubbing() { + return this.btn.stickyScrubbing; + } + set stickyScrubbing(value) { + this.btn.stickyScrubbing = value; + } + #measureTextWidth(text) { + const visibleText = stripColorCodes2(text); + if (this.#typeface?.getAdvance) { + let w = 0; + for (const ch of visibleText) w += this.#typeface.getAdvance(ch); + return w; + } + return visibleText.length * this.#cw; + } + get width() { + return this.#measureTextWidth(this.txt) + this.#gap * 2; + } + get height() { + return this.#h; + } + // Compute position for box. + // pos: {x, y} or { top, left } for positioning. + // pos: {bottom, right} for bottom right... + // { center: "xy", screen } for screen centering. + #computePosition(text, pos = { x: 0, y: 0 }) { + pos = { ...pos }; + let x, y; + const w = this.#measureTextWidth(text) + this.#g2; + const h = this.#h; + if (pos.screen) { + pos.screen.x = pos.screen.x || 0; + pos.screen.y = pos.screen.y || 0; + } + if (pos.center === "xy") { + return { + x: pos.screen.x + (pos.x || 0) + pos.screen.width / 2 - w / 2, + y: pos.screen.y + (pos.y || 0) + pos.screen.height / 2 - h / 2, + w, + h + }; + } + if (pos.center === "x") { + x = (pos.screen?.x || 0) + (pos.screen?.width || 0) / 2 - w / 2; + } else { + x = (pos.screen?.x || 0) + (pos.x || 0); + if (pos.right !== void 0) { + x += pos.screen.width - pos.right - w; + } else { + x += pos.left || 0; + } + } + y = (pos.screen?.y || 0) + (pos.y || 0); + if (pos.bottom !== void 0) { + y += pos.screen.height - pos.bottom - this.#h; + } else { + y += pos.top || 0; + } + return { x, y, w, h }; + } + // Update just the label text (keeps the same box when visible length matches). + replaceLabel(txt) { + this.txt = txt; + } + reposition(pos, txt) { + if (txt) this.txt = txt; + this.btn.box = Box.from(this.#computePosition(this.txt, pos)); + } + paint($, scheme = [0, 255, 255, 0], hoverScheme = [255, 0, 0, 255], disabledScheme = [64, 127, 127, 64], rolloverScheme = void 0) { + if (rolloverScheme === void 0) rolloverScheme = defaultRolloverScheme($); + let s2; + if (this.btn.disabled) { + s2 = disabledScheme; + } else if (this.btn.down && hoverScheme) { + s2 = hoverScheme; + } else if (this.btn.over && rolloverScheme) { + s2 = rolloverScheme; + } else { + s2 = scheme; + } + const fillColor = s2[0] !== void 0 ? s2[0] : [0, 0, 0]; + const outlineColor = s2[1] !== void 0 ? s2[1] : fillColor; + const textColor = s2[2] !== void 0 ? s2[2] : outlineColor; + const textAlpha = typeof s2[3] === "number" ? s2[3] : void 0; + $.ink(fillColor).box(this.btn.box, "fill"); + $.ink(outlineColor).box(this.btn.box, "outline"); + if (textAlpha !== void 0) { + $.ink(textColor).write(this.txt, p2.add(this.btn.box, this.#offset), void 0, textAlpha); + } else { + $.ink(textColor).write(this.txt, p2.add(this.btn.box, this.#offset)); + } + } +}; +var TextButtonSmall = class { + txt; + btn; + // MatrixChunky8: 4px char width, 7px char height + #cw = 4; + #ch = 7; + #padL = 2; + // Left padding + #padR = 2; + // Right padding + #padY = 2; + // Vertical padding + #offset; + constructor(text = "Button", pos = { x: 0, y: 0 }) { + this.txt = text; + this.#offset = { x: this.#padL, y: this.#padY }; + this.btn = new Button(this.#computePosition(text, { ...pos })); + } + get act() { + return this.btn.act; + } + set disabled(d2) { + return this.btn.disabled = d2; + } + get disabled() { + return this.btn.disabled; + } + get down() { + return this.btn.down; + } + set down(d2) { + return this.btn.down = d2; + } + get stickyScrubbing() { + return this.btn.stickyScrubbing; + } + set stickyScrubbing(value) { + this.btn.stickyScrubbing = value; + } + get width() { + const visibleText = stripColorCodes2(this.txt); + return visibleText.length * this.#cw + this.#padL + this.#padR; + } + get height() { + return this.#ch + this.#padY * 2; + } + #computePosition(text, pos = { x: 0, y: 0 }) { + const visibleText = stripColorCodes2(text); + const w = visibleText.length * this.#cw + this.#padL + this.#padR; + const h = this.#ch + this.#padY * 2; + let x = pos.x || 0; + let y = pos.y || 0; + if (pos.screen) { + const sx = pos.screen.x || 0; + const sy = pos.screen.y || 0; + const sw = pos.screen.width || 0; + const sh = pos.screen.height || 0; + if (pos.center === "xy") { + return { x: sx + sw / 2 - w / 2, y: sy + sh / 2 - h / 2, w, h }; + } + if (pos.center === "x") { + x = sx + sw / 2 - w / 2; + } + if (pos.center !== "x") { + if (pos.right !== void 0) { + x = sx + sw - pos.right - w; + } else { + x = sx + (pos.left || pos.x || 0); + } + } + if (pos.bottom !== void 0) { + y = sy + sh - pos.bottom - h; + } else { + y = sy + (pos.top || pos.y || 0); + } + } + return { x, y, w, h }; + } + reposition(pos, txt) { + if (txt) this.txt = txt; + this.btn.box = Box.from(this.#computePosition(this.txt, pos)); + } + paint($, scheme = [[0, 64, 0], [0, 140, 0], 255, [0, 64, 0]], hoverScheme = [[0, 100, 0], [0, 180, 0], 255, [0, 100, 0]], disabledScheme = [[32, 32, 32], [64, 64, 64], 80, [32, 32, 32]], rolloverScheme = void 0) { + if (rolloverScheme === void 0) rolloverScheme = defaultRolloverScheme($, true); + let s2; + if (this.btn.disabled) { + s2 = disabledScheme; + } else if (this.btn.down) { + s2 = hoverScheme; + } else if (this.btn.over && rolloverScheme) { + s2 = rolloverScheme; + } else { + s2 = scheme; + } + $.ink(s2[0]).box(this.btn.box, "fill").ink(s2[1]).box(this.btn.box, "outline").ink(s2[2]).write(this.txt, p2.add(this.btn.box, this.#offset), void 0, void 0, false, "MatrixChunky8"); + } +}; +function setTypeface(tf2) { + TYPEFACE_UI = tf2; +} + +// public/aesthetic.computer/lib/platform.mjs +var platform_exports = {}; +__export(platform_exports, { + Aesthetic: () => Aesthetic, + AestheticExtension: () => AestheticExtension, + AestheticIOSApp: () => AestheticIOSApp, + Android: () => Android, + Desktop: () => Desktop, + Instagram: () => Instagram, + MacOS: () => MacOS, + MetaBrowser: () => MetaBrowser, + Safari: () => Safari, + TikTok: () => TikTok, + iOS: () => iOS, + isAestheticIOSAppUserAgent: () => isAestheticIOSAppUserAgent +}); +var nav; +try { + nav = navigator; +} catch (e2) { + nav = {}; +} +var iOS = /(iPad|iPhone|iPod)/g.test(nav.userAgent); +var Safari = /apple/i.test(nav.vendor); +var Android = /(Android)/g.test(nav.userAgent); +var MetaBrowser = /(OculusBrowser)/g.test(nav.userAgent); +var Desktop = !iOS && !Android && !MetaBrowser; +var MacOS = /(Macintosh|Mac OS X)/g.test(nav.userAgent) && (nav.maxTouchPoints || 0) <= 1; +var Instagram = /(Instagram)/g.test(nav.userAgent); +var TikTok = /BytedanceWebview/i.test(nav.userAgent); +var Aesthetic = /Aesthetic/i.test(nav.userAgent); +var AestheticExtension = /AestheticExtension/i.test(nav.userAgent); +function isAestheticIOSAppUserAgent(userAgent) { + return /^Aesthetic$/i.test(String(userAgent || "").trim()); +} +var AestheticIOSApp = isAestheticIOSAppUserAgent(nav.userAgent); + +// public/aesthetic.computer/lib/shop.mjs +var signed = [ + // 📚 Books on https://shop.aesthetic.computer + "25.4.8.21.19", + "25.4.8.21.17", + "25.4.8.21.11", + "25.4.8.21.08", + "25.4.8.21.07", + "25.4.8.21.0", + "25.4.8.20.47", + "25.4.8.21.13", + "25.11.17.19.03", + // 🎵 Music + "25.11.3.14.17", + // 🖍️ Pictures + "25.4.13.17.47", + "25.4.13.19.06", + "25.4.13.18.18", + "25.4.13.19.24", + "25.4.13.18.54", + // 🚲 Bikes + "25.12.4.10.09", + "25.12.4.10.08", + // 🛠️ Tools + "25.12.4.11.21", + "25.12.4.11.22", + "25.12.4.11.23", + "25.12.4.11.24", + "25.12.4.11.25", + // 💻 Laptops + "26.4.17.12.51", + "blank" + // Alias for the AC Native Laptop — "shop blank" in the prompt. +]; + +// public/aesthetic.computer/lib/kidlisp.mjs +var kidlisp_exports = {}; +__export(kidlisp_exports, { + KIDLISP_COLORS: () => KIDLISP_COLORS, + KIDLISP_FUNCTIONS: () => KIDLISP_FUNCTIONS, + KIDLISP_VOCABULARY: () => KIDLISP_VOCABULARY, + KidLisp: () => KidLisp, + clearAllCaches: () => clearAllCaches, + clearExecutionTrace: () => clearExecutionTrace, + decodeKidlispFromUrl: () => decodeKidlispFromUrl, + disableKidlispTrace: () => disableKidlispTrace, + enableKidlispConsole: () => enableKidlispConsole, + enableKidlispTrace: () => enableKidlispTrace, + encodeKidlispForUrl: () => encodeKidlispForUrl, + ensureGlobalInstance: () => ensureGlobalInstance, + evaluate: () => evaluate, + fetchCachedCode: () => fetchCachedCode, + fetchKidlispMetadata: () => fetchKidlispMetadata, + fetchMultipleCachedCodes: () => fetchMultipleCachedCodes, + getCachedCode: () => getCachedCode, + getCachedCodeMultiLevel: () => getCachedCodeMultiLevel, + getExecutionTrace: () => getExecutionTrace, + getGlobalInstance: () => getGlobalInstance, + getSyntaxHighlightingColors: () => getSyntaxHighlightingColors, + globalCodeCache: () => globalCodeCache, + initPersistentCache: () => initPersistentCache, + isActualKidLisp: () => isActualKidLisp, + isChaoticSource: () => isChaoticSource, + isKidlispConsoleEnabled: () => isKidlispConsoleEnabled, + isKidlispSource: () => isKidlispSource, + isKidlispTraceEnabled: () => isKidlispTraceEnabled, + isPromptInKidlispMode: () => isPromptInKidlispMode, + isValidRGBString: () => isValidRGBString, + module: () => module, + parse: () => parse, + postExecutionTrace: () => postExecutionTrace, + postKidlispConsoleImage: () => postKidlispConsoleImage, + saveCodeToAllCaches: () => saveCodeToAllCaches, + setCachedCode: () => setCachedCode, + slideUpdate: () => slideUpdate, + tokenize: () => tokenize, + updateKidLispAudio: () => updateKidLispAudio +}); + +// public/aesthetic.computer/lib/sound/wave-timbre.mjs +var WAVE_TIMBRE = { + sine: { brightness: 2.7183, bite: 0.869, riseMs: 0.667, asyncMs: 0 }, + composite: { brightness: 2.7344, bite: 0.6847, riseMs: 2, asyncMs: 0.553 }, + triangle: { brightness: 2.8012, bite: 0.869, riseMs: 0.667, asyncMs: 0 }, + square: { brightness: 4.2905, bite: 1, riseMs: 0, asyncMs: 0 }, + whistle: { brightness: 4.58, bite: 0, riseMs: 45.833, asyncMs: 13.834 }, + sawtooth: { brightness: 5.2978, bite: 0.7105, riseMs: 2, asyncMs: 0.289 }, + harp: { brightness: 7.7683, bite: 0.8995, riseMs: 0.25, asyncMs: 0.264 } +}; + +// public/aesthetic.computer/lib/melody-parser.mjs +var MELODY_WAVE_TYPES = [ + "sine", + "triangle", + "sawtooth", + "square", + "harp", + "whistle", + "noise-white", + // Parser modes rather than oscillators — sample playback, speech, and the + // generator/bubble hooks. + "sample", + "stample", + "say", + "custom", + "bubble" +]; +var MELODY_WAVE_ALIASES = { + saw: "sawtooth", + noise: "noise-white", + pluck: "harp", + guitar: "harp", + string: "harp", + flute: "whistle", + ocarina: "whistle" +}; +function normalizeWaveType(name) { + const canonical = MELODY_WAVE_ALIASES[name] || name; + return MELODY_WAVE_TYPES.includes(canonical) ? canonical : null; +} +function parseMelody(melodyString, startingOctave = 4) { + const notes = []; + let i2 = 0; + let currentOctave = startingOctave; + let baseOctave = startingOctave; + let relativeOffset = 0; + let currentWaveType = "sine"; + let currentVolume = 0.8; + let currentToneShift = 0; + let globalDurationModifier = null; + let isStruck = false; + let currentStampleCode = null; + let currentSayText = null; + function applyStickyDurationModifier(baseDuration, hasLocalModifier) { + if (hasLocalModifier) { + return baseDuration; + } + if (!globalDurationModifier) { + return baseDuration; + } + if (globalDurationModifier.startsWith(".")) { + const dots = globalDurationModifier.length; + return 2 / Math.pow(2, dots); + } else if (globalDurationModifier.startsWith(",")) { + const commas = globalDurationModifier.length; + return 2 * Math.pow(2, commas); + } + return baseDuration; + } + while (i2 < melodyString.length) { + let char = melodyString[i2]; + if (char === '"') { + let quotedText = ""; + let quoteStartIndex = i2; + i2++; + while (i2 < melodyString.length && melodyString[i2] !== '"') { + quotedText += melodyString[i2]; + i2++; + } + if (i2 < melodyString.length && melodyString[i2] === '"') { + const speechNote = { + note: "speech", + text: quotedText, + octave: currentOctave, + duration: 2, + // Default duration for speech + waveType: currentWaveType, + volume: currentVolume, + struck: isStruck, + toneShift: currentToneShift, + stampleCode: currentStampleCode, + sayText: currentSayText, + isSpeech: true + }; + notes.push(speechNote); + i2++; + continue; + } else { + i2 = quoteStartIndex; + } + } + if (char === "{") { + const endBrace = melodyString.indexOf("}", i2); + if (endBrace !== -1) { + const content = melodyString.substring(i2 + 1, endBrace); + const contentLower = content.toLowerCase(); + const quoteChar = content[0]; + const isQuoted = (quoteChar === '"' || quoteChar === "'" || quoteChar === "`") && content.includes(quoteChar, 1); + if (isQuoted) { + const closingQuote = content.indexOf(quoteChar, 1); + const speechText = content.slice(1, closingQuote); + const afterQuote = content.slice(closingQuote + 1); + if (afterQuote.startsWith(":")) { + const volume = parseFloat(afterQuote.slice(1)); + if (!isNaN(volume) && volume >= 0 && volume <= 1) { + currentVolume = volume; + } + } + currentWaveType = "say"; + currentSayText = speechText; + console.log(`\u{1F5E3}\uFE0F Parsed {say}: "${speechText}" - following notes will play speech at note pitch`); + } else if (content.startsWith("#")) { + const colonIndex = content.indexOf(":"); + let paintingCode, volumeStr; + if (colonIndex !== -1) { + paintingCode = content.slice(1, colonIndex); + volumeStr = content.slice(colonIndex + 1); + const volume = parseFloat(volumeStr); + if (!isNaN(volume) && volume >= 0 && volume <= 1) { + currentVolume = volume; + } + } else { + paintingCode = content.slice(1); + } + currentWaveType = "stample"; + currentStampleCode = paintingCode; + currentSayText = null; + console.log(`\u{1F3B5} Parsed painting code stample: #${paintingCode}${volumeStr ? `:${volumeStr}` : ""}`); + } else if (contentLower.endsWith("hz&") || contentLower.endsWith("hz")) { + const isCumulative = contentLower.endsWith("hz&"); + const hzPart = isCumulative ? contentLower.slice(0, -3) : contentLower.slice(0, -2); + const hzValue = parseFloat(hzPart); + if (!isNaN(hzValue)) { + if (isCumulative) { + currentToneShift = { value: hzValue, cumulative: true, step: hzValue }; + console.log(`\u{1F3B5} Parsed cumulative Hz shift: ${hzValue}Hz&`); + } else { + currentToneShift = hzValue; + console.log(`\u{1F3B5} Parsed Hz shift: ${hzValue}Hz`); + } + } else { + console.log(`\u{1F3B5} PARSER ERROR: Failed to parse Hz value: {${content}}`); + } + } else if (contentLower.includes(":")) { + const [waveType, volumeStr] = contentLower.split(":"); + const normalizedWaveType = normalizeWaveType(waveType); + if (normalizedWaveType) { + currentWaveType = normalizedWaveType; + currentStampleCode = null; + if (normalizedWaveType !== "say") currentSayText = null; + } + const volume = parseFloat(volumeStr); + if (!isNaN(volume) && volume >= 0 && volume <= 1) { + currentVolume = volume; + } + } else if (/^\d*\.?\d+$/.test(contentLower)) { + const volume = parseFloat(contentLower); + if (!isNaN(volume) && volume >= 0 && volume <= 1) { + currentVolume = volume; + } + } else if (normalizeWaveType(contentLower)) { + currentWaveType = normalizeWaveType(contentLower); + if (currentWaveType !== "stample" && currentWaveType !== "sample") { + currentStampleCode = null; + } + if (currentWaveType !== "say") { + currentSayText = null; + } + } + i2 = endBrace + 1; + continue; + } + i2++; + continue; + } + if (char === "^") { + isStruck = !isStruck; + i2++; + continue; + } + if (/[0-9]/.test(char)) { + const octave = parseInt(char); + currentOctave = octave; + baseOctave = octave; + relativeOffset = 0; + i2++; + if (i2 < melodyString.length) { + const noteChar = melodyString[i2].toLowerCase(); + if (/[a-g]/.test(noteChar)) { + let note2 = noteChar; + i2++; + if (i2 < melodyString.length) { + const nextChar = melodyString[i2]; + if (nextChar === "s" || nextChar === "#") { + note2 += "s"; + i2++; + } else if (nextChar === "b" && i2 + 1 < melodyString.length && !/[a-g]/i.test(melodyString[i2 + 1])) { + note2 += "b"; + i2++; + } + } + let sonicExtension = 0; + if (i2 < melodyString.length && melodyString[i2] === "'") { + while (i2 < melodyString.length && melodyString[i2] === "'") { + sonicExtension++; + i2++; + } + } + let duration = 2; + let sonicDuration = duration; + let hasLocalModifier = false; + if (i2 < melodyString.length) { + const nextChar = melodyString[i2]; + if (nextChar === ".") { + hasLocalModifier = true; + let dots = 0; + while (i2 < melodyString.length && melodyString[i2] === ".") { + dots++; + i2++; + } + duration = 2 / Math.pow(2, dots); + globalDurationModifier = ".".repeat(dots); + } else if (nextChar === ",") { + hasLocalModifier = true; + let commas = 0; + while (i2 < melodyString.length && melodyString[i2] === ",") { + commas++; + i2++; + } + duration = 2 * Math.pow(2, commas); + globalDurationModifier = ",".repeat(commas); + } + } + if (!hasLocalModifier) { + duration = applyStickyDurationModifier(duration, false); + } + if (sonicExtension > 0) { + sonicDuration = duration * Math.pow(2, sonicExtension); + } else { + sonicDuration = duration; + } + const noteObj = { + note: note2, + octave: currentOctave, + duration, + waveType: currentWaveType, + volume: currentVolume, + struck: isStruck, + toneShift: currentToneShift, + stampleCode: currentStampleCode, + sayText: currentSayText + // Speech text for {say} waveform type + }; + if (sonicDuration !== duration) { + noteObj.sonicDuration = sonicDuration; + } + notes.push(noteObj); + } else { + } + } + } else if (char === "[" || char === "]") { + const swingType = char; + let swingCount = 0; + while (i2 < melodyString.length && melodyString[i2] === swingType) { + swingCount++; + i2++; + } + if (i2 < melodyString.length) { + const noteChar = melodyString[i2].toLowerCase(); + if (/[a-g]/.test(noteChar)) { + let note2 = noteChar; + i2++; + if (i2 < melodyString.length) { + const nextChar = melodyString[i2]; + if (nextChar === "#") { + note2 += "s"; + i2++; + } else if (nextChar === "b" && i2 + 1 < melodyString.length && !/[a-g]/i.test(melodyString[i2 + 1])) { + note2 += "b"; + i2++; + } + } + let sonicExtension = 0; + if (i2 < melodyString.length && melodyString[i2] === "'") { + while (i2 < melodyString.length && melodyString[i2] === "'") { + sonicExtension++; + i2++; + } + } + let octave = currentOctave; + let duration = 2; + let sonicDuration = duration; + let swing = swingType === "[" ? "early" : "late"; + let swingAmount = swingCount; + let hasLocalModifier = false; + if (i2 < melodyString.length) { + const nextChar = melodyString[i2]; + if (nextChar === ".") { + hasLocalModifier = true; + let dots = 0; + while (i2 < melodyString.length && melodyString[i2] === ".") { + dots++; + i2++; + } + duration = 2 / Math.pow(2, dots); + } else if (nextChar === ",") { + hasLocalModifier = true; + let commas = 0; + while (i2 < melodyString.length && melodyString[i2] === ",") { + commas++; + i2++; + } + duration = 2 * Math.pow(2, commas); + } + } + if (!hasLocalModifier) { + duration = applyStickyDurationModifier(duration, false); + } + if (sonicExtension > 0) { + sonicDuration = duration * Math.pow(2, sonicExtension); + } else { + sonicDuration = duration; + } + const noteObj = { + note: note2, + octave, + duration, + swing, + swingAmount, + waveType: currentWaveType, + volume: currentVolume, + struck: isStruck, + toneShift: currentToneShift, + stampleCode: currentStampleCode, + sayText: currentSayText + }; + if (sonicDuration !== duration) { + noteObj.sonicDuration = sonicDuration; + } + notes.push(noteObj); + } + } + } else if (/[a-g+-]/.test(char.toLowerCase())) { + let relativeModifier = ""; + if (char === "+" || char === "-") { + relativeModifier = char; + i2++; + while (i2 < melodyString.length && melodyString[i2] === char) { + relativeModifier += char; + i2++; + } + if (i2 >= melodyString.length || !/[a-g]/.test(melodyString[i2].toLowerCase())) { + if (char === "-") { + let commas = relativeModifier.length; + let duration2 = 2 * Math.pow(2, commas); + notes.push({ note: "rest", octave: currentOctave, duration: duration2, waveType: currentWaveType, volume: currentVolume, struck: isStruck, toneShift: currentToneShift, stampleCode: currentStampleCode, sayText: currentSayText }); + continue; + } else { + continue; + } + } + char = melodyString[i2]; + } + let note2 = char.toLowerCase(); + i2++; + if (i2 < melodyString.length) { + const nextChar = melodyString[i2]; + if (nextChar === "#") { + note2 += "s"; + i2++; + } else if (nextChar === "b" && i2 + 1 < melodyString.length && !/[a-g]/i.test(melodyString[i2 + 1])) { + note2 += "b"; + i2++; + } + } + let sonicExtension = 0; + if (i2 < melodyString.length && melodyString[i2] === "'") { + while (i2 < melodyString.length && melodyString[i2] === "'") { + sonicExtension++; + i2++; + } + } + let octave; + if (relativeModifier) { + let modifierOffset = 0; + if (relativeModifier.startsWith("+")) { + modifierOffset = relativeModifier.length; + relativeOffset += modifierOffset; + } else if (relativeModifier.startsWith("-")) { + modifierOffset = -relativeModifier.length; + relativeOffset += modifierOffset; + } + octave = baseOctave + relativeOffset; + currentOctave = octave; + } else { + octave = currentOctave; + } + let duration = 2; + let sonicDuration = duration; + let hasLocalModifier = false; + if (i2 < melodyString.length) { + const nextChar = melodyString[i2]; + if (nextChar === ".") { + hasLocalModifier = true; + let dots = 0; + while (i2 < melodyString.length && melodyString[i2] === ".") { + dots++; + i2++; + } + duration = 2 / Math.pow(2, dots); + globalDurationModifier = ".".repeat(dots); + } else if (nextChar === ",") { + hasLocalModifier = true; + let commas = 0; + while (i2 < melodyString.length && melodyString[i2] === ",") { + commas++; + i2++; + } + duration = 2 * Math.pow(2, commas); + globalDurationModifier = ",".repeat(commas); + } + } + if (!hasLocalModifier) { + duration = applyStickyDurationModifier(duration, false); + } + if (sonicExtension > 0) { + sonicDuration = duration * Math.pow(2, sonicExtension); + } else { + sonicDuration = duration; + } + const noteObj = { + note: note2, + octave, + duration, + waveType: currentWaveType, + volume: currentVolume, + struck: isStruck, + toneShift: currentToneShift, + stampleCode: currentStampleCode, + sayText: currentSayText + }; + if (sonicDuration !== duration) { + noteObj.sonicDuration = sonicDuration; + } + notes.push(noteObj); + } else if (char === "_") { + let duration = 2; + let hasLocalModifier = false; + i2++; + if (i2 < melodyString.length) { + const nextChar = melodyString[i2]; + if (nextChar === ".") { + hasLocalModifier = true; + let dots = 0; + while (i2 < melodyString.length && melodyString[i2] === ".") { + dots++; + i2++; + } + duration = 2 / Math.pow(2, dots); + globalDurationModifier = ".".repeat(dots); + } else if (nextChar === ",") { + hasLocalModifier = true; + let commas = 0; + while (i2 < melodyString.length && melodyString[i2] === ",") { + commas++; + i2++; + } + duration = 2 * Math.pow(2, commas); + globalDurationModifier = ",".repeat(commas); + } + } + if (!hasLocalModifier) { + duration = applyStickyDurationModifier(duration, false); + } + notes.push({ note: "rest", octave: currentOctave, duration, waveType: currentWaveType, volume: currentVolume, struck: isStruck, toneShift: currentToneShift, stampleCode: currentStampleCode, sayText: currentSayText }); + } else if (char === " ") { + i2++; + } else if (char === "-") { + let dashes = 0; + let tempI = i2; + while (tempI < melodyString.length && melodyString[tempI] === "-") { + dashes++; + tempI++; + } + let duration = 2 * Math.pow(2, dashes); + i2 = tempI; + notes.push({ note: "rest", octave: currentOctave, duration, waveType: currentWaveType, volume: currentVolume, struck: isStruck, toneShift: currentToneShift, stampleCode: currentStampleCode, sayText: currentSayText }); + } else if (char === "|") { + i2++; + } else if (char === "~") { + i2++; + } else { + i2++; + } + } + return notes; +} +function noteToTone(note2, octave = 4) { + const noteMap = { + "c": "C", + "cs": "C#", + "c#": "C#", + "db": "C#", + "d": "D", + "ds": "D#", + "d#": "D#", + "eb": "D#", + "e": "E", + "f": "F", + "fs": "F#", + "f#": "F#", + "gb": "F#", + "g": "G", + "gs": "G#", + "g#": "G#", + "ab": "G#", + "a": "A", + "as": "A#", + "a#": "A#", + "bb": "A#", + "b": "B" + }; + const normalizedNote = note2.toLowerCase(); + const baseNote = noteMap[normalizedNote] || "C"; + const finalOctave = octave !== null ? octave : 4; + return `${finalOctave}${baseNote}`; +} +function parseSimultaneousMelody(melodyString, startingOctave = 4) { + let globalWaveType = "sine"; + let processedMelodyString = melodyString.trim(); + const globalWaveTypePattern = /^{(sine|sawtooth|saw|square|triangle|noise-white|sample|stample|custom|bubble)}/; + const waveMatch = globalWaveTypePattern.exec(processedMelodyString); + if (waveMatch) { + globalWaveType = waveMatch[1].toLowerCase(); + processedMelodyString = processedMelodyString.substring(waveMatch[0].length).trim(); + } + const groups = []; + let currentGroup = ""; + let braceDepth = 0; + for (let i2 = 0; i2 < processedMelodyString.length; i2++) { + const char = processedMelodyString[i2]; + if (char === "{") { + braceDepth++; + currentGroup += char; + } else if (char === "}") { + braceDepth--; + currentGroup += char; + } else if (/\s/.test(char) && braceDepth === 0) { + if (currentGroup.length > 0) { + groups.push(currentGroup); + currentGroup = ""; + } + } else { + currentGroup += char; + } + } + if (currentGroup.length > 0) { + groups.push(currentGroup); + } + console.log("\u{1F3B5} MELODY PARSER: Splitting melody into groups:", { + original: processedMelodyString, + groups, + groupCount: groups.length + }); + if (groups.length <= 1) { + const singleGroup = groups[0] || ""; + const asteriskIndices = []; + for (let i2 = 0; i2 < singleGroup.length; i2++) { + if (singleGroup[i2] === "*") { + asteriskIndices.push(i2); + } + } + const hasMutation = asteriskIndices.length > 0; + let contentForParsing = singleGroup; + let mutationTriggerPositions = []; + if (hasMutation) { + contentForParsing = singleGroup.replace(/\*/g, ""); + mutationTriggerPositions = asteriskIndices.map((asteriskIndex) => { + let noteCount = 0; + for (let i2 = 0; i2 < asteriskIndex; i2++) { + const char = singleGroup[i2]; + if (char === "{") { + while (i2 < singleGroup.length && singleGroup[i2] !== "}") { + i2++; + } + if (i2 < singleGroup.length && singleGroup[i2] === "}") { + i2++; + } + i2--; + } else if (/[a-g_-]/.test(char) || char.match(/[0-9]/) && i2 + 1 < singleGroup.length && /[a-g]/.test(singleGroup[i2 + 1])) { + noteCount++; + } + } + return noteCount; + }); + } + const hasLocalWaveType = /{(sine|sawtooth|saw|square|triangle|noise-white|sample|stample|custom|bubble)}/.test(contentForParsing); + const contentWithGlobalWave = hasLocalWaveType ? contentForParsing : globalWaveType !== "sine" ? `{${globalWaveType}} ${contentForParsing}` : contentForParsing; + const parsedTrack = parseMelody(contentWithGlobalWave, startingOctave); + if (hasMutation) { + parsedTrack.hasMutation = true; + parsedTrack.originalContent = contentForParsing; + parsedTrack.mutationCount = 0; + parsedTrack.mutationTriggerPositions = mutationTriggerPositions; + parsedTrack.currentMutationZone = 0; + parsedTrack.mutationType = "within-group"; + if (mutationTriggerPositions.length === 1) { + parsedTrack.mutationTriggerPosition = mutationTriggerPositions[0]; + } + } + return { + tracks: [parsedTrack], + isSingleTrack: true, + type: "single" + }; + } + const parallelTracks = groups.map((groupContent, index) => { + const isDisabled = groupContent.startsWith("x"); + let processingContent = isDisabled ? groupContent.slice(1) : groupContent; + let contentForParsing = processingContent; + let mutationTriggerPositions = []; + let hasMutation = false; + const asteriskIndices = []; + for (let i2 = 0; i2 < processingContent.length; i2++) { + if (processingContent[i2] === "*") { + asteriskIndices.push(i2); + } + } + if (asteriskIndices.length > 0) { + hasMutation = true; + contentForParsing = processingContent.replace(/\*/g, ""); + mutationTriggerPositions = asteriskIndices.map((asteriskIndex) => { + let noteCount = 0; + for (let i2 = 0; i2 < asteriskIndex; i2++) { + const char = processingContent[i2]; + if (char === "{") { + while (i2 < processingContent.length && processingContent[i2] !== "}") { + i2++; + } + if (i2 < processingContent.length && processingContent[i2] === "}") { + i2++; + } + i2--; + } else if (/[a-g_-]/.test(char) || char.match(/[0-9]/) && i2 + 1 < processingContent.length && /[a-g]/.test(processingContent[i2 + 1])) { + noteCount++; + } + } + return noteCount; + }); + } + const hasLocalWaveType = /{(sine|sawtooth|saw|square|triangle|noise-white|sample|stample|custom|bubble)}/.test(contentForParsing); + const contentWithGlobalWave = hasLocalWaveType ? contentForParsing : `{${globalWaveType}} ${contentForParsing}`; + const parsedTrack = parseMelody(contentWithGlobalWave, startingOctave); + parsedTrack.isDisabled = isDisabled; + parsedTrack.hasMutation = hasMutation; + if (parsedTrack.hasMutation) { + parsedTrack.originalContent = contentForParsing; + parsedTrack.mutationCount = 0; + if (mutationTriggerPositions.length > 0) { + parsedTrack.mutationTriggerPositions = mutationTriggerPositions; + parsedTrack.currentMutationZone = 0; + parsedTrack.mutationType = "within-group"; + if (mutationTriggerPositions.length === 1) { + parsedTrack.mutationTriggerPosition = mutationTriggerPositions[0]; + } + } + } + return parsedTrack; + }); + const enabledTracks = parallelTracks.filter((track) => !track.isDisabled); + return { + tracks: enabledTracks, + isSingleTrack: false, + type: "parallel", + trackCount: enabledTracks.length, + maxLength: Math.max(...enabledTracks.map((track) => track.length)) + }; +} +function parseSequentialMelody(melodyString, startingOctave = 4) { + let hasSequenceSeparator = false; + let braceDepth = 0; + for (let i2 = 0; i2 < melodyString.length; i2++) { + const char = melodyString[i2]; + if (char === "{") braceDepth++; + else if (char === "}") braceDepth--; + else if (char === ">" && braceDepth === 0) { + hasSequenceSeparator = true; + break; + } + } + if (!hasSequenceSeparator) { + return parseSimultaneousMelody(melodyString, startingOctave); + } + const sequencePattern = /(\d*)>/g; + const parts = melodyString.split(sequencePattern); + const sequences = []; + let currentLoopCount = 1; + for (let i2 = 0; i2 < parts.length; i2++) { + const part = parts[i2]; + if (!part || part.trim().length === 0) continue; + if (/^\d+$/.test(part)) { + currentLoopCount = parseInt(part, 10) || 1; + continue; + } + const segmentContent = part.trim(); + if (segmentContent.length === 0) continue; + const parsedSegment = parseSimultaneousMelody(segmentContent, startingOctave); + let maxDurationBeats = 0; + const tracks = parsedSegment.tracks || [parsedSegment.notes]; + tracks.forEach((track) => { + if (track && track.length > 0) { + const trackDuration = track.reduce((sum, note2) => sum + (note2.duration || 2), 0); + maxDurationBeats = Math.max(maxDurationBeats, trackDuration); + } + }); + sequences.push({ + ...parsedSegment, + loopCount: currentLoopCount, + currentLoop: 0, + durationBeats: maxDurationBeats, + originalContent: segmentContent + }); + currentLoopCount = 1; + } + if (sequences.length <= 1) { + if (sequences.length === 1) { + return sequences[0]; + } + return parseSimultaneousMelody(melodyString, startingOctave); + } + return { + type: "sequential", + sequences, + currentSequence: 0, + totalSequences: sequences.length + }; +} +function buildSequenceState(seqParsed) { + if (!seqParsed) return null; + if (seqParsed.type === "parallel") { + return { + type: "parallel", + tracks: seqParsed.tracks, + trackStates: seqParsed.tracks.map((track, i2) => ({ + trackIndex: i2, + track, + noteIndex: 0, + nextNoteTargetTime: 0, + measurePosition: 0 + })) + }; + } + const notes = seqParsed.tracks ? seqParsed.tracks[0] : seqParsed.notes || []; + return { type: "single", notes, index: 0, nextNoteTargetTime: 0, measurePosition: 0 }; +} +function sequenceDurationBeats(seqParsed) { + if (!seqParsed) return 0; + const tracks = seqParsed.type === "parallel" ? seqParsed.tracks : [seqParsed.tracks ? seqParsed.tracks[0] : seqParsed.notes || []]; + let maxBeats = 0; + for (const tr of tracks) { + let b2 = 0; + for (const n2 of tr || []) b2 += n2.duration || 1; + if (b2 > maxBeats) maxBeats = b2; + } + return maxBeats; +} +function buildMelodyState(parsed, { baseTempo = 500 } = {}) { + if (!parsed) return null; + if (parsed.type === "sequential") { + return { + type: "sequential", + sequences: parsed.sequences, + currentSequence: 0, + currentSequenceState: buildSequenceState(parsed.sequences[0]), + baseTempo, + isFallback: false + }; + } + if (parsed.type === "parallel") { + return { + type: "parallel", + tracks: parsed.tracks, + trackStates: parsed.tracks.map((track, i2) => ({ + trackIndex: i2, + track, + noteIndex: 0, + nextNoteTargetTime: 0, + measurePosition: 0 + })), + baseTempo, + isFallback: false + }; + } + const notes = parsed.tracks ? parsed.tracks[0] : parsed.notes || []; + return { + type: "single", + notes, + index: 0, + nextNoteTargetTime: 0, + measurePosition: 0, + baseTempo, + isFallback: !!parsed.isFallback + }; +} +var P_CENTER_FRACTION = 0.6; +var P_CENTER_EPSILON_MS = 5e-3; +function perceivedOnsetLagMs(waveType) { + const t2 = WAVE_TIMBRE[waveType]; + return t2 ? t2.riseMs * P_CENTER_FRACTION : 0; +} +function pCenterShiftsMs(notes) { + const track = Array.isArray(notes) ? notes : notes?.notes || notes?.tracks?.[0] || []; + if (!track.length) return []; + const lags = track.map((n2) => perceivedOnsetLagMs(n2?.waveType)); + const sounding = track.map((n2, i2) => n2 && n2.note && n2.note !== "rest" && n2.note !== "_" ? lags[i2] : null).filter((v2) => v2 !== null); + if (!sounding.length) return track.map(() => 0); + const mean = sounding.reduce((a2, b2) => a2 + b2, 0) / sounding.length; + return lags.map((lag) => { + const shift = -(lag - mean); + return Math.abs(shift) < P_CENTER_EPSILON_MS ? 0 : shift; + }); +} +function applyPCenterShifts(starts, notes) { + const shifts = pCenterShiftsMs(notes); + if (shifts.length !== starts.length) return starts.slice(); + const out = new Array(starts.length); + let floorMs = 0; + for (let i2 = 0; i2 < starts.length; i2 += 1) { + out[i2] = Math.max(floorMs, starts[i2] + (shifts[i2] || 0)); + floorMs = out[i2]; + } + return out; +} + +// public/aesthetic.computer/lib/note-colors.mjs +var NOTE_COLOR_MAP_BASE = { + c: [255, 50, 50], + // Bright red + d: [255, 160, 0], + // Vivid orange + e: [255, 230, 0], + // Bright yellow + f: [50, 200, 50], + // Vivid green + g: [50, 120, 255], + // Bright blue + a: [130, 50, 200], + // Vivid purple + b: [180, 80, 255] + // Bright violet +}; +var NOTE_COLOR_BLACK = [0, 0, 0]; +var NOTE_COLOR_MAP = { + ...NOTE_COLOR_MAP_BASE, + // Sharps/flats are all black + "c#": NOTE_COLOR_BLACK, + cs: NOTE_COLOR_BLACK, + db: NOTE_COLOR_BLACK, + "d#": NOTE_COLOR_BLACK, + ds: NOTE_COLOR_BLACK, + eb: NOTE_COLOR_BLACK, + "f#": NOTE_COLOR_BLACK, + fs: NOTE_COLOR_BLACK, + gb: NOTE_COLOR_BLACK, + "g#": NOTE_COLOR_BLACK, + gs: NOTE_COLOR_BLACK, + ab: NOTE_COLOR_BLACK, + "a#": NOTE_COLOR_BLACK, + as: NOTE_COLOR_BLACK, + bb: NOTE_COLOR_BLACK +}; +function normalizeNoteName(noteName) { + if (!noteName) return null; + if (noteName === "rest") return null; + if (noteName === "speech") return "speech"; + const clean = noteName.toLowerCase().replace(/[0-9]/g, ""); + return clean; +} +function getNoteColor(noteName) { + if (!noteName || noteName === "rest") return [102, 102, 102]; + if (noteName === "speech") return [255, 200, 100]; + const cleanNote = normalizeNoteName(noteName); + return NOTE_COLOR_MAP[cleanNote] || [255, 255, 255]; +} + +// public/aesthetic.computer/lib/melody-highlighter.mjs +var _now = () => typeof performance !== "undefined" ? performance.now() : Date.now(); +function hsvToRgb(h, s2, v2) { + const c4 = v2 * s2; + const x = c4 * (1 - Math.abs(h / 60 % 2 - 1)); + const m = v2 - c4; + let r2, g, b2; + if (h >= 0 && h < 60) { + r2 = c4; + g = x; + b2 = 0; + } else if (h >= 60 && h < 120) { + r2 = x; + g = c4; + b2 = 0; + } else if (h >= 120 && h < 180) { + r2 = 0; + g = c4; + b2 = x; + } else if (h >= 180 && h < 240) { + r2 = 0; + g = x; + b2 = c4; + } else if (h >= 240 && h < 300) { + r2 = x; + g = 0; + b2 = c4; + } else { + r2 = c4; + g = 0; + b2 = x; + } + return [ + Math.round((r2 + m) * 255), + Math.round((g + m) * 255), + Math.round((b2 + m) * 255) + ]; +} +function computeCurrentNoteIndex(melodyState, trackIndex = 0, timingHasStarted = true) { + if (!timingHasStarted || !melodyState) return -1; + if (melodyState.type === "single" && melodyState.notes) { + const totalNotes = melodyState.notes.length; + return (melodyState.index - 1 + totalNotes) % totalNotes; + } else if (melodyState.type === "parallel" && melodyState.trackStates) { + const trackState = melodyState.trackStates[trackIndex]; + if (trackState && trackState.track) { + const totalNotes = trackState.track.length; + return (trackState.noteIndex - 1 + totalNotes) % totalNotes; + } + } + return -1; +} +function buildColoredMelodyString(melodyString, melodyState, opts = {}) { + if (!melodyString) return ""; + const now = opts.now ?? _now(); + const timingHasStarted = opts.timingHasStarted ?? false; + const getCurrentNoteIndex = opts.getCurrentNoteIndex || ((s2, t2 = 0) => computeCurrentNoteIndex(s2, t2, timingHasStarted)); + const { + noteIndex: recentlyMutatedNoteIndex = -1, + trackIndex: recentlyMutatedTrackIndex = -1 + } = opts.recentlyMutated || {}; + const shouldFlashGreen = opts.specialCharFlash ?? false; + const shouldFlashMutation = opts.mutationFlash?.active ?? false; + const triggeredAsteriskPositions = opts.triggeredAsteriskPositions || []; + const getStampleStatus = opts.getStampleStatus || (() => null); + let coloredMelodyString = ""; + let noteCharPositions = []; + let noteIndex = 0; + let inWaveform = false; + let currentNoteIndex = 0; + let effectiveMelodyState = melodyState; + let currentSequenceIndex = 0; + let isSequentialMelody = melodyState && melodyState.type === "sequential"; + if (isSequentialMelody) { + currentSequenceIndex = melodyState.currentSequence ?? 0; + if (melodyState.currentSequenceState) { + effectiveMelodyState = melodyState.currentSequenceState; + } else if (melodyState.sequences && melodyState.sequences.length > 0) { + effectiveMelodyState = melodyState.sequences[0].parsed; + } + } + if (timingHasStarted && effectiveMelodyState && effectiveMelodyState.type === "single") { + currentNoteIndex = getCurrentNoteIndex(effectiveMelodyState); + } else if (timingHasStarted && effectiveMelodyState && effectiveMelodyState.type === "parallel") { + } else { + currentNoteIndex = -1; + } + let sequences = []; + let sequenceDelimiterPositions = []; + if (isSequentialMelody) { + let lastSplitPos = 0; + for (let i2 = 0; i2 < melodyString.length; i2++) { + if (melodyString[i2] === ">") { + sequences.push(melodyString.substring(lastSplitPos, i2).trim()); + sequenceDelimiterPositions.push(i2); + lastSplitPos = i2 + 1; + } + } + sequences.push(melodyString.substring(lastSplitPos).trim()); + } + const groups = melodyString.trim().split(/\s+/); + let groupStartPositions = []; + let searchStart = 0; + for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) { + const group = groups[groupIdx]; + const groupStart = melodyString.indexOf(group, searchStart); + groupStartPositions.push(groupStart); + searchStart = groupStart + group.length; + } + let effectiveGroupToTrackMap = []; + let currentSeqIdx = 0; + let currentTrackInSeq = 0; + if (isSequentialMelody) { + for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) { + const group = groups[groupIdx]; + if (/^\d*>$/.test(group)) { + currentSeqIdx++; + currentTrackInSeq = 0; + effectiveGroupToTrackMap.push({ + isDelimiter: true, + sequenceIndex: currentSeqIdx - 1 + }); + } else { + effectiveGroupToTrackMap.push({ + isDelimiter: false, + sequenceIndex: currentSeqIdx, + trackIndex: currentTrackInSeq, + isCurrentSequence: currentSeqIdx === currentSequenceIndex + }); + currentTrackInSeq++; + } + } + } + for (let groupIdx = 0; groupIdx < groups.length; groupIdx++) { + const group = groups[groupIdx]; + const groupStartChar = groupStartPositions[groupIdx]; + noteIndex = 0; + let trackIdxForColoring = groupIdx; + let isInCurrentSequence = true; + if (isSequentialMelody && effectiveGroupToTrackMap[groupIdx]) { + const mapping = effectiveGroupToTrackMap[groupIdx]; + if (mapping.isDelimiter) continue; + trackIdxForColoring = mapping.trackIndex; + isInCurrentSequence = mapping.isCurrentSequence; + } + for (let i2 = 0; i2 < group.length; i2++) { + const char = group[i2]; + if (char === "{") { + inWaveform = true; + continue; + } else if (char === "}") { + inWaveform = false; + continue; + } else if (inWaveform) { + continue; + } + if (/[0-9]/.test(char) && i2 + 1 < group.length && /[a-gvswrqhijklmntyuop]/i.test(group[i2 + 1])) { + let noteStart = i2; + let noteEnd = i2 + 1; + if (noteEnd + 1 < group.length) { + if (group[noteEnd + 1] === "#") noteEnd++; + } + while (noteEnd + 1 < group.length) { + const nextChar = group[noteEnd + 1]; + if (nextChar === "." || nextChar === "-" || nextChar === "[" || nextChar === "]" || nextChar === "," || nextChar === "*") noteEnd++; + else break; + } + const noteIndexToUse = noteIndex; + const trackIndexToUse = isSequentialMelody ? trackIdxForColoring : effectiveMelodyState && effectiveMelodyState.type === "parallel" ? groupIdx : 0; + for (let j = noteStart; j <= noteEnd; j++) { + noteCharPositions.push({ + charIndex: groupStartChar + j, + noteIndex: noteIndexToUse, + trackIndex: trackIndexToUse, + isInCurrentSequence + }); + } + noteIndex++; + i2 = noteEnd; + } else if (char === "^") { + continue; + } else if (char === "-") { + let dashEnd = i2; + while (dashEnd + 1 < group.length && group[dashEnd + 1] === "-") dashEnd++; + if (dashEnd + 1 < group.length && /[a-gvswrqhijklmntyuop]/i.test(group[dashEnd + 1])) { + let noteStart = i2; + let noteEnd = dashEnd + 1; + if (noteEnd + 1 < group.length && group[noteEnd + 1] === "#") noteEnd++; + while (noteEnd + 1 < group.length) { + const nextChar = group[noteEnd + 1]; + if (nextChar === "." || nextChar === "," || nextChar === "*" || nextChar === "[" || nextChar === "]") noteEnd++; + else break; + } + const noteIndexToUse = noteIndex; + const trackIndexToUse = isSequentialMelody ? trackIdxForColoring : effectiveMelodyState && effectiveMelodyState.type === "parallel" ? groupIdx : 0; + for (let j = noteStart; j <= noteEnd; j++) { + noteCharPositions.push({ + charIndex: groupStartChar + j, + noteIndex: noteIndexToUse, + trackIndex: trackIndexToUse, + isInCurrentSequence + }); + } + noteIndex++; + i2 = noteEnd; + } else { + i2 = dashEnd; + continue; + } + } else if (char === "+") { + let plusEnd = i2; + while (plusEnd + 1 < group.length && group[plusEnd + 1] === "+") plusEnd++; + if (plusEnd + 1 < group.length && /[a-gvswrqhijklmntyuop]/i.test(group[plusEnd + 1])) { + let noteStart = i2; + let noteEnd = plusEnd + 1; + if (noteEnd + 1 < group.length && group[noteEnd + 1] === "#") noteEnd++; + while (noteEnd + 1 < group.length) { + const nextChar = group[noteEnd + 1]; + if (nextChar === "." || nextChar === "," || nextChar === "*" || nextChar === "[" || nextChar === "]") noteEnd++; + else break; + } + const noteIndexToUse = noteIndex; + const trackIndexToUse = isSequentialMelody ? trackIdxForColoring : effectiveMelodyState && effectiveMelodyState.type === "parallel" ? groupIdx : 0; + for (let j = noteStart; j <= noteEnd; j++) { + noteCharPositions.push({ + charIndex: groupStartChar + j, + noteIndex: noteIndexToUse, + trackIndex: trackIndexToUse, + isInCurrentSequence + }); + } + noteIndex++; + i2 = noteEnd; + } else { + i2 = plusEnd; + continue; + } + } else if (/[a-g#_vswrqhijklmntyuop]/i.test(char)) { + let noteStart = i2; + let noteEnd = i2; + if (noteEnd + 1 < group.length) { + if (group[noteEnd + 1] === "#") noteEnd++; + } + while (noteEnd + 1 < group.length) { + const nextChar = group[noteEnd + 1]; + if (nextChar === "." || nextChar === "-" || nextChar === "[" || nextChar === "]" || nextChar === "," || nextChar === "*") noteEnd++; + else break; + } + const noteIndexToUse = noteIndex; + const trackIndexToUse = isSequentialMelody ? trackIdxForColoring : effectiveMelodyState && effectiveMelodyState.type === "parallel" ? groupIdx : 0; + for (let j = noteStart; j <= noteEnd; j++) { + noteCharPositions.push({ + charIndex: groupStartChar + j, + noteIndex: noteIndexToUse, + trackIndex: trackIndexToUse, + isInCurrentSequence + }); + } + noteIndex++; + i2 = noteEnd; + } + } + } + let inWaveformForColoring = false; + function getRedNoteColor() { + return "red"; + } + function getStaticNoteColor(noteCharData) { + if (!noteCharData) return "gray"; + const stateToUse = effectiveMelodyState || melodyState; + if (!stateToUse) return "gray"; + let note2 = null; + if (stateToUse.type === "single" && stateToUse.notes) { + note2 = stateToUse.notes[noteCharData.noteIndex]; + } else if (stateToUse.type === "parallel" && stateToUse.tracks) { + const track = stateToUse.tracks[noteCharData.trackIndex]; + note2 = track && track[noteCharData.noteIndex]; + } + if (!note2) return "gray"; + const rgb = getNoteColor(note2.note); + return `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`; + } + function isNoteMutated(noteCharData) { + if (!noteCharData) return false; + const stateToUse = effectiveMelodyState || melodyState; + if (!stateToUse) return false; + if (stateToUse.type === "single") { + const currentNote = stateToUse.notes && stateToUse.notes[noteCharData.noteIndex]; + return currentNote && currentNote.isMutation; + } else if (stateToUse.type === "parallel" && stateToUse.trackStates && noteCharData.trackIndex < stateToUse.trackStates.length) { + const track = stateToUse.tracks[noteCharData.trackIndex]; + const currentNote = track && track[noteCharData.noteIndex]; + return currentNote && currentNote.isMutation; + } + return false; + } + function getMutatedNoteColor(isCurrentlyPlaying = false, noteCharData = null) { + const isRecentlyMutatedNote = noteCharData && noteCharData.noteIndex === recentlyMutatedNoteIndex && noteCharData.trackIndex === recentlyMutatedTrackIndex; + const shouldFlashForThisNote = shouldFlashMutation && isRecentlyMutatedNote; + if (shouldFlashForThisNote) { + const time = now * 5e-3; + const hue = time % 1 * 360; + return hsvToRgb(hue, 1, 1); + } + if (isCurrentlyPlaying) return getRedNoteColor(); + return "goldenrod"; + } + for (let i2 = 0; i2 < melodyString.length; i2++) { + const char = melodyString[i2]; + let color3 = "yellow"; + if (char === ">") { + const prevChar = i2 > 0 ? melodyString[i2 - 1] : " "; + if (/\d/.test(prevChar)) color3 = "white"; + else color3 = "cyan"; + coloredMelodyString += `\\${color3}\\${char}`; + continue; + } + if (/\d/.test(char)) { + let lookAhead = i2 + 1; + while (lookAhead < melodyString.length && /\d/.test(melodyString[lookAhead])) lookAhead++; + if (lookAhead < melodyString.length && melodyString[lookAhead] === ">") { + color3 = "magenta"; + coloredMelodyString += `\\${color3}\\${char}`; + continue; + } + } + if (char === " ") { + color3 = timingHasStarted ? "yellow" : "gray"; + } else if (char === "x") { + let isGroupPrefix = false; + if (i2 === 0) { + isGroupPrefix = true; + } else { + let j = i2 - 1; + while (j >= 0 && melodyString[j] === " ") j--; + isGroupPrefix = j < 0 || melodyString[j] === " "; + } + if (isGroupPrefix) { + color3 = "brown"; + } else { + color3 = timingHasStarted ? "yellow" : "gray"; + } + } else { + let isInDisabledGroup = false; + { + let charCount = 0; + const groups2 = melodyString.trim().split(/\s+/); + for (let groupIdx = 0; groupIdx < groups2.length; groupIdx++) { + const group = groups2[groupIdx]; + const groupStart = melodyString.indexOf(group, charCount); + const groupEnd = groupStart + group.length; + if (i2 >= groupStart && i2 < groupEnd) { + isInDisabledGroup = group.startsWith("x"); + break; + } + charCount = groupEnd; + } + } + if (isInDisabledGroup) { + color3 = "gray"; + } else { + const noteCharData = noteCharPositions.find((ncp) => ncp.charIndex === i2); + let isCurrentlyPlayingNote = false; + if (noteCharData) { + if (melodyState && melodyState.type === "single") { + isCurrentlyPlayingNote = noteCharData.noteIndex === currentNoteIndex; + } else if (melodyState && melodyState.type === "parallel" && melodyState.trackStates && noteCharData.trackIndex < melodyState.trackStates.length) { + const currentPlayingIndex = getCurrentNoteIndex( + melodyState, + noteCharData.trackIndex + ); + isCurrentlyPlayingNote = noteCharData.noteIndex === currentPlayingIndex; + } else if (melodyState && melodyState.type === "sequential" && melodyState.currentSequenceState) { + if (noteCharData.isInCurrentSequence) { + const seqState = melodyState.currentSequenceState; + if (seqState.type === "single" && seqState.notes) { + const totalNotes = seqState.notes.length; + const currentPlayingIndex = (seqState.index - 1 + totalNotes) % totalNotes; + isCurrentlyPlayingNote = noteCharData.noteIndex === currentPlayingIndex; + } else if (seqState.type === "parallel" && seqState.trackStates) { + const trackState = seqState.trackStates[noteCharData.trackIndex]; + if (trackState && trackState.track) { + const totalNotes = trackState.track.length; + const currentPlayingIndex = (trackState.noteIndex - 1 + totalNotes) % totalNotes; + isCurrentlyPlayingNote = noteCharData.noteIndex === currentPlayingIndex; + } + } + } + } + } + if (char === "{") { + inWaveformForColoring = true; + color3 = shouldFlashGreen ? "green" : "yellow"; + } else if (char === "}") { + inWaveformForColoring = false; + color3 = shouldFlashGreen ? "green" : "yellow"; + } else if (inWaveformForColoring) { + let lookBack = i2 - 1; + let waveContent = ""; + while (lookBack >= 0 && melodyString[lookBack] !== "{") { + waveContent = melodyString[lookBack] + waveContent; + lookBack--; + } + waveContent = waveContent + char; + if (waveContent.startsWith("#") || lookBack >= 0 && melodyString[lookBack + 1] === "#") { + const hashIdx = waveContent.indexOf("#"); + const code2 = waveContent.substring(hashIdx + 1).replace(/[^a-zA-Z0-9]/g, ""); + const cached = getStampleStatus(code2); + if (cached && cached.loaded) color3 = "lime"; + else if (cached && cached.loading) color3 = "cyan"; + else if (cached && cached.error) color3 = [255, 100, 100]; + else color3 = "orange"; + } else { + color3 = "cyan"; + } + } else if (char === "*") { + if (shouldFlashMutation && (triggeredAsteriskPositions.includes(i2) || triggeredAsteriskPositions.includes("*"))) { + color3 = "white"; + } else { + const time = now * 5e-3; + const hue = time % 1 * 360; + color3 = hsvToRgb(hue, 1, 1); + } + } else if (melodyState && melodyState.isFallback) { + if (noteCharData) { + if (isCurrentlyPlayingNote) { + const isMutated = isNoteMutated(noteCharData); + if (/[.,]/i.test(char)) { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } else if (/[s]/i.test(char)) { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } else if (char === "_") { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } else if (/[0-9+\-#<>]/i.test(char)) { + color3 = "green"; + } else { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } + } else { + const isMutated = isNoteMutated(noteCharData); + if (isMutated) { + color3 = getMutatedNoteColor(false, noteCharData); + } else { + color3 = timingHasStarted ? "yellow" : getStaticNoteColor(noteCharData); + } + } + } else { + color3 = timingHasStarted ? "yellow" : "gray"; + } + } else { + if (noteCharData) { + if (isCurrentlyPlayingNote) { + const isMutated = isNoteMutated(noteCharData); + if (/[.,]/i.test(char)) { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } else if (/[s]/i.test(char)) { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } else if (char === "_") { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } else if (/[0-9+\-#\[\]]/i.test(char)) { + color3 = "green"; + } else { + color3 = isMutated ? getMutatedNoteColor(true, noteCharData) : getRedNoteColor(); + } + } else { + const isMutated = isNoteMutated(noteCharData); + if (isMutated) { + color3 = getMutatedNoteColor(false, noteCharData); + } else { + color3 = timingHasStarted ? "yellow" : "gray"; + } + } + } else { + color3 = timingHasStarted ? "yellow" : "gray"; + } + } + } + } + const noteCharData2 = noteCharPositions.find((ncp) => ncp.charIndex === i2); + const shouldDim = isSequentialMelody && noteCharData2 && noteCharData2.isInCurrentSequence === false; + if (shouldDim && color3 !== "cyan" && color3 !== "magenta" && color3 !== "white") { + if (typeof color3 === "string") { + color3 = "gray"; + } else if (Array.isArray(color3)) { + color3 = [ + Math.round(color3[0] * 0.3), + Math.round(color3[1] * 0.3), + Math.round(color3[2] * 0.3) + ]; + } + } + if (Array.isArray(color3)) { + coloredMelodyString += `\\${color3[0]},${color3[1]},${color3[2]}\\${char}`; + } else { + coloredMelodyString += `\\${color3}\\${char}`; + } + } + return coloredMelodyString; +} + +// public/aesthetic.computer/dep/@akamfoad/qr/qr.mjs +var mode_default = { + MODE_NUMBER: 1 << 0, + MODE_ALPHA_NUM: 1 << 1, + MODE_8BIT_BYTE: 1 << 2, + MODE_KANJI: 1 << 3 +}; +var QR8bitByte = class { + mode; + data; + constructor(data) { + this.mode = mode_default.MODE_8BIT_BYTE; + this.data = data; + } + getLength() { + return this.data.length; + } + // FIXME? + write(buffer) { + for (let i2 = 0; i2 < this.data.length; i2++) { + buffer.put(this.data.charCodeAt(i2), 8); + } + } +}; +var ErrorCorrectLevel = { + /** + * Allows recovery of up to 7% data loss + */ + L: 1, + /** + * Allows recovery of up to 15% data loss + */ + M: 0, + /** + * Allows recovery of up to 25% data loss + */ + Q: 3, + /** + * Allows recovery of up to 30% data loss + */ + H: 2 +}; +var QRRSBlock = class _QRRSBlock { + totalCount; + dataCount; + constructor(totalCount, dataCount) { + this.totalCount = totalCount; + this.dataCount = dataCount; + } + static RS_BLOCK_TABLE = [ + // L + // M + // Q + // H + // 1 + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + // 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + // 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + // 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + // 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + // 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + // 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + // 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + // 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + // 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + // 11 + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + // 12 + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + // 13 + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + // 14 + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + // 15 + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12], + // 16 + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + // 17 + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + // 18 + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + // 19 + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + // 20 + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + // 21 + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + // 22 + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + // 23 + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + // 24 + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + // 25 + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + // 26 + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + // 27 + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + // 28 + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + // 29 + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + // 30 + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + // 31 + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + // 32 + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + // 33 + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + // 34 + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + // 35 + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + // 36 + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + // 37 + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + // 38 + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + // 39 + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + // 40 + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16] + ]; + static getRSBlocks(typeNumber, errorCorrectLevel) { + const rsBlock = _QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel); + if (rsBlock == void 0) { + throw new Error( + "bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel + ); + } + const length5 = rsBlock.length / 3; + const list = []; + for (let i2 = 0; i2 < length5; i2++) { + const count = rsBlock[i2 * 3 + 0]; + const totalCount = rsBlock[i2 * 3 + 1]; + const dataCount = rsBlock[i2 * 3 + 2]; + for (let j = 0; j < count; j++) { + list.push(new _QRRSBlock(totalCount, dataCount)); + } + } + return list; + } + static getRsBlockTable(typeNumber, errorCorrectLevel) { + switch (errorCorrectLevel) { + case ErrorCorrectLevel.L: + return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0]; + case ErrorCorrectLevel.M: + return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1]; + case ErrorCorrectLevel.Q: + return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2]; + case ErrorCorrectLevel.H: + return _QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3]; + default: + return void 0; + } + } +}; +var QRBitBuffer = class { + buffer; + length; + constructor() { + this.buffer = []; + this.length = 0; + } + get(index) { + const bufIndex = Math.floor(index / 8); + return (this.buffer[bufIndex] >>> 7 - index % 8 & 1) == 1; + } + put(num, length5) { + for (let i2 = 0; i2 < length5; i2++) { + this.putBit((num >>> length5 - i2 - 1 & 1) == 1); + } + } + getLengthInBits() { + return this.length; + } + putBit(bit) { + const bufIndex = Math.floor(this.length / 8); + if (this.buffer.length <= bufIndex) { + this.buffer.push(0); + } + if (bit) { + this.buffer[bufIndex] |= 128 >>> this.length % 8; + } + this.length++; + } +}; +var QRMath = { + glog: function(n2) { + if (n2 < 1) { + throw new Error("glog(" + n2 + ")"); + } + return QRMath.LOG_TABLE[n2]; + }, + gexp: function(n2) { + while (n2 < 0) { + n2 += 255; + } + while (n2 >= 256) { + n2 -= 255; + } + return QRMath.EXP_TABLE[n2]; + }, + EXP_TABLE: new Array(256), + LOG_TABLE: new Array(256) +}; +for (let i2 = 0; i2 < 8; i2++) { + QRMath.EXP_TABLE[i2] = 1 << i2; +} +for (let i2 = 8; i2 < 256; i2++) { + QRMath.EXP_TABLE[i2] = QRMath.EXP_TABLE[i2 - 4] ^ QRMath.EXP_TABLE[i2 - 5] ^ QRMath.EXP_TABLE[i2 - 6] ^ QRMath.EXP_TABLE[i2 - 8]; +} +for (let i2 = 0; i2 < 255; i2++) { + QRMath.LOG_TABLE[QRMath.EXP_TABLE[i2]] = i2; +} +var math_default = QRMath; +var QRPolynomial = class _QRPolynomial { + num; + constructor(num, shift) { + if (num.length == void 0) { + throw new Error(num.length + "/" + shift); + } + let offset = 0; + while (offset < num.length && num[offset] == 0) { + offset++; + } + this.num = new Array(num.length - offset + shift); + for (let i2 = 0; i2 < num.length - offset; i2++) { + this.num[i2] = num[i2 + offset]; + } + } + get(index) { + return this.num[index]; + } + getLength() { + return this.num.length; + } + multiply(e2) { + const num = new Array(this.getLength() + e2.getLength() - 1); + for (let i2 = 0; i2 < this.getLength(); i2++) { + for (let j = 0; j < e2.getLength(); j++) { + num[i2 + j] ^= math_default.gexp(math_default.glog(this.get(i2)) + math_default.glog(e2.get(j))); + } + } + return new _QRPolynomial(num, 0); + } + mod(e2) { + if (this.getLength() - e2.getLength() < 0) { + return this; + } + const ratio = math_default.glog(this.get(0)) - math_default.glog(e2.get(0)); + const num = new Array(this.getLength()); + for (let i2 = 0; i2 < this.getLength(); i2++) { + num[i2] = this.get(i2); + } + for (let i2 = 0; i2 < e2.getLength(); i2++) { + num[i2] ^= math_default.gexp(math_default.glog(e2.get(i2)) + ratio); + } + return new _QRPolynomial(num, 0).mod(e2); + } +}; +var QRMaskPattern = { + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7 +}; +var QRUtil = { + PATTERN_POSITION_TABLE: [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] + ], + G15: 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0, + G18: 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0, + G15_MASK: 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1, + getBCHTypeInfo: function(data) { + let d2 = data << 10; + while (QRUtil.getBCHDigit(d2) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) { + d2 ^= QRUtil.G15 << QRUtil.getBCHDigit(d2) - QRUtil.getBCHDigit(QRUtil.G15); + } + return (data << 10 | d2) ^ QRUtil.G15_MASK; + }, + getBCHTypeNumber: function(data) { + let d2 = data << 12; + while (QRUtil.getBCHDigit(d2) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) { + d2 ^= QRUtil.G18 << QRUtil.getBCHDigit(d2) - QRUtil.getBCHDigit(QRUtil.G18); + } + return data << 12 | d2; + }, + getBCHDigit: function(data) { + let digit = 0; + while (data != 0) { + digit++; + data >>>= 1; + } + return digit; + }, + getPatternPosition: function(typeNumber) { + return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]; + }, + getMask: function(maskPattern, i2, j) { + switch (maskPattern) { + case QRMaskPattern.PATTERN000: + return (i2 + j) % 2 == 0; + case QRMaskPattern.PATTERN001: + return i2 % 2 == 0; + case QRMaskPattern.PATTERN010: + return j % 3 == 0; + case QRMaskPattern.PATTERN011: + return (i2 + j) % 3 == 0; + case QRMaskPattern.PATTERN100: + return (Math.floor(i2 / 2) + Math.floor(j / 3)) % 2 == 0; + case QRMaskPattern.PATTERN101: + return i2 * j % 2 + i2 * j % 3 == 0; + case QRMaskPattern.PATTERN110: + return (i2 * j % 2 + i2 * j % 3) % 2 == 0; + case QRMaskPattern.PATTERN111: + return (i2 * j % 3 + (i2 + j) % 2) % 2 == 0; + default: + throw new Error("bad maskPattern:" + maskPattern); + } + }, + getErrorCorrectPolynomial: function(errorCorrectLength) { + let a2 = new QRPolynomial([1], 0); + for (let i2 = 0; i2 < errorCorrectLength; i2++) { + a2 = a2.multiply(new QRPolynomial([1, math_default.gexp(i2)], 0)); + } + return a2; + }, + getLengthInBits: function(mode, type) { + if (1 <= type && type < 10) { + switch (mode) { + case mode_default.MODE_NUMBER: + return 10; + case mode_default.MODE_ALPHA_NUM: + return 9; + case mode_default.MODE_8BIT_BYTE: + return 8; + case mode_default.MODE_KANJI: + return 8; + default: + throw new Error("mode:" + mode); + } + } else if (type < 27) { + switch (mode) { + case mode_default.MODE_NUMBER: + return 12; + case mode_default.MODE_ALPHA_NUM: + return 11; + case mode_default.MODE_8BIT_BYTE: + return 16; + case mode_default.MODE_KANJI: + return 10; + default: + throw new Error("mode:" + mode); + } + } else if (type < 41) { + switch (mode) { + case mode_default.MODE_NUMBER: + return 14; + case mode_default.MODE_ALPHA_NUM: + return 13; + case mode_default.MODE_8BIT_BYTE: + return 16; + case mode_default.MODE_KANJI: + return 12; + default: + throw new Error("mode:" + mode); + } + } else { + throw new Error("type:" + type); + } + }, + getLostPoint: function(qrCode) { + const moduleCount = qrCode.getModuleCount(); + let lostPoint = 0; + for (let row = 0; row < moduleCount; row++) { + for (let col = 0; col < moduleCount; col++) { + let sameCount = 0; + const dark = qrCode.isDark(row, col); + for (let r2 = -1; r2 <= 1; r2++) { + if (row + r2 < 0 || moduleCount <= row + r2) { + continue; + } + for (let c4 = -1; c4 <= 1; c4++) { + if (col + c4 < 0 || moduleCount <= col + c4) { + continue; + } + if (r2 == 0 && c4 == 0) { + continue; + } + if (dark == qrCode.isDark(row + r2, col + c4)) { + sameCount++; + } + } + } + if (sameCount > 5) { + lostPoint += 3 + sameCount - 5; + } + } + } + for (let row = 0; row < moduleCount - 1; row++) { + for (let col = 0; col < moduleCount - 1; col++) { + let count = 0; + if (qrCode.isDark(row, col)) + count++; + if (qrCode.isDark(row + 1, col)) + count++; + if (qrCode.isDark(row, col + 1)) + count++; + if (qrCode.isDark(row + 1, col + 1)) + count++; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + } + for (let row = 0; row < moduleCount; row++) { + for (let col = 0; col < moduleCount - 6; col++) { + if (qrCode.isDark(row, col) && !qrCode.isDark(row, col + 1) && qrCode.isDark(row, col + 2) && qrCode.isDark(row, col + 3) && qrCode.isDark(row, col + 4) && !qrCode.isDark(row, col + 5) && qrCode.isDark(row, col + 6)) { + lostPoint += 40; + } + } + } + for (let col = 0; col < moduleCount; col++) { + for (let row = 0; row < moduleCount - 6; row++) { + if (qrCode.isDark(row, col) && !qrCode.isDark(row + 1, col) && qrCode.isDark(row + 2, col) && qrCode.isDark(row + 3, col) && qrCode.isDark(row + 4, col) && !qrCode.isDark(row + 5, col) && qrCode.isDark(row + 6, col)) { + lostPoint += 40; + } + } + } + let darkCount = 0; + for (let col = 0; col < moduleCount; col++) { + for (let row = 0; row < moduleCount; row++) { + if (qrCode.isDark(row, col)) { + darkCount++; + } + } + } + const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + return lostPoint; + } +}; +var util_default = QRUtil; +var QRCode = class _QRCode { + typeNumber; + errorCorrectLevel; + modules; + moduleCount; + dataCache; + dataList; + constructor(typeNumber, errorCorrectLevel) { + this.typeNumber = typeNumber; + this.errorCorrectLevel = errorCorrectLevel; + this.modules = null; + this.moduleCount = 0; + this.dataCache = null; + this.dataList = []; + } + // TODO data may be anything, but we start with string + addData(data) { + const newData = new QR8bitByte(data); + this.dataList.push(newData); + this.dataCache = null; + } + isDark(row, col) { + if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) { + throw new Error(row + "," + col); + } + if (this.modules === null) { + throw new Error("this.modules is null"); + } + return this.modules[row][col]; + } + getModuleCount() { + return this.moduleCount; + } + make() { + if (this.typeNumber < 1) { + let typeNumber = 1; + for (typeNumber = 1; typeNumber < 40; typeNumber++) { + const rsBlocks = QRRSBlock.getRSBlocks( + typeNumber, + this.errorCorrectLevel + ); + const buffer = new QRBitBuffer(); + let totalDataCount = 0; + for (let i2 = 0; i2 < rsBlocks.length; i2++) { + totalDataCount += rsBlocks[i2].dataCount; + } + for (let i2 = 0; i2 < this.dataList.length; i2++) { + const data = this.dataList[i2]; + buffer.put(data.mode, 4); + buffer.put( + data.getLength(), + util_default.getLengthInBits(data.mode, typeNumber) + ); + data.write(buffer); + } + if (buffer.getLengthInBits() <= totalDataCount * 8) + break; + } + this.typeNumber = typeNumber; + } + this.makeImpl(false, this.getBestMaskPattern()); + } + makeImpl(test, maskPattern) { + this.moduleCount = this.typeNumber * 4 + 17; + this.modules = new Array(this.moduleCount); + for (let row = 0; row < this.moduleCount; row++) { + this.modules[row] = new Array(this.moduleCount); + for (let col = 0; col < this.moduleCount; col++) { + this.modules[row][col] = null; + } + } + this.setupPositionProbePattern(0, 0); + this.setupPositionProbePattern(this.moduleCount - 7, 0); + this.setupPositionProbePattern(0, this.moduleCount - 7); + this.setupPositionAdjustPattern(); + this.setupTimingPattern(); + this.setupTypeInfo(test, maskPattern); + if (this.typeNumber >= 7) { + this.setupTypeNumber(test); + } + if (this.dataCache == null) { + this.dataCache = _QRCode.createData( + this.typeNumber, + this.errorCorrectLevel, + this.dataList + ); + } + this.mapData(this.dataCache, maskPattern); + } + setupPositionProbePattern(row, col) { + for (let r2 = -1; r2 <= 7; r2++) { + if (row + r2 <= -1 || this.moduleCount <= row + r2) + continue; + for (let c4 = -1; c4 <= 7; c4++) { + if (col + c4 <= -1 || this.moduleCount <= col + c4) + continue; + if (0 <= r2 && r2 <= 6 && (c4 == 0 || c4 == 6) || 0 <= c4 && c4 <= 6 && (r2 == 0 || r2 == 6) || 2 <= r2 && r2 <= 4 && 2 <= c4 && c4 <= 4) { + if (this.modules === null) { + throw new Error("this.modules is null"); + } + this.modules[row + r2][col + c4] = true; + } else { + if (this.modules === null) { + throw new Error("this.modules is null"); + } + this.modules[row + r2][col + c4] = false; + } + } + } + } + getBestMaskPattern() { + let minLostPoint = 0; + let pattern = 0; + for (let i2 = 0; i2 < 8; i2++) { + this.makeImpl(true, i2); + const lostPoint = util_default.getLostPoint(this); + if (i2 == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i2; + } + } + return pattern; + } + setupTimingPattern() { + if (this.modules === null) { + throw new Error("this.modules is null"); + } + for (let r2 = 8; r2 < this.moduleCount - 8; r2++) { + if (this.modules[r2][6] != null) { + continue; + } + this.modules[r2][6] = r2 % 2 == 0; + } + for (let c4 = 8; c4 < this.moduleCount - 8; c4++) { + if (this.modules[6][c4] != null) { + continue; + } + this.modules[6][c4] = c4 % 2 == 0; + } + } + setupPositionAdjustPattern() { + if (this.modules === null) { + throw new Error("this.modules is null"); + } + const pos = util_default.getPatternPosition(this.typeNumber); + for (let i2 = 0; i2 < pos.length; i2++) { + for (let j = 0; j < pos.length; j++) { + const row = pos[i2]; + const col = pos[j]; + if (this.modules[row][col] != null) { + continue; + } + for (let r2 = -2; r2 <= 2; r2++) { + for (let c4 = -2; c4 <= 2; c4++) { + if (r2 == -2 || r2 == 2 || c4 == -2 || c4 == 2 || r2 == 0 && c4 == 0) { + this.modules[row + r2][col + c4] = true; + } else { + this.modules[row + r2][col + c4] = false; + } + } + } + } + } + } + setupTypeNumber(test) { + if (this.modules === null) { + throw new Error("this.modules is null"); + } + const bits = util_default.getBCHTypeNumber(this.typeNumber); + for (let i2 = 0; i2 < 18; i2++) { + const mod = !test && (bits >> i2 & 1) == 1; + this.modules[Math.floor(i2 / 3)][i2 % 3 + this.moduleCount - 8 - 3] = mod; + } + for (let i2 = 0; i2 < 18; i2++) { + const mod = !test && (bits >> i2 & 1) == 1; + this.modules[i2 % 3 + this.moduleCount - 8 - 3][Math.floor(i2 / 3)] = mod; + } + } + setupTypeInfo(test, maskPattern) { + if (this.modules === null) { + throw new Error("this.modules is null"); + } + const data = this.errorCorrectLevel << 3 | maskPattern; + const bits = util_default.getBCHTypeInfo(data); + for (let i2 = 0; i2 < 15; i2++) { + const mod = !test && (bits >> i2 & 1) == 1; + if (i2 < 6) { + this.modules[i2][8] = mod; + } else if (i2 < 8) { + this.modules[i2 + 1][8] = mod; + } else { + this.modules[this.moduleCount - 15 + i2][8] = mod; + } + } + for (let i2 = 0; i2 < 15; i2++) { + const mod = !test && (bits >> i2 & 1) == 1; + if (i2 < 8) { + this.modules[8][this.moduleCount - i2 - 1] = mod; + } else if (i2 < 9) { + this.modules[8][15 - i2 - 1 + 1] = mod; + } else { + this.modules[8][15 - i2 - 1] = mod; + } + } + this.modules[this.moduleCount - 8][8] = !test; + } + mapData(data, maskPattern) { + if (this.modules === null) { + throw new Error("this.modules is null"); + } + let inc = -1; + let row = this.moduleCount - 1; + let bitIndex = 7; + let byteIndex = 0; + for (let col = this.moduleCount - 1; col > 0; col -= 2) { + if (col == 6) + col--; + while (true) { + for (let c4 = 0; c4 < 2; c4++) { + if (this.modules[row][col - c4] == null) { + let dark = false; + if (byteIndex < data.length) { + dark = (data[byteIndex] >>> bitIndex & 1) == 1; + } + const mask2 = util_default.getMask(maskPattern, row, col - c4); + if (mask2) { + dark = !dark; + } + this.modules[row][col - c4] = dark; + bitIndex--; + if (bitIndex == -1) { + byteIndex++; + bitIndex = 7; + } + } + } + row += inc; + if (row < 0 || this.moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + } + static PAD0 = 236; + static PAD1 = 17; + static createData(typeNumber, errorCorrectLevel, dataList) { + const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel); + const buffer = new QRBitBuffer(); + for (let i2 = 0; i2 < dataList.length; i2++) { + const data = dataList[i2]; + buffer.put(data.mode, 4); + buffer.put(data.getLength(), util_default.getLengthInBits(data.mode, typeNumber)); + data.write(buffer); + } + let totalDataCount = 0; + for (let i2 = 0; i2 < rsBlocks.length; i2++) { + totalDataCount += rsBlocks[i2].dataCount; + } + if (buffer.getLengthInBits() > totalDataCount * 8) { + throw new Error( + "code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")" + ); + } + if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) { + buffer.put(0, 4); + } + while (buffer.getLengthInBits() % 8 != 0) { + buffer.putBit(false); + } + while (true) { + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(_QRCode.PAD0, 8); + if (buffer.getLengthInBits() >= totalDataCount * 8) { + break; + } + buffer.put(_QRCode.PAD1, 8); + } + return _QRCode.createBytes(buffer, rsBlocks); + } + static createBytes(buffer, rsBlocks) { + let offset = 0; + let maxDcCount = 0; + let maxEcCount = 0; + const dcdata = new Array(rsBlocks.length); + const ecdata = new Array(rsBlocks.length); + for (let r2 = 0; r2 < rsBlocks.length; r2++) { + const dcCount = rsBlocks[r2].dataCount; + const ecCount = rsBlocks[r2].totalCount - dcCount; + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); + dcdata[r2] = new Array(dcCount); + for (let i2 = 0; i2 < dcdata[r2].length; i2++) { + dcdata[r2][i2] = 255 & buffer.buffer[i2 + offset]; + } + offset += dcCount; + const rsPoly = util_default.getErrorCorrectPolynomial(ecCount); + const rawPoly = new QRPolynomial(dcdata[r2], rsPoly.getLength() - 1); + const modPoly = rawPoly.mod(rsPoly); + ecdata[r2] = new Array(rsPoly.getLength() - 1); + for (let i2 = 0; i2 < ecdata[r2].length; i2++) { + const modIndex = i2 + modPoly.getLength() - ecdata[r2].length; + ecdata[r2][i2] = modIndex >= 0 ? modPoly.get(modIndex) : 0; + } + } + let totalCodeCount = 0; + for (let i2 = 0; i2 < rsBlocks.length; i2++) { + totalCodeCount += rsBlocks[i2].totalCount; + } + const data = new Array(totalCodeCount); + let index = 0; + for (let i2 = 0; i2 < maxDcCount; i2++) { + for (let r2 = 0; r2 < rsBlocks.length; r2++) { + if (i2 < dcdata[r2].length) { + data[index++] = dcdata[r2][i2]; + } + } + } + for (let i2 = 0; i2 < maxEcCount; i2++) { + for (let r2 = 0; r2 < rsBlocks.length; r2++) { + if (i2 < ecdata[r2].length) { + data[index++] = ecdata[r2][i2]; + } + } + } + return data; + } +}; +var qrcode = (data, opt) => { + opt = opt || {}; + const qr = new QRCode( + opt.typeNumber || -1, + opt.errorCorrectLevel || ErrorCorrectLevel.H + ); + qr.addData(data); + qr.make(); + return qr; +}; + +// public/aesthetic.computer/lib/fade-state.mjs +var preserveFadeAlpha = false; +function setPreserveFadeAlpha(preserve) { + if (preserveFadeAlpha !== preserve) { + } + preserveFadeAlpha = preserve; +} +function getPreserveFadeAlpha() { + return preserveFadeAlpha; +} + +// public/aesthetic.computer/lib/pads.mjs +var perfNow = typeof performance !== "undefined" && performance.now ? () => performance.now() : () => Date.now(); +var voices = { + // Karplus–Strong plucked string — bright, decaying, great for arps. + pluck(synth, tone, o2 = {}) { + return synth({ + tone, + type: "harp", + beats: o2.beats ?? 0.6, + attack: o2.attack ?? 2e-3, + decay: o2.decay ?? 0.7, + volume: o2.volume ?? 0.5, + pan: o2.pan ?? 0 + }); + }, + // Layered sine+triangle bell — shimmering, long tail. + bell(synth, tone, o2 = {}) { + const v2 = o2.volume ?? 0.4; + synth({ tone, type: "sine", beats: o2.beats ?? 1.2, attack: 4e-3, decay: 0.9, volume: v2, pan: o2.pan ?? 0 }); + synth({ tone, type: "triangle", beats: (o2.beats ?? 1.2) * 0.6, attack: 2e-3, decay: 0.6, volume: v2 * 0.5, pan: o2.pan ?? 0 }); + }, + // Warm sub with a touch of body — sine + faint saw an octave down feel. + sub(synth, tone, o2 = {}) { + const v2 = o2.volume ?? 0.5; + synth({ tone, type: "sine", beats: o2.beats ?? 1.4, attack: o2.attack ?? 0.02, decay: o2.decay ?? 0.7, volume: v2, pan: o2.pan ?? 0 }); + synth({ tone, type: "sawtooth", beats: (o2.beats ?? 1.4) * 0.7, attack: 0.02, decay: 0.5, volume: v2 * 0.18, pan: o2.pan ?? 0 }); + }, + // Breathy waveguide flute/whistle — airy lead / pad top. + flute(synth, tone, o2 = {}) { + return synth({ tone, type: "flute", beats: o2.beats ?? 1, attack: o2.attack ?? 0.06, decay: o2.decay ?? 0.5, volume: o2.volume ?? 0.3, pan: o2.pan ?? 0 }); + }, + // Held, detuned triad — sustained pad. Returns the voice handles (kill/update). + padChord(synth, tones, o2 = {}) { + const v2 = o2.volume ?? 0.12; + return tones.map( + (tone, i2) => synth({ tone, type: o2.type ?? "sine", duration: "\u{1F501}", attack: o2.attack ?? 0.6, decay: o2.decay ?? 0.9, volume: v2, pan: (i2 - (tones.length - 1) / 2) * (o2.spread ?? 0.3) }) + ); + }, + // Soft closed-hat tick from filtered noise. + hat(synth, o2 = {}) { + return synth({ type: "noise-white", tone: o2.tone ?? 800, beats: o2.beats ?? 0.1, attack: 1e-3, decay: 0.18, volume: o2.volume ?? 0.14, pan: o2.pan ?? 0 }); + } +}; + +// public/aesthetic.computer/lib/pack-mode.mjs +var PACK_MODE = false; +var getPackMode = () => PACK_MODE; +var setPackMode = (value) => { + PACK_MODE = value; +}; +var checkPackMode = () => { + try { + if (typeof window !== "undefined" && window.acSPIDER) return false; + } catch (e2) { + } + if (PACK_MODE) return true; + try { + if (typeof window !== "undefined" && window.acPACK_MODE) return true; + if (typeof globalThis !== "undefined" && globalThis.acPACK_MODE) return true; + } catch (e2) { + } + return false; +}; + +// public/aesthetic.computer/lib/logs.mjs +var LOG_LEVELS = { NONE: 0, ERROR: 1, WARN: 2, INFO: 3, DEBUG: 4, VERBOSE: 5 }; +var CATEGORY_STYLES = { + boot: { badge: "\u{1F97E}", color: "#22c55e", label: "boot" }, + disk: { badge: "\u{1F4BF}", color: "#8b5cf6", label: "disk" }, + piece: { badge: "\u{1F9E9}", color: "#f59e0b", label: "piece" }, + wallet: { badge: "\u{1F537}", color: "#3b82f6", label: "wallet" }, + auth: { badge: "\u{1F510}", color: "#ec4899", label: "auth" }, + socket: { badge: "\u{1F9E6}", color: "#06b6d4", label: "socket" }, + audio: { badge: "\u{1F50A}", color: "#f97316", label: "audio" }, + gpu: { badge: "\u{1F3A8}", color: "#a855f7", label: "gpu" }, + lisp: { badge: "\u{1F33F}", color: "#10b981", label: "lisp" }, + store: { badge: "\u{1F4BE}", color: "#6366f1", label: "store" }, + tape: { badge: "\u{1F3AC}", color: "#ef4444", label: "tape" }, + hid: { badge: "\u{1F5B1}\uFE0F", color: "#84cc16", label: "hid" }, + net: { badge: "\u{1F310}", color: "#0ea5e9", label: "net" }, + qr: { badge: "\u{1F50D}", color: "#d946ef", label: "qr" } +}; +var categoryLevels = { + boot: LOG_LEVELS.NONE, + // Disabled - too noisy + disk: LOG_LEVELS.NONE, + // Disabled + piece: LOG_LEVELS.INFO, + // Enabled - piece loading is useful + wallet: LOG_LEVELS.NONE, + // Disabled - too noisy + auth: LOG_LEVELS.INFO, + // Enabled - login status is useful + socket: LOG_LEVELS.NONE, + // Disabled - too noisy + audio: LOG_LEVELS.NONE, + // Disabled + gpu: LOG_LEVELS.NONE, + // Disabled - too noisy + lisp: LOG_LEVELS.INFO, + // Enabled - KidLisp init is useful + store: LOG_LEVELS.INFO, + // Enabled - code storage is useful + tape: LOG_LEVELS.INFO, + // Enabled - recording status + hid: LOG_LEVELS.NONE, + // Disabled + net: LOG_LEVELS.NONE, + // Disabled + qr: LOG_LEVELS.NONE + // Disabled +}; +function createCategoryLogger(category) { + const style = CATEGORY_STYLES[category] || { badge: "\u{1F4CB}", color: "#888", label: category }; + const getLevel = () => categoryLevels[category] ?? LOG_LEVELS.INFO; + const badgeStyle = `background: ${style.color}; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: bold;`; + const debugStyle = `background: ${style.color}22; color: ${style.color}; padding: 2px 6px; border-radius: 3px; font-size: 10px; border: 1px solid ${style.color};`; + const successStyle = `background: #22c55e; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: bold;`; + const warnStyle = `background: #f59e0b; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: bold;`; + const errorStyle = `background: #ef4444; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: bold;`; + return { + log: (...args) => { + if (getLevel() >= LOG_LEVELS.INFO) { + console.log(`%c${style.badge} ${style.label}`, badgeStyle, ...args); + } + }, + debug: (...args) => { + if (getLevel() >= LOG_LEVELS.DEBUG) { + console.log(`%c${style.badge} ${style.label}`, debugStyle, ...args); + } + }, + verbose: (...args) => { + if (getLevel() >= LOG_LEVELS.VERBOSE) { + console.log(`%c ${style.badge}`, `color: ${style.color}; font-size: 9px; opacity: 0.6;`, ...args); + } + }, + warn: (...args) => { + if (getLevel() >= LOG_LEVELS.WARN) { + console.warn(`%c\u26A0\uFE0F ${style.label}`, warnStyle, ...args); + } + }, + error: (...args) => { + if (getLevel() >= LOG_LEVELS.ERROR) { + console.error(`%c\u274C ${style.label}`, errorStyle, ...args); + } + }, + success: (...args) => { + if (getLevel() >= LOG_LEVELS.INFO) { + console.log(`%c\u2705 ${style.label}`, successStyle, ...args); + } + } + }; +} +var log = { + boot: createCategoryLogger("boot"), + disk: createCategoryLogger("disk"), + piece: createCategoryLogger("piece"), + wallet: createCategoryLogger("wallet"), + auth: createCategoryLogger("auth"), + socket: createCategoryLogger("socket"), + audio: createCategoryLogger("audio"), + gpu: createCategoryLogger("gpu"), + lisp: createCategoryLogger("lisp"), + store: createCategoryLogger("store"), + tape: createCategoryLogger("tape"), + hid: createCategoryLogger("hid"), + net: createCategoryLogger("net"), + qr: createCategoryLogger("qr") +}; +var debug2 = { + quiet: () => { + Object.keys(categoryLevels).forEach((k) => categoryLevels[k] = LOG_LEVELS.ERROR); + console.log("\u{1F507} AC logs: quiet mode"); + }, + normal: () => { + Object.keys(categoryLevels).forEach((k) => categoryLevels[k] = LOG_LEVELS.INFO); + console.log("\u{1F50A} AC logs: normal mode"); + }, + verbose: () => { + Object.keys(categoryLevels).forEach((k) => categoryLevels[k] = LOG_LEVELS.VERBOSE); + console.log("\u{1F4E2} AC logs: verbose mode"); + }, + set: (category, level) => { + if (categoryLevels[category] !== void 0 && LOG_LEVELS[level] !== void 0) { + categoryLevels[category] = LOG_LEVELS[level]; + console.log(`\u{1F4CB} ${category}: ${level}`); + } + }, + status: () => console.table(Object.fromEntries(Object.entries(categoryLevels).map(([k, v2]) => [k, Object.keys(LOG_LEVELS).find((l2) => LOG_LEVELS[l2] === v2)]))), + help: () => console.log(` +\u{1F3AE} AC Debug Commands: + acDebug.quiet() - Errors only + acDebug.normal() - Standard logging + acDebug.verbose() - All logs + acDebug.set(cat, level) - Set category level (NONE/ERROR/WARN/INFO/DEBUG/VERBOSE) + acDebug.status() - Show current levels + +Categories: ${Object.keys(CATEGORY_STYLES).join(", ")} +`) +}; +if (typeof window !== "undefined") { + window.acDebug = debug2; +} +var logs = { + store: false, + frame: false, + loading: false, + session: false, + udp: false, + download: false, + audio: false, + hid: false, + painting: false, + glaze: false, + deps: false, + messaging: false, + chat: false, + history: false, + recorder: false +}; + +// public/aesthetic.computer/lib/frame-capture.mjs +var isOpaqueOrigin = (() => { + try { + if (typeof window !== "undefined" && window.origin === "null") return true; + if (typeof localStorage !== "undefined") localStorage.getItem("__sandbox_test__"); + return false; + } catch (e2) { + return true; + } +})(); +function formatTimestamp(date = /* @__PURE__ */ new Date()) { + return date.toLocaleTimeString("en-US", { + hour: "numeric", + minute: "2-digit", + second: "2-digit", + hour12: true + }); +} + +// public/aesthetic.computer/lib/kidlisp.mjs +var MELODY_BASE_MS = 500; +var NOTE_LITERAL = /^[a-gA-G](#|s|b|f)?[0-8]$/; +var note = (raw, fallback) => { + if (raw === void 0 || raw === null) return fallback; + const s2 = unquoteString(String(raw)).trim(); + return s2 || fallback; +}; +var KIDLISP_FUNCTIONS = /* @__PURE__ */ new Set([ + // Core drawing + "wipe", + "ink", + "line", + "box", + "flood", + "circle", + "write", + "paste", + "stamp", + "point", + "poly", + "embed", + "tape", + "tri", + "plot", + "shape", + "lines", + "rect", + "ellipse", + "arc", + "curve", + "bezier", + // Output + "print", + "debug", + "log", + "console", + // Math + "random", + "sin", + "cos", + "tan", + "floor", + "ceil", + "round", + "abs", + "sqrt", + "min", + "max", + "pow", + "noise", + "lerp", + "map", + "constrain", + "dist", + // Logic + "choose", + "?", + "...", + "..", + "if", + "cond", + "and", + "or", + "not", + "no", + "yes", + // Audio + "overtone", + "mic", + "amplitude", + "melody", + "speaker", + "tone", + "beep", + "sound", + // Display + "resolution", + "scroll", + "flip", + "spin", + "resetSpin", + "smoothspin", + "zoom", + "blur", + "contrast", + "pan", + "unpan", + "mask", + "unmask", + "steal", + "putback", + "fill", + "outline", + "stroke", + "nofill", + "nostroke", + // Animation + "wiggle", + "sort", + "fade", + "jump", + "bake", + "frame", + "fps", + "auto-density", + "scale", + // Variables + "def", + "set", + "let", + "var", + "const", + // Control + "tap", + "draw", + "now", + "die", + "later", + "repeat", + "loop", + "range", + "each", + "for", + "while", + // Data + "label", + "len", + "list", + "get", + "first", + "rest", + "push", + "pop", + "slice", + "concat", + "reverse", + // Misc + "mul", + "add", + "sub", + "div", + "mod", + "width", + "height", + "time", + "elapsed", + "delta", + // Special + "rainbow", + "zebra", + "gradient" +]); +var KIDLISP_COLORS = /* @__PURE__ */ new Set([ + ...Object.keys(cssColors2), + ...Array.from({ length: 151 }, (_, i2) => `c${i2}`), + "rainbow", + "zebra", + "gradient" +]); +var KIDLISP_VOCABULARY = /* @__PURE__ */ new Set([...KIDLISP_FUNCTIONS, ...KIDLISP_COLORS]); +function isChaoticSource(source) { + if (!source || typeof source !== "string") { + return { isChaotic: true, confidence: 1, reason: "empty or invalid input" }; + } + const trimmed = source.trim(); + if (trimmed.length < 3) { + if (KIDLISP_VOCABULARY.has(trimmed.toLowerCase())) { + return { isChaotic: false, confidence: 0, reason: "known word" }; + } + if (/^\d+$/.test(trimmed)) { + return { isChaotic: false, confidence: 0, reason: "valid number" }; + } + return { isChaotic: true, confidence: 0.8, reason: "too short to be valid" }; + } + const openParens = (source.match(/\(/g) || []).length; + const closeParens = (source.match(/\)/g) || []).length; + const parenDiff = Math.abs(openParens - closeParens); + const maxParens = Math.max(openParens, closeParens, 1); + const parenBalance = parenDiff / maxParens; + if (parenBalance > 0.7 && maxParens > 3) { + return { isChaotic: true, confidence: 0.85, reason: `severely unbalanced parentheses (${openParens} open, ${closeParens} close)` }; + } + const words = source.toLowerCase().match(/[a-z_][a-z0-9_]*/gi) || []; + const recognizedWords = words.filter((w) => KIDLISP_VOCABULARY.has(w.toLowerCase())); + const recognitionRatio = words.length > 0 ? recognizedWords.length / words.length : 0; + const alphanumeric = source.replace(/[^a-zA-Z0-9\s]/g, ""); + const specialRatio = 1 - alphanumeric.length / source.length; + let chaosScore = 0; + let reasons = []; + if (recognitionRatio < 0.2 && words.length >= 3) { + chaosScore += 0.4; + reasons.push(`low word recognition (${Math.round(recognitionRatio * 100)}%)`); + } else if (recognitionRatio < 0.35 && words.length >= 2) { + chaosScore += 0.25; + reasons.push(`moderate word recognition (${Math.round(recognitionRatio * 100)}%)`); + } + if (specialRatio > 0.6) { + chaosScore += 0.35; + reasons.push(`high special char ratio (${Math.round(specialRatio * 100)}%)`); + } else if (specialRatio > 0.45) { + chaosScore += 0.2; + reasons.push(`moderate special char ratio (${Math.round(specialRatio * 100)}%)`); + } + if (parenBalance > 0.4 && maxParens > 2) { + chaosScore += 0.2; + reasons.push(`unbalanced parens (${openParens}/${closeParens})`); + } + if (words.length === 0 && trimmed.length > 10) { + chaosScore += 0.5; + reasons.push("no recognizable words"); + } + if (openParens === 0 && closeParens === 0 && trimmed.length > 0 && !source.includes(",") && !source.includes("\n")) { + const isValidShorthand = KIDLISP_VOCABULARY.has(trimmed.toLowerCase()) || trimmed.startsWith("fade:") || /^c\d+$/.test(trimmed) || /^p\d+$/.test(trimmed) || isValidRGBString(trimmed.replace(/_/g, " ")); + if (!isValidShorthand) { + chaosScore += 0.6; + reasons.push("no parentheses and not a valid color/function name"); + } + } + if (openParens === 0 && closeParens === 0 && trimmed.length > 20 && !source.includes(",") && !source.includes("\n")) { + const isValidLongShorthand = KIDLISP_VOCABULARY.has(trimmed.toLowerCase()) || trimmed.startsWith("fade:") || /^c\d+$/.test(trimmed) || /^p\d+$/.test(trimmed) || isValidRGBString(trimmed.replace(/_/g, " ")); + if (!isValidLongShorthand) { + chaosScore += 0.3; + reasons.push("no parentheses in long input"); + } + } + const isChaotic = chaosScore >= 0.5; + return { + isChaotic, + confidence: Math.min(chaosScore, 1), + reason: reasons.length > 0 ? reasons.join(", ") : "appears valid", + stats: { + words: words.length, + recognized: recognizedWords.length, + recognitionRatio, + specialRatio, + openParens, + closeParens, + parenBalance + } + }; +} +var cacheRegistry = /* @__PURE__ */ new Map(); +function getSourceHash(source) { + let hash = 0; + for (let i2 = 0; i2 < source.length; i2++) { + const char = source.charCodeAt(i2); + hash = (hash << 5) - hash + char; + hash = hash & hash; + } + return Math.abs(hash).toString(36); +} +function getCachedCode(source) { + const hash = getSourceHash(source); + return cacheRegistry.get(hash); +} +var __kidlispConsoleEnabled = false; +var __kidlispConsoleInitLogged = false; +var __kidlispTraceEnabled = false; +var __kidlispExecutionTrace = []; +var __kidlispTraceDepth = 0; +var __KIDLISP_MAX_TRACE_ENTRIES = 200; +function postToParent(content) { + const hasWindow = typeof window !== "undefined"; + const hasWorker = !hasWindow && typeof self !== "undefined" && typeof self.postMessage === "function"; + if (hasWindow) { + try { + window.postMessage({ type: "post-to-parent", content }, "*"); + } catch { + } + return; + } + if (hasWorker) { + try { + self.postMessage({ type: "post-to-parent", content }); + } catch { + } + } +} +function postKidlispConsole(level, message, meta) { + if (!isKidlispConsoleEnabled()) return; + const payload = { type: "kidlisp-console", level, message }; + if (meta && typeof meta === "object") { + if (meta.loc) payload.loc = meta.loc; + if (meta.kind) payload.kind = meta.kind; + if (meta.embeddedSource) { + payload.embeddedSource = meta.embeddedSource; + const source = globalCodeCache.get(meta.embeddedSource); + if (source) { + payload.embeddedSourceCode = source; + } + } + } + postToParent(payload); +} +function postKidlispConsoleImage(imageDataUrl, meta = {}) { + if (!isKidlispConsoleEnabled()) return; + const payload = { + type: "kidlisp-console-image", + imageDataUrl, + frameCount: meta.frameCount, + timestamp: meta.timestamp || formatTimestamp(), + dimensions: meta.dimensions, + pieceCode: meta.pieceCode, + // The $code identifier without $ (e.g., "nece") + pieceLabel: meta.pieceLabel, + // Full label with $ (e.g., "$nece") + filename: meta.filename, + // Full filename (e.g., "$nece-@jeffrey-2025-12-17.png") + userHandle: meta.userHandle, + // User handle (e.g., "@jeffrey") + embeddedSource: meta.embeddedSource + }; + postToParent(payload); +} +function enableKidlispTrace() { + __kidlispTraceEnabled = true; + __kidlispExecutionTrace = []; + __kidlispTraceDepth = 0; + if (typeof window !== "undefined") { + window.__acKidlispTraceEnabled = true; + } +} +function disableKidlispTrace() { + __kidlispTraceEnabled = false; + if (typeof window !== "undefined") { + window.__acKidlispTraceEnabled = false; + } +} +function isKidlispTraceEnabled() { + if (__kidlispTraceEnabled) return true; + try { + if (typeof window !== "undefined") return window.__acKidlispTraceEnabled === true; + return false; + } catch { + return false; + } +} +function clearExecutionTrace() { + __kidlispExecutionTrace = []; + __kidlispTraceDepth = 0; +} +function recordTraceEntry(type, expr, result, source, startPos, endPos) { + if (!isKidlispTraceEnabled()) return; + if (__kidlispExecutionTrace.length >= __KIDLISP_MAX_TRACE_ENTRIES) return; + const entry = { + id: __kidlispExecutionTrace.length, + type, + // 'enter', 'exit', 'call', 'primitive', 'value' + depth: __kidlispTraceDepth, + timestamp: performance.now(), + expr: formatExprForTrace(expr), + exprType: getExprType(expr) + }; + if (result !== void 0) entry.result = formatExprForTrace(result); + if (source) entry.source = source.substring(0, 100); + if (startPos !== void 0) entry.startPos = startPos; + if (endPos !== void 0) entry.endPos = endPos; + __kidlispExecutionTrace.push(entry); +} +function traceEnter(expr, source, startPos, endPos) { + recordTraceEntry("enter", expr, void 0, source, startPos, endPos); + __kidlispTraceDepth++; +} +function traceExit(expr, result) { + __kidlispTraceDepth = Math.max(0, __kidlispTraceDepth - 1); + recordTraceEntry("exit", expr, result); +} +function getExecutionTrace() { + return __kidlispExecutionTrace.slice(); +} +function postExecutionTrace() { + if (!isKidlispTraceEnabled()) { + return; + } + const trace = getExecutionTrace(); + if (trace.length === 0) { + return; + } + postToParent({ + type: "kidlisp-trace", + trace, + timestamp: performance.now() + }); +} +function formatExprForTrace(expr) { + if (expr === null || expr === void 0) return String(expr); + if (typeof expr === "number" || typeof expr === "string" || typeof expr === "boolean") { + return expr; + } + if (Array.isArray(expr)) { + if (expr.length === 0) return "()"; + const head = expr[0]; + if (expr.length <= 3) { + return `(${expr.map(formatExprForTrace).join(" ")})`; + } + return `(${head} ...)`; + } + if (typeof expr === "function") return ""; + if (typeof expr === "object") return "{...}"; + return String(expr); +} +function getExprType(expr) { + if (expr === null) return "null"; + if (expr === void 0) return "undefined"; + if (typeof expr === "number") return "number"; + if (typeof expr === "string") return "string"; + if (typeof expr === "boolean") return "boolean"; + if (Array.isArray(expr)) { + if (expr.length === 0) return "empty-list"; + const head = expr[0]; + if (typeof head === "string") { + const specials = ["def", "if", "later", "repeat", "once", "tap", "drag", "let"]; + if (specials.includes(head)) return "special-form"; + return "function-call"; + } + return "list"; + } + if (typeof expr === "function") return "function"; + return "object"; +} +function enableKidlispConsole() { + if (__kidlispConsoleEnabled) return; + __kidlispConsoleEnabled = true; + if (typeof window !== "undefined") { + window.__acKidlispConsoleEnabled = true; + } + postToParent({ type: "kidlisp-console-enabled" }); + __kidlispConsoleInitLogged = true; +} +function isKidlispConsoleEnabled() { + if (__kidlispConsoleEnabled) return true; + try { + if (typeof window !== "undefined") return window.__acKidlispConsoleEnabled === true; + if (typeof globalThis !== "undefined") return globalThis.__acKidlispConsoleEnabled === true; + if (typeof self !== "undefined") return self.__acKidlispConsoleEnabled === true; + return false; + } catch { + return false; + } +} +function kidlispOffsetToLineCol(source, offset) { + const clamped = Math.max(0, Math.min(Number(offset) || 0, source.length)); + let line2 = 1; + let col = 1; + for (let i2 = 0; i2 < clamped; i2++) { + if (source[i2] === "\n") { + line2++; + col = 1; + } else { + col++; + } + } + return { line: line2, col }; +} +function formatConsoleArgs(args) { + return args.map((arg) => { + if (arg instanceof Error) return arg.message || String(arg); + if (typeof arg === "string") return arg; + try { + return JSON.stringify(arg); + } catch { + return String(arg); + } + }).join(" "); +} +function withKidlispConsoleCapture(fn) { + if (!isKidlispConsoleEnabled() || typeof console === "undefined") return fn(); + const shouldForward = (args) => { + if (!args || args.length === 0) return false; + const first = args[0]; + if (typeof first !== "string") return false; + return first.startsWith("\u274C KidLisp") || first.startsWith("\u26A0\uFE0F KidLisp") || first.startsWith("\u2757 Invalid `") || first.startsWith("\u26D4 Evaluation failure") || first.startsWith("\u{1F4DD} LOG:") || first.startsWith("\u{1F527} DEBUG:"); + }; + const original = { + log: console.log, + info: console.info, + warn: console.warn, + error: console.error + }; + const wrap2 = (level, originalFn) => (...args) => { + try { + if (shouldForward(args)) { + postKidlispConsole(level, formatConsoleArgs(args)); + } + } catch { + } + return originalFn.apply(console, args); + }; + try { + console.log = wrap2("log", original.log); + console.info = wrap2("info", original.info); + console.warn = wrap2("warn", original.warn); + console.error = wrap2("error", original.error); + return fn(); + } finally { + console.log = original.log; + console.info = original.info; + console.warn = original.warn; + console.error = original.error; + } +} +if (typeof window !== "undefined" && !window.__acKidlispConsoleListenerInstalled) { + window.__acKidlispConsoleListenerInstalled = true; + window.addEventListener("message", (event) => { + if (event?.data?.type === "kidlisp-console-enable") { + enableKidlispConsole(); + } + }); +} +if (typeof window === "undefined" && typeof self !== "undefined" && !self.__acKidlispConsoleListenerInstalled) { + self.__acKidlispConsoleListenerInstalled = true; + self.addEventListener("message", (event) => { + if (event?.data?.type === "kidlisp-console-enable") { + enableKidlispConsole(); + } + }); +} +function setCachedCode(source, code2) { + const hash = getSourceHash(source); + cacheRegistry.set(hash, code2); +} +var cachingInProgressMap = /* @__PURE__ */ new Map(); +function isCachingInProgress(source) { + const hash = getSourceHash(source); + return cachingInProgressMap.get(hash) || false; +} +function setCachingInProgress(source, inProgress) { + const hash = getSourceHash(source); + if (inProgress) { + cachingInProgressMap.set(hash, true); + } else { + cachingInProgressMap.delete(hash); + } +} +var VERBOSE = false; +var PERF_LOG = false; +var { floor: floor8, max: max6 } = Math; +var globalCodeCache = /* @__PURE__ */ new Map(); +var persistentStoreRef = null; +function initPersistentCache(store2) { + if (!persistentStoreRef && store2) { + persistentStoreRef = store2; + } + const globalScope = (function() { + if (typeof window !== "undefined") return window; + if (typeof globalThis !== "undefined") return globalThis; + if (typeof global !== "undefined") return global; + if (typeof self !== "undefined") return self; + return {}; + })(); + if (globalScope.acPREFILL_CODE_CACHE && !globalCodeCache.size) { + const prefillData = globalScope.acPREFILL_CODE_CACHE; + for (const [cacheId, source] of Object.entries(prefillData)) { + globalCodeCache.set(cacheId, source); + } + } +} +async function getFromPersistentCache(cacheId) { + if (!persistentStoreRef) return null; + try { + const data = await persistentStoreRef.retrieve(`kidlisp-code:${cacheId}`, "local:db"); + if (data && data.source) { + return data.source; + } + } catch (error) { + console.warn(`Failed to retrieve from persistent cache: ${cacheId}`, error); + } + return null; +} +async function saveToPersistentCache(cacheId, source) { + if (!persistentStoreRef) return; + try { + persistentStoreRef[`kidlisp-code:${cacheId}`] = { + source, + cached: Date.now(), + version: 1 + }; + persistentStoreRef.persist(`kidlisp-code:${cacheId}`, "local:db"); + } catch (error) { + console.warn(`Failed to save to persistent cache: ${cacheId}`, error); + } +} +async function getCachedCodeMultiLevel(cacheId) { + if (globalCodeCache.has(cacheId)) { + return globalCodeCache.get(cacheId); + } + const globalScope = (function() { + if (typeof window !== "undefined") return window; + if (typeof globalThis !== "undefined") return globalThis; + if (typeof global !== "undefined") return global; + if (typeof self !== "undefined") return self; + return {}; + })(); + if (globalScope.objktKidlispCodes && globalScope.objktKidlispCodes[cacheId]) { + const teiaSource = globalScope.objktKidlispCodes[cacheId]; + globalCodeCache.set(cacheId, teiaSource); + return teiaSource; + } + const persistentSource = await getFromPersistentCache(cacheId); + if (persistentSource) { + globalCodeCache.set(cacheId, persistentSource); + return persistentSource; + } + const networkSource = await fetchCachedCode(cacheId); + if (networkSource) { + globalCodeCache.set(cacheId, networkSource); + await saveToPersistentCache(cacheId, networkSource); + return networkSource; + } + return null; +} +function clearAllCaches() { + globalCodeCache.clear(); +} +function saveCodeToAllCaches(cacheId, source) { + globalCodeCache.set(cacheId, source); + saveToPersistentCache(cacheId, source); +} +var perfTimers = {}; +var perfLogs = []; +var perfOrder = [ + "parse", + "precompile", + "frame-evaluation", + "repeat-setup", + "repeat-with-iterator", + "fast-draw-loop" +]; +function perfStart(label) { + if (PERF_LOG) perfTimers[label] = performance.now(); +} +function perfEnd(label) { + if (PERF_LOG && perfTimers[label]) { + const duration = performance.now() - perfTimers[label]; + if (duration > 0.1) { + const logEntry = `${label}: ${duration.toFixed(2)}ms`; + const existingIndex = perfLogs.findIndex( + (log3) => log3.startsWith(label + ":") + ); + if (existingIndex !== -1) { + perfLogs.splice(existingIndex, 1); + } + const orderIndex = perfOrder.indexOf(label); + if (orderIndex !== -1) { + let insertIndex = 0; + for (let i2 = 0; i2 < perfLogs.length; i2++) { + const logLabel = perfLogs[i2].split(":")[0]; + const logOrderIndex = perfOrder.indexOf(logLabel); + if (logOrderIndex !== -1 && logOrderIndex < orderIndex) { + insertIndex = i2 + 1; + } + } + perfLogs.splice(insertIndex, 0, logEntry); + } else { + perfLogs.push(logEntry); + } + if (perfLogs.length > 8) perfLogs.splice(8); + } + delete perfTimers[label]; + } +} +var identifierRegex = /[$a-zA-Z_]\w*/g; +var validIdentifierRegex = /^[$a-zA-Z_]\w*$/; +function tokenize(input3) { + if (VERBOSE) console.log("\u{1FA99} Tokenizing:", input3); + const regex = /\s*(;.*|[(),]|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|[^\s()";',]+)/g; + const tokens = []; + let match; + while ((match = regex.exec(input3)) !== null) { + const token = match[1]; + if (!token.startsWith(";")) { + tokens.push(token); + } + } + let parenBalance = 0; + for (const token of tokens) { + if (token === "(") { + parenBalance++; + } else if (token === ")") { + parenBalance--; + } + } + while (parenBalance > 0) { + tokens.push(")"); + parenBalance--; + } + if (VERBOSE) console.log("\u{1FA99} Tokens:", tokens); + return tokens; +} +function tokenizeForParser(input3) { + if (VERBOSE) console.log("\u{1FA99} Tokenizing (pos):", input3); + const regex = /\s*(;.*|[(),]|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|[^\s()";',]+)/g; + const tokens = []; + let match; + while ((match = regex.exec(input3)) !== null) { + const token = match[1]; + if (!token.startsWith(";")) { + const tokenStart = match.index + match[0].indexOf(token); + tokens.push({ value: token, pos: tokenStart }); + } + } + tokens._inputLength = input3.length; + let parenBalance = 0; + for (const token of tokens) { + if (token.value === "(") { + parenBalance++; + } else if (token.value === ")") { + parenBalance--; + } + } + while (parenBalance > 0) { + tokens.push({ value: ")", pos: input3.length }); + parenBalance--; + } + if (VERBOSE) console.log("\u{1FA99} Tokens (pos):", tokens.map((t2) => t2.value)); + return tokens; +} +function readFromTokens(tokens) { + const result = []; + while (tokens.length > 0) { + if (tokens[0].value === ")") { + const err = new Error("Unexpected ')'"); + err.kidlispOffset = tokens[0].pos; + throw err; + } + if (tokens[0].value === ",") { + tokens.shift(); + continue; + } + const currentToken = tokens[0].value; + if (/^\d*\.?\d+[s]\.\.\.?$/.test(currentToken) || /^\d*\.?\d+[s]!?$/.test(currentToken)) { + const timingExpr = [readExpression(tokens)]; + while (tokens.length > 0 && tokens[0].value !== ")" && tokens[0].value !== "," && // Stop at commas too + !/^\d*\.?\d+[s]\.\.\.?$/.test(tokens[0].value) && !/^\d*\.?\d+[s]!?$/.test(tokens[0].value)) { + const nextExpr = readExpression(tokens); + timingExpr.push(nextExpr); + } + result.push(timingExpr); + } else { + const expr = readExpression(tokens); + result.push(expr); + } + } + return result; +} +function readExpression(tokens) { + if (tokens.length === 0) { + const err = new Error("Unexpected end of input"); + err.kidlispOffset = typeof tokens._inputLength === "number" ? tokens._inputLength : 0; + throw err; + } + const tokenObj = tokens.shift(); + const token = tokenObj.value; + if (token === "(") { + const list = []; + while (tokens.length > 0 && tokens[0].value !== ")") { + list.push(readExpression(tokens)); + } + if (tokens.length === 0) { + console.warn("\u{1F527} Auto-closing: Missing ')' was handled by tokenizer"); + return list; + } + tokens.shift(); + return list; + } else { + return atom(token); + } +} +function atom(token) { + if (token[0] === '"' && token[token.length - 1] === '"' || token[0] === "'" && token[token.length - 1] === "'") { + return token; + } else if (/^\d*\.?\d+[s]\.\.\.?$/.test(token)) { + return token; + } else if (/^\d*\.?\d+[s]$/.test(token)) { + return token; + } else { + const num = parseFloat(token); + const result = isNaN(num) ? token : num; + return result; + } +} +function processArgStringTypes(args) { + if (!Array.isArray(args)) { + if (args === void 0) { + return void 0; + } + return args?.toString(); + } + return args.map((arg) => { + if (typeof arg === "string" && (arg.startsWith('"') && arg.endsWith('"') || arg.startsWith("'") && arg.endsWith("'"))) { + return arg.slice(1, -1); + } + return arg; + }); +} +function unquoteString(str7) { + if (str7.startsWith('"') && str7.endsWith('"') || str7.startsWith("'") && str7.endsWith("'")) { + return str7.slice(1, -1); + } else { + return str7; + } +} +function existing(item) { + return item !== void 0 && item !== null; +} +function getNestedValue(obj, path) { + return path?.split(".").reduce((acc, part) => acc && acc[part], obj); +} +function readLoggingFlag(value) { + if (value === void 0 || value === null) return void 0; + if (typeof value === "boolean") return value; + if (typeof value === "number") return value !== 0; + if (typeof value === "string") { + const normalized = value.trim().toLowerCase(); + if (!normalized) return void 0; + if (["false", "0", "off", "no"].includes(normalized)) return false; + if (["true", "1", "on", "yes"].includes(normalized)) return true; + } + return void 0; +} +function kidlispInkLoggingEnabled() { + try { + if (typeof globalThis !== "undefined") { + const disable = readLoggingFlag( + globalThis.AC_DISABLE_LINE_COLOR_LOGS ?? globalThis.AC_DISABLE_INK_COLOR_LOGS + ); + if (disable === true) return false; + const enable = readLoggingFlag( + globalThis.AC_LOG_LINE_COLORS ?? globalThis.AC_LOG_INK_COLORS + ); + if (enable !== void 0) return enable; + } + if (typeof process !== "undefined" && process?.env) { + const { env } = process; + const disable = readLoggingFlag( + env.AC_DISABLE_LINE_COLOR_LOGS ?? env.AC_DISABLE_INK_COLOR_LOGS + ); + if (disable === true) return false; + const enable = readLoggingFlag( + env.AC_LOG_LINE_COLORS ?? env.AC_LOG_INK_COLORS + ); + if (enable !== void 0) return enable; + } + } catch (err) { + } + return true; +} +function kidlispInkLogPrefix() { + try { + if (typeof process !== "undefined" && process?.env?.AC_LOG_INK_LABEL) { + return `[${process.env.AC_LOG_INK_LABEL}] `; + } + if (typeof globalThis !== "undefined" && globalThis.AC_LOG_INK_LABEL) { + return `[${globalThis.AC_LOG_INK_LABEL}] `; + } + } catch (err) { + } + return ""; +} +function cloneValueForInkLog(value) { + if (Array.isArray(value)) { + return value.map((item) => cloneValueForInkLog(item)); + } + if (value && typeof value === "object") { + try { + if (typeof structuredClone === "function") { + return structuredClone(value); + } + return JSON.parse(JSON.stringify(value)); + } catch (err) { + return { ...value }; + } + } + return value; +} +var KidLisp = class _KidLisp { + constructor() { + this.ast = null; + this.networkCache = { sources: {} }; + this.globalDef = {}; + this.globalDef.amp = 0; + this.globalDef.leftAmp = 0; + this.globalDef.rightAmp = 0; + this.globalDef.beat = 0; + this.globalDef.kick = 0; + this.globalDef.mic = 0; + this.globalDef.down = 0; + this.globalDef.penx = 0; + this.globalDef.peny = 0; + this.localEnvStore = [{}]; + this.localEnv = this.localEnvStore[0]; + this.localEnvLevel = 0; + this.tapper = null; + this.drawer = null; + this.lifter = null; + this.frameCount = 0; + this.lastSecondExecutions = {}; + this.instantTriggersExecuted = {}; + this.randomSeed = Date.now() + Math.random(); + this.randomState = this.randomSeed; + this.shortUrl = null; + this.cachedCode = null; + this.cachingInProgress = false; + this.embeddedLayers = []; + this.embeddedLayerCache = /* @__PURE__ */ new Map(); + this.embeddedSourceCache = /* @__PURE__ */ new Map(); + this.loadingEmbeddedLayers = /* @__PURE__ */ new Set(); + this.loadedEmbeddedLayers = /* @__PURE__ */ new Set(); + this.functionCache = /* @__PURE__ */ new Map(); + this.globalEnvCache = null; + this.embeddedApiCache = /* @__PURE__ */ new Map(); + this.lastScreenWidth = null; + this.lastScreenHeight = null; + this.alphaBufferCache = /* @__PURE__ */ new Map(); + this.cachedComposite = null; + this.compositeInvalidated = false; + this.bufferPool = /* @__PURE__ */ new Map(); + this.maxPooledBuffers = 8; + this.lastContrastArgs = null; + this.contrastCacheInvalidated = true; + this.clearEmbeddedLayerCache(); + this.clearBakedLayers(); + this.microphoneConnected = false; + this.microphoneApi = null; + this.micPermissionRequested = false; + this.micDefaultMode = "sine"; + this.tapeEmbeds = /* @__PURE__ */ new Map(); + this.tapeLoadingCallbacks = /* @__PURE__ */ new Map(); + this.tapeFrameBuffers = /* @__PURE__ */ new Map(); + this.fastPathFunctions = /* @__PURE__ */ new Set([ + "line", + "ink", + "wipe", + "backdrop", + "box", + "repeat", + "bunch", + "bake", + "+", + "-", + "*", + "/", + "=", + ">", + "<", + "mic", + "paste", + "stamp", + "jump" + ]); + this.reusableTimingKey = ""; + this.mathCache = /* @__PURE__ */ new Map(); + this.sequenceCounters = /* @__PURE__ */ new Map(); + this.syntaxHighlightSource = null; + this.expressionPositions = []; + this.currentlyHighlighted = /* @__PURE__ */ new Set(); + this.executionHistory = []; + this.currentExecutingExpression = null; + this.lastExecutionTime = 0; + this.flashDuration = 500; + this.isEditMode = false; + this.unknownWordsLogged = /* @__PURE__ */ new Set(); + this.cachedOwnerHandle = null; + this.cachedOwnerSub = null; + this.melodies = /* @__PURE__ */ new Map(); + this.melodyByString = /* @__PURE__ */ new Map(); + this.melodyTimers = /* @__PURE__ */ new Map(); + this._clockOffset = 0; + this.halfResolutionApplied = false; + this.thirdResolutionApplied = false; + this.fourthResolutionApplied = false; + this.fillMode = true; + this.onceExecuted = /* @__PURE__ */ new Set(); + this.currentSource = null; + this.timingBlinks = /* @__PURE__ */ new Map(); + this.blinkDuration = 200; + this.delayTimerActivePeriods = /* @__PURE__ */ new Map(); + this.delayTimerActiveDuration = 280; + this.activeTimingExpressions = /* @__PURE__ */ new Map(); + this.currentTimingContext = null; + this.syntaxSignals = /* @__PURE__ */ new Map(); + this.expressionRegistry = /* @__PURE__ */ new Map(); + this.nextExpressionId = 0; + this.lastValidationErrors = null; + this.errorPositions = null; + this.targetFps = 60; + this.forcedFps = null; + this.perf = { + enabled: false, + // Toggle for performance monitoring + showHUD: false, + // Toggle for performance HUD overlay + samples: 100, + // Number of samples to keep for rolling averages + lastLogTime: 0, + // Last time we logged to console + logInterval: 1e3, + // Log every 1 second + history: [], + // Historical snapshots for bar graph (keep last 20) + // Timing categories + timings: { + parse: [], + // Parse time samples + evaluate: [], + // Evaluation time samples + render: [], + // Render time samples (if available) + total: [] + // Total frame time samples + }, + // Function call tracking + functions: /* @__PURE__ */ new Map(), + // functionName -> { count, totalTime, avgTime } + // Memory usage tracking + memory: { + ast: 0, + // AST size estimate + env: 0, + // Environment size estimate + cache: 0 + // Cache size estimate + }, + // Current frame stats + current: { + parseTime: 0, + evaluateTime: 0, + renderTime: 0, + totalTime: 0, + frameStart: 0 + }, + // Rolling averages (calculated from samples) + avg: { + parse: 0, + evaluate: 0, + render: 0, + total: 0, + fps: 0 + } + }; + this.inkState = void 0; + this.inkStateSet = false; + this.bakedLayers = []; + this.bakeCallCount = 0; + this.hasBakedContent = false; + this.postBakeLayer = null; + this.frameRoutingContext = null; + this.performanceEnabled = false; + this.frameTimings = []; + this.evaluationCounts = /* @__PURE__ */ new Map(); + this.totalEvaluations = 0; + this.currentFrameStart = 0; + this.autoDensity = { + enabled: false, + // Toggle for auto-density scaling + targetFpsMin: 30, + // Minimum acceptable FPS (reduce density if below this) + targetFpsMax: 55, + // Target FPS ceiling (increase density if consistently above) + densityMin: 0.5, + // Minimum density (largest pixels) + densityMax: 4, + // Maximum density (smallest pixels) + densityStep: 0.5, + // Step size for density changes + stabilityFrames: 30, + // Number of frames to average before adjusting + cooldownFrames: 60, + // Minimum frames between adjustments + lastAdjustFrame: 0, + // Frame count at last adjustment + currentDensity: null, + // Current density (null = use system default) + fpsHistory: [], + // Recent FPS samples for stability detection + adjustmentCount: 0, + // Count of density adjustments made + direction: null + // 'up', 'down', or null - tracks trend + }; + } + // 🎯 Performance monitoring methods + startPerformanceMonitoring() { + this.perf.enabled = true; + this.perf.showHUD = true; + if (typeof window !== "undefined") { + if (window.graphPerf) { + window.graphPerf.enabled = true; + } else { + } + } + if (typeof globalThis !== "undefined" && globalThis.graphPerf) { + globalThis.graphPerf.enabled = true; + } + try { + if (typeof graphPerf !== "undefined") { + graphPerf.enabled = true; + } + } catch (e2) { + } + } + stopPerformanceMonitoring() { + this.perf.enabled = false; + this.perf.showHUD = false; + if (typeof window !== "undefined" && window.graphPerf) { + window.graphPerf.enabled = false; + } + } + togglePerformanceHUD() { + this.perf.showHUD = !this.perf.showHUD; + if (this.perf.showHUD) { + this.perf.enabled = true; + } + return this.perf.showHUD; + } + startFrame() { + if (!this.perf.enabled) return; + this.perf.current.frameStart = performance.now(); + resetRainbowCache(); + } + endFrame() { + if (!this.perf.enabled) return; + const now = performance.now(); + this.perf.current.totalTime = now - this.perf.current.frameStart; + this.addSample("total", this.perf.current.totalTime); + this.updateAverages(); + } + startTiming(category) { + return performance.now(); + } + endTiming(category, startTime) { + if (!this.perf.enabled) return; + const duration = performance.now() - startTime; + this.perf.current[category + "Time"] = duration; + this.addSample(category, duration); + } + addSample(category, value) { + if (!this.perf.timings[category]) return; + this.perf.timings[category].push(value); + if (this.perf.timings[category].length > this.perf.samples) { + this.perf.timings[category].shift(); + } + } + updateAverages() { + Object.keys(this.perf.timings).forEach((category) => { + const samples = this.perf.timings[category]; + if (samples.length > 0) { + this.perf.avg[category] = samples.reduce((a2, b2) => a2 + b2, 0) / samples.length; + } + }); + if (this.perf.avg.total > 0) { + this.perf.avg.fps = 1e3 / this.perf.avg.total; + if (globalThis.graphPerf) { + globalThis.graphPerf.lastFPS = this.perf.avg.fps; + } + if (this.autoDensity.enabled) { + this.checkAutoDensity(this.perf.avg.fps); + } + } + } + // 🎯 Auto-density system - automatically adjust pixel density based on FPS + enableAutoDensity(options = {}) { + this.autoDensity.enabled = true; + this.perf.enabled = true; + if (options.targetFpsMin !== void 0) this.autoDensity.targetFpsMin = options.targetFpsMin; + if (options.targetFpsMax !== void 0) this.autoDensity.targetFpsMax = options.targetFpsMax; + if (options.densityMin !== void 0) this.autoDensity.densityMin = options.densityMin; + if (options.densityMax !== void 0) this.autoDensity.densityMax = options.densityMax; + if (options.densityStep !== void 0) this.autoDensity.densityStep = options.densityStep; + if (this.autoDensity.currentDensity === null) { + this.autoDensity.currentDensity = typeof window !== "undefined" && window.acPACK_DENSITY || 2; + } + return this; + } + disableAutoDensity() { + this.autoDensity.enabled = false; + return this; + } + checkAutoDensity(currentFps) { + if (typeof window !== "undefined" && window.acAutoDensityOverride) { + this.autoDensityOverride = true; + this.autoDensity.enabled = false; + return; + } + const ad = this.autoDensity; + ad.fpsHistory.push(currentFps); + if (ad.fpsHistory.length > ad.stabilityFrames) { + ad.fpsHistory.shift(); + } + if (ad.fpsHistory.length < ad.stabilityFrames) return; + if (this.frameCount - ad.lastAdjustFrame < ad.cooldownFrames) return; + const avgFps = ad.fpsHistory.reduce((a2, b2) => a2 + b2, 0) / ad.fpsHistory.length; + const currentDensity = ad.currentDensity || window.acPACK_DENSITY || 2; + let newDensity = currentDensity; + let reason = ""; + if (avgFps < ad.targetFpsMin) { + newDensity = Math.max(ad.densityMin, currentDensity - ad.densityStep); + reason = `FPS ${avgFps.toFixed(1)} < ${ad.targetFpsMin} min`; + ad.direction = "down"; + } else if (avgFps > ad.targetFpsMax && currentDensity < ad.densityMax) { + newDensity = Math.min(ad.densityMax, currentDensity + ad.densityStep); + reason = `FPS ${avgFps.toFixed(1)} > ${ad.targetFpsMax} target`; + ad.direction = "up"; + } + if (newDensity !== currentDensity) { + this.setDensity(newDensity); + ad.lastAdjustFrame = this.frameCount; + ad.adjustmentCount++; + ad.fpsHistory = []; + console.log(`\u{1F3AF} Auto-density: ${currentDensity} \u2192 ${newDensity} (${reason})`); + } + } + setDensity(newDensity) { + newDensity = Math.round(newDensity / this.autoDensity.densityStep) * this.autoDensity.densityStep; + newDensity = Math.max(this.autoDensity.densityMin, Math.min(this.autoDensity.densityMax, newDensity)); + this.autoDensity.currentDensity = newDensity; + if (typeof window !== "undefined") window.acPACK_DENSITY = newDensity; + try { + localStorage.setItem("ac-density", newDensity.toString()); + } catch { + } + if (typeof window !== "undefined") { + window.postMessage({ type: "ac-density-change", density: newDensity }, "*"); + } + return newDensity; + } + getAutoDensityStatus() { + const ad = this.autoDensity; + return { + enabled: ad.enabled, + currentDensity: ad.currentDensity || window.acPACK_DENSITY || 2, + currentFps: this.perf.avg.fps, + targetFpsMin: ad.targetFpsMin, + targetFpsMax: ad.targetFpsMax, + adjustmentCount: ad.adjustmentCount, + direction: ad.direction + }; + } + trackFunction(name, duration) { + if (!this.perf.enabled) return; + if (!this.perf.functions.has(name)) { + this.perf.functions.set(name, { count: 0, totalTime: 0, avgTime: 0 }); + } + const stats = this.perf.functions.get(name); + stats.count++; + stats.totalTime += duration; + stats.avgTime = stats.totalTime / stats.count; + if (false) { + console.warn(`\u{1F525} HOT FUNCTION: ${name} called ${stats.count} times (${stats.avgTime.toFixed(3)}ms avg)`); + } + } + // 📊 Render performance HUD in top-right corner with tiny matrix font + renderPerformanceHUD(api) { + if (!this.perf.showHUD || !api.ink || !api.write || !api.box) return; + const now = performance.now(); + if (now - this.perf.lastLogTime > this.perf.logInterval) { + this.logPerformanceSnapshot(); + this.perf.lastLogTime = now; + } + const screen2 = api.screen || { width: 256, height: 256 }; + const hudWidth = 100; + const hudHeight = 45; + const x = screen2.width - hudWidth - 2; + const y = 2; + api.ink(0, 0, 0, 200); + api.box(x - 1, y - 1, hudWidth + 2, hudHeight + 2, "fill"); + api.ink(100, 255, 100, 255); + api.box(x - 1, y - 1, hudWidth + 2, hudHeight + 2, "outline"); + let lineY = y + 1; + const lineHeight = 8; + const fps = this.perf.avg.fps; + const totalTime = this.perf.avg.total; + let fpsColor = fps >= 55 ? [0, 255, 0] : fps >= 45 ? [255, 255, 0] : fps >= 30 ? [255, 165, 0] : [255, 0, 0]; + api.ink(fpsColor[0], fpsColor[1], fpsColor[2]); + api.write(`FPS:${fps.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + api.ink(100, 200, 255); + const logicTime = (this.perf.avg.parse || 0) + (this.perf.avg.evaluate || 0); + api.write(`LOGIC:${logicTime.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + this.drawPerfBar(api, x + 48, lineY, logicTime, 8, 50, [100, 200, 255]); + lineY += lineHeight; + api.ink(255, 100, 200); + api.write(`PAINT:${this.perf.avg.render.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + this.drawPerfBar(api, x + 48, lineY, this.perf.avg.render, 6, 50, [255, 100, 200]); + lineY += lineHeight; + const memEstimate = this.estimateMemoryUsage(); + api.ink(150, 150, 255); + api.write(`MEMORY:${(memEstimate / 1024).toFixed(1)}KB`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + api.ink(200, 200, 200); + api.write(`HEALTH`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + const fpsHealth = Math.min(100, fps / 60 * 100); + const timeHealth = Math.max(0, 100 - (totalTime - 16.67) / 16.67 * 100); + const memHealth = Math.max(0, 100 - Math.max(0, (memEstimate - 1024 * 1024) / (1024 * 1024)) * 100); + const overallHealth = (fpsHealth + timeHealth + memHealth) / 3; + let healthColor = overallHealth >= 80 ? [0, 255, 0] : overallHealth >= 60 ? [255, 255, 0] : overallHealth >= 40 ? [255, 165, 0] : [255, 0, 0]; + this.drawPerfBar(api, x + 48, lineY, overallHealth, 100, 50, healthColor); + lineY += lineHeight; + if (this.perf.history.length > 1) { + api.ink(80, 80, 80); + api.write(`HIST`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + const graphX = x + 20; + const graphY = lineY + 2; + const graphWidth = 70; + const graphHeight = 6; + api.ink(20, 20, 20); + api.box(graphX, graphY, graphWidth, graphHeight, "fill"); + const barWidth = Math.max(1, Math.floor(graphWidth / this.perf.history.length)); + for (let i2 = 0; i2 < this.perf.history.length; i2++) { + const snapshot = this.perf.history[i2]; + const normalizedFps = Math.min(75, snapshot.fps); + const barHeight = Math.min(graphHeight, Math.max(1, normalizedFps / 75 * graphHeight)); + const barX = graphX + i2 * barWidth; + const barY = graphY + graphHeight - barHeight; + if (snapshot.fps >= 55) { + api.ink(0, 255, 0); + } else if (snapshot.fps >= 45) { + api.ink(255, 255, 0); + } else if (snapshot.fps >= 30) { + api.ink(255, 165, 0); + } else { + api.ink(255, 0, 0); + } + api.box(barX, barY, Math.max(1, barWidth - 1), barHeight, "fill"); + } + const targetY = graphY + graphHeight - Math.floor(60 / 75 * graphHeight); + api.ink(128, 128, 128); + api.box(graphX, targetY, graphWidth, 1, "fill"); + } + } + // Draw a tiny performance bar with 60fps-oriented health colors + drawPerfBar(api, x, y, value, maxValue, width2, baseColor) { + const fillWidth = Math.min(width2, value / maxValue * width2); + const fillRatio = value / maxValue; + api.ink(50, 50, 50); + api.box(x, y + 2, width2, 3, "fill"); + if (fillWidth > 0) { + let barColor; + if (fillRatio <= 0.5) { + barColor = [0, 255, 0]; + } else if (fillRatio <= 0.75) { + barColor = [255, 255, 0]; + } else if (fillRatio <= 1) { + barColor = [255, 165, 0]; + } else { + barColor = [255, 0, 0]; + } + api.ink(barColor[0], barColor[1], barColor[2]); + api.box(x, y + 2, fillWidth, 3, "fill"); + } + if (value > maxValue) { + api.ink(255, 0, 0); + api.box(x + width2 - 2, y + 1, 2, 5, "fill"); + } + } + // Estimate memory usage + estimateMemoryUsage() { + let size = 0; + size += JSON.stringify(this.localEnv || {}).length; + size += this.perf.timings.total.length * 8; + size += this.perf.functions.size * 64; + return size; + } + // Log performance snapshot to console and store in history + logPerformanceSnapshot() { + let totalFunctionCalls = 0; + let graphCalls = 0; + let apiCalls = 0; + let userCalls = 0; + let optCalls = 0; + this.perf.functions.forEach((stats, name) => { + totalFunctionCalls += stats.count; + if (name.startsWith("api:")) { + apiCalls += stats.count; + } else if (name.startsWith("user:")) { + userCalls += stats.count; + } else if (name.startsWith("opt:")) { + optCalls += stats.count; + } else { + graphCalls += stats.count; + } + }); + const parseTime = this.perf.avg.parse || this.perf.current.parseTime || 0; + const evalTime = this.perf.avg.evaluate || this.perf.current.evaluateTime || 0; + const snapshot = { + time: (/* @__PURE__ */ new Date()).toLocaleTimeString(), + fps: this.perf.avg.fps, + total: this.perf.avg.total, + parse: parseTime, + evaluate: evalTime, + render: this.perf.avg.render, + functions: totalFunctionCalls, + memory: (this.estimateMemoryUsage() / 1024).toFixed(1) + }; + if (false) { + const sortedFunctions = Array.from(this.perf.functions.entries()).sort((a2, b2) => b2[1].count - a2[1].count).slice(0, 8); + console.log(`\u{1F525} TOP HOTSPOTS:`); + sortedFunctions.forEach(([name, stats], i2) => { + const callsPerSecond = Math.round(stats.count); + const totalTime = stats.totalTime.toFixed(1); + const category = name.startsWith("api:") ? "\u{1F4F1}" : name.startsWith("user:") ? "\u{1F464}" : name.startsWith("opt:") ? "\u26A1" : "\u{1F3A8}"; + console.log(` ${i2 + 1}. ${category} ${name}: ${callsPerSecond} calls (${totalTime}ms total, ${stats.avgTime.toFixed(3)}ms avg)`); + }); + if (this.perf.evalCallCount > 0 || this.perf.bodyProcessCount > 0) { + console.log(`\u{1F504} LOOPS: evaluate() called ${this.perf.evalCallCount || 0} times, body processing ${this.perf.bodyProcessCount || 0} times`); + } + if (false) { + if (window.graphPerf.functions.size > 0) { + const graphStats = window.graphPerf.getStats(); + console.log(`\u{1F3A8} GRAPH HOTSPOTS:`); + graphStats.slice(0, 5).forEach((stat, i2) => { + console.log(` ${i2 + 1}. ${stat.name}: ${stat.count} calls (${stat.totalTime.toFixed(1)}ms total, ${stat.avgTime.toFixed(2)}ms avg, ${stat.maxTime.toFixed(2)}ms max)`); + }); + window.graphPerf.reset(); + } else { + console.log(`\u{1F3A8} GRAPH DEBUG: graphPerf enabled=${window.graphPerf.enabled}, functions.size=${window.graphPerf.functions.size}`); + } + } else { + } + this.perf.functions.clear(); + this.perf.evalCallCount = 0; + this.perf.bodyProcessCount = 0; + } + this.perf.history.push(snapshot); + if (this.perf.history.length > 20) { + this.perf.history.shift(); + } + } + // 🎯 Set API context for this KidLisp instance + setAPI(api) { + this.api = api; + this.embeddedApiCache.clear(); + } + // 🎚️ Slide update - re-parse and update AST without resetting state/layers + // Used for real-time parameter tweaking in slide mode + slideUpdate(source) { + if (!source) return; + try { + const parsed = this.parse(source); + this.ast = JSON.parse(JSON.stringify(parsed)); + this.currentSource = source; + if (this.layer0 && this.layer0.pixels) { + this.layer0.pixels.fill(0); + } + if (this.bakes) { + this.bakes = []; + this.currentBakeIndex = -1; + } + } catch (e2) { + console.warn("\u{1F39A}\uFE0F Slide update parse error:", e2.message); + } + } + // �🎵 Update audio-related global variables (called from pieces with audio data) + updateAudioGlobals(audioData) { + if (audioData && typeof audioData === "object") { + if (typeof audioData.amp === "number") { + if (this.frameCount % 60 === 0 && audioData.amp > 0) console.log("\u{1F50A} updateAudioGlobals amp:", audioData.amp); + this.globalDef.amp = audioData.amp; + } + if (typeof audioData.leftAmp === "number") { + this.globalDef.leftAmp = audioData.leftAmp; + } + if (typeof audioData.rightAmp === "number") { + this.globalDef.rightAmp = audioData.rightAmp; + } + if (typeof audioData.beat === "number") { + this.globalDef.beat = audioData.beat; + } + if (typeof audioData.kick === "number") { + this.globalDef.kick = audioData.kick; + } + if (typeof audioData.bass === "number") { + this.globalDef.bass = audioData.bass; + } + if (typeof audioData.mid === "number") { + this.globalDef.mid = audioData.mid; + } + if (typeof audioData.treble === "number") { + this.globalDef.treble = audioData.treble; + } + if (typeof audioData.highMid === "number") { + this.globalDef.highMid = audioData.highMid; + } + if (typeof audioData.presence === "number") { + this.globalDef.presence = audioData.presence; + } + let shouldTraceEnv = false; + try { + shouldTraceEnv = typeof globalThis !== "undefined" && globalThis.AC_KL_ENV_TRACE === true || typeof localStorage !== "undefined" && localStorage.getItem("ac:kidlisp:env-trace") === "1"; + } catch (_err) { + shouldTraceEnv = false; + } + if (shouldTraceEnv) { + const frame = Number.isFinite(this.frameCount) ? this.frameCount : 0; + if (!this.lastEnvTraceFrame || frame - this.lastEnvTraceFrame >= 60) { + const source = audioData.__source || "unknown"; + console.log("\u{1F9ED} KL env globals", { + source, + frame, + amp: this.globalDef.amp, + leftAmp: this.globalDef.leftAmp, + rightAmp: this.globalDef.rightAmp, + beat: this.globalDef.beat, + kick: this.globalDef.kick, + bass: this.globalDef.bass, + mid: this.globalDef.mid, + treble: this.globalDef.treble, + highMid: this.globalDef.highMid, + presence: this.globalDef.presence, + mic: this.globalDef.mic + }); + this.lastEnvTraceFrame = frame; + } + } + } + } + // Reset all state for a fresh KidLisp instance + reset(clearOnceExecuted = false, sourceChanged = false) { + this.ast = null; + this.globalDef = {}; + this.globalDef.amp = 0; + this.globalDef.leftAmp = 0; + this.globalDef.rightAmp = 0; + this.globalDef.beat = 0; + this.globalDef.kick = 0; + this.globalDef.mic = 0; + this.globalDef.bass = 0; + this.globalDef.mid = 0; + this.globalDef.treble = 0; + this.globalDef.highMid = 0; + this.globalDef.presence = 0; + this.globalDef.down = 0; + this.globalDef.penx = 0; + this.globalDef.peny = 0; + this.localEnvStore = [{}]; + this.localEnv = this.localEnvStore[0]; + this.localEnvLevel = 0; + this.tapper = null; + this.drawer = null; + this.lifter = null; + this.frameCount = 0; + this.lastSecondExecutions = {}; + this.instantTriggersExecuted = {}; + const globalCachedCode = this.currentSource ? getCachedCode(this.currentSource) : null; + if (globalCachedCode) { + this.cachedCode = globalCachedCode; + this.shortUrl = `aesthetic.computer/$${globalCachedCode}`; + } else { + this.cachedCode = null; + this.shortUrl = null; + } + this.cacheInitiated = false; + this.microphoneConnected = false; + this.microphoneApi = null; + this.micPermissionRequested = false; + this.functionCache.clear(); + this.globalEnvCache = null; + this.mathCache.clear(); + this.sequenceCounters.clear(); + if (this.choiceCache) { + this.choiceCache.clear(); + } + if (this.globalFunctionCache) { + this.globalFunctionCache.clear(); + } + if (sourceChanged) { + this.loadingEmbeddedLayers.clear(); + this.loadedEmbeddedLayers.clear(); + } + this.syntaxHighlightSource = null; + this.expressionPositions = []; + this.currentlyHighlighted.clear(); + this.executionHistory = []; + this.currentExecutingExpression = null; + this.lastExecutionTime = 0; + this.cachedOwnerHandle = null; + this.cachedOwnerSub = null; + this.melodies.clear(); + this.melodyTimers.clear(); + this.halfResolutionApplied = false; + this.thirdResolutionApplied = false; + this.fourthResolutionApplied = false; + this.fillMode = true; + if (clearOnceExecuted) { + this.onceExecuted.clear(); + if (sourceChanged) { + this.layer0 = null; + this.bakes = []; + this.currentBakeIndex = -1; + } + } + this.timingBlinks.clear(); + this.delayTimerActivePeriods.clear(); + this.activeTimingExpressions.clear(); + this.postEmbedCommands = []; + this.postCompositeCommands = []; + this.preserveLayer0NextFrame = false; + this.bufferPool.clear(); + if (this.unknownWordsLogged) this.unknownWordsLogged.clear(); + this.lastValidationErrors = null; + this.lastParseError = null; + this.errorPositions = null; + } + // Register an expression and get its unique ID + registerExpression(expr) { + const key = JSON.stringify(expr); + if (!this.expressionRegistry.has(key)) { + this.expressionRegistry.set(key, this.nextExpressionId++); + } + return this.expressionRegistry.get(key); + } + // Signal syntax highlighting for an expression + signalSyntaxHighlight(expr, color3) { + const id = this.registerExpression(expr); + this.syntaxSignals.set(id, color3); + if (this.frameCount % 60 === 0) { + } + } + // Clear all syntax signals (called each frame) + clearSyntaxSignals() { + this.syntaxSignals.clear(); + } + // Count active (non-cache-based) embedded layers for deferral logic + countActiveEmbeddedLayers() { + if (!this.embeddedLayers) return 0; + return this.embeddedLayers.filter((layer) => { + return !(layer.originalCacheId && /^[0-9A-Za-z]{3,12}$/.test(layer.originalCacheId)); + }).length; + } + // Performance monitoring methods + enablePerformanceMonitoring(enable = true) { + this.performanceEnabled = enable; + if (enable) { + } else { + } + } + startFrameTiming() { + if (!this.performanceEnabled) return; + this.currentFrameStart = performance.now(); + this.totalEvaluations = 0; + this.evaluationCounts.clear(); + } + endFrameTiming() { + if (!this.performanceEnabled) return; + const frameDuration = performance.now() - this.currentFrameStart; + this.frameTimings.push(frameDuration); + if (this.frameTimings.length > 60) { + this.frameTimings.shift(); + } + if (this.frameTimings.length === 60) { + const avgFrameTime = this.frameTimings.reduce((a2, b2) => a2 + b2) / 60; + const maxFrameTime = Math.max(...this.frameTimings); + const minFrameTime = Math.min(...this.frameTimings); + console.log(`\u{1F52C} KidLisp Performance (60 frames): + Avg: ${avgFrameTime.toFixed(2)}ms, Min: ${minFrameTime.toFixed(2)}ms, Max: ${maxFrameTime.toFixed(2)}ms + Total evaluations: ${this.totalEvaluations} + Top expressions:`, Array.from(this.evaluationCounts.entries()).sort((a2, b2) => b2[1] - a2[1]).slice(0, 5)); + this.frameTimings = []; + } + } + trackEvaluation(type) { + if (!this.performanceEnabled) return; + this.totalEvaluations++; + this.evaluationCounts.set(type, (this.evaluationCounts.get(type) || 0) + 1); + } + // Parse timing tokens used by syntax highlighting animation. + // Supports second (0.5s, 1s...) and frame (1f, 2f...) forms. + parseTimingTokenMeta(timingToken) { + if (typeof timingToken !== "string") return null; + let match = timingToken.match(/^(\d*\.?\d+)([sf])(\.\.\.?)$/); + if (match) { + const value = parseFloat(match[1]); + if (!Number.isFinite(value)) return null; + const unit = match[2]; + const intervalMs = unit === "s" ? value * 1e3 : value / 60 * 1e3; + return { + token: timingToken, + value, + unit, + isCycle: true, + isDelay: false, + isInstant: false, + intervalMs: Math.max(0, intervalMs) + }; + } + match = timingToken.match(/^(\d*\.?\d+)([sf])(!)?$/); + if (match) { + const value = parseFloat(match[1]); + if (!Number.isFinite(value)) return null; + const unit = match[2]; + const intervalMs = unit === "s" ? value * 1e3 : value / 60 * 1e3; + return { + token: timingToken, + value, + unit, + isCycle: false, + isDelay: true, + isInstant: Boolean(match[3]), + intervalMs: Math.max(0, intervalMs) + }; + } + return null; + } + getTimingIntervalMs(timingToken) { + const timingMeta = this.parseTimingTokenMeta(timingToken); + if (!timingMeta) return 1e3; + return Math.max(16, timingMeta.intervalMs); + } + getTimingBlinkProfile(timingToken) { + const timingMeta = this.parseTimingTokenMeta(timingToken); + if (!timingMeta) { + return { + isFast: false, + intervalMs: 1e3, + pulseMs: 1e3, + blinkWindowMs: 80 + }; + } + const intervalMs = Math.max(16, timingMeta.intervalMs); + const isFast = intervalMs < 1e3; + if (!isFast) { + return { + isFast: false, + intervalMs, + pulseMs: intervalMs, + blinkWindowMs: Math.min(200, Math.max(80, intervalMs * 0.25)) + }; + } + const pulseMs = Math.max(60, Math.min(160, intervalMs * 4)); + const blinkWindowMs = Math.max(20, Math.min(80, pulseMs * 0.45)); + return { + isFast: true, + intervalMs, + pulseMs, + blinkWindowMs + }; + } + getTimingEditBlinkState(timingToken, now = this._now(), offsetMs = 0) { + const profile = this.getTimingBlinkProfile(timingToken); + const adjustedNow = now + offsetMs; + const pulseMs = Math.max(1, profile.pulseMs); + const phaseMs = (adjustedNow % pulseMs + pulseMs) % pulseMs; + return { + ...profile, + phaseMs, + isBlinking: phaseMs < profile.blinkWindowMs + }; + } + getTimingCyclePosition(timingToken, totalArgs, now = this._now(), offsetMs = 0) { + if (!Number.isFinite(totalArgs) || totalArgs <= 0) return 0; + const adjustedNow = now + offsetMs; + const intervalMs = this.getTimingIntervalMs(timingToken); + return Math.floor(adjustedNow / intervalMs) % totalArgs; + } + // Mark a timing expression as triggered for blinking + markTimingTriggered(timingToken) { + const now = performance.now(); + const blinkProfile = this.getTimingBlinkProfile(timingToken); + const isDelayTimer = /^\d*\.?\d+[sf]!?$/.test(timingToken); + const existingBlink = this.timingBlinks.get(timingToken); + if (blinkProfile.isFast && existingBlink && now - existingBlink.triggerTime < blinkProfile.pulseMs) { + this.timingBlinks.set(timingToken, { + ...existingBlink, + duration: Math.max(existingBlink.duration || 0, 200), + blinkWindowMs: blinkProfile.blinkWindowMs, + pulseMs: blinkProfile.pulseMs, + isFast: true, + isDelayTimer + }); + return; + } + const flashDuration = isDelayTimer ? Math.max(200, blinkProfile.pulseMs) : this.blinkDuration; + this.timingBlinks.set(timingToken, { + triggerTime: now, + duration: flashDuration, + blinkWindowMs: blinkProfile.blinkWindowMs, + pulseMs: blinkProfile.pulseMs, + isFast: blinkProfile.isFast, + isDelayTimer + }); + } + // Check if a timing token should be blinking + isTimingBlinking(timingToken) { + if (!this.timingBlinks.has(timingToken)) return false; + const blinkInfo = this.timingBlinks.get(timingToken); + const now = performance.now(); + const elapsed = now - blinkInfo.triggerTime; + if (elapsed > blinkInfo.duration) { + this.timingBlinks.delete(timingToken); + return false; + } + const blinkWindowMs = blinkInfo.blinkWindowMs ?? 80; + if (blinkInfo.isFast) { + const pulseMs = Math.max(1, blinkInfo.pulseMs ?? 120); + const pulsePhase = elapsed % pulseMs; + return pulsePhase < blinkWindowMs; + } + const isDelayTimer = blinkInfo.isDelayTimer ?? /^\d*\.?\d+[sf]!?$/.test(timingToken); + if (isDelayTimer) { + return elapsed < blinkWindowMs; + } + return elapsed < blinkWindowMs; + } + // Scan source code for $codes and mark them as loading for syntax highlighting + scanAndMarkEmbeddedCodes(source) { + const codeMatches = source.match(/\$[0-9A-Za-z]+/g); + if (codeMatches) { + codeMatches.forEach((fullCode) => { + const cacheId = fullCode.substring(1); + if (!this.loadedEmbeddedLayers.has(cacheId)) { + this.loadingEmbeddedLayers.add(cacheId); + } + }); + this.preloadEmbeddedCodes(codeMatches); + } + } + // Preload all embedded codes in parallel for faster loading + preloadEmbeddedCodes(codeMatches) { + const uniqueCacheIds = [...new Set(codeMatches.map((code2) => code2.substring(1)))]; + const needsFetching = uniqueCacheIds.filter((cacheId) => { + if (this.embeddedSourceCache.has(cacheId)) { + this.loadingEmbeddedLayers.delete(cacheId); + this.loadedEmbeddedLayers.add(cacheId); + return false; + } + if (globalCodeCache.has(cacheId)) { + this.embeddedSourceCache.set(cacheId, globalCodeCache.get(cacheId)); + this.loadingEmbeddedLayers.delete(cacheId); + this.loadedEmbeddedLayers.add(cacheId); + return false; + } + const fetchKey = `${cacheId}_fetching_source`; + if (this.embeddedLayerCache.has(fetchKey)) { + return false; + } + return true; + }); + if (needsFetching.length === 0) { + return; + } + needsFetching.forEach((cacheId) => { + const fetchKey = `${cacheId}_fetching_source`; + this.embeddedLayerCache.set(fetchKey, true); + getCachedCodeMultiLevel(cacheId).then((source) => { + this.embeddedLayerCache.delete(fetchKey); + this.loadingEmbeddedLayers.delete(cacheId); + this.loadedEmbeddedLayers.add(cacheId); + if (source) { + this.embeddedSourceCache.set(cacheId, source); + } else { + console.warn(`\u274C Failed to preload $code: ${cacheId}`); + } + }).catch((error) => { + console.error(`\u274C Preload error for ${cacheId}:`, error); + this.embeddedLayerCache.delete(fetchKey); + this.loadingEmbeddedLayers.delete(cacheId); + }); + }); + } + // Mark a delay timer as entering its active display period + markDelayTimerActive(timingToken) { + const now = performance.now(); + this.delayTimerActivePeriods.set(timingToken, { + activateTime: now, + duration: this.delayTimerActiveDuration + }); + } + // Check if a delay timer is in its active display period + isDelayTimerActive(timingToken) { + if (!this.delayTimerActivePeriods.has(timingToken)) { + return false; + } + const activeInfo = this.delayTimerActivePeriods.get(timingToken); + const now = performance.now(); + const elapsed = now - activeInfo.activateTime; + if (elapsed > activeInfo.duration) { + this.delayTimerActivePeriods.delete(timingToken); + return false; + } + return true; + } + // Format an expression for HUD display (convert to readable text) + formatExpressionForHUD(expr) { + if (typeof expr === "string") { + return expr; + } + if (typeof expr === "number") { + return expr.toString(); + } + if (Array.isArray(expr)) { + if (expr.length === 0) return "()"; + if (expr.length === 1) return `(${expr[0]})`; + const head = expr[0]; + const args = expr.slice(1); + if (head === "ink" && args.length === 1) { + return `(ink ${args[0]})`; + } + if (head === "line" && args.length === 0) { + return "(line)"; + } + if (head === "line" && args.length > 0) { + return `(line ${args.join(" ")})`; + } + if (head === "box" && args.length === 0) { + return "(box)"; + } + if (head === "box" && args.length > 0) { + return `(box ${args.join(" ")})`; + } + const displayArgs = args.slice(0, 3); + const argsText = displayArgs.join(" "); + const ellipsis = args.length > 3 ? "..." : ""; + return `(${head} ${argsText}${ellipsis})`; + } + return String(expr); + } + // Detect first-line color from AST without executing code + detectFirstLineColor() { + if (!this.ast) return; + const firstItem = Array.isArray(this.ast) && this.ast.length > 0 ? this.ast[0] : this.ast; + let colorName = null; + if (typeof firstItem === "string") { + colorName = firstItem; + } else if (Array.isArray(firstItem) && firstItem.length >= 1 && typeof firstItem[0] === "string") { + colorName = firstItem[0]; + } + if (colorName) { + const globalEnv = this.getGlobalEnv(); + if (isValidRGBString(colorName)) { + const rgbValues = parseRGBString(colorName); + if (rgbValues) { + this.firstLineColor = rgbValues; + this.persistentFirstLineColor = rgbValues; + if (typeof window !== "undefined" && window.setPersistentFirstLineColor) { + window.setPersistentFirstLineColor(rgbValues); + } else if (typeof globalThis !== "undefined" && globalThis.storePersistentFirstLineColor) { + globalThis.storePersistentFirstLineColor(rgbValues); + } + return; + } + } + if (globalEnv[colorName] && typeof globalEnv[colorName] === "function") { + try { + const dummyApi = { + screen: { width: 100, height: 100 }, + isSafe: true + }; + const safeApi = new Proxy(dummyApi, { + get: (target, prop) => { + if (prop in target) return target[prop]; + return () => { + }; + } + }); + const result = globalEnv[colorName](safeApi); + const isValidColor = Array.isArray(result) || typeof result === "string" && (result.startsWith("fade:") || result === "rainbow" || result === "zebra"); + if (isValidColor) { + this.firstLineColor = colorName; + this.persistentFirstLineColor = colorName; + if (typeof window !== "undefined" && window.setPersistentFirstLineColor) { + window.setPersistentFirstLineColor(colorName); + } else if (typeof globalThis !== "undefined" && globalThis.storePersistentFirstLineColor) { + globalThis.storePersistentFirstLineColor(colorName); + } + } + } catch (e2) { + } + } else if (colorName.match(/^c\d+$/)) { + const colorIndex = parseInt(colorName.substring(1)); + if (staticColorMap[colorIndex]) { + this.firstLineColor = colorName; + this.persistentFirstLineColor = colorName; + if (typeof window !== "undefined" && window.setPersistentFirstLineColor) { + window.setPersistentFirstLineColor(colorName); + } + } + } else if (colorName.match(/^p\d+$/)) { + const patternIndex = parseInt(colorName.substring(1)); + if (patternIndex === 0 || patternIndex === 1) { + this.firstLineColor = colorName; + this.persistentFirstLineColor = colorName; + if (typeof window !== "undefined" && window.setPersistentFirstLineColor) { + window.setPersistentFirstLineColor(colorName); + } + } + } else if (colorName.startsWith("fade:")) { + const fadeColors2 = this.parseFadeString(colorName); + if (fadeColors2 && fadeColors2.length >= 2) { + this.firstLineColor = colorName; + if (typeof window !== "undefined" && window.setPersistentFirstLineColor) { + window.setPersistentFirstLineColor(colorName); + } + } + } + } + } + // Color a fade expression like "fade:red-blue-yellow" or "fade:red-blue:vertical" with each color in its own color + colorFadeExpression(fadeToken) { + if (!fadeToken.startsWith("fade:")) { + return fadeToken; + } + const parts = fadeToken.split(":"); + if (parts.length < 2) { + return fadeToken; + } + let isNeat = true; + let colorPart = parts[1]; + let direction = parts[2]; + if (parts[1] === "dirty" && parts[2]) { + isNeat = false; + colorPart = parts[2]; + direction = parts[3]; + } else if (parts[2] === "dirty") { + isNeat = false; + direction = void 0; + } else if (parts[3] === "dirty") { + isNeat = false; + direction = parts[2]; + } else if (parts.includes("dirty")) { + isNeat = false; + const filteredParts = parts.filter((p) => p !== "dirty"); + if (filteredParts.length >= 2) { + colorPart = filteredParts[1]; + direction = filteredParts[2]; + } + } else if (parts[1] === "neat" && parts[2]) { + isNeat = true; + colorPart = parts[2]; + direction = parts[3]; + } else if (parts[2] === "neat") { + isNeat = true; + direction = void 0; + } else if (parts[3] === "neat") { + isNeat = true; + direction = parts[2]; + } else if (parts.includes("neat")) { + isNeat = true; + const filteredParts = parts.filter((p) => p !== "neat"); + if (filteredParts.length >= 2) { + colorPart = filteredParts[1]; + direction = filteredParts[2]; + } + } + const colorNames = colorPart.split("-"); + let result = "\\mediumseagreen\\fade\\lime\\:"; + if (isNeat && parts.includes("neat")) { + result += "\\cyan\\neat\\lime\\:"; + } else if (!isNeat) { + result += "\\orange\\dirty\\lime\\:"; + } + for (let i2 = 0; i2 < colorNames.length; i2++) { + const colorName = colorNames[i2]; + let colorValue = "white"; + if (cssColors2 && cssColors2[colorName]) { + const rgbColor = cssColors2[colorName]; + if (Array.isArray(rgbColor) && rgbColor.length >= 3) { + colorValue = `${rgbColor[0]},${rgbColor[1]},${rgbColor[2]}`; + } + } else if (colorName.match(/^c\d+$/)) { + const index = parseInt(colorName.substring(1)); + if (staticColorMap && staticColorMap[index]) { + const rgbColor = staticColorMap[index]; + if (Array.isArray(rgbColor) && rgbColor.length >= 3) { + colorValue = `${rgbColor[0]},${rgbColor[1]},${rgbColor[2]}`; + } + } + } else if (colorName === "rainbow") { + colorValue = "RAINBOW"; + } else if (colorName === "zebra") { + colorValue = "ZEBRA"; + } + if (colorValue === "RAINBOW") { + const rainbowColors2 = ["red", "orange", "yellow", "lime", "blue", "purple", "magenta"]; + for (let charIndex = 0; charIndex < colorName.length; charIndex++) { + const charColor = rainbowColors2[charIndex % rainbowColors2.length]; + result += `\\${charColor}\\${colorName[charIndex]}`; + } + } else if (colorValue === "ZEBRA") { + const zebraColors2 = ["black", "white"]; + for (let charIndex = 0; charIndex < colorName.length; charIndex++) { + const charColor = zebraColors2[charIndex % zebraColors2.length]; + result += `\\${charColor}\\${colorName[charIndex]}`; + } + } else { + result += `\\${colorValue}\\${colorName}`; + } + if (i2 < colorNames.length - 1) { + result += "\\mediumseagreen\\-"; + } + } + if (direction) { + result += "\\lime\\:"; + const numericAngle = parseFloat(direction); + if (!isNaN(numericAngle)) { + result += `\\yellow\\${direction}`; + } else { + result += `\\cyan\\${direction}`; + } + } + return result; + } + // Helper method to parse and validate fade strings + // Helper method to validate if a string is a valid color + isValidColorString(colorStr) { + if (cssColors2[colorStr]) return true; + if (colorStr.match(/^c\d+$/)) { + const index = parseInt(colorStr.substring(1)); + return staticColorMap[index] !== void 0; + } + if (colorStr === "rainbow" || colorStr === "zebra") return true; + return false; + } + parseFadeString(fadeString) { + if (!fadeString.startsWith("fade:")) return null; + const parts = fadeString.split(":"); + if (parts.length < 2) return null; + const modifiers = /* @__PURE__ */ new Set(["neat", "dirty"]); + let colorPart = null; + for (let i2 = 1; i2 < parts.length; i2 += 1) { + const segment = parts[i2]; + if (!segment || modifiers.has(segment)) { + continue; + } + colorPart = segment; + break; + } + if (!colorPart) return null; + const colorNames = colorPart.split("-"); + if (colorNames.length < 2) return null; + const validColors = []; + for (const colorName of colorNames) { + if (this.isValidColorString(colorName)) { + if (cssColors2[colorName]) { + validColors.push(cssColors2[colorName]); + } else if (colorName.match(/^c\d+$/)) { + const index = parseInt(colorName.substring(1)); + if (staticColorMap[index]) { + validColors.push(staticColorMap[index]); + } + } else if (colorName === "rainbow") { + validColors.push([255, 0, 0]); + } else if (colorName === "zebra") { + validColors.push([0, 0, 0]); + } + } else { + return null; + } + } + const result = validColors.length >= 2 ? validColors : null; + return result; + } + // Get the background fill color for reframe operations + getBackgroundFillColor() { + if (!this.firstLineColor) { + if (typeof window !== "undefined" && window.getPersistentFirstLineColor) { + const persistentColor = window.getPersistentFirstLineColor(); + if (persistentColor) { + this.firstLineColor = persistentColor; + } + } + if (!this.firstLineColor && this.persistentFirstLineColor) { + this.firstLineColor = this.persistentFirstLineColor; + } + if (!this.firstLineColor && typeof globalThis !== "undefined" && globalThis.getPersistentFirstLineColor) { + const globalPersistentColor = globalThis.getPersistentFirstLineColor(); + if (globalPersistentColor) { + this.firstLineColor = globalPersistentColor; + } + } + if (!this.firstLineColor && this.ast) { + this.detectFirstLineColor(); + } + } + return this.firstLineColor; + } + // Clear KidLisp ink state (reset to undefined) + clearInkState() { + this.inkState = void 0; + this.inkStateSet = false; + } + // Get current KidLisp ink state + getInkState() { + return this.inkStateSet ? this.inkState : void 0; + } + // Resolve a color name/value to RGBA array [r, g, b, a] + // Used for safely filling buffers without calling wipe + resolveColorToRGBA(color3, api) { + if (Array.isArray(color3)) { + return color3.length === 3 ? [...color3, 255] : color3; + } + if (typeof color3 === "string") { + if (cssColors2 && cssColors2[color3]) { + const rgb = cssColors2[color3]; + return Array.isArray(rgb) ? [...rgb, 255] : [rgb, rgb, rgb, 255]; + } + if (color3.match(/^c\d+$/)) { + const colorIndex = parseInt(color3.substring(1)); + if (staticColorMap[colorIndex]) { + const rgb = staticColorMap[colorIndex]; + return [...rgb, 255]; + } + } + if (isValidRGBString(color3)) { + const rgb = parseRGBString(color3); + if (rgb) { + return rgb.length === 3 ? [...rgb, 255] : rgb; + } + } + } + return [0, 0, 0, 0]; + } + // Check if the AST contains microphone-related functions + containsMicrophoneFunctions(ast) { + if (!ast) return false; + if (typeof ast === "string") { + return ast === "mic"; + } + if (Array.isArray(ast)) { + return ast.some((item) => this.containsMicrophoneFunctions(item)); + } + return false; + } + // Optimize common patterns - this could be expanded for other patterns + compileOptimizedRepeat(ast) { + return null; + } + // Method to pre-compile AST for optimizations + precompileAST(ast) { + if (!Array.isArray(ast)) return ast; + const optimized = []; + for (const item of ast) { + if (Array.isArray(item)) { + const compiledOptimization = this.compileOptimizedRepeat(item); + if (compiledOptimization) { + optimized.push({ optimized: true, func: compiledOptimization }); + } else { + const expanded = this.expandFastMathMacros(item); + optimized.push(this.precompileAST(expanded)); + } + } else { + optimized.push(this.expandFastMathMacros(item)); + } + } + return optimized; + } + // Macro expansion step: convert fastmath expressions like "i*2" to ["*", "i", 2] + expandFastMathMacros(expr) { + if (typeof expr === "string") { + const parenMatch = expr.match( + /^(\([^)]+\))\s*([+\-*/%])\s*(\w+|\d+(?:\.\d+)?)$/ + ); + if (parenMatch) { + const [, parenExpr, op, right] = parenMatch; + const innerExpr = parenExpr.slice(1, -1).trim(); + const tokens = innerExpr.split(/\s+/).map((token) => { + if (/^\d+(?:\.\d+)?$/.test(token)) { + return parseFloat(token); + } + return token; + }); + const rightValue = /^\d+(?:\.\d+)?$/.test(right) ? parseFloat(right) : right; + return [op, tokens, rightValue]; + } + const chainedMatch = expr.match( + /^(\w+)\s*([+\-*/%])\s*(\w+|\d+(?:\.\d+)?)\s*([+\-*/%])\s*(\w+|\d+(?:\.\d+)?)$/ + ); + if (chainedMatch) { + const [, a2, op1, b2, op2, c4] = chainedMatch; + const conv = (t2) => /^\d+(?:\.\d+)?$/.test(t2) ? parseFloat(t2) : t2; + const A = conv(a2), B = conv(b2), C = conv(c4); + const mulDiv = (op) => op === "*" || op === "/" || op === "%"; + if (!mulDiv(op1) && mulDiv(op2)) { + return [op1, A, [op2, B, C]]; + } + return [op2, [op1, A, B], C]; + } + const infixMatch = expr.match( + /^(\w+)\s*([+\-*/%])\s*(\w+|\d+(?:\.\d+)?)$/ + ); + if (infixMatch) { + const [, left, op, right] = infixMatch; + const rightValue = /^\d+(?:\.\d+)?$/.test(right) ? parseFloat(right) : right; + const result = [op, left, rightValue]; + return result; + } + } else if (Array.isArray(expr)) { + const expanded = []; + for (let i2 = 0; i2 < expr.length; i2++) { + const current = expr[i2]; + const next = expr[i2 + 1]; + if (Array.isArray(current) && typeof next === "string") { + const mathMatch = next.match(/^([+\-*/%])(\d+(?:\.\d+)?)$/); + if (mathMatch) { + const [, op, num] = mathMatch; + expanded.push([ + op, + this.expandFastMathMacros(current), + parseFloat(num) + ]); + i2++; + continue; + } + } + expanded.push(this.expandFastMathMacros(current)); + } + return expanded; + } + return expr; + } + // Update browser URL to show the short $prefixed code + updateBrowserUrl(shortCode, api) { + try { + if (typeof window !== "undefined" && (window.acPACK_MODE || window.location?.origin === "null")) { + return; + } + if (typeof window !== "undefined" && window.history && window.location && !api.net?.iframe) { + const currentPath2 = window.location.pathname; + const newPath = `/$${shortCode}`; + if (currentPath2 !== newPath) { + window.history.replaceState(null, "", newPath); + console.log(`%c\u{1F517} ${newPath}`, "color: #3F51B5; font-weight: bold;"); + } + } + } catch (error) { + console.warn("Failed to update browser URL:", error); + } + } + // Generate QR code as a data URI for a given code + async generateQRDataUri(code2) { + try { + const url = `https://prompt.ac/$${code2}`; + const { ErrorCorrectLevel: ErrorCorrectLevel2 } = await import("../dep/@akamfoad/qr/qr.mjs"); + const cells = qrcode(url, { errorCorrectLevel: ErrorCorrectLevel2.M }).modules; + const cellSize = 4; + const qrSize = cells.length * cellSize; + if (typeof document === "undefined") { + console.warn("\u26A0\uFE0F QR generation requires browser environment (document not available)"); + return null; + } + const canvas = document.createElement("canvas"); + canvas.width = qrSize; + canvas.height = qrSize; + const ctx = canvas.getContext("2d"); + for (let y = 0; y < cells.length; y++) { + for (let x = 0; x < cells.length; x++) { + const isBlack = cells[y][x]; + ctx.fillStyle = isBlack ? "black" : "white"; + ctx.fillRect(x * cellSize, y * cellSize, cellSize, cellSize); + } + } + return canvas.toDataURL("image/png"); + } catch (error) { + console.warn("Failed to generate QR data URI:", error); + return null; + } + } + // Cache kidlisp source code for QR generation + async cacheKidlispSource(source, api) { + if (this.isLispFile) { + return; + } + const alreadyCached = this.cachedCode || getCachedCode(source); + if (alreadyCached || isCachingInProgress(source)) { + return; + } + const cacheEnabled = api.store?.["kidlisp:cache-enabled"] !== false; + if (!cacheEnabled || !source || source.trim().length === 0) { + return; + } + setCachingInProgress(source, true); + try { + const isObjktMode = checkPackMode(); + if (isObjktMode) { + const simpleHash = source.split("").reduce((a2, b2) => { + a2 = (a2 << 5) - a2 + b2.charCodeAt(0); + return a2 & a2; + }, 0); + const teiaCode = Math.abs(simpleHash).toString(36).substring(0, 8); + this.shortUrl = `teia/$${teiaCode}`; + this.cachedCode = teiaCode; + setCachedCode(source, teiaCode); + setCachingInProgress(source, false); + return; + } + if (typeof window !== "undefined" && window.acSPIDER) { + const simpleHash = source.split("").reduce((a2, b2) => { + a2 = (a2 << 5) - a2 + b2.charCodeAt(0); + return a2 & a2; + }, 0); + const spiderCode = Math.abs(simpleHash).toString(36).substring(0, 8); + this.shortUrl = `spider/$${spiderCode}`; + this.cachedCode = spiderCode; + setCachedCode(source, spiderCode); + setCachingInProgress(source, false); + return; + } + const loc = typeof window !== "undefined" ? window.location : typeof self !== "undefined" ? self.location : null; + if (loc) { + const urlParams = new URLSearchParams(loc.search); + if (urlParams.has("nocache")) { + setCachingInProgress(source, false); + return; + } + } + const headers2 = { "Content-Type": "application/json" }; + try { + let token = api.kidlispAuthToken; + if (!token) { + token = await api.authorize(); + } + if (token) { + headers2.Authorization = `Bearer ${token}`; + log.auth.debug("Using auth token for store-kidlisp"); + } + } catch (err) { + } + const endpoints = ["/api/store-kidlisp"]; + if (typeof window !== "undefined") { + const originHost = window.location?.host || ""; + if (!originHost.includes("aesthetic.computer")) { + endpoints.push("https://aesthetic.computer/api/store-kidlisp"); + } + } else { + endpoints.push("https://aesthetic.computer/api/store-kidlisp"); + } + let response; + let lastError; + for (const endpoint of endpoints) { + const attemptLabel = endpoint.includes("aesthetic.computer") ? "production" : "local"; + log.store.debug(`store-kidlisp attempt (${attemptLabel}):`, endpoint); + if (api.kidlispCreateCode) { + console.log("\u{1F4BE} Caching NEW code:", { + sourceLength: source.length, + sourcePreview: source.substring(0, 100), + endpoint + }); + } + try { + const attempt = await fetch(endpoint, { + method: "POST", + headers: headers2, + body: JSON.stringify({ source }) + }); + if (attempt.ok) { + response = attempt; + log.store.success(`store-kidlisp success via ${attemptLabel}`); + break; + } + lastError = new Error(`HTTP ${attempt.status}: ${attempt.statusText || "Unknown"} (${endpoint})`); + log.store.warn(`store-kidlisp ${attemptLabel} failed:`, attempt.status, attempt.statusText); + } catch (err) { + lastError = err; + log.store.warn(`store-kidlisp ${attemptLabel} fetch error:`, err?.message || err); + } + } + if (response?.ok) { + const data = await response.json(); + this.shortUrl = `aesthetic.computer/$${data.code}`; + this.cachedCode = data.code; + setCachedCode(source, data.code); + const { logKidlispCode } = await import("./headers.mjs"); + logKidlispCode(source, data.code, api.dark, { quiet: api.inIframe }); + if (api.kidlispCreateCode) { + console.log("\u{1F680} createCode flag detected, sending code to parent..."); + console.log("\u{1F4E6} Code to send:", data.code); + let qrDataUri = null; + if (api.send) { + api.send({ + type: "post-to-parent", + content: { + type: "kidlisp-code-created", + code: data.code, + qr: qrDataUri + } + }); + api.send({ + type: "post-to-parent", + content: { + type: "setCode", + value: data.code, + qr: qrDataUri + } + }); + console.log("\u2705 Messages sent to parent via api.send"); + } else { + console.warn("\u26A0\uFE0F api.send not available"); + } + } + this.updateBrowserUrl(data.code, api); + } else { + log.store.warn("store-kidlisp failed on all endpoints:", lastError?.message || lastError); + const fallbackCode = Math.abs(source.split("").reduce((hash, ch) => { + hash = (hash << 5) - hash + ch.charCodeAt(0); + return hash & hash; + }, 0)).toString(36).substring(0, 8); + this.shortUrl = `local/$${fallbackCode}`; + this.cachedCode = fallbackCode; + setCachedCode(source, fallbackCode); + log.store.warn(`Using local fallback code $${fallbackCode} (not stored remotely)`); + } + } catch (error) { + } finally { + setCachingInProgress(source, false); + } + } + // Parse and evaluate a lisp source module + // into a running aesthetic computer piece. + module(source, isLispFile = false) { + if (!this.codeSubstitutionDepth) this.codeSubstitutionDepth = 0; + if (this.codeSubstitutionDepth > 5) { + console.warn(`\u274C KidLisp: Maximum $code substitution depth exceeded, preventing infinite recursion`); + return null; + } + resetZebraCache(); + const sourceChanged = this.currentSource !== source; + this.currentSource = source; + const shouldClearOnce = !isLispFile || sourceChanged; + this.reset(shouldClearOnce, sourceChanged); + this.firstLineColor = null; + this.isLispFile = isLispFile; + if (!this.preserveEmbeddedLayers) { + this.clearEmbeddedLayerCache(); + if (sourceChanged) { + this.clearBakedLayers(); + } + } else { + console.log(`\u{1F512} HEADLESS: Preserving ${this.embeddedLayers?.length || 0} embedded layers (preserveEmbeddedLayers=true)`); + } + const chaosResult = isChaoticSource(source); + if (chaosResult.isChaotic) { + console.log(`\u{1F300} Chaos mode detected (${Math.round(chaosResult.confidence * 100)}% confidence): ${chaosResult.reason}`); + this.chaosMode = { + active: true, + source, + confidence: chaosResult.confidence, + reason: chaosResult.reason, + stats: chaosResult.stats + }; + return [["__chaos__", source]]; + } + this.chaosMode = null; + perfStart("parse"); + const parsed = this.parse(source); + perfEnd("parse"); + if (parsed.length === 1) { + } + if (!this.isEmbeddedContext && parsed.length === 1 && // Only substitute if it's a bare $code reference, not a function call with args + (typeof parsed[0] === "string" && parsed[0].startsWith("$") || Array.isArray(parsed[0]) && parsed[0].length === 1 && typeof parsed[0][0] === "string" && parsed[0][0].startsWith("$"))) { + const cacheCode = typeof parsed[0] === "string" ? parsed[0] : parsed[0][0]; + const cacheId = cacheCode.slice(1); + console.log(`\u{1F517} KidLisp: Detected single $code (${cacheCode}), fetching cached source...`); + if (/^[0-9A-Za-z]{3,12}$/.test(cacheId)) { + try { + if (globalCodeCache.has(cacheId)) { + const cachedSource = globalCodeCache.get(cacheId); + console.log(`\u2705 Found cached source in memory for ${cacheCode}, substituting...`); + this.codeSubstitutionDepth++; + const result = this.module(cachedSource, isLispFile); + this.codeSubstitutionDepth--; + return result; + } else { + if (this.isEmbeddedContext) { + console.warn(`\u26A0\uFE0F $code ${cacheCode} not in cache and embedded context - skipping network fetch`); + } else { + console.log(`\u23F3 Cache not in memory for ${cacheCode}, starting async fetch...`); + getCachedCodeMultiLevel(cacheId).then((cachedSource) => { + if (cachedSource) { + console.log(`\u2705 Loaded ${cacheCode} from network/storage, cached for future use`); + globalCodeCache.set(cacheId, cachedSource); + } + }).catch((error) => { + console.warn(`\u274C Failed to load cached source for ${cacheCode}:`, error); + }); + if (typeof window !== "undefined") { + console.log(`\u{1F50D} DEBUG: Navigating to ${cacheCode} (window exists)`); + window.location.href = `/${cacheCode}`; + return null; + } else { + console.log(`\u{1F50D} DEBUG: No window object, not navigating (returning null anyway to prevent running stale code)`); + return null; + } + } + } + } catch (error) { + console.warn(`\u274C Error processing ${cacheCode}:`, error); + if (typeof window !== "undefined") { + window.location.href = `/${cacheCode}`; + return null; + } + } + } else { + console.warn(`\u274C Invalid cache ID format: ${cacheId}`); + if (typeof window !== "undefined") { + window.location.href = `/${cacheCode}`; + return null; + } + } + } + perfStart("ast-copy"); + this.ast = JSON.parse(JSON.stringify(parsed)); + perfEnd("ast-copy"); + perfStart("precompile"); + this.ast = this.precompileAST(this.ast); + perfEnd("precompile"); + this.initializeSyntaxHighlighting(source); + this.cachedOwnerHandle = null; + this.cachedOwnerSub = null; + return { + boot: ({ wipe, params, clock, screen: screen2, sound: sound2, delay, pieceCount, net, backgroundFill, fps, colon }) => { + this.lastUsedApi = { wipe, params, clock, screen: screen2, sound: sound2, delay, pieceCount, net, backgroundFill, fps }; + clock?.resync?.(); + net?.preloadTypeface?.("MatrixChunky8"); + this.forcedFps = null; + this.targetFps = 60; + if (colon && colon.length > 0) { + const colonFps = parseFloat(colon[0]); + if (!isNaN(colonFps) && colonFps > 0 && colonFps <= 240 && /^\d+(\.\d+)?$/.test(String(colon[0]))) { + this.targetFps = colonFps; + this.forcedFps = colonFps; + } + } + if (fps && typeof fps === "function") { + fps(this.targetFps); + if (!getPackMode()) { + log.lisp.debug(`Default FPS set to: ${this.targetFps}${this.forcedFps ? " (forced)" : ""}`); + } + } + this.globalDef.paramA = params[0]; + this.globalDef.paramB = params[1]; + this.globalDef.paramC = params[2]; + if (sound2?.microphone) { + this.microphoneApi = sound2.microphone; + const usesMicrophone = this.containsMicrophoneFunctions(this.ast); + if (usesMicrophone && this.microphoneApi.permission === "granted" && sound2.enabled?.()) { + console.log( + "\u{1F3A4} Boot: Auto-connecting microphone (piece uses mic functions)" + ); + delay(() => { + this.microphoneApi.connect(); + }, 15); + } else if (usesMicrophone) { + console.log( + "\u{1F3A4} Boot: Piece uses microphone but permission not granted or sound disabled" + ); + } + } else { + } + if (!this.firstLineColor && this.ast) { + this.detectFirstLineColor(); + } + this.needsInitialWipe = true; + if (this.firstLineColor) { + wipe(this.firstLineColor); + } else { + wipe("erase"); + } + this.inkState = void 0; + this.inkStateSet = false; + }, + paint: ($) => { + if (typeof self !== "undefined" && self.__gpuFailoverOccurred) { + self.__gpuFailoverOccurred = false; + this.frameCount = 0; + this.needsInitialWipe = true; + console.log("\u{1F3AE} GPU failover detected \u2014 resetting piece for clean feedback loop"); + } + this.startFrame(); + const cacheDelayFrames = 0; + if (!this.isEmbeddedContext && this.frameCount >= cacheDelayFrames && !this.cachedCode && !this.cacheInitiated) { + this.cacheInitiated = true; + if ($.kidlispCreateCode) { + console.log("\u{1F3A8} paint() triggering cache for NEW code:", { + sourceLength: source.length, + sourcePreview: source.substring(0, 100) + }); + } + this.cacheKidlispSource(source, $); + } + this.clearSyntaxSignals(); + this.updateHUDWithSyntaxHighlighting($); + if (this.perf.enabled) { + this.perf.evalCallCount = 0; + this.perf.bodyProcessCount = 0; + if (this.frameCache) { + this.frameCache.clear(); + } + } + if (this.inkStateSet && this.inkState !== void 0) { + $.ink?.(this.inkState); + } else { + $.ink?.(void 0); + } + perfStart("frame-evaluation"); + try { + this.postEmbedCommands = []; + this.postCompositeCommands = []; + this.inEmbedPhase = false; + this.scanAndMarkEmbeddedCodes(source); + const totalFrameStart = performance.now(); + if (!this.performanceMode) this.performanceMode = { enabled: false, lastCheck: 0 }; + if (performance.now() - this.performanceMode.lastCheck > 1e3) { + const fps = $.system?.fps || 60; + this.performanceMode.enabled = fps < 30; + this.performanceMode.lastCheck = performance.now(); + if (this.performanceMode.enabled) { + } + } + this.frameCache = /* @__PURE__ */ new Map(); + this.localEnvLevel = 0; + this.localEnv = this.localEnvStore[this.localEnvLevel]; + const mainEvalStart = performance.now(); + const displayPixels = $.screen.pixels; + const screen2 = { + width: $.screen.width, + height: $.screen.height, + pixels: displayPixels + }; + this.displayBuffer = screen2; + if (this.needsInitialWipe) { + if (this.firstLineColor) { + $.wipe(this.firstLineColor); + } else { + if (screen2 && screen2.pixels) { + screen2.pixels.fill(0); + } + } + this.needsInitialWipe = false; + } + if (!this.layer0) { + this.layer0 = { + width: screen2.width, + height: screen2.height, + pixels: new Uint8ClampedArray(screen2.width * screen2.height * 4) + }; + if (this.firstLineColor) { + const color3 = this.resolveColorToRGBA(this.firstLineColor, $); + if (color3) { + const pixels2 = this.layer0.pixels; + for (let i2 = 0; i2 < pixels2.length; i2 += 4) { + pixels2[i2] = color3[0]; + pixels2[i2 + 1] = color3[1]; + pixels2[i2 + 2] = color3[2]; + pixels2[i2 + 3] = color3[3] !== void 0 ? color3[3] : 255; + } + } + this.layer0NeedsFirstLineWipe = true; + } + } else if (this.layer0.width !== screen2.width || this.layer0.height !== screen2.height) { + const oldPixels = this.layer0.pixels; + const oldWidth = this.layer0.width; + const oldHeight = this.layer0.height; + this.layer0.width = screen2.width; + this.layer0.height = screen2.height; + this.layer0.pixels = new Uint8ClampedArray(screen2.width * screen2.height * 4); + if (this.firstLineColor) { + const color3 = this.resolveColorToRGBA(this.firstLineColor, $); + if (color3) { + const pixels2 = this.layer0.pixels; + for (let i2 = 0; i2 < pixels2.length; i2 += 4) { + pixels2[i2] = color3[0]; + pixels2[i2 + 1] = color3[1]; + pixels2[i2 + 2] = color3[2]; + pixels2[i2 + 3] = color3[3] !== void 0 ? color3[3] : 255; + } + } + } + if (oldPixels && oldPixels.length > 0 && !(oldPixels.buffer && oldPixels.buffer.detached)) { + const copyWidth = Math.min(oldWidth, screen2.width); + const copyHeight = Math.min(oldHeight, screen2.height); + for (let y = 0; y < copyHeight; y++) { + const srcOffset = y * oldWidth * 4; + const destOffset = y * screen2.width * 4; + const rowLength = copyWidth * 4; + if (srcOffset + rowLength <= oldPixels.length && destOffset + rowLength <= this.layer0.pixels.length) { + this.layer0.pixels.set(oldPixels.subarray(srcOffset, srcOffset + rowLength), destOffset); + } + } + } + } + if (screen2 && screen2.pixels) { + $.unmask(); + if (this.bakes && this.bakes[0]) { + const aboutToClearBake = screen2.pixels === this.bakes[0].pixels; + } + if (this.firstLineColor) { + $.wipe(this.firstLineColor); + } else { + screen2.pixels.fill(0); + } + } + if (this.bakes) { + this.currentBakeIndex = -1; + for (let i2 = 0; i2 < this.bakes.length; i2++) { + const bakeLayer = this.bakes[i2]; + if (bakeLayer && (bakeLayer.width !== screen2.width || bakeLayer.height !== screen2.height)) { + const oldPixels = bakeLayer.pixels; + const oldWidth = bakeLayer.width; + const oldHeight = bakeLayer.height; + const newPixels = new Uint8ClampedArray(screen2.width * screen2.height * 4); + newPixels.fill(0); + if (oldPixels && oldPixels.length > 0 && !(oldPixels.buffer && oldPixels.buffer.detached)) { + const copyWidth = Math.min(oldWidth, screen2.width); + const copyHeight = Math.min(oldHeight, screen2.height); + for (let y = 0; y < copyHeight; y++) { + const srcOffset = y * oldWidth * 4; + const destOffset = y * screen2.width * 4; + const rowLength = copyWidth * 4; + if (srcOffset + rowLength <= oldPixels.length && destOffset + rowLength <= newPixels.length) { + newPixels.set(oldPixels.subarray(srcOffset, srcOffset + rowLength), destOffset); + } + } + } + bakeLayer.width = screen2.width; + bakeLayer.height = screen2.height; + bakeLayer.pixels = newPixels; + bakeLayer.burned = false; + } + } + } + this.burnedBuffer = null; + this.preserveLayer0NextFrame = false; + $.page(this.layer0); + if (!$.screen) { + $.screen = { width: this.layer0.width, height: this.layer0.height, pixels: this.layer0.pixels }; + } else { + $.screen.width = this.layer0.width; + $.screen.height = this.layer0.height; + $.screen.pixels = this.layer0.pixels; + } + if (this.layer0NeedsFirstLineWipe && this.firstLineColor) { + try { + $.wipe(this.firstLineColor); + } catch (err) { + console.warn("\u26A0\uFE0F layer0 first-line wipe failed:", err?.message); + } + if ($.backgroundFill) { + try { + $.backgroundFill(this.firstLineColor); + } catch (_) { + } + } + this.layer0NeedsFirstLineWipe = false; + } + withKidlispConsoleCapture(() => this.evaluate(this.ast, $, void 0, void 0, true)); + if (this.currentBakeIndex >= 0 && this.bakes) { + const currentPixels = this.bakes[this.currentBakeIndex] ? Array.from(this.bakes[this.currentBakeIndex].pixels).filter((_, i2) => i2 % 4 === 3 && this.bakes[this.currentBakeIndex].pixels[i2] > 0).length : 0; + this.currentBakeIndex++; + const width2 = $.screen?.width || 256; + const height2 = $.screen?.height || 256; + const bakeBuffer = { + width: width2, + height: height2, + pixels: new Uint8ClampedArray(width2 * height2 * 4) + }; + bakeBuffer.pixels.fill(0); + this.bakes[this.currentBakeIndex] = bakeBuffer; + this.activeBakeBuffer = bakeBuffer; + } + if (VERBOSE) console.log("\u{1F3AC} Finished evaluation"); + const mainEvalTime = performance.now() - mainEvalStart; + this.inEmbedPhase = true; + const embedStart = performance.now(); + const screenBeforeEmbeds = { + width: $.screen.width, + height: $.screen.height, + pixels: $.screen.pixels + // Save the actual buffer reference + }; + if (this.embeddedLayers && this.embeddedLayers.length > 0) { + const frameValue = $.frame || this.frameCount || 0; + this.embeddedLayers.forEach((embeddedLayer, index) => { + if (embeddedLayer.lastFrameEvaluated === frameValue) return; + const shouldEvaluate = this.shouldLayerExecuteThisFrame($, embeddedLayer); + this.renderSingleLayer($, embeddedLayer, frameValue, shouldEvaluate); + }); + } + $.page(screenBeforeEmbeds); + $.screen.width = screenBeforeEmbeds.width; + $.screen.height = screenBeforeEmbeds.height; + $.screen.pixels = screenBeforeEmbeds.pixels; + const embedTime = performance.now() - embedStart; + const totalFrameTime = performance.now() - totalFrameStart; + this.inEmbedPhase = false; + this.postEmbedCommands.forEach((cmd, i2) => { + try { + cmd.func(...cmd.args); + } catch (err) { + console.error(`Error executing post-embed command ${cmd.name}:`, err); + } + }); + this.postEmbedCommands = []; + $.page(screen2); + $.unmask(); + if ($.setEraseTarget) $.setEraseTarget(null, 0); + $.screen.width = screen2.width; + $.screen.height = screen2.height; + $.screen.pixels = screen2.pixels; + const hasBurnedBuffer = this.burnedBuffer && this.burnedBuffer.pixels; + if (hasBurnedBuffer) { + if (this.burnedBuffer.width === screen2.width && this.burnedBuffer.height === screen2.height) { + try { + $.paste(this.burnedBuffer, 0, 0, 1, true); + } catch (error) { + console.warn(`\u26A0\uFE0F Error pasting burnedBuffer:`, error.message); + } + } else { + console.warn(`\u26A0\uFE0F Skipping burnedBuffer paste due to dimension mismatch: burned=${this.burnedBuffer.width}x${this.burnedBuffer.height}, screen=${screen2.width}x${screen2.height}`); + } + if (this.embeddedLayers && this.embeddedLayers.length > 0) { + const layersForComposite = []; + for (let i2 = 0, len5 = this.embeddedLayers.length; i2 < len5; i2++) { + const embeddedLayer = this.embeddedLayers[i2]; + if (embeddedLayer.buffer && embeddedLayer.buffer.pixels) { + layersForComposite.push({ + pixels: embeddedLayer.buffer.pixels, + width: embeddedLayer.buffer.width, + height: embeddedLayer.buffer.height, + x: typeof embeddedLayer.x === "number" ? Math.round(embeddedLayer.x) : 0, + y: typeof embeddedLayer.y === "number" ? Math.round(embeddedLayer.y) : 0, + alpha: typeof embeddedLayer.alpha === "number" ? embeddedLayer.alpha : 255 + }); + } + } + if (layersForComposite.length > 0 && $.compositeLayers) { + try { + $.compositeLayers(layersForComposite); + } catch (error) { + console.warn(`\u26A0\uFE0F Error in batch composite (burn path), falling back:`, error.message); + for (let i2 = 0; i2 < layersForComposite.length; i2++) { + const layer = layersForComposite[i2]; + this.pasteWithAlpha($, { pixels: layer.pixels, width: layer.width, height: layer.height }, layer.x, layer.y, layer.alpha); + } + } + } else if (layersForComposite.length > 0) { + for (let i2 = 0; i2 < layersForComposite.length; i2++) { + const layer = layersForComposite[i2]; + try { + this.pasteWithAlpha($, { pixels: layer.pixels, width: layer.width, height: layer.height }, layer.x, layer.y, layer.alpha); + } catch (error) { + console.warn(`\u26A0\uFE0F Error pasting embedded layer ${i2} (burn path):`, error.message, error.stack); + } + } + } + } + } else { + if (this.layer0 && this.layer0.pixels) { + if (this.layer0.width === screen2.width && this.layer0.height === screen2.height) { + if (this.frameCount % 8 === 0 && this.frameCount <= 64) { + let nonZero = 0; + const l0 = this.layer0.pixels; + const step = Math.max(1, l0.length / 200 | 0); + for (let i2 = 0; i2 < l0.length; i2 += step) { + if (l0[i2] !== 0) nonZero++; + } + const screenNZ = (() => { + let nz = 0; + const sp = screen2.pixels; + const st = Math.max(1, sp.length / 200 | 0); + for (let i2 = 0; i2 < sp.length; i2 += st) { + if (sp[i2] !== 0) nz++; + } + return nz; + })(); + console.log(`\u{1F3A8} [f${this.frameCount}] layer0: ${this.layer0.width}x${this.layer0.height} nonZero=${nonZero}/200 | screen: ${screen2.width}x${screen2.height} nonZero=${screenNZ}/200 | embeds=${this.embeddedLayers?.length || 0} bakes=${this.bakes?.length || 0}`); + } + try { + this.pasteWithAlpha($, this.layer0, 0, 0, 255, false); + } catch (error) { + console.warn(`\u26A0\uFE0F Error pasting layer0:`, error.message); + } + } else { + console.warn(`\u26A0\uFE0F Skipping layer0 paste due to dimension mismatch: layer0=${this.layer0.width}x${this.layer0.height}, screen=${screen2.width}x${screen2.height}`); + } + } + if (this.bakes) { + for (let i2 = 0, len5 = this.bakes.length; i2 < len5; i2++) { + const bakeLayer = this.bakes[i2]; + if (bakeLayer && bakeLayer.pixels && !bakeLayer.burned) { + if (bakeLayer.width === screen2.width && bakeLayer.height === screen2.height) { + try { + $.paste(bakeLayer, 0, 0); + } catch (error) { + console.warn(`\u26A0\uFE0F Error pasting bake layer ${i2}:`, error.message); + } + if (bakeLayer.eraseMask) { + const dst = screen2.pixels; + const mask2 = bakeLayer.eraseMask; + const totalPixels = bakeLayer.width * bakeLayer.height; + for (let p = 0; p < totalPixels; p++) { + if (mask2[p] > 0) { + const di = p * 4; + const normalAlpha = 1 - mask2[p] / 255; + dst[di + 3] = dst[di + 3] * normalAlpha + 0.5 | 0; + if (dst[di + 3] === 0) { + dst[di] = 32; + dst[di + 1] = 32; + dst[di + 2] = 32; + } + } + } + } + } else { + console.warn(`\u26A0\uFE0F Skipping bake layer ${i2} paste due to dimension mismatch: bake=${bakeLayer.width}x${bakeLayer.height}, screen=${screen2.width}x${screen2.height}`); + } + } + } + } + if (this.embeddedLayers && this.embeddedLayers.length > 0) { + const layersForComposite = []; + for (let i2 = 0, len5 = this.embeddedLayers.length; i2 < len5; i2++) { + const embeddedLayer = this.embeddedLayers[i2]; + if (embeddedLayer.buffer && embeddedLayer.buffer.pixels) { + layersForComposite.push({ + pixels: embeddedLayer.buffer.pixels, + width: embeddedLayer.buffer.width, + height: embeddedLayer.buffer.height, + x: typeof embeddedLayer.x === "number" ? Math.round(embeddedLayer.x) : 0, + y: typeof embeddedLayer.y === "number" ? Math.round(embeddedLayer.y) : 0, + alpha: typeof embeddedLayer.alpha === "number" ? embeddedLayer.alpha : 255 + }); + } + } + if (layersForComposite.length > 0 && $.compositeLayers) { + try { + $.compositeLayers(layersForComposite); + } catch (error) { + console.warn(`\u26A0\uFE0F Error in batch composite, falling back to individual pastes:`, error.message); + for (let i2 = 0; i2 < layersForComposite.length; i2++) { + const layer = layersForComposite[i2]; + this.pasteWithAlpha($, { pixels: layer.pixels, width: layer.width, height: layer.height }, layer.x, layer.y, layer.alpha); + } + } + } else if (layersForComposite.length > 0) { + for (let i2 = 0; i2 < layersForComposite.length; i2++) { + const layer = layersForComposite[i2]; + try { + this.pasteWithAlpha($, { pixels: layer.pixels, width: layer.width, height: layer.height }, layer.x, layer.y, layer.alpha); + } catch (error) { + console.warn(`\u26A0\uFE0F Error pasting embedded layer ${i2}:`, error.message, error.stack); + } + } + } + } + } + if (this.postCompositeCommands && this.postCompositeCommands.length > 0) { + if (this.frameCount % 8 === 0 && this.frameCount <= 64) { + console.log(`\u{1F3A8} [f${this.frameCount}] post-composite: [${this.postCompositeCommands.map((c4) => c4.name).join(", ")}]`); + } + for (const cmd of this.postCompositeCommands) { + try { + cmd.func(); + } catch (err) { + console.error(`Error executing post-composite command ${cmd.name}:`, err); + } + } + this.postCompositeCommands = []; + } + if (this.perf.showHUD) { + this.renderPerformanceHUD($); + } + } catch (err) { + console.error("\u26D4 Evaluation failure:", err); + } + perfEnd("frame-evaluation"); + if (PERF_LOG && perfLogs.length > 0) { + $.ink?.("yellow"); + perfLogs.forEach((log3, index) => { + $.write?.(log3, { x: 2, y: 24 + index * 12 }, "black"); + }); + } + $.page(this.displayBuffer); + $.screen.width = this.displayBuffer.width; + $.screen.height = this.displayBuffer.height; + $.screen.pixels = this.displayBuffer.pixels; + const isProjectionMode = typeof location !== "undefined" && location.search?.indexOf("nolabel") > -1 || typeof window !== "undefined" && !!window.acKEEP_MODE; + if (this.lastValidationErrors && this.lastValidationErrors.length > 0 && !isProjectionMode) { + const errorText = `\u274C ${this.lastValidationErrors.join(", ")}`; + const textY = $.screen.height - 10; + $.ink("red").write(errorText, { x: 2, y: textY }, void 0, void 0, false, "MatrixChunky8"); + } + if (this.frameCount === 1) { + postToParent({ type: "kidlisp-first-frame", timestamp: performance.now() }); + } + if (isKidlispTraceEnabled() && this.frameCount === 1) { + postExecutionTrace(); + } + this.endFrame(); + }, + sim: ({ sound: sound2 }) => { + this.frameCount++; + resetRainbowCache(); + sound2.speaker?.poll(); + if (!this.microphoneApi && sound2?.microphone) { + this.microphoneApi = sound2.microphone; + } + if (this.microphoneApi) { + this.microphoneApi.poll?.(); + if (this.microphoneApi.connected && !this.microphoneConnected) { + this.microphoneConnected = true; + console.log("\u{1F3A4} Microphone connected in kidlisp"); + } + if (this.microphoneApi.connected) { + this.globalDef.mic = this.microphoneApi.amplitude || 0; + } else { + this.globalDef.mic = this.getMicDefaultValue(); + } + } else { + this.globalDef.mic = this.getMicDefaultValue(); + } + if (typeof window !== "undefined" && window.__acAudioData) { + const ad = window.__acAudioData; + this.updateAudioGlobals({ + ...ad, + __source: "module:window" + }); + } + if (this.frameCount % 60 === 0 && this.microphoneApi?.connected) { + console.log("\u{1F3A4} Mic amplitude:", this.microphoneApi.amplitude); + } + this.updateMelodies({ sound: sound2 }); + }, + act: ({ event: e2, api }) => { + if (e2.is("touch")) { + this.globalDef.down = 1; + this.globalDef.penx = e2.x ?? 0; + this.globalDef.peny = e2.y ?? 0; + } + if (e2.is("draw")) { + this.globalDef.penx = e2.x ?? this.globalDef.penx; + this.globalDef.peny = e2.y ?? this.globalDef.peny; + } + if (e2.is("lift")) { + this.globalDef.down = 0; + api.needsPaint(); + if (this.lifter) + withKidlispConsoleCapture(() => this.evaluate(this.lifter, api)); + } + if (e2.is("touch")) { + const hasTapHandler = this.tapper !== null; + const hasDrawHandler = this.drawer !== null; + if (hasTapHandler || hasDrawHandler) { + api.needsPaint(); + if (hasTapHandler) this.tap(api); + } else { + if (!getPackMode()) { + const skipSound = !this.isLispFile; + api.toggleHUD(false, skipSound); + } + } + } + if (e2.is("draw")) { + const hasDrawHandler = this.drawer !== null; + if (hasDrawHandler) { + api.needsPaint(); + this.draw(api, { dy: e2.delta.y, dx: e2.delta.x }); + } + } + if (e2.is("microphone-connect:success")) { + console.log("\u{1F3A4} Microphone connected successfully!"); + this.microphoneConnected = true; + } + if (e2.is("microphone-connect:failure")) { + console.warn("\u{1F3A4} Failed to connect microphone:", e2.reason); + } + if (e2.is("tape:frames")) { + const { tapeId, frames, totalFrames } = e2.content; + const tapeCode = tapeId?.startsWith("kidlisp-") ? tapeId.slice(8) : tapeId; + const tapeEmbed = this.tapeEmbeds.get(tapeCode); + if (tapeEmbed) { + console.log(`\u{1F4FC} KidLisp: Received ${frames?.length || 0} frames for tape !${tapeCode}`); + tapeEmbed.frames = frames || []; + tapeEmbed.totalFrames = totalFrames; + tapeEmbed.isLoading = false; + if (frames && frames.length > 0) { + tapeEmbed.width = frames[0].width; + tapeEmbed.height = frames[0].height; + } + api.needsPaint(); + } + } + if (e2.is("tape:preloaded")) { + const { tapeId, frameCount } = e2.content; + const tapeCode = tapeId?.startsWith("kidlisp-") ? tapeId.slice(8) : tapeId; + const tapeEmbed = this.tapeEmbeds.get(tapeCode); + if (tapeEmbed) { + console.log(`\u{1F4FC} KidLisp: Tape !${tapeCode} preloaded with ${frameCount} frames`); + } + } + if (e2.is("tape:preload-error")) { + const { tapeId, error } = e2.content; + const tapeCode = tapeId?.startsWith("kidlisp-") ? tapeId.slice(8) : tapeId; + const tapeEmbed = this.tapeEmbeds.get(tapeCode); + if (tapeEmbed) { + console.error(`\u{1F4FC} KidLisp: Failed to load tape !${tapeCode}:`, error); + tapeEmbed.isLoading = false; + tapeEmbed.loadError = error; + } + } + } + }; + } + // 🎤 Get fun default mic value when microphone is not connected + // Returns a value from 0 to 1 based on the selected animation mode + getMicDefaultValue() { + const { frameCount } = this; + switch (this.micDefaultMode) { + case "sine": + return 0.2 + Math.sin(frameCount * 0.05) * 0.1; + case "noise": + return Math.random() * 0.15; + // Low amplitude noise + case "pulse": + const pulseFreq = 240; + const pulsePhase = frameCount % pulseFreq; + return pulsePhase < 30 ? Math.sin(pulsePhase / 30 * Math.PI) * 0.4 : 0; + case "static": + return 0; + default: + return 0.2 + Math.sin(frameCount * 0.05) * 0.1; + } + } + // 🎤 Request microphone connection (called when mic is accessed) + requestMicrophoneConnection(api) { + if (this.microphoneApi && !this.microphoneApi.connected) { + if (this.microphoneApi.permission === "granted" && api?.sound?.enabled?.()) { + console.log("\u{1F3A4} Auto-connecting microphone (mic accessed)"); + this.microphoneApi.connect(); + } else if (this.microphoneApi.permission !== "granted") { + if (!this.micPermissionRequested) { + this.microphoneApi.requestPermission?.(); + console.log("\u{1F3A4} Microphone permission needed for 'mic' global - please grant access"); + this.micPermissionRequested = true; + } + } + } + } + // Seeded random number generator for isolated state per instance + seededRandom() { + this.randomState = (this.randomState * 1664525 + 1013904223) % 4294967296; + return this.randomState / 4294967296; + } + // 🌀 CHAOS MODE EVALUATOR + // Generate artistic visuals from invalid/random input. + // The input is hashed to create deterministic but varied output. + evaluateChaos(source, api) { + if (!api.wipe || !api.ink || !api.box) { + console.log("\u{1F300} Chaos mode: Missing required API functions"); + return; + } + const chaos = this.chaosMode; + const width2 = api.screen?.width || 256; + const height2 = api.screen?.height || 256; + let seed = 0; + for (let i2 = 0; i2 < source.length; i2++) { + seed = (seed << 5) - seed + source.charCodeAt(i2); + seed = seed & seed; + } + const seededRand = () => { + seed = (seed * 1664525 + 1013904223) % 4294967296; + return (seed >>> 0) / 4294967296; + }; + const frame = api.num?.frame || this.frameCount || 0; + const mode = Math.abs(seed) % 6; + console.log(`\u{1F300} Chaos mode rendering (mode ${mode}): "${source.substring(0, 30)}..."`); + switch (mode) { + case 0: + api.wipe(0, 0, 0); + for (let i2 = 0; i2 < source.length && i2 < 1e3; i2++) { + const char = source.charCodeAt(i2); + const x = (i2 * 7 + char) % width2; + const y = Math.floor(i2 / (width2 / 7)) * 3 % height2; + const hue = (char * 37 + frame) % 360; + const [r2, g, b2] = this.hueToRgb(hue); + api.ink(r2, g, b2); + api.box(x, y, 3, 3); + } + break; + case 1: + { + const bg = Math.floor(seededRand() * 40); + api.wipe(bg, bg, bg + 20); + const numCircles = Math.min(source.length / 5, 20); + for (let i2 = 0; i2 < numCircles; i2++) { + const radius = (i2 + 1) * (Math.min(width2, height2) / numCircles / 2); + const pulse = Math.sin((frame + i2 * 10) * 0.05) * 0.3 + 0.7; + const hue = (i2 * 30 + seed) % 360; + const [r2, g, b2] = this.hueToRgb(hue); + api.ink(Math.floor(r2 * pulse), Math.floor(g * pulse), Math.floor(b2 * pulse), 150); + this.drawChaosCircle(api, width2 / 2, height2 / 2, radius * pulse, 2); + } + } + break; + case 2: + { + api.wipe(10, 10, 30); + const step = 4; + for (let y = 0; y < height2; y += step) { + for (let x = 0; x < width2; x += step) { + const wave1 = Math.sin((x + frame) * 0.05 + seed * 0.01); + const wave2 = Math.cos((y - frame * 0.5) * 0.03 + source.length * 0.1); + const wave3 = Math.sin((x + y + frame * 0.3) * 0.02); + const intensity = (wave1 + wave2 + wave3 + 3) / 6; + const hue = (x + y + seed) % 360; + const [r2, g, b2] = this.hueToRgb(hue); + api.ink(Math.floor(r2 * intensity), Math.floor(g * intensity), Math.floor(b2 * intensity)); + api.box(x, y, step, step); + } + } + } + break; + case 3: + { + api.wipe(20, 10, 30); + const chars = source.slice(0, 100); + for (let i2 = 0; i2 < chars.length; i2++) { + const char = chars.charCodeAt(i2); + const t2 = i2 / chars.length * Math.PI * 4 + frame * 0.02; + const x1 = width2 / 2 + Math.sin(t2) * (width2 / 4); + const x2 = width2 / 2 - Math.sin(t2) * (width2 / 4); + const y = i2 / chars.length * height2; + const depth = (Math.sin(t2) + 1) / 2; + const size = 3 + depth * 5; + const [r1, g1, b1] = this.hueToRgb((char * 10 + frame) % 360); + api.ink(r1, g1, b1, Math.floor(100 + depth * 155)); + api.box(x1 - size / 2, y, size, size); + const [r2, g2, b2] = this.hueToRgb((char * 10 + 180 + frame) % 360); + api.ink(r2, g2, b2, Math.floor(100 + (1 - depth) * 155)); + api.box(x2 - size / 2, y, size, size); + if (i2 % 5 === 0) { + api.ink(100, 100, 100, 80); + const lineY = y; + const minX = Math.min(x1, x2); + const maxX = Math.max(x1, x2); + api.box(minX, lineY, maxX - minX, 1); + } + } + } + break; + case 4: + { + api.wipe(0, 10, 0); + const cols = Math.floor(width2 / 8); + for (let col = 0; col < cols; col++) { + const colSeed = seed + col * 97 & 65535; + const speed = 1 + colSeed % 3; + const offset = (frame * speed + colSeed) % (height2 + 100); + for (let i2 = 0; i2 < 15; i2++) { + const charIdx = (col + i2 * 7) % source.length; + const y = offset - i2 * 10; + if (y >= 0 && y < height2) { + const fade = 1 - i2 / 15; + const bright = Math.floor(100 + fade * 155); + api.ink(0, bright, 0); + api.box(col * 8, y, 6, 8); + } + } + } + } + break; + case 5: + // Kaleidoscope from source + default: + { + const bgHue = seed % 360; + const [bgR, bgG, bgB] = this.hueToRgb(bgHue); + api.wipe(Math.floor(bgR * 0.2), Math.floor(bgG * 0.2), Math.floor(bgB * 0.2)); + const segments = 8; + const cx = width2 / 2; + const cy = height2 / 2; + for (let i2 = 0; i2 < Math.min(source.length, 50); i2++) { + const char = source.charCodeAt(i2); + const r2 = char % 100 + 20 + Math.sin(frame * 0.02 + i2) * 20; + const baseAngle = i2 / 50 * Math.PI * 2 + frame * 0.01; + for (let seg = 0; seg < segments; seg++) { + const angle3 = baseAngle + seg / segments * Math.PI * 2; + const x = cx + Math.cos(angle3) * r2; + const y = cy + Math.sin(angle3) * r2; + const hue = (char * 7 + seg * 45 + frame) % 360; + const [pr, pg, pb] = this.hueToRgb(hue); + api.ink(pr, pg, pb, 200); + api.box(x - 2, y - 2, 4, 4); + } + } + } + break; + } + return void 0; + } + // Helper: Convert hue (0-360) to RGB + hueToRgb(hue) { + const h = hue / 60; + const c4 = 255; + const x = Math.floor(c4 * (1 - Math.abs(h % 2 - 1))); + if (h < 1) return [c4, x, 0]; + if (h < 2) return [x, c4, 0]; + if (h < 3) return [0, c4, x]; + if (h < 4) return [0, x, c4]; + if (h < 5) return [x, 0, c4]; + return [c4, 0, x]; + } + // Helper: Draw a circle using boxes (for chaos mode) + drawChaosCircle(api, cx, cy, radius, thickness) { + const steps = Math.max(16, Math.floor(radius * 0.5)); + for (let i2 = 0; i2 < steps; i2++) { + const angle3 = i2 / steps * Math.PI * 2; + const x = cx + Math.cos(angle3) * radius - thickness / 2; + const y = cy + Math.sin(angle3) * radius - thickness / 2; + api.box(x, y, thickness, thickness); + } + } + // Main parsing method - handles both single expressions and multi-line input + parse(input3) { + const parseStart = this.startTiming("parse"); + if (input3.includes(",") && !input3.includes("\n")) { + const expressions = input3.split(",").map((expr) => expr.trim()).filter((expr) => expr.length > 0); + const wrappedExpressions = expressions.map((expr) => { + if (expr.startsWith("(") && expr.endsWith(")")) { + return expr; + } + if (/^[a-zA-Z_$]\w*/.test(expr)) { + return `(${expr})`; + } + return expr; + }); + input3 = wrappedExpressions.join(" "); + } + if (input3.includes("\n")) { + const lines = input3.split("\n").map((line2) => { + const commentIndex = line2.indexOf(";"); + if (commentIndex !== -1) { + line2 = line2.substring(0, commentIndex); + } + return line2.trim(); + }).filter((line2) => line2.length > 0); + const wrappedLines = lines.map((line2, index) => { + if (line2.includes(",")) { + const expressions = line2.split(",").map((expr) => expr.trim()).filter((expr) => expr.length > 0); + const wrappedExpressions = expressions.map((expr) => { + if (expr.startsWith("(") && expr.endsWith(")")) { + return expr; + } + if (/^[a-zA-Z_$]\w*/.test(expr)) { + return `(${expr})`; + } + return expr; + }); + return wrappedExpressions.join(" "); + } + const isContinuation = index > 0 && // Line starts with an identifier but not at the beginning of the input + /^[a-zA-Z_]\w*/.test(line2) && !line2.startsWith("(") && // Previous line ends with an incomplete expression (has opening paren or is incomplete) + lines[index - 1].includes("(") && lines[index - 1].split("(").length > lines[index - 1].split(")").length; + const timingMatch = line2.match(/^(\d*\.?\d+[s]\.\.\.?)\s+(.+)$/); + if (timingMatch && !line2.startsWith("(")) { + return line2; + } + if (!line2.startsWith("(") && /^[a-zA-Z_]\w*/.test(line2) && !isContinuation) { + return `(${line2})`; + } + return line2; + }); + input3 = wrappedLines.join(" "); + } + const validationErrors = []; + const errorPositions = /* @__PURE__ */ new Set(); + let parenBalance = 0; + let lastOpenParen = -1; + for (let i2 = 0; i2 < input3.length; i2++) { + const char = input3[i2]; + if (char === "(") { + parenBalance++; + lastOpenParen = i2; + } + if (char === ")") { + parenBalance--; + if (parenBalance < 0) { + validationErrors.push("Too many closing parentheses"); + errorPositions.add(i2); + break; + } + } + } + if (parenBalance > 0) { + validationErrors.push(`Missing ${parenBalance} closing parenthes${parenBalance === 1 ? "is" : "es"}`); + if (lastOpenParen >= 0) { + errorPositions.add(lastOpenParen); + } + let tempBalance = 0; + for (let i2 = 0; i2 < input3.length; i2++) { + if (input3[i2] === "(") { + tempBalance++; + if (tempBalance > (parenBalance === 0 ? -1 : 0)) { + errorPositions.add(i2); + } + } + if (input3[i2] === ")") tempBalance--; + } + } + let lastDoubleQuote = -1; + let lastSingleQuote = -1; + let doubleQuoteCount = 0; + let singleQuoteCount = 0; + for (let i2 = 0; i2 < input3.length; i2++) { + if (input3[i2] === '"') { + doubleQuoteCount++; + lastDoubleQuote = i2; + } + if (input3[i2] === "'") { + singleQuoteCount++; + lastSingleQuote = i2; + } + } + if (doubleQuoteCount % 2 !== 0) { + validationErrors.push("Unmatched double quote"); + if (lastDoubleQuote >= 0) errorPositions.add(lastDoubleQuote); + } + if (singleQuoteCount % 2 !== 0) { + validationErrors.push("Unmatched single quote"); + if (lastSingleQuote >= 0) errorPositions.add(lastSingleQuote); + } + if (validationErrors.length > 0) { + const sourcePrefix = this.embeddedSourceId ? `[$${this.embeddedSourceId}] ` : ""; + console.error(`\u274C ${sourcePrefix}KidLisp Validation Failed:`, validationErrors.join(", ")); + if (isKidlispConsoleEnabled()) { + let firstPos = null; + if (errorPositions && errorPositions.size > 0) { + firstPos = Math.min(...Array.from(errorPositions)); + } + const loc = typeof firstPos === "number" ? kidlispOffsetToLineCol(input3, firstPos) : void 0; + postKidlispConsole( + "error", + `\u274C ${sourcePrefix}KidLisp validation failed: ${validationErrors.join(", ")}`, + loc ? { kind: "validation", loc, embeddedSource: this.embeddedSourceId } : { kind: "validation", embeddedSource: this.embeddedSourceId } + ); + } + this.lastValidationErrors = validationErrors; + this.errorPositions = errorPositions; + } else { + this.lastValidationErrors = null; + this.errorPositions = null; + } + let parserInput = input3; + if (validationErrors.length > 0 && /Missing \d+ closing parenthesis/.test(validationErrors.join(" "))) { + const missingCountMatch = validationErrors.join(" ").match(/Missing (\d+) closing parenthes/); + const missingCount = missingCountMatch ? parseInt(missingCountMatch[1], 10) : 0; + if (missingCount > 0) { + const sourcePrefix = this.embeddedSourceId ? `[$${this.embeddedSourceId}] ` : ""; + parserInput = `${input3} +${")".repeat(missingCount)}`; + console.warn(`\u26A0\uFE0F ${sourcePrefix}KidLisp auto-balanced ${missingCount} missing parenthesis${missingCount === 1 ? "" : "es"}`); + } + } + try { + const tokens = tokenizeForParser(parserInput); + const parsed = readFromTokens(tokens); + this.ast = parsed; + this.endTiming("parse", parseStart); + return parsed; + } catch (error) { + const sourcePrefix = this.embeddedSourceId ? `[$${this.embeddedSourceId}] ` : ""; + console.error(`\u274C ${sourcePrefix}KidLisp Parse Error:`, error.message); + if (isKidlispConsoleEnabled()) { + const offset = typeof error?.kidlispOffset === "number" ? error.kidlispOffset : null; + const loc = typeof offset === "number" ? kidlispOffsetToLineCol(parserInput, offset) : void 0; + postKidlispConsole( + "error", + `\u274C ${sourcePrefix}KidLisp parse error: ${error.message}`, + loc ? { kind: "parse", loc, embeddedSource: this.embeddedSourceId } : { kind: "parse", embeddedSource: this.embeddedSourceId } + ); + } + this.lastParseError = error; + this.endTiming("parse", parseStart); + return []; + } + } + // 🫵 Tap + tap(api) { + if (this.tapper) { + withKidlispConsoleCapture(() => this.evaluate(this.tapper, api)); + } + } + // ✏️ Draw + draw(api, env) { + if (this.drawer) { + withKidlispConsoleCapture(() => this.evaluate(this.drawer, api, env)); + } + } + // 🎵 Melody playback methods + parseMelodyString(melodyString) { + return parseMelody(melodyString); + } + // Register + start a melody. Shared by the `melody` and `clock` builtins + // (the latter delegates here when given a string arg — "nice synergy" with + // the clock piece). Returns the melody string (def-like: re-runs are no-ops). + runMelody(api, args = []) { + if (args.length === 0) return; + const isNum = (s2) => /^-?\d*\.?\d+$/.test(s2); + const parts = []; + for (let i2 = 0; i2 < args.length; i2++) { + const a2 = unquoteString(String(args[i2])); + if (isNum(a2)) continue; + parts.push(a2); + } + const melodyString = parts.join(" ").trim(); + if (!melodyString) return; + const melodyId = melodyString; + if (this.melodies.has(melodyId)) return; + api.clock?.resync?.(); + const parsed = parseSequentialMelody(melodyString, 4); + const melodyState = buildMelodyState(parsed, { baseTempo: MELODY_BASE_MS }); + if (!melodyState) return; + melodyState.isPlaying = false; + this.melodies.set(melodyId, melodyState); + this.melodyByString.set(melodyString, melodyState); + this.updateMelodies(api); + return melodyString; + } + // ── Global synced clock (AC time authority) ─────────────────────────────── + // Mirror clock.mjs: read the server-synced UTC time so every client agrees and + // animation/notes are musically locked. Capture the smoothed offset each frame. + _syncClock(api) { + try { + const c4 = api?.clock; + if (!c4?.time) return; + const local = Date.now(); + if (!this._lastResync || local - this._lastResync > 2e3) { + c4.resync?.(); + this._lastResync = local; + } + const t2 = c4.time(); + if (t2 && typeof t2.getTime === "function") { + this._clockOffset = t2.getTime() - Date.now(); + } + } catch { + } + } + // Synced UTC ms (falls back to local time when no clock API / static stub). + _now() { + return Date.now() + (this._clockOffset || 0); + } + // ── Multi-track melody scheduler (absolute UTC time) ────────────────────── + // Each channel/track derives its CURRENT note from the global synced clock + // (this._now()), so all clients are phase-locked and notes align with Ns timers + // (1s = 1 beat = 1 plain note). No accumulation/drift; a backgrounded tab just + // resumes at the correct absolute note. Called once per frame from sim(). + updateMelodies(api) { + this._syncClock(api); + const now = this._now(); + for (const [, ms] of this.melodies) this._advanceMelody(api, ms, now); + } + _advanceMelody(api, ms, now) { + if (!ms) return; + if (ms.type === "parallel") { + for (const ts of ms.trackStates) this._selectNote(api, ms, ts, ts.track, now); + } else if (ms.type === "sequential") { + this._advanceSequential(api, ms, now); + } else { + this._selectNote(api, ms, ms, ms.notes, now); + } + } + // Cache a cumulative-start timeline (ms offsets) for a note array on its state. + // + // The starts then get p-center corrected: a note is pulled earlier by its own + // perceptual attack lag, so what lands on the beat is where the note is HEARD + // to begin rather than the sample at which it physically starts. Without this + // a line that alternates a fast wave with a slow one plays perfectly on the + // grid and sounds like it is limping — the effect Wessel describes on p. 50 + // and asks synthesis software to give composers control over. The correction + // is mean-zero and never changes `_loopMs`, so tempo and loop alignment are + // untouched; only the spacing inside the bar moves. + _timeline(st, notes) { + if (st._starts && st._starts.length === notes.length) return; + const starts = []; + let acc = 0; + for (const n2 of notes) { + starts.push(acc); + acc += (n2.duration || 1) * MELODY_BASE_MS; + } + st._starts = applyPCenterShifts(starts, notes); + st._loopMs = acc; + } + // Pick the note for the absolute time `now` and trigger the synth on change. + _selectNote(api, ms, st, notes, now) { + if (!notes || notes.length === 0) return; + this._timeline(st, notes); + if (st._loopMs <= 0) return; + const pos = (now % st._loopMs + st._loopMs) % st._loopMs; + let idx = 0; + for (let i2 = 0; i2 < st._starts.length; i2++) { + if (st._starts[i2] <= pos) idx = i2; + else break; + } + if (st._lastIdx === idx) return; + st._lastIdx = idx; + ms.isPlaying = true; + const playhead = (idx + 1) % notes.length; + if (st === ms) ms.index = playhead; + else st.noteIndex = playhead; + this._playNote(api, ms, notes[idx], st.trackIndex || 0); + } + // Sequential `>`: a global timeline over all sequences (each loopCount×loopMs); + // map the absolute time into the active sequence, then select within it. + _advanceSequential(api, ms, now) { + const seqs = ms.sequences || []; + if (seqs.length === 0) return; + if (!ms._seqTimeline || ms._seqTimeline.length !== seqs.length) { + const segs = []; + let acc = 0; + for (const s2 of seqs) { + const loopMs = sequenceDurationBeats(s2) * MELODY_BASE_MS; + const segMs = loopMs * (s2.loopCount || 1); + segs.push({ start: acc, segMs, loopMs }); + acc += segMs; + } + ms._seqTimeline = segs; + ms._seqTotalMs = acc; + } + if (ms._seqTotalMs <= 0) return; + const pos = (now % ms._seqTotalMs + ms._seqTotalMs) % ms._seqTotalMs; + let si = 0; + for (let i2 = 0; i2 < ms._seqTimeline.length; i2++) { + if (ms._seqTimeline[i2].start <= pos) si = i2; + else break; + } + if (ms.currentSequence !== si || !ms.currentSequenceState) { + ms.currentSequence = si; + ms.currentSequenceState = buildSequenceState(seqs[si]); + } + const seg = ms._seqTimeline[si]; + const localNow = seg.loopMs > 0 ? (pos - seg.start) % seg.loopMs : 0; + const seq = ms.currentSequenceState; + if (!seq) return; + if (seq.type === "parallel") { + for (const ts of seq.trackStates) this._selectNote(api, ms, ts, ts.track, localNow); + } else { + this._selectNote(api, ms, seq, seq.notes, localNow); + } + } + // Play a single note with full per-note timbre. Rests are silent but still + // occupy their slot in the timeline. + _playNote(api, ms, noteData, trackIndex) { + const note2 = noteData.note; + if (!note2 || note2 === "rest" || !api.sound?.synth) return; + const tone = this.noteToTone(note2, noteData.octave); + const sonicMs = (noteData.sonicDuration != null ? noteData.sonicDuration : noteData.duration || 1) * MELODY_BASE_MS; + const struck = !!noteData.struck; + const opts = { + type: noteData.waveType || "sine", + tone, + duration: sonicMs / 1e3 * 0.98, + attack: struck ? 5e-3 : 0.01, + decay: struck ? 0.9 : 0.99, + volume: noteData.volume != null ? noteData.volume : 0.8 + }; + if (typeof noteData.toneShift === "number" && noteData.toneShift !== 0) { + opts.toneShift = noteData.toneShift; + } + api.sound.synth(opts); + } + // Convert note letter to frequency + noteToTone(note2, octave = null) { + return noteToTone(note2, octave); + } + // CORE OPTIMIZATION HELPER: Check if expression contains a variable + containsVariable(expr, varName) { + if (typeof expr === "string") { + return expr === varName; + } + if (typeof expr === "number") { + return false; + } + if (Array.isArray(expr)) { + return expr.some((subExpr) => this.containsVariable(subExpr, varName)); + } + return false; + } + // Helper function to create a deep copy of a form + createFormCopy(templateForm, api) { + let geometryData = api.CUBEL; + const copy8 = new api.Form( + geometryData, + // Use the appropriate geometry data + { + color: templateForm.color ? [...templateForm.color] : void 0, + alpha: templateForm.alpha + }, + { + pos: [0, 0, 0], + // Start with clean transform state + rot: [0, 0, 0], + scale: [1, 1, 1] + } + ); + copy8.primitive = templateForm.primitive; + copy8.type = templateForm.type; + copy8.texture = templateForm.texture; + copy8.colorModifier = templateForm.colorModifier; + copy8.gradients = templateForm.gradients; + return copy8; + } + // Create global environment (cached for performance) + getGlobalEnv() { + if (this.globalEnvCache) { + return this.globalEnvCache; + } + const numArg = (api, env, raw, fallback) => { + if (raw === void 0 || raw === null) return fallback; + if (typeof raw === "number") return raw; + const v2 = this.fastEval(raw, api, env || this.localEnv); + const n2 = typeof v2 === "number" ? v2 : parseFloat(v2); + return Number.isFinite(n2) ? n2 : fallback; + }; + this.globalEnvCache = { + // once: (api, args) => { + // console.log("Oncing...", args); + // if (this.drawer) this.evaluate(this.drawer, api); + // }, + now: (api, args) => { + if (args.length === 2) { + const name = unquoteString(args[0]); + if (this.globalDef.hasOwnProperty(name)) { + this.globalDef[name] = args[1]; + } else { + console.warn("\u{1F6AB}\u{1F9E0} Not defined:", name); + } + return args[1]; + } + console.error("\u2757 Invalid `now`. Wrong number of arguments."); + }, + // Program Architecture + def: (api, args, env) => { + if (args.length === 2) { + const name = unquoteString(args[0]); + if (!validIdentifierRegex.test(name)) { + return; + } + if (this.localEnvLevel > 0) { + this.localEnv[name] = args[1]; + } else { + if (!Object.prototype.hasOwnProperty.call(this.globalDef, name)) { + this.globalDef[name] = args[1]; + } else { + } + } + return args[1]; + } + console.error("\u2757 Invalid `def`. Wrong number of arguments."); + }, + die: (api, args) => { + const name = unquoteString(args[0]); + const def = this.globalDef[name]; + if (def) { + delete this.globalDef[name]; + def.kill?.(); + } + }, + later: (api, args) => { + if (args.length >= 2) { + const name = args[0]; + let params = []; + let body = null; + args.slice(1).forEach((arg, index) => { + if (Array.isArray(arg) && body === null) { + body = args.slice(index + 1); + } else if (body === null) { + params.push(arg); + } + }); + if (body === null) { + console.error("No body found in arguments for 'later' function."); + return; + } + this.globalDef[name] = { body, params }; + if (VERBOSE) { + console.log( + `Latered '${name}' as:`, + this.globalDef[name], + "with parameters:", + params + ); + } + return body; + } + }, + net: { + handles: (api) => { + const iter = { iterable: true, data: [] }; + if (!this.networkCache.handles) { + this.networkCache.handles = "loading"; + fetch("/api/handles").then((response) => response.json()).then((data) => { + this.networkCache.handles = data.handles; + iter.data = data.handles; + api.needsPaint(); + }).catch((error) => console.warn(error)); + } else if (Array.isArray(this.networkCache.handles)) { + iter.data = this.networkCache.handles; + } + return iter; + } + }, + tap: (api, args) => { + this.tapper = args; + }, + draw: (api, args) => { + this.drawer = args; + }, + // 🫳 The other half of a press. `tap` fires when the hand lands; `lift` fires + // when it leaves. A button that can be pushed but never released is not a + // button — it's a switch that only goes one way. + lift: (api, args) => { + this.lifter = args; + }, + if: (api, args, env) => { + if (!args || args.length < 1) { + console.error("\u2757 Invalid `if`. Wrong number of arguments."); + return false; + } + const evaled = this.evaluate(args[0], api, env); + if (evaled) this.evaluate(args.slice(1), api, env); + }, + once: (api, args, env) => { + if (!args || args.length < 1) { + console.error("\u2757 Invalid `once`. Wrong number of arguments."); + return; + } + const onceKey = JSON.stringify(args); + if (!this.onceExecuted.has(onceKey)) { + this.onceExecuted.add(onceKey); + let result; + for (const arg of args) { + result = this.evaluate(arg, api, env); + } + return result; + } + return void 0; + }, + not: (api, args, env) => { + if (!args || args.length < 1) { + console.error("\u2757 Invalid `not`. Wrong number of arguments."); + return false; + } + const evaled = this.evaluate(args[0], api, env); + if (!evaled) { + args.slice(1).forEach((expr) => { + this.evaluate(expr, api, env); + }); + } + return !evaled; + }, + // Fill/Outline mode commands (Processing-style) + fill: (api) => { + this.fillMode = true; + return void 0; + }, + outline: (api) => { + this.fillMode = false; + return void 0; + }, + stroke: (api) => { + this.fillMode = false; + return void 0; + }, + nofill: (api) => { + this.fillMode = false; + return void 0; + }, + nostroke: (api) => { + this.fillMode = true; + return void 0; + }, + range: (api, args) => { + if (args.length === 3) { + const array = args[0].data; + const startIndex = max6(0, floor8(args[1])); + const endIndex = max6(0, floor8(args[2])); + if (Array.isArray(array) && typeof startIndex === "number" && typeof endIndex === "number") { + return { iterable: true, data: array.slice(startIndex, endIndex) }; + } else { + console.error( + "\u2757 Invalid arguments for `range`. Expected an array and two numbers." + ); + } + } else { + console.error("\u2757 Invalid `range`. Wrong number of arguments."); + } + }, + // 🧠 Logical Operators + ">": (api, args, env) => { + if (!args || args.length < 2) { + console.error("\u2757 Invalid `>`. Wrong number of arguments."); + return false; + } + const left = this.evaluate(args[0], api, env), right = this.evaluate(args[1], api, env); + if (left > right) { + return this.evaluate(args.slice(2), api, env); + } else { + return false; + } + }, + "<": (api, args, env) => { + if (!args || args.length < 2) { + console.error("\u2757 Invalid `<`. Wrong number of arguments."); + return false; + } + const left = this.evaluate(args[0], api, env), right = this.evaluate(args[1], api, env); + if (left < right) { + return this.evaluate(args.slice(2), api, env); + } else { + return false; + } + }, + "=": (api, args, env) => { + if (!args || args.length < 2) { + console.error("\u2757 Invalid `=`. Wrong number of arguments."); + return false; + } + const left = this.evaluate(args[0], api, env), right = this.evaluate(args[1], api, env); + if (left === right) { + return args.length > 2 ? this.evaluate(args.slice(2), api, env) : true; + } else { + return false; + } + }, + // ➗ Mathematical Operators + max: (api, args, env) => { + const nums = args.map((arg) => this.evaluate(arg, api, this.localEnv)).filter((value) => typeof value === "number" && !isNaN(value)); + return nums.length > 0 ? Math.max(...nums) : 0; + }, + min: (api, args, env) => { + const nums = args.map((arg) => this.evaluate(arg, api, this.localEnv)).filter((value) => typeof value === "number" && !isNaN(value)); + return nums.length > 0 ? Math.min(...nums) : 0; + }, + sin: (api, args = []) => { + if (args.length === 0) { + return Math.sin(this.frameCount * 0.01); + } + const value = this.evaluate(args[0], api, this.localEnv); + return typeof value === "number" ? Math.sin(value) : 0; + }, + cos: (api, args = []) => { + if (args.length === 0) { + return Math.cos(this.frameCount * 0.01); + } + const value = this.evaluate(args[0], api, this.localEnv); + return typeof value === "number" ? Math.cos(value) : 0; + }, + "+": (api, args, env) => { + const result = args.reduce((acc, arg) => { + const value = this.evaluate(arg, api, this.localEnv); + return acc + (typeof value === "number" ? value : 0); + }, 0); + return result; + }, + "-": (api, args, env) => { + if (args.length === 0) return 0; + if (args.length === 1) { + const value = this.evaluate(args[0], api, this.localEnv); + return -(typeof value === "number" ? value : 0); + } + const first = this.evaluate(args[0], api, this.localEnv); + const result = args.slice(1).reduce( + (acc, arg) => { + const value = this.evaluate(arg, api, this.localEnv); + return acc - (typeof value === "number" ? value : 0); + }, + typeof first === "number" ? first : 0 + ); + return result; + }, + "*": (api, args, env) => { + const result = args.reduce((acc, arg) => { + const value = this.evaluate(arg, api, this.localEnv); + return acc * (typeof value === "number" ? value : 0); + }, 1); + return result; + }, + mul: (api, args, env) => { + const result = args.reduce((acc, arg) => { + const value = this.evaluate(arg, api, this.localEnv); + return acc * (typeof value === "number" ? value : 0); + }, 1); + return result; + }, + "/": (api, args, env) => { + if (args.length === 0) return 0; + const first = this.evaluate(args[0], api, this.localEnv); + const result = args.slice(1).reduce( + (acc, arg) => { + const value = this.evaluate(arg, api, this.localEnv); + const divisor = typeof value === "number" ? value : 1; + return divisor !== 0 ? acc / divisor : acc; + }, + typeof first === "number" ? first : 0 + ); + return result; + }, + "%": (api, args, env) => { + if (args.length < 2) return 0; + const first = this.evaluate(args[0], api, this.localEnv); + const second = this.evaluate(args[1], api, this.localEnv); + const a2 = typeof first === "number" ? first : 0; + const b2 = typeof second === "number" ? second : 1; + return b2 !== 0 ? a2 % b2 : 0; + }, + mod: (api, args, env) => { + if (args.length < 2) return 0; + const first = this.evaluate(args[0], api, this.localEnv); + const second = this.evaluate(args[1], api, this.localEnv); + const a2 = typeof first === "number" ? first : 0; + const b2 = typeof second === "number" ? second : 1; + return b2 !== 0 ? a2 % b2 : 0; + }, + // Random number generation + random: (api, args) => { + if (args.length === 0) { + return Math.floor(this.seededRandom() * 256); + } else if (args.length === 1) { + const max9 = args[0]; + return Math.floor(this.seededRandom() * max9); + } else if (args.length >= 2) { + const min10 = args[0]; + const max9 = args[1]; + return Math.floor(this.seededRandom() * (max9 - min10 + 1)) + min10; + } + }, + // Check if an image URL is ready to be pasted + "ready?": (api, args) => { + if (args.length === 0) return false; + const url = unquoteString(args[0]?.toString() || ""); + if (!url) return false; + const paintings2 = api.paintings || {}; + return paintings2[url] && paintings2[url] !== "fetching"; + }, + // Paint API + resolution: (api, args) => { + if (args.length === 1 && typeof args[0] === "string") { + const fraction = args[0]; + let divisor; + let trackingFlag; + switch (fraction) { + case "half": + divisor = 2; + trackingFlag = "halfResolutionApplied"; + break; + case "third": + divisor = 3; + trackingFlag = "thirdResolutionApplied"; + break; + case "fourth": + divisor = 4; + trackingFlag = "fourthResolutionApplied"; + break; + default: + api.resolution?.(...args); + return; + } + if (!this[trackingFlag]) { + this[trackingFlag] = false; + } + if (!this[trackingFlag]) { + const currentWidth = api.screen?.width || 256; + const currentHeight = api.screen?.height || 256; + const newWidth = Math.floor(currentWidth / divisor); + const newHeight = Math.floor(currentHeight / divisor); + api.resolution?.(newWidth, newHeight); + this[trackingFlag] = true; + console.log( + `\u{1F504} ${fraction} resolution applied: ${currentWidth}x${currentHeight} \u2192 ${newWidth}x${newHeight}` + ); + } else { + console.log( + `\u{1F504} ${fraction} resolution already applied, skipping to prevent squashing` + ); + } + } else { + api.resolution?.(...args); + this.halfResolutionApplied = false; + this.thirdResolutionApplied = false; + this.fourthResolutionApplied = false; + } + }, + wipe: (api, args) => { + const processedArgs = processArgStringTypes(args); + const performWipe = () => { + api.wipe?.(processedArgs); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performWipe); + return; + } + performWipe(); + }, + coat: (api, args, env) => { + if (args.length < 1) { + console.error("\u2757 coat requires at least a color argument"); + return; + } + let color3 = args[0]; + const alpha = args.length >= 2 ? args[1] : 128; + const previousInk = this.inkState; + const previousInkSet = this.inkStateSet; + if (typeof color3 === "string" && color3.startsWith("fade:")) { + let evaluatedColor = color3; + const fadeParts = color3.split(":"); + if (fadeParts.length >= 3) { + const fadePrefix = fadeParts[0]; + const colors = fadeParts[1]; + const direction = fadeParts[2]; + let evaluatedDirection = direction; + try { + const numericValue = parseFloat(direction); + if (!isNaN(numericValue)) { + evaluatedDirection = direction; + } else { + let evalResult; + const expanded = this.expandFastMathMacros(direction); + if (Array.isArray(expanded)) { + evalResult = this.fastEval(expanded, api, env); + } else { + const globalEnv = this.getGlobalEnv(); + if (globalEnv[direction] && typeof globalEnv[direction] === "function") { + evalResult = globalEnv[direction](api, []); + } else { + evalResult = this.evaluate(direction, api, env); + } + } + evaluatedDirection = String(evalResult); + } + } catch (error) { + console.warn("Failed to evaluate fade direction in coat:", direction, error); + evaluatedDirection = direction; + } + evaluatedColor = `${fadePrefix}:${colors}:${evaluatedDirection}`; + } + const fadeColorArray = [evaluatedColor, alpha]; + api.ink?.(fadeColorArray); + } else { + const processedColor = processArgStringTypes([color3]); + api.ink?.(...processedColor, alpha); + } + if (api.box) { + const screenWidth = api.width || api.screen?.width || 256; + const screenHeight = api.height || api.screen?.height || 256; + api.box(0, 0, screenWidth, screenHeight); + } + if (previousInkSet) { + this.inkState = previousInk; + this.inkStateSet = previousInkSet; + if (previousInk && previousInk.length > 0) { + api.ink?.(...previousInk); + } + } else { + this.clearInkState(); + } + }, + ink: (api, args) => { + if (this.performanceMode?.enabled && args && Array.isArray(args) && args.length >= 3 && typeof args[0] === "number" && typeof args[1] === "number" && typeof args[2] === "number") { + this.inkState = [args[0], args[1], args[2]]; + this.inkStateSet = true; + if (VERBOSE) { + const drawingTarget = api.screen; + let bakedIndex = -1; + if (this.bakedLayers && drawingTarget) { + bakedIndex = this.bakedLayers.findIndex((layer) => layer?.buffer === drawingTarget || layer?.buffer?.pixels === drawingTarget?.pixels); + } + console.log(`\u{1F58B}\uFE0F Ink (fast path) target info: width=${drawingTarget?.width} height=${drawingTarget?.height} bakedIndex=${bakedIndex}`); + } + api.ink?.(args[0], args[1], args[2]); + return; + } + if (!args || !Array.isArray(args)) { + args = args ? [args] : []; + } + const isEraseMode = args.length >= 1 && args[0] === "erase"; + if (isEraseMode && api.blend) { + if (kidlispInkLoggingEnabled()) { + } + api.blend("erase"); + if (this.currentBakeIndex >= 0 && this.bakes && api.setEraseTarget) { + const bake3 = this.bakes[this.currentBakeIndex]; + if (bake3 && !bake3.eraseMask) { + bake3.eraseMask = new Uint8Array(bake3.width * bake3.height); + } + if (bake3?.eraseMask) { + api.setEraseTarget(bake3.eraseMask, bake3.width); + } + } + } else if (!isEraseMode && api.blend) { + api.blend("blend"); + if (api.setEraseTarget) api.setEraseTarget(null, 0); + } + let processedArgs; + if (args.length === 1 && Array.isArray(args[0])) { + processedArgs = args[0]; + } else { + processedArgs = processArgStringTypes(args); + if (Array.isArray(processedArgs) && processedArgs.length > 1 && Array.isArray(processedArgs[0])) { + processedArgs = [...processedArgs[0], ...processedArgs.slice(1)]; + } + } + if (args.length === 0) { + const randomColor = [ + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ]; + this.inkState = randomColor; + this.inkStateSet = true; + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "ink", + func: api.ink, + args: randomColor + }); + return; + } + if (VERBOSE) { + const drawingTarget = api.screen; + let bakedIndex = -1; + if (this.bakedLayers && drawingTarget) { + bakedIndex = this.bakedLayers.findIndex((layer) => layer?.buffer === drawingTarget || layer?.buffer?.pixels === drawingTarget?.pixels); + } + console.log(`\u{1F58B}\uFE0F Ink (random) target info: width=${drawingTarget?.width} height=${drawingTarget?.height} bakedIndex=${bakedIndex}`); + } + api.ink?.(...randomColor); + return; + } else if (args.length === 1 && (args[0] === null || args[0] === void 0)) { + this.clearInkState(); + return void 0; + } else { + if (args.length === 1 && typeof args[0] === "string" && args[0].startsWith("fade:")) { + this.inkState = [args[0]]; + this.inkStateSet = true; + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "ink", + func: api.ink, + args: [args[0]] + }); + return; + } + api.ink?.(args[0]); + return; + } + this.inkState = Array.isArray(processedArgs) ? processedArgs : [processedArgs]; + this.inkStateSet = true; + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "ink", + func: api.ink, + args: Array.isArray(processedArgs) ? processedArgs : [processedArgs] + }); + return; + } + api.ink?.(...Array.isArray(processedArgs) ? processedArgs : [processedArgs]); + } + }, + // Fade string constructor - returns a fade string that can be used with ink + // Usage: (fade "red" "blue") → "fade:red-blue" + // Usage: (fade "red" "blue" "vertical") → "fade:red-blue:vertical" + // Usage: (fade "red" "yellow" "blue" "horizontal-reverse") → "fade:red-yellow-blue:horizontal-reverse" + fade: (api, args) => { + if (args.length < 2) { + return "fade:red-blue"; + } + const lastArg = args[args.length - 1]; + const validDirections = [ + "horizontal", + "horizontal-reverse", + "vertical", + "vertical-reverse", + "diagonal", + "diagonal-reverse" + ]; + let colors, direction; + if (typeof lastArg === "string" && validDirections.includes(lastArg)) { + colors = processArgStringTypes(args.slice(0, -1)).join("-"); + direction = lastArg; + return `fade:${colors}:${direction}`; + } else if (typeof lastArg === "number") { + colors = processArgStringTypes(args.slice(0, -1)).join("-"); + direction = lastArg.toString(); + return `fade:${colors}:${direction}`; + } else if (args.length >= 3) { + colors = processArgStringTypes(args.slice(0, -1)).join("-"); + try { + const evaluated = typeof lastArg === "string" ? parseFloat(lastArg) : lastArg; + if (!isNaN(evaluated)) { + return `fade:${colors}:${evaluated}`; + } else { + return `fade:${colors}:${JSON.stringify(lastArg)}`; + } + } catch (error) { + return `fade:${colors}:${JSON.stringify(lastArg)}`; + } + } else { + colors = processArgStringTypes(args).join("-"); + return `fade:${colors}`; + } + }, + // Dynamic timing helpers with intuitive names + hop: (api, args, env) => { + if (args.length >= 3) { + const seconds = this.evaluate(args[0], api, env); + const color1 = args[1]; + const color22 = args[2]; + const timingStr = `${seconds}s...`; + return this.evaluate([timingStr, color1, color22], api, env); + } + console.error("\u2757 Invalid `hop`. Expected (hop seconds color1 color2)."); + }, + delay: (api, args, env) => { + if (args.length >= 2) { + const seconds = this.evaluate(args[0], api, env); + const action = args[1]; + const timingStr = `${seconds}s`; + return this.evaluate([timingStr, action], api, env); + } + console.error("\u2757 Invalid `delay`. Expected (delay seconds action)."); + }, + line: (api, args = []) => { + if (!this.inkStateSet && kidlispInkLoggingEnabled()) { + console.log(`${kidlispInkLogPrefix()}\u{1F41B} line called without ink!`); + console.log(` Current expression:`, this.currentEvaluatingExpression); + console.log(` AST:`, JSON.stringify(this.ast).substring(0, 200)); + } + if (kidlispInkLoggingEnabled()) { + let activeInkRaw; + try { + activeInkRaw = cloneValueForInkLog(api?.inkrn?.()); + } catch (err) { + activeInkRaw = `inkrn-error:${err?.message || err}`; + } + const inkStateRaw = cloneValueForInkLog(this.getInkState()); + const argsRaw = Array.isArray(args) ? args.map((arg) => cloneValueForInkLog(arg)) : cloneValueForInkLog(args); + const canUseActiveInk = activeInkRaw !== void 0 && activeInkRaw !== null && typeof activeInkRaw !== "string"; + const hasInkState = inkStateRaw !== void 0 && inkStateRaw !== null; + const resolvedInkRaw = hasInkState ? inkStateRaw : canUseActiveInk ? activeInkRaw : inkStateRaw; + const resolvedInkSource = hasInkState ? "state" : canUseActiveInk ? "active" : "none"; + } + const useRandomInk = !this.inkStateSet; + if (useRandomInk) { + const randomColor = [ + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ]; + api.ink?.(...randomColor); + if (kidlispInkLoggingEnabled()) { + console.log(`${kidlispInkLogPrefix()}\u{1F3A8} line: Using random ink [${randomColor.join(", ")}]`); + } + } + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "line", + func: api.line, + args: [...args] + }); + return; + } + if (this.inkState && api.ink) { + api.ink(...this.inkState); + if (kidlispInkLoggingEnabled() && this.inkState[0] === "erase") { + const graphColor = api.color ? api.color() : null; + if (Array.isArray(graphColor)) { + } else if (graphColor) { + } else { + } + } + } + const currentPage = api.screen; + const isBakeBuffer = this.bakes?.some((b2) => b2.pixels === currentPage?.pixels); + api.line(...args); + }, + // Batch line drawing for performance + lines: (api, args = []) => { + if (args.length > 0 && Array.isArray(args[0])) { + args[0].forEach((lineArgs) => { + if (Array.isArray(lineArgs) && lineArgs.length >= 4) { + api.line(...lineArgs); + } + }); + } + }, + wiggle: (api, args = []) => { + const amount = args.length > 0 ? args[0] : 10; + return (this.seededRandom() - 0.5) * amount; + }, + box: (api, args = []) => { + if (!Array.isArray(args)) { + console.warn("\u26A0\uFE0F box function received non-array args, converting to array"); + args = Array.isArray(args) ? args : [args]; + } + if (args.length === 0) { + args = [void 0, void 0, void 0, void 0]; + } + const processedArgs = args.map((arg, index) => { + if (arg === void 0) { + switch (index) { + case 0: + return Math.floor(this.seededRandom() * (api.screen?.width || 256)); + case 1: + return Math.floor(this.seededRandom() * (api.screen?.height || 256)); + case 2: + return Math.floor(this.seededRandom() * ((api.screen?.width || 256) / 4)) + 10; + case 3: + return Math.floor(this.seededRandom() * ((api.screen?.height || 256) / 4)) + 10; + default: + return Math.floor(this.seededRandom() * 256); + } + } + return arg; + }); + if (processedArgs.length === 4 && processedArgs.every((a2) => typeof a2 === "number")) { + processedArgs.push(this.fillMode ? "fill" : "outline"); + } + if (!this.inkStateSet) { + const randomColor = [ + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ]; + api.ink?.(...randomColor); + } + const drawBox = () => { + api.box(...processedArgs); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, drawBox); + return; + } + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "box", + func: api.box, + args: [...processedArgs] + }); + return; + } + drawBox(); + }, + circle: (api, args = []) => { + if (args.length === 0) { + args = [void 0, void 0, void 0]; + } + const processedCircleArgs = args.map((arg, index) => { + if (arg === void 0) { + switch (index) { + case 0: + return Math.floor(this.seededRandom() * (api.screen?.width || 256)); + case 1: + return Math.floor(this.seededRandom() * (api.screen?.height || 256)); + case 2: + return Math.floor(this.seededRandom() * (Math.min(api.screen?.width || 256, api.screen?.height || 256) / 8)) + 5; + default: + return Math.floor(this.seededRandom() * 256); + } + } + return arg; + }); + let circleArgs = [...processedCircleArgs]; + if (circleArgs.length === 3) { + circleArgs.push(this.fillMode); + } + if (!this.inkStateSet) { + const randomColor = [ + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ]; + api.ink?.(...randomColor); + } + const drawCircle = () => { + api.circle(...circleArgs); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, drawCircle); + return; + } + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "circle", + func: api.circle, + args: [...circleArgs] + }); + return; + } + drawCircle(); + }, + oval: (api, args = []) => { + if (args.length === 0) args = [void 0, void 0, void 0, void 0]; + const processedOvalArgs = args.map((arg, index) => { + if (arg !== void 0) return arg; + const w = api.screen?.width || 256, h = api.screen?.height || 256; + switch (index) { + case 0: + return Math.floor(this.seededRandom() * w); + case 1: + return Math.floor(this.seededRandom() * h); + case 2: + return Math.floor(this.seededRandom() * (w / 8)) + 5; + case 3: + return Math.floor(this.seededRandom() * (h / 8)) + 5; + default: + return Math.floor(this.seededRandom() * 256); + } + }); + const [ox, oy, orx, ory] = processedOvalArgs; + const mode = processedOvalArgs[4]; + const filled = mode === void 0 ? this.fillMode : mode !== "outline"; + if (!this.inkStateSet) { + api.ink?.( + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ); + } + api.oval(ox, oy, orx, ory, filled); + }, + point: (api, args = []) => { + const x = args.length >= 1 ? args[0] : Math.floor(this.seededRandom() * (api.screen?.width || 128)); + const y = args.length >= 2 ? args[1] : Math.floor(this.seededRandom() * (api.screen?.height || 128)); + const drawPoint = () => { + api.point(x, y); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, drawPoint); + return; + } + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "point", + func: api.point, + args: [x, y] + }); + return; + } + drawPoint(); + }, + tri: (api, args = []) => { + if (args.length === 0) { + args = [void 0, void 0, void 0, void 0, void 0, void 0]; + } + const processedTriArgs = args.map((arg, index) => { + if (arg === void 0) { + if (index % 2 === 0) { + return Math.floor(this.seededRandom() * (api.screen?.width || 256)); + } else { + return Math.floor(this.seededRandom() * (api.screen?.height || 256)); + } + } + return arg; + }); + let triArgs = [...processedTriArgs]; + if (triArgs.length === 6 && triArgs.every((a2) => typeof a2 === "number")) { + triArgs.push(this.fillMode ? "fill" : "outline"); + } + if (!this.inkStateSet) { + const randomColor = [ + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ]; + api.ink?.(...randomColor); + } + const drawTri = () => { + api.tri(...triArgs); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, drawTri); + return; + } + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "tri", + func: api.tri, + args: [...triArgs] + }); + return; + } + drawTri(); + }, + flood: (api, args = []) => { + if (args.length === 0) args = [void 0, void 0]; + if (args.length >= 2) { + let x = args[0]; + let y = args[1]; + if (x === void 0) { + x = Math.floor(this.seededRandom() * (api.screen?.width || 256)); + } + if (y === void 0) { + y = Math.floor(this.seededRandom() * (api.screen?.height || 256)); + } + const fillColor = args[2]; + const useRandomInk = !this.inkStateSet && fillColor === void 0; + if (useRandomInk) { + const randomColor = [ + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ]; + api.ink?.(...randomColor); + } + const performFlood = () => { + if (fillColor !== void 0) { + api.flood(x, y, processArgStringTypes(fillColor)); + } else { + api.flood(x, y); + } + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performFlood); + return; + } + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase) { + this.postEmbedCommands = this.postEmbedCommands || []; + this.postEmbedCommands.push({ + name: "flood", + func: () => { + performFlood(); + }, + args: [x, y, fillColor] + }); + return; + } + performFlood(); + } + }, + shape: (api, args = []) => { + if (args.length === 0 || args.length === 1 && typeof args[0] === "number") { + const n2 = args.length === 1 ? Math.max(3, Math.floor(args[0])) : 3 + Math.floor(this.seededRandom() * 4); + const w = api.screen?.width || 256, h = api.screen?.height || 256; + const pts = []; + for (let i2 = 0; i2 < n2; i2++) { + pts.push([Math.floor(this.seededRandom() * w), Math.floor(this.seededRandom() * h)]); + } + const cx = pts.reduce((s2, p) => s2 + p[0], 0) / n2; + const cy = pts.reduce((s2, p) => s2 + p[1], 0) / n2; + pts.sort((a2, b2) => Math.atan2(a2[1] - cy, a2[0] - cx) - Math.atan2(b2[1] - cy, b2[0] - cx)); + args = pts.flat(); + if (!this.inkStateSet) { + api.ink?.( + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256), + Math.floor(this.seededRandom() * 256) + ); + } + api.shape({ points: args, filled: this.fillMode !== false, thickness: 1 }); + return; + } + if (this.performanceMode?.enabled && args.length === 6 && args.every((arg) => typeof arg === "number")) { + api.shape({ points: args, filled: true, thickness: 1 }); + return; + } + let filled = true; + let thickness = 1; + let points = args; + const lastArg = args[args.length - 1]; + if (typeof lastArg === "string") { + const fillMode = unquoteString(lastArg); + if (fillMode === "outline" || fillMode === "unfilled" || fillMode === "false") { + filled = false; + points = args.slice(0, -1); + } + if (fillMode.startsWith("outline:")) { + filled = false; + thickness = parseInt(fillMode.split(":")[1]) || 1; + points = args.slice(0, -1); + } + } + api.shape({ points, filled, thickness }); + }, + // 🐢 Turtle Graphics + crawl: (api, args = []) => { + const steps = args.length > 0 ? args[0] : 1; + return api.crawl?.(steps); + }, + left: (api, args = []) => { + const degrees2 = args.length > 0 ? args[0] : 1; + return api.left?.(degrees2); + }, + right: (api, args = []) => { + const degrees2 = args.length > 0 ? args[0] : 1; + return api.right?.(degrees2); + }, + up: (api, args = []) => { + return api.up?.(); + }, + down: (api, args = []) => { + return api.down?.(); + }, + goto: (api, args = []) => { + if (args.length >= 2) { + return api.goto?.(args[0], args[1]); + } + return api.goto?.(); + }, + face: (api, args = []) => { + const angle3 = args.length > 0 ? args[0] : 0; + return api.face?.(angle3); + }, + scroll: (api, args = []) => { + this.preserveLayer0NextFrame = true; + if (this.suppressDrawingBeforeBake) { + if (VERBOSE) console.log("\u{1F35E} Scroll: SUPPRESSED (before bake point)"); + return; + } + let dx = 0, dy = 0; + if (!args || args.length === 0) { + if (!this.scrollFuzzDirection) { + const directions = [ + [1, 0], + // scroll right + [-1, 0], + // scroll left + [0, 1], + // scroll down + [0, -1] + // scroll up + ]; + this.scrollFuzzDirection = directions[Math.floor(this.seededRandom() * directions.length)]; + } + dx = this.scrollFuzzDirection[0]; + dy = this.scrollFuzzDirection[1]; + } else if (Array.isArray(args) && args.length === 1 && Array.isArray(args[0]) && args[0].length > 0 && typeof args[0][0] === "string" && args[0][0].endsWith("...")) { + const timingExpr = args[0]; + const result = this.evaluate([timingExpr], api); + if (Array.isArray(result) && result.length >= 2) { + dx = parseFloat(result[0]) || 0; + dy = parseFloat(result[1]) || 0; + } else if (typeof result === "number") { + dx = result; + dy = 0; + } else { + return; + } + } else if (Array.isArray(args) && args.length > 0 && Array.isArray(args[0])) { + const timingPhases = args; + let activePhase = null; + for (let i2 = 0; i2 < timingPhases.length; i2++) { + const phase = timingPhases[i2]; + if (Array.isArray(phase) && phase.length > 0) { + const timingToken = phase[0]; + if (typeof timingToken === "string" && /^\d*\.?\d+[s]\.\.\.?$/.test(timingToken)) { + if (this.evaluateTimingExpression && this.evaluateTimingExpression(api, timingToken)) { + activePhase = phase; + break; + } else { + console.log(`\u{1F5B1}\uFE0F SCROLL timing phase ${i2} is inactive`); + } + } + } + } + if (activePhase && activePhase.length > 1) { + const values2 = activePhase.slice(1); + if (values2.length >= 2) { + dx = parseFloat(values2[0]) || 0; + dy = parseFloat(values2[1]) || 0; + } else if (values2.length === 1) { + dx = parseFloat(values2[0]) || 0; + dy = 0; + } + console.log(`\u{1F5B1}\uFE0F SCROLL using active timing phase values: dx=${dx}, dy=${dy}`); + } else { + console.log(`\u{1F5B1}\uFE0F SCROLL no active timing phase found, using defaults`); + } + } else if (Array.isArray(args)) { + if (args.length === 1) { + dx = parseFloat(args[0]) || 0; + dy = 0; + } else if (args.length === 2) { + dx = parseFloat(args[0]) || 0; + dy = parseFloat(args[1]) || 0; + } else if (args.length > 2) { + dx = parseFloat(args[0]) || 0; + dy = parseFloat(args[1]) || 0; + } + } + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "scroll", + func: () => { + if (typeof api.scroll === "function") { + api.scroll(dx, dy); + } + }, + args: [dx, dy] + }); + return; + } + if (typeof api.scroll === "function") { + api.scroll(dx, dy); + } + if (this.burnedBuffer) { + this._scrollPersistentLayers(api, dx, dy); + } + }, + spin: (api, args = []) => { + this.preserveLayer0NextFrame = true; + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "spin", + func: () => api.spin(...args), + args + }); + return; + } + api.spin(...args); + if (this.burnedBuffer) { + this._spinPersistentLayers(api, args); + } + }, + resetSpin: (api, args = []) => { + api.resetSpin(); + }, + smoothspin: (api, args = []) => { + this.preserveLayer0NextFrame = true; + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "smoothspin", + func: () => api.smoothSpin(...args), + args + }); + return; + } + api.smoothSpin(...args); + if (this.burnedBuffer) { + this._spinPersistentLayers(api, args, true); + } + }, + sort: (api, args = []) => { + api.sort(...args); + }, + zoom: (api, args = []) => { + this.preserveLayer0NextFrame = true; + const performZoom = () => { + api.zoom(...args); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, () => { + performZoom(); + }); + return; + } + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "zoom", + func: () => { + api.zoom(...args); + }, + args + }); + return; + } + performZoom(); + if (this.burnedBuffer) { + const layers = []; + if (this.layer0?.pixels) layers.push(this.layer0); + if (this.bakes) { + for (const b2 of this.bakes) { + if (b2?.pixels) layers.push(b2); + } + } + for (const buf of layers) { + api.page(buf); + api.zoom(...args); + } + api.page(this.burnedBuffer); + } + }, + flip: (api, args = []) => { + this.preserveLayer0NextFrame = true; + const performFlip = () => { + if (typeof api.flip === "function") { + api.flip(...args); + } + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performFlip); + return; + } + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "flip", + func: performFlip, + args + }); + return; + } + performFlip(); + }, + suck: (api, args = []) => { + this.preserveLayer0NextFrame = true; + const performSuck = () => { + api.suck(...args); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performSuck); + return; + } + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "suck", + func: () => { + api.suck(...args); + }, + args + }); + return; + } + performSuck(); + }, + blur: (api, args = []) => { + this.preserveLayer0NextFrame = true; + if (this.suppressDrawingBeforeBake) { + const routed = this.runWithBakedBuffer(api, () => { + api.blur(...args); + }); + if (routed) { + return; + } + return; + } + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "blur", + func: () => api.blur(...args), + args + }); + return; + } + api.blur(...args); + }, + sharpen: (api, args = []) => { + this.preserveLayer0NextFrame = true; + if (this.suppressDrawingBeforeBake) { + const routed = this.runWithBakedBuffer(api, () => { + api.sharpen(...args); + }); + if (routed) { + return; + } + return; + } + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "sharpen", + func: () => api.sharpen(...args), + args + }); + return; + } + api.sharpen(...args); + }, + invert: (api, args = []) => { + this.preserveLayer0NextFrame = true; + if (this.suppressDrawingBeforeBake) { + const routed = this.runWithBakedBuffer(api, () => { + api.invert(...args); + }); + if (routed) { + return; + } + return; + } + if (this.embeddedLayers?.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands.push({ + name: "invert", + func: () => api.invert(...args), + args + }); + return; + } + api.invert(...args); + }, + contrast: (api, args = []) => { + this.preserveLayer0NextFrame = true; + const performContrast = () => { + api.contrast(...args); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performContrast); + return; + } + if (this.embeddedLayers && this.embeddedLayers.length > 0 && !this.inEmbedPhase && !this.isEmbeddedContext) { + this.postCompositeCommands = this.postCompositeCommands || []; + this.postCompositeCommands.push({ + name: "contrast", + func: () => { + performContrast(); + }, + args + }); + return; + } + performContrast(); + }, + pan: (api, args = []) => { + api.pan(...args); + }, + unpan: (api, args = []) => { + api.unpan(); + }, + // 📷 Camera rotation functions + camrotx: (api, args = []) => { + const rotation = args[0] || 0; + if (api.system.defaultCam) { + api.system.defaultCam.rotX = rotation; + } + }, + camroty: (api, args = []) => { + const rotation = args[0] || 0; + if (api.system.defaultCam) { + api.system.defaultCam.rotY = rotation; + } + }, + camrotz: (api, args = []) => { + const rotation = args[0] || 0; + if (api.system.defaultCam) { + api.system.defaultCam.rotZ = rotation; + } + }, + camrot: (api, args = []) => { + const x = args[0] || 0; + const y = args[1] || 0; + const z = args[2] || 0; + if (api.system.defaultCam) { + api.system.defaultCam.rotX = x; + api.system.defaultCam.rotY = y; + api.system.defaultCam.rotZ = z; + } + }, + camspinx: (api, args = []) => { + const speed = args[0] || 0; + if (api.system.defaultCam) { + const frameCount = this.frameCount || 0; + api.system.defaultCam.rotX = speed * frameCount; + } + }, + camspiny: (api, args = []) => { + const speed = args[0] || 0; + if (api.system.defaultCam) { + const frameCount = this.frameCount || 0; + api.system.defaultCam.rotY = speed * frameCount; + } + }, + camspinz: (api, args = []) => { + const speed = args[0] || 0; + if (api.system.defaultCam) { + const frameCount = this.frameCount || 0; + api.system.defaultCam.rotZ = speed * frameCount; + } + }, + camspin: (api, args = []) => { + const xSpeed = args[0] || 0; + const ySpeed = args[1] || 0; + const zSpeed = args[2] || 0; + if (api.system.defaultCam) { + const frameCount = this.frameCount || 0; + api.system.defaultCam.rotX = xSpeed * frameCount; + api.system.defaultCam.rotY = ySpeed * frameCount; + api.system.defaultCam.rotZ = zSpeed * frameCount; + } + }, + mask: (api, args = []) => { + if (args.length >= 4) { + const box2 = { + x: args[0], + y: args[1], + width: args[2], + height: args[3] + }; + api.mask(box2); + } + }, + unmask: (api, args = []) => { + api.unmask(); + }, + steal: (api, args = []) => { + api.steal(...args); + }, + putback: (api, args = []) => { + api.putback(...args); + }, + // 🖼️ Image pasting and stamping + // Shorthand for pasting the current user's painting + painting: (api, args = []) => { + const processedArgs = [api.system?.painting, ...args]; + api.paste(...processedArgs); + }, + paste: (api, args = []) => { + const processedArgs = args.map((arg, index) => { + if (typeof arg === "string" && arg.startsWith('"') && arg.endsWith('"')) { + return arg.slice(1, -1); + } + if (typeof arg === "string" && arg === "painting") { + return api.system?.painting; + } + if (index === 0 && typeof arg === "string" && arg) { + if (arg.startsWith("http://") || arg.startsWith("https://") || arg.includes("/") || arg.includes("@") || arg.startsWith("#")) { + return arg; + } + } + return arg; + }); + const performPaste = () => { + api.paste(...processedArgs); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performPaste); + return; + } + performPaste(); + }, + stamp: (api, args = []) => { + const processedArgs = args.map((arg, index) => { + if (typeof arg === "string" && arg.startsWith('"') && arg.endsWith('"')) { + return arg.slice(1, -1); + } + if (typeof arg === "string" && arg === "painting") { + return api.system?.painting; + } + if (index === 0 && typeof arg === "string" && arg) { + if (arg.startsWith("http://") || arg.startsWith("https://") || arg.includes("/") || arg.includes("@") || arg.startsWith("#")) { + return arg; + } + } + const result = this.evaluate(arg, api, this.localEnv); + if (index === 0 && typeof result === "function") { + return typeof arg === "string" ? arg : result; + } + return result; + }); + if (processedArgs.length > 0 && typeof processedArgs[0] !== "string" && (typeof processedArgs[0] !== "object" || !processedArgs[0]?.width)) { + console.warn("\u26A0\uFE0F stamp: invalid image source", processedArgs[0]); + return; + } + const performStamp = () => { + api.stamp(...processedArgs); + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performStamp); + return; + } + performStamp(); + }, + // Convert args to string and remove surrounding quotes for text commands + write: (api, args = []) => { + const content = unquoteString(args[0]?.toString() || ""); + let x = args[1]; + let y = args[2]; + if (typeof x === "string" && x.startsWith('"') && x.endsWith('"')) { + x = unquoteString(x); + } + if (typeof y === "string" && y.startsWith('"') && y.endsWith('"')) { + y = unquoteString(y); + } + const bg = args[3] !== void 0 ? processArgStringTypes(args[3]) : void 0; + const size = args[4]; + const bounds = args[5]; + const options = {}; + if (bg !== void 0) { + options.bg = bg; + } + if (bounds !== void 0) { + options.bounds = bounds; + } + const centerX = x === "center"; + const centerY = y === "center"; + const pos = {}; + if (centerX && centerY) { + pos.center = "xy"; + } else if (centerX) { + pos.center = "x"; + pos.y = y; + } else if (centerY) { + pos.center = "y"; + pos.x = x; + } else { + if (x !== void 0) pos.x = x; + if (y !== void 0) pos.y = y; + } + if (size !== void 0) { + pos.size = size; + } + const performWrite = () => { + if (Object.keys(options).length > 0) { + api.write(content, pos, options); + } else { + api.write(content, pos); + } + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performWrite); + return; + } + performWrite(); + }, + // � 3D Form functions + // 3D Objects - simple global forms + cube: (api, args, env, colon) => { + let cubeId; + if (colon) { + cubeId = colon; + } else if (args.length > 0) { + cubeId = String(this.evaluate(args[0], api, env)); + } else { + cubeId = "0"; + } + const templateKey = `cubeTemplate_${cubeId}`; + if (!api.system[templateKey]) { + api.system[templateKey] = new api.Form(api.CUBEL, { pos: [0, 0, 2], rot: [0, 0, 0], scale: 1 }); + } + return api.system[templateKey]; + }, + quad: (api) => { + if (!api.system.quadTemplate) { + api.system.quadTemplate = new api.Form(api.QUAD, { pos: [0, 0, -4], rot: [0, 0, 0], scale: 1 }); + } + return api.system.quadTemplate; + }, + // 🎭 Trans function - creates working copies and applies transformations + // Usage: (trans cube (move 1 2 3) (scale 2) (spin 0.1 0 0) (rotate 45 0 0)) + trans: (api, args, env) => { + if (args.length < 2) { + console.error("\u2757 trans requires at least 2 arguments: form and transformation(s)"); + return; + } + const templateForm = this.evaluate(args[0], api, env); + if (!templateForm || !templateForm.vertices) { + console.error("\u2757 trans: first argument must be a valid form, got:", templateForm); + return; + } + const workingForm = this.createFormCopy(templateForm, api); + for (let i2 = 1; i2 < args.length; i2++) { + const transformCmd = args[i2]; + if (Array.isArray(transformCmd) && transformCmd.length > 0) { + const [cmd, ...params] = transformCmd; + const evaluatedParams = params.map((param) => this.evaluate(param, api, env)); + switch (cmd) { + case "move": + case "pos": + if (evaluatedParams.length >= 3) { + workingForm.position[0] = evaluatedParams[0] || 0; + workingForm.position[1] = evaluatedParams[1] || 0; + workingForm.position[2] = evaluatedParams[2] || 0; + } + break; + case "scale": + if (evaluatedParams.length === 1) { + const s2 = evaluatedParams[0] || 1; + workingForm.scale[0] = s2; + workingForm.scale[1] = s2; + workingForm.scale[2] = s2; + } else if (evaluatedParams.length >= 3) { + workingForm.scale[0] = evaluatedParams[0] || 1; + workingForm.scale[1] = evaluatedParams[1] || 1; + workingForm.scale[2] = evaluatedParams[2] || 1; + } + break; + case "rotate": + if (evaluatedParams.length >= 3) { + workingForm.rotation[0] = evaluatedParams[0] || 0; + workingForm.rotation[1] = evaluatedParams[1] || 0; + workingForm.rotation[2] = evaluatedParams[2] || 0; + } + break; + case "spin": + if (evaluatedParams.length >= 3) { + const frameCount = this.frameCount || 0; + workingForm.rotation[0] = (evaluatedParams[0] || 0) * frameCount; + workingForm.rotation[1] = (evaluatedParams[1] || 0) * frameCount; + workingForm.rotation[2] = (evaluatedParams[2] || 0) * frameCount; + } + break; + default: + console.warn(`\u2757 Unknown transform command: ${cmd}`); + break; + } + } + } + workingForm.gpuTransformed = true; + return workingForm; + }, + // Render a form + form: (api, args = []) => { + const forms = args.filter((f2) => f2 !== void 0); + if (forms.length > 0) { + api.form(forms); + } + }, + // Simple transform function for cube + cubespin: (api, args = []) => { + const xSpeed = args[0] || 0; + const ySpeed = args[1] || 0; + const zSpeed = args[2] || 0; + const cube = api.system.cube; + if (cube) { + cube.rotation[0] += xSpeed; + cube.rotation[1] += ySpeed; + cube.rotation[2] += zSpeed; + cube.gpuTransformed = true; + } + return cube; + }, + // Alternative center-spinning cube function + cubespin2: (api, args = []) => { + const xSpeed = args[0] || 0; + const ySpeed = args[1] || 0; + const zSpeed = args[2] || 0; + const cube = api.system.cube; + if (cube && cube.vertices) { + const centerX = cube.position[0]; + const centerY = cube.position[1]; + const centerZ = cube.position[2]; + const rotY = ySpeed; + const cos5 = Math.cos(rotY); + const sin6 = Math.sin(rotY); + cube.vertices.forEach((vertex) => { + const x = vertex.pos[0] - centerX; + const z = vertex.pos[2] - centerZ; + const newX = x * cos5 - z * sin6; + const newZ = x * sin6 + z * cos5; + vertex.pos[0] = newX + centerX; + vertex.pos[2] = newZ + centerZ; + }); + cube.gpuTransformed = true; + } + return cube; + }, + // Move cube to position + cubepos: (api, args = []) => { + const x = args[0] || 0; + const y = args[1] || 0; + const z = args[2] || -4; + const cube = api.system.cube; + if (cube) { + cube.position[0] = x; + cube.position[1] = y; + cube.position[2] = z; + cube.gpuTransformed = true; + } + return cube; + }, + // Scale cube + cubescale: (api, args = []) => { + const scale7 = args[0] || 1; + const cube = api.system.cube; + if (cube) { + cube.scale[0] = scale7; + cube.scale[1] = scale7; + cube.scale[2] = scale7; + cube.gpuTransformed = true; + } + return cube; + }, + // Set cube rotation + cuberot: (api, args = []) => { + const x = args[0] || 0; + const y = args[1] || 0; + const z = args[2] || 0; + const cube = api.system.cube; + if (cube) { + cube.rotation[0] = x; + cube.rotation[1] = y; + cube.rotation[2] = z; + cube.gpuTransformed = true; + } + return cube; + }, + // Global 3D objects work directly + // Manipulate cube.position, cube.rotation, cube.scale directly from KidLisp + // �🏷️ HUD label + label: (api, args = []) => { + const text = args[0] ? unquoteString(args[0].toString()) : void 0; + const color3 = args[1]; + const offset = args[2]; + api.hud?.label?.(text, color3, offset); + return text; + }, + len: (api, args = []) => { + return args[0]?.toString().length; + }, + // (Getters / globals). + source: (api, args = [], env, colon) => { + let sourcedAST = []; + if (colon) { + if (!this.networkCache.sources[colon]) { + this.networkCache.sources[colon] = "loading"; + fetch(`/aesthetic.computer/disks/${colon}.lisp`).then((response) => response.text()).then((code2) => { + this.networkCache.sources[colon] = this.parse(code2); + api.needsPaint(); + }).catch((error) => console.warn(error)); + } else { + sourcedAST = this.networkCache.sources[colon]; + } + } else { + sourcedAST = this.ast; + } + return { iterable: true, data: sourcedAST }; + }, + width: (api) => { + return api.screen.width; + }, + w: (api) => { + return api.screen.width; + }, + height: (api) => { + return api.screen.height; + }, + h: (api) => { + return api.screen.height; + }, + frame: (api) => { + return api.paintCount || 0; + }, + f: (api) => { + return api.paintCount || 0; + }, + clock: (api, args = []) => { + if (args.length > 0) return this.runMelody(api, args); + this._syncClock(api); + return this._now(); + }, + // 🎯 Performance monitoring functions (singleton behavior) + perf: (api, args = []) => { + const perfKey = `perf_singleton_${args.join("_")}`; + if (this.onceExecuted.has(perfKey)) { + return this.perf.showHUD; + } + this.onceExecuted.add(perfKey); + if (args.length === 0) { + this.startPerformanceMonitoring(); + return true; + } else if (args[0] === "start" || args[0] === "on") { + this.startPerformanceMonitoring(); + return true; + } else if (args[0] === "stop" || args[0] === "off") { + this.stopPerformanceMonitoring(); + return false; + } else if (args[0] === "toggle") { + return this.togglePerformanceHUD(); + } + return this.perf.enabled; + }, + fps: (api, args) => { + if (this.forcedFps !== null) return this.forcedFps; + const isPackMode = typeof window !== "undefined" && window.acPACK_MODE || typeof globalThis !== "undefined" && globalThis.acPACK_MODE; + if (args.length > 0) { + const parsed = parseFloat(args[0]); + if (!isNaN(parsed)) { + if (parsed > 0) { + const targetFps = parsed; + this.targetFps = targetFps; + if (api && typeof api.fps === "function") { + api.fps(targetFps); + } + if (api && api.system) { + api.system.kidlispFps = targetFps; + } + if (typeof window !== "undefined") { + window.currentKidlispFps = targetFps; + if (!window.kidlispFpsTimeline) { + window.kidlispFpsTimeline = []; + } + const timestamp2 = performance.now(); + window.kidlispFpsTimeline.push({ + timestamp: timestamp2, + fps: targetFps + }); + if (window.currentRecordingOptions) { + window.currentRecordingOptions.kidlispFps = targetFps; + window.currentRecordingOptions.kidlispFpsTimeline = window.kidlispFpsTimeline; + if (!isPackMode) { + console.log(`\u{1F3AC} Updated recording options with KidLisp FPS: ${targetFps} at ${timestamp2.toFixed(2)}ms`); + } + } + } + if (this._lastLoggedFps !== targetFps && !isPackMode) { + console.log(`\u{1F3AC} KidLisp FPS set to: ${targetFps} at ${(typeof window !== "undefined" ? performance.now() : 0).toFixed(2)}ms`); + this._lastLoggedFps = targetFps; + } + return targetFps; + } + this.targetFps = null; + if (api && typeof api.fps === "function") { + api.fps(null); + } + if (api && api.system) { + api.system.kidlispFps = null; + } + if (typeof window !== "undefined") { + window.currentKidlispFps = null; + if (!window.kidlispFpsTimeline) { + window.kidlispFpsTimeline = []; + } + const timestamp2 = performance.now(); + window.kidlispFpsTimeline.push({ + timestamp: timestamp2, + fps: null + }); + if (window.currentRecordingOptions) { + window.currentRecordingOptions.kidlispFps = null; + window.currentRecordingOptions.kidlispFpsTimeline = window.kidlispFpsTimeline; + if (!isPackMode) { + console.log(`\u{1F3AC} Reset recording KidLisp FPS override at ${timestamp2.toFixed(2)}ms`); + } + } + } + if (this._lastLoggedFps !== null && !isPackMode) { + console.log(`\u{1F3AC} KidLisp FPS reset to default at ${(typeof window !== "undefined" ? performance.now() : 0).toFixed(2)}ms`); + this._lastLoggedFps = null; + } + return 60; + } + } + return this.targetFps || 60; + }, + // 🎯 Auto-density: automatic pixel density scaling based on FPS + // Usage: (auto-density) - enable with defaults + // (auto-density on) - enable + // (auto-density off) - disable + // (auto-density 30 55) - enable with min/max FPS targets + // (auto-density status) - get current status + "auto-density": (api, args) => { + if (args.length === 0 || args[0] === "on" || args[0] === true) { + this.enableAutoDensity(); + return true; + } else if (args[0] === "off" || args[0] === false) { + this.disableAutoDensity(); + return false; + } else if (args[0] === "status") { + return this.getAutoDensityStatus(); + } else if (typeof args[0] === "number") { + const options = { + targetFpsMin: args[0] + }; + if (args.length > 1 && typeof args[1] === "number") { + options.targetFpsMax = args[1]; + } + this.enableAutoDensity(options); + return true; + } + return this.autoDensity.enabled; + }, + // Alias for auto-density + "scale": (api, args) => { + return this.globalEnv["auto-density"](api, args); + }, + // 🔄 Repeat function (highly optimized) + repeat: (api, args, env) => { + perfStart("repeat-setup"); + if (args.length < 2) { + console.error( + "\u2757 repeat requires at least 2 arguments: count and expression(s)" + ); + return void 0; + } + const countValue = this.evaluate(args[0], api, env); + const count = Number(countValue); + if (isNaN(count) || count < 0) { + console.error( + "\u2757 repeat count must be a non-negative number, got:", + countValue + ); + return void 0; + } + if (count > 1e4) { + console.error( + `\u2757 repeat count ${count} exceeds safety limit of 10,000. Use smaller counts or timing expressions.` + ); + return void 0; + } + perfEnd("repeat-setup"); + let result; + if (args.length >= 3 && typeof args[1] === "string") { + perfStart("repeat-with-iterator"); + const iteratorVar = args[1]; + const expressions = args.slice(2); + if (expressions.length === 2 && Array.isArray(expressions[0]) && expressions[0][0] === "ink" && Array.isArray(expressions[1]) && expressions[1][0] === "box") { + perfStart("fast-draw-loop"); + const inkExpr = expressions[0]; + const boxExpr = expressions[1]; + let paletteColors2 = null; + let sequenceKey = null; + let resolvedColors = null; + if (inkExpr.length === 2 && Array.isArray(inkExpr[1]) && inkExpr[1][0] === "...") { + paletteColors2 = inkExpr[1].slice(1); + sequenceKey = JSON.stringify(paletteColors2); + resolvedColors = paletteColors2.map((colorName) => { + if (api.help?.color) { + return api.help.color(colorName); + } + return colorName; + }); + if (!this.sequenceCounters) { + this.sequenceCounters = /* @__PURE__ */ new Map(); + } + if (!this.sequenceCounters.has(sequenceKey)) { + this.sequenceCounters.set(sequenceKey, 0); + } + } + const boxArgs = boxExpr.slice(1); + const analyzedBoxArgs = boxArgs.map((arg) => { + if (Array.isArray(arg) && arg.length === 3 && arg[0] === "*" && arg[1] === iteratorVar) { + return { type: "iterator_multiply", multiplier: arg[2] }; + } else if (this.containsVariable(arg, iteratorVar)) { + return { type: "variable", expr: arg }; + } else { + return { + type: "constant", + value: this.evaluate(arg, api, { ...this.localEnv, ...env }) + }; + } + }); + const prevLocalEnv2 = this.localEnv; + this.localEnvLevel += 1; + if (!this.localEnvStore[this.localEnvLevel]) { + this.localEnvStore[this.localEnvLevel] = /* @__PURE__ */ Object.create(null); + } + const loopEnv2 = this.localEnvStore[this.localEnvLevel]; + for (const key in this.localEnv) { + loopEnv2[key] = this.localEnv[key]; + } + for (const key in env) { + loopEnv2[key] = env[key]; + } + this.localEnv = loopEnv2; + for (let i2 = 0; i2 < count; i2++) { + loopEnv2[iteratorVar] = i2; + if (resolvedColors) { + const currentIndex = this.sequenceCounters.get(sequenceKey); + const nextIndex = (currentIndex + 1) % resolvedColors.length; + this.sequenceCounters.set(sequenceKey, nextIndex); + const color3 = resolvedColors[currentIndex]; + if (typeof color3 === "object" && color3.r !== void 0) { + api.ink(color3.r, color3.g, color3.b, color3.a || 255); + } else { + api.ink(color3); + } + } else { + this.evaluate(inkExpr, api, this.localEnv); + } + const evaluatedBoxArgs = analyzedBoxArgs.map((arg) => { + switch (arg.type) { + case "iterator_multiply": + return i2 * arg.multiplier; + // Direct multiplication, no evaluation + case "constant": + return arg.value; + // Pre-computed constant + case "variable": + return this.evaluate(arg.expr, api, this.localEnv); + default: + return 0; + } + }); + api.box(...evaluatedBoxArgs); + } + this.localEnvLevel -= 1; + this.localEnv = prevLocalEnv2; + perfEnd("fast-draw-loop"); + perfEnd("repeat-with-iterator"); + return result; + } + if (expressions.length === 2 && Array.isArray(expressions[0]) && expressions[0][0] === "ink" && Array.isArray(expressions[1]) && expressions[1][0] === "write") { + perfStart("fast-text-loop"); + const inkExpr = expressions[0]; + const writeExpr = expressions[1]; + let colorChoices = null; + if (inkExpr.length === 2 && Array.isArray(inkExpr[1]) && inkExpr[1][0] === "choose") { + colorChoices = inkExpr[1].slice(1); + } + let textChoices = null; + if (writeExpr.length >= 2 && Array.isArray(writeExpr[1]) && writeExpr[1][0] === "choose") { + textChoices = writeExpr[1].slice(1); + } + const prevLocalEnv2 = this.localEnv; + this.localEnvLevel += 1; + if (!this.localEnvStore[this.localEnvLevel]) { + this.localEnvStore[this.localEnvLevel] = /* @__PURE__ */ Object.create(null); + } + const loopEnv2 = this.localEnvStore[this.localEnvLevel]; + for (const key in this.localEnv) { + loopEnv2[key] = this.localEnv[key]; + } + for (const key in env) { + loopEnv2[key] = env[key]; + } + this.localEnv = loopEnv2; + for (let i2 = 0; i2 < count; i2++) { + loopEnv2[iteratorVar] = i2; + if (colorChoices) { + const colorIndex = Math.floor(this.seededRandom() * colorChoices.length); + api.ink?.(colorChoices[colorIndex]); + } else { + this.evaluate(inkExpr, api, this.localEnv); + } + let text, x, y; + if (textChoices) { + const textIndex = Math.floor(this.seededRandom() * textChoices.length); + text = textChoices[textIndex]; + } else { + text = this.fastEval(writeExpr[1], api, this.localEnv); + } + if (writeExpr.length >= 4) { + x = this.fastEval(writeExpr[2], api, this.localEnv); + y = this.fastEval(writeExpr[3], api, this.localEnv); + } else { + x = 0; + y = 0; + } + api.write?.(text, x, y); + } + this.localEnvLevel -= 1; + this.localEnv = prevLocalEnv2; + perfEnd("fast-text-loop"); + perfEnd("repeat-with-iterator"); + return result; + } + const baseEnv = { ...this.localEnv, ...env }; + const prevLocalEnv = this.localEnv; + const expressionAnalysis = expressions.map((expr) => { + const containsIterator = this.containsVariable ? this.containsVariable(expr, iteratorVar) : true; + return { expr, containsIterator }; + }); + const invariantResults = /* @__PURE__ */ new Map(); + expressionAnalysis.forEach((analysis, index) => { + if (!analysis.containsIterator) { + invariantResults.set( + index, + this.evaluate(analysis.expr, api, baseEnv) + ); + } + }); + this.localEnvLevel += 1; + if (!this.localEnvStore[this.localEnvLevel]) { + this.localEnvStore[this.localEnvLevel] = /* @__PURE__ */ Object.create(null); + } + const loopEnv = this.localEnvStore[this.localEnvLevel]; + for (const key in loopEnv) { + delete loopEnv[key]; + } + for (const key in baseEnv) { + loopEnv[key] = baseEnv[key]; + } + this.localEnv = loopEnv; + for (let i2 = 0; i2 < count; i2++) { + loopEnv[iteratorVar] = i2; + expressionAnalysis.forEach((analysis, index) => { + if (invariantResults.has(index)) { + result = invariantResults.get(index); + } else { + result = this.evaluate(analysis.expr, api, this.localEnv); + } + }); + } + this.localEnvLevel -= 1; + this.localEnv = prevLocalEnv; + perfEnd("repeat-with-iterator"); + } else { + const expressions = args.slice(1); + for (let i2 = 0; i2 < count; i2++) { + for (const expr of expressions) { + result = this.evaluate(expr, api, env); + } + } + } + return result; + }, + // Abbreviation for repeat + rep: (api, args, env) => { + return this.getGlobalEnv().repeat(api, args, env); + }, + // Alias for repeat - "bunching together" code clods + bunch: (api, args, env) => { + return this.getGlobalEnv().repeat(api, args, env); + }, + // 🎲 Random selection (optimized with caching for performance) + choose: (api, args = []) => { + if (args.length === 0) return void 0; + if (args.length <= 8) { + const cacheKey = JSON.stringify(args); + if (!this.choiceCache) this.choiceCache = /* @__PURE__ */ new Map(); + let cachedArgs = this.choiceCache.get(cacheKey); + if (!cachedArgs) { + cachedArgs = [...args]; + this.choiceCache.set(cacheKey, cachedArgs); + if (this.choiceCache.size > 100) { + const firstKey = this.choiceCache.keys().next().value; + this.choiceCache.delete(firstKey); + } + } + const randomIndex2 = Math.floor(this.seededRandom() * cachedArgs.length); + return cachedArgs[randomIndex2]; + } + if (api.help?.choose) { + return api.help.choose(...args); + } + const randomIndex = Math.floor(this.seededRandom() * args.length); + return args[randomIndex]; + }, + // 🎲 Random selection (alias) + "?": (api, args = []) => { + if (args.length > 0) { + if (api.help?.choose) { + return api.help.choose(...args); + } + const randomIndex = Math.floor(this.seededRandom() * args.length); + return args[randomIndex]; + } + console.log("\u{1F3B2} ? called with no arguments, returning undefined"); + return void 0; + }, + // 🔄 Sequential selection (cycles through arguments in order) + "...": (api, args = [], env) => { + if (args.length === 0) return void 0; + const sequenceKey = JSON.stringify(args); + if (!this.sequenceCounters) { + this.sequenceCounters = /* @__PURE__ */ new Map(); + } + if (!this.sequenceCounters.has(sequenceKey)) { + this.sequenceCounters.set(sequenceKey, 0); + } + const currentIndex = this.sequenceCounters.get(sequenceKey); + const nextIndex = (currentIndex + 1) % args.length; + this.sequenceCounters.set(sequenceKey, nextIndex); + return args[currentIndex]; + }, + // 🔄 Sequential selection (alias with two dots) + "..": (api, args = [], env) => { + return this.getGlobalEnv()["..."](api, args, env); + }, + // 🔈 Voices — the same physical models the JS pads use (lib/pads.mjs), said + // in Lisp. `overtone` below is a bare square wave; these have bodies. + // + // (pluck c4) a struck string + // (bell e5 0.3) shimmering, long tail — second arg is volume + // (sub a1) warm low end + // (flute g4) breathy waveguide lead + // (hat) a closed hi-hat tick + // (voice harp c4 0.4 -0.5) any type, volume, pan + // + // A note is what you'd say out loud — c4, e5, a1 — because a language you + // can't say out loud is a language nobody writes music in. + // Sound is a boundary: `synth` isn't there on the first frames, and a voice + // that throws takes the whole evaluation down with it. A pad with no audio + // yet should draw silently, not die. + // + // The NOTE arrives unevaluated (these heads are in the no-eval list), because + // `c4` is ALREADY a color in KidLisp — it evaluates to [0,255,0], and a synth + // handed a green triple says "Note not found in the list". In a voice call a + // note is a note; nothing else gets to claim that name. Every OTHER argument + // is evaluated by hand, so volume and pan can still be expressions. + pluck: (api, args = [], env) => api.sound?.synth && voices.pluck(api.sound.synth, note(args[0], "c4"), { + volume: numArg(api, env, args[1], 0.5), + pan: numArg(api, env, args[2], 0) + }), + bell: (api, args = [], env) => api.sound?.synth && voices.bell(api.sound.synth, note(args[0], "e5"), { + volume: numArg(api, env, args[1], 0.4), + pan: numArg(api, env, args[2], 0) + }), + sub: (api, args = [], env) => api.sound?.synth && voices.sub(api.sound.synth, note(args[0], "a1"), { + volume: numArg(api, env, args[1], 0.5), + pan: numArg(api, env, args[2], 0) + }), + flute: (api, args = [], env) => api.sound?.synth && voices.flute(api.sound.synth, note(args[0], "g4"), { + volume: numArg(api, env, args[1], 0.3), + pan: numArg(api, env, args[2], 0) + }), + hat: (api, args = [], env) => api.sound?.synth && voices.hat(api.sound.synth, { + volume: numArg(api, env, args[0], 0.14), + pan: numArg(api, env, args[1], 0) + }), + // The whole synth, for when a named voice isn't the one you hear. + // (voice sine c4 0.4 0 1.2) → type, note, volume, pan, beats + voice: (api, args = [], env) => { + const synth = api.sound?.synth; + if (!synth) return; + return synth({ + type: unquoteString(String(args[0] ?? "sine")), + tone: note(args[1], "c4"), + volume: numArg(api, env, args[2], 0.4), + pan: numArg(api, env, args[3], 0), + beats: numArg(api, env, args[4], 0.6), + attack: numArg(api, env, args[5], 0.01), + decay: numArg(api, env, args[6], 0.6) + }); + }, + // 🔈 Sound + overtone: (api, args = []) => { + let tone; + if (args[0] === void 0) { + tone = 440; + } else { + tone = args[0] * args[1] / args[2]; + } + return api.sound.synth({ + type: "square", + tone, + // beats: 0.1, + duration: Infinity, + attack: 0.01, + decay: 0.5, + volume: 0.15 + }); + }, + rainbow: (api) => { + return "rainbow"; + }, + zebra: (api) => { + return "zebra"; + }, + // 🎨 Noise generation + noise: (api, args = []) => { + const variant = args.length > 0 ? unquoteString(args[0]) : null; + if (variant === "digitpain") { + api.noise16DIGITPAIN?.(); + } else if (variant === "aesthetic") { + api.noise16Aesthetic?.(); + } else if (variant === "sotce") { + api.noise16Sotce?.(); + } else { + api.noise16?.(); + } + }, + // 🔧 Debug function + debug: (api, args = []) => { + if (isKidlispConsoleEnabled()) { + postKidlispConsole("log", `\u{1F527} DEBUG: ${formatConsoleArgs(args)}`, { kind: "debug" }); + } + console.log("\u{1F527} DEBUG:", args); + return "debug called"; + }, + log: (api, args = []) => { + if (isKidlispConsoleEnabled()) { + postKidlispConsole("log", `\u{1F4DD} LOG: ${formatConsoleArgs(args)}`, { kind: "log" }); + } + console.log("\u{1F4DD} LOG:", ...args); + return args[0]; + }, + // 💾 Cache function - loads cached KidLisp code using nanoid + // Usage: (cache abc123XY) or (cache $abc123XY) loads cached code + cache: (api, args = []) => { + if (args.length === 0) { + console.warn("\u2757 cache function requires a nanoid argument"); + return void 0; + } + let cacheId = unquoteString(args[0].toString()); + if (cacheId.startsWith("$")) { + cacheId = cacheId.slice(1); + } + if (!cacheId || !/^[0-9A-Za-z]+$/.test(cacheId)) { + console.warn("\u2757 Invalid cache code:", cacheId); + return cacheId; + } + return getCachedCodeMultiLevel(cacheId).then((source) => { + if (source) { + const parsed = this.parse(source); + return this.evaluate(parsed, api, this.localEnv); + } else { + return void 0; + } + }).catch((error) => { + console.error("\u274C Error loading cached code:", cacheId, error); + return void 0; + }); + }, + // 🚫 Disable wrapper - ignores wrapped expressions + no: (api, args = []) => { + return void 0; + }, + // ✅ Enable wrapper - passthrough that evaluates wrapped expressions + yes: (api, args = []) => { + if (args.length === 0) return void 0; + return this.evaluate(args[0], api, this.localEnv); + }, + // 🎤 Microphone (function version for backward compatibility and explicit control) + mic: (api, args = []) => { + this.requestMicrophoneConnection(api); + return this.globalDef.mic; + }, + // 🔊 Real-time audio amplitude from speakers/system audio + amplitude: (api, args = []) => { + let amplitudeValue = 0; + if (api.sound?.speaker?.amplitudes?.left !== void 0) { + amplitudeValue = api.sound.speaker.amplitudes.left; + } else if (api.sound?.speaker?.amplitudes?.right !== void 0) { + amplitudeValue = api.sound.speaker.amplitudes.right; + } + return amplitudeValue; + }, + // 🎵 Melody - plays a sequence of notes in a loop + melody: (api, args = []) => this.runMelody(api, args), + // 🔊 Speaker - returns whether sound is enabled + speaker: (api) => { + return api.sound?.enabled?.() || false; + if (!this.speakerCache) this.speakerCache = { result: null, timestamp: 0 }; + const now = performance.now(); + if (this.speakerCache.result !== null && now - this.speakerCache.timestamp < 2e3) { + return this.speakerCache.result; + } + const soundEnabled = api.sound?.enabled?.() || false; + this.speakerCache.result = soundEnabled; + this.speakerCache.timestamp = now; + return soundEnabled; + }, + // 🎨 Backdrop - shorthand for (once (wipe color)) to set background once + backdrop: (api, args = []) => { + const performBackdrop = () => { + if (args.length === 0) { + console.error("\u2757 Invalid `backdrop`. Requires at least one color argument."); + return; + } + const backdropKey = "backdrop_" + JSON.stringify(args); + if (!this.onceExecuted.has(backdropKey)) { + this.onceExecuted.add(backdropKey); + if (api.wipe) { + if (args.length === 1) { + return api.wipe(this.evaluate(args[0], api, this.localEnv)); + } else if (args.length === 3) { + return api.wipe( + this.evaluate(args[0], api, this.localEnv), + this.evaluate(args[1], api, this.localEnv), + this.evaluate(args[2], api, this.localEnv) + ); + } else if (args.length === 4) { + return api.wipe( + this.evaluate(args[0], api, this.localEnv), + this.evaluate(args[1], api, this.localEnv), + this.evaluate(args[2], api, this.localEnv), + this.evaluate(args[3], api, this.localEnv) + ); + } + } + } + return void 0; + }; + if (this.suppressDrawingBeforeBake) { + this.executePreBakeDraw(api, performBackdrop); + return; + } + return performBackdrop(); + }, + // Programmatically add all CSS color constants to the global environment. + ...Object.keys(cssColors2).reduce((acc, colorName) => { + acc[colorName] = () => cssColors2[colorName]; + return acc; + }, {}), + // Add static color codes (c0, c1, c2, etc.) using standardized mapping + ...Object.keys(staticColorMap).reduce((acc, index) => { + acc[`c${index}`] = () => staticColorMap[index]; + return acc; + }, {}), + // Add palette codes (p0, p1, etc.) + p0: () => "rainbow", + p1: () => "zebra", + // 🍞 Bake function - creates a new painting buffer for subsequent drawing + // Like: bakes[index] || painting(screen.width, screen.height, (api) => {...}) + bake: (api, args = []) => { + if (api.setEraseTarget) api.setEraseTarget(null, 0); + if (this.isEmbeddedContext) { + return 0; + } + if (!this.bakes) { + this.bakes = []; + this.currentBakeIndex = -1; + } + this.currentBakeIndex++; + const width2 = this.displayBuffer?.width || api.screen?.width || 256; + const height2 = this.displayBuffer?.height || api.screen?.height || 256; + if (this.bakes[this.currentBakeIndex]) { + const existing2 = this.bakes[this.currentBakeIndex]; + if (existing2.width === width2 && existing2.height === height2) { + existing2.burned = false; + api.page(existing2); + if (!api.screen) { + api.screen = { width: existing2.width, height: existing2.height, pixels: existing2.pixels }; + } else { + api.screen.width = existing2.width; + api.screen.height = existing2.height; + api.screen.pixels = existing2.pixels; + } + return this.currentBakeIndex; + } else { + const oldLayer = this.bakes[this.currentBakeIndex]; + const oldPixels = oldLayer.pixels; + const oldWidth = oldLayer.width; + const oldHeight = oldLayer.height; + const resizedLayer = this.createOrReuseBuffer(width2, height2); + resizedLayer.burned = false; + if (oldPixels && oldPixels.length > 0 && !(oldPixels.buffer && oldPixels.buffer.detached)) { + const copyWidth = Math.min(oldWidth, width2); + const copyHeight = Math.min(oldHeight, height2); + for (let y = 0; y < copyHeight; y++) { + const srcOffset = y * oldWidth * 4; + const destOffset = y * width2 * 4; + const rowLength = copyWidth * 4; + if (srcOffset + rowLength <= oldPixels.length && destOffset + rowLength <= resizedLayer.pixels.length) { + resizedLayer.pixels.set(oldPixels.subarray(srcOffset, srcOffset + rowLength), destOffset); + } + } + } + this.returnBufferToPool(oldLayer, oldWidth, oldHeight); + this.bakes[this.currentBakeIndex] = resizedLayer; + api.page(resizedLayer); + if (!api.screen) { + api.screen = { width: resizedLayer.width, height: resizedLayer.height, pixels: resizedLayer.pixels }; + } else { + api.screen.width = resizedLayer.width; + api.screen.height = resizedLayer.height; + api.screen.pixels = resizedLayer.pixels; + } + return this.currentBakeIndex; + } + } + const bakeBuffer = this.createOrReuseBuffer(width2, height2); + bakeBuffer.burned = false; + this.bakes[this.currentBakeIndex] = bakeBuffer; + api.page(bakeBuffer); + if (!api.screen) { + api.screen = { width: bakeBuffer.width, height: bakeBuffer.height, pixels: bakeBuffer.pixels }; + } else { + api.screen.width = bakeBuffer.width; + api.screen.height = bakeBuffer.height; + api.screen.pixels = bakeBuffer.pixels; + } + return this.currentBakeIndex; + }, + // 🔥 Burn function - composites all visible layers into a single frozen buffer + // (burn zoom 1.5) - zooms all bake layers by 1.5x + // This lets you apply transformations to the entire bake stack at once + burn: (api, args = []) => { + if (api.setEraseTarget) api.setEraseTarget(null, 0); + if (this.isEmbeddedContext) { + return 0; + } + const width2 = this.displayBuffer?.width || api.screen?.width || 256; + const height2 = this.displayBuffer?.height || api.screen?.height || 256; + if (this.burnedBuffer && this.burnedBuffer.width === width2 && this.burnedBuffer.height === height2) { + this.burnedBuffer.pixels.fill(0); + } else { + if (this.burnedBuffer) { + this.returnBufferToPool(this.burnedBuffer, this.burnedBuffer.width, this.burnedBuffer.height); + } + this.burnedBuffer = this.createOrReuseBuffer(width2, height2); + } + api.page(this.burnedBuffer); + if (this.layer0 && this.layer0.pixels) { + if (this.layer0.width === width2 && this.layer0.height === height2) { + try { + api.paste(this.layer0, 0, 0); + } catch (error) { + console.warn(`\u26A0\uFE0F Burn: Error pasting layer0:`, error.message); + } + } else { + console.warn(`\u26A0\uFE0F Burn: Skipping layer0 paste due to dimension mismatch: layer0=${this.layer0.width}x${this.layer0.height}, burn=${width2}x${height2}`); + } + } + if (this.bakes) { + const bakesLength = this.bakes.length; + for (let i2 = 0; i2 < bakesLength; i2++) { + const bakeLayer = this.bakes[i2]; + if (bakeLayer && bakeLayer.pixels && !bakeLayer.burned) { + if (bakeLayer.width === width2 && bakeLayer.height === height2) { + try { + api.paste(bakeLayer, 0, 0); + } catch (error) { + console.warn(`\u26A0\uFE0F Burn: Error pasting bake layer ${i2}:`, error.message); + } + if (bakeLayer.eraseMask) { + const dst = this.burnedBuffer.pixels; + const mask2 = bakeLayer.eraseMask; + const totalPixels = bakeLayer.width * bakeLayer.height; + for (let p = 0; p < totalPixels; p++) { + if (mask2[p] > 0) { + const di = p * 4; + const normalAlpha = 1 - mask2[p] / 255; + dst[di + 3] = dst[di + 3] * normalAlpha + 0.5 | 0; + if (dst[di + 3] === 0) { + dst[di] = 32; + dst[di + 1] = 32; + dst[di + 2] = 32; + } + } + } + } + } else { + console.warn(`\u26A0\uFE0F Burn: Skipping bake layer ${i2} paste due to dimension mismatch: bake=${bakeLayer.width}x${bakeLayer.height}, burn=${width2}x${height2}`); + } + } + } + for (let i2 = 0; i2 < bakesLength; i2++) { + const bakeLayer = this.bakes[i2]; + if (bakeLayer) { + bakeLayer.burned = true; + } + } + } + return 0; + }, + // � Tape function - loads and plays tape recordings as embedded video + // Usage: (tape !CODE x y w h) - paste tape frame at position with dimensions + // (tape !CODE x y w h speed) - with playback speed (1.0 = normal) + // (tape !CODE x y) - paste at position with original dimensions + // (tape !CODE) - paste fullscreen + tape: (api, args = []) => { + if (args.length === 0) { + console.warn("\u2757 tape function requires a tape code argument (e.g., !abc123)"); + return void 0; + } + let tapeCode = unquoteString(args[0].toString()); + if (tapeCode.startsWith("!")) { + tapeCode = tapeCode.slice(1); + } + if (!tapeCode || !/^[0-9A-Za-z]+$/.test(tapeCode)) { + console.warn("\u2757 Invalid tape code:", tapeCode); + return void 0; + } + const screenWidth = api.screen?.width || 256; + const screenHeight = api.screen?.height || 256; + let x = 0, y = 0, w = screenWidth, h = screenHeight, speed = 1; + if (args.length >= 3) { + x = this.evaluate(args[1], api, this.localEnv) || 0; + y = this.evaluate(args[2], api, this.localEnv) || 0; + } + if (args.length >= 5) { + w = this.evaluate(args[3], api, this.localEnv) || screenWidth; + h = this.evaluate(args[4], api, this.localEnv) || screenHeight; + } + if (args.length >= 6) { + speed = this.evaluate(args[5], api, this.localEnv) || 1; + } + let tapeEmbed = this.tapeEmbeds.get(tapeCode); + if (!tapeEmbed) { + tapeEmbed = { + frames: [], + frameIndex: 0, + isLoading: true, + timing: null, + width: 0, + height: 0, + lastFrameTime: performance.now(), + frameDuration: 1e3 / 30, + // Default 30fps + loadError: null + }; + this.tapeEmbeds.set(tapeCode, tapeEmbed); + console.log(`\u{1F4FC} KidLisp: Loading tape !${tapeCode}...`); + if (api.send) { + const zipUrl = `${typeof location !== "undefined" ? location.origin : ""}/media/tapes/${tapeCode}`; + api.send({ + type: "tape:preload", + content: { + tapeId: `kidlisp-${tapeCode}`, + code: tapeCode, + zipUrl, + requestFrames: true + // Request frames to be sent back + } + }); + } else { + console.warn("\u2757 Cannot load tape - api.send not available"); + tapeEmbed.isLoading = false; + tapeEmbed.loadError = "No send API"; + } + return void 0; + } + if (tapeEmbed.isLoading) { + return void 0; + } + if (tapeEmbed.loadError) { + console.warn(`\u2757 Tape !${tapeCode} failed to load:`, tapeEmbed.loadError); + return void 0; + } + if (!tapeEmbed.frames || tapeEmbed.frames.length === 0) { + return void 0; + } + const now = performance.now(); + const elapsed = now - tapeEmbed.lastFrameTime; + const adjustedDuration = tapeEmbed.frameDuration / speed; + if (elapsed >= adjustedDuration) { + tapeEmbed.frameIndex = (tapeEmbed.frameIndex + 1) % tapeEmbed.frames.length; + tapeEmbed.lastFrameTime = now; + } + const frame = tapeEmbed.frames[tapeEmbed.frameIndex]; + if (!frame) return void 0; + if (api.paste && frame) { + try { + const transform = { width: w, height: h }; + api.paste(frame, x, y, transform); + } catch (e2) { + console.warn(`\u{1F4FC} Tape frame paste error:`, e2.message); + } + } + return tapeEmbed.frameIndex; + }, + // �🖼️ Embed function - loads cached KidLisp code and creates persistent animated layers + // Usage: (embed $pie) - loads cached code in default 256x256 layer (fixed size for cache efficiency) + // (embed $pie 128 128) - loads cached code in 128x128 layer + // (embed $pie 0 0 60 40) - loads cached code in 60x40 layer at position (0,0) + // (embed $pie 0 0 60 40 128) - loads cached code in 60x40 layer with alpha 128 (0-255, or 0.0-1.0) + embed: (api, args = []) => { + if (args.length === 0) { + console.warn("\u2757 embed function requires a cached code argument"); + return void 0; + } + let cacheId = unquoteString(args[0].toString()); + if (cacheId.startsWith("$")) { + cacheId = cacheId.slice(1); + } + if (!cacheId || !/^[0-9A-Za-z]+$/.test(cacheId)) { + console.warn("\u2757 Invalid cache code:", cacheId); + return void 0; + } + const screenWidth = api.screen?.width || 512; + const screenHeight = api.screen?.height || 512; + let width2 = screenWidth, height2 = screenHeight, x = 0, y = 0, alpha = 255; + let usesScreenDimensions = true; + if (args.length >= 2) { + if (args.length === 2) { + const evalX = this.evaluate(args[1], api, this.localEnv); + x = evalX !== void 0 && evalX !== null ? evalX : 0; + } else if (args.length === 3) { + const evalX = this.evaluate(args[1], api, this.localEnv); + const evalY = this.evaluate(args[2], api, this.localEnv); + x = evalX !== void 0 && evalX !== null ? evalX : 0; + y = evalY !== void 0 && evalY !== null ? evalY : 0; + } else if (args.length === 4) { + const evalX = this.evaluate(args[1], api, this.localEnv); + const evalY = this.evaluate(args[2], api, this.localEnv); + x = evalX !== void 0 && evalX !== null ? evalX : 0; + y = evalY !== void 0 && evalY !== null ? evalY : 0; + const sizeValue = this.evaluate(args[3], api, this.localEnv); + if (!sizeValue) { + usesScreenDimensions = true; + width2 = screenWidth; + height2 = screenWidth; + } else { + width2 = sizeValue; + height2 = sizeValue; + } + } else if (args.length === 5) { + const widthArg = args[3]; + const heightArg = args[4]; + if (typeof widthArg === "string" && widthArg === "w" || typeof heightArg === "string" && heightArg === "h") { + usesScreenDimensions = true; + } + const evalX = this.evaluate(args[1], api, this.localEnv); + const evalY = this.evaluate(args[2], api, this.localEnv); + x = evalX !== void 0 && evalX !== null ? evalX : 0; + y = evalY !== void 0 && evalY !== null ? evalY : 0; + const widthValue = this.evaluate(args[3], api, this.localEnv); + const heightValue = this.evaluate(args[4], api, this.localEnv); + if (!widthValue || !heightValue) { + usesScreenDimensions = true; + } + width2 = widthValue || screenWidth; + height2 = heightValue || screenHeight; + } else if (args.length >= 6) { + const widthArg = args[3]; + const heightArg = args[4]; + if (typeof widthArg === "string" && widthArg === "w" || typeof heightArg === "string" && heightArg === "h") { + usesScreenDimensions = true; + } + const evalX = this.evaluate(args[1], api, this.localEnv); + const evalY = this.evaluate(args[2], api, this.localEnv); + x = evalX !== void 0 && evalX !== null ? evalX : 0; + y = evalY !== void 0 && evalY !== null ? evalY : 0; + const widthValue = this.evaluate(args[3], api, this.localEnv); + const heightValue = this.evaluate(args[4], api, this.localEnv); + if (!widthValue || !heightValue) { + usesScreenDimensions = true; + } + width2 = widthValue || screenWidth; + height2 = heightValue || screenHeight; + alpha = this.evaluate(args[5], api, this.localEnv); + if (alpha !== void 0 && alpha !== null && alpha <= 1 && alpha >= 0) { + alpha = Math.floor(alpha * 255); + } + if (alpha === void 0 || alpha === null) { + alpha = 255; + } + } + } + width2 = Math.max(1, Math.floor(width2)); + height2 = Math.max(1, Math.floor(height2)); + x = Math.floor(x); + y = Math.floor(y); + alpha = Math.max(0, Math.min(255, Math.floor(alpha))); + const rightEdge = x + width2; + const bottomEdge = y + height2; + const halfWidth = Math.ceil(screenWidth / 2); + const halfHeight = Math.ceil(screenHeight / 2); + if (rightEdge > 0 && rightEdge < screenWidth && screenWidth - rightEdge <= 1) { + width2 = screenWidth - x; + } + if (bottomEdge > 0 && bottomEdge < screenHeight && screenHeight - bottomEdge <= 1) { + height2 = screenHeight - y; + } + if (x === 0 && rightEdge > 0 && rightEdge < halfWidth && halfWidth - rightEdge <= 1) { + width2 = halfWidth; + } + if (y === 0 && bottomEdge > 0 && bottomEdge < halfHeight && halfHeight - bottomEdge <= 1) { + height2 = halfHeight; + } + let normalizedWidth, normalizedHeight; + if (usesScreenDimensions) { + normalizedWidth = width2; + normalizedHeight = height2; + } else { + normalizedWidth = width2 <= 128 ? 128 : width2 <= 256 ? 256 : width2 <= 512 ? 512 : width2; + normalizedHeight = height2 <= 128 ? 128 : height2 <= 256 ? 256 : height2 <= 512 ? 512 : height2; + } + const screenSuffix = usesScreenDimensions ? `_screen${screenWidth}x${screenHeight}` : ""; + const layerKey = `${cacheId}_${normalizedWidth}x${normalizedHeight}_${x},${y}_${alpha}${screenSuffix}`; + if (this.embeddedLayerCache && usesScreenDimensions) { + const currentScreenKey = `_screen${screenWidth}x${screenHeight}`; + const entriesToDelete = []; + const layerIndicesToRemove = []; + for (const [key, layer] of this.embeddedLayerCache.entries()) { + if (key.includes("_screen") && !key.includes(currentScreenKey)) { + entriesToDelete.push(key); + if (layer && layer.buffer) { + this.returnBufferToPool(layer.buffer, layer.width, layer.height); + } + if (this.embeddedLayers) { + const layerIndex = this.embeddedLayers.findIndex((l2) => l2.cacheId === key); + if (layerIndex !== -1) { + layerIndicesToRemove.push(layerIndex); + } + } + } + } + if (entriesToDelete.length > 0) { + entriesToDelete.forEach((key) => { + this.embeddedLayerCache.delete(key); + }); + if (layerIndicesToRemove.length > 0 && this.embeddedLayers) { + layerIndicesToRemove.sort((a2, b2) => b2 - a2); + layerIndicesToRemove.forEach((idx) => { + this.embeddedLayers.splice(idx, 1); + }); + console.log(`\u2728 Cleared ${entriesToDelete.length} outdated responsive cache entries and ${layerIndicesToRemove.length} embedded layers`); + } + } + } + if (this.embeddedLayerCache && this.embeddedLayerCache.has(layerKey)) { + const existingLayer = this.embeddedLayerCache.get(layerKey); + if (existingLayer.disabled) { + return void 0; + } + existingLayer.x = x; + existingLayer.y = y; + existingLayer.alpha = alpha; + if (existingLayer.width !== width2 || existingLayer.height !== height2) { + } + if (this.currentTimingContext) { + const timingCtx = this.currentTimingContext; + const selectedArg = timingCtx.selectedArg; + let isCurrentlySelected = false; + if (Array.isArray(selectedArg) && selectedArg.length > 0) { + isCurrentlySelected = selectedArg[0] === `$${cacheId}`; + } else if (typeof selectedArg === "string") { + isCurrentlySelected = selectedArg === `$${cacheId}`; + } + if (!isCurrentlySelected) { + console.log(`\u23F8\uFE0F SKIPPING EMBED ${cacheId} - not selected. Current:`, JSON.stringify(selectedArg)); + return void 0; + } else { + console.log(`\u2705 ALLOWING EMBED ${cacheId} - is selected`); + } + } + const shouldExecute = true; + const shouldRender = this.updateEmbeddedLayer(api, existingLayer); + if (existingLayer.buffer && api.paste) { + } else { + } + return existingLayer; + } + if (!this.embeddedLayerCache) { + this.embeddedLayerCache = /* @__PURE__ */ new Map(); + } + this.loadingEmbeddedLayers.add(cacheId); + if (this.embeddedSourceCache.has(cacheId)) { + const cachedSource = this.embeddedSourceCache.get(cacheId); + this.loadingEmbeddedLayers.delete(cacheId); + this.loadedEmbeddedLayers.add(cacheId); + return this.createEmbeddedLayerFromSource(cachedSource, cacheId, layerKey, width2, height2, x, y, alpha, api); + } + const globalScope = (function() { + if (typeof window !== "undefined") return window; + if (typeof globalThis !== "undefined") return globalThis; + if (typeof global !== "undefined") return global; + if (typeof self !== "undefined") return self; + return {}; + })(); + if (globalScope.objktKidlispCodes && globalScope.objktKidlispCodes[cacheId]) { + const teiaSource = globalScope.objktKidlispCodes[cacheId]; + console.log(`\u{1F3AF} Using OBJKT cached code for embedded layer: ${cacheId}`); + this.embeddedSourceCache.set(cacheId, teiaSource); + this.loadingEmbeddedLayers.delete(cacheId); + this.loadedEmbeddedLayers.add(cacheId); + return this.createEmbeddedLayerFromSource(teiaSource, cacheId, layerKey, width2, height2, x, y, alpha, api); + } + const fetchKey = `${cacheId}_fetching_source`; + if (this.embeddedLayerCache.has(fetchKey)) { + return this.embeddedLayerCache.get(fetchKey); + } + const placeholderSource = `(fps 24) +(wipe 32 32 32 128) +(ink 200 200 200) +(write (+ "Loading " ${JSON.stringify(cacheId)} "...") 4 4)`; + const placeholderLayer = this.createEmbeddedLayerFromSource( + placeholderSource, + cacheId, + layerKey, + width2, + height2, + x, + y, + alpha, + api + ); + console.log(`\u2705 Placeholder layer created for ${cacheId}:`, placeholderLayer ? "success" : "failed"); + const backgroundFetch = Promise.race([ + getCachedCodeMultiLevel(cacheId), + new Promise((resolve) => { + setTimeout(() => { + resolve(null); + }, 1e4); + }) + ]).then((source) => { + this.embeddedLayerCache.delete(fetchKey); + this.loadingEmbeddedLayers.delete(cacheId); + this.loadedEmbeddedLayers.add(cacheId); + if (!source) { + source = `(fps 24) +(wipe red) +(ink yellow) +(line 0 64 128 64) +(ink green) +(line 64 0 64 128)`; + } + this.embeddedSourceCache.set(cacheId, source); + if (placeholderLayer && this.embeddedLayerCache.has(layerKey)) { + const existingLayer = this.embeddedLayerCache.get(layerKey); + if (existingLayer) { + if (existingLayer.buffer && existingLayer.buffer.pixels) { + existingLayer.buffer.pixels.fill(0); + } + existingLayer.source = source; + existingLayer.sourceCode = source; + existingLayer.kidlispInstance.source = source; + existingLayer.parsedCode = existingLayer.kidlispInstance.parse(source); + existingLayer.kidlispInstance.firstLineColor = null; + existingLayer.kidlispInstance.ast = JSON.parse( + JSON.stringify(existingLayer.parsedCode) + ); + existingLayer.kidlispInstance.detectFirstLineColor(); + existingLayer.firstLineColorApplied = false; + existingLayer.localFrameCount = 0; + existingLayer.timingPattern = this.extractTimingPattern(source); + console.log(`\u{1F504} Updated embedded layer ${cacheId} with real source code`); + } + } + return placeholderLayer; + }).catch((error) => { + console.error("\u274C Error fetching embedded layer source:", cacheId, error); + this.embeddedLayerCache.delete(fetchKey); + return placeholderLayer; + }); + this.embeddedLayerCache.set(fetchKey, backgroundFetch); + return placeholderLayer; + }, + jump: (api, args = [], env) => { + if (args.length === 0) { + console.warn("\u2757 jump function requires a destination argument"); + return; + } + let destination = args[0]; + if (typeof destination === "string" && destination.startsWith("$")) { + destination = destination; + } else if (typeof destination === "string") { + destination = unquoteString(destination); + } else { + destination = this.evaluate(destination, api, env); + if (typeof destination === "object" && destination !== null) { + if (destination.toString && typeof destination.toString === "function") { + destination = destination.toString(); + } else { + console.warn("\u2757 Invalid jump destination type:", typeof destination); + return; + } + } else { + destination = String(destination); + } + } + if (typeof destination === "string" && destination.startsWith("$")) { + const cacheId = destination.slice(1); + if (globalCodeCache.has(cacheId)) { + console.log(`\u{1F680} KidLisp fast-jumping to cached code: ${destination} (no network request needed)`); + } else { + console.log(`\u{1F680} KidLisp jumping to ${destination} (will check IndexedDB and network if needed)`); + } + } + const ahistorical = args.length > 1 ? args[1] : false; + const alias = args.length > 2 ? args[2] : false; + if (api.jump) { + console.log("\u{1F680} KidLisp jumping to:", destination); + api.jump(destination, ahistorical, alias); + } else { + console.warn("\u2757 Jump API function not available"); + } + } + }; + return this.globalEnvCache; + } + // Context-aware randomization for ? tokens + contextAwareRandom(functionName, argIndex, api) { + const width2 = api.screen?.width || 256; + const height2 = api.screen?.height || 256; + const contextRanges = { + box: [ + { min: 0, max: width2 }, + // x position (arg 0) + { min: 0, max: height2 }, + // y position (arg 1) + { min: 10, max: 100 }, + // width (arg 2) + { min: 10, max: 100 } + // height (arg 3) + ], + line: [ + { min: 0, max: width2 }, + // x1 (arg 0) + { min: 0, max: height2 }, + // y1 (arg 1) + { min: 0, max: width2 }, + // x2 (arg 2) + { min: 0, max: height2 } + // y2 (arg 3) + ], + circle: [ + { min: 0, max: width2 }, + // x position (arg 0) + { min: 0, max: height2 }, + // y position (arg 1) + { min: 5, max: 50 } + // radius (arg 2) + ], + tri: [ + { min: 0, max: width2 }, + // x1 position (arg 0) + { min: 0, max: height2 }, + // y1 position (arg 1) + { min: 0, max: width2 }, + // x2 position (arg 2) + { min: 0, max: height2 }, + // y2 position (arg 3) + { min: 0, max: width2 }, + // x3 position (arg 4) + { min: 0, max: height2 } + // y3 position (arg 5) + ], + write: [ + { min: 0, max: width2 }, + // x position (arg 1, since arg 0 is text) + { min: 0, max: height2 } + // y position (arg 2) + ], + ink: [ + { min: 0, max: 255 }, + // red (arg 0) + { min: 0, max: 255 }, + // green (arg 1) + { min: 0, max: 255 }, + // blue (arg 2) + { min: 0, max: 255 } + // alpha (arg 3) + ], + flood: [ + { min: 0, max: width2 }, + // x position (arg 0) + { min: 0, max: height2 } + // y position (arg 1) + ], + embed: [ + // arg 0 is the cache code (string), so no range for that + { min: 32, max: 512 }, + // width (arg 1) + { min: 32, max: 512 }, + // height (arg 2) + { min: 0, max: width2 }, + // x position (arg 3 in 5-arg version) + { min: 0, max: height2 }, + // y position (arg 4 in 5-arg version) + { min: 32, max: 512 }, + // width (arg 5 in 5-arg version) + { min: 32, max: 512 } + // height (arg 6 in 5-arg version) + ] + }; + const functionRanges = contextRanges[functionName]; + if (functionRanges && functionRanges[argIndex]) { + const range = functionRanges[argIndex]; + return Math.floor(this.seededRandom() * (range.max - range.min + 1)) + range.min; + } + return Math.floor(this.seededRandom() * 256); + } + // Fast evaluation for common expressions to avoid full recursive evaluation + fastEval(expr, api, env) { + if (typeof expr === "number") return expr; + if (typeof expr === "string") { + if (expr === "?") { + return Math.floor(this.seededRandom() * 256); + } + if (expr.startsWith("-") && expr.length > 1) { + const baseIdentifier = expr.substring(1); + const baseValue = this.fastEval(baseIdentifier, api, env); + if (typeof baseValue === "number") { + return -baseValue; + } + } + let value; + if (Object.prototype.hasOwnProperty.call(this.localEnv, expr)) { + value = this.localEnv[expr]; + } else if (env && Object.prototype.hasOwnProperty.call(env, expr)) { + value = env[expr]; + } else if (Object.prototype.hasOwnProperty.call(this.globalDef, expr)) { + value = this.globalDef[expr]; + if (expr === "mic") { + console.log("\u{1F3A4} Mic global accessed! Current value:", this.globalDef.mic.toFixed(3)); + this.requestMicrophoneConnection(api); + } + if (expr === "amp" && this.frameCount % 60 === 0) { + console.log("\u{1F50A} KL amp resolved:", value, "globalDef.amp:", this.globalDef.amp); + } + } + if (value !== void 0) { + return value; + } + const globalEnv = this.getGlobalEnv(); + value = globalEnv[expr]; + if (typeof value === "function") { + if (expr.startsWith("fade:")) { + return expr; + } + value = value(api, []); + return value; + } + if (expr.startsWith("$") && expr.length > 1) { + const cacheId = expr.slice(1); + if (/^[a-zA-Z0-9]{1,12}$/.test(cacheId)) { + console.log(`\u{1F3AF} Processing dollar code: ${expr} -> cacheId: ${cacheId}`); + const embedFunc = globalEnv.embed; + if (embedFunc) { + console.log(`\u{1F527} Calling embed function for ${expr}`); + return embedFunc(api, [cacheId]); + } else { + console.warn("\u274C embed function not found in global environment"); + return expr; + } + } + } + if (value === void 0 && NOTE_LITERAL.test(expr)) return expr; + if (value === void 0 && validIdentifierRegex.test(expr) && !this.unknownWordsLogged?.has(expr) && expr !== "fps" && expr !== "s" && expr.length > 1) { + this.unknownWordsLogged?.add(expr); + const sourcePrefix = this.embeddedSourceId ? `[$${this.embeddedSourceId}] ` : ""; + const msg = `\u274C ${sourcePrefix}Unknown KidLisp word: ${expr}`; + let loc = null; + if (this.currentSource && typeof this.currentSource === "string") { + const regex = new RegExp(`\\b${expr}\\b`); + const match = this.currentSource.match(regex); + if (match) { + const offset = this.currentSource.indexOf(match[0]); + if (offset >= 0) { + loc = kidlispOffsetToLineCol(this.currentSource, offset); + } + } + } + if (isKidlispConsoleEnabled()) { + postKidlispConsole("error", msg, { kind: "unknown-word", loc, embeddedSource: this.embeddedSourceId }); + } + console.error(msg); + } + const result = value !== void 0 ? value : expr; + return result; + } + if (Array.isArray(expr) && expr.length === 3) { + const [op, left, right] = expr; + if (op === "+" || op === "-" || op === "*" || op === "/" || op === "%") { + const leftVal = this.fastEval(left, api, env); + const rightVal = this.fastEval(right, api, env); + if (typeof leftVal === "number" && typeof rightVal === "number") { + switch (op) { + case "+": + return leftVal + rightVal; + case "-": + return leftVal - rightVal; + case "*": + return leftVal * rightVal; + case "/": + return rightVal !== 0 ? leftVal / rightVal : 0; + // Prevent division by zero + case "%": + return rightVal !== 0 ? leftVal % rightVal : 0; + } + } + } + } + if (Array.isArray(expr) && expr.length === 3 && expr[0] === "mod") { + const [, innerExpr, modulus] = expr; + if (Array.isArray(innerExpr) && innerExpr.length === 3 && innerExpr[0] === "+") { + const [, leftTerm, rightTerm] = innerExpr; + if (Array.isArray(leftTerm) && leftTerm.length === 3 && leftTerm[0] === "*" && Array.isArray(rightTerm) && rightTerm.length === 3 && rightTerm[0] === "*") { + const leftResult = this.fastEval(leftTerm[1], api, env) * this.fastEval(leftTerm[2], api, env); + const rightResult = this.fastEval(rightTerm[1], api, env) * this.fastEval(rightTerm[2], api, env); + const sum = leftResult + rightResult; + const modValue2 = this.fastEval(modulus, api, env); + if (typeof sum === "number" && typeof modValue2 === "number" && modValue2 !== 0) { + return sum % modValue2; + } + } + } + const innerValue = this.fastEval(innerExpr, api, env); + const modValue = this.fastEval(modulus, api, env); + if (typeof innerValue === "number" && typeof modValue === "number" && modValue !== 0) { + return innerValue % modValue; + } + } + if (Array.isArray(expr) && expr.length === 3) { + const [op, left, right] = expr; + if ((op === "+" || op === "-") && Array.isArray(left) && left.length === 3) { + const [innerOp, innerLeft, innerRight] = left; + if (innerOp === "/" && typeof innerLeft === "string" && (innerLeft === "width" || innerLeft === "height") && typeof innerRight === "number" && innerRight === 2) { + const dimension = this.fastEval(innerLeft, api, env); + const offset = this.fastEval(right, api, env); + if (typeof dimension === "number" && typeof offset === "number") { + const halfDimension = dimension / 2; + return op === "+" ? halfDimension + offset : halfDimension - offset; + } + } + } + } + return this.evaluate(expr, api, env); + } + // Optimized function resolution + resolveFunction(head, api, env) { + if (!this.globalFunctionCache) { + this.globalFunctionCache = /* @__PURE__ */ new Map(); + const globalEnv = this.getGlobalEnv(); + const commonFunctions = ["ink", "box", "line", "circle", "write", "repeat", "choose", "blur", "shape", "tri", "wipe"]; + for (const funcName of commonFunctions) { + if (globalEnv[funcName]) { + this.globalFunctionCache.set(funcName, { type: "global", value: globalEnv[funcName] }); + } + } + } + if (this.globalFunctionCache.has(head)) { + return this.globalFunctionCache.get(head); + } + const cacheKey = `${head}_${this.localEnvLevel}`; + if (this.functionCache.has(cacheKey)) { + return this.functionCache.get(cacheKey); + } + let result = null; + if (typeof head === "string" && head.startsWith("$") && head.length > 1) { + const cacheId = head.slice(1); + if (/^[0-9A-Za-z]{3,12}$/.test(cacheId)) { + const cacheFunction = (api2, args = []) => { + const globalEnv = this.getGlobalEnv(); + const embedFunc = globalEnv.embed; + if (embedFunc) { + const embedArgs = [cacheId, ...args]; + return embedFunc(api2, embedArgs); + } else { + console.warn("\u274C embed function not found in global environment"); + return void 0; + } + }; + result = { + type: "cache", + value: cacheFunction + }; + } + } + if (!result) { + if (head === "blur" && existing(this.getGlobalEnv()[head])) { + result = { type: "global", value: this.getGlobalEnv()[head] }; + } else if (this.isNestedInstance && api && typeof api[head] === "function" && (head === "scroll" || head === "flip" || head === "spin" || head === "zoom" || head === "suck" || head === "contrast" || head === "shear" || head === "brightness" || head === "line")) { + result = { type: "api", value: api[head] }; + } else if (existing(this.localEnv[head])) { + result = { type: "local", value: this.localEnv[head] }; + } else if (existing(env?.[head])) { + result = { type: "env", value: env[head] }; + } else if (existing(this.getGlobalEnv()[head])) { + result = { type: "global", value: this.getGlobalEnv()[head] }; + } else if (existing(this.globalDef[head])) { + result = { type: "globalDef", value: this.globalDef[head] }; + } else if (existing(api[head]) && typeof api[head] === "function") { + result = { type: "api", value: api[head] }; + } + } + if (result && result.type !== "local" && result.type !== "cache") { + this.functionCache.set(cacheKey, result); + } + return result; + } + evaluate(parsed, api = {}, env, inArgs, isTopLevel = false, expressionIndex = 0) { + if (parsed === void 0 || parsed === null || parsed === "" || Array.isArray(parsed) && parsed.length === 0) { + if (api.wipe && api.ink && api.box) { + api.wipe(240, 240, 240); + api.ink(60, 60, 60); + const size = 32; + const cols = Math.ceil((api.screen?.width || 256) / size); + const rows = Math.ceil((api.screen?.height || 256) / size); + for (let y = 0; y < rows; y++) { + for (let x = 0; x < cols; x++) { + if ((x + y) % 2 === 0) { + api.box(x * size, y * size, size, size); + } + } + } + } + return void 0; + } + if (Array.isArray(parsed) && parsed.length === 1 && Array.isArray(parsed[0]) && parsed[0][0] === "__chaos__") { + return this.evaluateChaos(parsed[0][1], api); + } + const tracing = isKidlispTraceEnabled(); + if (tracing) { + traceEnter(parsed); + } + const prevExpression = this.currentEvaluatingExpression; + if (!this.inkStateSet && kidlispInkLoggingEnabled()) { + this.currentEvaluatingExpression = Array.isArray(parsed) ? `(${parsed[0]} ...)` : String(parsed).substring(0, 30); + } + const evalStart = this.startTiming("evaluate"); + perfStart("evaluate-total"); + if (VERBOSE) console.log("\u2797 Evaluating:", parsed); + const shouldLog = false; + let perfTimer; + if (shouldLog) { + const exprName = Array.isArray(parsed) ? `${parsed[0]}${parsed.length > 1 ? "(...)" : ""}` : String(parsed).substring(0, 20); + perfTimer = performance.now(); + } + if (shouldLog) { + } + if (!this.evalDepth) this.evalDepth = 0; + this.evalDepth++; + const needsCaching = Array.isArray(parsed) && parsed.length > 0; + let cacheKey = null; + if (needsCaching && this.perf.enabled) { + const head = parsed[0]; + if (typeof head === "string" && (head === "sin" || head === "cos" || head === "mod" || head === "+" || head === "-" || head === "*" || head === "/" || head === "min" || head === "max" || head === "abs")) { + const exprString = JSON.stringify(parsed); + const hasTimeVars = exprString.includes("frame") || exprString.includes("amplitude") || exprString.includes("clock") || exprString.includes("speaker") || exprString.includes('"i"') || exprString.includes('"j"') || exprString.includes('"n"') || exprString.includes('"x"') || exprString.includes('"y"') || exprString.includes("random"); + if (!hasTimeVars) { + cacheKey = exprString + "_" + this.frameCount; + if (!this.frameCache) this.frameCache = /* @__PURE__ */ new Map(); + if (this.frameCache.has(cacheKey)) { + const cachedResult = this.frameCache.get(cacheKey); + if (tracing) traceExit(parsed, cachedResult); + this.evalDepth--; + this.endTiming("evaluate", evalStart); + perfEnd("evaluate-total"); + return cachedResult; + } + } + } + } + if (api.setKidLispContext) { + api.setKidLispContext(this, api, env); + } + let body; + perfStart("get-global-env"); + const globalEnv = this.getGlobalEnv(); + perfEnd("get-global-env"); + if (api.screen) { + globalEnv.screen = api.screen; + } + if (parsed.body) { + const newLocalEnv = {}; + body = parsed.body; + parsed.params.forEach((param, i2) => { + console.log( + "\u{1F609} Binding param:", + param, + "to value:", + inArgs?.[i2], + "at index:", + i2 + ); + if (i2 < inArgs.length) { + newLocalEnv[param] = inArgs[i2]; + } else { + console.warn( + `Parameter ${param} at index ${i2} has no corresponding argument` + ); + newLocalEnv[param] = void 0; + } + }); + this.localEnvLevel += 1; + if (!this.localEnvStore[this.localEnvLevel]) { + this.localEnvStore[this.localEnvLevel] = {}; + } + this.localEnvStore[this.localEnvLevel] = { + ...this.localEnv, + ...newLocalEnv + }; + this.localEnv = this.localEnvStore[this.localEnvLevel]; + console.log( + "\u{1F7E0} Local env level:", + this.localEnvLevel, + "Environment:", + this.localEnv + ); + if (VERBOSE) + console.log("Running:", body, "with environment:", this.localEnv); + } else { + if (Array.isArray(parsed) && parsed.length > 0 && typeof parsed[0] === "string") { + body = [parsed]; + } else { + body = Array.isArray(parsed) ? parsed : [parsed]; + } + } + if (VERBOSE) console.log("\u{1F3C3} Body:", body); + if (body.length > 0 && !parsed.body) { + const firstItem = body[0]; + let colorName = null; + if (body.length >= 3 && typeof body[0] === "number" && typeof body[1] === "number" && typeof body[2] === "number") { + const r2 = body[0]; + const g = body[1]; + const b2 = body[2]; + const hasAlpha = body.length >= 4 && typeof body[3] === "number"; + const a2 = hasAlpha ? body[3] : 255; + if (r2 >= 0 && r2 <= 255 && g >= 0 && g <= 255 && b2 >= 0 && b2 <= 255 && a2 >= 0 && a2 <= 255) { + body = body.slice(hasAlpha ? 4 : 3); + if (body.length === 0) { + return void 0; + } + } + } + if (typeof firstItem === "string") { + colorName = firstItem; + } else if (Array.isArray(firstItem) && firstItem.length === 1 && typeof firstItem[0] === "string") { + colorName = firstItem[0]; + } + if (colorName) { + const globalEnv2 = this.getGlobalEnv(); + let isValidFirstLineColor = false; + if (isValidRGBString(colorName)) { + const rgbValues = parseRGBString(colorName); + if (rgbValues) { + isValidFirstLineColor = true; + body = body.slice(1); + } + } else if (cssColors2 && cssColors2[colorName]) { + isValidFirstLineColor = true; + } else if (colorName.match(/^c\d+$/)) { + const colorIndex = parseInt(colorName.substring(1)); + if (staticColorMap[colorIndex]) { + isValidFirstLineColor = true; + } + } else if (colorName.match(/^p\d+$/)) { + const patternIndex = parseInt(colorName.substring(1)); + if (patternIndex === 0 || patternIndex === 1) { + isValidFirstLineColor = true; + } + } else if (colorName.startsWith("fade:")) { + const fadeColors2 = this.parseFadeString(colorName); + if (fadeColors2 && fadeColors2.length >= 2) { + isValidFirstLineColor = true; + } + } + if (isValidFirstLineColor) { + body = body.slice(1); + } + } + } + const evaluateTimingArg = (arg, api2, env2) => { + if (typeof arg === "number" || typeof arg === "boolean") { + return arg; + } else if (typeof arg === "string" && /^".*"$/.test(arg)) { + return arg.slice(1, -1); + } else if (Array.isArray(arg) || typeof arg === "string" && !/^".*"$/.test(arg)) { + return this.fastEval(arg, api2, env2); + } else { + return arg; + } + }; + let result; + if (this.pendingTimingTriggers && this.pendingTimingTriggers.size > 0) { + const toTrigger = []; + const toKeep = /* @__PURE__ */ new Map(); + for (const [timingKey, pending] of this.pendingTimingTriggers) { + pending.frameDelay--; + if (pending.frameDelay <= 0) { + toTrigger.push(pending); + } else { + toKeep.set(timingKey, pending); + } + } + this.pendingTimingTriggers = toKeep; + for (const pending of toTrigger) { + this.markTimingTriggered(pending.head); + } + } + if (this.perf.enabled && body.length > 0) { + if (!this.perf.bodyProcessCount) this.perf.bodyProcessCount = 0; + this.perf.bodyProcessCount++; + if (this.perf.bodyProcessCount % 500 === 0) { + console.warn(`\u{1F525} BODY PROCESSING ${this.perf.bodyProcessCount} TIMES! Body length: ${body.length}`); + } + if (this.perf.bodyProcessCount > 5e3) { + console.error(`\u{1F6A8} PATHOLOGICAL BODY PROCESSING: ${this.perf.bodyProcessCount} calls! Likely infinite recursion.`); + this.perf.bodyProcessCount = 0; + this.perf.evalCallCount = 0; + this.evalDepth = 0; + return 0; + } + } + for (let bodyIndex = 0; bodyIndex < body.length; bodyIndex++) { + const item = body[bodyIndex]; + if (item && typeof item === "object" && item.optimized) { + perfStart("optimized-execution"); + const optFuncStart = performance.now(); + result = item.func(api); + const optFuncEnd = performance.now(); + this.trackFunction(`opt:${item.name || "anonymous"}`, optFuncEnd - optFuncStart); + perfEnd("optimized-execution"); + continue; + } + if (Array.isArray(item)) { + let [head, ...args] = item; + if (args.length >= 2) { + const reglued = []; + for (let i2 = 0; i2 < args.length; i2++) { + const a2 = args[i2]; + const next = args[i2 + 1]; + if (typeof a2 === "string" && a2.startsWith("fade:") && a2.endsWith(":") && next !== void 0) { + let angleValue; + try { + if (Array.isArray(next)) { + angleValue = this.fastEval(next, api, env); + } else if (typeof next === "number") { + angleValue = next; + } else if (typeof next === "string") { + const num = parseFloat(next); + if (!isNaN(num) && /^-?\d+(?:\.\d+)?$/.test(next)) { + angleValue = num; + } else { + const expanded = this.expandFastMathMacros(next); + angleValue = Array.isArray(expanded) ? this.fastEval(expanded, api, env) : this.evaluate(next, api, env); + } + } else { + angleValue = next; + } + } catch (e2) { + console.warn("Failed to evaluate fade angle expression:", next, e2); + angleValue = 0; + } + reglued.push(a2 + String(angleValue)); + i2++; + continue; + } + reglued.push(a2); + } + args = reglued; + } + args = args.map((arg) => { + if (typeof arg === "string" && arg.startsWith("fade:")) { + const fadeParts = arg.split(":"); + if (fadeParts.length >= 3) { + const fadePrefix = fadeParts[0]; + const colors = fadeParts[1]; + const direction = fadeParts[2]; + let evaluatedDirection = direction; + try { + const numericValue = parseFloat(direction); + if (!isNaN(numericValue)) { + evaluatedDirection = direction; + } else { + let evalResult; + if (direction === "frame") { + evalResult = this.frameCount; + } else { + const expanded = this.expandFastMathMacros(direction); + if (Array.isArray(expanded)) { + evalResult = this.fastEval(expanded, api, env); + } else { + const globalEnv2 = this.getGlobalEnv(); + if (globalEnv2[direction] && typeof globalEnv2[direction] === "function") { + evalResult = globalEnv2[direction](api, []); + } else { + evalResult = this.evaluate(direction, api, env); + } + } + } + evaluatedDirection = String(evalResult); + } + } catch (error) { + console.warn("Failed to evaluate fade direction:", direction, error); + evaluatedDirection = direction; + } + return `${fadePrefix}:${colors}:${evaluatedDirection}`; + } + } + return arg; + }); + if (typeof head === "number" && Number.isInteger(head)) { + const frameDivisor = head + 1; + if (this.frameCount % frameDivisor === 0) { + this.markTimingTriggered(head.toString()); + let timingResult; + for (const arg of args) { + timingResult = evaluateTimingArg(arg, api, env); + } + result = timingResult; + } + continue; + } else if (typeof head === "string" && /^\d*\.?\d+[s]!?$/.test(head)) { + const hasInstantTrigger = head.endsWith("!"); + const timeString = hasInstantTrigger ? head.slice(0, -1) : head; + const seconds = parseFloat(timeString.slice(0, -1)); + if (seconds === 0) { + this.markTimingTriggered(head); + this.markDelayTimerActive(head); + let timingResult; + for (const arg of args) { + timingResult = evaluateTimingArg(arg, api, env); + } + result = timingResult; + } else if (seconds < 0.016) { + const minInterval = 0.016; + const clockResult = api.clock.time(); + if (!clockResult) continue; + const currentTimeMs = clockResult.getTime ? clockResult.getTime() : Date.now(); + const currentTime = currentTimeMs / 1e3; + const timingKey = head + "_" + args.length; + if (!this.lastSecondExecutions.hasOwnProperty(timingKey)) { + this.lastSecondExecutions[timingKey] = currentTime; + } else { + const lastExecution = this.lastSecondExecutions[timingKey]; + const diff = currentTime - lastExecution; + if (diff >= minInterval) { + this.lastSecondExecutions[timingKey] = currentTime; + this.markTimingTriggered(head); + this.markDelayTimerActive(head); + let timingResult; + for (const arg of args) { + timingResult = evaluateTimingArg(arg, api, env); + } + result = timingResult; + } + } + } else { + const clockResult = api.clock.time(); + if (!clockResult) continue; + const currentTimeMs = clockResult.getTime ? clockResult.getTime() : Date.now(); + const currentTime = currentTimeMs / 1e3; + const timingKey = head + "_" + args.length; + if (!this.lastSecondExecutions.hasOwnProperty(timingKey)) { + this.lastSecondExecutions[timingKey] = currentTime; + if (bodyIndex === 0) { + this.markTimingTriggered(head); + this.markDelayTimerActive(head); + const wasInEmbedPhase = this.inEmbedPhase; + this.inEmbedPhase = true; + let timingResult; + for (const arg of args) { + timingResult = this.fastEval(arg, api, env); + } + this.inEmbedPhase = wasInEmbedPhase; + result = timingResult; + continue; + } + } + { + const lastExecution = this.lastSecondExecutions[timingKey]; + const diff = currentTime - lastExecution; + const tolerance = 5e-3; + const adjustedSeconds = Math.max(seconds, tolerance); + const crossedBoundary = Math.floor(currentTime / adjustedSeconds) !== Math.floor(lastExecution / adjustedSeconds); + if (crossedBoundary) { + this.lastSecondExecutions[timingKey] = currentTime; + this.markTimingTriggered(head); + this.markDelayTimerActive(head); + const wasInEmbedPhase = this.inEmbedPhase; + this.inEmbedPhase = true; + let timingResult; + for (const arg of args) { + timingResult = this.fastEval(arg, api, env); + } + this.inEmbedPhase = wasInEmbedPhase; + result = timingResult; + } + } + } + continue; + } else if (typeof head === "string" && /^\d*\.?\d+[s]\.\.\.?$/.test(head)) { + this._syncClock(api); + const _meta = this.parseTimingTokenMeta(head); + const seconds = _meta ? _meta.intervalMs / 1e3 : parseFloat(head); + const currentTimeMs = this.getSimulationTime ? this.getSimulationTime() : this._now(); + const currentTime = currentTimeMs / 1e3; + const timingKey = head + "_" + args.length; + if (!this.lastSecondExecutions.hasOwnProperty(timingKey)) { + this.lastSecondExecutions[timingKey] = currentTime; + if (!this.sequenceCounters) { + this.sequenceCounters = /* @__PURE__ */ new Map(); + } + this.sequenceCounters.set(timingKey, 0); + if (bodyIndex === 0) { + if (!this.pendingTimingTriggers) { + this.pendingTimingTriggers = /* @__PURE__ */ new Map(); + } + this.pendingTimingTriggers.set(timingKey, { + frameDelay: 2, + // Wait 2 frames before triggering + head + }); + } + } + const lastExecution = this.lastSecondExecutions[timingKey]; + const diff = currentTime - lastExecution; + const intervalMs = seconds * 1e3; + const absIndex = intervalMs > 0 && args.length > 0 ? (Math.floor(currentTimeMs / intervalMs) % args.length + args.length) % args.length : 0; + if (this.sequenceCounters.get(timingKey) !== absIndex) { + this.markTimingTriggered(head); + this.sequenceCounters.set(timingKey, absIndex); + this.lastSecondExecutions[timingKey] = currentTime; + } + if (args.length > 0) { + const currentIndex = absIndex; + if (head === "0.1s" && args.some( + (arg) => Array.isArray(arg) && arg[0] === "zoom" || typeof arg === "string" && arg.includes("zoom") + )) { + console.log(`\u23F0 DEBUG TIMER [${head}]: executing arg ${currentIndex} of ${args.length}`, { + timingKey, + currentIndex, + selectedArg: args[currentIndex], + allArgs: args, + timeDiff: diff, + secondsRequired: seconds, + shouldAdvance: diff >= seconds + }); + } + this.activeTimingExpressions.set(timingKey, { + currentIndex, + totalArgs: args.length, + timingToken: head, + args + }); + for (let i2 = 0; i2 < args.length; i2++) { + const color3 = i2 === currentIndex ? "olive" : "255,255,255,0"; + this.signalSyntaxHighlight(args[i2], color3); + } + this.currentTimingContext = { + timingKey, + currentIndex, + totalArgs: args.length, + args, + selectedArg: args[currentIndex] + // Add the currently selected argument for easy comparison + }; + const selectedArg = args[currentIndex]; + let result2; + if (typeof selectedArg === "string") { + if (selectedArg.startsWith('"') && selectedArg.endsWith('"')) { + result2 = selectedArg.slice(1, -1); + } else if (selectedArg.startsWith("fade:")) { + const fadeParts = selectedArg.split(":"); + if (fadeParts.length >= 3) { + const fadePrefix = fadeParts[0]; + const colors = fadeParts[1]; + const direction = fadeParts[2]; + let evaluatedDirection = direction; + try { + const numericValue = parseFloat(direction); + if (!isNaN(numericValue)) { + evaluatedDirection = direction; + } else { + let evalResult; + const expanded = this.expandFastMathMacros(direction); + if (Array.isArray(expanded)) { + evalResult = this.fastEval(expanded, api, env); + } else { + const globalEnv2 = this.getGlobalEnv(); + if (globalEnv2[direction] && typeof globalEnv2[direction] === "function") { + evalResult = globalEnv2[direction](api, []); + } else { + evalResult = this.evaluate(direction, api, env); + } + } + evaluatedDirection = String(evalResult); + } + } catch (error) { + console.warn("Failed to evaluate fade direction:", direction, error); + evaluatedDirection = direction; + } + const evaluatedFadeString = `${fadePrefix}:${colors}:${evaluatedDirection}`; + if (api.ink && typeof api.ink === "function") { + api.ink(evaluatedFadeString); + result2 = evaluatedFadeString; + } else { + result2 = evaluatedFadeString; + } + } else { + if (api.ink && typeof api.ink === "function") { + api.ink(selectedArg); + result2 = selectedArg; + } else { + result2 = selectedArg; + } + } + } else { + const globalEnv2 = this.getGlobalEnv(); + if (globalEnv2[selectedArg] && typeof globalEnv2[selectedArg] === "function") { + result2 = globalEnv2[selectedArg](api, []); + } else { + result2 = this.evaluate(selectedArg, api, env); + } + } + } else if (typeof selectedArg === "number") { + result2 = selectedArg; + } else { + result2 = this.evaluate(selectedArg, api, env); + if (result2 === void 0 || result2 === null) { + result2 = selectedArg; + } + } + this.currentTimingContext = null; + if (body.length === 1) { + return result2; + } + } + continue; + } + if (!existing(head)) { + return this.evalNotFound(head); + } + if (Array.isArray(head)) { + const evaledHead = this.evaluate([head], api, env); + const newEval = [evaledHead, ...args]; + result = this.evaluate([newEval], api, env); + continue; + } + if (typeof head !== "string" && head?.iterable) { + result = this.iterate(head, api, args, env); + continue; + } + if (typeof head !== "string") { + head = String(head); + } + let splitHead = []; + let colon = null; + if (head === "..." || head === "..") { + colon = head.includes(":") ? head.split(":")[1] : null; + head = head.split(":")[0]; + } else { + splitHead = head.split("."); + head = splitHead[0]; + const colonSplit = head.split(":"); + head = colonSplit[0]; + colon = colonSplit[1]; + } + if (head === "now" || head === "def" || head === "die") + args[0] = `"${args[0]}"`; + if (typeof head === "string" && head.startsWith("#") && /^#[0-9A-Za-z]{1,8}$/.test(head)) { + args = [head, ...args]; + head = "stamp"; + } + const resolved = this.resolveFunction(head, api, env); + if (head === "zoom") { + } + if (head === "-1" || head === "1") { + console.log(`\u{1F6A8} CRITICAL: Trying to resolve number "${head}" as function!`); + console.trace("Stack trace for number resolution:"); + } + if (resolved) { + const { type, value } = resolved; + if (head === "zoom") { + } + if (head === "scroll") { + } + switch (type) { + case "local": + perfStart(`local-${head}`); + if (VERBOSE) + console.log("\u{1F62B} Local definition found!", head, value); + if (value.iterable) { + result = this.iterate(value, api, args, env); + } else { + result = value; + } + perfEnd(`local-${head}`); + break; + case "env": + perfStart(`env-${head}`); + if (value.iterable) { + result = this.iterate(value, api, args, env); + } else { + result = value; + } + perfEnd(`env-${head}`); + break; + case "global": + if (typeof value === "function" || typeof value === "object") { + let processedArgs; + if ( + // The voices: their first argument is a NOTE and must arrive + // unevaluated, because `c4` is also a color. They evaluate their + // own numeric args (see numArg above). + head === "pluck" || head === "bell" || head === "sub" || head === "flute" || head === "hat" || head === "voice" || head === "later" || head === "tap" || head === "draw" || head === "lift" || head === "if" || head === "not" || head === ">" || head === "<" || head === "=" || head === "net" || head === "source" || head === "choose" || head === "?" || head === "repeat" || head === "once" || head === "hop" || head === "delay" || head === "trans" || head === "jump" + ) { + processedArgs = args; + } else { + processedArgs = args.map((arg, index) => { + if (arg === "?") { + return this.contextAwareRandom(head, index, api); + } + if (Array.isArray(arg) || typeof arg === "string" && !/^".*"$/.test(arg)) { + if (Array.isArray(arg) && arg.length > 0 && typeof arg[0] === "string" && /^\d*\.?\d+[s]\.\.\.?$/.test(arg[0])) { + const result2 = this.evaluate([arg], api, this.localEnv); + return result2; + } else { + const result2 = this.fastEval(arg, api, this.localEnv); + return result2; + } + } else { + return arg; + } + }); + } + if (splitHead[1]) { + result = getNestedValue(value, item[0])(api, processedArgs); + } else { + if (head === "zoom") { + } + if (head === "suck") { + } + const funcStart = performance.now(); + result = value(api, processedArgs, env, colon); + const funcEnd = performance.now(); + this.trackFunction(head, funcEnd - funcStart); + if (result?.iterable) { + result = this.iterate(result, api, args, env); + continue; + } + } + } else { + result = value; + } + break; + case "globalDef": + const evaluatedArgs = args.map( + (arg) => Array.isArray(arg) || typeof arg === "string" && !/^".*"$/.test(arg) ? this.fastEval(arg, api, this.localEnv) : arg + ); + const userFuncStart = performance.now(); + result = Array.isArray(value) || value.body ? this.evaluate(value, api, this.localEnv, evaluatedArgs) : value; + const userFuncEnd = performance.now(); + this.trackFunction(`user:${head}`, userFuncEnd - userFuncStart); + break; + case "api": + const apiArgs = args.map( + (arg) => Array.isArray(arg) || typeof arg === "string" && !/^".*"$/.test(arg) ? this.fastEval(arg, api, this.localEnv) : arg + ); + if (head === "zoom") { + } + if (head === "scroll") { + } + const apiFuncStart = performance.now(); + result = value(...apiArgs); + const apiFuncEnd = performance.now(); + this.trackFunction(`api:${head}`, apiFuncEnd - apiFuncStart); + break; + case "cache": + const cacheArgs = args.map( + (arg) => Array.isArray(arg) || typeof arg === "string" && !/^".*"$/.test(arg) ? this.fastEval(arg, api, this.localEnv) : arg + ); + result = value(api, cacheArgs); + break; + } + } else { + if (typeof head === "string" && validIdentifierRegex.test(head) && head !== "fps" && !this.unknownWordsLogged?.has(head)) { + this.unknownWordsLogged?.add(head); + const sourcePrefix = this.embeddedSourceId ? `[$${this.embeddedSourceId}] ` : ""; + const msg = `\u274C ${sourcePrefix}Unknown KidLisp word: ${head}`; + let loc = null; + if (this.currentSource && typeof this.currentSource === "string") { + const regex = new RegExp(`\\b${head}\\b`); + const match = this.currentSource.match(regex); + if (match) { + const offset = this.currentSource.indexOf(match[0]); + if (offset >= 0) { + loc = kidlispOffsetToLineCol(this.currentSource, offset); + } + } + } + if (isKidlispConsoleEnabled()) { + postKidlispConsole("error", msg, { kind: "unknown-word", loc, embeddedSource: this.embeddedSourceId }); + } + console.error(msg); + } + if (Array.isArray(head)) { + if (VERBOSE) console.log("Environment:", this.localEnv); + result = this.evaluate(head, api, this.localEnv); + } else { + result = this.evalNotFound(head, api, this.localEnv); + } + } + } else { + let root, tail; + if (typeof item === "string") { + [root, tail] = item.split("."); + } + if (!Array.isArray(env) && existing(env?.[root])) { + result = getNestedValue(env, item); + } else { + result = this.fastEval(item, api, env); + if (result === item) { + if (Array.isArray(item)) { + result = this.evaluate(item, api, env); + } else if (typeof item === "string" && item.includes(":")) { + const colonSplit = item.split(":"); + const head = colonSplit[0]; + const colon = colonSplit[1]; + const globalEnv2 = this.getGlobalEnv(); + if (globalEnv2[head] && typeof globalEnv2[head] === "function") { + result = globalEnv2[head](api, [], env, colon); + } else { + result = this.evalNotFound(item, api, env); + } + } else { + result = this.evalNotFound(item, api, env); + } + } + } + } + } + if (parsed.body) { + this.localEnvLevel -= 1; + this.localEnv = this.localEnvStore[this.localEnvLevel] || {}; + console.log( + "\u{1F519} Restored env level:", + this.localEnvLevel, + "Environment:", + this.localEnv + ); + } + if (api.clearKidLispContext) { + api.clearKidLispContext(); + } + this.currentTimingContext = null; + if (cacheKey && this.frameCache && result !== void 0) { + this.frameCache.set(cacheKey, result); + } + if (tracing) traceExit(parsed, result); + this.evalDepth--; + const evalTime = performance.now() - evalStart.time; + if (shouldLog && evalTime > 1) { + } + if (shouldLog && perfTimer) { + const totalTime = performance.now() - perfTimer; + if (totalTime > 5) { + const exprName = Array.isArray(parsed) ? `${parsed[0]}${parsed.length > 1 ? "(...)" : ""}` : String(parsed).substring(0, 20); + } + } + perfEnd("evaluate-total"); + this.endTiming("evaluate", evalStart); + return result; + } + evalNotFound(expression, api, env) { + if (typeof expression !== "string") { + return expression; + } else { + if (expression === "fps") { + return "fps"; + } + } + if (typeof expression === "string" && expression.startsWith("#")) { + if (/^#[0-9A-Za-z]{1,8}$/.test(expression)) { + const globalEnv2 = this.getGlobalEnv(); + if (globalEnv2 && typeof globalEnv2.stamp === "function") { + try { + return globalEnv2.stamp(api, [expression], env); + } catch (err) { + console.warn("\u26A0\uFE0F auto-stamp failed for", expression, err); + } + } + } + } + if (/^\d*\.?\d+[s]\.\.\.?$/.test(expression)) { + return this.evaluate([expression], api, env); + } + if (validIdentifierRegex.test(expression)) { + const globalEnv2 = this.getGlobalEnv(); + if (globalEnv2[expression] && typeof globalEnv2[expression] === "function") { + return globalEnv2[expression](api, [], env); + } + if (api[expression] && typeof api[expression] === "function") { + return api[expression](); + } + } + const identifiers = expression.match(identifierRegex) || []; + const globalEnv = this.getGlobalEnv(); + identifiers.forEach((id) => { + if (id === "s" && /\d+\.?\d*s/.test(expression)) { + return; + } + let value = this.fastEval(id, api, env); + if (value === id) { + value = 0; + } + expression = expression.replace(new RegExp(`\\b${id}\\b`, "g"), value); + }); + expression = expression.replace(/(\d+\.?\d*)s/g, "$1"); + try { + const compute = new Function(`return ${expression};`); + const result = compute(); + return result; + } catch (error) { + console.warn("\u2757 Failed to evaluate expression:", expression, error.message); + return 0; + } + } + // Loop over an iterable. + iterate(iterable, api, args, outerEnv) { + iterable.data.forEach((item, index) => { + const env = { ...outerEnv }; + env.index = index; + env.item = item; + if (Array.isArray(item)) item = { iterable: true, data: item.slice() }; + env.data = item; + args.forEach((arg) => { + if (typeof arg === "number" || typeof arg === "boolean") { + return arg; + } else if (typeof arg === "string" && /^".*"$/.test(arg)) { + return arg.slice(1, -1); + } else if (Array.isArray(arg) || typeof arg === "string" && !/^".*"$/.test(arg)) { + return this.fastEval(arg, api, env); + } else { + return arg; + } + }); + }); + return iterable; + } + // Syntax highlighting methods for HUD integration + // Initialize syntax highlighting for a kidlisp source + initializeSyntaxHighlighting(source) { + this.syntaxHighlightSource = source; + this.expressionPositions = this.mapExpressionsToPositions(source); + this.executionHistory = []; + this.currentlyHighlighted.clear(); + } + // Map parsed expressions to their positions in the source code + mapExpressionsToPositions(source) { + const positions = []; + let charIndex = 0; + let i2 = 0; + while (i2 < source.length) { + if (source[i2] === "(") { + const exprStart = charIndex + i2; + let depth = 1; + let j = i2 + 1; + while (j < source.length && depth > 0) { + if (source[j] === "(") depth++; + else if (source[j] === ")") depth--; + j++; + } + if (depth === 0) { + const exprEnd = charIndex + j; + const exprText = source.substring(i2, j); + const isNested = positions.some( + (pos) => exprStart > pos.start && exprStart < pos.end + ); + if (!isNested) { + positions.push({ + start: exprStart, + end: exprEnd, + text: exprText, + isExpression: true + }); + } + i2 = j; + } else { + i2++; + } + } else { + i2++; + } + } + return positions; + } + // Mark an expression as currently executing + markExpressionExecuting(expr) { + const now = performance.now(); + this.currentExecutingExpression = expr; + this.lastExecutionTime = now; + this.executionHistory.push({ + expression: expr, + timestamp: now, + type: "execution" + }); + if (this.executionHistory.length > 50) { + this.executionHistory = this.executionHistory.slice(-25); + } + } + // Generate colored syntax highlighting string for HUD using proper tokenization + buildColoredKidlispString() { + if (!this.syntaxHighlightSource) return ""; + try { + const tokens = tokenize(this.syntaxHighlightSource); + if (tokens.length === 0) { + return `\\white\\${this.syntaxHighlightSource}`; + } + let result = ""; + let sourceIndex = 0; + let lastColor = null; + for (let i2 = 0; i2 < tokens.length; i2++) { + let token = tokens[i2]; + const fastMathMatch = token.match(/^(\w+)\s*([+\-*/%])\s*(\w+|\d+(?:\.\d+)?)$/); + if (fastMathMatch) { + const [, left, op, right] = fastMathMatch; + const tokenIndex2 = this.syntaxHighlightSource.indexOf(token, sourceIndex); + if (tokenIndex2 !== -1) { + const whitespace = this.syntaxHighlightSource.substring(sourceIndex, tokenIndex2); + result += whitespace; + const leftColor = this.getTokenColor(left, [left, op, right], 0); + const opColor = this.getTokenColor(op, [left, op, right], 1); + const rightColor = this.getTokenColor(right, [left, op, right], 2); + result += `\\${leftColor}\\${left}`; + result += `\\${opColor}\\${op}`; + result += `\\${rightColor}\\${right}`; + lastColor = rightColor; + sourceIndex = tokenIndex2 + token.length; + } + continue; + } + const color3 = this.getTokenColor(token, tokens, i2); + if (!color3) { + console.warn(`\u26A0\uFE0F getTokenColor returned undefined for token:`, token, `at index:`, i2, "surrounding tokens:", tokens[i2 - 1] || "START", "->", token, "->", tokens[i2 + 1] || "END"); + continue; + } + const tokenIndex = this.syntaxHighlightSource.indexOf(token, sourceIndex); + if (tokenIndex !== -1) { + const whitespace = this.syntaxHighlightSource.substring(sourceIndex, tokenIndex); + result += whitespace; + const NOTEISH = /^[A-Za-z0-9#.,'^+\-{}\[\]>_~|]+$/; + const isQuoted = token.length >= 2 && (token[0] === '"' || token[0] === "'") && token[token.length - 1] === token[0]; + const looksLikeNotes = /[a-gA-G]/.test(token) && NOTEISH.test(token) && !/^-?\d*\.?\d+$/.test(token); + const melodyHeadBefore = () => { + let j = i2 - 1; + while (j >= 0) { + const t2 = tokens[j]; + if (t2 === "melody" || t2 === "clock") return true; + if (/[a-gA-G]/.test(t2) && NOTEISH.test(t2) && !/^-?\d*\.?\d+$/.test(t2)) { + j--; + continue; + } + return false; + } + return false; + }; + const isMelodyArg = (isQuoted || looksLikeNotes) && melodyHeadBefore(); + if (isMelodyArg) { + const inner = isQuoted ? token.slice(1, -1) : token; + const quoteColor = color3 || "yellow"; + const state2 = this.melodyByString?.get(inner) || null; + const coloredInner = buildColoredMelodyString(inner, state2, { + now: this._now(), + timingHasStarted: !!(state2 && state2.isPlaying), + recentlyMutated: this.melodyRecentlyMutated || { noteIndex: -1, trackIndex: -1 }, + mutationFlash: { active: false }, + specialCharFlash: false, + triggeredAsteriskPositions: [], + getStampleStatus: () => null + }); + if (isQuoted) { + const q = token[0]; + result += `\\${quoteColor}\\${q}${coloredInner}\\${quoteColor}\\${q}`; + } else { + result += coloredInner; + } + lastColor = null; + sourceIndex = tokenIndex + token.length; + continue; + } + if (color3.startsWith("COMPOUND:")) { + const parts = color3.split(":"); + const prefixColor = parts[1]; + const identifierColor = parts[2]; + const prefixChar = token.charAt(0); + result += `\\${prefixColor}\\${prefixChar}`; + result += `\\${identifierColor}\\${token.substring(1)}`; + lastColor = identifierColor; + } else if (color3 === "RAINBOW" && token === "rainbow") { + const rainbowColors2 = ["red", "orange", "yellow", "lime", "blue", "purple", "magenta"]; + for (let charIndex = 0; charIndex < token.length; charIndex++) { + const charColor = rainbowColors2[charIndex % rainbowColors2.length]; + result += `\\${charColor}\\${token[charIndex]}`; + } + lastColor = null; + } else if (color3 === "ZEBRA" && token === "zebra") { + const zebraColors2 = ["black", "white"]; + for (let charIndex = 0; charIndex < token.length; charIndex++) { + const charColor = zebraColors2[charIndex % zebraColors2.length]; + result += `\\${charColor}\\${token[charIndex]}`; + } + lastColor = null; + } else if (token.startsWith("fade:") && color3 === "mediumseagreen") { + const fadeResult = this.colorFadeExpression(token); + result += fadeResult; + lastColor = null; + } else { + if (color3 !== lastColor) { + result += `\\${color3}\\`; + lastColor = color3; + } + result += token; + } + sourceIndex = tokenIndex + token.length; + } + } + if (sourceIndex < this.syntaxHighlightSource.length) { + result += this.syntaxHighlightSource.substring(sourceIndex); + } + return result; + } catch (error) { + console.warn("Error building colored kidlisp string:", error); + return `\\white\\${this.syntaxHighlightSource}`; + } + } + // Check if a token is part of a timing expression and get its state + getTimingTokenState(token, tokens, index) { + if (/^\d*\.?\d+[sf]\.\.\.?$/.test(token)) { + for (const [timingKey, data] of this.activeTimingExpressions) { + if (timingKey.startsWith(token + "_")) { + return { + timingKey, + currentIndex: data.currentIndex, + totalArgs: data.totalArgs, + isBlinking: this.isTimingBlinking(token), + isInActiveArg: true + // The timing token itself is always "active" + }; + } + } + for (const [timingKey, currentIndex] of this.sequenceCounters) { + if (timingKey.startsWith(token + "_")) { + const argCount = parseInt(timingKey.split("_")[1]) || 0; + return { + timingKey, + currentIndex, + totalArgs: argCount, + isBlinking: this.isTimingBlinking(token), + isInActiveArg: true + }; + } + } + } else if (/^\d*\.?\d+[sf]!?$/.test(token)) { + return { + timingKey: token, + currentIndex: 0, + totalArgs: 1, + isBlinking: this.isTimingBlinking(token), + isActive: this.isDelayTimerActive(token), + // Track active display period + isInActiveArg: true, + isDelayTimer: true + // Mark as delay timer for special handling + }; + } + for (let i2 = 0; i2 < index; i2++) { + const prevToken = tokens[i2]; + if (/^\d*\.?\d+[sf]\.\.\.?$/.test(prevToken)) { + for (const [timingKey, data] of this.activeTimingExpressions) { + if (timingKey.startsWith(prevToken + "_")) { + const argInfo = this.getTokenArgPosition(tokens, i2, index); + if (argInfo && argInfo.argIndex < data.totalArgs) { + const isActive = argInfo.argIndex === data.currentIndex; + return { + timingKey, + currentIndex: data.currentIndex, + totalArgs: data.totalArgs, + isBlinking: this.isTimingBlinking(prevToken), + isInActiveArg: isActive + }; + } + } + } + for (const [timingKey, currentIndex] of this.sequenceCounters) { + if (timingKey.startsWith(prevToken + "_")) { + const argCount = parseInt(timingKey.split("_")[1]) || 0; + const argInfo = this.getTokenArgPosition(tokens, i2, index); + if (argInfo && argInfo.argIndex < argCount) { + return { + timingKey, + currentIndex, + totalArgs: argCount, + isBlinking: this.isTimingBlinking(prevToken), + isInActiveArg: argInfo.argIndex === currentIndex + }; + } + } + } + } else if (/^\d*\.?\d+[sf]!?$/.test(prevToken)) { + const isBlinking = this.isTimingBlinking(prevToken); + const isActive = this.isDelayTimerActive(prevToken); + const argInfo = this.getTokenArgPosition(tokens, i2, index); + if (argInfo !== null) { + return { + timingKey: prevToken, + currentIndex: 0, + totalArgs: 1, + isBlinking, + isActive, + isInActiveArg: true, + // For delay timers, all arguments are controlled by timer state + isDelayTimer: true + }; + } + } + } + return null; + } + // Get which argument position a token is in relative to a timing token + getTokenArgPosition(tokens, timingIndex, tokenIndex) { + let argIndex = -1; + let parenDepth = 0; + let currentTokenPos = timingIndex + 1; + while (currentTokenPos < tokens.length && currentTokenPos <= tokenIndex) { + const token = tokens[currentTokenPos]; + if (token === "(") { + parenDepth++; + if (parenDepth === 1) { + argIndex++; + } + } else if (token === ")") { + parenDepth--; + if (parenDepth < 0) { + break; + } + } else if (parenDepth === 0) { + argIndex++; + } + if (currentTokenPos === tokenIndex) { + return { argIndex, tokenDepth: parenDepth }; + } + currentTokenPos++; + } + return null; + } + // Get the arguments count for a timing expression (for key generation) + getTimingArgsCount(tokens, timingIndex) { + let argCount = 0; + let parenDepth = 0; + let currentTokenPos = timingIndex + 1; + while (currentTokenPos < tokens.length) { + const token = tokens[currentTokenPos]; + if (token === "(") { + parenDepth++; + if (parenDepth === 1) { + argCount++; + } + } else if (token === ")") { + parenDepth--; + if (parenDepth < 0) { + break; + } + } else if (parenDepth === 0 && token !== timingIndex) { + argCount++; + } + currentTokenPos++; + } + return argCount; + } + // Get the arguments for a timing expression + getTimingArgs(tokens, timingIndex) { + const args = []; + let parenDepth = 0; + let currentArg = []; + let foundArgs = false; + for (let i2 = timingIndex + 1; i2 < tokens.length; i2++) { + const token = tokens[i2]; + if (token === "(") { + parenDepth++; + currentArg.push(token); + if (!foundArgs) { + foundArgs = true; + } + } else if (token === ")") { + parenDepth--; + currentArg.push(token); + if (parenDepth === 0) { + if (foundArgs && currentArg.length > 0) { + args.push(currentArg); + currentArg = []; + } + if (foundArgs) break; + } + } else if (parenDepth === 0 && foundArgs) { + break; + } else if (parenDepth > 0) { + currentArg.push(token); + } + } + return args; + } + // Check if a token is inside an active timing expression argument + getTimingExpressionState(token, tokens, index) { + for (const [timingKey, timingData] of this.activeTimingExpressions) { + const tokenPosition = this.findTokenInTimingArgs(token, index, tokens, timingData); + if (tokenPosition.found) { + const isInActiveArg = tokenPosition.argIndex === timingData.currentIndex; + if ((token === "line" || token === "box" || token === "(" || token === ")") && this.frameCount % 30 === 0) { + } + return { + isInActiveArg, + currentArgIndex: tokenPosition.argIndex, + currentIndex: timingData.currentIndex, + timingKey, + timingData + }; + } + } + return null; + } + findTokenInTimingArgs(token, tokenIndex, tokens, timingData) { + const timingExpressions = this.findTimingExpressionsInAST(this.ast, timingData.timingToken); + for (const timingExpr of timingExpressions) { + const argIndex = this.findTokenInTimingExpressionArgs(token, tokenIndex, tokens, timingExpr); + if (argIndex !== -1) { + return { found: true, argIndex }; + } + if (token === "(" || token === ")") { + const parenArgIndex = this.findParenthesesInTimingArgs(tokenIndex, tokens, timingExpr); + if (parenArgIndex !== -1) { + return { found: true, argIndex: parenArgIndex }; + } + } + } + return { found: false }; + } + // Find timing expressions in the AST that match the given timing token + findTimingExpressionsInAST(ast, timingToken) { + const results = []; + if (Array.isArray(ast)) { + if (ast.length > 1 && ast[0] === timingToken) { + results.push(ast); + } + for (const item of ast) { + results.push(...this.findTimingExpressionsInAST(item, timingToken)); + } + } + return results; + } + // Find which timing argument a parenthesis belongs to by analyzing token positions + findParenthesesInTimingArgs(parenIndex, tokens, timingExpr) { + const timingToken = timingExpr[0]; + const timingStartIndex = tokens.indexOf(timingToken); + if (timingStartIndex === -1) return -1; + let parenCount = 0; + let timingEndIndex = -1; + for (let i2 = timingStartIndex - 1; i2 < tokens.length; i2++) { + if (tokens[i2] === "(") { + parenCount++; + if (parenCount === 1 && i2 < timingStartIndex) { + continue; + } + } else if (tokens[i2] === ")") { + parenCount--; + if (parenCount === 0) { + timingEndIndex = i2; + break; + } + } + } + if (timingEndIndex === -1) return -1; + if (parenIndex <= timingStartIndex || parenIndex >= timingEndIndex) { + return -1; + } + const args = timingExpr.slice(1); + let currentArgIndex = 0; + let currentTokenPos = timingStartIndex + 1; + for (let argIndex = 0; argIndex < args.length; argIndex++) { + const arg = args[argIndex]; + const argTokenCount = this.countTokensInExpression(arg); + const argEndPos = currentTokenPos + argTokenCount - 1; + if (parenIndex >= currentTokenPos && parenIndex <= argEndPos) { + return argIndex; + } + currentTokenPos = argEndPos + 1; + } + return -1; + } + // Count how many tokens an AST expression would consume in the token stream + countTokensInExpression(expr) { + if (typeof expr === "string" || typeof expr === "number") { + return 1; + } + if (Array.isArray(expr)) { + let count = 2; + for (const item of expr) { + count += this.countTokensInExpression(item); + } + return count; + } + return 1; + } + // Find which argument of a timing expression contains a specific token + findTokenInTimingExpressionArgs(token, tokenIndex, tokens, timingExpr) { + const args = timingExpr.slice(1); + for (let argIndex = 0; argIndex < args.length; argIndex++) { + if (this.doesExpressionContainToken(args[argIndex], token)) { + if ((token === "line" || token === "box") && this.frameCount % 60 === 0) { + } + return argIndex; + } + } + return -1; + } + // Check if an AST expression contains a specific token + doesExpressionContainToken(expr, token) { + if (typeof expr === "string") { + return expr === token; + } + if (typeof expr === "number") { + return expr.toString() === token; + } + if (Array.isArray(expr)) { + return expr.some((item) => this.doesExpressionContainToken(item, token)); + } + return false; + } + // Determine the color for a specific token based on its type and context + getTokenColor(token, tokens, index) { + if (this.lastValidationErrors && this.lastValidationErrors.length > 0) { + const errors = this.lastValidationErrors.join(" "); + if (errors.includes("closing parenthes")) { + if (token === "(") { + let depth = 1; + let isClosed = false; + for (let i2 = index + 1; i2 < tokens.length; i2++) { + if (tokens[i2] === "(") { + depth++; + } else if (tokens[i2] === ")") { + depth--; + if (depth === 0) { + isClosed = true; + break; + } + } + } + if (!isClosed) { + console.log(`\u{1F534} Highlighting unclosed paren at token index ${index}`); + return "red"; + } + } + } + if (errors.includes("Too many closing")) { + if (token === ")") { + let balance = 0; + for (let i2 = 0; i2 <= index; i2++) { + if (tokens[i2] === "(") balance++; + if (tokens[i2] === ")") balance--; + if (balance < 0 && i2 === index) return "red"; + } + } + } + if (errors.includes("Unmatched") && errors.includes("quote")) { + if (token.startsWith('"') || token.startsWith("'")) { + const quoteChar = token[0]; + let quoteCount = 0; + for (let i2 = 0; i2 <= index; i2++) { + const t2 = tokens[i2]; + if (t2.startsWith(quoteChar)) { + quoteCount++; + } + } + if (quoteCount % 2 !== 0) { + let hasMatchingQuote = false; + for (let i2 = index + 1; i2 < tokens.length; i2++) { + if (tokens[i2].startsWith(quoteChar)) { + hasMatchingQuote = true; + break; + } + } + if (!hasMatchingQuote) return "red"; + } + } + } + } + const timingExprState = this.getTimingExpressionState(token, tokens, index); + if (/^\d*\.?\d+[sf]\.\.\.?$/.test(token)) { + const timingState = this.getTimingTokenState(token, tokens, index); + if (this.isEditMode) { + const blinkState = this.getTimingEditBlinkState(token); + if (blinkState.isBlinking) { + return "lime"; + } + return "yellow"; + } + if (timingState && timingState.isBlinking) { + return "red"; + } + if (this.isTimingBlinking(token)) { + return "lime"; + } + if (timingState && timingState.currentIndex !== void 0) { + return "yellow"; + } + return "yellow"; + } + if (/^\d*\.?\d+[sf]!?$/.test(token)) { + const timingState = this.getTimingTokenState(token, tokens, index); + if (this.isEditMode) { + const blinkState = this.getTimingEditBlinkState(token); + if (blinkState.isBlinking) { + return "red"; + } + return "yellow"; + } + if (timingState && timingState.isBlinking) { + return "red"; + } + if (timingState && timingState.isActive) { + return "cyan"; + } + return "yellow"; + } + if (timingExprState) { + if (token === "(" || token === ")") { + const normalColor2 = this.getNormalTokenColor(token, tokens, index); + return normalColor2 || "192,192,192"; + } + if (this.isEditMode) { + const timingToken = timingExprState.timingData.timingToken; + const now = performance.now(); + const totalArgs = timingExprState.timingData.totalArgs; + const tokenArgIndex = timingExprState.currentArgIndex; + const cyclePosition = this.getTimingCyclePosition(timingToken, totalArgs, now); + const isInBlinkPhase = this.getTimingEditBlinkState(timingToken, now).isBlinking; + if (tokenArgIndex === cyclePosition) { + if (isInBlinkPhase) { + return "lime"; + } + } else { + const normalColor2 = this.getNormalTokenColor(token, tokens, index); + if (normalColor2) { + const rgb = this.parseColorToRGB(normalColor2); + if (rgb) { + const desaturated = this.desaturateColor(rgb); + if (desaturated) { + return desaturated.join(","); + } + } + } + return "128,128,128"; + } + } else { + if (timingExprState.isInActiveArg) { + const isTimingBlinking = this.isTimingBlinking(timingExprState.timingData.timingToken); + if (isTimingBlinking) { + return "lime"; + } + } else { + return "255,255,255,0"; + } + } + } + if (this.isEditMode && !timingExprState) { + for (let i2 = index - 1; i2 >= 0; i2--) { + const prevToken = tokens[i2]; + if (/^\d*\.?\d+[sf]\.\.\.?$/.test(prevToken)) { + const argInfo = this.getTokenArgPosition(tokens, i2, index); + if (argInfo !== null && argInfo.argIndex >= 0) { + const now = performance.now(); + const totalArgs = this.getTimingArgsCount(tokens, i2); + if (totalArgs === 0) { + break; + } + const cyclePosition = this.getTimingCyclePosition(prevToken, totalArgs, now); + const isInBlinkPhase = this.getTimingEditBlinkState(prevToken, now).isBlinking; + if (token === "(" || token === ")") { + const normalColor2 = this.getNormalTokenColor(token, tokens, index); + return normalColor2 || "192,192,192"; + } + if (argInfo.argIndex === cyclePosition) { + if (isInBlinkPhase) { + return "lime"; + } + } else { + const normalColor2 = this.getNormalTokenColor(token, tokens, index); + if (normalColor2) { + const rgb = this.parseColorToRGB(normalColor2); + if (rgb) { + const desaturated = this.desaturateColor(rgb); + if (desaturated) { + return desaturated.join(","); + } + } + } + return "128,128,128"; + } + break; + } + } + if (prevToken === "(" && i2 < index - 1) { + if (i2 + 1 < tokens.length && !/^\d*\.?\d+[sf]\.\.\.?$/.test(tokens[i2 + 1])) { + break; + } + } + } + } + if (this.isEditMode && token !== "(" && token !== ")") { + for (let i2 = index - 1; i2 >= 0; i2--) { + const prevToken = tokens[i2]; + if ((prevToken === "?" || prevToken === "choose") && i2 > 0 && tokens[i2 - 1] === "(") { + const argInfo = this.getTokenArgPosition(tokens, i2, index); + if (argInfo !== null && argInfo.argIndex >= 0) { + const totalArgs = this.getTimingArgsCount(tokens, i2); + if (totalArgs > 1) { + const now = performance.now(); + const holdDuration = 1500; + const offset = i2 * 577 % holdDuration; + const cyclePosition = Math.floor((now + offset) / holdDuration) % totalArgs; + const blinkDuration = 150; + const cyclePhase = (now + offset) % holdDuration; + const isInBlinkPhase = cyclePhase < blinkDuration; + if (argInfo.argIndex === cyclePosition) { + if (isInBlinkPhase) { + return "lime"; + } + } else { + const normalColor2 = this.getNormalTokenColor(token, tokens, index); + if (normalColor2) { + const rgb = this.parseColorToRGB(normalColor2); + if (rgb) { + const desaturated = this.desaturateColor(rgb); + if (desaturated) { + return desaturated.join(","); + } + } + } + return "128,128,128"; + } + } + } + break; + } + if (prevToken === "(") { + break; + } + } + } + const delayTimerState = this.getTimingTokenState(token, tokens, index); + if (delayTimerState && delayTimerState.isDelayTimer) { + if (token === "(" || token === ")") { + const normalColor2 = this.getNormalTokenColor(token, tokens, index); + return normalColor2 || "192,192,192"; + } + if (this.isEditMode) { + const timingToken = delayTimerState.timingKey; + const now = performance.now(); + if (this.getTimingEditBlinkState(timingToken, now).isBlinking) { + return "red"; + } + const normalColor2 = this.getNormalTokenColor(token, tokens, index); + if (normalColor2) { + const rgb = this.parseColorToRGB(normalColor2); + if (rgb) { + const desaturated = this.desaturateColor(rgb); + if (desaturated) { + return desaturated.join(","); + } + } + } + return "128,128,128"; + } + if (delayTimerState.isBlinking) { + return "red"; + } + if (delayTimerState.isActive) { + } else { + return "255,255,255,0"; + } + } + const normalColor = this.getNormalTokenColor(token, tokens, index); + if (!normalColor) { + console.warn(`\u26A0\uFE0F getNormalTokenColor returned undefined for token:`, token); + return "orange"; + } + return normalColor; + } + // Parse color name to RGB array [r, g, b] + parseColorToRGB(colorName) { + if (colorName.includes(",")) { + const parts = colorName.split(",").map((v2) => parseInt(v2.trim())); + if (parts.length >= 3 && parts.every((v2) => !isNaN(v2))) { + return parts.slice(0, 3); + } + } + const colorMap = { + "white": [255, 255, 255], + "black": [0, 0, 0], + "red": [255, 0, 0], + "green": [0, 255, 0], + "blue": [0, 0, 255], + "yellow": [255, 255, 0], + "cyan": [0, 255, 255], + "magenta": [255, 0, 255], + "orange": [255, 165, 0], + "purple": [128, 0, 128], + "lime": [0, 255, 0], + "pink": [255, 192, 203], + "gray": [128, 128, 128], + "darkgray": [64, 64, 64], + "lightgray": [192, 192, 192], + "darkred": [139, 0, 0], + "darkgreen": [0, 100, 0], + "darkblue": [0, 0, 139] + }; + return colorMap[colorName.toLowerCase()] || null; + } + // Desaturate a color (convert to grayscale while preserving brightness) + desaturateColor(rgb, amount = 0.75) { + if (!rgb || rgb.length < 3) return null; + const gray = Math.floor(0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]); + const r2 = Math.floor(rgb[0] * (1 - amount) + gray * amount); + const g = Math.floor(rgb[1] * (1 - amount) + gray * amount); + const b2 = Math.floor(rgb[2] * (1 - amount) + gray * amount); + return [r2, g, b2]; + } + // Get the normal color for a token (the original getTokenColor logic) + getNormalTokenColor(token, tokens, index) { + if (token.startsWith(";")) { + return "gray"; + } + if (token.startsWith('"') && token.endsWith('"')) { + return "yellow"; + } + if (token.startsWith("$") && token.length > 1 && /^[$][0-9A-Za-z]+$/.test(token)) { + const cacheId = token.substring(1); + if (this.loadingEmbeddedLayers.has(cacheId)) { + const now = performance.now(); + const blinkInterval = 200; + const isBlinking = Math.floor(now / blinkInterval) % 2 === 0; + const mainColor = isBlinking ? "red" : "darkred"; + return `COMPOUND:${mainColor}:${mainColor}`; + } else if (this.loadedEmbeddedLayers.has(cacheId)) { + const now = performance.now(); + const magicBlinkInterval = 150; + const frame = Math.floor(now / magicBlinkInterval) % 3; + const dollarColor = frame === 0 ? "yellow" : frame === 1 ? "hotpink" : "limegreen"; + return `COMPOUND:${dollarColor}:lime`; + } else { + return "COMPOUND:limegreen:lime"; + } + } + if (token.startsWith("#") && token.length > 1 && /^[#][0-9A-Za-z]{1,8}$/.test(token)) { + return `COMPOUND:magenta:orange`; + } + if (token.startsWith("!") && token.length > 1 && /^[!][0-9A-Za-z]+$/.test(token)) { + const tapeCode = token.substring(1); + const tapeEmbed = this.tapeEmbeds?.get(tapeCode); + if (tapeEmbed?.isLoading) { + const now = performance.now(); + const blinkInterval = 200; + const isBlinking = Math.floor(now / blinkInterval) % 2 === 0; + const mainColor = isBlinking ? "red" : "darkred"; + return `COMPOUND:${mainColor}:${mainColor}`; + } else if (tapeEmbed?.frames?.length > 0) { + const now = performance.now(); + const magicBlinkInterval = 150; + const frame = Math.floor(now / magicBlinkInterval) % 3; + const bangColor = frame === 0 ? "cyan" : frame === 1 ? "magenta" : "yellow"; + return `COMPOUND:${bangColor}:cyan`; + } else if (tapeEmbed?.loadError) { + return `COMPOUND:red:darkred`; + } else { + return `COMPOUND:cyan:teal`; + } + } + if (/^-?\d+(\.\d+)?$/.test(token)) { + const prevToken = index > 0 ? tokens[index - 1] : null; + const nextToken = index < tokens.length - 1 ? tokens[index + 1] : null; + const next2Token = index < tokens.length - 2 ? tokens[index + 2] : null; + const isNumeric = (t2) => t2 && /^-?\d+(\.\d+)?$/.test(t2); + if (isNumeric(nextToken) && isNumeric(next2Token)) { + const value = Math.max(0, Math.min(255, parseFloat(token))); + return `${value},0,0`; + } else if (isNumeric(prevToken) && isNumeric(nextToken)) { + const value = Math.max(0, Math.min(255, parseFloat(token))); + return `0,${value},0`; + } else if (isNumeric(prevToken)) { + const prev2Token = index > 1 ? tokens[index - 2] : null; + if (isNumeric(prev2Token)) { + const value = Math.max(0, Math.min(255, parseFloat(token))); + const greenComponent = Math.round(value * 0.75); + return `0,${greenComponent},${value}`; + } + } + return "pink"; + } + if (/^\d*\.?\d+[sf]!?$/.test(token)) { + if (this.isTimingBlinking(token)) { + return "red"; + } + return "yellow"; + } + if (token === "(" || token === ")") { + return this.getParenthesesColor(tokens, index); + } + if (token === ",") { + return this.getParenthesesColor(tokens, index); + } + if (token === "rainbow") { + return "RAINBOW"; + } + if (token === "zebra") { + return "ZEBRA"; + } + if (token.match(/^c\d+$/)) { + const colorIndex = parseInt(token.substring(1)); + if (staticColorMap[colorIndex]) { + const colorValue = staticColorMap[colorIndex]; + if (Array.isArray(colorValue) && colorValue.length >= 3) { + const rgbColor = `${colorValue[0]},${colorValue[1]},${colorValue[2]}`; + return rgbColor; + } + } + } + if (token.match(/^p\d+$/)) { + const patternIndex = parseInt(token.substring(1)); + if (patternIndex === 0) { + return "RAINBOW"; + } else if (patternIndex === 1) { + return "ZEBRA"; + } + } + if (cssColors2 && cssColors2[token]) { + const colorValue = cssColors2[token]; + if (Array.isArray(colorValue) && colorValue.length >= 3) { + const rgbColor = `${colorValue[0]},${colorValue[1]},${colorValue[2]}`; + return rgbColor; + } + } + if (index > 0 && tokens[index - 1] === "(") { + return this.getFunctionColor(token); + } + if (token.startsWith("fade:")) { + return "mediumseagreen"; + } + if (this.isBareFunction(token, tokens, index)) { + return this.getFunctionColor(token); + } + const knownFunctions = [ + "wipe", + "ink", + "line", + "box", + "flood", + "circle", + "write", + "paste", + "stamp", + "point", + "poly", + "embed", + "print", + "debug", + "random", + "sin", + "cos", + "tan", + "floor", + "ceil", + "round", + "noise", + "choose", + "?", + "...", + "..", + "overtone", + "mic", + "amplitude", + "melody", + "speaker", + "resolution", + "lines", + "wiggle", + "shape", + "scroll", + "flip", + "spin", + "resetSpin", + "smoothspin", + "sort", + "zoom", + "blur", + "contrast", + "pan", + "unpan", + "mask", + "unmask", + "steal", + "putback", + "label", + "len", + "now", + "die", + "tap", + "draw", + "not", + "range", + "mul", + "log", + "no", + "yes", + "fade", + "jump" + ]; + if (token === "fade") { + return "mediumseagreen"; + } + if (["+", "-", "*", "/", "%", "mod", "=", ">", "<", ">=", "<=", "abs", "sqrt", "min", "max"].includes(token)) { + return "lime"; + } + if (knownFunctions.includes(token)) { + return "cyan"; + } + return "orange"; + } + // Helper method to determine if a token is a bare function call + isBareFunction(token, tokens, index) { + if (index > 0) { + const prevToken = tokens[index - 1]; + if (prevToken === "(") { + return false; + } + if (prevToken !== ")") { + return false; + } + } + if (!/^[a-zA-Z_]\w*$/.test(token)) { + return false; + } + const knownFunctions = [ + "wipe", + "ink", + "line", + "box", + "flood", + "circle", + "write", + "paste", + "stamp", + "point", + "poly", + "embed", + "print", + "debug", + "random", + "sin", + "cos", + "tan", + "floor", + "ceil", + "round", + "noise", + "choose", + "?", + "...", + "..", + "overtone", + "rainbow", + "mic", + "amplitude", + "melody", + "speaker", + "resolution", + "lines", + "wiggle", + "shape", + "scroll", + "flip", + "spin", + "resetSpin", + "smoothspin", + "sort", + "zoom", + "blur", + "contrast", + "pan", + "unpan", + "mask", + "unmask", + "steal", + "putback", + "label", + "len", + "now", + "die", + "tap", + "draw", + "not", + "range", + "mul", + "log", + "no", + "yes", + "bake", + "jump" + ]; + return knownFunctions.includes(token) || cssColors2 && cssColors2[token]; + } + // Helper method to get the appropriate color for a function + getFunctionColor(token) { + if (token.startsWith("$") && token.length > 1 && /^[$][0-9A-Za-z]+$/.test(token)) { + const cacheId = token.substring(1); + if (this.loadingEmbeddedLayers.has(cacheId)) { + const now = performance.now(); + const blinkInterval = 200; + const isBlinking = Math.floor(now / blinkInterval) % 2 === 0; + const mainColor = isBlinking ? "red" : "darkred"; + return `COMPOUND:${mainColor}:${mainColor}`; + } else if (this.loadedEmbeddedLayers.has(cacheId)) { + return "COMPOUND:lime:cyan"; + } else { + return "COMPOUND:green:teal"; + } + } + if (token.startsWith("!") && token.length > 1 && /^[!][0-9A-Za-z]+$/.test(token)) { + const tapeCode = token.substring(1); + const tapeEmbed = this.tapeEmbeds?.get(tapeCode); + if (tapeEmbed?.isLoading) { + const now = performance.now(); + const blinkInterval = 200; + const isBlinking = Math.floor(now / blinkInterval) % 2 === 0; + const mainColor = isBlinking ? "red" : "darkred"; + return `COMPOUND:${mainColor}:${mainColor}`; + } else if (tapeEmbed?.frames?.length > 0) { + return "COMPOUND:cyan:teal"; + } else if (tapeEmbed?.loadError) { + return `COMPOUND:red:darkred`; + } else { + return `COMPOUND:cyan:teal`; + } + } + if (["+", "-", "*", "/", "%", "mod", "=", ">", "<", ">=", "<=", "abs", "sqrt", "min", "max"].includes(token)) { + return "lime"; + } + if (["def", "if", "cond", "later", "once", "lambda", "let", "do"].includes(token)) { + return "purple"; + } + if (token === "repeat") { + return "magenta"; + } + return "cyan"; + } + // Get color for parentheses based on nesting depth (rainbow pattern) + getParenthesesColor(tokens, index) { + let depth = 0; + for (let i2 = 0; i2 < index; i2++) { + if (tokens[i2] === "(") { + depth++; + } else if (tokens[i2] === ")") { + depth--; + } + } + if (tokens[index] === ")") { + depth--; + } + depth = Math.max(0, depth); + const parenColors = [ + "192,192,192", + // Light gray (depth 0) + "255,215,0", + // Gold (depth 1) + "255,165,0", + // Orange (depth 2) + "255,105,180", + // Hot pink (depth 3) + "138,43,226", + // Blue violet (depth 4) + "0,191,255", + // Deep sky blue (depth 5) + "50,205,50" + // Lime green (depth 6) + ]; + const colorIndex = depth % parenColors.length; + const color3 = parenColors[colorIndex]; + if (!color3) { + console.warn(`\u26A0\uFE0F getParenthesesColor returning undefined. depth=${depth}, colorIndex=${colorIndex}, token=${tokens[index]}`); + return "192,192,192"; + } + return color3; + } + // Check if an expression matches the currently executing one + isExpressionMatch(posText, executingExpr) { + if (typeof executingExpr === "string") { + return posText.includes(executingExpr); + } else if (Array.isArray(executingExpr)) { + const exprStr = JSON.stringify(executingExpr); + return posText.includes(executingExpr[0]); + } + return false; + } + // Determine the type of expression for syntax coloring + getExpressionType(exprText) { + const trimmed = exprText.trim(); + if (trimmed.startsWith("(")) { + const match = trimmed.match(/^\(\s*([^\s)]+)/); + if (match) { + const funcName = match[1]; + if (["def", "if", "cond", "repeat", "later", "once", "lambda", "let", "do"].includes(funcName)) { + return "special"; + } + if (["ink", "wipe", "line", "box", "circle", "write", "paste", "stamp", "point", "poly", "embed"].includes( + funcName + )) { + return "function"; + } + if (["+", "-", "*", "/", "=", ">", "<", ">=", "<=", "mod", "abs", "sqrt"].includes(funcName)) { + return "function"; + } + if (["print", "debug", "random", "sin", "cos", "tan", "floor", "ceil", "round"].includes(funcName)) { + return "function"; + } + return "function"; + } + } else if (/^-?\d+(\.\d+)?$/.test(trimmed)) { + return "number"; + } else if (trimmed.startsWith('"') && trimmed.endsWith('"')) { + return "string"; + } else if (trimmed.startsWith(";")) { + return "comment"; + } else { + return "variable"; + } + return "unknown"; + } + // Update HUD with syntax highlighted kidlisp + async updateHUDWithSyntaxHighlighting(api) { + if (!api.hud || !api.hud.label || !this.syntaxHighlightSource) return; + const coloredString = this.buildColoredKidlispString(); + if (coloredString) { + let attributionText = ""; + if (api.cachedKidlispOwner) { + if (this.cachedOwnerSub === api.cachedKidlispOwner && this.cachedOwnerHandle) { + attributionText = ` \\gray\\by @${this.cachedOwnerHandle}`; + } else { + this.getHandleFromSub(api.cachedKidlispOwner); + } + } + if (!this.isLispFile) { + api.hud.supportsInlineColor = true; + api.hud.disablePieceNameColoring = true; + api.hud.frameHash = performance.now(); + api.hud.label(coloredString + attributionText, void 0, 0); + } else { + api.hud.supportsInlineColor = false; + api.hud.disablePieceNameColoring = false; + } + } + } + // Fetch handle from user sub using the /handle API endpoint (with caching) + async getHandleFromSub(userSub) { + if (this.cachedOwnerSub === userSub && this.cachedOwnerHandle) { + return this.cachedOwnerHandle; + } + try { + const response = await fetch(`/handle?for=${userSub}`); + if (response.status === 200) { + const data = await response.json(); + this.cachedOwnerHandle = data.handle; + this.cachedOwnerSub = userSub; + return data.handle; + } + } catch (error) { + console.warn("Error fetching handle:", error); + } + this.cachedOwnerHandle = null; + this.cachedOwnerSub = null; + return null; + } + // Helper method to strip color codes (copied from clock.mjs pattern) + stripColorCodes(str7) { + return str7.replace(/\\[a-zA-Z0-9]+\\/g, ""); + } + // Resize a pixel buffer while preserving overlapping content + resizePixelBufferPreserve(bufferObj, targetWidth, targetHeight, fillAlpha = 0) { + const width2 = Math.max(0, Math.floor(targetWidth || 0)); + const height2 = Math.max(0, Math.floor(targetHeight || 0)); + const pixelCount = width2 * height2 * 4; + const newPixels = new Uint8ClampedArray(Math.max(0, pixelCount)); + if (fillAlpha !== 0 && pixelCount > 0) { + for (let i2 = 3; i2 < pixelCount; i2 += 4) { + newPixels[i2] = fillAlpha; + } + } + if (bufferObj?.pixels && bufferObj.width && bufferObj.height) { + const oldPixels = bufferObj.pixels; + const copyWidth = Math.min(bufferObj.width, width2); + const copyHeight = Math.min(bufferObj.height, height2); + if (copyWidth > 0 && copyHeight > 0) { + for (let y = 0; y < copyHeight; y++) { + const oldRowStart = y * bufferObj.width * 4; + const newRowStart = y * width2 * 4; + newPixels.set( + oldPixels.subarray(oldRowStart, oldRowStart + copyWidth * 4), + newRowStart + ); + } + } + } + return { + width: width2, + height: height2, + pixels: newPixels + }; + } + ensureBakedLayerSize(bakedLayer, targetWidth, targetHeight) { + if (!bakedLayer || !bakedLayer.buffer) return; + if (bakedLayer.width === targetWidth && bakedLayer.height === targetHeight && bakedLayer.buffer.width === targetWidth && bakedLayer.buffer.height === targetHeight) { + return; + } + const resized = this.resizePixelBufferPreserve( + bakedLayer.buffer, + targetWidth, + targetHeight, + 0 + ); + bakedLayer.buffer = resized; + bakedLayer.width = resized.width; + bakedLayer.height = resized.height; + } + runWithBakedBuffer(api, callback) { + if (!this.bakedLayers || this.bakedLayers.length === 0) { + return false; + } + const bakedLayer = this.bakedLayers[0]; + if (!bakedLayer?.buffer) { + return false; + } + if (api.screen?.width && api.screen?.height) { + this.ensureBakedLayerSize(bakedLayer, api.screen.width, api.screen.height); + } + const originalScreen = api.screen; + api.page(bakedLayer.buffer); + try { + callback(bakedLayer); + } finally { + api.page(originalScreen); + } + return true; + } + beginBakedFrameRouting(api) { + if (!this.hasBakedContent || !this.bakedLayers || this.bakedLayers.length === 0) { + this.frameRoutingContext = null; + return () => { + }; + } + const bakedLayer = this.bakedLayers[0]; + if (!bakedLayer?.buffer) { + this.frameRoutingContext = null; + return () => { + }; + } + if (api.screen?.width && api.screen?.height) { + this.ensureBakedLayerSize(bakedLayer, api.screen.width, api.screen.height); + } + const originalScreen = api.screen; + this.frameRoutingContext = { + originalScreen, + bakedLayer, + currentTarget: "baked" + }; + if (VERBOSE) { + const sampleIdx = 0; + const sample = Array.from(bakedLayer.buffer.pixels.slice(sampleIdx, sampleIdx + 4)); + console.log(`\u{1F35E} beginBakedFrameRouting: Routing to baked layer, first pixel before routing:`, sample); + } + api.page(bakedLayer.buffer); + if (VERBOSE) { + const sampleIdx = 0; + const sample = Array.from(api.screen.pixels.slice(sampleIdx, sampleIdx + 4)); + console.log(`\u{1F35E} beginBakedFrameRouting: After routing, api.screen first pixel:`, sample); + } + return () => { + this.endBakedFrameRouting(api); + }; + } + switchToPostBakeRouting(api) { + if (!this.postBakeLayer) { + return false; + } + if (api.screen?.width && api.screen?.height && (this.postBakeLayer.width !== api.screen.width || this.postBakeLayer.height !== api.screen.height)) { + this.postBakeLayer = this.resizePixelBufferPreserve( + this.postBakeLayer, + api.screen.width, + api.screen.height, + 0 + ); + } + if (!this.frameRoutingContext) { + this.frameRoutingContext = { + originalScreen: api.screen, + currentTarget: "postBake" + }; + } + api.page(this.postBakeLayer); + this.frameRoutingContext.currentTarget = "postBake"; + console.log("\u{1F35E} Switched to post-bake overlay buffer - api.screen now points to overlay"); + console.log("\u{1F35E} api.screen.width:", api.screen?.width, "overlay.width:", this.postBakeLayer.width); + console.log("\u{1F35E} postBakeLayer.pixels identity:", this.postBakeLayer.pixels.slice(0, 4)); + console.log("\u{1F35E} api.screen has pixels?", !!api.screen.pixels); + if (VERBOSE) console.log("\u{1F35E} Switched to post-bake overlay buffer"); + return true; + } + endBakedFrameRouting(api) { + if (!this.frameRoutingContext) { + return; + } + if (VERBOSE) { + const sampleIdx = 0; + const sample = Array.from(api.screen.pixels.slice(sampleIdx, sampleIdx + 4)); + console.log(`\u{1F35E} endBakedFrameRouting: Before restoring, api.screen first pixel:`, sample); + } + const { originalScreen, bakedLayer } = this.frameRoutingContext; + if (VERBOSE && bakedLayer?.buffer?.pixels) { + const sampleIdx = 0; + const sample = Array.from(bakedLayer.buffer.pixels.slice(sampleIdx, sampleIdx + 4)); + console.log(`\u{1F35E} endBakedFrameRouting: Baked layer first pixel:`, sample); + } + if (originalScreen) { + api.page(originalScreen); + } + if (VERBOSE) { + const sampleIdx = 0; + const sample = Array.from(api.screen.pixels.slice(sampleIdx, sampleIdx + 4)); + console.log(`\u{1F35E} endBakedFrameRouting: After restoring, api.screen first pixel:`, sample); + } + this.frameRoutingContext = null; + } + executePreBakeDraw(api, drawFn) { + if (!this.suppressDrawingBeforeBake) { + drawFn(); + return true; + } + if (this.frameRoutingContext?.currentTarget === "baked") { + drawFn(); + return true; + } + return this.runWithBakedBuffer(api, () => { + drawFn(); + }); + } + // Render baked layers - execute pre-bake code and composite the result + renderBakedLayers(api) { + if (!this.bakedLayers || this.bakedLayers.length === 0) { + if (VERBOSE && this.hasBakedContent) { + console.log("\u{1F35E} renderBakedLayers: No baked layers to render despite hasBakedContent=true"); + } + return; + } + const screenWidth = api.screen?.width; + const screenHeight = api.screen?.height; + this.bakedLayers.forEach((bakedLayer, index) => { + if (!bakedLayer || !bakedLayer.buffer) { + if (VERBOSE) console.log(`\u{1F35E} renderBakedLayers: Layer ${index} has no buffer`); + return; + } + if (VERBOSE) { + const sampleIdx = 0; + const sample = bakedLayer.buffer.pixels?.slice(sampleIdx, sampleIdx + 4); + console.log(`\u{1F35E} renderBakedLayers: Layer ${index} first pixel:`, sample); + } + if (screenWidth && screenHeight) { + this.ensureBakedLayerSize(bakedLayer, screenWidth, screenHeight); + } + if (bakedLayer.buffer.width !== bakedLayer.width || bakedLayer.buffer.height !== bakedLayer.height) { + console.warn(`\u{1F35E} Buffer size mismatch on layer ${index}: buffer=${bakedLayer.buffer.width}x${bakedLayer.buffer.height} metadata=${bakedLayer.width}x${bakedLayer.height}`); + } + this.compositeBakedLayer(api, bakedLayer.buffer); + }); + } + // Manual pixel compositing for baked layers + compositeBakedLayer(api, bakedLayer) { + if (!api.screen?.pixels || !bakedLayer.pixels) { + return; + } + const currentPixels = api.screen.pixels; + const bakedPixels = bakedLayer.pixels; + const currentWidth = api.screen.width; + const currentHeight = api.screen.height; + const bakedWidth = bakedLayer.width; + const bakedHeight = bakedLayer.height; + const width2 = Math.min(currentWidth, bakedWidth); + const height2 = Math.min(currentHeight, bakedHeight); + for (let y = 0; y < height2; y++) { + for (let x = 0; x < width2; x++) { + const currentIndex = (y * currentWidth + x) * 4; + const bakedIndex = (y * bakedWidth + x) * 4; + const currentR = currentPixels[currentIndex]; + const currentG = currentPixels[currentIndex + 1]; + const currentB = currentPixels[currentIndex + 2]; + const currentA = currentPixels[currentIndex + 3] / 255; + const bakedR = bakedPixels[bakedIndex]; + const bakedG = bakedPixels[bakedIndex + 1]; + const bakedB = bakedPixels[bakedIndex + 2]; + const bakedA = bakedPixels[bakedIndex + 3] / 255; + const outA = currentA + bakedA * (1 - currentA); + if (outA > 0) { + const outR = (currentR * currentA + bakedR * bakedA * (1 - currentA)) / outA; + const outG = (currentG * currentA + bakedG * bakedA * (1 - currentA)) / outA; + const outB = (currentB * currentA + bakedB * bakedA * (1 - currentA)) / outA; + currentPixels[currentIndex] = Math.round(outR); + currentPixels[currentIndex + 1] = Math.round(outG); + currentPixels[currentIndex + 2] = Math.round(outB); + currentPixels[currentIndex + 3] = Math.round(outA * 255); + } + } + } + } + // Composite the post-bake overlay on top of the baked background + compositePostBakeLayer(api, overlayLayer) { + if (!api.screen?.pixels || !overlayLayer.pixels) { + console.log("\u{1F35E} compositePostBakeLayer: Missing buffers!"); + return; + } + let nonTransparentCount = 0; + for (let i2 = 3; i2 < overlayLayer.pixels.length; i2 += 4) { + if (overlayLayer.pixels[i2] > 0) nonTransparentCount++; + } + console.log(`\u{1F35E} compositePostBakeLayer: Overlay has ${nonTransparentCount} non-transparent pixels`); + const currentPixels = api.screen.pixels; + const overlayPixels = overlayLayer.pixels; + const currentWidth = api.screen.width; + const currentHeight = api.screen.height; + const overlayWidth = overlayLayer.width; + const overlayHeight = overlayLayer.height; + const width2 = Math.min(currentWidth, overlayWidth); + const height2 = Math.min(currentHeight, overlayHeight); + for (let y = 0; y < height2; y++) { + for (let x = 0; x < width2; x++) { + const currentIndex = (y * currentWidth + x) * 4; + const overlayIndex = (y * overlayWidth + x) * 4; + const overlayR = overlayPixels[overlayIndex]; + const overlayG = overlayPixels[overlayIndex + 1]; + const overlayB = overlayPixels[overlayIndex + 2]; + const overlayA = overlayPixels[overlayIndex + 3] / 255; + if (overlayA === 0) continue; + const currentR = currentPixels[currentIndex]; + const currentG = currentPixels[currentIndex + 1]; + const currentB = currentPixels[currentIndex + 2]; + const currentA = currentPixels[currentIndex + 3] / 255; + const outA = overlayA + currentA * (1 - overlayA); + if (outA > 0) { + const outR = (overlayR * overlayA + currentR * currentA * (1 - overlayA)) / outA; + const outG = (overlayG * overlayA + currentG * currentA * (1 - overlayA)) / outA; + const outB = (overlayB * overlayA + currentB * currentA * (1 - overlayA)) / outA; + currentPixels[currentIndex] = Math.round(outR); + currentPixels[currentIndex + 1] = Math.round(outG); + currentPixels[currentIndex + 2] = Math.round(outB); + currentPixels[currentIndex + 3] = Math.round(outA * 255); + } + } + } + } + // Helper method to create embedded layer from source code + createEmbeddedLayerFromSource(source, cacheId, layerKey, width2, height2, x, y, alpha, api) { + const existingLayer = this.embeddedLayerCache.get(layerKey); + if (existingLayer) { + if (existingLayer.source !== source) { + if (existingLayer.buffer && existingLayer.buffer.pixels) { + existingLayer.buffer.pixels.fill(0); + } + existingLayer.firstLineColorApplied = false; + } + const embeddedKidLisp2 = existingLayer.kidlispInstance; + embeddedKidLisp2.onceExecuted.clear(); + const layerCacheKey2 = `${source}_timing`; + let existingTimingState2 = this.embeddedLayerCache?.get?.(layerCacheKey2); + if (existingTimingState2) { + embeddedKidLisp2.frameCount = existingTimingState2.frameCount || 0; + embeddedKidLisp2.frameCounter = existingTimingState2.frameCounter || 0; + embeddedKidLisp2.lastSecondExecutions = existingTimingState2.lastSecondExecutions || {}; + embeddedKidLisp2.sequenceCounters = new Map(existingTimingState2.sequenceCounters || []); + embeddedKidLisp2.timingStates = new Map(existingTimingState2.timingStates || []); + if (existingTimingState2.randomState) { + embeddedKidLisp2.randomState = existingTimingState2.randomState; + } + } else { + embeddedKidLisp2.frameCount = 0; + embeddedKidLisp2.frameCounter = 0; + embeddedKidLisp2.lastSecondExecutions = {}; + embeddedKidLisp2.sequenceCounters = /* @__PURE__ */ new Map(); + embeddedKidLisp2.timingStates = /* @__PURE__ */ new Map(); + if (!embeddedKidLisp2.randomSeed) { + embeddedKidLisp2.randomSeed = Date.now() + Math.random() + (source.hashCode?.() || 0); + embeddedKidLisp2.randomState = embeddedKidLisp2.randomSeed; + } + } + embeddedKidLisp2.localEnv = { ...this.localEnv }; + embeddedKidLisp2.isNestedInstance = true; + existingLayer.alpha = alpha; + existingLayer.localFrameCount = 0; + return existingLayer; + } + const embeddedKidLisp = new _KidLisp(); + embeddedKidLisp.embeddedSourceId = cacheId; + embeddedKidLisp.randomSeed = Date.now() + Math.random() + (source.hashCode?.() || 0); + embeddedKidLisp.randomState = embeddedKidLisp.randomSeed; + const layerCacheKey = `${source}_timing`; + let existingTimingState = this.embeddedLayerCache?.get?.(layerCacheKey); + if (existingTimingState) { + embeddedKidLisp.frameCount = existingTimingState.frameCount || 0; + embeddedKidLisp.frameCounter = existingTimingState.frameCounter || 0; + embeddedKidLisp.lastSecondExecutions = existingTimingState.lastSecondExecutions || {}; + embeddedKidLisp.sequenceCounters = new Map(existingTimingState.sequenceCounters || []); + embeddedKidLisp.timingStates = new Map(existingTimingState.timingStates || []); + if (existingTimingState.randomState) { + embeddedKidLisp.randomState = existingTimingState.randomState; + } + } else { + embeddedKidLisp.frameCount = 0; + embeddedKidLisp.frameCounter = 0; + embeddedKidLisp.lastSecondExecutions = {}; + embeddedKidLisp.sequenceCounters = /* @__PURE__ */ new Map(); + embeddedKidLisp.timingStates = /* @__PURE__ */ new Map(); + } + embeddedKidLisp.localEnv = { ...this.localEnv }; + embeddedKidLisp.isNestedInstance = true; + embeddedKidLisp.embeddedSourceCache = this.embeddedSourceCache; + embeddedKidLisp.embeddedLayerCache = this.embeddedLayerCache; + let processedSource = source; + processedSource = processedSource.replace(/^scroll\s+([\d.]+)$/gm, "(scroll $1)"); + processedSource = processedSource.replace(/^scroll\s+(.+)$/gm, "(scroll $1)"); + const parsedCode = embeddedKidLisp.parse(processedSource); + const precompiledCode = embeddedKidLisp.precompileAST(parsedCode); + embeddedKidLisp.ast = JSON.parse(JSON.stringify(precompiledCode)); + embeddedKidLisp.detectFirstLineColor(); + let embeddedBuffer; + if (!this.embeddedLayers) { + console.log("\u{1F6A8} embeddedLayers was null, reinitializing to empty array"); + this.embeddedLayers = []; + } + const persistentLayer = this.embeddedLayers.find((layer) => layer.cacheId === layerKey); + if (persistentLayer && persistentLayer.buffer) { + if (persistentLayer.source === source) { + embeddedBuffer = persistentLayer.buffer; + } else { + if (persistentLayer.buffer && persistentLayer.buffer.pixels) { + for (let i2 = 0; i2 < persistentLayer.buffer.pixels.length; i2 += 4) { + persistentLayer.buffer.pixels[i2] = 0; + persistentLayer.buffer.pixels[i2 + 1] = 0; + persistentLayer.buffer.pixels[i2 + 2] = 0; + persistentLayer.buffer.pixels[i2 + 3] = 0; + } + console.log(`\u{1F3A8} EMBEDDED BUFFER CLEAR: Reinitialized buffer with transparent black [0,0,0,0]`); + } + embeddedBuffer = persistentLayer.buffer; + persistentLayer.source = source; + persistentLayer.parsedCode = precompiledCode; + persistentLayer.kidlispInstance = embeddedKidLisp; + persistentLayer.firstLineColorApplied = false; + } + } else { + let foundCompatibleBuffer = false; + if (existingLayer && existingLayer.buffer) { + const currentSize = existingLayer.buffer.width * existingLayer.buffer.height; + const newSize = width2 * height2; + if (newSize <= currentSize && existingLayer.buffer.width >= width2 && existingLayer.buffer.height >= height2) { + embeddedBuffer = existingLayer.buffer; + foundCompatibleBuffer = true; + console.log(`\u{1F504} Reusing existing buffer during reframe: ${width2}x${height2} fits in ${existingLayer.buffer.width}x${existingLayer.buffer.height}`); + if (embeddedBuffer.pixels) { + const totalPixels = width2 * height2; + for (let i2 = 0; i2 < totalPixels; i2++) { + const pixelIndex = i2 * 4; + embeddedBuffer.pixels[pixelIndex] = 0; + embeddedBuffer.pixels[pixelIndex + 1] = 0; + embeddedBuffer.pixels[pixelIndex + 2] = 0; + embeddedBuffer.pixels[pixelIndex + 3] = 255; + } + console.log(`\u{1F3A8} EMBEDDED BUFFER REFRAME: Initialized used area with opaque black [0,0,0,255]`); + } + } + } + if (!foundCompatibleBuffer) { + const bufferSizeKey = `${width2}x${height2}`; + const pooledBuffers = this.bufferPool.get(bufferSizeKey); + if (pooledBuffers && pooledBuffers.length > 0) { + embeddedBuffer = pooledBuffers.pop(); + if (embeddedBuffer.pixels) { + for (let i2 = 0; i2 < embeddedBuffer.pixels.length; i2 += 4) { + embeddedBuffer.pixels[i2] = 0; + embeddedBuffer.pixels[i2 + 1] = 0; + embeddedBuffer.pixels[i2 + 2] = 0; + embeddedBuffer.pixels[i2 + 3] = 0; + } + console.log(`\u{1F3A8} EMBEDDED BUFFER INIT: Initialized buffer with transparent black [0,0,0,0]`); + } + } else { + embeddedBuffer = this.createOrReuseBuffer(width2, height2); + } + } + } + if (!embeddedBuffer) { + console.error("\u274C Failed to create embedded buffer for:", layerKey); + return void 0; + } + if (embeddedKidLisp.firstLineColor && embeddedBuffer.pixels) { + const flc = embeddedKidLisp.firstLineColor; + let bgRgb = null; + if (typeof flc === "string" && flc.startsWith("fade:")) { + const fadeColors2 = embeddedKidLisp.parseFadeString(flc); + if (fadeColors2 && fadeColors2.length > 0) bgRgb = fadeColors2[0]; + } else { + const resolved = embeddedKidLisp.resolveColorToRGBA(flc, {}); + if (resolved && resolved[3] > 0) bgRgb = resolved; + } + if (bgRgb) { + const px = embeddedBuffer.pixels; + const r2 = bgRgb[0], g = bgRgb[1], b2 = bgRgb[2]; + for (let i2 = 0, len5 = px.length; i2 < len5; i2 += 4) { + px[i2] = r2; + px[i2 + 1] = g; + px[i2 + 2] = b2; + px[i2 + 3] = 255; + } + } + } + const embeddedLayer = { + id: `embedded_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, + // Unique ID for each layer + cacheId: layerKey, + originalCacheId: cacheId, + width: width2, + height: height2, + x, + y, + alpha, + // Store alpha value for blending + buffer: embeddedBuffer, + kidlispInstance: embeddedKidLisp, + parsedCode: precompiledCode, + source, + sourceCode: source, + // Store for timing pattern extraction + timingPattern: this.extractTimingPattern(source), + // Pre-extract timing pattern + localFrameCount: 0, + // Start with fresh frame count for proper timing + // Store timing context information if this layer was created within a timing expression + timingContext: this.currentTimingContext ? { + timingKey: this.currentTimingContext.timingKey, + argumentIndex: this.currentTimingContext.currentIndex, + cacheId + // Store the specific cache ID this layer corresponds to + } : null + }; + if (!this.embeddedLayers) { + console.log("\u{1F6A8} embeddedLayers was null during push, reinitializing to empty array"); + this.embeddedLayers = []; + } + const existingIndex = this.embeddedLayers.findIndex((l2) => l2.cacheId === layerKey); + if (existingIndex !== -1) { + console.log(`\u26A0\uFE0F Replacing existing embedded layer at index ${existingIndex}: ${layerKey}`); + const oldLayer = this.embeddedLayers[existingIndex]; + if (oldLayer.buffer) { + this.returnBufferToPool(oldLayer.buffer, oldLayer.width, oldLayer.height); + } + this.embeddedLayers[existingIndex] = embeddedLayer; + } else { + this.embeddedLayers.push(embeddedLayer); + if (this.embeddedLayers.length === 1 && !this.autoDensityOverride) { + this.enableAutoDensity(); + } + } + this.embeddedLayerCache.set(layerKey, embeddedLayer); + return embeddedLayer; + } + // Clear embedded layer cache (called on reload/initialization) + clearEmbeddedLayerCache() { + if (this.embeddedLayers) { + this.embeddedLayers.forEach((layer) => { + if (layer && layer.buffer) { + this.returnBufferToPool(layer.buffer, layer.width, layer.height); + } + }); + } + this.embeddedLayers = []; + this.embeddedLayerCache.clear(); + this.embeddedSourceCache.clear(); + this.embeddedApiCache.clear(); + if (this.alphaBufferCache) { + this.alphaBufferCache.clear(); + } + this.cleanBufferPools(); + } + // 🍞 Clear baked layers (similar to embedded layer clearing) + clearBakedLayers() { + if (this.layer0 && this.layer0.pixels) { + try { + this.layer0.pixels.fill(0); + } catch (e2) { + console.warn("Failed to clear layer0 pixels:", e2); + } + } + if (this.burnedBuffer && this.burnedBuffer.pixels) { + try { + this.burnedBuffer.pixels.fill(0); + } catch (e2) { + console.warn("Failed to clear burnedBuffer pixels:", e2); + } + } + if (this.bakes && this.bakes.length > 0) { + for (const bakeLayer of this.bakes) { + if (bakeLayer && bakeLayer.pixels) { + try { + bakeLayer.pixels.fill(0); + } catch (e2) { + console.warn("Failed to clear bake layer pixels:", e2); + } + } + } + } + if (this.bakedLayers && this.bakedLayers.length > 0) { + for (const bakedLayer of this.bakedLayers) { + if (bakedLayer?.buffer && bakedLayer.buffer.pixels) { + try { + bakedLayer.buffer.pixels.fill(0); + } catch (e2) { + console.warn("Failed to clear bakedLayer buffer pixels:", e2); + } + } + } + } + this.layer0 = null; + this.burnedBuffer = null; + this.displayBuffer = null; + this._burnScrollAccX = 0; + this._burnScrollAccY = 0; + if (this.bakes) { + this.bakes.length = 0; + } else { + this.bakes = []; + } + if (this.bakedLayers) { + this.bakedLayers.length = 0; + } else { + this.bakedLayers = []; + } + this.currentBakeIndex = -1; + this.bakeCallCount = 0; + this.hasBakedContent = false; + this.suppressDrawingBeforeBake = false; + this.postBakeLayer = null; + this.cachedComposite = null; + this.compositeInvalidated = true; + this.needsInitialWipe = true; + if (this.bufferPool) { + this.bufferPool.clear(); + } + if (this.onceExecuted) { + this.onceExecuted.delete("bake_call"); + } + } + // 🔄 RESPONSIVE CACHE: Check if screen dimensions changed and clear responsive entries + checkAndClearResponsiveCacheOnReframe(api) { + if (!api || !api.screen) return false; + const currentWidth = api.screen.width; + const currentHeight = api.screen.height; + const widthChanged = this.lastScreenWidth === null || Math.abs(this.lastScreenWidth - currentWidth) > 2; + const heightChanged = this.lastScreenHeight === null || Math.abs(this.lastScreenHeight - currentHeight) > 2; + if (widthChanged || heightChanged) { + console.log(`\u{1F4D0} Screen dimensions changed significantly: ${this.lastScreenWidth}x${this.lastScreenHeight} \u2192 ${currentWidth}x${currentHeight}`); + if (this.embeddedLayerCache) { + const entriesToDelete = []; + for (const [key, layer] of this.embeddedLayerCache.entries()) { + if (key.includes("_screen")) { + entriesToDelete.push(key); + if (layer && layer.buffer) { + this.returnBufferToPool(layer.buffer, layer.width, layer.height); + } + } + } + entriesToDelete.forEach((key) => { + this.embeddedLayerCache.delete(key); + console.log(`\u{1F5D1}\uFE0F Cleared responsive cache entry: ${key}`); + }); + if (entriesToDelete.length > 0) { + console.log(`\u2728 Cleared ${entriesToDelete.length} responsive cache entries for screen resize`); + } + } + this.lastScreenWidth = currentWidth; + this.lastScreenHeight = currentHeight; + return true; + } + return false; + } + // 🖼️ REFRAME HANDLER: Called when screen dimensions change (called from disk systems) + onReframe(newWidth, newHeight) { + console.log(`\u{1F5BC}\uFE0F KidLisp received reframe event: ${newWidth}x${newHeight}`); + if (this.embeddedLayerCache) { + const entriesToDelete = []; + for (const [key, layer] of this.embeddedLayerCache.entries()) { + if (key.includes("_screen")) { + entriesToDelete.push(key); + if (layer && layer.buffer) { + this.returnBufferToPool(layer.buffer, layer.width, layer.height); + } + } + } + entriesToDelete.forEach((key) => { + this.embeddedLayerCache.delete(key); + console.log(`\u{1F5D1}\uFE0F Cleared responsive cache entry on reframe: ${key}`); + }); + if (entriesToDelete.length > 0) { + console.log(`\u2728 Cleared ${entriesToDelete.length} responsive cache entries for reframe`); + } + } + let bgColor = this.getBackgroundFillColor(); + if (bgColor) { + console.log(`\u{1F3A8} Reframe: Wiping layer0 with first-line color:`, bgColor); + if (this.layer0 && this.layer0.pixels) { + const color3 = this.resolveColorToRGBA(bgColor, globalThis.$paintApiUnwrapped || globalThis.$paintApi); + if (color3) { + const pixels2 = this.layer0.pixels; + for (let i2 = 0; i2 < pixels2.length; i2 += 4) { + pixels2[i2] = color3[0]; + pixels2[i2 + 1] = color3[1]; + pixels2[i2 + 2] = color3[2]; + pixels2[i2 + 3] = color3[3] !== void 0 ? color3[3] : 255; + } + console.log(`\u{1F3A8} Reframe: Filled layer0 buffer directly with`, bgColor); + } + } + } + this.lastScreenWidth = newWidth; + this.lastScreenHeight = newHeight; + } + // 🛡️ SAFETY: Clean buffer pools of any detached buffers + cleanBufferPools() { + if (!this.bufferPool) return; + for (const [sizeKey, buffers] of this.bufferPool.entries()) { + const validBuffers = buffers.filter((buffer) => { + return buffer && buffer.pixels && buffer.pixels.buffer && !buffer.pixels.buffer.detached; + }); + if (validBuffers.length !== buffers.length) { + console.log(`\u{1F9F9} Cleaned ${buffers.length - validBuffers.length} detached buffers from ${sizeKey} pool`); + } + if (validBuffers.length > 0) { + this.bufferPool.set(sizeKey, validBuffers); + } else { + this.bufferPool.delete(sizeKey); + } + } + } + // 🔄 BUFFER POOLING: Return a buffer to the pool for reuse + returnBufferToPool(buffer, width2, height2) { + if (!buffer || !buffer.pixels) return; + if (buffer.pixels.buffer && buffer.pixels.buffer.detached) { + console.warn("\u{1F6A8} Refusing to pool detached buffer"); + return; + } + const bufferSizeKey = `${width2}x${height2}`; + if (!this.bufferPool) { + this.bufferPool = /* @__PURE__ */ new Map(); + } + let pooledBuffers = this.bufferPool.get(bufferSizeKey); + if (!pooledBuffers) { + pooledBuffers = []; + this.bufferPool.set(bufferSizeKey, pooledBuffers); + } + const maxPoolSize = width2 * height2 > 1e5 ? 2 : 8; + if (pooledBuffers.length < maxPoolSize) { + try { + buffer.pixels.fill(0); + pooledBuffers.push(buffer); + } catch (error) { + console.warn("\u{1F6A8} Failed to clear buffer for pooling:", error); + } + } + } + // 🚀 OPTIMIZED BUFFER CREATION: Use pooling and faster allocation + createOrReuseBuffer(width2, height2) { + const bufferSizeKey = `${width2}x${height2}`; + const pooledBuffers = this.bufferPool?.get(bufferSizeKey); + if (pooledBuffers && pooledBuffers.length > 0) { + const buffer = pooledBuffers.pop(); + if (buffer.pixels && buffer.pixels.buffer && !buffer.pixels.buffer.detached) { + buffer.width = width2; + buffer.height = height2; + buffer.pixels.fill(0); + return buffer; + } + console.warn("\u{1F6A8} Discarded detached buffer from pool"); + } + return { + width: width2, + height: height2, + pixels: new Uint8ClampedArray(width2 * height2 * 4) + }; + } + // 🔥 Scroll all persistent layers (layer0 + bakes) after burn. + // Uses its own accumulator to avoid interfering with graph.mjs's shared one. + _scrollPersistentLayers(api, dx, dy) { + if (!this._burnScrollAccX) this._burnScrollAccX = 0; + if (!this._burnScrollAccY) this._burnScrollAccY = 0; + this._burnScrollAccX += dx; + this._burnScrollAccY += dy; + const intDx = Math.trunc(this._burnScrollAccX); + const intDy = Math.trunc(this._burnScrollAccY); + this._burnScrollAccX -= intDx; + this._burnScrollAccY -= intDy; + if (intDx === 0 && intDy === 0) return; + const layers = []; + if (this.layer0?.pixels) layers.push(this.layer0); + if (this.bakes) { + for (const b2 of this.bakes) { + if (b2?.pixels) layers.push(b2); + } + } + for (const buf of layers) { + api.page(buf); + api.resetScrollState?.(); + api.scroll(intDx, intDy); + } + api.page(this.burnedBuffer); + } + // 🔥 Spin/smoothspin all persistent layers after burn. + _spinPersistentLayers(api, args, smooth = false) { + const layers = []; + if (this.layer0?.pixels) layers.push(this.layer0); + if (this.bakes) { + for (const b2 of this.bakes) { + if (b2?.pixels) layers.push(b2); + } + } + for (const buf of layers) { + api.page(buf); + if (smooth) { + api.smoothSpin(...args); + } else { + api.spin(...args); + } + } + api.page(this.burnedBuffer); + } + // Helper function to paste a buffer with alpha blending + // 🚀 ULTRA-OPTIMIZED: Pre-cache alpha buffers and use fast paths + pasteWithAlpha(api, sourceBuffer, x, y, alpha, respectSourceAlpha = true) { + if (!sourceBuffer || !sourceBuffer.pixels || !api.screen || !api.screen.pixels) { + return; + } + if (sourceBuffer.pixels.buffer && sourceBuffer.pixels.buffer.detached) { + console.warn("\u{1F6A8} Attempted to paste from detached buffer, skipping"); + return; + } + const destWidth = api.screen.width; + const destHeight = api.screen.height; + const noHorizontalOverlap = x >= destWidth || x + sourceBuffer.width <= 0; + const noVerticalOverlap = y >= destHeight || y + sourceBuffer.height <= 0; + if (noHorizontalOverlap || noVerticalOverlap) { + return; + } + if (alpha === 255 && !respectSourceAlpha) { + if (api.paste) { + api.paste(sourceBuffer, x, y); + } else { + this.fastDirectPaste(api, sourceBuffer, x, y); + } + return; + } + if (alpha === 255 && respectSourceAlpha) { + let hasTransparency = false; + const pixels2 = sourceBuffer.pixels; + for (let i2 = 3; i2 < pixels2.length; i2 += 4) { + if (pixels2[i2] < 255) { + hasTransparency = true; + break; + } + } + if (!hasTransparency) { + if (api.paste) { + api.paste(sourceBuffer, x, y); + } else { + this.fastDirectPaste(api, sourceBuffer, x, y); + } + return; + } + } + const alphaBufferKey = `${sourceBuffer.width}x${sourceBuffer.height}_${alpha}`; + if (!this.alphaBufferCache) { + this.alphaBufferCache = /* @__PURE__ */ new Map(); + } + let cachedAlphaBuffer = this.alphaBufferCache.get(alphaBufferKey); + if (!cachedAlphaBuffer || this.needsAlphaBufferUpdate(sourceBuffer, cachedAlphaBuffer)) { + if (cachedAlphaBuffer && cachedAlphaBuffer.pixels.length === sourceBuffer.pixels.length) { + this.updateAlphaBuffer(sourceBuffer, cachedAlphaBuffer, alpha); + } else { + cachedAlphaBuffer = { + width: sourceBuffer.width, + height: sourceBuffer.height, + pixels: new Uint8ClampedArray(sourceBuffer.pixels.length), + sourceHash: this.quickPixelHash(sourceBuffer.pixels), + alpha + }; + this.updateAlphaBuffer(sourceBuffer, cachedAlphaBuffer, alpha); + this.alphaBufferCache.set(alphaBufferKey, cachedAlphaBuffer); + } + } + this.fallbackPasteWithAlpha(api, sourceBuffer, x, y, alpha); + } + // 🚀 Check if alpha buffer needs updating (avoids expensive pixel operations) + needsAlphaBufferUpdate(sourceBuffer, cachedBuffer) { + if (!cachedBuffer || !cachedBuffer.sourceHash) return true; + if (!cachedBuffer.pixels || !cachedBuffer.pixels.buffer || cachedBuffer.pixels.buffer.detached) { + return true; + } + const currentHash2 = this.quickPixelHash(sourceBuffer.pixels); + return currentHash2 !== cachedBuffer.sourceHash; + } + // 🚀 Update alpha buffer with optimized SIMD-style operations where possible + updateAlphaBuffer(sourceBuffer, targetBuffer, alpha) { + const alphaFactor = alpha / 255; + const src = sourceBuffer.pixels; + const dst = targetBuffer.pixels; + const len5 = src.length; + let i2 = 0; + for (; i2 < len5 - 15; i2 += 16) { + dst[i2] = src[i2]; + dst[i2 + 1] = src[i2 + 1]; + dst[i2 + 2] = src[i2 + 2]; + dst[i2 + 3] = src[i2 + 3] * alphaFactor; + dst[i2 + 4] = src[i2 + 4]; + dst[i2 + 5] = src[i2 + 5]; + dst[i2 + 6] = src[i2 + 6]; + dst[i2 + 7] = src[i2 + 7] * alphaFactor; + dst[i2 + 8] = src[i2 + 8]; + dst[i2 + 9] = src[i2 + 9]; + dst[i2 + 10] = src[i2 + 10]; + dst[i2 + 11] = src[i2 + 11] * alphaFactor; + dst[i2 + 12] = src[i2 + 12]; + dst[i2 + 13] = src[i2 + 13]; + dst[i2 + 14] = src[i2 + 14]; + dst[i2 + 15] = src[i2 + 15] * alphaFactor; + } + for (; i2 < len5; i2 += 4) { + dst[i2] = src[i2]; + dst[i2 + 1] = src[i2 + 1]; + dst[i2 + 2] = src[i2 + 2]; + dst[i2 + 3] = src[i2 + 3] * alphaFactor; + } + targetBuffer.sourceHash = this.quickPixelHash(src); + targetBuffer.alpha = alpha; + } + // 🚀 Optimized direct paste without API overhead + fastDirectPaste(api, sourceBuffer, x, y) { + const src = sourceBuffer.pixels; + const dst = api.screen.pixels; + const srcW = sourceBuffer.width; + const srcH = sourceBuffer.height; + const dstW = api.screen.width; + const dstH = api.screen.height; + const startX = Math.max(0, x); + const startY = Math.max(0, y); + const endX = Math.min(dstW, x + srcW); + const endY = Math.min(dstH, y + srcH); + if (startX >= endX || startY >= endY) return; + for (let dy = startY; dy < endY; dy++) { + const srcY = dy - y; + const srcRowStart = srcY * srcW * 4; + const dstRowStart = dy * dstW * 4; + for (let dx = startX; dx < endX; dx++) { + const srcX = dx - x; + const srcIdx = srcRowStart + srcX * 4; + const dstIdx = dstRowStart + dx * 4; + dst[dstIdx] = src[srcIdx]; + dst[dstIdx + 1] = src[srcIdx + 1]; + dst[dstIdx + 2] = src[srcIdx + 2]; + dst[dstIdx + 3] = src[srcIdx + 3]; + } + } + } + // Fallback manual alpha blending for when graph.paste is not available + fallbackPasteWithAlpha(api, sourceBuffer, x, y, alpha) { + const srcPixels = sourceBuffer.pixels; + const dstPixels = api.screen.pixels; + const srcWidth = sourceBuffer.width; + const srcHeight = sourceBuffer.height; + const dstWidth = api.screen.width; + const dstHeight = api.screen.height; + if (srcPixels === dstPixels || srcPixels?.buffer === dstPixels?.buffer) { + console.warn(`\u26A0\uFE0F SKIPPING PASTE: Source and destination buffers are the same! This would cause self-overwrite.`); + return; + } + const alphaFactor = alpha / 255; + const startX = Math.max(0, x); + const startY = Math.max(0, y); + const endX = Math.min(dstWidth, x + srcWidth); + const endY = Math.min(dstHeight, y + srcHeight); + let pixelsProcessed = 0; + for (let dy = startY; dy < endY; dy++) { + const srcY = dy - y; + if (srcY < 0 || srcY >= srcHeight) continue; + for (let dx = startX; dx < endX; dx++) { + pixelsProcessed++; + const srcX = dx - x; + if (srcX < 0 || srcX >= srcWidth) continue; + const srcIndex = (srcY * srcWidth + srcX) * 4; + const dstIndex = (dy * dstWidth + dx) * 4; + let srcA = srcPixels[srcIndex + 3]; + if (srcA === 0) { + const hasColor = srcPixels[srcIndex] !== 0 || srcPixels[srcIndex + 1] !== 0 || srcPixels[srcIndex + 2] !== 0; + if (!hasColor) { + continue; + } + srcA = 255; + } + if (alphaFactor === 1 && srcA === 255) { + dstPixels[dstIndex] = srcPixels[srcIndex]; + dstPixels[dstIndex + 1] = srcPixels[srcIndex + 1]; + dstPixels[dstIndex + 2] = srcPixels[srcIndex + 2]; + dstPixels[dstIndex + 3] = 255; + } else { + const effectiveAlpha = srcA * alphaFactor + 1 | 0; + if (dstPixels[dstIndex + 3] === 0) { + dstPixels[dstIndex] = srcPixels[srcIndex]; + dstPixels[dstIndex + 1] = srcPixels[srcIndex + 1]; + dstPixels[dstIndex + 2] = srcPixels[srcIndex + 2]; + dstPixels[dstIndex + 3] = effectiveAlpha; + } else { + const invAlpha = 256 - effectiveAlpha; + dstPixels[dstIndex] = effectiveAlpha * srcPixels[srcIndex] + invAlpha * dstPixels[dstIndex] >> 8; + dstPixels[dstIndex + 1] = effectiveAlpha * srcPixels[srcIndex + 1] + invAlpha * dstPixels[dstIndex + 1] >> 8; + dstPixels[dstIndex + 2] = effectiveAlpha * srcPixels[srcIndex + 2] + invAlpha * dstPixels[dstIndex + 2] >> 8; + dstPixels[dstIndex + 3] = Math.min(255, dstPixels[dstIndex + 3] + effectiveAlpha); + } + } + } + } + } + // Fast pixel hash for change detection (samples key pixels to avoid full buffer comparison) + quickPixelHash(pixels2) { + if (!pixels2 || pixels2.length === 0) return 0; + let hash = 0; + const len5 = pixels2.length; + for (let i2 = 0; i2 < len5; i2 += 64) { + hash = (hash << 5) - hash + pixels2[i2] | 0; + } + return hash; + } + // Render and update embedded layers each frame + renderEmbeddedLayers(api) { + if (!this.embeddedLayers || this.embeddedLayers.length === 0) { + return; + } + const currentScreenSize = `${api.screen?.width || 0}x${api.screen?.height || 0}`; + if (this.lastScreenSize && this.lastScreenSize !== currentScreenSize) { + const timeSinceLastResize = performance.now() - (this.lastResizeTime || 0); + if (timeSinceLastResize < 100) { + if (this.embeddedLayers) { + this.embeddedLayers.forEach((embeddedLayer) => { + if (embeddedLayer && embeddedLayer.buffer && api.paste) { + this.pasteWithAlpha(api, embeddedLayer.buffer, embeddedLayer.x, embeddedLayer.y, embeddedLayer.alpha); + } + }); + } + return; + } + } + this.lastScreenSize = currentScreenSize; + this.lastResizeTime = performance.now(); + const layerCount = this.embeddedLayers.length; + if (layerCount > 3 && performance.now() - (this.lastComplexRender || 0) < 16) { + return; + } + if (layerCount > 3) { + this.lastComplexRender = performance.now(); + } + if (api.frame && api.frame % 300 === 0) { + this.cleanBufferPools(); + if (this.embeddedLayers && this.embeddedLayerCache) { + const initialCount = this.embeddedLayers.length; + this.embeddedLayers = this.embeddedLayers.filter((layer) => { + if (!layer.cacheId) return true; + const inCache = this.embeddedLayerCache.has(layer.cacheId); + if (!inCache && layer.buffer) { + this.returnBufferToPool(layer.buffer, layer.width, layer.height); + } + return inCache; + }); + if (this.embeddedLayers.length < initialCount) { + console.log(`\u{1F9F9} Cleaned up ${initialCount - this.embeddedLayers.length} orphaned embedded layers`); + } + } + } + const frameValue = api.frame || this.frameCount || 0; + if (this.embeddedLayers) { + this.embeddedLayers.forEach((embeddedLayer, index) => { + if (embeddedLayer && embeddedLayer.kidlispInstance && embeddedLayer.buffer) { + if (embeddedLayer.timingContext) { + const timingCtx = embeddedLayer.timingContext; + const currentIndex = this.sequenceCounters.get(timingCtx.timingKey); + if (currentIndex !== void 0 && currentIndex !== timingCtx.argumentIndex) { + return; + } + } + const shouldEvaluate = true; + try { + this.renderSingleLayer(api, embeddedLayer, frameValue, shouldEvaluate); + } catch (error) { + console.error("Error rendering embedded layer:", error); + } + } + }); + } + } + // 🚀 OPTIMIZED: Determine if layer needs evaluation (dirty checking) + shouldLayerEvaluate(embeddedLayer, frameValue) { + if (!embeddedLayer.hasBeenEvaluated) { + return true; + } + if (embeddedLayer.lastFrameEvaluated === frameValue) { + return false; + } + const source = embeddedLayer.kidlispInstance.source || embeddedLayer.sourceCode || embeddedLayer.source || ""; + const hasTimingExpression = /\d+\.?\d*[s]\.\.\.?|\d+\.?\d*[s]!/.test(source); + const hasDynamicContent = hasTimingExpression || source.includes("frame") || source.includes("scroll") || source.includes("flip") || source.includes("clock") || source.includes("pen") || source.includes("mouse") || source.includes("key") || source.includes("touch") || source.includes("tap") || source.includes("random") || source.includes("spin") || source.includes("wiggle") || source.includes("fade") || source.includes("sort") || source.includes("noise"); + if (hasDynamicContent) { + return true; + } + if (source) { + return false; + } + return frameValue % 10 === 0; + } + // 🚀 OPTIMIZED: Render single layer with minimal overhead + renderSingleLayer(api, embeddedLayer, frameValue, shouldEvaluate) { + const currentScreenSize = `${api.screen?.width || 0}x${api.screen?.height || 0}`; + const timeSinceLastRender = performance.now() - (embeddedLayer.lastRenderTime || 0); + if (this.lastScreenSize && this.lastScreenSize !== currentScreenSize && timeSinceLastRender < 50) { + if (embeddedLayer.buffer && api.paste) { + this.pasteWithAlpha(api, embeddedLayer.buffer, embeddedLayer.x, embeddedLayer.y, embeddedLayer.alpha); + } + return; + } + embeddedLayer.lastRenderTime = performance.now(); + api.page(embeddedLayer.buffer); + if (!embeddedLayer.localFrameCount) { + embeddedLayer.localFrameCount = 0; + } + embeddedLayer.localFrameCount += 1; + embeddedLayer.kidlispInstance.frameCount = embeddedLayer.localFrameCount; + embeddedLayer.kidlispInstance.frameCounter = embeddedLayer.localFrameCount; + embeddedLayer.kidlispInstance.isEmbeddedLayer = true; + if (!embeddedLayer.kidlispInstance.timingStates) { + embeddedLayer.kidlispInstance.timingStates = /* @__PURE__ */ new Map(); + } + if (shouldEvaluate) { + const embeddedApi = this.getOptimizedLayerApi(embeddedLayer, api); + api.page(embeddedLayer.buffer); + api.screen.pixels = embeddedLayer.buffer.pixels; + embeddedApi.frame = embeddedLayer.localFrameCount; + embeddedApi.screen.pixels = embeddedLayer.buffer.pixels; + embeddedApi.width = embeddedLayer.width; + embeddedApi.height = embeddedLayer.height; + if (!embeddedLayer.firstLineColorApplied && embeddedLayer.kidlispInstance.firstLineColor) { + try { + api.wipe(embeddedLayer.kidlispInstance.firstLineColor); + } catch (err) { + console.warn( + "\u26A0\uFE0F embedded first-line wipe failed:", + err?.message + ); + } + embeddedLayer.firstLineColorApplied = true; + } + const localEnv = embeddedLayer.kidlispInstance.localEnv; + localEnv.frame = embeddedLayer.localFrameCount; + localEnv.scroll = frameValue % (embeddedLayer.width + embeddedLayer.height); + const scrollNodesInAST = Array.isArray(embeddedLayer.parsedCode) ? embeddedLayer.parsedCode.filter((node) => { + if (node && typeof node === "object" && node.type === "list" && node.value && node.value[0] && node.value[0].value === "scroll") { + return true; + } + if (Array.isArray(node)) { + if (node.length > 1 && typeof node[0] === "string" && /^\d*\.?\d+[s]\.\.\.?$/.test(node[0])) { + return node.slice(1).some((elem) => { + if (Array.isArray(elem) && elem.length > 0 && elem[0] === "scroll") { + return true; + } + return false; + }); + } + if (node.length > 0 && node[0] === "scroll") { + return true; + } + } + return false; + }).length : 0; + embeddedLayer.kidlispInstance.embeddedLayerWipedOnce = false; + embeddedLayer.kidlispInstance.evaluate( + embeddedLayer.parsedCode, + embeddedApi, + localEnv + ); + const layerCacheKey = `${embeddedLayer.source}_timing`; + if (this.embeddedLayerCache) { + this.embeddedLayerCache.set(layerCacheKey, { + frameCount: embeddedLayer.kidlispInstance.frameCount, + frameCounter: embeddedLayer.kidlispInstance.frameCounter, + lastSecondExecutions: embeddedLayer.kidlispInstance.lastSecondExecutions ? Array.from(embeddedLayer.kidlispInstance.lastSecondExecutions) : [], + sequenceCounters: Array.from(embeddedLayer.kidlispInstance.sequenceCounters || []), + timingStates: Array.from(embeddedLayer.kidlispInstance.timingStates || []), + randomState: embeddedLayer.kidlispInstance.randomState + }); + } + embeddedLayer.hasBeenEvaluated = true; + embeddedLayer.lastFrameEvaluated = frameValue; + } + api.page(this.layer0); + api.screen.pixels = this.layer0.pixels; + } + // 🚀 CACHE OPTIMIZED API: Minimal API object creation + getOptimizedLayerApi(embeddedLayer, api) { + const cacheKey = `${embeddedLayer.width}x${embeddedLayer.height}`; + const globalEnv = this.getGlobalEnv(); + const embeddedApi = { + // Include KidLisp functions from global environment + ...globalEnv, + // Include system context for functions like 'painting' + system: api.system, + // Direct passthrough of most functions to main API + line: (...args) => api.line(...args), + ink: (...args) => api.ink(...args), + wipe: (...args) => { + const argsStr = args.length > 0 ? JSON.stringify(args) : ""; + const hasDynamicColor = argsStr.includes("rainbow") || argsStr.includes("zebra"); + if (args.length > 0 && embeddedLayer.hasBeenEvaluated && !hasDynamicColor) { + if (!embeddedLayer._wipeCache) embeddedLayer._wipeCache = {}; + const cache = embeddedLayer._wipeCache; + if (cache.key === argsStr && cache.snapshot && cache.width === embeddedLayer.width && cache.height === embeddedLayer.height) { + embeddedLayer.buffer.pixels.set(cache.snapshot); + return; + } + api.wipe(...args); + const px = embeddedLayer.buffer.pixels; + if (px && px.length > 0) { + cache.snapshot = new Uint8ClampedArray(px); + cache.key = argsStr; + cache.width = embeddedLayer.width; + cache.height = embeddedLayer.height; + } + return; + } + api.wipe(...args); + }, + circle: (...args) => api.circle(...args), + tri: (...args) => api.tri(...args), + box: (...args) => api.box(...args), + point: (...args) => api.point(...args), + poly: (...args) => api.poly(...args), + paste: (...args) => api.paste(...args), + stamp: (...args) => api.stamp(...args), + write: (...args) => api.write(...args), + flood: (...args) => api.flood(...args), + // IMPORTANT: For scroll, call the main API function directly + // No complex wrapper system - just execute scroll immediately + scroll: (...args) => { + if (typeof api.scroll === "function") { + return api.scroll(...args); + } + }, + // IMPORTANT: Add missing transform functions that embedded pieces need + spin: (...args) => { + if (typeof api.spin === "function") { + return api.spin(...args); + } + }, + resetSpin: (...args) => { + if (typeof api.resetSpin === "function") { + return api.resetSpin(...args); + } + }, + smoothspin: (...args) => { + if (typeof api.smoothspin === "function") { + return api.smoothspin(...args); + } + }, + zoom: (...args) => { + if (typeof api.zoom === "function") { + return api.zoom(...args); + } + }, + flip: (...args) => { + if (typeof api.flip === "function") { + return api.flip(...args); + } + }, + blur: (...args) => { + if (typeof api.blur === "function") { + return api.blur(...args); + } + }, + contrast: (...args) => { + if (typeof api.contrast === "function") { + return api.contrast(...args); + } + }, + // Screen properties + screen: { + width: embeddedLayer.width, + height: embeddedLayer.height, + pixels: null + // Updated per render + }, + width: embeddedLayer.width, + height: embeddedLayer.height, + frame: 0, + // Updated per render + // 🚨 CRITICAL: Include clock API for timing expressions in embedded layers + clock: api.clock, + // 🚨 FIX: Override globalEnv.fps from the spread above. + // globalEnv.fps calls api.fps(targetFps) — if api.fps is globalEnv.fps (from the + // spread), it recurses with one arg causing fps(number, undefined) → args crash. + // Use the BIOS api.fps directly so the call resolves correctly. + fps: typeof api.fps === "function" ? api.fps : void 0 + }; + return embeddedApi; + } + // Check if an embedded layer should execute this frame based on its timing patterns + shouldLayerExecuteThisFrame(api, embeddedLayer) { + if (!embeddedLayer.sourceCode) { + return true; + } + const timingExpressions = this.extractTimingExpressions(embeddedLayer.sourceCode); + if (timingExpressions.length === 0) { + return true; + } + for (const timingExpr of timingExpressions) { + if (this.evaluateTimingExpression(api, timingExpr)) { + return true; + } + } + return false; + } + // Extract timing expressions like "3s...", "0.25s..." from source code + extractTimingExpressions(sourceCode) { + const expressions = []; + const timingRegex = /\(\s*(\d+(?:\.\d+)?[s]\.\.\.)/g; + let match; + while ((match = timingRegex.exec(sourceCode)) !== null) { + expressions.push(match[1]); + } + return expressions; + } + // 🚀 EMBEDDED ENVIRONMENT: Simplified functions for embedded layers (no deferred execution) + getSimpleEmbeddedEnv(api) { + return { + // Time function for clock expressions (provides both clock.time and time) + time: () => { + if (api.clock && api.clock.time) { + return api.clock.time(); + } + return /* @__PURE__ */ new Date(); + } + }; + } + // Evaluate a timing expression using the parent's timing state + evaluateTimingExpression(api, timingExpr) { + const match = timingExpr.match(/^(\d+(?:\.\d+)?)s\.\.\.$/); + if (!match) { + return true; + } + const interval = parseFloat(match[1]); + const timingKey = timingExpr + "_1"; + const clockResult = api.clock?.time(); + if (!clockResult) { + return true; + } + const currentTimeMs = clockResult.getTime ? clockResult.getTime() : Date.now(); + const currentTime = currentTimeMs / 1e3; + if (!this.lastSecondExecutions.hasOwnProperty(timingKey)) { + this.lastSecondExecutions[timingKey] = currentTime; + return true; + } + const lastExecution = this.lastSecondExecutions[timingKey]; + const diff = currentTime - lastExecution; + if (diff >= interval) { + this.lastSecondExecutions[timingKey] = currentTime; + return true; + } + return false; + } + // Check if a timing pattern should be active (without executing the layer) + checkTimingActive(api, timingPattern) { + return true; + } + // Extract timing pattern from embedded layer source code + extractTimingPattern(sourceCode) { + if (!sourceCode) return null; + const timingMatch = sourceCode.match(/(\d+(?:\.\d+)?[s]\.\.\.)/); + return timingMatch ? timingMatch[1] : null; + } + // 🚀 PROGRAMMATIC EMBEDDED LAYER CREATION + // Create an embedded layer programmatically (for JavaScript API calls) + // This uses the same pipeline as $code embedded layers for consistency + createProgrammaticEmbeddedLayer(source, x, y, width2, height2, options = {}) { + const cacheId = `prog_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; + console.log(`\u{1F527} Creating programmatic embedded layer: ${cacheId}`, { + bounds: `${x},${y} ${width2}x${height2}`, + sourceLength: source.length, + options + }); + if (!this.embeddedLayers) { + this.embeddedLayers = []; + } + const kidlispInstance = new _KidLisp(); + kidlispInstance.isEmbeddedContext = true; + kidlispInstance.isNestedInstance = options.isNestedInstance !== false; + kidlispInstance.embeddedContext = { x, y, width: width2, height: height2 }; + let parsedCode; + try { + parsedCode = kidlispInstance.parse(source); + } catch (error) { + console.error(`\u274C Failed to parse programmatic layer ${cacheId}:`, error); + return null; + } + const buffer = { + width: width2, + height: height2, + pixels: new Uint8ClampedArray(width2 * height2 * 4) + }; + const embeddedLayer = { + id: `prog_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, + // Unique ID for each layer + cacheId, + x, + y, + width: width2, + height: height2, + buffer, + source, + parsedCode, + kidlispInstance, + localFrameCount: 0, + hasBeenEvaluated: false, + lastFrameEvaluated: -1, + alpha: options.alpha || 255, + timingPattern: this.extractTimingPattern(source), + isProgrammatic: true + // Mark as programmatically created + }; + if (!this.embeddedLayers) { + console.log("\u{1F6A8} embeddedLayers was null during programmatic push, reinitializing to empty array"); + this.embeddedLayers = []; + } + this.embeddedLayers.push(embeddedLayer); + console.log(`\u2705 Created programmatic embedded layer ${cacheId}, total layers: ${this.embeddedLayers.length}`); + return cacheId; + } + // Remove a programmatic embedded layer + removeProgrammaticEmbeddedLayer(cacheId) { + if (!this.embeddedLayers) return false; + const initialLength = this.embeddedLayers.length; + this.embeddedLayers = this.embeddedLayers.filter( + (layer) => !(layer.isProgrammatic && layer.cacheId === cacheId) + ); + const removed = this.embeddedLayers.length < initialLength; + if (removed) { + console.log(`\u{1F5D1}\uFE0F Removed programmatic embedded layer ${cacheId}`); + } + return removed; + } + // Update a single embedded layer (for nested embedding) + // Returns true if the layer should be rendered/visible this frame + updateEmbeddedLayer(api, embeddedLayer) { + if (!embeddedLayer || !embeddedLayer.kidlispInstance || !embeddedLayer.buffer) { + console.log("\u274C Cannot update embedded layer - missing components:", { + hasLayer: !!embeddedLayer, + hasInstance: !!embeddedLayer?.kidlispInstance, + hasBuffer: !!embeddedLayer?.buffer + }); + return false; + } + if (!api || typeof api.page !== "function" || !api.screen) { + console.error(`\u274C Invalid API object for embedded layer ${embeddedLayer.cacheId}:`, { + hasApi: !!api, + hasPageMethod: typeof api?.page === "function", + hasScreen: !!api?.screen + }); + embeddedLayer.failed = true; + embeddedLayer.failureCount = (embeddedLayer.failureCount || 0) + 1; + if (embeddedLayer.failureCount >= 3) { + console.warn(`\u26A0\uFE0F Disabling failed embedded layer ${embeddedLayer.cacheId} after ${embeddedLayer.failureCount} failures`); + embeddedLayer.disabled = true; + } + return false; + } + if (!embeddedLayer.parsedCode || embeddedLayer.parsedCode.length === 0) { + console.warn(`\u26A0\uFE0F Empty parsed code for embedded layer ${embeddedLayer.cacheId}`); + return false; + } + if (embeddedLayer.disabled) { + return false; + } + let didRender = false; + const originalPage = api?.screen ? { + width: api.screen.width, + height: api.screen.height, + pixels: api.screen.pixels + } : null; + try { + api.page(embeddedLayer.buffer); + if (!embeddedLayer.localFrameCount) { + embeddedLayer.localFrameCount = 0; + } + embeddedLayer.localFrameCount += 1; + embeddedLayer.kidlispInstance.frameCount = embeddedLayer.localFrameCount; + embeddedLayer.kidlispInstance.frameCounter = embeddedLayer.localFrameCount; + embeddedLayer.kidlispInstance.isEmbeddedLayer = true; + if (!embeddedLayer.kidlispInstance.timingStates) { + embeddedLayer.kidlispInstance.timingStates = /* @__PURE__ */ new Map(); + } + const nestedApiCacheKey = `nested_${embeddedLayer.cacheId}_${embeddedLayer.width}x${embeddedLayer.height}`; + let embeddedApi = this.embeddedApiCache.get(nestedApiCacheKey); + if (!embeddedApi) { + const globalEnv = this.getGlobalEnv(); + embeddedApi = { + ...globalEnv, + ...api, + system: api.system, + // Ensure system context is available in embedded layers + screen: { + ...api.screen, + width: embeddedLayer.width, + height: embeddedLayer.height, + pixels: embeddedLayer.buffer.pixels + }, + // 🔧 CRITICAL: Include page function for nested embeds + page: api.page, + // Execute drawing commands directly to the embedded buffer and track rendering + line: (...args) => { + didRender = true; + return api.line(...args); + }, + ink: (...args) => { + didRender = true; + return api.ink(...args); + }, + wipe: (...args) => { + didRender = true; + const argsStr = args.length > 0 ? JSON.stringify(args) : ""; + const hasDynamicColor = argsStr.includes("rainbow") || argsStr.includes("zebra"); + if (args.length > 0 && embeddedLayer.hasBeenEvaluated && !hasDynamicColor) { + if (!embeddedLayer._wipeCache) embeddedLayer._wipeCache = {}; + const cache = embeddedLayer._wipeCache; + if (cache.key === argsStr && cache.snapshot && cache.width === embeddedLayer.width && cache.height === embeddedLayer.height) { + embeddedLayer.buffer.pixels.set(cache.snapshot); + return; + } + api.wipe(...args); + const px = embeddedLayer.buffer.pixels; + if (px && px.length > 0) { + cache.snapshot = new Uint8ClampedArray(px); + cache.key = argsStr; + cache.width = embeddedLayer.width; + cache.height = embeddedLayer.height; + } + return; + } + api.wipe(...args); + }, + circle: (...args) => { + didRender = true; + return api.circle(...args); + }, + tri: (...args) => { + didRender = true; + return api.tri(...args); + }, + box: (...args) => { + didRender = true; + return api.box(...args); + }, + point: (...args) => { + didRender = true; + return api.point(...args); + }, + poly: (...args) => { + didRender = true; + return api.poly(...args); + }, + paste: (...args) => { + didRender = true; + return api.paste(...args); + }, + stamp: (...args) => { + didRender = true; + return api.stamp(...args); + }, + write: (...args) => { + didRender = true; + return api.write(...args); + }, + flood: (...args) => { + didRender = true; + return api.flood(...args); + }, + fade: (...args) => { + didRender = true; + return api.fade(...args); + } + }; + this.embeddedApiCache.set(nestedApiCacheKey, embeddedApi); + } + const frameValue = api.frame || this.frameCount || 0; + const smoothFrameValue = embeddedLayer.localFrameCount; + embeddedApi.frame = smoothFrameValue; + embeddedApi.width = embeddedLayer.width; + embeddedApi.height = embeddedLayer.height; + embeddedApi.screen.width = embeddedLayer.width; + embeddedApi.screen.height = embeddedLayer.height; + embeddedApi.screen.pixels = embeddedLayer.buffer.pixels; + if (!embeddedLayer.firstLineColorApplied && embeddedLayer.kidlispInstance.firstLineColor) { + try { + api.wipe(embeddedLayer.kidlispInstance.firstLineColor); + } catch (err) { + console.warn( + "\u26A0\uFE0F embedded first-line wipe failed:", + err?.message + ); + } + embeddedLayer.firstLineColorApplied = true; + } + const localEnv = embeddedLayer.kidlispInstance.localEnv; + localEnv.width = embeddedLayer.width; + localEnv.height = embeddedLayer.height; + localEnv.frame = smoothFrameValue; + localEnv["width/2"] = embeddedLayer.width / 2; + localEnv["height/2"] = embeddedLayer.height / 2; + const modScrollValue = frameValue % (embeddedLayer.width + embeddedLayer.height); + const embeddedEnv = localEnv; + embeddedEnv.scroll = modScrollValue; + embeddedLayer.kidlispInstance.embeddedLayerWipedOnce = false; + embeddedLayer.kidlispInstance.evaluate( + embeddedLayer.parsedCode, + embeddedApi, + embeddedEnv + ); + embeddedLayer.hasBeenEvaluated = true; + embeddedLayer.lastFrameEvaluated = frameValue; + } catch (error) { + console.error(`\u274C Error updating nested embedded layer ${embeddedLayer.cacheId}:`, error); + embeddedLayer.failed = true; + embeddedLayer.failureCount = (embeddedLayer.failureCount || 0) + 1; + embeddedLayer.lastError = error.message; + if (embeddedLayer.failureCount >= 3) { + console.warn(`\u26A0\uFE0F Disabling failed embedded layer ${embeddedLayer.cacheId} after ${embeddedLayer.failureCount} failures`); + embeddedLayer.disabled = true; + } + } finally { + if (originalPage && typeof api?.page === "function") { + try { + api.page(originalPage); + if (api.screen) { + api.screen.pixels = originalPage.pixels; + } + } catch (restoreError) { + console.error("\u274C Error switching back to original page:", restoreError); + } + } + } + return didRender; + } + // Manual pixel compositing for embedded layers (optimized) + compositeEmbeddedLayer(api, embeddedLayer) { + if (!api || !embeddedLayer?.buffer) { + return; + } + const destinationPage = api.screen ? { + width: api.screen.width, + height: api.screen.height, + pixels: api.screen.pixels + } : null; + if (destinationPage && typeof api.page === "function") { + api.page(destinationPage); + api.screen.pixels = destinationPage.pixels; + } + const alpha = typeof embeddedLayer.alpha === "number" ? embeddedLayer.alpha : 255; + if (alpha < 255) { + this.preserveLayer0NextFrame = true; + } + const destX = Math.round(embeddedLayer.x || 0); + const destY = Math.round(embeddedLayer.y || 0); + if (destX === 0 && destY === 0 && alpha < 255) { + } + this.pasteWithAlpha( + api, + embeddedLayer.buffer, + destX, + destY, + alpha + ); + } +}; +var globalKidLispInstance = null; +function ensureGlobalInstance() { + if (!globalKidLispInstance) { + globalKidLispInstance = new KidLisp(); + } + return globalKidLispInstance; +} +function module(source, isLispFile = false) { + return ensureGlobalInstance().module(source, isLispFile); +} +function parse(program) { + const lisp = new KidLisp(); + return lisp.parse(program); +} +function slideUpdate(source) { + if (globalKidLispInstance) { + globalKidLispInstance.slideUpdate(source); + } else { + console.warn("\u{1F39A}\uFE0F slideUpdate called but no global KidLisp instance exists"); + } +} +function updateKidLispAudio(audioData) { + if (globalKidLispInstance) { + globalKidLispInstance.updateAudioGlobals(audioData); + } +} +function getGlobalInstance() { + return globalKidLispInstance; +} +function evaluate(parsed, api = {}) { + const lisp = new KidLisp(); + return lisp.evaluate(parsed, api); +} +function isValidRGBComponent(value) { + const num = parseInt(value, 10); + return !isNaN(num) && num >= 0 && num <= 255; +} +function isValidRGBString(text) { + if (!text || typeof text !== "string") return false; + const trimmed = text.trim(); + const spaceSeparated = trimmed.split(/\s+/); + if (spaceSeparated.length === 3 || spaceSeparated.length === 4) { + return spaceSeparated.every(isValidRGBComponent); + } + const commaSeparated = trimmed.split(/,\s*/); + if (commaSeparated.length === 3 || commaSeparated.length === 4) { + return commaSeparated.every(isValidRGBComponent); + } + return false; +} +function parseRGBString(text) { + if (!isValidRGBString(text)) return null; + const trimmed = text.trim(); + const spaceSeparated = trimmed.split(/\s+/); + if ((spaceSeparated.length === 3 || spaceSeparated.length === 4) && spaceSeparated.every(isValidRGBComponent)) { + return spaceSeparated.map((v2) => parseInt(v2, 10)); + } + const commaSeparated = trimmed.split(/,\s*/); + if ((commaSeparated.length === 3 || commaSeparated.length === 4) && commaSeparated.every(isValidRGBComponent)) { + return commaSeparated.map((v2) => parseInt(v2, 10)); + } + return null; +} +function isKidlispSource(text) { + if (!text) return false; + if (text.startsWith("$") && text.length > 1) { + const cacheId = text.slice(1); + if (/^[0-9A-Za-z]{4,12}$/.test(cacheId)) { + const hasDigit = /\d/.test(cacheId); + const hasMixedCase = /[a-z]/.test(cacheId) && /[A-Z]/.test(cacheId); + if (hasDigit || hasMixedCase) { + return true; + } + } + } + if (text.startsWith("(")) { + return true; + } + if (text.includes("//") || text.includes("function ") || text.includes("const ") || text.includes("let ") || text.includes("var ") || text.includes("=>") || text.includes("console.") || text.includes("import ") || text.includes("export ") || text.includes(".mjs") || text.includes(".js") || text.match(/[a-zA-Z_$]\w*\.\w+/)) { + return false; + } + const trimmedText = text.trim(); + const loweredTrimmedText = trimmedText.toLowerCase(); + if (loweredTrimmedText.startsWith(";")) { + return true; + } + if (loweredTrimmedText.startsWith("share")) { + return false; + } + if (text.includes("\n")) { + const lines = text.split(/\r?\n/).map((l2) => l2.trim()).filter(Boolean); + if (lines.length === 0) return false; + if (lines.every((l2) => l2.startsWith(";"))) { + return true; + } + const kidlispLineFunctions = /* @__PURE__ */ new Set([ + "wipe", + "ink", + "line", + "box", + "flood", + "circle", + "write", + "paste", + "stamp", + "point", + "poly", + "print", + "debug", + "random", + "sin", + "cos", + "tan", + "floor", + "ceil", + "round", + "noise", + "choose", + "overtone", + "rainbow", + "zebra", + "mic", + "amplitude", + "melody", + "speaker", + "resolution", + "lines", + "wiggle", + "shape", + "scroll", + "flip", + "spin", + "resetspin", + "smoothspin", + "sort", + "zoom", + "blur", + "contrast", + "pan", + "unpan", + "mask", + "unmask", + "steal", + "putback", + "label", + "len", + "now", + "die", + "tap", + "draw", + "not", + "range", + "mul", + "log", + "no", + "yes", + "fade", + "repeat", + "jump", + "def", + "later", + "frame" + ]); + const looksLikeKidlispLine = (line2) => { + if (!line2 || line2.startsWith(";")) return false; + if (line2.startsWith("(")) return true; + const lowered = line2.toLowerCase(); + if (lowered.startsWith("fade:") || /^c\d+$/.test(lowered) || /^p\d+$/.test(lowered) || lowered === "rainbow" || lowered === "zebra" || cssColors2 && cssColors2[lowered]) { + return true; + } + const withSpaces2 = lowered.replace(/_/g, " "); + if (isValidRGBString(withSpaces2)) { + return true; + } + const firstToken = lowered.split(/\s+/)[0] || ""; + const cleanedToken = firstToken.replace(/^[^a-z0-9]+/i, "").replace(/[^a-z0-9]+$/i, ""); + return kidlispLineFunctions.has(cleanedToken); + }; + if (lines.some(looksLikeKidlispLine)) { + return true; + } + return false; + } + if (loweredTrimmedText.startsWith("share")) { + return false; + } + if (trimmedText.startsWith("fade:") || trimmedText.match(/^c\d+$/) || trimmedText.match(/^p\d+$/) || // Pattern codes like p0, p1, etc. + cssColors2[trimmedText] || trimmedText === "rainbow" || trimmedText === "zebra") { + return true; + } + const withSpaces = trimmedText.replace(/_/g, " "); + if (isValidRGBString(withSpaces)) { + return true; + } + if (text.includes(",")) { + if (VERBOSE) console.log("\u{1F50D} [KidLisp Detection] Comma-separated text:", text); + const kidlispFunctions = [ + "wipe", + "ink", + "line", + "box", + "flood", + "circle", + "write", + "paste", + "stamp", + "point", + "poly", + "print", + "debug", + "random", + "sin", + "cos", + "tan", + "floor", + "ceil", + "round", + "noise", + "choose", + "overtone", + "rainbow", + "zebra", + "mic", + "amplitude", + "melody", + "speaker", + "resolution", + "lines", + "wiggle", + "shape", + "scroll", + "flip", + "spin", + "resetSpin", + "smoothspin", + "sort", + "zoom", + "blur", + "contrast", + "pan", + "unpan", + "mask", + "unmask", + "steal", + "putback", + "label", + "len", + "now", + "die", + "tap", + "draw", + "not", + "range", + "mul", + "log", + "no", + "yes", + "fade", + "repeat", + "jump" + ]; + const parts = text.split(",").map((part) => part.trim()).filter(Boolean); + if (VERBOSE) console.log("\u{1F50D} [KidLisp Detection] Parts:", parts); + const analyzePart = (part) => { + const normalized = part.replace(/^[{\[(]+/, "").replace(/[}\])]+$/, "").trim(); + if (!normalized) return { isFunction: false, isColor: false, isNumber: false, isRGB: false }; + const firstTokenMatch = normalized.match(/^[^\s]+/); + const firstToken = firstTokenMatch ? firstTokenMatch[0].toLowerCase() : ""; + const firstTokenStripped = firstToken.replace(/^[^a-z0-9]+/i, ""); + const cleanedToken = firstTokenStripped.replace(/[^a-z0-9:._-]+$/i, ""); + if (VERBOSE) console.log(`\u{1F50D} [KidLisp Detection] Analyzing part: "${part}" -> normalized: "${normalized}" -> cleanedToken: "${cleanedToken}"`); + const isFunction = kidlispFunctions.includes(cleanedToken) || cleanedToken.startsWith("(") && kidlispFunctions.includes(cleanedToken.slice(1)); + const isColor = !!(cssColors2 && cssColors2[cleanedToken]) || /^c\d+$/.test(cleanedToken) || cleanedToken.startsWith("fade:"); + const isNumber = /^-?\d+(\.\d+)?$/.test(cleanedToken); + const isRGB = isValidRGBString(cleanedToken.replace(/_/g, " ")); + const isPaintingCode = normalized.startsWith("#") && /^#[0-9A-Za-z]{1,8}$/.test(normalized) && (() => { + const codepart = normalized.substring(1); + const isHexColor = /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{4}$|^[0-9A-Fa-f]{6}$|^[0-9A-Fa-f]{8}$/.test(codepart); + return !isHexColor; + })(); + if (VERBOSE) console.log(`\u{1F50D} [KidLisp Detection] isFunction: ${isFunction}, isColor: ${isColor}, isNumber: ${isNumber}, isRGB: ${isRGB}, isPaintingCode: ${isPaintingCode}`); + return { isFunction, isColor, isNumber, isRGB, isPaintingCode }; + }; + const analyses = parts.map(analyzePart); + const kidParts = analyses.filter(({ isFunction, isColor, isNumber, isRGB, isPaintingCode }) => isFunction || isColor || isNumber || isRGB || isPaintingCode); + const functionParts = analyses.filter(({ isFunction }) => isFunction); + if (VERBOSE) console.log(`\u{1F50D} [KidLisp Detection] kidParts: ${kidParts.length}, functionParts: ${functionParts.length}, total parts: ${parts.length}`); + const result = kidParts.length > 0 && (functionParts.length > 0 || kidParts.length >= 2 || kidParts.length / parts.length >= 0.75); + if (VERBOSE) console.log(`\u{1F50D} [KidLisp Detection] Final result: ${result}`); + if (result) { + return true; + } + } + if (text.includes("\xA7")) { + const decoded = text.replace(/_/g, " ").replace(/§/g, "\n"); + if (decoded.startsWith("(") || decoded.includes("\n")) { + return true; + } + } + if (text.includes("_") && (text.includes("__") || // Multiple consecutive underscores (likely encoded spaces) + text.match(/\b(wipe|ink|line|box|def|later)_/))) { + const decoded = text.replace(/_/g, " ").replace(/§/g, "\n"); + if (decoded.startsWith("(") || decoded.includes("\n")) { + return true; + } + } + return false; +} +function encodeKidlispForUrl(source) { + const isKidlisp = isKidlispSource(source); + if (!isKidlisp) { + return source; + } + const encoded = source.replace(/ /g, "_").replace(/\n/g, "\xA7").replace(/%/g, "\xA4").replace(/;/g, "\xA8").replace(/#/g, "%23"); + return encoded; +} +function decodeKidlispFromUrl(encoded) { + let decoded = encoded.replace(/_/g, " ").replace(/%C2%A7/g, "\n").replace(/%C2%A4/g, "%").replace(/%C2%A8/g, ";").replace(/%23/g, "#").replace(/§/g, "\n").replace(/¤/g, "%").replace(/¨/g, ";").replace(/%28/g, "(").replace(/%29/g, ")").replace(/%2E/g, ".").replace(/%22/g, '"').replace(/%3B/g, ";"); + if (!encoded.startsWith("prompt~") && isKidlispSource(decoded)) { + decoded = decoded.replace(/~/g, "\n"); + } + return decoded; +} +function shouldUseSyntaxHighlighting(promptText) { + if (!promptText || typeof promptText !== "string") return false; + const trimmed = promptText.trim(); + if (isKidlispSource(promptText)) { + return true; + } + const nopaintBrushes = [ + "box", + "shape", + "line", + "rect", + "fill", + "smear", + "spray", + "plot", + "oval", + "circle", + "handprint", + "word", + "paste", + "stamp" + ]; + const firstWord = trimmed.split(/\s+/)[0].toLowerCase(); + if (nopaintBrushes.includes(firstWord)) { + return true; + } + return false; +} +function isActualKidLisp(promptText) { + if (!promptText || typeof promptText !== "string") return false; + return isKidlispSource(promptText); +} +function isPromptInKidlispMode(promptText) { + if (!promptText || typeof promptText !== "string") return false; + return shouldUseSyntaxHighlighting(promptText); +} +async function fetchMultipleCachedCodes(codeArray, api = null) { + if (!codeArray || codeArray.length === 0) { + return {}; + } + const isObjktMode = checkPackMode(); + if (isObjktMode) { + return {}; + } + console.log("\u{1F527} fetchMultipleCachedCodes called with:", codeArray, "- attempting batch HTTPS fetch"); + const codesParam = encodeURIComponent(codeArray.join(",")); + const fullUrl = `/api/store-kidlisp?codes=${codesParam}`; + console.log("\u{1F310} Batch fetch URL:", fullUrl); + try { + console.log("\u{1F310} About to fetch batch..."); + const response = await fetch(fullUrl); + console.log("\u{1F310} Batch fetch completed, response received"); + console.log("\u{1F310} Response details:", { + url: response.url, + status: response.status, + statusText: response.statusText, + ok: response.ok + }); + if (response.ok) { + const data = await response.json(); + console.log(`\u2705 Successfully loaded batch of ${codeArray.length} codes`, data.summary); + const sources = {}; + Object.entries(data.results).forEach(([code2, result]) => { + if (result && result.source) { + sources[code2] = result.source; + } else { + console.warn(`\u274C No source found for code: ${code2}`); + sources[code2] = null; + } + }); + return sources; + } else { + console.error(`\u274C Failed to load batch of cached codes: HTTP ${response.status}: ${response.statusText}`); + return {}; + } + } catch (error) { + console.error(`\u274C Network error loading batch of cached codes`, error); + return {}; + } +} +async function fetchCachedCode(nanoidCode, api = null) { + const isObjktMode = checkPackMode(); + if (isObjktMode) { + return null; + } + const tryFetch = async (url, isProduction = false) => { + return new Promise(async (resolve) => { + if (typeof process !== "undefined" && process.versions && process.versions.node) { + const https = await import("https"); + const options = { rejectUnauthorized: false }; + https.get(url, options, (res) => { + let data = ""; + res.on("data", (chunk) => { + data += chunk; + }); + res.on("end", () => { + try { + const parsed = JSON.parse(data); + if (parsed && parsed.source) { + resolve(parsed.source); + } else { + console.error(`\u274C Failed to load cached code: ${nanoidCode} - No source in response from ${url}`, parsed); + resolve(null); + } + } catch (err) { + console.error(`\u274C Failed to parse JSON for cached code: ${nanoidCode} from ${url}`, err, "Raw response:", data); + resolve(null); + } + }); + }).on("error", (err) => { + console.error(`\u274C Network error loading cached code: ${nanoidCode} from ${url}`, err); + resolve(null); + }); + } else { + fetch(url).then((response) => { + if (response.ok) { + return response.json().then((data) => { + if (data && data.source) { + resolve(data.source); + } else { + console.error(`\u274C Failed to load cached code: ${nanoidCode} - No source in response from ${url}`, data); + resolve(null); + } + }); + } else { + if (response.status !== 404) { + console.error(`\u274C Failed to load cached code: ${nanoidCode} - HTTP ${response.status}: ${response.statusText} from ${url}`); + } + resolve(null); + } + }).catch((error) => { + console.warn(`\u26A0\uFE0F Network error loading embedded piece $${nanoidCode}:`, error.message || error); + resolve(null); + }); + } + }); + }; + if (typeof window !== "undefined" && window.acSPIDER) { + const productionUrl2 = `https://aesthetic.computer/api/store-kidlisp?code=${nanoidCode}`; + const productionSource2 = await tryFetch(productionUrl2, true); + return productionSource2; + } + const localUrl = `/api/store-kidlisp?code=${nanoidCode}`; + const localSource = await tryFetch(localUrl, false); + if (localSource) { + return localSource; + } + const productionUrl = `https://aesthetic.computer/api/store-kidlisp?code=${nanoidCode}`; + const productionSource = await tryFetch(productionUrl, true); + return productionSource; +} +async function fetchKidlispMetadata(nanoidCode) { + const isObjktMode = checkPackMode(); + if (isObjktMode) return null; + const tryFetchMeta = async (url) => { + try { + const response = await fetch(url); + if (response.ok) { + const data = await response.json(); + if (data && data.source) { + return { + source: data.source, + handle: data.handle || null, + when: data.when || null, + hits: data.hits || 0, + kept: data.kept || null + }; + } + } + } catch (error) { + console.error(`\u274C Failed to fetch metadata: ${nanoidCode}`, error); + } + return null; + }; + const localUrl = `/api/store-kidlisp?code=${nanoidCode}`; + const localMeta = await tryFetchMeta(localUrl); + if (localMeta) return localMeta; + const productionUrl = `https://aesthetic.computer/api/store-kidlisp?code=${nanoidCode}`; + return await tryFetchMeta(productionUrl); +} +function getSyntaxHighlightingColors(source) { + if (!source) { + return [{ type: "default", r: 220, g: 60, b: 60, weight: 1 }]; + } + const tokens = tokenize(source); + if (tokens.length === 0) { + return [{ type: "default", r: 220, g: 60, b: 60, weight: 1 }]; + } + const tempInstance = new KidLisp(); + tempInstance.isEditMode = true; + const colors = tokens.map((token) => { + const weight = Math.max(0.01, token.length / source.length); + const colorStr = tempInstance.getTokenColor(token, tokens, tokens.indexOf(token)); + let r2, g, b2; + if (colorStr.includes(",")) { + const parts = colorStr.split(",").map((p) => parseInt(p.trim())); + r2 = parts[0] || 220; + g = parts[1] || 60; + b2 = parts[2] || 60; + } else { + switch (colorStr) { + case "cyan": + case "teal": + r2 = 64; + g = 224; + b2 = 208; + break; + case "lime": + r2 = 50; + g = 205; + b2 = 50; + break; + case "green": + r2 = 34; + g = 139; + b2 = 34; + break; + case "yellow": + r2 = 255; + g = 255; + b2 = 0; + break; + case "orange": + r2 = 255; + g = 165; + b2 = 0; + break; + case "purple": + r2 = 128; + g = 0; + b2 = 128; + break; + case "magenta": + r2 = 255; + g = 0; + b2 = 255; + break; + case "red": + r2 = 255; + g = 0; + b2 = 0; + break; + case "gray": + case "grey": + r2 = 128; + g = 128; + b2 = 128; + break; + case "white": + r2 = 255; + g = 255; + b2 = 255; + break; + default: + r2 = 220; + g = 80; + b2 = 80; + } + } + let type = "default"; + if (token === "(" || token === ")" || token === ",") { + type = "punctuation"; + } else if (/^-?\d+(\.\d+)?$/.test(token)) { + type = "number"; + } else if (token.startsWith('"') && token.endsWith('"')) { + type = "string"; + } else if (token.startsWith(";")) { + type = "comment"; + } else if (["+", "-", "*", "/", "%", "mod", "=", ">", "<", ">=", "<=", "abs", "sqrt", "min", "max"].includes(token)) { + type = "operator"; + } else if (["def", "if", "cond", "later", "once", "lambda", "let", "do", "repeat"].includes(token)) { + type = "special"; + } else { + type = "function"; + } + return { type, r: r2, g, b: b2, weight, token }; + }); + return colors; +} + +// public/aesthetic.computer/lib/parse.mjs +var LEGITIMATE_PARAMS = [ + "icon", + "preview", + "signup", + "supportSignUp", + "success", + "code", + "supportForgotPassword", + "message", + "vscode", + "nogap", + "nolabel", + "shellhtml", + "noboot", + "density", + "zoom", + "duration", + "session-aesthetic", + "session-sotce", + "notice", + "tv", + "highlight", + "daw", + "width", + "height" +]; +var LEGITIMATE_PARAM_SET = new Set( + LEGITIMATE_PARAMS.map((param) => param.toLowerCase()) +); +var AUTH0_PARAMS_TO_STRIP = ["state", "code", "error", "error_description"]; +function isInsideParentheses(text, index) { + let depth = 0; + for (let i2 = 0; i2 < index; i2++) { + if (text[i2] === "(") { + depth += 1; + } else if (text[i2] === ")" && depth > 0) { + depth -= 1; + } + } + return depth > 0; +} +function shouldTreatAsQuery(text, questionIndex) { + if (questionIndex <= 0 || questionIndex >= text.length) return false; + const prevChar = text[questionIndex - 1]; + const nextChar = text[questionIndex + 1]; + if (prevChar === "~" || nextChar === "~") return false; + if (isInsideParentheses(text, questionIndex)) return false; + const rawCandidate = text.slice(questionIndex + 1); + if (!rawCandidate) return false; + const candidate = rawCandidate.replace(/^~+/, ""); + if (!candidate) return false; + const firstChunk = candidate.split(/[~&#]/)[0] || ""; + if (!firstChunk) return false; + const [key] = firstChunk.split("="); + const loweredKey = key.toLowerCase(); + if (LEGITIMATE_PARAM_SET.has(loweredKey) || AUTH0_PARAMS_TO_STRIP.includes(loweredKey)) { + return true; + } + if (firstChunk.includes("=")) return true; + if (/^[a-z0-9_-]+$/i.test(firstChunk) && firstChunk.length > 1) { + return true; + } + return false; +} +function parse2(text, location2 = self?.location) { + let path, host, params, search, hash; + let externalPath; + if (text.startsWith("https") && (text.endsWith(".mjs") || text.endsWith(".lisp") || text.endsWith(".lua"))) { + const url = new URL(text); + location2 = { hostname: url.hostname, port: url.port }; + externalPath = url.pathname.split("/").slice(0, -1).join("/").slice(1); + text = text.split("https://")[1].split(/\.mjs|\.lisp|\.lua/)[0].split("/").pop(); + } + text = text.trim(); + if (text.startsWith("prompt~")) { + let promptContent = text.slice(7); + const qIdx = promptContent.indexOf("?"); + let promptSearch; + if (qIdx >= 0 && shouldTreatAsQuery(promptContent, qIdx)) { + promptSearch = promptContent.slice(qIdx + 1); + promptContent = promptContent.slice(0, qIdx); + } + let decodedContent = decodeKidlispFromUrl(promptContent); + if (!isKidlispSource(decodedContent)) { + decodedContent = promptContent; + } + return { + host: location2.hostname + (location2.port ? ":" + location2.port : ""), + path: "aesthetic.computer/disks/prompt", + piece: "prompt", + colon: void 0, + params: [decodedContent], + // Pass the content as a parameter + search: promptSearch, + hash: void 0, + text + }; + } + const kidlispCheck = isKidlispSource(text); + const hasSpecialChars = text.includes("\xA7") || text.includes("~") || text.includes("_") || text.includes(",") || // Comma-separated kidlisp syntax + text.includes("\n") || text.startsWith("(") || text.startsWith(";"); + const textWithSpaces = text.replace(/_/g, " "); + const isKidlispAfterDecode = isKidlispSource(textWithSpaces); + if (kidlispCheck && hasSpecialChars || isKidlispAfterDecode) { + const decodedSource = decodeKidlispFromUrl(text); + return { + host: location2.hostname + (location2.port ? ":" + location2.port : ""), + path: "(...)", + // Use a special path indicator for kidlisp + piece: "(...)", + colon: void 0, + params: [], + search: void 0, + hash: void 0, + text: decodedSource, + source: decodedSource, + // Include the decoded source code + name: decodedSource + // Use the source as the name too + }; + } + text = text.replace(/\s*:\s*/g, ":"); + text = text.replace(/ /g, "~"); + try { + text = decodeURIComponent(text); + } catch (e2) { + console.log("\u26A0\uFE0F URI decode skipped (literal legacy % or # symbols):", text); + } + text = text.replace(/~#([^~]*)/g, (match, code2) => { + return `~\xA7HASH\xA7${code2}`; + }); + text = text.replace(/\{#([^}]*)\}/g, (match, code2) => { + return `{\xA7HASH\xA7${code2}}`; + }); + [text, hash] = text.split("#"); + text = text.replace(/§HASH§/g, "#"); + if (text[0] === "?") { + search = text.slice(1); + text = window?.acSTARTING_PIECE || "prompt"; + } else { + let questionIndex = text.indexOf("?"); + while (questionIndex >= 0) { + if (shouldTreatAsQuery(text, questionIndex)) { + search = text.slice(questionIndex + 1); + text = text.slice(0, questionIndex); + break; + } + questionIndex = text.indexOf("?", questionIndex + 1); + } + } + if (text.endsWith("/")) text = text.slice(0, -1); + const tokens = text.split("~"); + if (tokens[0] && tokens[0].startsWith("!") && tokens[0].length > 1) { + tokens.unshift("video"); + } + if (tokens[0] && tokens[0].startsWith("*") && tokens[0].length > 1) { + tokens.unshift("clock"); + } + if (tokens[0] && tokens[0].startsWith("+") && tokens[0].length > 1) { + tokens.unshift("mug"); + } + if (tokens[0] && tokens[0].startsWith("^")) { + tokens.unshift("bag"); + } + if (tokens[0]) { + const [maybeSlug, ...colonParts] = tokens[0].split(":"); + if (/^mo\d+$/.test(maybeSlug)) { + const seconds = maybeSlug.slice(2); + tokens[0] = "mo" + (colonParts.length ? ":" + colonParts.join(":") : ""); + tokens.splice(1, 0, seconds); + } + } + if (tokens.length === 1 && isKidlispSource(tokens[0])) { + const decodedSource = decodeKidlispFromUrl(tokens[0]); + return { + host: location2.hostname + (location2.port ? ":" + location2.port : ""), + path: "(...)", + // Use a special path indicator for kidlisp + piece: "(...)", + colon: void 0, + params: [], + search: void 0, + hash: void 0, + text: decodedSource, + source: decodedSource, + // Include the decoded source code + name: decodedSource + // Use the source as the name too + }; + } + let handlePiece = false; + if (tokens[0].indexOf("@") === 0 && tokens[0].indexOf("/") !== -1) { + handlePiece = true; + } + let colonParam; + const colonSplit = tokens[0].split(":"); + if (colonSplit.length > 0) { + tokens[0] = colonSplit[0]; + colonParam = colonSplit.slice(1); + } + const piece = tokens[0]; + if (handlePiece) { + host = location2.hostname; + if (location2.port) host += ":" + location2.port; + const [handle2, name] = tokens[0].split("/"); + path = `media/${handle2}/piece/${name}`; + } else { + host = location2.hostname; + if (location2.port) host += ":" + location2.port; + if (externalPath !== void 0) { + if (externalPath.length === 0) { + path = tokens[0]; + } else { + path = externalPath + "/" + tokens[0]; + } + } else { + path = "aesthetic.computer/disks/" + tokens[0]; + } + } + params = tokens.slice(1); + return { host, path, piece, colon: colonParam, params, search, hash, text }; +} +function inferTitleDesc(source) { + let title, desc; + const lines = source.split("\n"); + if (lines[0].startsWith("//") || lines[0].startsWith(";")) { + title = lines[0].split(",")[0].slice(2).trim(); + } + if (lines[1]?.startsWith("//") || lines[1]?.startsWith(";")) { + desc = lines[1].slice(2).trim(); + } + const standaloneTitle = lines[0]?.startsWith(";") && !!title; + return { title, desc, standaloneTitle }; +} +function metadata(host, slug, pieceMetadata2, protocol = "https:", objktContext = null) { + const notAesthetic = host.indexOf("sotce") > -1 || host.indexOf("botce") > -1 || host.indexOf("wipppps.world") > -1; + const isStandaloneTitle = pieceMetadata2?.standaloneTitle === true; + let title; + if (checkPackMode()) { + try { + const colophon = typeof window !== "undefined" && window.acPACK_COLOPHON || typeof globalThis !== "undefined" && globalThis.acPACK_COLOPHON; + if (colophon?.piece?.name && colophon?.build?.author) { + let timestamp2 = (/* @__PURE__ */ new Date()).getFullYear(); + if (colophon.build.zipFilename) { + const timestampMatch = colophon.build.zipFilename.match(/(2025\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{3})/); + if (timestampMatch) { + timestamp2 = timestampMatch[1]; + } + } else if (colophon.build.packTime) { + const date = new Date(colophon.build.packTime); + timestamp2 = `${date.getFullYear()}.${String(date.getMonth() + 1).padStart(2, "0")}.${String(date.getDate()).padStart(2, "0")}.${String(date.getHours()).padStart(2, "0")}.${String(date.getMinutes()).padStart(2, "0")}.${String(date.getSeconds()).padStart(2, "0")}.${String(date.getMilliseconds()).padStart(3, "0")}`; + } + title = `${colophon.piece.name} by ${colophon.build.author}, ${timestamp2}`; + } else if (objktContext?.author) { + const year = (/* @__PURE__ */ new Date()).getFullYear(); + title = `${slug} by ${objktContext.author}, ${year}`; + } else { + title = slug; + } + } catch (e2) { + if (objktContext?.author) { + const year = (/* @__PURE__ */ new Date()).getFullYear(); + title = `${slug} by ${objktContext.author}, ${year}`; + } else { + title = slug; + } + } + } else if (pieceMetadata2?.title) { + title = pieceMetadata2.title + (notAesthetic || isStandaloneTitle ? "" : " \xB7 Aesthetic Computer"); + } else { + title = slug !== "prompt" ? slug + " \xB7 Aesthetic Computer" : "Aesthetic Computer"; + } + const desc = pieceMetadata2?.desc || "An Aesthetic Computer piece."; + let ogImage, twitterImage; + let icon2; + if (pieceMetadata2?.image_url) { + ogImage = twitterImage = pieceMetadata2.image_url; + } else { + if ("notepat" === slug) { + ogImage = `https://oven.aesthetic.computer/notepat-og.png`; + twitterImage = `https://oven.aesthetic.computer/notepat-og.png`; + } else { + ogImage = `https://oven.aesthetic.computer/preview/1200x630/${slug}.png`; + twitterImage = `https://oven.aesthetic.computer/preview/1800x900/${slug}.png`; + } + } + const slugParts = slug.split("~"); + let pieceName = slugParts[0]; + if (pieceName === "keep" && slugParts.length > 1 && slugParts[1].startsWith("$")) { + pieceName = slugParts[1]; + } + icon2 = pieceMetadata2?.icon_url || `https://oven.aesthetic.computer/icon/128x128/${pieceName}.png`; + const animatedIcon = pieceMetadata2?.animatedIcon; + const iconWebp = animatedIcon ? `https://oven.aesthetic.computer/icon/128x128/${pieceName}.webp` : null; + const manifest = `https://${host}/manifest.json`; + return { title, desc, ogImage, twitterImage, icon: icon2, iconWebp, manifest }; +} +function updateCode(sourceToRun, host, debug4, protocol = location?.protocol, serverRewrites = false, serverRewritesPath = "") { + let updatedCode = sourceToRun; + const namedImports = /^(import|export) {([^{}]*?)} from ["'](\.\.\/|\.\.|\.\/)(.*?)["'];?/gm; + const namespaceImportsTwoDots = /^(import|export) \* as ([^ ]+) from ["'](\.\.\/)(.*?)["'];?/gm; + const namespaceImportsOneDot = /^(import|export) \* as ([^ ]+) from ["']\.?\/(.*?)["'];?/gm; + const replaceNamedImports = (match, p1, p22, p3, p4) => { + let url; + if (serverRewrites) { + url = `..${serverRewritesPath}/public/aesthetic.computer${p3 === "./" ? "/disks" : ""}/${p4.replace(/\.\.\//g, "")}`; + } else { + url = `${protocol}//${host}/aesthetic.computer${p3 === "./" ? "/disks" : ""}/${p4.replace(/\.\.\//g, "")}`; + } + return `${p1} {${p22}} from "${url}";`; + }; + const replaceNamespaceTwoDots = (match, p1, p22, p3, p4) => { + let url; + if (serverRewrites) { + url = `..${serverRewritesPath}/public/aesthetic.computer/${p4.replace(/\.\.\//g, "")}`; + } else { + url = `${protocol}//${host}/aesthetic.computer/${p4.replace(/\.\.\//g, "")}`; + } + return `${p1} * as ${p22} from "${url}";`; + }; + const replaceNamespaceOneDot = (match, p1, p22, p3) => { + let url; + if (serverRewrites) { + url = `..${serverRewritesPath}/public/aesthetic.computer${p3.startsWith("disks/") ? "" : "/disks"}/${p3.replace(/^disks\//, "")}`; + } else { + url = `${protocol}//${host}/aesthetic.computer${p3.startsWith("disks/") ? "" : "/disks"}/${p3.replace(/^disks\//, "")}`; + } + return `${p1} * as ${p22} from "${url}";`; + }; + updatedCode = updatedCode.replace(namedImports, replaceNamedImports); + updatedCode = updatedCode.replace(namespaceImportsTwoDots, replaceNamespaceTwoDots); + updatedCode = updatedCode.replace(namespaceImportsOneDot, replaceNamespaceOneDot); + updatedCode = `const DEBUG = ${debug4}; +${updatedCode}`; + updatedCode = addExportsToCode(updatedCode); + return updatedCode; +} +function addExportsToCode(code2) { + const whitelist = [ + "paint", + "boot", + "act", + "sim", + "meta", + "brush", + "preview", + "icon", + "beat", + "brush", + "filter" + ]; + const codeWithoutComments = code2.split("\n").map((line2) => { + let inString = false; + let stringChar = ""; + let result = ""; + for (let i2 = 0; i2 < line2.length; i2++) { + const char = line2[i2]; + const nextChar = line2[i2 + 1]; + if (!inString && (char === '"' || char === "'" || char === "`")) { + inString = true; + stringChar = char; + result += char; + } else if (inString && char === stringChar && line2[i2 - 1] !== "\\") { + inString = false; + stringChar = ""; + result += char; + } else if (!inString && char === "/" && nextChar === "/") { + break; + } else if (!inString && char === "/" && nextChar === "*") { + i2 += 2; + while (i2 < line2.length - 1) { + if (line2[i2] === "*" && line2[i2 + 1] === "/") { + i2 += 2; + break; + } + i2++; + } + i2--; + } else { + result += char; + } + } + return result; + }).join("\n"); + const hasExportObject = /export\s+{[^}]*}/m.test(codeWithoutComments); + if (!hasExportObject) { + const topLevelFunctionRegex = /^function\s+(\w+)\s*\(/gm; + const topLevelFunctions = []; + let match; + while ((match = topLevelFunctionRegex.exec(codeWithoutComments)) !== null) { + const functionName = match[1]; + if (whitelist.includes(functionName)) { + topLevelFunctions.push(functionName); + } + } + if (topLevelFunctions.length > 0) { + code2 += ` +export { ${topLevelFunctions.join(", ")} };`; + } + } + return code2; +} + +// public/aesthetic.computer/lib/socket.mjs +var logs2 = { socket: false }; +var { min: min6 } = Math; +var Socket = class { + id; + // Will be filled in with the user identifier after the first message. + connected = false; + #sendToBIOS; + #debug; + #killSocket = false; + #ws; + #reconnectTime = 1e3; + #reconnectTimeout; + #queue = []; + constructor(debug4, sendToBIOS) { + this.#debug = debug4; + this.#sendToBIOS = sendToBIOS; + } + // Connects a WebSocket object and takes a handler for messages. + connect(host, receive2, reload, protocol = "wss", connectCallback, disconnectCallback) { + if (typeof window !== "undefined" && window.acOBJKT_MODE) { + if (this.#debug && logs2.socket) console.log("\u{1F9E6} Sockets disabled in OBJKT mode."); + return; + } + if (this.connected) { + console.warn("\u{1F9E6} Already connected..."); + return; + } + if (this.#debug && logs2.socket) console.log("\u{1F9E6} Connecting...", host); + try { + this.#ws = new WebSocket(`${protocol}://${host}`); + } catch { + if (!checkPackMode()) { + console.log("%cconnection failed, retrying in " + this.#reconnectTime / 1e3 + "s...", "color: orange; background: black; padding: 2px;"); + } + return; + } + const socket2 = this; + const ws = this.#ws; + ws.onopen = (e2) => { + socket2.#queue.forEach((q) => socket2.send(...q)); + socket2.connected = true; + socket2.#queue.length = 0; + socket2.#reconnectTime = 1; + connectCallback?.(); + }; + ws.onmessage = (e2) => { + const msg = JSON.parse(e2.data); + socket2.#preReceive(msg, receive2, reload, this.#sendToBIOS); + }; + ws.onclose = (e2) => { + if (logs2.socket) + console.warn("\u{1F9E6} Disconnected...", e2.currentTarget?.url); + clearTimeout(this.pingTimeout); + socket2.connected = false; + if (socket2.#killSocket === false && !checkPackMode()) { + console.log("%cconnection failed, retrying in " + socket2.#reconnectTime / 1e3 + "s...", "color: orange; background: black; padding: 2px;"); + this.#reconnectTimeout = setTimeout(() => { + socket2.connect(host, receive2, reload, protocol, connectCallback); + }, socket2.#reconnectTime); + socket2.#reconnectTime = min6(socket2.#reconnectTime, 16e3); + socket2.#reconnectTime *= 2; + } + disconnectCallback?.(); + }; + ws.onerror = (err) => { + if (checkPackMode()) { + ws.close(); + } else { + console.log("%cconnection failed, retrying...", "color: orange; background: black; padding: 2px;"); + ws.close(); + } + }; + } + // Send a formatted message to the connected WebSocket server. + // Passes silently on no connection. + send(type, content) { + if (this.#ws?.readyState === WebSocket.OPEN) { + this.#ws.send(JSON.stringify({ type, content })); + } else { + this.#queue.push([type, content]); + } + } + // Kills the socket permanently. + kill(reconnectIn) { + if (!reconnectIn) { + this.#killSocket = true; + clearTimeout(this.#reconnectTimeout); + } else { + this.#reconnectTime = reconnectIn * 1e3; + if (logs2.socket) { + console.log("\u{1F9E6} Reconnecting in:", this.#reconnectTime, "seconds."); + } + } + this.#ws?.close(); + } + // Before passing messages to disk code, handle some system messages here. + // Note: "reload" should only be defined when in development / debug mode. + #preReceive({ id, type, content }, receive2, reload, sendToBIOS) { + if (this.#killSocket) return; + if (type === "connected") { + const c4 = JSON.parse(content); + this.id = id; + if (logs2.socket) { + console.log( + `\u{1F9E6} You joined: ${c4.ip} id: ${c4.id} \u{1F939} Connections open: ${c4.playerCount}` + ); + } + receive2?.(id, type, c4); + } else if (type === "joined") { + const c4 = JSON.parse(content); + if (logs2.socket) console.log(`\u{1F9E6} ${c4.text || c4}`); + receive2?.(id, type, c4); + } else if (type === "vscode-extension:reload") { + sendToBIOS?.({ + type: "post-to-parent", + content: { type: "vscode-extension:reload" } + }); + } else if (type === "reload" && reload && this.#debug) { + let c4; + if (typeof content === "object") { + c4 = content; + } else { + c4 = JSON.parse(content); + } + reload(c4); + } else if (type === "code") { + const parsed = typeof content === "string" ? JSON.parse(content) : content; + if (id === "development") { + reload?.({ + name: parsed.piece, + source: parsed.source, + codeChannel: parsed.codeChannel + }); + } + } else if (type === "left") { + const c4 = typeof content === "string" ? JSON.parse(content) : content; + if (logs2.socket) + console.log(`\u{1F9E6} ${id} has left. Connections open: ${content.count}`); + receive2?.(id, type, c4); + } else { + try { + receive2?.(id, type, content); + } catch (err) { + console.error("\u{1F9E6} Socket message error:", err); + } + } + } +}; + +// public/aesthetic.computer/lib/diagnostics.mjs +var FRAME_SAMPLE = 1024; +var HEARTBEAT_MS = 4e3; +var MAX_LOGS_PER_SECOND = 20; +var MAX_LOG_LENGTH = 2e3; +var QUANTIZE = 3; +var STEPS = [7919, 6151, 3079, 1543, 769, 389, 193, 97, 11, 3, 1]; +function stepFor(total) { + for (const step of STEPS) if (step < total && total % step !== 0) return step; + return 1; +} +function frameSignature(pixels2, width2, height2, sample = FRAME_SAMPLE) { + const count = Math.floor((Number(width2) || 0) * (Number(height2) || 0)); + if (!pixels2 || count <= 0) return null; + const length5 = pixels2.length || 0; + if (length5 < 4) return null; + const total = Math.min(count, Math.floor(length5 / 4)); + const step = stepFor(total); + const want = Math.min(total, sample); + const seen = /* @__PURE__ */ new Set(); + let first = -1; + let sampled = 0; + for (let n2 = 0; n2 < want; n2 += 1) { + const o2 = n2 * step % total * 4; + const key = pixels2[o2] >> QUANTIZE << 16 | pixels2[o2 + 1] >> QUANTIZE << 8 | pixels2[o2 + 2] >> QUANTIZE; + if (first < 0) first = o2; + seen.add(key); + sampled += 1; + if (seen.size > 64) break; + } + if (sampled === 0) return null; + return { + colors: seen.size, + blank: seen.size === 1, + sampled, + // The colour it is stuck on, which is usually the `wipe` and is usually the + // fastest way to recognise what happened. + color: seen.size === 1 && first >= 0 ? [pixels2[first], pixels2[first + 1], pixels2[first + 2]] : null + }; +} +var Diagnostics = class { + constructor({ send: send2, now = () => Date.now(), heartbeat = HEARTBEAT_MS } = {}) { + this.send = send2; + this.now = now; + this.heartbeat = heartbeat; + this.room = ""; + this.last = null; + this.lastAt = 0; + this.window = 0; + this.spent = 0; + this.dropped = 0; + } + get on() { + return Boolean(this.room); + } + // Point at a channel, or pass nothing to go quiet. Everything resets: the + // counts described the piece that was being watched before. + channel(name) { + const next = String(name || ""); + if (next === this.room) return false; + this.room = next; + this.last = null; + this.lastAt = 0; + this.dropped = 0; + return true; + } + #post(kind, body) { + if (!this.on) return; + try { + this.send("diagnostics:report", { channel: this.room, kind, ...body }); + } catch { + } + } + // One painted frame, as it was handed to the display. + frame(pixels2, width2, height2) { + if (!this.on) return; + const signature = frameSignature(pixels2, width2, height2); + if (!signature) return; + const at = this.now(); + const changed = !this.last || this.last.blank !== signature.blank || this.last.colors !== signature.colors; + if (!changed && at - this.lastAt < this.heartbeat) return; + this.last = signature; + this.lastAt = at; + this.#post("frame", { + colors: signature.colors, + blank: signature.blank, + color: signature.color, + width: width2, + height: height2 + }); + } + // One console line or caught error. `args` arrives already serialized by the + // caller, which owns the console hijack. + note(level, args) { + if (!this.on) return; + const at = this.now(); + const second = Math.floor(at / 1e3); + if (second !== this.window) { + const missed = this.dropped; + this.window = second; + this.spent = 0; + this.dropped = 0; + if (missed > 0) this.#post("dropped", { count: missed }); + } + this.spent += 1; + if (this.spent > MAX_LOGS_PER_SECOND) { + this.dropped += 1; + return; + } + const text = (Array.isArray(args) ? args : [args]).map((value) => String(value ?? "")).join(" ").slice(0, MAX_LOG_LENGTH); + if (!text) return; + this.#post("log", { level: String(level || "log"), text, at }); + } + // Uncaught errors, including the ones only the worker ever sees. + watch(scope = globalThis) { + if (!scope?.addEventListener) return this; + scope.addEventListener("error", (event) => { + const where = event?.filename ? ` at ${event.filename}:${event.lineno}:${event.colno}` : ""; + this.note("error", [`Uncaught: ${event?.message || event?.type}${where}`]); + }); + scope.addEventListener("unhandledrejection", (event) => { + this.note("error", [`Unhandled promise: ${event?.reason}`]); + }); + return this; + } +}; + +// public/aesthetic.computer/lib/redact.mjs +function redact(msg) { + msg.redactedText = msg.text; + msg.text = msg.text.replace(/\S/g, "_"); +} +function unredact(msg) { + msg.text = msg.redactedText || msg.text; +} + +// public/aesthetic.computer/lib/chat.mjs +var validInstances = ["chat-system", "chat-sotce", "chat-clock"]; +var Chat = class { + system; + $commonApi; + // Set by `disk` after `$commonApi` is defined. + #debug = false; + constructor(debug4, send2, disconnect) { + this.system = { + server: new Socket(debug4, send2), + chatterCount: 0, + onlineHandles: [], + // Realtime list of online user handles (all connected) + hereHandles: [], + // Users actually viewing the chat piece right now + messages: [], + hearts: /* @__PURE__ */ new Map(), + // Map + // receiver: // A custom receiver that can be defined in a piece. + // like `chat` to get the events. + disconnect, + // A custom disconnection that triggers below. + connecting: true + // Start in connecting state, set to false when connected + }; + this.system.sendHeart = (id, token) => { + if (!id || !token) return; + const existing2 = this.system.hearts.get(id) || { count: 0, heartedByMe: false }; + const heartedByMe = !existing2.heartedByMe; + const count = existing2.count + (heartedByMe ? 1 : -1); + this.system.hearts.set(id, { count: Math.max(0, count), heartedByMe }); + this.system.server.send("chat:heart", { for: id, token }); + }; + this.#debug = debug4; + } + // Connect to a chat instance. + // Instance options are `system` for AC users and `sotce` for Sotce Net + // as of 24.11.02.00.31 + connect(instanceName) { + instanceName = "chat-" + instanceName; + if (validInstances.indexOf(instanceName) === -1) { + console.warn( + "\u{1FAAB} Chat connection aborted. Invalid instance name:", + instanceName + ); + return; + } + let chatUrl; + if (this.#debug) { + if (location.hostname === "local.aesthetic.computer") { + chatUrl = `${instanceName}.${location.hostname}`; + } else { + let port; + if (instanceName === "chat-system") { + port = 8083; + } else if (instanceName === "chat-sotce") { + port = 8084; + } else if (instanceName === "chat-clock") { + port = 8085; + } + chatUrl = `${location.hostname}:${port}`; + } + } else { + if (instanceName === "chat-system") { + chatUrl = "chat-system.aesthetic.computer"; + } else if (instanceName === "chat-sotce") { + chatUrl = "chat.sotce.net"; + } else if (instanceName === "chat-clock") { + chatUrl = "chat-clock.aesthetic.computer"; + } + } + console.log("\u{1F5E8}\uFE0F Chat connect:", instanceName, "\u2192", chatUrl, "debug:", this.#debug); + this.system.server.connect( + chatUrl, + // host + (id, type, content) => { + const extra = {}; + if (type === "connected") { + this.system.connecting = false; + this.system.chatterCount = content?.chatters || this.system.chatterCount; + this.system.onlineHandles = content?.handles || []; + this.system.messages.length = 0; + this.system.messages.push(...content.messages); + this.system.hearts.clear(); + const hc = content?.heartCounts || {}; + for (const [id2, count] of Object.entries(hc)) { + this.system.hearts.set(id2, { count, heartedByMe: false }); + } + for (const msg of content.messages) { + if (msg.id && msg.hearts > 0 && !this.system.hearts.has(msg.id)) { + this.system.hearts.set(msg.id, { count: msg.hearts, heartedByMe: false }); + } + } + if (logs.chat) { + console.log( + `\u{1F4AC} %c${content.message}`, + `color: cyan; background: rgba(10, 20, 40);` + ); + } + } + if (type === "unauthorized") { + if (logs.chat) console.log("\u{1F534} Chat message unauthorized!", content); + this.$commonApi?.notice("Unauthorized", ["red", "yellow"]); + } + if (type === "message") { + const msg = JSON.parse(content); + if (logs.chat) console.log("\u{1F4AC} Chat message received:", msg); + this.system.messages.push(msg); + if (this.system.messages.length > 500) this.system.messages.shift(); + content = msg; + extra.layoutChanged = true; + } + if (type === "message:update") { + const updateData = JSON.parse(content); + if (logs.chat) console.log("\u{1F4AC} Chat message updated:", updateData); + if (this.system.messages[updateData.index]) { + this.system.messages[updateData.index].count = updateData.count; + extra.layoutChanged = true; + } + } + if (type === "message:edit") { + const editData = JSON.parse(content); + if (logs.chat) console.log("\u{1F4AC} Chat message edited:", editData); + const msg = this.system.messages.find((m) => m.id === editData.id); + if (msg) { + msg.text = editData.text; + msg.edited = true; + msg.editedWhen = editData.editedWhen; + delete msg.redactedText; + delete msg._colorLineCache; + delete msg._colorLineHoverKey; + delete msg._cachedLastLineWidth; + extra.layoutChanged = true; + } + content = editData; + } + if (type === "message:delete") { + const deleteData = JSON.parse(content); + if (logs.chat) console.log("\u{1F4AC} Chat message deleted:", deleteData); + const msg = this.system.messages.find((m) => m.id === deleteData.id); + if (msg) { + msg.text = "[deleted]"; + msg.deleted = true; + delete msg.redactedText; + extra.layoutChanged = true; + } + } + if (type === "message:hearts") { + const heartsData = JSON.parse(content); + if (logs.chat) console.log("\u{1F4AC} Hearts update:", heartsData); + const existing2 = this.system.hearts.get(heartsData.for) || { heartedByMe: false }; + this.system.hearts.set(heartsData.for, { + count: heartsData.count, + heartedByMe: existing2.heartedByMe + }); + extra.layoutChanged = true; + } + if (type === "handle:update" || type === "handle:strip") { + const msg = JSON.parse(content); + content = msg; + console.log("\u{1F471}\uFE0F\u200D `handle` edit received:", type, content); + this.system.messages.forEach((message) => { + if (message.sub === content.user) { + message.from = content.handle; + extra.layoutChanged = true; + } + }); + if (type === "handle:strip" && msg.user === this.$commonApi?.user?.sub) { + console.log("\u{1FA79} Your handle has been stripped!"); + this.$commonApi?.notice("HANDLE STRIPPED", ["red", "yellow"]); + setTimeout(() => { + this.$commonApi?.net.refresh(); + }, 750); + } + } + if (type === "handle:colors") { + const msg = JSON.parse(content); + console.log("\u{1F3A8} Handle colors update received:", msg.handle); + const cleanHandle = msg.handle.startsWith("@") ? msg.handle.slice(1) : msg.handle; + content = msg; + this.system.messages.forEach((message) => { + const msgHandle = message.from?.startsWith("@") ? message.from.slice(1) : message.from; + if (msgHandle?.toLowerCase() === cleanHandle.toLowerCase()) { + extra.layoutChanged = true; + } + }); + } + if (type === "chat-system:mute" || type === "chat-system:unmute") { + const msg = JSON.parse(content); + content = msg; + if (this.$commonApi?.user?.sub === content.user) { + if (type === "chat-system:mute") + this.$commonApi.notice("MUTED", ["red", "yellow"]); + if (type === "chat-system:unmute") + this.$commonApi.notice("UNMUTED"); + } + this.system.messages.forEach((message) => { + if (message.sub === content.user) { + if (type === "chat-system:mute") redact(message); + if (type === "chat-system:unmute") unredact(message); + extra.layoutChanged = true; + } + }); + } + if (type === "left") { + if (logs.chat) console.log("\uFE0F\u270C\uFE0F Goodbye:", id, type, content); + this.system.chatterCount = content.chatters; + if (content.handles) this.system.onlineHandles = content.handles; + } + if (type === "joined") { + if (logs.chat) console.log("\uFE0F\u{1F44B} Hello:", id, type, content); + this.system.chatterCount = content.chatters; + if (content.handles) this.system.onlineHandles = content.handles; + } + if (type === "online-handles") { + if (logs.chat) console.log("\u{1F465} Online handles:", content.handles); + this.system.onlineHandles = content.handles || []; + } + if (type === "presence") { + if (logs.chat) console.log("\u{1F465} Presence update - online:", content.online, "here:", content.here); + this.system.onlineHandles = content.online || content.handles || []; + this.system.hereHandles = content.here || []; + } + this.system.receiver?.(id, type, content, extra); + }, + void 0, + // reload + "wss", + // protocol + void 0, + // connectionCallback + () => { + if (logs.chat) console.log("\u{1F4AC}\u{1F6AB} Chat disconnected."); + this.system.chatterCount = 0; + this.system.onlineHandles = []; + this.system.connecting = true; + this.system.disconnect?.(); + } + ); + } +}; + +// public/aesthetic.computer/lib/helpers.mjs +function notArray(obj) { + return !Array.isArray(obj); +} +function defaultTemplateStringProcessor(strings, ...vars) { + let result = ""; + strings.forEach((str7, i2) => { + result += `${str7}${i2 === strings.length - 1 ? "" : vars[i2]}`; + }); + return result; +} +function uint8ArrayToBase64(buffer) { + let binary = ""; + let bytes = new Uint8Array(buffer); + let len5 = bytes.byteLength; + for (let i2 = 0; i2 < len5; i2++) binary += String.fromCharCode(bytes[i2]); + return btoa(binary); +} +function base64ToUint8Array(base64) { + let binaryString = atob(base64); + let len5 = binaryString.length; + let bytes = new Uint8Array(len5); + for (let i2 = 0; i2 < len5; i2++) { + bytes[i2] = binaryString.charCodeAt(i2); + } + return bytes; +} + +// public/aesthetic.computer/lib/piece-permissions.mjs +var grantedPermissions = /* @__PURE__ */ new Map(); +var pendingRequests = /* @__PURE__ */ new Map(); +var nextRequestId = 0; +var isWorker = typeof document === "undefined"; +async function requestPermission(pieceCode, permission, details = {}) { + const piecePerms = grantedPermissions.get(pieceCode); + if (piecePerms?.has(permission)) { + return true; + } + const granted = await showPermissionPrompt(pieceCode, permission, details); + if (granted) { + if (!grantedPermissions.has(pieceCode)) { + grantedPermissions.set(pieceCode, /* @__PURE__ */ new Set()); + } + grantedPermissions.get(pieceCode).add(permission); + } + return granted; +} +function clearPermissions(pieceCode) { + grantedPermissions.delete(pieceCode); +} +function resolvePermissionRequest(requestId, granted) { + const pending = pendingRequests.get(requestId); + if (pending) { + pending.resolve(granted); + pendingRequests.delete(requestId); + } +} +async function showPermissionPrompt(pieceCode, permission, details) { + if (isWorker) { + const requestId = nextRequestId++; + return new Promise((resolve) => { + pendingRequests.set(requestId, { resolve }); + postMessage({ + type: "permission-request", + content: { requestId, pieceCode, permission, details } + }); + }); + } + return showDOMPermissionPrompt(pieceCode, permission, details); +} +function showDOMPermissionPrompt(pieceCode, permission, details) { + return new Promise((resolve) => { + const messages = { + network: { + title: "Network Access", + message: `The piece "${pieceCode}" wants to make network requests.`, + warning: "This allows the piece to send data to external servers.", + details: details.url ? `URL: ${details.url}` : null + }, + auth: { + title: "Authentication Access", + message: `The piece "${pieceCode}" wants to access your authentication tokens.`, + warning: "This gives the piece access to your account credentials.", + details: null + }, + "storage-full": { + title: "Full Storage Access", + message: `The piece "${pieceCode}" wants to access all stored data.`, + warning: "This allows the piece to read data from other pieces.", + details: null + }, + "upload-external": { + title: "External Upload", + message: `The piece "${pieceCode}" wants to upload a file to an external server.`, + warning: "The file will be sent outside aesthetic.computer.", + details: details.url ? `Destination: ${details.url}` : null + }, + "navigate-external": { + title: "External Navigation", + message: `The piece "${pieceCode}" wants to navigate to an external URL.`, + warning: "You will leave aesthetic.computer.", + details: details.url ? `URL: ${details.url}` : null + } + }; + const config = messages[permission] || { + title: "Permission Request", + message: `The piece "${pieceCode}" wants permission for: ${permission}`, + warning: null, + details: null + }; + const modal = document.createElement("div"); + modal.style.cssText = ` + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.8); + display: flex; + align-items: center; + justify-content: center; + z-index: 100000; + font-family: sans-serif; + `; + const dialog = document.createElement("div"); + dialog.style.cssText = ` + background: rgb(235, 235, 235); + color: black; + padding: 24px; + max-width: 400px; + border: 2px solid black; + `; + const title = document.createElement("h2"); + title.textContent = config.title; + title.style.cssText = "margin: 0 0 16px 0; font-size: 18px; font-weight: bold;"; + const message = document.createElement("p"); + message.textContent = config.message; + message.style.cssText = "margin: 0 0 12px 0; line-height: 1.4;"; + dialog.appendChild(title); + dialog.appendChild(message); + if (config.warning) { + const warning = document.createElement("p"); + warning.textContent = config.warning; + warning.style.cssText = "margin: 0 0 12px 0; color: rgb(200, 0, 0); font-weight: bold;"; + dialog.appendChild(warning); + } + if (config.details) { + const detailsEl = document.createElement("p"); + detailsEl.textContent = config.details; + detailsEl.style.cssText = "margin: 0 0 12px 0; font-family: monospace; font-size: 12px; word-break: break-all;"; + dialog.appendChild(detailsEl); + } + const buttonContainer = document.createElement("div"); + buttonContainer.style.cssText = "display: flex; gap: 12px; margin-top: 20px;"; + const allowButton = document.createElement("button"); + allowButton.textContent = "Allow"; + allowButton.style.cssText = ` + flex: 1; + padding: 10px; + background: black; + color: white; + border: none; + cursor: pointer; + font-size: 14px; + font-weight: bold; + `; + const denyButton = document.createElement("button"); + denyButton.textContent = "Deny"; + denyButton.style.cssText = ` + flex: 1; + padding: 10px; + background: white; + color: black; + border: 2px solid black; + cursor: pointer; + font-size: 14px; + font-weight: bold; + `; + allowButton.addEventListener("click", () => { + document.body.removeChild(modal); + resolve(true); + }); + denyButton.addEventListener("click", () => { + document.body.removeChild(modal); + resolve(false); + }); + buttonContainer.appendChild(allowButton); + buttonContainer.appendChild(denyButton); + dialog.appendChild(buttonContainer); + modal.appendChild(dialog); + document.body.appendChild(modal); + denyButton.focus(); + }); +} + +// public/aesthetic.computer/lib/restricted-api.mjs +function createRestrictedApi(fullApi, pieceMetadata2) { + const { code: pieceCode, trustLevel = "untrusted" } = pieceMetadata2; + if (trustLevel === "trusted" || trustLevel === "kidlisp") { + return fullApi; + } + const restrictedApi = { + // Copy all safe APIs (rendering, input, utilities) + ...fullApi, + // Wrap network APIs with permission checks + net: createRestrictedNetApi(fullApi.net, pieceCode), + // Namespace storage per piece + store: createNamespacedStore(fullApi.store, pieceCode), + // Block auth APIs for untrusted pieces (no user-uploaded piece should have auth tokens) + authorize: async () => { + throw new Error(`Auth tokens are not available to user-uploaded pieces for security reasons`); + }, + // Wrap upload with external URL check + upload: createRestrictedUpload(fullApi.upload, pieceCode), + // Wrap jump with external URL check + jump: createRestrictedJump(fullApi.jump, pieceCode) + // Block dynamic imports by not exposing import functionality + // (pieces can still use static imports in their source) + }; + restrictedApi._restricted = true; + restrictedApi._pieceCode = pieceCode; + return restrictedApi; +} +function createRestrictedNetApi(netApi, pieceCode) { + return { + ...netApi, + // Wrap preload (fetch wrapper) + preload: async (url, options) => { + const granted = await requestPermission(pieceCode, "network", { url }); + if (!granted) { + throw new Error( + `Network access denied. The piece "${pieceCode}" requested access to: ${url}` + ); + } + return netApi.preload(url, options); + }, + // Wrap userRequest (authenticated fetch) + userRequest: async (url, options) => { + const granted = await requestPermission(pieceCode, "network", { url }); + if (!granted) { + throw new Error( + `Network access denied. The piece "${pieceCode}" requested access to: ${url}` + ); + } + throw new Error( + `Authenticated requests are not available to user-uploaded pieces for security reasons` + ); + }, + // Block getToken for untrusted pieces + getToken: async () => { + throw new Error(`Auth tokens are not available to user-uploaded pieces for security reasons`); + } + // Keep other net APIs that don't involve external requests + // (signup, login, etc. can stay since they're internal to AC) + }; +} +function createNamespacedStore(fullStore, pieceCode) { + const namespace = `piece:${pieceCode}:`; + return { + async get(key) { + return await fullStore.get(namespace + key); + }, + async set(key, value) { + return await fullStore.set(namespace + key, value); + }, + async retrieve(key, path) { + return await fullStore.retrieve(namespace + key, path); + }, + async delete(key) { + return await fullStore.delete(namespace + key); + }, + async keys() { + const allKeys = await fullStore.keys(); + return allKeys.filter((k) => k.startsWith(namespace)).map((k) => k.slice(namespace.length)); + }, + async clear() { + const keys4 = await this.keys(); + for (const key of keys4) { + await this.delete(key); + } + }, + // Expose method to request full storage access + async requestFullAccess() { + const granted = await requestPermission(pieceCode, "storage-full", {}); + if (granted) { + return fullStore; + } + throw new Error("Full storage access denied"); + } + }; +} +function createRestrictedUpload(uploadFn, pieceCode) { + return async (file, options = {}) => { + if (options.url && !isAestheticComputerUrl(options.url)) { + const granted = await requestPermission(pieceCode, "upload-external", { + url: options.url + }); + if (!granted) { + throw new Error( + `External upload denied. The piece "${pieceCode}" tried to upload to: ${options.url}` + ); + } + } + return uploadFn(file, options); + }; +} +function createRestrictedJump(jumpFn, pieceCode) { + return async (destination, ...args) => { + if (typeof destination === "string" && (destination.startsWith("http://") || destination.startsWith("https://")) && !isAestheticComputerUrl(destination)) { + const granted = await requestPermission( + pieceCode, + "navigate-external", + { url: destination } + ); + if (!granted) { + throw new Error( + `External navigation denied. The piece "${pieceCode}" tried to navigate to: ${destination}` + ); + } + } + return jumpFn(destination, ...args); + }; +} +function isAestheticComputerUrl(url) { + try { + const loc = typeof location !== "undefined" ? location : self.location; + const parsed = new URL(url, loc.href); + return parsed.hostname === "aesthetic.computer" || parsed.hostname.endsWith(".aesthetic.computer") || parsed.hostname === loc.hostname; + } catch { + return false; + } +} +function shouldRestrictPiece(pieceMetadata2) { + const { trustLevel, authorSub, anonymous } = pieceMetadata2; + if (anonymous !== false) { + return true; + } + if (trustLevel === "trusted") { + return false; + } + return true; +} + +// public/aesthetic.computer/lib/color-highlighting.mjs +var CHANNEL_COLORS = ["red", "lime", "deepskyblue"]; +var GRAYSCALE_COLOR = "silver"; +var NUMERIC_TOKEN_REGEX = /^-?\d+(?:\.\d+)?$/; +var RANGE_TOKEN_REGEX = /^-?\d+\s*-\s*-?\d+$/; +function isWildcardToken(token) { + return token === "?"; +} +function isNumericLikeToken(token) { + if (!token && token !== 0) return false; + const trimmed = `${token}`.trim(); + if (!trimmed) return false; + return NUMERIC_TOKEN_REGEX.test(trimmed) || RANGE_TOKEN_REGEX.test(trimmed) || isWildcardToken(trimmed); +} +function isHexColorToken(token) { + if (!token && token !== 0) return false; + const trimmed = `${token}`.trim(); + if (!trimmed) return false; + if (trimmed.startsWith("#")) { + const body = trimmed.slice(1); + return /^[0-9a-fA-F]{3,8}$/.test(body); + } + if (/^0x[0-9a-fA-F]{3,8}$/i.test(trimmed)) { + return true; + } + if (/^[0-9a-fA-F]{3,8}$/.test(trimmed) && /[a-fA-F]/.test(trimmed)) { + return true; + } + return false; +} +function expandShortHex(body) { + return body.split("").map((char) => char + char).join(""); +} +function clampChannelValue(value) { + if (value === void 0 || value === null || Number.isNaN(value)) return null; + return clamp(Math.round(value), 0, 255); +} +function channelColorString(index, value, { grayscale = false } = {}) { + const clamped = clampChannelValue(value); + if (clamped === null) { + return CHANNEL_COLORS[index] || "orange"; + } + if (grayscale) { + return `${clamped},${clamped},${clamped}`; + } + if (index === 0) return `${clamped},0,0`; + if (index === 1) return `0,${clamped},0`; + if (index === 2) return `0,0,${clamped}`; + return `${clamped},${clamped},${clamped}`; +} +function parseHexChannelValue(channelHex) { + if (!channelHex) return 0; + const normalized = channelHex.length === 1 ? channelHex.repeat(2) : channelHex; + return parseInt(normalized, 16); +} +function parseAlphaFromToken(token) { + if (token === void 0 || token === null) return null; + const trimmed = `${token}`.trim(); + if (!trimmed || trimmed === "?" || trimmed.includes("-")) return null; + const value = Number(trimmed); + if (Number.isNaN(value)) return null; + if (value <= 1 && trimmed.includes(".")) { + return clamp(Math.round(value * 255), 0, 255); + } + return clamp(Math.round(value), 0, 255); +} +function parseHexColorToken(token) { + if (!token && token !== 0) return null; + const original = `${token}`.trim(); + if (!original) return null; + let body = original; + let prefix = ""; + if (body.startsWith("#")) { + body = body.slice(1); + prefix = "#"; + } else if (body.startsWith("0x") || body.startsWith("0X")) { + prefix = body.slice(0, 2); + body = body.slice(2); + } + if (!/^[0-9a-fA-F]+$/.test(body)) return null; + if (![3, 4, 6, 8].includes(body.length)) return null; + const uppercaseBody = body.toUpperCase(); + const bodyLength = uppercaseBody.length; + let rgbHex = uppercaseBody; + let alphaHex = null; + if (bodyLength === 3) { + rgbHex = expandShortHex(uppercaseBody); + } else if (bodyLength === 4) { + rgbHex = expandShortHex(uppercaseBody.slice(0, 3)); + alphaHex = `${uppercaseBody[3]}${uppercaseBody[3]}`; + } else if (bodyLength === 6) { + rgbHex = uppercaseBody.slice(0, 6); + } else if (bodyLength === 8) { + rgbHex = uppercaseBody.slice(0, 6); + alphaHex = uppercaseBody.slice(6, 8); + } + rgbHex = rgbHex.toUpperCase(); + let rgb; + try { + rgb = hexToRgb(`#${rgbHex}`); + } catch (error) { + return null; + } + const alpha = alphaHex !== null ? parseInt(alphaHex, 16) : null; + const channelDisplays = []; + let alphaDisplay = null; + if (bodyLength === 3 || bodyLength === 4) { + channelDisplays.push(...uppercaseBody.slice(0, 3).split("")); + if (bodyLength === 4) { + alphaDisplay = uppercaseBody[3]; + } + } else { + const segments = uppercaseBody.slice(0, 6).match(/.{1,2}/g) || []; + channelDisplays.push(...segments); + if (bodyLength === 8) { + alphaDisplay = uppercaseBody.slice(6, 8); + } + } + return { + rgb, + alpha, + alphaHex, + prefix, + channelDisplays, + alphaDisplay + }; +} +function formatAlphaToken(rawToken, parsedAlpha) { + if (parsedAlpha === void 0 || parsedAlpha === null || Number.isNaN(parsedAlpha)) { + const tokenText = rawToken !== void 0 ? rawToken : "?"; + return `\\magenta\\${tokenText}`; + } + const alphaInt = clampChannelValue(parsedAlpha) ?? 0; + return `\\magenta\\${alphaInt}`; +} +function colorizeHexToken(token) { + const parsed = parseHexColorToken(token); + if (!parsed || !parsed.rgb) { + return { text: `\\orange\\${token}`, consumed: 1, brushColor: null, alphaIncluded: false }; + } + const [r2, g, b2] = parsed.rgb; + const colorValue = `${r2},${g},${b2}`; + let block = `\\${colorValue}\\${parsed.prefix || "#"}`; + parsed.channelDisplays.forEach((channelHex, index) => { + const channelValue = parseHexChannelValue(channelHex); + const channelColor = channelColorString(index, channelValue); + block += `\\${channelColor}\\${channelHex}`; + }); + let alphaIncluded = false; + if (parsed.alpha !== null && !Number.isNaN(parsed.alpha)) { + const alphaSegment = formatAlphaToken(parsed.alphaDisplay, parsed.alpha); + if (alphaSegment) { + block += ` ${alphaSegment}`; + alphaIncluded = true; + } + } + return { text: block, consumed: 1, brushColor: colorValue, alphaIncluded }; +} +function colorizeNumericChannels(rawTokens, parsedArray) { + if (!Array.isArray(parsedArray) || parsedArray.length === 0 || rawTokens.length === 0) { + return { text: "", consumed: 0, brushColor: null, alphaIncluded: false }; + } + const available = Math.min(rawTokens.length, parsedArray.length); + const channelCount = Math.min(3, available); + const segments = []; + let brushColor = null; + let alphaIncluded = false; + if (channelCount === 1) { + const value = clampChannelValue(parsedArray[0]); + const colorString = value === null ? GRAYSCALE_COLOR : channelColorString(0, value, { grayscale: true }); + segments.push(`\\${colorString}\\${rawTokens[0]}`); + brushColor = value === null ? null : `${value},${value},${value}`; + if (available >= 2) { + const alphaValue = parsedArray[1]; + segments.push(formatAlphaToken(rawTokens[1], alphaValue)); + alphaIncluded = true; + return { + text: segments.join(" "), + consumed: 2, + brushColor, + alphaIncluded + }; + } + return { + text: segments.join(" "), + consumed: 1, + brushColor, + alphaIncluded + }; + } + const channelValues = []; + for (let i2 = 0; i2 < channelCount; i2++) { + const value = clampChannelValue(parsedArray[i2]); + channelValues.push(value === null ? 0 : value); + const channelString = channelColorString(i2, value); + segments.push(`\\${channelString}\\${rawTokens[i2]}`); + } + let consumed = channelCount; + if (channelValues.length === 3) { + brushColor = `${channelValues[0]},${channelValues[1]},${channelValues[2]}`; + } else if (channelValues.length === 2) { + brushColor = `${channelValues[0]},${channelValues[1]},0`; + } + if (available > channelCount) { + const alphaValue = parsedArray[channelCount]; + const alphaToken = rawTokens[channelCount]; + segments.push(formatAlphaToken(alphaToken, alphaValue)); + consumed += 1; + alphaIncluded = true; + } + return { + text: segments.join(" "), + consumed, + brushColor, + alphaIncluded + }; +} +function isFadeColorObject(colorParams) { + return colorParams && typeof colorParams === "object" && !Array.isArray(colorParams) && colorParams.type === "fade"; +} +function highlightColorTokens(colorParams, rawParams = []) { + if (!rawParams || rawParams.length === 0) { + return { text: "", brushColor: null }; + } + const remaining = [...rawParams]; + const segments = []; + let brushColor = null; + let alphaHandled = false; + const pushSegment = (text2, { spaceBefore = true } = {}) => { + if (!text2) return; + segments.push({ text: text2, spaceBefore }); + }; + if (isFadeColorObject(colorParams)) { + const first = remaining.shift(); + if (first) { + pushSegment(colorizeColorName(first), { spaceBefore: false }); + } + if (typeof colorParams.alpha === "number" && remaining.length > 0) { + pushSegment(formatAlphaToken(remaining.shift(), colorParams.alpha)); + alphaHandled = true; + } + } else if (isHexColorToken(remaining[0])) { + const { text: text2, consumed, brushColor: hexColor, alphaIncluded } = colorizeHexToken(remaining[0]); + pushSegment(text2, { spaceBefore: false }); + remaining.splice(0, consumed); + brushColor = hexColor; + alphaHandled = alphaIncluded; + } else if (Array.isArray(colorParams) && colorParams.length > 0 && isNumericLikeToken(remaining[0])) { + const { text: text2, consumed, brushColor: numericColor, alphaIncluded } = colorizeNumericChannels(remaining, colorParams); + pushSegment(text2, { spaceBefore: false }); + remaining.splice(0, consumed); + brushColor = numericColor; + alphaHandled = alphaIncluded; + } else { + const first = remaining.shift(); + if (first) { + pushSegment(colorizeColorName(first), { spaceBefore: false }); + } + } + if (!alphaHandled && remaining.length > 0 && isNumericLikeToken(remaining[0])) { + const alphaToken = remaining.shift(); + const alphaValue = parseAlphaFromToken(alphaToken); + pushSegment(formatAlphaToken(alphaToken, alphaValue)); + alphaHandled = true; + } + remaining.forEach((token) => { + pushSegment(`\\orange\\${token}`); + }); + const text = segments.reduce((acc, seg, index) => { + if (index === 0 || seg.spaceBefore === false) { + return acc + seg.text; + } + return `${acc} ${seg.text}`; + }, ""); + return { text, brushColor }; +} +function getColorTokenHighlight(token) { + if (!token) return "white"; + const cleanToken = token.startsWith('"') && token.endsWith('"') ? token.slice(1, -1) : token; + if (cleanToken.startsWith("#") && cleanToken.length > 1) { + const codepart = cleanToken.substring(1); + if (/^[0-9A-Za-z]{1,8}$/.test(codepart)) { + const isHexColor = /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{4}$|^[0-9A-Fa-f]{6}$|^[0-9A-Fa-f]{8}$/.test(codepart); + if (!isHexColor) { + return "COMPOUND:magenta:orange"; + } + } + } + const lowerToken = cleanToken.toLowerCase(); + if (cssColors2 && cssColors2[lowerToken]) { + const colorValue = cssColors2[lowerToken]; + if (Array.isArray(colorValue) && colorValue.length >= 3) { + const rgbColor = `${colorValue[0]},${colorValue[1]},${colorValue[2]}`; + return rgbColor; + } + } + if (lowerToken.match(/^c\d+$/)) { + const index = parseInt(lowerToken.substring(1)); + if (staticColorMap && staticColorMap[index]) { + const colorValue = staticColorMap[index]; + if (Array.isArray(colorValue) && colorValue.length >= 3) { + const rgbColor = `${colorValue[0]},${colorValue[1]},${colorValue[2]}`; + return rgbColor; + } + } + } + if (lowerToken === "rainbow") { + return "RAINBOW"; + } + if (lowerToken === "zebra") { + return "ZEBRA"; + } + if (lowerToken.startsWith("fade:")) { + return `FADE:${cleanToken}`; + } + return "orange"; +} +function colorizeColorName(colorName) { + if (!colorName) return colorName; + const cleanName = colorName.startsWith('"') && colorName.endsWith('"') ? colorName.slice(1, -1) : colorName; + if (isHexColorToken(cleanName)) { + const parsedHex = parseHexColorToken(cleanName); + if (parsedHex && parsedHex.rgb) { + const [r2, g, b2] = parsedHex.rgb; + const colorValue = `${r2},${g},${b2}`; + return `\\${colorValue}\\${parsedHex.display}`; + } + } + const color3 = getColorTokenHighlight(cleanName); + if (color3 === "RAINBOW" && cleanName === "rainbow") { + const rainbowColors2 = ["red", "orange", "yellow", "lime", "blue", "purple", "magenta"]; + let result = ""; + for (let charIndex = 0; charIndex < cleanName.length; charIndex++) { + const charColor = rainbowColors2[charIndex % rainbowColors2.length]; + result += `\\${charColor}\\${cleanName[charIndex]}`; + } + return result; + } + if (color3 === "ZEBRA" && cleanName === "zebra") { + const zebraColors2 = ["black", "white"]; + let result = ""; + for (let charIndex = 0; charIndex < cleanName.length; charIndex++) { + const charColor = zebraColors2[charIndex % zebraColors2.length]; + result += `\\${charColor}\\${cleanName[charIndex]}`; + } + return result; + } + if (cleanName.startsWith("fade:") && color3 === "mediumseagreen") { + return colorFadeExpression(cleanName); + } + return `\\${color3}\\${cleanName}`; +} +function colorFadeExpression(fadeToken) { + if (!fadeToken.startsWith("fade:")) { + return fadeToken; + } + const parts = fadeToken.split(":"); + if (parts.length < 2) { + return fadeToken; + } + let isNeat = false; + let colorPart = parts[1]; + let direction = parts[2]; + if (parts[1] === "neat" && parts[2]) { + isNeat = true; + colorPart = parts[2]; + direction = parts[3]; + } else if (parts[2] === "neat") { + isNeat = true; + direction = void 0; + } else if (parts[3] === "neat") { + isNeat = true; + direction = parts[2]; + } else if (parts.includes("neat")) { + isNeat = true; + const filteredParts = parts.filter((p) => p !== "neat"); + if (filteredParts.length >= 2) { + colorPart = filteredParts[1]; + direction = filteredParts[2]; + } + } + const colorNames = colorPart.split("-"); + let result = "\\mediumseagreen\\fade\\lime\\:"; + if (isNeat) { + result += "\\cyan\\neat\\lime\\:"; + } + for (let i2 = 0; i2 < colorNames.length; i2++) { + const colorName = colorNames[i2]; + let colorValue = "white"; + if (cssColors2 && cssColors2[colorName]) { + const rgbColor = cssColors2[colorName]; + if (Array.isArray(rgbColor) && rgbColor.length >= 3) { + colorValue = `${rgbColor[0]},${rgbColor[1]},${rgbColor[2]}`; + } + } else if (colorName.match(/^c\d+$/)) { + const index = parseInt(colorName.substring(1)); + if (staticColorMap && staticColorMap[index]) { + const rgbColor = staticColorMap[index]; + if (Array.isArray(rgbColor) && rgbColor.length >= 3) { + colorValue = `${rgbColor[0]},${rgbColor[1]},${rgbColor[2]}`; + } + } + } else if (colorName === "rainbow") { + colorValue = "RAINBOW"; + } else if (colorName === "zebra") { + colorValue = "ZEBRA"; + } + if (colorValue === "RAINBOW") { + const rainbowColors2 = ["red", "orange", "yellow", "lime", "blue", "purple", "magenta"]; + for (let charIndex = 0; charIndex < colorName.length; charIndex++) { + const charColor = rainbowColors2[charIndex % rainbowColors2.length]; + result += `\\${charColor}\\${colorName[charIndex]}`; + } + } else if (colorValue === "ZEBRA") { + const zebraColors2 = ["black", "white"]; + for (let charIndex = 0; charIndex < colorName.length; charIndex++) { + const charColor = zebraColors2[charIndex % zebraColors2.length]; + result += `\\${charColor}\\${colorName[charIndex]}`; + } + } else { + result += `\\${colorValue}\\${colorName}`; + } + if (i2 < colorNames.length - 1) { + result += "\\mediumseagreen\\-"; + } + } + if (direction) { + result += "\\lime\\:"; + const numericAngle = parseFloat(direction); + if (!isNaN(numericAngle)) { + result += `\\yellow\\${direction}`; + } else { + result += `\\cyan\\${direction}`; + } + } + return result; +} +function generateNopaintHUDLabel(brushName, colorParams, rawParams, modifiers = "") { + const { text: colorSection, brushColor } = highlightColorTokens(colorParams, rawParams); + const brushColorCode = brushColor || "white"; + let label = `\\${brushColorCode}\\${brushName}`; + if (modifiers) { + const parts = modifiers.split(":"); + let coloredMods = ""; + for (const part of parts) { + if (part === "") { + coloredMods += "\\gray\\:"; + } else { + coloredMods += `\\yellow\\${part}`; + } + } + label += coloredMods; + } + if (colorSection) { + label += ` ${colorSection}`; + } else if (rawParams && rawParams.length > 0) { + const fallback = rawParams.map((token) => `\\orange\\${token}`).join(" "); + label += ` ${fallback}`; + } + return label; +} + +// public/aesthetic.computer/systems/nopaint.mjs +function stripColorCodes3(str7) { + if (!str7) return ""; + return str7.replace(/\\[^\\]*\\/g, ""); +} +var state = "idle"; +var previousState = "idle"; +var bakeFlashTime = 0; +var bakeFlashDuration = 300; +var needsPaintRef = null; +var animationId = null; +var cursor = { x: 0, y: 0 }; +var sessionId = null; +var logBuffer = []; +var LOG_BUFFER_SIZE = 100; +var currentStrokePointCount = 0; +function initSessionLogging(api) { + if (!sessionId) { + sessionId = `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; + log2(api, "SESSION_START", { sessionId, timestamp: Date.now(), userAgent: navigator.userAgent }); + } +} +function log2(api, event, data = {}) { + const timestamp2 = Date.now(); + const logEntry = { + timestamp: timestamp2, + sessionId, + event, + data: { ...data } + }; + logBuffer.push(logEntry); + if (logBuffer.length > LOG_BUFFER_SIZE) { + logBuffer.shift(); + } + const device = data.device || "unknown"; + const filename = `${device}_touch_debug.log`; + try { + api.net.log(`/tmp/dev-logs/${filename}`, JSON.stringify(logEntry)); + } catch (error) { + console.error("Failed to send log:", error); + } +} +function nopaint_boot({ + system: system2, + store: store2, + nopaint: nopaint2, + screen: screen2, + wipe, + api, + params, + colon, + hud, + num, + painting: painting2 +}) { + cursor.x = screen2.width / 2; + cursor.y = screen2.height / 2; + nopaint_adjust(api); + initSessionLogging(api); + if (!system2.painting) { + console.warn("\u{1F97E} nopaint_boot: system.painting is undefined, skipping nopaint initialization"); + return; + } + system2.nopaint.buffer = painting2( + system2.painting.width, + system2.painting.height, + (p) => { + p.wipe(255, 255, 255, 0); + } + ); + if (params && num) { + system2.nopaint.color = num.parseColor(params); + const modifiers = colon && colon.length > 0 ? `:${colon.join(":")}` : ""; + const brushName = api.slug || "brush"; + const pieceName = brushName.split("~")[0].split(":")[0]; + const label = generateNopaintHUDLabel(pieceName, system2.nopaint.color, params, modifiers); + if (typeof window !== "undefined" && window.currentHUDTxt !== void 0) { + window.currentHUDTxt = label; + window.currentHUDPlainTxt = stripColorCodes3(label); + } else if (hud && hud.label) { + hud.label(label); + } + } + system2.nopaint.present(api); +} +function nopaint_is(stateQuery) { + return state === stateQuery; +} +function nopaint_cancelStroke() { + state = "idle"; +} +function nopaint_triggerBakeFlash() { + bakeFlashTime = performance.now(); + if (animationId) { + cancelAnimationFrame(animationId); + } + const animateFlash = () => { + const currentTime = performance.now(); + const timeSinceBake = currentTime - bakeFlashTime; + if (timeSinceBake < bakeFlashDuration) { + if (needsPaintRef) { + needsPaintRef(); + } + animationId = requestAnimationFrame(animateFlash); + } else { + animationId = null; + } + }; + animationId = requestAnimationFrame(animateFlash); +} +function nopaint_act({ + event: e2, + download, + screen: screen2, + system: system2, + painting: painting2, + loading: loading2, + store: store2, + pens, + pen, + api, + num, + jump: jump2, + debug: debug4 +}) { + if (system2?.nopaint?.robotActive && e2?.device && e2.device !== "robot") { + const penEventNames = ["touch", "lift", "draw", "move"]; + const isPenEvent = penEventNames.some((name) => e2.is?.(name) || e2.is?.(`${name}:1`) || e2.is?.(`${name}:2`)); + if (isPenEvent) return; + } + if (e2.device && (e2.device === "touch" || e2.device === "pen" || e2.device === "robot" || e2.device !== "mouse")) { + log2(api, "RAW_EVENT", { + device: e2.device, + eventType: e2.type || "unknown", + touchState: e2.is ? `touch:${e2.is("touch:1") ? "1" : e2.is("touch:2") ? "2" : "none"}` : "no-is-method", + liftState: e2.is ? `lift:${e2.is("lift:1") ? "1" : e2.is("lift:2") ? "2" : "none"}` : "no-is-method", + drawState: e2.is ? `draw:${e2.is("draw:1") ? "1" : "none"}` : "no-is-method", + rawX: e2.x, + rawY: e2.y, + currentPaintingState: nopaint_is("painting"), + timestamp: num.timestamp() + }); + } + if (e2.is && (e2.is("lift:1") || e2.is("lift:2"))) { + } + if (e2.is("touch:1")) { + const timestamp2 = performance.now(); + state = "painting"; + system2.nopaint.updateBrush(api, "touch"); + system2.nopaint.finalDragBox = null; + system2.nopaint.finalStartDrag = null; + system2.nopaint.finalEndPoint = null; + currentStrokePointCount = 0; + log2(api, "TOUCH_START", { + device: e2.device, + rawX: e2.x, + rawY: e2.y, + brushX: system2.nopaint.brush.x, + brushY: system2.nopaint.brush.y, + state, + timestamp: num.timestamp() + }); + system2.nopaint.gestureRecord.push([ + num.timestamp(), + "touch:1", + system2.nopaint.brush.x, + system2.nopaint.brush.y + ]); + } + if (nopaint_is("painting") && e2.is("draw:1")) { + system2.nopaint.updateBrush(api, "draw"); + const rec = system2.nopaint.gestureRecord; + const lastRecord = rec.length > 0 ? rec[rec.length - 1] : null; + const shouldAddPoint = !lastRecord || system2.nopaint.brush.x !== lastRecord[2] || system2.nopaint.brush.y !== lastRecord[3]; + if (shouldAddPoint) { + currentStrokePointCount++; + log2(api, "DRAW_POINT", { + device: e2.device, + rawX: e2.x, + rawY: e2.y, + brushX: system2.nopaint.brush.x, + brushY: system2.nopaint.brush.y, + state, + pointCount: currentStrokePointCount, + timestamp: num.timestamp() + }); + rec.push([ + num.timestamp(), + "draw:1", + system2.nopaint.brush.x, + system2.nopaint.brush.y + ]); + } + } + if (nopaint_is("painting") && e2.is("lift:1") && (e2.device === "mouse" || e2.device === "pen" || e2.device === "touch" || e2.device === "robot")) { + const timestamp2 = performance.now(); + state = "idle"; + if (!system2.nopaint.bakeOnLeave) system2.nopaint.needsBake = true; + api.needsPaint(); + log2(api, "TOUCH_END", { + device: e2.device, + rawX: e2.x, + rawY: e2.y, + brushX: system2.nopaint.brush.x, + brushY: system2.nopaint.brush.y, + previousState: "painting", + newState: state, + gestureLength: currentStrokePointCount + 1, + // +1 to include the final point + timestamp: num.timestamp() + }); + system2.nopaint.gestureRecord.push([ + num.timestamp(), + "lift:1", + system2.nopaint.brush.x, + system2.nopaint.brush.y + ]); + if (system2.nopaint.brush && system2.nopaint.brush.dragBox) { + system2.nopaint.finalDragBox = { + x: system2.nopaint.brush.dragBox.x, + y: system2.nopaint.brush.dragBox.y, + w: system2.nopaint.brush.dragBox.w, + h: system2.nopaint.brush.dragBox.h + }; + } + if (system2.nopaint.brush) { + system2.nopaint.finalEndPoint = { + x: system2.nopaint.brush.x, + y: system2.nopaint.brush.y + }; + } + if (system2.nopaint.startDrag) { + system2.nopaint.finalStartDrag = { + x: system2.nopaint.startDrag.x, + y: system2.nopaint.startDrag.y + }; + } + system2.nopaint.brush = null; + system2.nopaint.startDrag = null; + } + if (e2.is("move")) { + cursor.x = pen.x; + cursor.y = pen.y; + if (nopaint_is("painting")) { + system2.nopaint.updateBrush(api, "move"); + } + if (nopaint_is("painting") || system2.nopaint.needsBake || system2.nopaint.needsPresent) { + api.needsPaint(); + } + } + if (e2.is("keyboard:down:arrowup")) { + system2.nopaint.zoom(api, "in", cursor); + system2.nopaint.present(api); + if (system2.nopaint.brush?.dragBox) { + api.needsPaint(); + } + } + if (e2.is("keyboard:down:arrowdown")) { + system2.nopaint.zoom(api, "out", cursor); + system2.nopaint.present(api); + if (system2.nopaint.brush?.dragBox) { + api.needsPaint(); + } + } + if (!nopaint_is("panning") && (e2.is("keyboard:down:shift") || (e2.is("touch:2") || e2.is("touch:1")) && pens().length === 2)) { + previousState = state; + state = "panning"; + } + if (nopaint_is("panning") && (e2.is("move") && e2.device === "mouse" || e2.is("draw"))) { + system2.nopaint.translate(api, e2.delta.x, e2.delta.y); + const p = pens(); + if (p.length === 2) { + } + system2.nopaint.present(api); + api.needsPaint(); + } + if (nopaint_is("panning") && (e2.is("keyboard:up:shift") || e2.is("lift:2") || e2.is("lift:1") || e2.is("keyboard") && !e2.shift)) { + if ((e2.is("lift:1") || e2.is("lift:2")) && previousState === "painting") { + state = "idle"; + } else { + state = previousState; + } + previousState = "idle"; + system2.nopaint.storeTransform(store2, system2); + } + if (nopaint_is("panning") && (e2.is("keyboard:down:meta") || e2.is("touch:3"))) { + state = previousState; + previousState = "idle"; + system2.nopaint.resetTransform(api); + system2.nopaint.present(api); + } + if (e2.is("reframed")) { + nopaint_adjust(api); + system2.nopaint.present(api); + } +} +function nopaint_adjust(api, size = null, slug = "resize") { + const { screen: screen2, system: sys, painting: painting2, store: store2, dark, theme } = api; + if (!size && store2["painting:resolution-lock"] === true) return; + if (!size && (sys.nopaint.translation.x !== 0 || sys.nopaint.translation.y !== 0)) { + return; + } + let resizing = false; + if (!size) { + if (sys.nopaint.undo.paintings.length === 0) { + size = { w: screen2.width, h: screen2.height }; + } else { + size = { + w: Math.max(screen2.width, sys.painting?.width || 0), + h: Math.max(screen2.height, sys.painting?.height || 0) + }; + } + resizing = true; + } + if (size || !sys.painting) { + let width2, height2; + if (size.w && size.h) { + if (typeof size.w === "string") { + width2 = size.w.endsWith("x") ? parseFloat(size.w.slice(0, -1)) * (sys.painting?.width || screen2.width) : parseInt(size.w); + } else { + width2 = size.w; + } + if (typeof size.h === "string") { + height2 = size.h.endsWith("x") ? parseFloat(size.h.slice(0, -1)) * (sys.painting?.height || screen2.height) : parseInt(size.h); + } else { + height2 = size.h; + } + } else { + width2 = screen2.width; + height2 = screen2.height; + } + if (isNaN(width2) || isNaN(height2)) return false; + const savedPan = api.graph?.savepan ? { x: api.graph.panTranslation?.x || 0, y: api.graph.panTranslation?.y || 0 } : null; + if (api.graph?.unpan) api.graph.unpan(); + sys.painting = painting2(width2, height2, (p) => { + if (size?.scale) { + p.paste(sys.painting, 0, 0, { width: width2, height: height2 }); + } else { + p.wipe(theme[dark ? "dark" : "light"].wipeNum); + const isNewPainting = slug && (slug === "new" || slug.startsWith("new~")); + if (!isNewPainting && sys.painting) { + p.paste(sys.painting); + } + } + }); + store2["painting"] = { + width: sys.painting.width, + height: sys.painting.height, + pixels: sys.painting.pixels + }; + if (!resizing) sys.nopaint.addUndoPainting(sys.painting, slug); + } + if (size && !resizing) { + store2["painting:resolution-lock"] = true; + store2.persist("painting:resolution-lock", "local:db"); + store2.persist("painting", "local:db"); + sys.nopaint.resetTransform({ system: sys, screen: screen2 }); + sys.nopaint.storeTransform(store2, sys); + } + return true; +} +function nopaint_renderPerfHUD({ + ink: ink3, + write, + box: box2, + screen: screen2, + pen, + system: system2, + nopaintPerf: nopaintPerf2 +}) { + if (!nopaintPerf2 || !ink3 || !write || !box2) return; + ink3("black"); + if (needsPaintRef) { + needsPaintRef(); + } + const hudWidth = 90; + const hudHeight = 80; + const x = screen2.width - hudWidth - 2; + const y = 2; + const currentTime = performance.now(); + const timeSinceBake = currentTime - bakeFlashTime; + const isFlashing = timeSinceBake < bakeFlashDuration; + if (isFlashing) { + const flashIntensity = Math.max(0, 1 - timeSinceBake / bakeFlashDuration); + const flashAlpha = Math.floor(100 + flashIntensity * 155); + ink3(255, 255, 200, flashAlpha); + } else { + ink3(0, 0, 0, 200); + } + box2(x - 1, y - 1, hudWidth + 2, hudHeight + 2, "fill"); + if (isFlashing) { + const flashIntensity = Math.max(0, 1 - timeSinceBake / bakeFlashDuration); + const flashColor = Math.floor(100 + flashIntensity * 155); + ink3(flashColor, 255, flashColor, 255); + } else { + ink3(100, 255, 100, 255); + } + box2(x - 1, y - 1, hudWidth + 2, hudHeight + 2, "outline"); + let lineY = y + 1; + const lineHeight = 8; + ink3(255, 255, 255); + write("NOPAINT PERF", { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight + 2; + if (pen) { + ink3(100, 200, 255); + const penX = typeof pen.x === "number" ? pen.x : 0; + const penY = typeof pen.y === "number" ? pen.y : 0; + write(`X:${penX.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + ink3(100, 200, 255); + write(`Y:${penY.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + if (pen.dragBox && typeof pen.dragBox.x === "number" && typeof pen.dragBox.y === "number") { + ink3(255, 100, 200); + write(`DRG X:${pen.dragBox.x.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + write(`DRG Y:${pen.dragBox.y.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + if (typeof pen.dragBox.w === "number") { + write(`DRG W:${pen.dragBox.w.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + } + if (typeof pen.dragBox.h === "number") { + write(`DRG H:${pen.dragBox.h.toFixed(1)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + } + } + if (pen.pressure !== void 0 && typeof pen.pressure === "number") { + ink3(150, 150, 255); + write(`PRESS:${pen.pressure.toFixed(2)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + } + } else { + ink3(255, 0, 0); + write("NO PEN DATA", { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + } + if (system2?.nopaint) { + ink3(255, 255, 0); + write(`STATE:${state}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + ink3(200, 200, 0); + write(`PREV:${previousState}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + const isPainting = nopaint_is("painting"); + ink3(isPainting ? [0, 255, 0] : [255, 0, 0]); + write(`PAINT:${isPainting ? "YES" : "NO"}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + lineY += lineHeight; + const now = performance.now(); + ink3(128, 128, 128); + write(`TIME:${Math.floor(now % 1e4)}`, { x, y: lineY }, void 0, void 0, false, "MatrixChunky8"); + } +} + +// public/aesthetic.computer/systems/prompt-system.mjs +var conversation; +var input; +var abort; +var messageComplete = true; +var processing = false; +var thinking = false; +var cancel; +function setThinking($, value) { + thinking = value; + if ($?.system?.prompt) $.system.prompt.thinking = value; + $?.needsPaint?.(); +} +function playThinkingMelody($) { + const notes = [440, 554, 659]; + notes.forEach((tone, i2) => { + setTimeout(() => { + $.sound?.synth?.({ + type: "sine", + tone, + attack: 0.01, + decay: 0.92, + volume: 0.18, + duration: 0.08 + }); + }, i2 * 90); + }); +} +async function prompt_boot($, { prompt, program, hint, forgetful, memory, gutterMax, lineSpacing }, reply, halt, scheme, wrap2, copied, activated) { + messageComplete = true; + processing = false; + conversation = new Conversation($.store, $.slug, forgetful, memory); + const messages = []; + if (messages.length > 0) { + prompt = messages[messages.length - 1].text; + } else { + prompt = prompt?.replaceAll("@", $.handle() || "pal"); + } + input = new $.ui.TextInput( + $, + prompt, + async (text) => { + const exits = ["q", "quit", "leave", "exit", "forget", "bye"]; + if (exits.indexOf(text) !== -1 && $.slug !== "prompt") { + await conversation.forget(); + input.blank(); + if ($.slug.indexOf("botce") > -1) { + return $.net.refresh(); + } else { + return $.jump("prompt"); + } + } + input.lock = true; + $.send({ type: "keyboard:lock" }); + input.enter.btn.disabled = true; + input.paste.btn.disabled = true; + input.paste.btn.removeFromDom($, "paste"); + input.canType = false; + input._preventDeactivation = true; + let halted = await halt?.($, text); + if (!$.leaving()) { + input.lock = false; + $.send({ type: "keyboard:unlock" }); + } + if (halted) { + messageComplete = true; + if (halted.left) { + return; + } + if ($.leaving()) { + return; + } + if (halted.replied) { + input.lock = false; + $.send({ type: "keyboard:unlock" }); + input.runnable = false; + input.bakePrintedText(); + input.showButton($); + $.needsPaint(); + $.send({ type: "keyboard:close" }); + return; + } + reply?.(input.text); + input.bakePrintedText(); + input.runnable = false; + input.showButton($); + $.needsPaint(); + input.canType = true; + setTimeout(() => { + input._preventDeactivation = false; + }, 200); + return; + } + processing = input.lock = true; + $.send({ type: "keyboard:close" }); + $.send({ type: "keyboard:lock" }); + let firstAnd = true; + input.submittedText = ""; + cancel = function() { + setThinking($, false); + abort?.(); + }; + setThinking($, true); + playThinkingMelody($); + abort = conversation.ask( + { prompt: text, program, hint }, + function and(msg) { + setThinking($, false); + msg = msg.replace(/[\u2018\u2019\u201C\u201D]/g, (match) => { + if (match === "\u2018" || match === "\u2019") { + return "'"; + } else { + return '"'; + } + }); + msg = msg.replace(/—/g, "-"); + if (firstAnd) input.submittedText = input.text; + input.text = firstAnd ? input.text + "\n\n" + msg : input.text + msg; + input.snap(); + firstAnd = false; + }, + function done() { + setThinking($, false); + messageComplete = true; + processing = input.lock = false; + $.send({ type: "keyboard:unlock" }); + reply?.(input.text, input); + input.bakePrintedText(); + input.clearUserText(); + $.send({ type: "keyboard:text:replace", content: { text: "" } }); + input.runnable = false; + input.showButton($); + $.needsPaint(); + $.sound.synth({ + type: "sine", + tone: 500, + attack: 0.1, + decay: 0.96, + volume: 0.65, + duration: 0.05 + }); + }, + function fail() { + setThinking($, false); + input.activate(input); + input.text = ""; + input.snap(); + $.notice("NETWORK FAILURE", ["yellow", "red"]); + $.send({ type: "keyboard:text:replace", content: { text: "" } }); + $.needsPaint(); + reply?.(input.text); + input.submittedText = ""; + processing = input.lock = false; + $.send({ type: "keyboard:unlock" }); + $.send({ type: "keyboard:open" }); + input.runnable = false; + } + ); + }, + { + // autolock: false, + wrap: wrap2, + scheme, + copied, + activated, + didReset: () => { + messageComplete = true; + }, + gutterMax, + lineSpacing + } + ); + $.needsPaint(); + $.system.prompt = { input, convo: conversation, thinking: false }; +} +function prompt_sim($) { + input?.sim($); +} +function prompt_paint($) { + return input?.paint($); +} +function prompt_leave() { + abort?.(); +} +function prompt_act($) { + const { event: e2, slug } = $; + if (!messageComplete && processing && e2.is("keyboard:down")) { + cancel(); + } + let inputHandled = false; + if (e2.is("ui:cancel-interactions") || e2.is("move") || e2.is("draw") || e2.is("touch") || e2.is("lift") || e2.is("focus") || e2.is("reframed") || e2.is("defocus") || e2.is("keyboard:open") || e2.is("keyboard:close") || // e.is("pasted:text") || + e2.is("prompt:text:replace") || e2.is("prompt:text:select") || e2.is("prompt:text:cursor") || e2.of?.("clipboard")) { + input?.act($); + inputHandled = true; + } + if (!messageComplete && !processing && !inputHandled) input?.act($); + if (messageComplete && e2.is("keyboard:down")) { + if (!inputHandled) input?.act($); + messageComplete = false; + } +} + +// public/aesthetic.computer/systems/world.mjs +var me; +var kids; +var world; +var cam; +var input2; +var inputBtn; +var server; +var spectating = false; +var spectatingKid; +var map2 = false; +var { keys, values } = Object; +async function world_boot({ + api, + help, + handle: handle2, + screen: screen2, + ui, + send: send2, + net: { socket: socket2 }, + sound: sound2, + store: store2, + piece, + system: system2, + num: { number: number2 } +}, worldData) { + kids = {}; + world = new World(worldData?.width, worldData?.height); + let pos; + if (system2.world.teleported === false) { + pos = await store2.retrieve(`world:${piece}:pos`) || { + x: void 0, + y: void 0 + }; + } else { + pos = { ...system2.world.telepos }; + } + console.log("\u{1F5FA}\uFE0F Loaded position:", pos); + me = new Kid( + handle2(), + { + x: number2(pos.x) ? pos.x : world.size.width / 2, + y: number2(pos.y) ? pos.y : world.size.height / 2 + }, + help.choose("meh", "smile", "frown") + ); + system2.world.me = me; + system2.world.size = world.size; + cam = new Cam( + screen2.width / 2 - me.pos.x, + screen2.height / 2 - me.pos.y, + me.pos + ); + const scheme = { + dark: { + text: 255, + background: [0, 100], + block: 255, + highlight: 0, + guideline: 255 + } + }; + input2 = new ui.TextInput( + api, + "...", + async (text) => { + if (text === "smile" || text === "frown" || text === "sad" || text === "meh") { + if (text === "sad") text = "frown"; + me.mood(text); + server.send(`world:${piece}:mood`, me.face); + } else if (text === "red" || text === "yellow" || text === "orange" || text === "black" || text === "brown" || text === "purple" || text === "pink" || text === "blue" || text === "lime" || text === "white") { + me.tint(text); + server.send(`world:${piece}:tint`, me.color); + } else if (text === "show") { + if (system2.painting) { + console.log("\u{1F5BC}\uFE0F Showing:", system2.painting); + server.send( + `world:${piece}:show`, + help.serializePainting(system2.painting) + ); + me.showing = system2.painting; + } else { + console.log("\u274C\u{1F5BC}\uFE0F Nothing to show."); + } + } else if (text === "hide") { + server.send(`world:${piece}:hide`); + me.showing = null; + } else if (text === "map") { + map2 = !map2; + } else { + server.send(`world:${piece}:write`, text); + } + input2.text = ""; + input2.showBlink = false; + input2.mute = true; + send2({ type: "keyboard:close" }); + }, + { + // autolock: false, + // wrap, + scheme, + // copied, + // activated, + // didReset: () => { + // messageComplete = true; + // }, + // gutterMax, + // lineSpacing, + hideGutter: true, + closeOnEmptyEnter: true + } + ); + send2({ type: "keyboard:soft-lock" }); + inputBtn = new ui.Button(); + server = socket2((id, type, content) => { + if (type === "left") { + console.log("\uFE0F\u270C\uFE0F Goodbye:", id, kids[id]?.handle); + delete kids[id]; + return; + } + if (type === "joined") { + console.log("\uFE0F\u{1F44B} Hello:", id, type, content); + return; + } + if (type.startsWith("connected")) { + if (me.handle === "?") me.handle = `nub${id}`; + server.send(`world:${piece}:join`, { + handle: me.handle, + pos: me.pos, + face: me.face, + showing: help.serializePainting(me.showing), + ghost: me.ghost + }); + console.log("\u{1FAB4} Welcome:", me.handle, `(${id})`); + return; + } + if (type === `world:${piece}:ghost`) { + if (kids[id]) { + kids[id].ghost = true; + console.log("\u{1F47B} Ghosted:", kids[id].handle); + } + return; + } + if (type === `world:${piece}:kick`) { + delete kids[id]; + return; + } + if (type === `world:${piece}:list`) { + console.log(`\u{1F5DE}\uFE0F Got list of all '${piece}' clients...`, content); + keys(content).forEach((key) => { + if (!kids[key]) { + const data = content[key]; + if (content[key].handle.startsWith("@") && content[key].handle === me.handle && content[key].ghost === false) { + spectating = true; + spectatingKid = key; + console.log("\u{1F453} Spectating:", spectatingKid); + } + console.log("\u{1F9D2} Joined:", data.handle || id, data); + kids[key] = new Kid( + data.handle || `nub${id}`, + data.pos, + data.face, + true + ); + if (data.ghost) kids[key].ghost = data.ghost; + if (data.showing) + kids[key].showing = help.deserializePainting(data.showing); + } + }); + return; + } + if (type === `world:${piece}:join`) { + console.log("\u{1F5FA}\uFE0F Joining world:", type, content); + if (!kids[id]) { + if (content.handle.startsWith("@")) { + if (content.handle === me.handle) { + console.log("\u{1F453} Spectator joined:", content); + return; + } else { + keys(kids).forEach((key) => { + const kid = kids[key]; + console.log(kid, content.handle, kid.handle); + if (content.handle === kid.handle && kid.ghost) { + console.log("\u{1F47B} Unghosting:", kid.handle); + delete kids[key]; + } + }); + } + } + kids[id] = new Kid( + content.handle || `nub${id}`, + content.pos, + content.face, + true + ); + if (content.ghost) kids[id].ghost = true; + if (content.showing) + kids[id].showing = help.deserializePainting(content.showing); + } + return; + } + if (type === `world:${piece}:tint`) { + const kid = kids[id]; + if (kid) kid.tint(content); + return; + } + if (type === `world:${piece}:mood`) { + const kid = kids[id]; + if (kid) kid.mood(content); + return; + } + if (type === `world:${piece}:slug`) { + const kid = kids[id]; + if (kid) kid.slug(content.slug); + return; + } + if (type === `world:${piece}:write`) { + console.log("\u{1FAA7} Write from:", id, "You:", server.id, "Text:", content); + if (id === server.id) { + me.write(content); + return; + } + const kid = kids[id]; + if (kid) { + kid.write(content); + sound2.synth({ + type: "sine", + tone: 950, + attack: 0.1, + decay: 0.96, + volume: 0.65, + duration: 0.015 + }); + } + return; + } + if (type === `world:${piece}:write:clear`) { + const kid = kids[id]; + if (kid) kid.write(null); + return; + } + if (type === `world:${piece}:move`) { + const kid = kids[id]; + if (kid) kid.netPos = content.pos; + return; + } + if (type === `world:${piece}:show`) { + const kid = kids[id]; + if (kid) kid.showing = help.deserializePainting(content); + return; + } + if (type === `world:${piece}:hide`) { + const kid = kids[id]; + if (kid) kid.showing = null; + return; + } + }); +} +function world_paint({ api, ink: ink3, pan: pan2, unpan: unpan2, pen, screen: screen2, leaving: leaving2, hud, typeface }, paint2, curtain) { + pan2(cam.x, cam.y); + paint2?.(api, world); + if (!spectating) { + inputBtn.paint((btn) => { + ink3("white", btn.down && btn.over ? 128 : 64).circle( + me.pos.x, + me.pos.y, + btn.box.w / 2, + true + ); + }); + } + if (!spectating) me.paint(api); + unpan2(); + keys(kids).forEach((key) => { + pan2(cam.x, cam.y); + const kid = kids[key]; + kid.paint(api); + unpan2(); + }); + [me, ...values(kids)].forEach((kid, i2) => { + const row = i2 * 12; + const handleText = i2 === 0 ? `you are ${kid.handle}` : kid.handle; + const kidOnScreen = i2 !== 0 && onScreen(kid, world, cam, screen2); + const pos = kidOnScreen ? { + x: kid.pos.x - handleText.length / 2 * typeface.blockWidth, + y: kid.pos.y + 22 + } : { x: 6, y: 21 + row }; + if (kidOnScreen) pan2(cam.x, cam.y); + ink3("black").write(handleText, { x: pos.x + 1, y: pos.y + 1 }); + ink3(me === kid ? "yellow" : kid.color).write(handleText, pos); + if (kidOnScreen) unpan2(); + if (i2 === 0) + ink3(kid.color).write(handleText.replace(kid.handle, "").trim(), { + x: 6, + y: 21 + row + }); + }); + const statusColor = hud.currentStatusColor(); + if (typeof statusColor === "string" && statusColor !== "lime") { + ink3(statusColor, 128).box(0, 0, screen2.width, screen2.height); + } + const l2 = me.leash; + if (l2.start) { + if (pen) ink3(0, 255, 0, 90).line(l2.start.x, l2.start.y, pen.x, pen.y); + ink3(l2.len > l2.deadzone ? "yellow" : "red").line( + l2.start.x, + l2.start.y, + l2.start.x + me.leash.x, + l2.start.y + me.leash.y + ); + } + curtain?.(api); + if (input2.canType && !leaving2()) { + input2.paint(api, false, { + x: 0, + y: 18, + width: screen2.width, + height: screen2.height - 18 + }); + } + if (map2) { + const worldAspect = world.width / world.height; + const screenAspect = screen2.width / screen2.height; + const scale7 = (worldAspect > screenAspect ? screen2.width / world.width : screen2.height / world.height) * 0.5; + const bw = world.width * scale7, bh = world.height * scale7; + const x = screen2.width / 2 - bw / 2, y = screen2.height / 2 - bh / 2; + ink3("white", 96).box(x, y, bw, bh); + ink3("red", 64).box( + x + cam.dolly.x * scale7, + y + cam.dolly.y * scale7, + screen2.width * scale7, + screen2.height * scale7, + "center" + ); + [me, ...values(kids)].forEach((kid, i2) => { + ink3(kid.color).box(x + kid.pos.x * 0.25 - 1, y + kid.pos.y * 0.25 - 1, 3); + }); + ink3("orange").write( + `kid x:${me.pos.x.toFixed(1)} y:${me.pos.y.toFixed(1)}`, + { x: 6, bottom: 4 + 12 } + ); + ink3("pink").write( + `cam x:${cam.dolly.x.toFixed(1)} y:${cam.dolly.y.toFixed(1)}`, + { x: 6, bottom: 4 } + ); + } + if (spectating) ink3("red").write("Spectating", { x: 6, y: 32 }); +} +function world_act({ event: e2, api, send: send2, jump: jump2, hud, piece, screen: screen2 }) { + if (e2.is("reframed")) { + cam.x = screen2.width / 2 - cam.dolly.x; + cam.y = screen2.height / 2 - cam.dolly.y; + } + if (spectating) return; + if (!input2.canType) { + me.act(api); + inputBtn.act(e2, { + down: () => { + send2({ type: "keyboard:enabled" }); + send2({ type: "keyboard:soft-unlock" }); + }, + push: () => { + me.off(); + send2({ type: "keyboard:soft-lock" }); + }, + cancel: () => { + send2({ type: "keyboard:soft-lock" }); + }, + rollout: () => { + send2({ type: "keyboard:soft-lock" }); + }, + rollover: () => { + if (inputBtn.down) send2({ type: "keyboard:soft-unlock" }); + } + }); + if (!input2.canType && e2.is("keyboard:down:enter")) { + send2({ type: "keyboard:open" }); + me.off(); + } + if (e2.is("keyboard:down:escape") || e2.is("keyboard:down:`")) jump2("prompt"); + if (e2.is("keyboard:down:backspace")) { + jump2(`prompt~${hud.currentLabel().plainText || piece}`)(() => { + send2({ type: "keyboard:open" }); + }); + } + } + if (input2.canType && (e2.is("keyboard:down:`") || e2.is("keyboard:down:escape") || input2.text.trim().length === 0 && e2.is("keyboard:down:enter") && !e2.shift)) { + send2({ type: "keyboard:close" }); + } + if (input2.canType && e2.is("lift") && !input2.shifting && !input2.paste.down) { + send2({ type: "keyboard:close" }); + } + if (e2.is("keyboard:open") || e2.is("keyboard:close") || input2.canType && !e2.is("keyboard:down:escape")) { + input2.act(api); + } +} +function world_sim({ api, piece, geo, simCount: simCount2, screen: screen2, num }) { + keys(kids).forEach((key) => kids[key].sim(api)); + if (!spectating) { + me.sim(api, function net(kid) { + if (simCount2 % 4n === 0n) { + if (kid.pos) server.send(`world:${piece}:move`, kid); + } + if (kid.clear) server.send(`world:${piece}:write:clear`, kid); + }); + cam.dolly.x = num.lerp(cam.dolly.x, me.pos.x, 0.035); + cam.dolly.y = num.lerp(cam.dolly.y, me.pos.y, 0.035); + cam.x = screen2.width / 2 - cam.dolly.x; + cam.y = screen2.height / 2 - cam.dolly.y; + input2.sim(api); + const btnPos = me.screenPos(cam, world); + inputBtn.box = new geo.Box( + btnPos.x - me.size, + btnPos.y - me.size, + me.size * 2 + ); + } else if (spectating && kids[spectatingKid]) { + const sk = kids[spectatingKid]; + cam.dolly.x = num.lerp(cam.dolly.x, sk.pos.x, 0.035); + cam.dolly.y = num.lerp(cam.dolly.y, sk.pos.y, 0.035); + cam.x = screen2.width / 2 - cam.dolly.x; + cam.y = screen2.height / 2 - cam.dolly.y; + } +} +function world_leave({ system: system2, store: store2, piece }) { + console.log("\u{1F5FA}\uFE0F Leaving world, storing position."); + server.send(`world:${piece}:persist`, { handle: me.handle, pos: me.pos }); + store2[`world:${piece}:pos`] = me.pos; + store2.persist(`world:${piece}:pos`); + delete system2.world.size; + delete system2.world.me; +} +function coversScreen(screen2) { + return cam.x <= 0 && cam.y <= 0 && cam.x + world.size.width > screen2.width && cam.y + world.size.height > screen2.height; +} +var Kid = class { + handle; + net; + pos = { x: 0, y: 0 }; + netPos; + size = 16; + leash = { x: 0, y: 0, len: 0, max: 12, deadzone: 8 }; + face = "meh"; + color = "white"; + #keys = { U: false, D: false, L: false, R: false }; + message; + showing; + // Contains a buffer to be showing. + ghost = false; + #messageDuration; + #messageProgress = 0; + constructor(handle2 = "?", pos = this.pos, face, net = false) { + this.handle = handle2; + console.log("\u{1F9D2} *New* kid from:", this.handle, "Feeling:", face); + this.pos = pos; + if (net) this.netPos = { ...pos }; + this.face = face || this.face; + this.net = net; + } + // Show a message above the kid's head for `time` frames. + write(text, time = 320) { + this.message = text; + this.#messageDuration = time; + this.#messageProgress = 0; + } + // Show a message above the kid's head for an unending period. + // 🐛 Used only if they are `ghosted` for slug updates. + slug(text) { + this.write(text, Infinity); + } + // Change the mood (face) of the kid. + mood(face) { + this.face = face; + } + // Change the color of the kid. + tint(c4) { + this.color = c4; + } + // Render the kid. + paint({ ink: ink3, line: line2, point: point2, pan: pan2, text, typeface, stamp: stamp3 }) { + const leash = this.leash; + pan2(this.pos.x, this.pos.y); + if (this.showing) stamp3(this.showing); + if (!this.showing) { + ink3(this.color).circle(0, 0, this.size); + if (this.ghost) { + line2(-6, -6, -10, -6).line(6, -6, 10, -6); + } else { + point2(-6, -6).point(6, -6); + } + if (this.face === "smile") { + ink3(this.color).line(0, 6, -6, 3); + ink3(this.color).line(0, 6, 6, 3); + } else if (this.face === "frown") { + ink3(this.color).line(0, 3, -6, 8); + ink3(this.color).line(0, 3, 6, 8); + } else if (this.face === "meh") { + ink3(this.color).line(-6, 6, 6, 6); + } + } + ink3(leash.len > leash.deadzone ? this.color : [this.color, 128]).line( + 0, + 0, + leash.x, + leash.y + ); + if (this.message) { + const blockWidth = typeface.glyphs["0"].resolution[0]; + const tb = text.box( + this.message, + void 0, + this.message.length * blockWidth + ); + ink3("black").write(this.message, { + x: -tb.box.width / 2 + 1, + y: -this.size - 14 + 1 + }); + ink3(this.color).write(this.message, { + x: -tb.box.width / 2, + y: -this.size - 14 + }); + } + } + // Control the kid. + act({ event: e2, num }) { + const k = this.#keys; + const leash = this.leash; + if (!this.drag) { + if (e2.is("keyboard:down:w") || e2.is("keyboard:down:arrowup")) k.U = true; + if (e2.is("keyboard:down:s") || e2.is("keyboard:down:arrowdown")) + k.D = true; + if (e2.is("keyboard:down:a") || e2.is("keyboard:down:arrowleft")) + k.L = true; + if (e2.is("keyboard:down:d") || e2.is("keyboard:down:arrowright")) + k.R = true; + if (e2.is("keyboard:up:w") || e2.is("keyboard:up:arrowup")) k.U = false; + if (e2.is("keyboard:up:s") || e2.is("keyboard:up:arrowdown")) k.D = false; + if (e2.is("keyboard:up:a") || e2.is("keyboard:up:arrowleft")) k.L = false; + if (e2.is("keyboard:up:d") || e2.is("keyboard:up:arrowright")) k.R = false; + } + if (e2.is("touch:1")) { + k.U = k.D = k.L = k.R = false; + leash.start = { x: e2.x, y: e2.y }; + leash.x = leash.y = 0; + this.drag = true; + } + if (e2.is("draw:1") && leash.start) { + leash.x = e2.x - leash.start.x; + leash.y = e2.y - leash.start.y; + this.#snapLeash(num); + } + if (e2.is("lift:1")) { + leash.start = null; + this.drag = false; + } + } + // Simulate the kid's movement and time messages. + sim({ num }, net) { + if (this.net && this.netPos) { + const p22 = num.p2; + const STEP_SIZE = 1; + const direction = p22.norm(p22.sub(this.netPos, this.pos)); + const distance4 = p22.len(p22.sub(this.netPos, this.pos)); + if (distance4 < STEP_SIZE) { + this.pos = this.netPos; + } else { + this.pos = p22.inc(this.pos, p22.scl(direction, STEP_SIZE)); + } + return; + } + if (this.message) { + if (this.#messageProgress < this.#messageDuration) { + this.#messageProgress += 1; + } else { + this.message = null; + this.#messageProgress = 0; + net?.({ clear: true }); + } + } + const k = this.#keys, leash = this.leash, pos = this.pos; + if (k.U) leash.y -= 1; + if (k.D) leash.y += 1; + if (k.L) leash.x -= 1; + if (k.R) leash.x += 1; + this.#snapLeash(num); + if (!leash.start) { + leash.y *= 0.97; + leash.x *= 0.97; + } + const newPos = { ...pos }; + if (leash.len > leash.deadzone) { + newPos.x = num.lerp(pos.x, pos.x + leash.x, 0.075); + newPos.y = num.lerp(pos.y, pos.y + leash.y, 0.075); + } else if (leash.len > 1) { + newPos.x = num.lerp(pos.x, pos.x + leash.x, 0.025); + newPos.y = num.lerp(pos.y, pos.y + leash.y, 0.025); + } + if (newPos.x !== pos.x || newPos.y !== pos.y) { + net?.({ pos }); + this.moved = true; + } + pos.x = newPos.x; + pos.y = newPos.y; + if (pos.x < 0) pos.x = 0; + if (pos.x > world.size.width) pos.x = world.size.width; + if (pos.y < 0) pos.y = 0; + if (pos.y > world.size.height) pos.y = world.size.height; + } + // Limit the kid's movement leash. + #snapLeash(num) { + const leash = this.leash; + leash.len = num.p2.len(leash); + if (leash.len > leash.max) { + const scale7 = leash.max / leash.len; + leash.x *= scale7; + leash.y *= scale7; + } + } + // Kill all controls. + off() { + const k = this.#keys; + k.U = k.D = k.L = k.R = false; + this.leash.start = null; + } + // Return the screen position of this kid, given a camera and world, + screenPos(cam2, world2) { + return { x: cam2.x + this.pos.x, y: cam2.y + this.pos.y }; + } +}; +var World = class { + size = {}; + constructor(width2 = 192, height2 = 192) { + this.size.width = width2; + this.size.height = height2; + } + get width() { + return this.size.width; + } + get height() { + return this.size.height; + } +}; +var Cam = class { + x = 0; + y = 0; + dolly = { x: 0, y: 0 }; + constructor(x, y, dolly) { + this.x = x; + this.y = y; + this.dolly = { ...dolly }; + } +}; +function onScreen(obj, world2, cam2, screen2) { + const halfWidth = screen2.width / 2; + const halfHeight = screen2.height / 2; + const viewport = { + left: cam2.dolly.x - halfWidth, + right: cam2.dolly.x + halfWidth, + top: cam2.dolly.y - halfHeight, + bottom: cam2.dolly.y + halfHeight + }; + return obj.pos.x >= viewport.left && obj.pos.x <= viewport.right && obj.pos.y >= viewport.top && obj.pos.y <= viewport.bottom; +} + +// public/aesthetic.computer/lib/headers.mjs +function getDayColorScheme(isDarkMode) { + const day = (/* @__PURE__ */ new Date()).getDay(); + const schemes = { + // Sunday - Purple/Lavender + 0: { + dark: { + header: { bg: "rgba(75, 0, 130)", color: "rgb(230, 230, 250)", border: "rgb(147, 112, 219)" }, + code: { bg: "#2d1b69", color: "#b19cd9", shadow: "rgba(177, 156, 217, 0.3)" } + }, + light: { + header: { bg: "rgba(248, 248, 255)", color: "rgb(75, 0, 130)", border: "rgb(147, 112, 219)" }, + code: { bg: "#f8f8ff", color: "#4b0082", border: "#9370db" } + } + }, + // Monday - Blue/Ocean + 1: { + dark: { + header: { bg: "rgba(0, 20, 40)", color: "rgb(173, 216, 230)", border: "rgb(70, 130, 180)" }, + code: { bg: "#1e3a8a", color: "#7dd3fc", shadow: "rgba(125, 211, 252, 0.3)" } + }, + light: { + header: { bg: "rgba(240, 248, 255)", color: "rgb(30, 58, 138)", border: "rgb(70, 130, 180)" }, + code: { bg: "#f0f8ff", color: "#1e3a8a", border: "#4682b4" } + } + }, + // Tuesday - Green/Forest + 2: { + dark: { + header: { bg: "rgba(0, 50, 0)", color: "rgb(144, 238, 144)", border: "rgb(34, 139, 34)" }, + code: { bg: "#064e3b", color: "#6ee7b7", shadow: "rgba(110, 231, 183, 0.3)" } + }, + light: { + header: { bg: "rgba(240, 255, 240)", color: "rgb(6, 78, 59)", border: "rgb(34, 139, 34)" }, + code: { bg: "#f0fff0", color: "#064e3b", border: "#228b22" } + } + }, + // Wednesday - Orange/Sunset + 3: { + dark: { + header: { bg: "rgba(139, 69, 19)", color: "rgb(255, 218, 185)", border: "rgb(255, 140, 0)" }, + code: { bg: "#ea580c", color: "#fed7aa", shadow: "rgba(254, 215, 170, 0.3)" } + }, + light: { + header: { bg: "rgba(255, 248, 220)", color: "rgb(234, 88, 12)", border: "rgb(255, 140, 0)" }, + code: { bg: "#fff8dc", color: "#ea580c", border: "#ff8c00" } + } + }, + // Thursday - Red/Ruby + 4: { + dark: { + header: { bg: "rgba(139, 0, 0)", color: "rgb(255, 182, 193)", border: "rgb(220, 20, 60)" }, + code: { bg: "#991b1b", color: "#fca5a5", shadow: "rgba(252, 165, 165, 0.3)" } + }, + light: { + header: { bg: "rgba(255, 245, 245)", color: "rgb(153, 27, 27)", border: "rgb(220, 20, 60)" }, + code: { bg: "#fff5f5", color: "#991b1b", border: "#dc143c" } + } + }, + // Friday - Pink/Rose + 5: { + dark: { + header: { bg: "rgba(199, 21, 133)", color: "rgb(252, 231, 243)", border: "rgb(236, 72, 153)" }, + code: { bg: "#be185d", color: "#fbcfe8", shadow: "rgba(251, 207, 232, 0.3)" } + }, + light: { + header: { bg: "rgba(253, 242, 248)", color: "rgb(190, 24, 93)", border: "rgb(236, 72, 153)" }, + code: { bg: "#fdf2f8", color: "#be185d", border: "#ec4899" } + } + }, + // Saturday - Teal/Cyan (Original aesthetic computer style) + 6: { + dark: { + header: { bg: "rgba(10, 20, 40)", color: "rgb(200, 200, 250)", border: "rgb(120, 120, 170)" }, + code: { bg: "#1a1a2e", color: "#16a085", shadow: "rgba(22, 160, 133, 0.3)" } + }, + light: { + header: { bg: "rgba(248, 249, 250)", color: "rgb(52, 58, 64)", border: "rgb(108, 117, 125)" }, + code: { bg: "#f8f9fa", color: "#2c3e50", border: "#6c757d" } + } + } + }; + return schemes[day]; +} +function renderQRToConsole(url, darkColor = "#4ecdc4", lightColor = "#1a1a2e") { + try { + const qr = qrcode(url, { errorCorrectLevel: ErrorCorrectLevel.L }); + const size = qr.getModuleCount(); + const moduleSize = 4; + const margin = moduleSize; + const svgSize = size * moduleSize + margin * 2; + let pathData = ""; + for (let row = 0; row < size; row++) { + for (let col = 0; col < size; col++) { + if (qr.isDark(row, col)) { + const x = col * moduleSize + margin; + const y = row * moduleSize + margin; + pathData += `M${x} ${y}h${moduleSize}v${moduleSize}h-${moduleSize}z`; + } + } + } + const svg = ``; + const dataUrl = `data:image/svg+xml,${encodeURIComponent(svg)}`; + const displaySize = 100; + console.log( + "%c ", + `font-size: 1px; padding: ${displaySize / 2}px; background: url("${dataUrl}") no-repeat; background-size: ${displaySize}px ${displaySize}px;` + ); + } catch (e2) { + console.warn("QR generation failed:", e2); + } +} +function headers(isDarkMode) { + if (isDarkMode === void 0) { + isDarkMode = true; + if (typeof window !== "undefined" && window.matchMedia) { + isDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches; + } + } + const colorScheme = getDayColorScheme(isDarkMode); + const theme = isDarkMode ? colorScheme.dark : colorScheme.light; + const titleStyle = `background: ${theme.header.bg}; + color: ${theme.header.color}; + font-size: 18px; + padding: 0 0.25em; + border-radius: 0.15em; + border-bottom: 0.75px solid ${theme.header.border}; + border-right: 0.75px solid ${theme.header.border};`; + const teiaStyle = isDarkMode ? `background: rgba(0, 0, 0, 0.9); + color: rgb(255, 255, 255); + font-size: 16px; + padding: 0 0.35em; + border-radius: 0.15em; + border: 0.75px solid rgb(120, 120, 120);` : `background: rgba(255, 255, 255, 0.9); + color: rgb(33, 37, 41); + font-size: 16px; + padding: 0 0.35em; + border-radius: 0.15em; + border: 0.75px solid rgb(108, 117, 125);`; + console.log( + "%cAesthetic%c.%cComputer", + "color: #ff6b9d; font-weight: bold; font-size: 16px;", + "color: #4ecdc4; font-weight: bold; font-size: 16px;", + "color: #ff6b9d; font-weight: bold; font-size: 16px;" + ); + if (typeof window !== "undefined" && window.acPACK_MODE) { + if (window.acPACK_COLOPHON) { + const colophon = window.acPACK_COLOPHON; + const piece = colophon.piece; + const build = colophon.build; + const today = (/* @__PURE__ */ new Date()).getDay(); + const isDarkMode2 = true; + const colorScheme2 = getDayColorScheme(isDarkMode2); + const theme2 = colorScheme2.dark; + const titleChars = "Aesthetic.Computer".split(""); + const colors = ["#ff9999", "#ffcc99", "#ffff99", "#99ff99", "#99ccff", "#cc99ff", "#ff99cc"]; + let titleFormatted = ""; + let titleStyles = []; + titleChars.forEach((char, i2) => { + titleFormatted += `%c${char}`; + const color3 = colors[i2 % colors.length]; + titleStyles.push(`color: ${color3}; font-weight: bold; font-size: 14px;`); + }); + console.log(titleFormatted, ...titleStyles); + const pieceSlugForQR = piece.isKidLisp ? `$${piece.name}` : piece.name; + const pieceUrlForQR = `https://aesthetic.computer/${pieceSlugForQR}`; + renderQRToConsole(pieceUrlForQR); + const piecePrefix = piece.isKidLisp ? "$" : ""; + const authorRaw = build.author.replace(/^@/, ""); + const authorDisplay = authorRaw === "anon" ? "anon" : `@${authorRaw}`; + console.log( + `%c${piecePrefix}${piece.name} %cis a %cpiece%c by %c${authorDisplay}`, + "color: #ffc107; font-weight: bold; font-size: 11px;", + "color: #6c757d; font-size: 10px;", + "color: #343a40; font-weight: bold; font-size: 10px;", + "color: #6c757d; font-size: 10px;", + "color: #dc3545; font-size: 10px;" + ); + if (piece.sourceCode && piece.isKidLisp) { + try { + const highlighted = formatKidLispForConsole(piece.sourceCode); + console.log( + `%cIts %cKidLisp%c source is... %c${highlighted.text}`, + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-weight: bold; font-size: 10px;", + "color: #6c757d; font-size: 10px;", + "font-family: monospace; font-size: 10px;", + ...highlighted.styles + ); + } catch (error) { + console.log( + `%cIts %cKidLisp%c source is... %c${piece.sourceCode}`, + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-weight: bold; font-size: 10px;", + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-family: monospace; font-size: 11px;" + ); + } + } + let formattedDate; + if (build.zipFilename) { + const dateMatch = build.zipFilename.match(/(\d{4})\.(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})\.(\d{2})/); + if (dateMatch) { + const [, year, month, day, hour, minute, second] = dateMatch; + const packDate = new Date(year, month - 1, day, hour, minute, second); + const monthNames = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ]; + const monthName = monthNames[packDate.getMonth()]; + const dayNum = packDate.getDate(); + const ordinalSuffix = (d2) => { + if (d2 > 3 && d2 < 21) return "th"; + switch (d2 % 10) { + case 1: + return "st"; + case 2: + return "nd"; + case 3: + return "rd"; + default: + return "th"; + } + }; + const time = packDate.toLocaleTimeString("en-US", { + hour: "numeric", + minute: "2-digit", + second: "numeric", + hour12: true + }); + formattedDate = `${monthName} ${dayNum}${ordinalSuffix(dayNum)}, ${year} at ${time}`; + } else { + const packDate = new Date(build.packTime); + formattedDate = packDate.toLocaleDateString(); + } + } else { + const packDate = new Date(build.packTime); + formattedDate = packDate.toLocaleDateString(); + } + const fileCount = build.fileCount ? ` ${build.fileCount} files` : ""; + const gitHash = ` ${build.gitCommit}`; + const dirtyStatus = build.gitIsDirty ? " (dirty)" : ""; + const bundleFilename = build.filename || null; + if (bundleFilename) { + console.log( + `%cPacked as %c${bundleFilename}%c on %c${formattedDate}%c`, + "color: #6c757d; font-size: 11px;", + "color: #e83e8c; font-weight: bold; font-size: 11px;", + "color: #6c757d; font-size: 11px;", + "color: #4ecdc4; font-size: 11px;", + "color: #6c757d; font-size: 11px;" + ); + } else { + console.log( + `%cThis copy was packed on %c${formattedDate}%c`, + "color: #6c757d; font-size: 11px;", + "color: #4ecdc4; font-size: 11px;", + "color: #6c757d; font-size: 11px;" + ); + } + console.log( + `%cUsing %caesthetic-computer%c git version%c${gitHash}%c${dirtyStatus}`, + "color: #6c757d; font-size: 11px;", + "color: #e83e8c; font-weight: bold; font-size: 11px;", + "color: #6c757d; font-size: 11px;", + "color: #ffc107; font-size: 11px;", + build.gitIsDirty ? "color: #dc3545; font-size: 11px;" : "color: #343a40; font-size: 11px;" + ); + const pieceSlug = piece.isKidLisp ? `/$${piece.name}` : `/${piece.name}`; + console.log( + `%cView this piece at %chttps://aesthetic.computer${pieceSlug}`, + "color: #6c757d; font-size: 10px;", + "color: #4ecdc4; font-size: 10px; text-decoration: underline;" + ); + if (piece.isKidLisp) { + const kidlispUrl = `https://kidlisp.com/$${piece.name}`; + console.log( + `%cView this piece in %cKidLisp%c at %c${kidlispUrl}`, + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-weight: bold; font-size: 10px;", + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-size: 10px; text-decoration: underline;" + ); + } + const showProjectLinks = typeof window === "undefined" || window.acKEEP_MODE !== true || window.acPACK_SHOW_PROJECT_LINKS === true; + if (showProjectLinks) { + console.log( + `%cLearn %cKidLisp%c at %chttps://kidlisp.com`, + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-weight: bold; font-size: 10px;", + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-size: 10px; text-decoration: underline;" + ); + console.log( + `%cContribute on %cTangled%c at %chttps://tangled.org/aesthetic.computer/core`, + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-weight: bold; font-size: 10px;", + "color: #6c757d; font-size: 10px;", + "color: #28a745; font-size: 10px; text-decoration: underline;" + ); + } + } + } +} +function formatKidLispForConsole(code2) { + const baseStyle = "color: #6c757d; font-family: monospace; font-size: 11px; white-space: pre;"; + const isNodeEnv = typeof process !== "undefined" && !!process.versions?.node; + const isBrowserConsole = !isNodeEnv && typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.navigator !== "undefined"; + if (typeof code2 !== "string" || code2.length === 0) { + if (isBrowserConsole) { + return { text: "\n%c%c", styles: [baseStyle, ""] }; + } + return { text: "\n", styles: [] }; + } + const normalized = code2.replace(/\r\n/g, "\n"); + if (!isBrowserConsole) { + return { text: ` +${normalized}`, styles: [] }; + } + try { + const tokens = tokenize(normalized); + const segments = []; + const pushSegment = (text, style) => { + if (!text) return; + segments.push({ text, style }); + }; + const applyStyle = (overrides = "") => `${baseStyle} ${overrides}`.trim(); + const pushTokenSegments = (token) => { + if (!token) return; + const rainbowColors2 = ["#ff5555", "#ff9800", "#fdd835", "#4caf50", "#2196f3", "#673ab7", "#ff4081"]; + const zebraColors2 = ["#000000", "#ffffff"]; + const cleanToken = token.startsWith('"') && token.endsWith('"') ? token.slice(1, -1) : token; + if (token === "(" || token === ")" || token === ",") { + pushSegment(token, applyStyle("color: #adb5bd;")); + return; + } + if (token.startsWith('"') && token.endsWith('"')) { + pushSegment(token, applyStyle("color: #e83e8c;")); + return; + } + if (/^-?\d+(?:\.\d+)?$/.test(token)) { + pushSegment(token, applyStyle("color: #28a745; font-weight: bold;")); + return; + } + if (/^\d*\.?\d+s(?:\.\.|!|\.\.\.)?$/.test(token)) { + pushSegment(token, applyStyle("color: #17a2b8; font-weight: bold;")); + return; + } + const highlight = getColorTokenHighlight(token); + if (highlight && highlight !== "orange") { + if (highlight.startsWith("COMPOUND:")) { + const parts = highlight.split(":"); + const prefixColor = parts[1]; + const identifierColor = parts[2]; + const prefixChar = token.charAt(0); + const identifierPart = token.substring(1); + const prefixCss = prefixColor.includes(",") ? `rgb(${prefixColor})` : prefixColor; + const identifierCss = identifierColor.includes(",") ? `rgb(${identifierColor})` : identifierColor; + pushSegment(prefixChar, applyStyle(`color: ${prefixCss}; font-weight: bold;`)); + pushSegment(identifierPart, applyStyle(`color: ${identifierCss}; font-weight: bold;`)); + return; + } + if (highlight === "RAINBOW") { + for (let i2 = 0; i2 < token.length; i2++) { + const ch = token[i2]; + const color3 = rainbowColors2[i2 % rainbowColors2.length]; + pushSegment(ch, applyStyle(`color: ${color3}; font-weight: bold;`)); + } + return; + } + if (highlight === "ZEBRA") { + for (let i2 = 0; i2 < token.length; i2++) { + const ch = token[i2]; + const color3 = zebraColors2[i2 % zebraColors2.length]; + pushSegment(ch, applyStyle(`color: ${color3}; font-weight: bold; background: ${color3 === "#000000" ? "#ffffff" : "#000000"};`)); + } + return; + } + if (highlight.startsWith("FADE:")) { + const fadeToken = highlight.substring(5); + const parts = fadeToken.split(":"); + pushSegment("fade", applyStyle("color: #3cb371; font-weight: bold;")); + pushSegment(":", applyStyle("color: #888;")); + let colorPart = parts[1] || ""; + let remaining = parts.slice(2); + if (colorPart === "neat" && parts[2]) { + pushSegment("neat", applyStyle("color: #888; font-style: italic;")); + pushSegment(":", applyStyle("color: #888;")); + colorPart = parts[2]; + remaining = parts.slice(3); + } + const colors = colorPart.split("-"); + colors.forEach((colorName, i2) => { + const colorHighlight = getColorTokenHighlight(colorName); + let cssColor2 = "#888"; + if (colorHighlight && !colorHighlight.startsWith("FADE:") && colorHighlight !== "orange") { + cssColor2 = colorHighlight.includes(",") ? `rgb(${colorHighlight})` : colorHighlight; + } else if (cssColors && cssColors[colorName.toLowerCase()]) { + const rgb = cssColors[colorName.toLowerCase()]; + cssColor2 = `rgb(${rgb[0]},${rgb[1]},${rgb[2]})`; + } + pushSegment(colorName, applyStyle(`color: ${cssColor2}; font-weight: bold;`)); + if (i2 < colors.length - 1) { + pushSegment("-", applyStyle("color: #888;")); + } + }); + remaining.forEach((part) => { + pushSegment(":", applyStyle("color: #888;")); + if (part === "neat" || part === "vertical" || part === "horizontal") { + pushSegment(part, applyStyle("color: #888; font-style: italic;")); + } else { + pushSegment(part, applyStyle("color: #888;")); + } + }); + return; + } + const cssColor = highlight.includes(",") ? `rgb(${highlight})` : highlight; + pushSegment(token, applyStyle(`color: ${cssColor}; font-weight: bold;`)); + return; + } + const lower = cleanToken.toLowerCase(); + const drawingCommands = ["line", "rect", "circle", "box", "tri", "plot", "write", "ink", "paper", "brush", "flood", "wipe", "paste", "stamp", "scroll", "zoom", "contrast", "blur", "repeat", "spin", "jump"]; + const controlFlow = ["if", "when", "unless", "each", "loop", "later", "once", "def"]; + if (drawingCommands.includes(lower)) { + pushSegment(token, applyStyle("color: #17a2b8; font-weight: bold;")); + return; + } + if (controlFlow.includes(lower)) { + pushSegment(token, applyStyle("color: #6f42c1; font-weight: bold;")); + return; + } + if (lower === "kidlisp") { + pushSegment(token, applyStyle("color: #28a745; font-weight: bold;")); + return; + } + pushSegment(token, baseStyle); + }; + let cursor2 = 0; + tokens.forEach((token) => { + const idx = normalized.indexOf(token, cursor2); + if (idx === -1) { + return; + } + if (idx > cursor2) { + pushSegment(normalized.slice(cursor2, idx), baseStyle); + } + pushTokenSegments(token); + cursor2 = idx + token.length; + }); + if (cursor2 < normalized.length) { + pushSegment(normalized.slice(cursor2), baseStyle); + } + const mergedSegments = []; + for (const segment of segments) { + const prev = mergedSegments[mergedSegments.length - 1]; + if (prev && prev.style === segment.style) { + prev.text += segment.text; + } else { + mergedSegments.push({ ...segment }); + } + } + const textParts = ["\n"]; + const styles = []; + mergedSegments.forEach(({ text, style }) => { + if (!text) return; + const escaped = text.replace(/%/g, "%%"); + textParts.push(`%c${escaped}`); + styles.push(style); + }); + textParts.push("%c"); + styles.push(""); + return { + text: textParts.join(""), + styles + }; + } catch (error) { + console.warn("KidLisp syntax highlighting error:", error); + return { text: ` +${normalized}`, styles: [] }; + } +} + +// public/aesthetic.computer/lib/sound/sound-whitelist.mjs +var soundWhitelist = [ + "startup", + "compkey", + "msg_1", + "msg_2", + "msg_3", + "msg_4", + "chat_1", + "chat_2", + "chat_3", + "chat_4" +]; + +// public/aesthetic.computer/lib/gamepad-mappings.mjs +var GAMEPAD_MAPPINGS = { + // 8BitDo M30 (Bluetooth, 2.4G, and Wired for Xbox). In X-input mode + // browsers expose its six face buttons as ABXY + the two bumpers. + "M30": { + vendor: "8BitDo", + product: "M30", + description: "Classic six-button arcade controller", + fight: { + punch: [0, 1, 5], + // A, B, C + block: [2, 3, 4] + // X, Y, Z + }, + buttons: { + 0: { name: "A", position: "face_bottom_left", active: "lime", inactive: "darkgreen" }, + 1: { name: "B", position: "face_bottom_center", active: "red", inactive: "maroon" }, + 2: { name: "X", position: "face_top_left", active: "dodgerblue", inactive: "navy" }, + 3: { name: "Y", position: "face_top_center", active: "yellow", inactive: "darkgoldenrod" }, + 4: { name: "Z", position: "face_top_right", active: "orange", inactive: "sienna" }, + 5: { name: "C", position: "face_bottom_right", active: "turquoise", inactive: "darkcyan" }, + 6: { name: "LT", position: "trigger_left", active: "coral", inactive: "brown" }, + 7: { name: "RT", position: "trigger_right", active: "violet", inactive: "indigo" }, + 8: { name: "Select", position: "center_left", active: "white", inactive: "slategray" }, + 9: { name: "Start", position: "center_right", active: "springgreen", inactive: "darkslategray" }, + 10: { name: "L3", position: "stick_left_press", active: "cyan", inactive: "cadetblue" }, + 11: { name: "R3", position: "stick_right_press", active: "magenta", inactive: "purple" }, + 12: { name: "D-Up", position: "dpad_up", active: "chartreuse", inactive: "forestgreen" }, + 13: { name: "D-Down", position: "dpad_down", active: "greenyellow", inactive: "olivedrab" }, + 14: { name: "D-Left", position: "dpad_left", active: "limegreen", inactive: "seagreen" }, + 15: { name: "D-Right", position: "dpad_right", active: "yellowgreen", inactive: "darkolivegreen" }, + 16: { name: "Home", position: "center", active: "hotpink", inactive: "darkslateblue" } + }, + axes: { + 0: { name: "D-Pad X", type: "dpad", direction: "horizontal", active: { left: "lime", right: "chartreuse" }, inactive: "darkseagreen" }, + 1: { name: "D-Pad Y", type: "dpad", direction: "vertical", active: { up: "greenyellow", down: "yellowgreen" }, inactive: "olivedrab" }, + 2: { name: "Right X", type: "stick", direction: "horizontal", active: "magenta", inactive: "dimgray" }, + 3: { name: "Right Y", type: "stick", direction: "vertical", active: "violet", inactive: "dimgray" } + }, + layout: { type: "m30", hasAnalogSticks: false, width: 56, height: 24 } + }, + // 8BitDo Micro - Ultra-compact Bluetooth controller + "8BitDo Micro gamepad": { + vendor: "8BitDo", + product: "Micro", + description: "Ultra-compact keychain gamepad (72mm \xD7 40.7mm)", + // Button mapping (standard Gamepad API indices -> physical buttons) + buttons: { + 0: { name: "A", position: "face_right", active: "lime", inactive: "darkgreen" }, + 1: { name: "B", position: "face_bottom", active: "red", inactive: "maroon" }, + 2: { name: "?", position: "unmapped", active: "cyan", inactive: "teal" }, + 3: { name: "X", position: "face_top", active: "yellow", inactive: "olive" }, + 4: { name: "Y", position: "face_left", active: "orangered", inactive: "saddlebrown" }, + 5: { name: "?", position: "unmapped", active: "magenta", inactive: "indigo" }, + 6: { name: "L", position: "shoulder_left", active: "orange", inactive: "sienna" }, + 7: { name: "R", position: "shoulder_right", active: "dodgerblue", inactive: "midnightblue" }, + 8: { name: "L2", position: "trigger_left", active: "coral", inactive: "brown" }, + 9: { name: "R2", position: "trigger_right", active: "violet", inactive: "rebeccapurple" }, + 10: { name: "Select", position: "center_left", active: "white", inactive: "slategray" }, + 11: { name: "Start", position: "center_right", active: "springgreen", inactive: "darkslategray" }, + 12: { name: "Home", position: "bottom_center", active: "deeppink", inactive: "darkslateblue" }, + 13: { name: "?", position: "unmapped", active: "aqua", inactive: "steelblue" }, + 14: { name: "?", position: "unmapped", active: "gold", inactive: "darkgoldenrod" }, + 15: { name: "?", position: "unmapped", active: "hotpink", inactive: "crimson" }, + 16: { name: "?", position: "unmapped", active: "lightcoral", inactive: "firebrick" } + }, + // Axis mapping (standard Gamepad API indices -> physical controls) + axes: { + 0: { + name: "D-Pad X", + type: "dpad", + direction: "horizontal", + active: { left: "lime", right: "chartreuse" }, + inactive: "darkseagreen" + }, + 1: { + name: "D-Pad Y", + type: "dpad", + direction: "vertical", + active: { up: "greenyellow", down: "yellowgreen" }, + inactive: "olivedrab" + }, + 2: { name: "?", type: "unmapped", active: "cyan", inactive: "teal" }, + 3: { name: "?", type: "unmapped", active: "aqua", inactive: "steelblue" } + }, + // Physical layout for diagram rendering + layout: { + type: "micro", + hasAnalogSticks: false, + width: 70, + height: 35, + dpad: { + type: "axis", + // Uses axes instead of buttons + x: 13, + y: 17, + size: 5, + spacing: 8 + }, + faceButtons: { + x: 57, + y: 17, + size: 4, + spacing: 7, + mapping: { + top: 3, + bottom: 1, + left: 4, + right: 0 + } + }, + centerButtons: { + select: { x: -6, y: 7, button: 10 }, + // Relative to center + start: { x: 2, y: 7, button: 11 }, + home: { x: 4, y: 30, button: 12 } + // Relative to center, bottom + }, + shoulders: { + left: { x: 7, y: -3, width: 13, button: 6 }, + right: { x: 50, y: -3, width: 13, button: 7 } + // x = width - 20 + }, + triggers: { + left: { x: 21, y: -3, width: 4, button: 8 }, + right: { x: 45, y: -3, width: 4, button: 9 } + // x = width - 25 + } + } + }, + // Standard gamepad (Xbox/PlayStation style) + "standard": { + vendor: "Generic", + product: "Standard Gamepad", + description: "W3C Standard Gamepad mapping", + fight: { + punch: [0, 2, 5], + // A, X, RB + block: [1, 3, 4] + // B, Y, LB + }, + buttons: { + 0: { name: "A/X", position: "face_bottom", active: "lime", inactive: "darkgreen" }, + 1: { name: "B/\u25CB", position: "face_right", active: "red", inactive: "maroon" }, + 2: { name: "X/\u25A1", position: "face_left", active: "dodgerblue", inactive: "navy" }, + 3: { name: "Y/\u25B3", position: "face_top", active: "yellow", inactive: "darkgoldenrod" }, + 4: { name: "LB/L1", position: "shoulder_left", active: "orange", inactive: "sienna" }, + 5: { name: "RB/R1", position: "shoulder_right", active: "turquoise", inactive: "darkcyan" }, + 6: { name: "LT/L2", position: "trigger_left", active: "coral", inactive: "brown" }, + 7: { name: "RT/R2", position: "trigger_right", active: "violet", inactive: "indigo" }, + 8: { name: "Select", position: "center_left", active: "white", inactive: "slategray" }, + 9: { name: "Start", position: "center_right", active: "springgreen", inactive: "darkslategray" }, + 10: { name: "LS", position: "stick_left_press", active: "cyan", inactive: "cadetblue" }, + 11: { name: "RS", position: "stick_right_press", active: "magenta", inactive: "purple" }, + 12: { name: "D-Up", position: "dpad_up", active: "chartreuse", inactive: "forestgreen" }, + 13: { name: "D-Down", position: "dpad_down", active: "greenyellow", inactive: "olivedrab" }, + 14: { name: "D-Left", position: "dpad_left", active: "limegreen", inactive: "seagreen" }, + 15: { name: "D-Right", position: "dpad_right", active: "yellowgreen", inactive: "darkolivegreen" }, + 16: { name: "Home", position: "center", active: "hotpink", inactive: "darkslateblue" } + }, + axes: { + 0: { + name: "LS-X", + type: "stick", + stick: "left", + direction: "horizontal", + active: { left: "cyan", right: "aqua" }, + inactive: "dimgray" + }, + 1: { + name: "LS-Y", + type: "stick", + stick: "left", + direction: "vertical", + active: { up: "deepskyblue", down: "skyblue" }, + inactive: "dimgray" + }, + 2: { + name: "RS-X", + type: "stick", + stick: "right", + direction: "horizontal", + active: { left: "magenta", right: "orchid" }, + inactive: "dimgray" + }, + 3: { + name: "RS-Y", + type: "stick", + stick: "right", + direction: "vertical", + active: { up: "violet", down: "plum" }, + inactive: "dimgray" + } + }, + layout: { + type: "standard", + hasAnalogSticks: true + // Layout details would go here + } + } +}; + +// public/aesthetic.computer/lib/pmove.mjs +var DEFAULT_CFG = Object.freeze({ + runSpeed: 10, + // units/sec + walkSpeed: 5, + // units/sec while crouched + jumpVelocity: 8, + // initial upward velocity on jump (u/s) + gravity: 50, + // u/s² + groundY: 0, + // world Y of the solid ground plane + eyeHeight: 2, + // stand eye height above groundY + crouchEyeHeight: 1.2, + // crouched eye height + crouchLerp: 0.25, + // per-tick lerp toward crouch target + groundBounds: null, + // { xMin, xMax, zMin, zMax } or null + deathFloorY: null, + // world Y clamp for frozen players (lava pit) + deathFloorClearance: 0.3, + simHz: 120, + // Dolly-style horizontal damping. cam-doll uses a 0.9 decay + push that + // settles at `speed` units/sec. We fold that into a direct integration + // here so the server doesn't need the Dolly object: hVelDecay per tick + // and a push matching the same steady state. + hVelDecay: 0.9, + // 🏃 Quake-style physics (opt-in). When `airAccel` is set, the legacy + // hVelDecay lerp is replaced by Q3 friction+accelerate on the ground and + // air-accelerate (with a perpendicular wishspeed cap) in the air. This + // is what makes strafe-jumping / bunny-hopping work: in air, velocity + // perpendicular to the existing motion vector is added without subtracting + // current speed, so turning slightly off-axis lets the player accumulate + // velocity above runSpeed. + airAccel: null, + // u/s² along wishdir while airborne + groundAccel: null, + // u/s² along wishdir while on ground + airCapSpeed: 1.5, + // max wishspeed used during air-accel (Q3 air-control window) + groundFriction: 6, + // Q3-style friction coefficient + // Static obstacles: array of { type:"box", xMin, xMax, yMin, yMax, zMin, zMax } + // or { type:"cylinder", x, z, r, yMin, yMax }. Resolved as horizontal + // push-out after integration so prediction (client) and authority (server) + // converge. yMin/yMax bound the vertical span — only collide when the + // player's feet→eye column overlaps the obstacle's Y range. + obstacles: null, + playerRadius: 0.4 + // horizontal radius for obstacle push-out +}); +var BTN = Object.freeze({ + JUMP: 1 << 0, + CROUCH: 1 << 1, + SHOOT: 1 << 2, + DASH: 1 << 3 +}); +function resolveObstacles(s2, cfg) { + if (!cfg?.obstacles?.length) return; + const r2 = cfg.playerRadius ?? 0.4; + const eyeY = s2.y; + const feetY = s2.y - cfg.eyeHeight; + for (const o2 of cfg.obstacles) { + if (typeof o2.yMax === "number" && feetY > o2.yMax) continue; + if (typeof o2.yMin === "number" && eyeY < o2.yMin) continue; + if (o2.type === "cylinder") { + const dx = s2.x - o2.x; + const dz = s2.z - o2.z; + const d2 = Math.hypot(dx, dz); + const minD = (o2.r ?? 1) + r2; + if (d2 >= minD) continue; + if (d2 < 1e-4) { + s2.x += minD; + continue; + } + const nx = dx / d2, nz = dz / d2; + const push = minD - d2; + s2.x += nx * push; + s2.z += nz * push; + const vd = s2.vx * nx + s2.vz * nz; + if (vd < 0) { + s2.vx -= vd * nx; + s2.vz -= vd * nz; + } + } else if (o2.type === "box") { + const cx = (o2.xMin + o2.xMax) * 0.5; + const cz = (o2.zMin + o2.zMax) * 0.5; + const hx = (o2.xMax - o2.xMin) * 0.5 + r2; + const hz = (o2.zMax - o2.zMin) * 0.5 + r2; + const dx = s2.x - cx; + const dz = s2.z - cz; + const ox = hx - Math.abs(dx); + const oz = hz - Math.abs(dz); + if (ox <= 0 || oz <= 0) continue; + if (ox < oz) { + s2.x += dx >= 0 ? ox : -ox; + if (dx >= 0 && s2.vx < 0 || dx < 0 && s2.vx > 0) s2.vx = 0; + } else { + s2.z += dz >= 0 ? oz : -oz; + if (dz >= 0 && s2.vz < 0 || dz < 0 && s2.vz > 0) s2.vz = 0; + } + } + } +} + +// public/aesthetic.computer/lib/cam-doll.mjs +var { abs: abs4 } = Math; +var CamDoll = class { + cam; + sensitivity; + #dolly; + // Keyboard controls. + #W; + #S; + #A; + #D; + #SPACE; + #SHIFT; + #UP; + #DOWN; + #LEFT; + #RIGHT; + // Gamepad button look controls (8BitDo Micro face buttons) + #BTN_LOOK_UP; + #BTN_LOOK_DOWN; + #BTN_LOOK_LEFT; + #BTN_LOOK_RIGHT; + // Button look velocity for smoothing + #buttonLookVelX = 0; + #buttonLookVelY = 0; + #buttonLookAccel = 0.05; + // Even more subtle acceleration + #buttonLookDecel = 0.85; + #buttonLookMaxSpeed = 1; + // Slower max speed + // Stick based controls. + #ANALOG = { + move: { + x: 0, + y: 0, + z: 0 + }, + look: { + x: 0, + y: 0, + z: 0 + } + }; + #penLocked = false; + // 🧗 Optional Quake-style grounded physics (enabled when opts.gravity is set). + // When enabled, SPACE jumps only while grounded, SHIFT crouches (clamped to + // ground, cannot dip below), WASD moves at runSpeed (walkSpeed while crouched), + // and vertical motion is integrated with gravity + a ground clamp. + // Conventions: speeds in world-units/second, gravity in u/s². cam.y is inverted + // relative to world Y (positive cam.y = below origin), hence world-up = -cam.y. + #physicsEnabled = false; + #runSpeed = 0; + #walkSpeed = 0; + #jumpVelocity = 0; + #gravity = 0; + #groundY = 0; + #eyeHeight = 1.5; + #crouchEyeHeight = 0.8; + #simHz = 120; + #worldYVel = 0; + // world-space vertical velocity, + is up + #onGround = true; + #crouchT = 0; + // 0 standing → 1 crouched + #moveDamp = 2e-3; + // Optional XZ rectangle bounding the solid floor. Outside these bounds the + // floor clamp is disabled so the player falls off the edge. Format: + // { xMin, xMax, zMin, zMax } in world units. + #groundBounds = null; + // When true, all physics input is ignored and the camera just free-falls. + // External callers (e.g. a piece with a death state) set this via setFrozen(). + #frozen = false; + // 🎥 Third-person mode. When enabled, the render camera lazily follows a + // target point (player − forward·distance + up·height). The current render + // position is stored in #tpCurrent and lerped toward the target each tick. + // Physics runs on the *logical* player position; the render offset is + // applied at the end of sim and undone at the start of the next. + #thirdPerson = false; + #thirdPersonDistance = 4.5; + #thirdPersonHeight = 1.5; + #thirdPersonFollow = 0.08; + // per-tick lerp factor (≈100 ms to catch up) + #appliedOffset = [0, 0, 0]; + #tpCurrent = null; + // current render offset (cam-space), init lazy + // 💀 Death floor clamp — when set, a frozen (dead) player lands on this + // world Y instead of falling forever. + #deathFloorY = null; + // 🏃 Quake-style air physics. Set to a number to enable strafe-jumping / + // bunny-hop: in air the dolly's horizontal decay is replaced by an + // air-accelerate primitive that adds velocity along wishdir without + // touching perpendicular speed. On the ground a friction+accelerate model + // takes over. Must mirror lib/pmove.mjs so the server arrives at the same + // state. + #airAccel = null; + #groundAccel = 80; + #airCapSpeed = 1.5; + #groundFriction = 6; + #obstacles = null; + #playerRadius = 0.4; + #deathFloorEyeClearance = 0.3; + // 🖖 Disable built-in touch controls for pieces that implement custom mobile UI + #disableTouchControls = false; + constructor(Camera2, Dolly2, opts) { + this.cam = new Camera2(opts.fov || 80, { + z: opts.z || 0, + y: opts.y * -1 || -0.5, + scale: [1, 1, 1] + }); + this.sensitivity = opts.sensitivity || 25e-5; + this.#dolly = new Dolly2(this.cam); + if (opts.disableTouchControls === true) this.#disableTouchControls = true; + if (opts.gravity !== void 0) { + this.#physicsEnabled = true; + this.#gravity = opts.gravity; + this.#runSpeed = opts.runSpeed ?? 10; + this.#walkSpeed = opts.walkSpeed ?? this.#runSpeed * 0.5; + this.#jumpVelocity = opts.jumpVelocity ?? 8; + this.#groundY = opts.groundY ?? 0; + this.#eyeHeight = opts.eyeHeight ?? 1.5; + this.#crouchEyeHeight = opts.crouchEyeHeight ?? this.#eyeHeight * 0.55; + this.#simHz = opts.simHz ?? 120; + this.#moveDamp = this.#runSpeed / this.#simHz / 10; + if (opts.groundBounds) this.#groundBounds = opts.groundBounds; + if (typeof opts.deathFloorY === "number") this.#deathFloorY = opts.deathFloorY; + if (typeof opts.airAccel === "number") { + this.#airAccel = opts.airAccel; + if (typeof opts.groundAccel === "number") this.#groundAccel = opts.groundAccel; + if (typeof opts.airCapSpeed === "number") this.#airCapSpeed = opts.airCapSpeed; + if (typeof opts.groundFriction === "number") this.#groundFriction = opts.groundFriction; + } + if (Array.isArray(opts.obstacles)) this.#obstacles = opts.obstacles; + if (typeof opts.playerRadius === "number") this.#playerRadius = opts.playerRadius; + this.cam.y = -(this.#groundY + this.#eyeHeight); + } + } + /** Clear every held input state. Called on window defocus / visibility loss + * so keys don't "stick" if the user alt-tabs mid-movement. */ + clearHeldKeys() { + this.#W = this.#S = this.#A = this.#D = false; + this.#SPACE = this.#SHIFT = false; + this.#UP = this.#DOWN = this.#LEFT = this.#RIGHT = false; + this.#BTN_LOOK_UP = this.#BTN_LOOK_DOWN = false; + this.#BTN_LOOK_LEFT = this.#BTN_LOOK_RIGHT = false; + this.#ANALOG.move.x = this.#ANALOG.move.y = this.#ANALOG.move.z = 0; + this.#ANALOG.look.x = this.#ANALOG.look.y = this.#ANALOG.look.z = 0; + } + /** Teleport the camera back to standing on the floor at the configured + * ground position, clearing velocity. Used for respawn. */ + respawn(worldX = 0, worldZ = 0) { + this.cam.x = -worldX; + this.cam.z = -worldZ; + this.cam.y = -(this.#groundY + this.#eyeHeight); + this.#worldYVel = 0; + this.#onGround = true; + this.#frozen = false; + this.#dolly.xVel = this.#dolly.yVel = this.#dolly.zVel = 0; + this.clearHeldKeys(); + } + /** When frozen the physics pass is skipped entirely (e.g. during a death + * animation). Player input is already zeroed via clearHeldKeys. */ + setFrozen(v2) { + this.#frozen = !!v2; + if (v2) this.clearHeldKeys(); + } + /** Enable / disable third-person view. On entry the render offset is + * re-initialised so the camera snaps into position; on exit it instantly + * returns to first person. */ + setThirdPerson(v2, distance4, height2) { + this.#thirdPerson = !!v2; + if (typeof distance4 === "number") this.#thirdPersonDistance = distance4; + if (typeof height2 === "number") this.#thirdPersonHeight = height2; + if (!this.#thirdPerson) this.#tpCurrent = null; + } + /** Flip between 1P and 3P. Use for single-tap / middle-mouse bindings. */ + toggleThirdPerson() { + this.setThirdPerson(!this.#thirdPerson); + } + /** True if third-person mode is currently active. */ + get thirdPerson() { + return this.#thirdPerson; + } + /** Apply a one-shot impulse in world space. Horizontal goes through the + * dolly (decay-driven, so it fades over ~10 frames); vertical adds to + * worldYVel directly. Used by external systems like grenade explosions. */ + applyImpulse({ x = 0, y = 0, z = 0 } = {}) { + const scale7 = this.#airAccel !== null ? 1 / this.#simHz : 1; + if (x) this.#dolly.xVel += -x * scale7; + if (z) this.#dolly.zVel += -z * scale7; + if (y) { + this.#worldYVel += y; + if (y > 0) this.#onGround = false; + } + } + /** Set movement key state directly (for mobile UI buttons). */ + setMovement(dir, pressed) { + if (dir === "forward") this.#W = pressed; + else if (dir === "back") this.#S = pressed; + else if (dir === "left") this.#A = pressed; + else if (dir === "right") this.#D = pressed; + else if (dir === "jump") this.#SPACE = pressed; + else if (dir === "crouch") this.#SHIFT = pressed; + } + /** Live telemetry for HUDs / debug panels. */ + get physics() { + if (!this.#physicsEnabled) return null; + return { + fov: this.cam.fov, + runSpeed: this.#runSpeed, + walkSpeed: this.#walkSpeed, + jumpVelocity: this.#jumpVelocity, + gravity: this.#gravity, + onGround: this.#onGround, + crouch: this.#crouchT, + worldYVel: this.#worldYVel, + thirdPerson: this.#thirdPerson, + // Logical player position in the camera's negated-world coordinate + // system (useful for anchoring body parts at the player, not at the + // offset render camera). + playerCamX: this.cam.x - this.#appliedOffset[0], + playerCamY: this.cam.y - this.#appliedOffset[1], + playerCamZ: this.cam.z - this.#appliedOffset[2] + }; + } + sim() { + if (this.#appliedOffset[0] !== 0 || this.#appliedOffset[1] !== 0 || this.#appliedOffset[2] !== 0) { + this.cam.x -= this.#appliedOffset[0]; + this.cam.y -= this.#appliedOffset[1]; + this.cam.z -= this.#appliedOffset[2]; + this.#appliedOffset[0] = this.#appliedOffset[1] = this.#appliedOffset[2] = 0; + } + let forward = 0, updown = 0, strafe = 0; + if (this.#physicsEnabled) { + const speed = this.#SHIFT ? this.#walkSpeed : this.#runSpeed; + const push = speed / this.#simHz / 10; + if (this.#W) forward = -push; + if (this.#S) forward = push; + if (this.#A) strafe = push; + if (this.#D) strafe = -push; + if ((this.#W || this.#S || this.#A || this.#D) && this.#airAccel === null) { + this.#dolly.push({ x: strafe, y: 0, z: forward }); + } + } else { + if (this.#W) forward = -this.sensitivity; + if (this.#S) forward = this.sensitivity; + if (this.#A) strafe = this.sensitivity; + if (this.#D) strafe = -this.sensitivity; + if (this.#SPACE) updown = -this.sensitivity; + if (this.#SHIFT) updown = this.sensitivity; + if (this.#W || this.#S || this.#A || this.#D || this.#SPACE || this.#SHIFT) { + this.#dolly.push({ x: strafe, y: updown, z: forward }); + } + } + if ((abs4(this.#ANALOG.move.z) > 0 || abs4(this.#ANALOG.move.x) > 0) && this.#airAccel === null) { + this.#dolly.push({ + x: this.#ANALOG.move.x, + y: 0, + z: this.#ANALOG.move.z + }); + } + if (abs4(this.#ANALOG.look.x) > 0 || abs4(this.#ANALOG.look.y) > 0) { + this.cam.rotX += this.#ANALOG.look.x; + this.cam.rotY += this.#ANALOG.look.y; + } + if (this.#BTN_LOOK_UP || this.#BTN_LOOK_DOWN) { + if (this.#BTN_LOOK_UP) this.#buttonLookVelY += this.#buttonLookAccel; + if (this.#BTN_LOOK_DOWN) this.#buttonLookVelY -= this.#buttonLookAccel; + if (this.#buttonLookVelY > this.#buttonLookMaxSpeed) this.#buttonLookVelY = this.#buttonLookMaxSpeed; + if (this.#buttonLookVelY < -this.#buttonLookMaxSpeed) this.#buttonLookVelY = -this.#buttonLookMaxSpeed; + } else { + this.#buttonLookVelY *= this.#buttonLookDecel; + if (abs4(this.#buttonLookVelY) < 0.01) this.#buttonLookVelY = 0; + } + if (this.#BTN_LOOK_LEFT || this.#BTN_LOOK_RIGHT) { + if (this.#BTN_LOOK_RIGHT) this.#buttonLookVelX += this.#buttonLookAccel; + if (this.#BTN_LOOK_LEFT) this.#buttonLookVelX -= this.#buttonLookAccel; + if (this.#buttonLookVelX > this.#buttonLookMaxSpeed) this.#buttonLookVelX = this.#buttonLookMaxSpeed; + if (this.#buttonLookVelX < -this.#buttonLookMaxSpeed) this.#buttonLookVelX = -this.#buttonLookMaxSpeed; + } else { + this.#buttonLookVelX *= this.#buttonLookDecel; + if (abs4(this.#buttonLookVelX) < 0.01) this.#buttonLookVelX = 0; + } + this.cam.rotX += this.#buttonLookVelY; + this.cam.rotY += this.#buttonLookVelX; + if (this.#UP) this.cam.rotX += 1; + if (this.#DOWN) this.cam.rotX -= 1; + if (this.#LEFT) this.cam.rotY -= 1; + if (this.#RIGHT) this.cam.rotY += 1; + const maxPitch = 89; + if (this.cam.rotX > maxPitch) this.cam.rotX = maxPitch; + if (this.cam.rotX < -maxPitch) this.cam.rotX = -maxPitch; + if (this.#physicsEnabled && this.#airAccel !== null) { + this.#dolly.dec = 1; + const dt = 1 / this.#simHz; + let wvx = -this.#dolly.xVel * this.#simHz; + let wvz = -this.#dolly.zVel * this.#simHz; + let ix = 0, iz = 0; + if (this.#D) ix += 1; + if (this.#A) ix -= 1; + if (this.#W) iz += 1; + if (this.#S) iz -= 1; + if (this.#moveDamp > 0) { + const ax = this.#ANALOG.move.x / this.#moveDamp; + const az = this.#ANALOG.move.z / this.#moveDamp; + ix += -ax > 1 ? 1 : -ax < -1 ? -1 : -ax; + iz += -az > 1 ? 1 : -az < -1 ? -1 : -az; + } + const ilen = Math.hypot(ix, iz); + if (ilen > 1) { + ix /= ilen; + iz /= ilen; + } + const speed = this.#SHIFT ? this.#walkSpeed : this.#runSpeed; + const yr = this.cam.rotY * Math.PI / 180; + const sy = Math.sin(yr), cy = Math.cos(yr); + const wx = (ix * cy + iz * sy) * speed; + const wz = (-ix * sy + iz * cy) * speed; + const wishLen = Math.hypot(wx, wz); + const wdx = wishLen > 1e-6 ? wx / wishLen : 0; + const wdz = wishLen > 1e-6 ? wz / wishLen : 0; + if (!this.#frozen && this.#SPACE && this.#onGround) { + this.#worldYVel = this.#jumpVelocity; + this.#onGround = false; + } + if (this.#onGround && !this.#frozen) { + const sp = Math.hypot(wvx, wvz); + if (sp < 1e-4) { + wvx = 0; + wvz = 0; + } else { + const stop = Math.max(sp, this.#runSpeed * 0.5); + const drop = stop * this.#groundFriction * dt; + const k = Math.max(0, sp - drop) / sp; + wvx *= k; + wvz *= k; + } + } + if (wishLen > 1e-6 && !this.#frozen) { + const accel = this.#onGround ? this.#groundAccel : this.#airAccel; + const cap = this.#onGround ? wishLen : Math.min(wishLen, this.#airCapSpeed); + const cur = wvx * wdx + wvz * wdz; + const addspeed = cap - cur; + if (addspeed > 0) { + let mag = accel * dt * cap; + if (mag > addspeed) mag = addspeed; + wvx += wdx * mag; + wvz += wdz * mag; + } + } + this.#dolly.xVel = -wvx / this.#simHz; + this.#dolly.zVel = -wvz / this.#simHz; + } + this.#dolly.sim(); + if (this.#airAccel !== null && this.#obstacles) { + const ws = { + x: -this.cam.x, + z: -this.cam.z, + y: -this.cam.y, + vx: -this.#dolly.xVel * this.#simHz, + vz: -this.#dolly.zVel * this.#simHz + }; + resolveObstacles(ws, { + obstacles: this.#obstacles, + playerRadius: this.#playerRadius, + eyeHeight: this.#eyeHeight + }); + this.cam.x = -ws.x; + this.cam.z = -ws.z; + this.#dolly.xVel = -ws.vx / this.#simHz; + this.#dolly.zVel = -ws.vz / this.#simHz; + } + if (this.#physicsEnabled) { + const dt = 1 / this.#simHz; + if (!this.#frozen && this.#SPACE && this.#onGround) { + this.#worldYVel = this.#jumpVelocity; + this.#onGround = false; + } + if (!this.#onGround || this.#frozen) { + this.#worldYVel -= this.#gravity * dt; + this.cam.y -= this.#worldYVel * dt; + } + const crouchTarget = !this.#frozen && this.#SHIFT ? 1 : 0; + this.#crouchT += (crouchTarget - this.#crouchT) * 0.25; + if (this.#crouchT < 5e-4 && crouchTarget === 0) this.#crouchT = 0; + if (this.#crouchT > 0.9995 && crouchTarget === 1) this.#crouchT = 1; + const effEyeHeight = this.#eyeHeight + (this.#crouchEyeHeight - this.#eyeHeight) * this.#crouchT; + let onSolidGround = true; + if (this.#groundBounds) { + const px = -this.cam.x; + const pz = -this.cam.z; + const b2 = this.#groundBounds; + onSolidGround = px >= b2.xMin && px <= b2.xMax && pz >= b2.zMin && pz <= b2.zMax; + } + const floorCamY = -(this.#groundY + effEyeHeight); + if (onSolidGround && !this.#frozen) { + if (this.cam.y >= floorCamY) { + this.cam.y = floorCamY; + if (this.#worldYVel < 0) this.#worldYVel = 0; + this.#onGround = true; + } else if (this.#onGround) { + this.cam.y = floorCamY; + } + } else { + this.#onGround = false; + } + if (this.#frozen && this.#deathFloorY !== null) { + const lavaCamY = -(this.#deathFloorY + this.#deathFloorEyeClearance); + if (this.cam.y >= lavaCamY) { + this.cam.y = lavaCamY; + this.#worldYVel = 0; + } + } + } + if (this.#thirdPerson) { + const rx = this.cam.rotX * Math.PI / 180; + const ry = this.cam.rotY * Math.PI / 180; + const cp = Math.cos(rx); + const fx = Math.sin(ry) * cp; + const fy = Math.sin(rx); + const fz = Math.cos(ry) * cp; + const d2 = this.#thirdPersonDistance; + const h = this.#thirdPersonHeight; + const targetX = d2 * fx; + const targetZ = d2 * fz; + const targetY = d2 * fy - h; + if (!this.#tpCurrent) { + this.#tpCurrent = [targetX, targetY, targetZ]; + } else { + const k = this.#thirdPersonFollow; + this.#tpCurrent[0] += (targetX - this.#tpCurrent[0]) * k; + this.#tpCurrent[1] += (targetY - this.#tpCurrent[1]) * k; + this.#tpCurrent[2] += (targetZ - this.#tpCurrent[2]) * k; + } + this.#appliedOffset[0] = this.#tpCurrent[0]; + this.#appliedOffset[1] = this.#tpCurrent[1]; + this.#appliedOffset[2] = this.#tpCurrent[2]; + this.cam.x += this.#appliedOffset[0]; + this.cam.y += this.#appliedOffset[1]; + this.cam.z += this.#appliedOffset[2]; + } + } + // TODO: Also add touch controls here. + act(e2) { + if (e2.is("defocus")) { + this.clearHeldKeys(); + return; + } + if (e2.is("keyboard:down:w")) this.#W = true; + if (e2.is("keyboard:down:s")) this.#S = true; + if (e2.is("keyboard:down:a")) this.#A = true; + if (e2.is("keyboard:down:d")) this.#D = true; + if (e2.is("keyboard:up:w")) this.#W = false; + if (e2.is("keyboard:up:s")) this.#S = false; + if (e2.is("keyboard:up:a")) this.#A = false; + if (e2.is("keyboard:up:d")) this.#D = false; + if (e2.is("keyboard:down:space")) this.#SPACE = true; + if (e2.ctrl === false && e2.is("keyboard:down:shift")) this.#SHIFT = true; + if (e2.is("keyboard:up:space")) this.#SPACE = false; + if (e2.is("keyboard:up:shift")) this.#SHIFT = false; + if (e2.is("keyboard:down:arrowup")) this.#UP = true; + if (e2.is("keyboard:down:arrowdown")) this.#DOWN = true; + if (e2.is("keyboard:down:arrowleft")) this.#LEFT = true; + if (e2.is("keyboard:down:arrowright")) this.#RIGHT = true; + if (e2.is("keyboard:up:arrowup")) this.#UP = false; + if (e2.is("keyboard:up:arrowdown")) this.#DOWN = false; + if (e2.is("keyboard:up:arrowleft")) this.#LEFT = false; + if (e2.is("keyboard:up:arrowright")) this.#RIGHT = false; + if (e2.is("pen:locked")) this.#penLocked = true; + if (e2.is("pen:unlocked")) this.#penLocked = false; + if (!this.#penLocked && e2.is("draw") || this.#penLocked && e2.is("move")) { + if (this.cam.type === "perspective") { + this.cam.rotX -= e2.delta.y / 3.5; + this.cam.rotY += e2.delta.x / 3.5; + const maxPitch = 89; + if (this.cam.rotX > maxPitch) this.cam.rotX = maxPitch; + if (this.cam.rotX < -maxPitch) this.cam.rotX = -maxPitch; + } + } + if (!this.#disableTouchControls) { + if (e2.is("touch:2")) this.#W = true; + if (e2.is("lift:2")) this.#W = false; + if (e2.is("touch:3")) this.#S = true; + if (e2.is("lift:3")) this.#S = false; + } + if (e2.is("gamepad")) { + const deadzone = 0.05; + const moveDamp = this.#moveDamp; + const lookDamp = 1; + const gamepadId = e2.gamepadId || "standard"; + const is8BitDoMicro = gamepadId.includes("8BitDo Micro"); + const mapping = GAMEPAD_MAPPINGS[gamepadId] || GAMEPAD_MAPPINGS["standard"]; + if (e2.is("gamepad:0:axis:1")) { + if (abs4(e2.value) < deadzone) { + this.#ANALOG.move.z = 0; + } else { + this.#ANALOG.move.z = e2.value * moveDamp; + } + } + if (e2.is("gamepad:0:axis:0")) { + if (abs4(e2.value) < deadzone) { + this.#ANALOG.move.x = 0; + } else { + this.#ANALOG.move.x = -e2.value * moveDamp; + } + } + if (e2.button !== void 0 && e2.action) { + const btn = e2.button; + const isPressed = e2.action === "push"; + if (is8BitDoMicro) { + if (btn === 0) this.#BTN_LOOK_RIGHT = isPressed; + if (btn === 1) this.#BTN_LOOK_DOWN = isPressed; + if (btn === 3) this.#BTN_LOOK_UP = isPressed; + if (btn === 4) this.#BTN_LOOK_LEFT = isPressed; + } + } + if (!is8BitDoMicro) { + if (e2.is("gamepad:0:axis:3:move")) { + if (abs4(e2.value) < deadzone) { + this.#ANALOG.look.x = 0; + } else { + this.#ANALOG.look.x = -e2.value * lookDamp; + } + } + if (e2.is("gamepad:0:axis:2:move")) { + if (abs4(e2.value) < deadzone) { + this.#ANALOG.look.y = 0; + } else { + this.#ANALOG.look.y = e2.value * lookDamp; + } + } + } + } + } +}; + +// public/aesthetic.computer/disks/common/fonts.mjs +var fonts_exports = {}; +__export(fonts_exports, { + MatrixChunky8: () => MatrixChunky8, + font_1: () => font_1, + microtype: () => microtype, + unifont: () => unifont +}); +var font_1 = { + glyphHeight: 10, + glyphWidth: 6, + proportional: false, + // Monospace font - fixed character width + bdfFallback: "6x10", + // X11 Misc-Fixed 6x10 for Cyrillic, Greek, accented Latin, etc. + 0: "numbers/0 - 2021.12.16.18.28.06", + 1: "numbers/1 - 2021.12.16.17.56.44", + 2: "numbers/2 - 2021.12.16.17.59.01", + 3: "numbers/3 - 2021.12.16.17.59.52", + 4: "numbers/4 - 2021.12.16.18.00.56", + 5: "numbers/5 - 2021.12.16.18.01.27", + 6: "numbers/6 - 2021.12.16.18.02.26", + 7: "numbers/7 - 2021.12.16.18.02.50", + 8: "numbers/8 - 2021.12.16.18.03.31", + 9: "numbers/9 - 2021.12.16.18.04.15", + a: "lowercase/a - 2022.1.11.16.12.07", + b: "lowercase/b - 2022.1.11.16.12.57", + c: "lowercase/c - 2022.1.11.16.14.15", + d: "lowercase/d - 2022.1.11.16.14.53", + e: "lowercase/e - 2022.1.11.16.15.35", + f: "lowercase/f - 2022.1.11.16.18.40", + g: "lowercase/g - 2022.1.11.16.20.34", + h: "lowercase/h - 2022.1.11.16.22.10", + i: "lowercase/i - 2022.1.11.16.23.36", + \u00ED: "lowercase/\xED - 2025.6.25.01.00.00", + j: "lowercase/j - 2022.1.11.16.25.14", + k: "lowercase/k - 2022.1.11.16.29.25", + l: "lowercase/l - 2022.1.11.16.30.34", + m: "lowercase/m - 2022.1.11.16.31.12", + n: "lowercase/n - 2022.1.11.16.31.51", + o: "lowercase/o - 2022.1.11.16.32.30", + p: "lowercase/p - 2022.1.11.16.35.17", + q: "lowercase/q - 2022.1.11.16.36.26", + r: "lowercase/r - 2022.1.11.16.39.47", + s: "lowercase/s - 2022.1.11.16.41.22", + t: "lowercase/t - 2022.1.11.16.42.16", + u: "lowercase/u - 2022.1.11.16.43.31", + v: "lowercase/v - 2022.1.11.16.44.21", + w: "lowercase/w - 2022.1.11.16.45.21", + x: "lowercase/x - 2022.1.11.16.45.58", + y: "lowercase/y - 2022.1.11.16.47.21", + z: "lowercase/z - 2022.1.11.16.48.15", + \u00F8: "lowercase/oslash - 2025.5.9.10.30.15.123", + // Updated Danish lowercase o-slash + A: "uppercase/A - 2022.1.11.18.30.32", + B: "uppercase/B - 2022.1.11.18.13.14", + C: "uppercase/C - 2022.1.11.18.14.00", + D: "uppercase/D - 2022.1.11.18.14.38", + E: "uppercase/E - 2022.1.11.18.15.14", + F: "uppercase/F - 2022.1.11.18.15.47", + G: "uppercase/G - 2022.1.11.18.16.34", + H: "uppercase/H - 2022.1.11.18.17.13", + I: "uppercase/I - 2022.1.11.18.18.01", + J: "uppercase/J - 2022.1.11.18.18.41", + K: "uppercase/K - 2022.1.11.18.19.20", + L: "uppercase/L - 2022.1.11.18.19.53", + M: "uppercase/M - 2022.1.11.18.24.51", + N: "uppercase/N - 2022.1.11.18.31.55", + O: "uppercase/O - 2022.1.11.18.32.33", + P: "uppercase/P - 2022.1.11.18.33.17", + Q: "uppercase/Q - 2022.1.11.18.34.00", + R: "uppercase/R - 2022.1.11.18.35.27", + S: "uppercase/S - 2022.1.11.18.36.12", + T: "uppercase/T - 2022.1.11.18.36.42", + U: "uppercase/U - 2022.1.11.18.37.17", + V: "uppercase/V - 2022.1.11.18.37.54", + W: "uppercase/W - 2022.1.11.18.39.11", + X: "uppercase/X - 2022.1.11.18.50.18", + Y: "uppercase/Y - 2022.1.11.18.52.28", + Z: "uppercase/Z - 2022.1.11.18.53.22", + \u00D8: "uppercase/Oslash - 2025.5.9.10.30.15.123", + // Updated Danish uppercase O-slash + "@": "symbols/at - 2022.1.11.17.09.12", + "&": "symbols/ampersand - 2022.1.11.18.06.40", + "#": "symbols/hash - 2022.1.11.17.04.12", + $: "symbols/dollar - 2022.1.11.16.59.42", + "'": "symbols/apostrophe - 2022.1.11.18.09.59", + "*": "symbols/asterisk - 2022.1.11.17.00.45", + "\\": "symbols/backslash - 2022.1.11.17.11.17", + "^": "symbols/caret - 2022.1.11.17.07.56", + ":": "symbols/colon - 2022.1.11.18.15.47", + ",": "symbols/comma - 2022.1.11.18.12.57", + "=": "symbols/equal - 2022.1.11.17.02.12", + "!": "symbols/exclamation - 2022.1.11.18.10.47", + ">": "symbols/greater than - 2022.1.11.16.58.41", + "{": "symbols/L brace - 2022.1.11.16.53.15", + "[": "symbols/L bracket - 2022.1.11.16.54.53", + "(": "symbols/L paren - 2022.1.11.16.56.12", + "<": "symbols/less than - 2022.1.11.16.58.05", + "-": "symbols/minus - 2022.1.11.17.01.14", + "%": "symbols/percent - 2022.1.11.17.06.43", + ".": "symbols/period - 2022.1.11.18.13.56", + "+": "symbols/plus - 2022.1.11.17.01.43", + "?": "symbols/question mark - 2022.1.11.18.09.24", + '"': "symbols/quotes - 2022.1.11.18.10.19", + "}": "symbols/R brace - 2022.1.11.16.54.15", + "]": "symbols/R bracket - 2022.1.11.16.55.19", + ")": "symbols/R paren - 2022.1.11.16.57.09", + ";": "symbols/semi colon - 2022.1.11.18.14.51", + "/": "symbols/slash - 2022.1.11.17.03.28", + "~": "symbols/tilde - 2022.1.11.18.08.35", + _: "symbols/underscore - 2022.1.11.17.04.46", + "|": "symbols/vertical line - 2022.1.11.18.07.22", + "\u2026": "symbols/ellipsis - 2024.4.27.09.25.16.717" +}; +var unifont = { + glyphHeight: 16, + glyphWidth: 8, + proportional: false, + // Keep as monospace for Latin characters (primary use case) + bdfFont: "unifont-16.0.03" + // Specify the exact BDF file to use +}; +var MatrixChunky8 = { + glyphHeight: 8, + // glyphWidth removed - using character-specific advance widths from BDF DWIDTH + baseline: 0, + // No global baseline - individual BDF offsets handle all positioning + bdfFont: "MatrixChunky8", + // Indicates this uses the BDF endpoint + proportional: true, + // Flag indicating this is a proportional font + // Character advance widths for proportional spacing + advances: { + " ": 2, + "!": 2, + '"': 4, + "#": 6, + "$": 4, + "%": 4, + "&": 5, + "'": 2, + "(": 3, + // Match native BDF DWIDTH (was 4 — overshot kerning) + ")": 3, + // Match native BDF DWIDTH (was 4 — overshot kerning) + "*": 6, + "+": 4, + ",": 2, + "-": 4, + ".": 2, + "/": 4, + "0": 4, + "1": 4, + "2": 4, + "3": 4, + "4": 4, + "5": 4, + "6": 4, + "7": 4, + "8": 4, + "9": 4, + ":": 2, + ";": 2, + "<": 4, + "=": 4, + ">": 4, + "?": 4, + "@": 5, + "A": 4, + "B": 4, + "C": 4, + "D": 4, + "E": 4, + "F": 4, + "G": 5, + "H": 5, + "I": 4, + "J": 4, + "K": 4, + "L": 4, + "M": 6, + "N": 5, + "O": 6, + // Extra breathing room after O (e.g. "OL" in SOLD) + "P": 4, + "Q": 5, + "R": 4, + "S": 4, + "T": 4, + "U": 4, + "V": 4, + "W": 6, + "X": 4, + "Y": 4, + "Z": 4, + "[": 4, + "\\": 4, + "]": 4, + "^": 4, + "_": 4, + "`": 3, + "a": 4, + "b": 4, + "c": 4, + "d": 4, + "e": 4, + "f": 4, + "g": 4, + "h": 4, + "i": 4, + "j": 4, + "k": 4, + "l": 4, + "m": 6, + "n": 4, + "o": 4, + "p": 4, + "q": 4, + "r": 4, + "s": 4, + "t": 4, + "u": 4, + "v": 4, + "w": 6, + "x": 4, + "y": 4, + "z": 4, + "{": 4, + "|": 2, + "}": 4, + "~": 4 + }, + // BDF overrides for character positioning adjustments + bdfOverrides: { + // Star advance width (6) handles right-side spacing. + // No vertical overrides: BDF bbox metrics already carry each glyph's + // baseline offset, so 'y' descends on its own. + } +}; +var microtype = { + glyphHeight: 5, + glyphWidth: 4, + // Increased from 3 to 4 for better spacing + proportional: false, + // Monospace font - fixed character width + // Numbers (0-9) + 0: "microtype/numbers/0", + 1: "microtype/numbers/1", + 2: "microtype/numbers/2", + 3: "microtype/numbers/3", + 4: "microtype/numbers/4", + 5: "microtype/numbers/5", + 6: "microtype/numbers/6", + 7: "microtype/numbers/7", + 8: "microtype/numbers/8", + 9: "microtype/numbers/9", + // Uppercase letters (A-Z) + A: "microtype/uppercase/A", + B: "microtype/uppercase/B", + C: "microtype/uppercase/C", + D: "microtype/uppercase/D", + E: "microtype/uppercase/E", + F: "microtype/uppercase/F", + G: "microtype/uppercase/G", + H: "microtype/uppercase/H", + I: "microtype/uppercase/I", + J: "microtype/uppercase/J", + K: "microtype/uppercase/K", + L: "microtype/uppercase/L", + M: "microtype/uppercase/M", + N: "microtype/uppercase/N", + O: "microtype/uppercase/O", + P: "microtype/uppercase/P", + Q: "microtype/uppercase/Q", + R: "microtype/uppercase/R", + S: "microtype/uppercase/S", + T: "microtype/uppercase/T", + U: "microtype/uppercase/U", + V: "microtype/uppercase/V", + W: "microtype/uppercase/W", + X: "microtype/uppercase/X", + Y: "microtype/uppercase/Y", + Z: "microtype/uppercase/Z", + // Lowercase letters (a-z) + a: "microtype/lowercase/a", + b: "microtype/lowercase/b", + c: "microtype/lowercase/c", + d: "microtype/lowercase/d", + e: "microtype/lowercase/e", + f: "microtype/lowercase/f", + g: "microtype/lowercase/g", + h: "microtype/lowercase/h", + i: "microtype/lowercase/i", + j: "microtype/lowercase/j", + k: "microtype/lowercase/k", + l: "microtype/lowercase/l", + m: "microtype/lowercase/m", + n: "microtype/lowercase/n", + o: "microtype/lowercase/o", + p: "microtype/lowercase/p", + q: "microtype/lowercase/q", + r: "microtype/lowercase/r", + s: "microtype/lowercase/s", + t: "microtype/lowercase/t", + u: "microtype/lowercase/u", + v: "microtype/lowercase/v", + w: "microtype/lowercase/w", + x: "microtype/lowercase/x", + y: "microtype/lowercase/y", + z: "microtype/lowercase/z" +}; + +// public/aesthetic.computer/dep/idb.js +var e; +var t; +var n = /* @__PURE__ */ new WeakMap(); +var r = /* @__PURE__ */ new WeakMap(); +var o = /* @__PURE__ */ new WeakMap(); +var s = /* @__PURE__ */ new WeakMap(); +var a = /* @__PURE__ */ new WeakMap(); +var i = { get(e2, t2, n2) { + if (e2 instanceof IDBTransaction) { + if ("done" === t2) return r.get(e2); + if ("objectStoreNames" === t2) return e2.objectStoreNames || o.get(e2); + if ("store" === t2) return n2.objectStoreNames[1] ? void 0 : n2.objectStore(n2.objectStoreNames[0]); + } + return u(e2[t2]); +}, set: (e2, t2, n2) => (e2[t2] = n2, true), has: (e2, t2) => e2 instanceof IDBTransaction && ("done" === t2 || "store" === t2) || t2 in e2 }; +function c3(e2) { + return e2 !== IDBDatabase.prototype.transaction || "objectStoreNames" in IDBTransaction.prototype ? (t || (t = [IDBCursor.prototype.advance, IDBCursor.prototype.continue, IDBCursor.prototype.continuePrimaryKey])).includes(e2) ? function(...t2) { + return e2.apply(l(this), t2), u(n.get(this)); + } : function(...t2) { + return u(e2.apply(l(this), t2)); + } : function(t2, ...n2) { + const r2 = e2.call(l(this), t2, ...n2); + return o.set(r2, t2.sort ? t2.sort() : [t2]), u(r2); + }; +} +function d(t2) { + return "function" == typeof t2 ? c3(t2) : (t2 instanceof IDBTransaction && (function(e2) { + if (r.has(e2)) return; + const t3 = new Promise(((t4, n3) => { + const r2 = () => { + e2.removeEventListener("complete", o2), e2.removeEventListener("error", s2), e2.removeEventListener("abort", s2); + }, o2 = () => { + t4(), r2(); + }, s2 = () => { + n3(e2.error || new DOMException("AbortError", "AbortError")), r2(); + }; + e2.addEventListener("complete", o2), e2.addEventListener("error", s2), e2.addEventListener("abort", s2); + })); + r.set(e2, t3); + })(t2), n2 = t2, (e || (e = [IDBDatabase, IDBObjectStore, IDBIndex, IDBCursor, IDBTransaction])).some(((e2) => n2 instanceof e2)) ? new Proxy(t2, i) : t2); + var n2; +} +function u(e2) { + if (e2 instanceof IDBRequest) return (function(e3) { + const t3 = new Promise(((t4, n2) => { + const r2 = () => { + e3.removeEventListener("success", o2), e3.removeEventListener("error", s2); + }, o2 = () => { + t4(u(e3.result)), r2(); + }, s2 = () => { + n2(e3.error), r2(); + }; + e3.addEventListener("success", o2), e3.addEventListener("error", s2); + })); + return t3.then(((t4) => { + t4 instanceof IDBCursor && n.set(t4, e3); + })).catch((() => { + })), a.set(t3, e3), t3; + })(e2); + if (s.has(e2)) return s.get(e2); + const t2 = d(e2); + return t2 !== e2 && (s.set(e2, t2), a.set(t2, e2)), t2; +} +var l = (e2) => a.get(e2); +function f(e2, t2, { blocked: n2, upgrade: r2, blocking: o2, terminated: s2 } = {}) { + const a2 = indexedDB.open(e2, t2), i2 = u(a2); + return r2 && a2.addEventListener("upgradeneeded", ((e3) => { + r2(u(a2.result), e3.oldVersion, e3.newVersion, u(a2.transaction), e3); + })), n2 && a2.addEventListener("blocked", ((e3) => n2(e3.oldVersion, e3.newVersion, e3))), i2.then(((e3) => { + s2 && e3.addEventListener("close", (() => s2())), o2 && e3.addEventListener("versionchange", ((e4) => o2(e4.oldVersion, e4.newVersion, e4))); + })).catch((() => { + })), i2; +} +var D = ["get", "getKey", "getAll", "getAllKeys", "count"]; +var v = ["put", "add", "delete", "clear"]; +var b = /* @__PURE__ */ new Map(); +function I(e2, t2) { + if (!(e2 instanceof IDBDatabase) || t2 in e2 || "string" != typeof t2) return; + if (b.get(t2)) return b.get(t2); + const n2 = t2.replace(/FromIndex$/, ""), r2 = t2 !== n2, o2 = v.includes(n2); + if (!(n2 in (r2 ? IDBIndex : IDBObjectStore).prototype) || !o2 && !D.includes(n2)) return; + const s2 = async function(e3, ...t3) { + const s3 = this.transaction(e3, o2 ? "readwrite" : "readonly"); + let a2 = s3.store; + return r2 && (a2 = a2.index(t3.shift())), (await Promise.all([a2[n2](...t3), o2 && s3.done]))[0]; + }; + return b.set(t2, s2), s2; +} +i = ((e2) => ({ ...e2, get: (t2, n2, r2) => I(t2, n2) || e2.get(t2, n2, r2), has: (t2, n2) => !!I(t2, n2) || e2.has(t2, n2) }))(i); + +// public/aesthetic.computer/lib/type.mjs +var glyphDbPromise = null; +var GLYPH_CACHE_VERSION = 2; +var GLYPH_STORE_NAME = "glyphs"; +var META_STORE_NAME = "glyph-meta"; +var glyphMemoryCache = /* @__PURE__ */ new Map(); +var glyphCacheInitialized = false; +var glyphCacheInitPromise = null; +async function initGlyphCache() { + if (glyphCacheInitialized) return glyphDbPromise; + if (glyphCacheInitPromise) return glyphCacheInitPromise; + glyphCacheInitPromise = (async () => { + try { + glyphDbPromise = await f("ac-glyph-cache", GLYPH_CACHE_VERSION, { + upgrade(db, oldVersion, newVersion) { + if (db.objectStoreNames.contains(GLYPH_STORE_NAME)) { + db.deleteObjectStore(GLYPH_STORE_NAME); + } + if (db.objectStoreNames.contains(META_STORE_NAME)) { + db.deleteObjectStore(META_STORE_NAME); + } + db.createObjectStore(GLYPH_STORE_NAME); + db.createObjectStore(META_STORE_NAME); + console.log(`\u{1F524} Glyph cache upgraded: v${oldVersion} \u2192 v${newVersion}`); + } + }); + glyphCacheInitialized = true; + return glyphDbPromise; + } catch (err) { + if (!checkPackMode()) { + console.warn("\u{1F524} Glyph cache unavailable:", err.message); + } + glyphCacheInitialized = true; + return null; + } + })(); + return glyphCacheInitPromise; +} +async function cacheGlyph(fontName, char, glyphData) { + if (!glyphData) return; + const key = `${fontName}:${char}`; + glyphMemoryCache.set(key, glyphData); + const db = await initGlyphCache(); + if (!db) return; + try { + await db.put(GLYPH_STORE_NAME, glyphData, key); + } catch (err) { + } +} +async function cacheGlyphsBulk(fontName, glyphsMap) { + if (!glyphsMap || typeof glyphsMap !== "object") return; + const db = await initGlyphCache(); + for (const [char, data] of Object.entries(glyphsMap)) { + if (data) { + glyphMemoryCache.set(`${fontName}:${char}`, data); + } + } + if (!db) return; + try { + const tx = db.transaction(GLYPH_STORE_NAME, "readwrite"); + const store2 = tx.objectStore(GLYPH_STORE_NAME); + const promises = Object.entries(glyphsMap).map(([char, data]) => { + if (data) { + return store2.put(data, `${fontName}:${char}`); + } + }).filter(Boolean); + await Promise.all([...promises, tx.done]); + } catch (err) { + console.warn("\u{1F524} Bulk glyph cache write failed:", err.message); + } +} +async function preWarmGlyphCache(fontName) { + const db = await initGlyphCache(); + if (!db) return 0; + try { + const tx = db.transaction(GLYPH_STORE_NAME, "readonly"); + const store2 = tx.objectStore(GLYPH_STORE_NAME); + const allKeys = await store2.getAllKeys(); + const fontKeys = allKeys.filter((k) => typeof k === "string" && k.startsWith(`${fontName}:`)); + if (fontKeys.length === 0) return 0; + const loadPromises = fontKeys.map(async (key) => { + const data = await db.get(GLYPH_STORE_NAME, key); + if (data) { + glyphMemoryCache.set(key, data); + } + }); + await Promise.all(loadPromises); + return fontKeys.length; + } catch (err) { + console.warn("\u{1F524} Glyph cache pre-warm failed:", err.message); + return 0; + } +} +async function clearGlyphCache(fontName) { + const db = await initGlyphCache(); + for (const key of glyphMemoryCache.keys()) { + if (!fontName || key.startsWith(`${fontName}:`)) { + glyphMemoryCache.delete(key); + } + } + if (!db) return; + try { + if (fontName) { + const tx = db.transaction(GLYPH_STORE_NAME, "readwrite"); + const store2 = tx.objectStore(GLYPH_STORE_NAME); + const allKeys = await store2.getAllKeys(); + for (const key of allKeys) { + if (typeof key === "string" && key.startsWith(`${fontName}:`)) { + await store2.delete(key); + } + } + await tx.done; + } else { + await db.clear(GLYPH_STORE_NAME); + } + console.log(`\u{1F524} Glyph cache cleared${fontName ? ` for ${fontName}` : ""}`); + } catch (err) { + console.warn("\u{1F524} Glyph cache clear failed:", err.message); + } +} +if (typeof window !== "undefined") { + window.acGlyphCache = { + preWarm: preWarmGlyphCache, + clear: clearGlyphCache, + stats: () => ({ + memorySize: glyphMemoryCache.size, + initialized: glyphCacheInitialized + }) + }; +} +var { floor: floor9, min: min7 } = Math; +var { keys: keys2, entries } = Object; +var undef = void 0; +var Typeface = class { + data; + name; + glyphs = {}; + advanceCache = /* @__PURE__ */ new Map(); + //loaded = false; + constructor(name = "font_1") { + this.name = name; + this.data = fonts_exports[name] || font_1; + } + // Return only the character index from the data. + get glyphData() { + const glyphsOnly = { ...this.data }; + delete glyphsOnly.glyphHeight; + delete glyphsOnly.glyphWidth; + return glyphsOnly; + } + get blockWidth() { + if (this.data.proportional === true || this.data.bdfFont === "MatrixChunky8" || this.name === "MatrixChunky8") { + return 4; + } + return this.data.glyphWidth; + } + get blockHeight() { + return this.data.glyphHeight; + } + async load($preload, needsPaintCallback) { + if (this.name === "font_1") { + const cachedCount = await preWarmGlyphCache(this.name); + if (cachedCount > 0) { + for (const [key, data] of glyphMemoryCache.entries()) { + if (key.startsWith(`${this.name}:`)) { + const char = key.slice(this.name.length + 1); + this.glyphs[char] = data; + } + } + } + const fontMetadataKeys = /* @__PURE__ */ new Set([ + "glyphHeight", + "glyphWidth", + "proportional", + "bdfFallback", + "bdfFont", + "advances", + "baseline" + ]); + const glyphsToLoad = entries(this.data).filter(([g, loc]) => { + if (fontMetadataKeys.has(g)) return false; + return !g.startsWith("glyph") && typeof loc === "string" && loc !== "false" && loc.length > 0; + }); + const glyphsNeedingFetch = glyphsToLoad.filter(([glyph]) => !this.glyphs[glyph]); + if (glyphsNeedingFetch.length > 0) { + console.log(`\u{1F524} font_1 loading ${glyphsNeedingFetch.length}/${glyphsToLoad.length} glyphs (${cachedCount} cached)`); + } + const glyphsToCache = {}; + let resolved = 0, rejected = 0; + const promises = glyphsNeedingFetch.map(([glyph, location2], i2) => { + return $preload( + `aesthetic.computer/disks/drawings/${this.name}/${location2}.json` + ).then((res) => { + this.glyphs[glyph] = res; + glyphsToCache[glyph] = res; + resolved++; + }).catch((err) => { + rejected++; + }); + }); + await Promise.all(promises); + if (Object.keys(glyphsToCache).length > 0) { + cacheGlyphsBulk(this.name, glyphsToCache); + } + if (this.data.bdfFallback) { + const bdfFontName = this.data.bdfFallback; + const handDrawnChars = new Set(Object.keys(this.glyphs)); + const loadingGlyphs = /* @__PURE__ */ new Set(); + const failedGlyphs = /* @__PURE__ */ new Set(); + const batchQueue = []; + let batchTimeout = null; + const BATCH_DELAY = 16; + const MAX_BATCH_SIZE = 50; + const flushBatch = async () => { + if (batchQueue.length === 0) return; + const batch = batchQueue.splice(0, MAX_BATCH_SIZE); + batchTimeout = null; + const codePointStrs = batch.map((item) => item.codePointStr).filter((s2) => s2 && s2.length > 0 && /^[0-9A-F_]+$/i.test(s2)); + if (codePointStrs.length === 0) { + for (const item of batch) { + failedGlyphs.add(item.char); + loadingGlyphs.delete(item.char); + } + return; + } + const charsParam = codePointStrs.join(","); + try { + const apiUrl = typeof window !== "undefined" && window.acSPIDER ? `https://aesthetic.computer/api/bdf-glyph?chars=${charsParam}&font=${bdfFontName}` : `/api/bdf-glyph?chars=${charsParam}&font=${bdfFontName}`; + const response = await fetch(apiUrl); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + const data = await response.json(); + const glyphs = data.glyphs || {}; + const glyphsToCache2 = {}; + for (const item of batch) { + const glyphData = glyphs[item.codePointStr]; + if (glyphData) { + item.target[item.char] = glyphData; + glyphsToCache2[item.char] = glyphData; + this.invalidateAdvance(item.char); + if (needsPaintCallback && typeof needsPaintCallback === "function") { + needsPaintCallback(); + } + } else { + failedGlyphs.add(item.char); + } + loadingGlyphs.delete(item.char); + } + if (Object.keys(glyphsToCache2).length > 0) { + cacheGlyphsBulk(bdfFontName, glyphsToCache2); + } + } catch (err) { + for (const item of batch) { + failedGlyphs.add(item.char); + loadingGlyphs.delete(item.char); + } + } + if (batchQueue.length > 0 && !batchTimeout) { + batchTimeout = setTimeout(flushBatch, BATCH_DELAY); + } + }; + const queueGlyphFetch = (char, codePointStr, target) => { + batchQueue.push({ char, codePointStr, target }); + if (batchQueue.length >= MAX_BATCH_SIZE) { + if (batchTimeout) { + clearTimeout(batchTimeout); + batchTimeout = null; + } + flushBatch(); + } else if (!batchTimeout) { + batchTimeout = setTimeout(flushBatch, BATCH_DELAY); + } + }; + preWarmGlyphCache(bdfFontName).then((count) => { + if (count > 0) { + for (const [key, data] of glyphMemoryCache.entries()) { + if (key.startsWith(`${bdfFontName}:`)) { + const char = key.slice(bdfFontName.length + 1); + if (!handDrawnChars.has(char) && !this.glyphs[char]) { + this.glyphs[char] = data; + } + } + } + if (needsPaintCallback && typeof needsPaintCallback === "function") { + needsPaintCallback(); + } + } + }); + this.glyphs = new Proxy(this.glyphs, { + get: (target, char) => { + if (target[char]) return target[char]; + const cacheKey = `${bdfFontName}:${char}`; + if (glyphMemoryCache.has(cacheKey)) { + const cached = glyphMemoryCache.get(cacheKey); + target[char] = cached; + return cached; + } + if (typeof char !== "string" || char.length === 0 || char.trim() === "") return null; + if (failedGlyphs.has(char)) return null; + if (loadingGlyphs.has(char)) return null; + loadingGlyphs.add(char); + const codePoints = []; + try { + for (const singleChar of Array.from(char)) { + const cp = singleChar.codePointAt(0); + if (cp !== void 0 && !(cp >= 55296 && cp <= 57343)) { + codePoints.push( + cp.toString(16).toUpperCase().padStart(cp > 65535 ? 5 : 4, "0") + ); + } + } + } catch (e2) { + codePoints.push("FFFD"); + } + if (codePoints.length === 0) codePoints.push("FFFD"); + queueGlyphFetch(char, codePoints.join("_"), target); + return null; + } + }); + } + console.log("\u{1F524} font_1 load() complete \u2014 BDF Proxy set up"); + } else if (this.name === "microtype") { + const cachedCount = await preWarmGlyphCache(this.name); + if (cachedCount > 0) { + for (const [key, data] of glyphMemoryCache.entries()) { + if (key.startsWith(`${this.name}:`)) { + const char = key.slice(this.name.length + 1); + this.glyphs[char] = data; + } + } + } + const glyphsToLoad = entries(this.data).filter( + ([g, loc]) => !g.startsWith("glyph") && typeof loc === "string" && loc !== "false" && loc.length > 0 + ); + const glyphsNeedingFetch = glyphsToLoad.filter(([glyph]) => !this.glyphs[glyph]); + const glyphsToCache = {}; + const promises = glyphsNeedingFetch.map(([glyph, location2], i2) => { + const path = `aesthetic.computer/disks/drawings/${location2}.json`; + return $preload(path).then((res) => { + this.glyphs[glyph] = res; + glyphsToCache[glyph] = res; + }).catch((err) => { + console.error(`\u274C Couldn't load microtype glyph "${glyph}":`, err); + }); + }); + await Promise.all(promises); + if (Object.keys(glyphsToCache).length > 0) { + cacheGlyphsBulk(this.name, glyphsToCache); + } + } else if (this.name === "unifont" || this.data.bdfFont) { + const fontName = this.data.bdfFont || "unifont"; + const { checkPackMode: checkPackMode2 } = await import("./pack-mode.mjs"); + const isObjktMode = checkPackMode2(); + if (isObjktMode && this.name === "MatrixChunky8") { + this.data.proportional = true; + this.data.bdfFont = "MatrixChunky8"; + this.data.name = "MatrixChunky8"; + const { MatrixChunky8: MatrixChunky82 } = await import("../disks/common/fonts.mjs"); + this.data.advances = MatrixChunky82.advances || {}; + this.data.bdfOverrides = MatrixChunky82.bdfOverrides || {}; + const inlineGlyphMap = typeof globalThis !== "undefined" && globalThis.acOBJKT_MATRIX_CHUNKY_GLYPHS || typeof window !== "undefined" && window.acOBJKT_MATRIX_CHUNKY_GLYPHS || null; + if (inlineGlyphMap && typeof inlineGlyphMap === "object") { + if (!this.data || typeof this.data !== "object") { + this.data = {}; + } + this.inlineMatrixChunkyGlyphMap = inlineGlyphMap; + this.data.inlineMatrixChunkyGlyphMap = inlineGlyphMap; + } + const chars = [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + " ", + ".", + ",", + "!", + "?", + ":", + ";", + "-", + "+", + "=", + "<", + ">", + "/", + "\\", + "|", + '"', + "'", + "(", + ")", + "[", + "]", + "{", + "}", + "@", + "#", + "$", + "%", + "^", + "&", + "*", + "_", + "~" + ]; + const promises = chars.map(async (char) => { + try { + const charCode = char.charCodeAt(0); + const hexCode = charCode.toString(16).toUpperCase().padStart(4, "0"); + const glyphData = inlineGlyphMap?.[hexCode]; + if (!glyphData) { + return null; + } + this.data[char] = glyphData; + this.invalidateAdvance(char); + return glyphData; + } catch (err) { + return null; + } + }); + await Promise.all(promises); + } + this.glyphs["?"] = { + resolution: [3, 7], + offset: [0, 1], + baselineOffset: [0, 0], + advance: 4, + pixels: [ + [1, 1, 1], + // E0 = 11100000 + [1, 0, 1], + // A0 = 10100000 + [0, 0, 1], + // 20 = 00100000 + [0, 1, 1], + // 60 = 01100000 + [0, 1, 0], + // 40 = 01000000 + [0, 0, 0], + // 00 = 00000000 + [0, 1, 0] + // 40 = 01000000 + ] + }; + this.glyphs["\u263A"] = { + resolution: [6, 9], + pixels: [ + [0, 1, 1, 1, 1, 0], + [1, 0, 0, 0, 0, 1], + [1, 0, 1, 0, 1, 0], + [1, 0, 0, 0, 0, 1], + [1, 0, 1, 1, 0, 1], + [1, 0, 0, 0, 0, 1], + [0, 1, 1, 1, 1, 0], + [0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0] + ] + }; + const loadingGlyphs = /* @__PURE__ */ new Set(); + const failedGlyphs = /* @__PURE__ */ new Set(); + const batchQueue = []; + let batchTimeout = null; + const BATCH_DELAY = 16; + const MAX_BATCH_SIZE = 50; + const flushBatch = async () => { + if (batchQueue.length === 0) return; + const batch = batchQueue.splice(0, MAX_BATCH_SIZE); + batchTimeout = null; + const codePointStrs = batch.map((item) => item.codePointStr).filter((s2) => s2 && s2.length > 0 && /^[0-9A-F_]+$/i.test(s2)); + if (codePointStrs.length === 0) { + console.warn("Batch glyph fetch skipped: no valid code points. Raw batch:", batch.map((b2) => ({ char: b2.char, str: b2.codePointStr }))); + for (const item of batch) { + failedGlyphs.add(item.char); + loadingGlyphs.delete(item.char); + } + return; + } + const charsParam = codePointStrs.join(","); + log.net.verbose(`Batch glyph fetch: ${codePointStrs.length} chars, font=${this.name}`); + const batchStart = performance.now(); + try { + const apiUrl = typeof window !== "undefined" && window.acSPIDER ? `https://aesthetic.computer/api/bdf-glyph?chars=${charsParam}&font=${this.name}` : `/api/bdf-glyph?chars=${charsParam}&font=${this.name}`; + const response = await fetch(apiUrl); + if (!response.ok) { + const errorText = await response.text(); + console.error(`\u{1F524} Batch glyph API error (${response.status}):`, errorText, `URL: ${apiUrl}`); + throw new Error(`HTTP ${response.status}`); + } + const data = await response.json(); + const glyphs = data.glyphs || {}; + const batchDuration = performance.now() - batchStart; + const glyphsToCache = {}; + for (const item of batch) { + const glyphData = glyphs[item.codePointStr]; + if (glyphData) { + item.target[item.char] = glyphData; + glyphsToCache[item.char] = glyphData; + this.invalidateAdvance(item.char); + if (needsPaintCallback && typeof needsPaintCallback === "function") { + needsPaintCallback(); + } + } else { + failedGlyphs.add(item.char); + } + loadingGlyphs.delete(item.char); + } + if (Object.keys(glyphsToCache).length > 0) { + cacheGlyphsBulk(this.name, glyphsToCache); + } + } catch (err) { + console.warn(`Batch glyph fetch failed:`, err); + for (const item of batch) { + failedGlyphs.add(item.char); + loadingGlyphs.delete(item.char); + } + } + if (batchQueue.length > 0 && !batchTimeout) { + batchTimeout = setTimeout(flushBatch, BATCH_DELAY); + } + }; + const queueGlyphFetch = (char, codePointStr, target) => { + batchQueue.push({ char, codePointStr, target }); + if (batchQueue.length >= MAX_BATCH_SIZE) { + if (batchTimeout) { + clearTimeout(batchTimeout); + batchTimeout = null; + } + flushBatch(); + } else if (!batchTimeout) { + batchTimeout = setTimeout(flushBatch, BATCH_DELAY); + } + }; + const font1LoadingGlyphs = /* @__PURE__ */ new Set(); + const font1FailedGlyphs = /* @__PURE__ */ new Set(); + const getFont1CachedGlyph = (char) => { + const direct = glyphMemoryCache.get(`font_1:${char}`); + if (direct) return direct; + return glyphMemoryCache.get(`font_1:?`) || null; + }; + const queueFont1FallbackFetch = (char, target) => { + if (font1LoadingGlyphs.has(char) || font1FailedGlyphs.has(char)) return; + const font1Path = fonts_exports?.font_1?.[char] || fonts_exports?.font_1?.["?"]; + if (typeof font1Path !== "string" || font1Path.length === 0 || font1Path === "false") { + font1FailedGlyphs.add(char); + return; + } + font1LoadingGlyphs.add(char); + $preload(`aesthetic.computer/disks/drawings/font_1/${font1Path}.json`).then((glyph) => { + if (!glyph) { + font1FailedGlyphs.add(char); + return; + } + target[char] = glyph; + this.invalidateAdvance(char); + cacheGlyph("font_1", char, glyph); + if (needsPaintCallback && typeof needsPaintCallback === "function") { + needsPaintCallback(); + } + }).catch(() => { + font1FailedGlyphs.add(char); + }).finally(() => { + font1LoadingGlyphs.delete(char); + }); + }; + preWarmGlyphCache(this.name).then((count) => { + if (count > 0) { + for (const [key, data] of glyphMemoryCache.entries()) { + if (key.startsWith(`${this.name}:`)) { + const char = key.slice(this.name.length + 1); + if (!this.glyphs[char]) { + Object.defineProperty(this.glyphs, char, { + value: data, + writable: true, + enumerable: true, + configurable: true + }); + } + } + } + if (needsPaintCallback && typeof needsPaintCallback === "function") { + needsPaintCallback(); + } + } + }); + this.glyphs = new Proxy(this.glyphs, { + get: (target, char) => { + if (target[char]) { + return target[char]; + } + const cacheKey = `${this.name}:${char}`; + if (glyphMemoryCache.has(cacheKey)) { + const cached = glyphMemoryCache.get(cacheKey); + target[char] = cached; + return cached; + } + if (failedGlyphs.has(char)) { + return this.getEmojiFallback(char, target); + } + if (loadingGlyphs.has(char)) { + return this.getEmojiFallback(char, target); + } + if (typeof char !== "string" || char.length === 0 || char.trim() === "") { + return null; + } + loadingGlyphs.add(char); + const codePoints = []; + try { + const characters = Array.from(char); + for (const singleChar of characters) { + const codePoint = singleChar.codePointAt(0); + if (codePoint !== void 0) { + if (codePoint >= 55296 && codePoint <= 57343) { + console.warn( + `Invalid lone surrogate detected: U+${codePoint.toString(16).toUpperCase()} in char "${char}"` + ); + if (char.length >= 2) { + console.warn( + `Original char length: ${char.length}, char codes:`, + Array.from(char).map( + (c4) => `U+${c4.codePointAt(0).toString(16).toUpperCase()}` + ) + ); + } + codePoints.push("FFFD"); + continue; + } + const hexValue = codePoint.toString(16).toUpperCase().padStart(codePoint > 65535 ? 5 : 4, "0"); + codePoints.push(hexValue); + } + } + } catch (error) { + console.warn(`Error processing character "${char}":`, error); + codePoints.push("FFFD"); + } + if (codePoints.length === 0) { + codePoints.push("FFFD"); + } + const codePointStr = codePoints.join("_"); + const isObjktMode2 = checkPackMode2(); + if (isObjktMode2 && this.name === "MatrixChunky8") { + if (target[char] && target[char].pixels && target[char].resolution) { + loadingGlyphs.delete(char); + return target[char]; + } + if (this.data && this.data[char]) { + target[char] = this.data[char]; + loadingGlyphs.delete(char); + return this.data[char]; + } + const inlineGlyphMap = this.inlineMatrixChunkyGlyphMap || this.data?.inlineMatrixChunkyGlyphMap || typeof globalThis !== "undefined" && globalThis.acOBJKT_MATRIX_CHUNKY_GLYPHS || typeof window !== "undefined" && window.acOBJKT_MATRIX_CHUNKY_GLYPHS || null; + if (inlineGlyphMap && codePoints.length === 1) { + const hexKey = codePoints[0]; + const glyphData = inlineGlyphMap[hexKey]; + if (glyphData) { + target[char] = glyphData; + this.data[char] = glyphData; + this.invalidateAdvance(char); + loadingGlyphs.delete(char); + return glyphData; + } + } + loadingGlyphs.delete(char); + failedGlyphs.add(char); + return this.getEmojiFallback(char, target); + } + if (!isObjktMode2) { + queueGlyphFetch(char, codePointStr, target); + } else { + const cachedFont1Glyph = getFont1CachedGlyph(char); + if (cachedFont1Glyph) { + target[char] = cachedFont1Glyph; + loadingGlyphs.delete(char); + return cachedFont1Glyph; + } + queueFont1FallbackFetch(char, target); + const simpleFallback = { + resolution: [6, 8], + pixels: [ + [0, 1, 1, 1, 1, 0], + [1, 0, 0, 0, 0, 1], + [1, 0, 1, 1, 0, 1], + [1, 0, 1, 1, 0, 1], + [1, 0, 0, 0, 0, 1], + [1, 0, 0, 0, 0, 1], + [0, 1, 1, 1, 1, 0], + [0, 0, 0, 0, 0, 0] + ] + }; + target[char] = simpleFallback; + loadingGlyphs.delete(char); + return simpleFallback; + } + if (isObjktMode2 && target[char]) return target[char]; + return this.getEmojiFallback(char, target); + } + }); + } + return this; + } + // Helper method to get appropriate fallback for different character types + getEmojiFallback(char, target) { + if (!char || char.length === 0) { + return this.getLoadingPlaceholder(); + } + if (this.name === "MatrixChunky8") { + return this.getLoadingPlaceholder(4, 8); + } + if (this.name === "unifont" || this.data?.bdfFont === "unifont-16.0.03" || this.data?.bdfFont) { + return this.getLoadingPlaceholder(8, 16); + } + const codePoint = char.codePointAt(0); + if (codePoint >= 128512 && codePoint <= 128591) { + return target["\u263A"] || target["?"] || null; + } else if (codePoint >= 127744 && codePoint <= 128511) { + return target["?"] || null; + } else if (codePoint >= 128640 && codePoint <= 128767) { + return target["?"] || null; + } else if (codePoint >= 9728 && codePoint <= 9983) { + return target["?"] || null; + } else { + return target["?"] || null; + } + } + // Create an animated loading placeholder for characters being fetched + getLoadingPlaceholder(width2 = 8, height2 = 16) { + const time = typeof performance !== "undefined" ? performance.now() : Date.now(); + const frame = Math.floor(time / 100) % 4; + const pixels2 = []; + for (let y = 0; y < height2; y++) { + const row = []; + for (let x = 0; x < width2; x++) { + const pattern = (x + y + frame) % 4; + row.push(pattern < 2 ? 1 : 0); + } + pixels2.push(row); + } + return { + resolution: [width2, height2], + pixels: pixels2, + advance: width2, + isPlaceholder: true + // Mark as placeholder so we know to repaint + }; + } + // Create a colored block placeholder for unifont characters that haven't loaded yet + createColoredBlockPlaceholder() { + const colors = []; + const numColors = Math.floor(Math.random() * 3) + 2; + for (let i2 = 0; i2 < numColors; i2++) { + colors.push([ + Math.floor(Math.random() * 200) + 55, + // R: 55-255 + Math.floor(Math.random() * 200) + 55, + // G: 55-255 + Math.floor(Math.random() * 200) + 55 + // B: 55-255 + ]); + } + return { + resolution: [8, 16], + // Standard unifont size + pixels: [], + // Empty pixels - will be drawn as box command + commands: [ + // Fill the entire 8x16 block with random colored pixels + ...Array.from( + { length: 16 }, + (_, y) => Array.from({ length: 8 }, (_2, x) => ({ + name: "point", + args: [x, y], + color: colors[Math.floor(Math.random() * colors.length)] + })) + ).flat() + ], + advance: 8 + // Standard unifont advance width + }; + } + // Get a glyph for a specific character + getGlyph(char) { + try { + return this.glyphs[char]; + } catch (err) { + console.warn(`Failed to get glyph for "${char}":`, err.message); + return null; + } + } + getAdvance(char) { + if (!char) return this.blockWidth || 4; + if (this.name === "unifont" || this.data?.bdfFont === "unifont-16.0.03") { + try { + const glyph2 = this.glyphs?.[char]; + if (glyph2 && typeof glyph2.advance === "number") { + return glyph2.advance; + } + } catch (err) { + } + return 8; + } + if (this.advanceCache.has(char)) { + return this.advanceCache.get(char); + } + let advance; + let glyph; + if (this.data?.advances && this.data.advances[char] !== void 0) { + advance = this.data.advances[char]; + } + if (advance === void 0) { + try { + glyph = this.glyphs?.[char]; + if (glyph && typeof glyph.advance === "number") { + advance = glyph.advance; + } + } catch (err) { + } + } + if (advance === void 0) { + const glyphData = this.data?.[char]; + if (glyphData && typeof glyphData.advance === "number") { + advance = glyphData.advance; + } + } + if (advance === void 0 && glyph?.dwidth?.x) { + advance = glyph.dwidth.x; + } + if (advance === void 0 && glyph?.resolution?.[0]) { + advance = glyph.resolution[0]; + } + if (advance === void 0 && typeof this.data?.glyphWidth === "number") { + advance = this.data.glyphWidth; + } + if (advance === void 0) { + advance = this.blockWidth || 4; + } + this.advanceCache.set(char, advance); + return advance; + } + invalidateAdvance(char) { + if (!char) { + this.advanceCache.clear?.(); + } else { + this.advanceCache.delete?.(char); + } + } + // 📓 tf.print + print($, pos = { x: undef, y: undef, size: 1, thickness: 1, rotation: 0 }, lineNumber, text, bg = null, charColors = null) { + const font = this.glyphs; + const fallbackFont = $.typeface?.glyphs || null; + const size = pos.size || 1; + const blockMargin = 1; + const inferredBlockWidth = this.data?.glyphWidth ?? this.blockWidth ?? this.data?.width ?? 6; + const blockHeight = ((this.blockHeight || 10) + blockMargin) * size; + const blockWidth = inferredBlockWidth; + const thickness = pos.thickness || 1; + const rotation = pos.rotation || 0; + const fullWidth = blockWidth * size * text.length; + if (Array.isArray(pos)) { + pos = { x: pos[0], y: pos[1] }; + } + const width2 = $.screen.width; + const height2 = $.screen.height; + let w; + const isProportional = this.data?.proportional === true || this.data?.bdfFont === "MatrixChunky8" || this.name === "MatrixChunky8"; + if (isProportional) { + w = 0; + const chars = [...text.toString()]; + for (const char of chars) { + if (char === "\n") { + continue; + } + const charAdvance = this.getAdvance(char) || inferredBlockWidth; + w += charAdvance * size; + } + } else { + w = text.length * blockWidth * size; + } + if (pos.center === void 0) { + if (pos.right !== void 0) { + pos.x = width2 - w - pos.right; + } else if (pos.left !== void 0) { + pos.x = pos.left; + } else if (pos.x === void 0) { + pos.x = $.num.randIntRange(-fullWidth / 2, width2 + fullWidth / 2); + } + if (pos.bottom !== void 0) { + pos.y = height2 - blockHeight - pos.bottom; + } else if (pos.top !== void 0) { + pos.y = pos.top; + } else if (pos.y === void 0) { + pos.y = $.num.randIntRange(-blockHeight / 2, height2 + blockHeight / 2); + } + } + let x = Math.floor(pos.x || 0), y = Math.floor(pos.y || 0); + pos.center = pos.center || ""; + if (pos.center.includes("x")) { + const hw = w / 2; + x = pos.x === undef ? width2 / 2 - hw : x - hw; + } + if (pos.center.includes("y")) { + const hh = Math.floor(blockHeight / 2); + y = pos.y === undef ? height2 / 2 - hh : y - hh; + } + y += lineNumber * blockHeight; + const rn = $.inkrn(); + if (bg !== null && bg !== false) $.ink(bg).box(x, y, fullWidth, blockHeight); + const baselineAdjustment = this.data.baseline || 0; + y += baselineAdjustment; + const rotRad = rotation * Math.PI / 180; + const cosR = Math.cos(rotRad); + const sinR = Math.sin(rotRad); + if (charColors && charColors.length > 0) { + let currentX = 0; + for (let i2 = 0; i2 < text.length; i2++) { + const char = text[i2]; + const charColor = charColors[i2]; + if (charColor) { + if (typeof charColor === "object" && charColor.foreground !== void 0 && charColor.background !== void 0) { + if (charColor.background) { + const charAdvance2 = this.getAdvance(char); + const charWidth = charAdvance2 * size; + if (Array.isArray(charColor.background)) { + $.ink(...charColor.background); + } else { + $.ink(charColor.background); + } + const rotatedX2 = x + (currentX * cosR - 0 * sinR); + const rotatedY2 = y + (currentX * sinR + 0 * cosR); + $.box(rotatedX2, rotatedY2, charWidth, blockHeight); + } + if (charColor.foreground) { + if (Array.isArray(charColor.foreground)) { + $.ink(...charColor.foreground); + } else { + $.ink(charColor.foreground); + } + } else { + $.ink(...rn); + } + } else if (Array.isArray(charColor)) { + $.ink(...charColor); + } else { + $.ink(charColor); + } + } else { + $.ink(...rn); + } + const rotatedX = Math.round(x + (currentX * cosR - 0 * sinR)); + const rotatedY = Math.round(y + (currentX * sinR + 0 * cosR)); + $.printLine( + char, + font, + rotatedX, + rotatedY, + blockWidth, + size, + 0, + thickness, + rotation, + this.data, + // Pass font metadata to avoid BDF proxy issues + fallbackFont + ); + const charAdvance = this.getAdvance(char); + currentX += charAdvance * size; + } + } else { + if (rotation !== 0) { + let currentX = 0; + for (let i2 = 0; i2 < text.length; i2++) { + const char = text[i2]; + const rotatedX = Math.round(x + (currentX * cosR - 0 * sinR)); + const rotatedY = Math.round(y + (currentX * sinR + 0 * cosR)); + $.ink(...rn).printLine( + char, + font, + rotatedX, + rotatedY, + blockWidth, + size, + 0, + thickness, + rotation, + this.data, + fallbackFont + ); + const charAdvance = this.getAdvance(char); + currentX += charAdvance * size; + } + } else { + $.ink(...rn).printLine( + text, + font, + x, + y, + blockWidth, + size, + 0, + thickness, + rotation, + this.data, + // Pass font metadata to avoid BDF proxy issues + fallbackFont + ); + } + } + } +}; +var TextInput = class { + $; + // a reference to the api. + #text; + // text content + #lastPrintedText = ""; + // a place to cache a previous reply. + #lastUserText = ""; + // cache the user's in-progress edited text. + submittedText = ""; + // cache the user's submitted text. + mute = false; + // Whether to prevent sounds from playing. + shifting = false; + // Whether we are emoving the cursor or not. + #renderSpaces = false; + // Whether to render invisible space characters. " " + // For debugging purposes. + blink; + // block cursor blink timer + showBlink = true; + cursor = "blink"; + // Buttons + enter; + // A button for replying or inputting text. + copy; + // A button for copying to the clipboard, that shows up conditionally. + paste; + // Similar to copy. + canType = false; + //#autolock = true; + #lock = false; + #lockTimeout; + #showSpinner = false; + #prompt; + hideGutter = false; + #gutterMax; + #activatingPress = false; + #deactivatingPress = false; + // Set on touch when active, deferred to lift for VSCode curtain close + #edgeCancelled = false; + #manuallyDeactivated = false; + #manualDeactivationTime = 0; + #manuallyActivated = false; + #manualActivationTime = 0; + #preventDeactivation = false; + // Flag to prevent unwanted deactivation during command execution + typeface; + pal; + // color palette + scheme; + #processCommand; + // text processing callback + // #processingCommand = false; + historyDepth = -1; + #prehistory; + #scrubCache = null; + // snapshot of the history stack during a rolodex drag + //inputStarted = false; // Flipped when the TextInput is first activated. + // (To clear any starting text.) + #moveThreshold = 6; + // Drag threshold. + #moveDeltaX = 0; + #recentlyShifting = false; + // Track if we just finished character sliding + runnable = false; + // Whether a command can be tried. + didReset; + // Callback for blank reset. + key; + copiedCallback; + // When the "Copy" button is pressed, for designing wrappers. + #copyPasteTimeout; + // UI Timer for clipboard copy response. + #copyPasteScheme; + // An override for the Copy button's color. + #coatedCopy; + // Stores a version of the current text output that could be + // decorated. (With a URL, for example.) + activate; + // Hook to `activate` inside of act. + activated; + // Optional callback for when the the text input becomes + // activated via pushing the Enter button or typing a key. + activatedOnce = false; + backdropTouchOff = false; + // Determines whether to activate the input + // after tapping the backdrop. + commandSentOnce = false; + // 🏴 + closeOnEmptyEnter = false; + // Add support for loading from preloaded system typeface. + constructor($, text = "", processCommand, options = { + palette: void 0, + font: "font_1", + // fonts.font_1, + //autolock: true, + wrap: "char" + }) { + this.key = `${$.slug}:history`; + this.noHistory = options.history === false; + this.$ = $; + this.closeOnEmptyEnter = options.closeOnEmptyEnter || false; + this.hideGutter = options.hideGutter || false; + this.poe = options.poe || false; + this.copiedCallback = options.copied; + if (!options.font) options.font = "font_1"; + this._needsRepaint = false; + if ($.typeface?.data !== options.font) { + this.typeface = new Typeface(options.font); + this.#moveThreshold = this.typeface.blockWidth; + this.typeface.load($.net.preload, () => { + this._needsRepaint = true; + }); + } else { + this.typeface = $.typeface; + } + this.activated = options.activated; + this.didReset = options.didReset; + const blockWidth = this.typeface.blockWidth; + this.#gutterMax = options.gutterMax || 48; + this.#prompt = new Prompt( + 6, + // blockWidth, + 6, + // blockWidth, + options.wrap || "char", + // "char" or "word" + $.store["gutter:lock"] || Math.min(this.#gutterMax, floor9($.screen.width / blockWidth) - 2), + options.lineSpacing, + this.typeface + ); + this.print(text); + this.startingInput = this.text; + this.scheme = options.scheme || { + dark: { + text: 255, + background: 0, + block: 255, + highlight: 0, + guideline: 255 + }, + light: { + text: 0, + background: 255, + block: 0, + highlight: 255, + guideline: 0 + } + }; + const { + ui: { TextButton: TB } + } = $; + this.enter = new TB(this.scheme.buttons?.enter || "Enter"); + this.enter.stickyScrubbing = true; + this.enter.btn.stickyScrubbing = true; + this.enter.btn.noEdgeDetection = true; + this.copy = new TB(this.scheme.buttons?.copy.label || "Copy"); + this.paste = new TB(this.scheme.buttons?.paste?.label || "Paste"); + this.copy.btn.disabled = true; + this.paste.btn.disabled = true; + if (this.text.length === 0) { + this.enter.btn.disabled = true; + } + this.#processCommand = processCommand; + $.send({ type: "keyboard:enabled" }); + } + // 🔤 Change the font dynamically + async setFont(fontName) { + if (!fontName || fontName === this.typeface?.name) return; + const newTypeface = new Typeface(fontName); + await newTypeface.load(this.$.net.preload, () => { + this._needsRepaint = true; + }); + this.typeface = newTypeface; + this.#moveThreshold = newTypeface.blockWidth; + const blockWidth = newTypeface.blockWidth; + this.#prompt.typeface = newTypeface; + this.#prompt.letterWidth = blockWidth; + this.#prompt.letterHeight = newTypeface.blockHeight; + this._needsRepaint = true; + } + // Stretches the gutter to be the screen width minus two slots. + fullGutter($) { + this.gutter = Math.min( + this.#gutterMax, + floor9($.screen.width / this.#prompt.letterWidth) - 2 + ); + } + set lock(bool) { + this.#lock = bool; + if (bool) { + this.#lockTimeout = setTimeout(() => { + this.#showSpinner = true; + }, 100); + } else { + clearTimeout(this.#lockTimeout); + this.#showSpinner = false; + } + } + get lock() { + return this.#lock; + } + get recentlyShifting() { + return this.#recentlyShifting; + } + // Adjust the gutter width for text wrapping. + set gutter(n2) { + this.#prompt.colWidth = n2; + this.#prompt.gutter = this.#prompt.colWidth * this.#prompt.letterWidth; + } + // Alias for the setter above, returned in columns. + get columns() { + return this.#prompt.colWidth; + } + // Reset the user text after a message is complete. + clearUserText() { + this.#lastUserText = ""; + } + addUserText(txt) { + this.#lastUserText = txt; + } + // Snap cursor to the end of text. + snap() { + this.#prompt.snapTo(this.text); + this.$.send({ + type: "keyboard:cursor", + content: { cursor: this.#text.length } + }); + } + // Run a command + async run(store2) { + this.snap(); + this.submittedText = ""; + await this.#execute(store2); + } + // Set the text and reflow it. + set text(str7) { + if (str7 === this.#text) { + return; + } + this.#text = str7; + this.flow(); + } + // Return the prompt. + get prompt() { + return this.#prompt; + } + print(text) { + this.text = text; + this.bakePrintedText(); + } + bakePrintedText() { + this.#lastPrintedText = this.text; + } + latentFirstPrint(text) { + if (!this.activatedOnce) this.text = text; + } + // Reflow the input text. + flow() { + this.#prompt.mapTo(this.text); + } + // Return the text contents of the input. + get text() { + return this.#text; + } + #coatCopy(text) { + return this.copiedCallback?.(text) || text; + } + // Paint the TextInput, with an optional `frame` for placement. + paint($, clear2 = false, frame = { x: 0, y: 0, width: $.screen.width, height: $.screen.height }) { + this.pal = this.scheme[$.dark ? "dark" : "light"] || this.scheme["dark"] || this.scheme; + const pen = $.pen; + const isHovering = pen && pen.x >= frame.x && pen.x < frame.x + frame.width && pen.y >= frame.y && pen.y < frame.y + frame.height; + if (!clear2 && this.pal.background !== void 0) { + $.ink(this.pal.background).box(frame); + if (isHovering && this.canType && !this.poe) { + const glowColor = this.pal.promptHover || ($.dark ? [100, 80, 150, 30] : [180, 150, 220, 40]); + $.ink(glowColor).box(frame.x, frame.y, frame.width, frame.height); + const borderColor = this.pal.promptHoverBorder || ($.dark ? [150, 100, 200, 80] : [140, 100, 180, 60]); + $.ink(borderColor).box(frame.x, frame.y, frame.width, frame.height, "inline"); + } + } + const ti = this; + const prompt = this.#prompt; + let charColorMap = null; + if ($.system?.prompt?.kidlispMode && this.text) { + try { + const tokens = tokenize(this.text); + const kidlispInstance = new KidLisp(); + kidlispInstance.isEditMode = true; + kidlispInstance.initializeSyntaxHighlighting(this.text); + charColorMap = /* @__PURE__ */ new Map(); + let sourceIndex = 0; + for (let i2 = 0; i2 < tokens.length; i2++) { + const token = tokens[i2]; + const fastMathMatch = token.match(/^(\w+)\s*([+\-*/%])\s*(\w+|\d+(?:\.\d+)?)$/); + if (fastMathMatch) { + const [, left, op, right] = fastMathMatch; + const tokenIndex = this.text.indexOf(token, sourceIndex); + if (tokenIndex !== -1) { + const leftColor = kidlispInstance.getTokenColor(left, [left, op, right], 0); + const opColor = kidlispInstance.getTokenColor(op, [left, op, right], 1); + const rightColor = kidlispInstance.getTokenColor(right, [left, op, right], 2); + for (let j = 0; j < left.length; j++) { + charColorMap.set(tokenIndex + j, leftColor); + } + charColorMap.set(tokenIndex + left.length, opColor); + for (let j = 0; j < right.length; j++) { + charColorMap.set(tokenIndex + left.length + 1 + j, rightColor); + } + sourceIndex = tokenIndex + token.length; + } + continue; + } + if (token.startsWith("fade:")) { + const colorName = kidlispInstance.getTokenColor(token, tokens, i2); + const coloredFadeString = kidlispInstance.colorFadeExpression(token); + const colorCodeRegex = /\\([^\\]+)\\([^\\]*)/g; + let match; + let charOffset = 0; + const tokenIndex = this.text.indexOf(token, sourceIndex); + while ((match = colorCodeRegex.exec(coloredFadeString)) !== null) { + const color3 = match[1]; + const text = match[2]; + for (let j = 0; j < text.length; j++) { + if (tokenIndex >= 0 && charOffset < token.length) { + charColorMap.set(tokenIndex + charOffset, color3); + charOffset++; + } + } + } + if (tokenIndex !== -1) { + sourceIndex = tokenIndex + token.length; + } + } else { + const colorName = kidlispInstance.getTokenColor(token, tokens, i2); + const tokenIndex = this.text.indexOf(token, sourceIndex); + if (tokenIndex !== -1) { + for (let charOffset = 0; charOffset < token.length; charOffset++) { + charColorMap.set(tokenIndex + charOffset, colorName); + } + sourceIndex = tokenIndex + token.length; + } + } + } + } catch (error) { + console.warn("Error building KidLisp syntax highlight map:", error); + charColorMap = null; + } + } + function paintBlockLetter(char, pos, alt = false, charIndex = -1) { + if (char.charCodeAt(0) === 10 && ti.#renderSpaces) { + $.ink([255, 0, 0, 127]).box(pos.x, pos.y, 4); + } else if (char !== " " && char.charCodeAt(0) !== 10) { + const pic = ti.typeface.glyphs[char] || ti.typeface.glyphs["?"]; + let drawColor; + if (charColorMap && charIndex >= 0 && charColorMap.has(charIndex)) { + const colorName = charColorMap.get(charIndex); + if (colorName && colorName.includes(",")) { + const parts = colorName.split(",").map((n2) => parseInt(n2.trim())); + drawColor = parts.length >= 3 ? parts : null; + } else if (colorName && colorName.startsWith("COMPOUND:")) { + const parts = colorName.split(":"); + const actualColorName = parts[1] || "white"; + if (cssColors2[actualColorName]) { + drawColor = cssColors2[actualColorName]; + } else { + drawColor = [255, 255, 255]; + } + } else if (colorName === "RAINBOW" || colorName === "ZEBRA") { + drawColor = !alt ? ti.pal.text : ti.pal.prompt || ti.pal.text; + } else if (cssColors2[colorName]) { + drawColor = cssColors2[colorName]; + } else if (colorName === "gray" || colorName === "grey") { + drawColor = [128, 128, 128]; + } else if (colorName === "orange") { + drawColor = [255, 165, 0]; + } else if (colorName === "lime") { + drawColor = [0, 255, 0]; + } else if (colorName === "pink") { + drawColor = [255, 192, 203]; + } else if (colorName === "darkred") { + drawColor = [139, 0, 0]; + } else if (colorName === "limegreen") { + drawColor = [50, 205, 50]; + } else if (colorName === "hotpink") { + drawColor = [255, 105, 180]; + } else if (colorName === "mediumseagreen") { + drawColor = [60, 179, 113]; + } else { + drawColor = !alt ? ti.pal.text : ti.pal.prompt || ti.pal.text; + } + if (!drawColor) { + drawColor = !alt ? ti.pal.text : ti.pal.prompt || ti.pal.text; + } + } else { + drawColor = !alt ? ti.pal.text : ti.pal.prompt || ti.pal.text; + } + const isLightMode = !$.dark; + if (isLightMode && charColorMap && charIndex >= 0 && charColorMap.has(charIndex)) { + const [r2, g, b2] = Array.isArray(drawColor) ? drawColor : [200, 200, 200]; + const luminance = 0.299 * r2 + 0.587 * g + 0.114 * b2; + if (luminance > 120) { + $.ink([30, 20, 50, 180]).draw( + pic, + { x: pos.x + 1, y: pos.y + 1 }, + prompt.scale + ); + } + } + $.ink(drawColor).draw( + pic, + pos, + prompt.scale + ); + } else if (ti.#renderSpaces) { + $.ink([0, 255, 0, 127]).box(pos.x, pos.y, 3); + } + } + if (frame.x || frame.y) $.pan(frame.x, frame.y); + if (!this.#lock && this.selection && this.canType) { + for (let i2 = this.selection[0]; i2 < this.selection[1]; i2 += 1) { + const c4 = prompt.textToCursorMap[i2]; + const p = prompt.pos(c4, true); + $.ink(this.pal.selection || [255, 255, 0, 64]).box(p); + } + } + let submittedIndex = 0; + Object.keys(prompt.cursorToTextMap).forEach((key) => { + const [x, y] = key.split(":").map((c4) => parseInt(c4)); + const charIndex = prompt.cursorToTextMap[key]; + const char = this.text[charIndex]; + let fromSubmitted = false; + if (!this.canType && submittedIndex < this.submittedText.length) { + if (char === this.submittedText[submittedIndex]) fromSubmitted = true; + submittedIndex += 1; + } + paintBlockLetter(char, prompt.pos({ x, y }), fromSubmitted, charIndex); + }); + if (this.canType && !this.poe) { + if (!this.hideGutter) { + $.ink(this.pal.guideline).line( + prompt.gutter, + 0, + prompt.gutter, + frame.height - 1 + ); + } + $.ink($.dark ? 127 : "teal").box( + 0, + 0, + frame.width, + frame.height, + "inline" + ); + } + if (this.#lock) { + if (this.#showSpinner) { + const center = $.geo.Box.from(prompt.pos()).center; + const distance4 = 2; + const topL = [center.x - distance4, center.y - distance4]; + const topR = [center.x + distance4, center.y - distance4]; + const bottomL = [center.x - distance4, center.y + distance4]; + const bottomR = [center.x + distance4, center.y + distance4]; + const middleL = [center.x - distance4, center.y]; + const middleR = [center.x + distance4, center.y]; + $.ink(this.pal.block); + if ($.paintCount % 60 < 20) { + $.line(...topR, ...bottomL); + } else if ($.paintCount % 60 < 40) { + $.line(...middleL, ...middleR); + } else { + $.line(...topL, ...bottomR); + } + } + } else { + if (this.cursor === "blink" && this.showBlink && this.canType) { + const cursorColor = $.system?.prompt?.actualKidlisp ? $.dark ? [100, 255, 100] : [0, 150, 0] : this.pal.block; + if (this.poe) { + const cp = prompt.pos(void 0, true); + $.ink(this.pal.cursor || cursorColor).box(cp.x, cp.y, 2, cp.h); + } else { + $.ink(cursorColor).box(prompt.pos(void 0, true)); + const char = this.text[this.#prompt.textPos()]; + if (char !== void 0 && char !== "") { + const pic = this.typeface.glyphs[char]; + if (pic) + $.ink(this.pal.highlight).draw(pic, prompt.pos(void 0, true)); + } + } + } + } + if (this.cursor === "stop" && !this.canType) { + const pos = prompt.pos(); + const pulse = 0.5 + 0.5 * Math.sin($.paintCount / 8); + const alpha = Math.floor(110 + pulse * 145); + $.ink(100, 180, 255, alpha).box(pos.x + 1, pos.y + 3, 3); + } + let btnScheme, btnHvrScheme, btnRolloverScheme; + const pal = this.pal; + if (pal.btn && pal.btnTxt) + btnScheme = [pal.btn, pal.btnTxt, pal.btnTxt, pal.btn]; + if (pal.btnHvr && pal.btnHvrTxt) + btnHvrScheme = [pal.btnHvr, pal.btnHvrTxt, pal.btnHvrTxt, pal.btnHvr]; + if (pal.btnRollover && pal.btnRolloverTxt) + btnRolloverScheme = [pal.btnRollover, pal.btnRolloverTxt, pal.btnRolloverTxt, pal.btnRollover]; + if (!this.enter.btn.disabled && !this.poe) { + if (this.#activatingPress) { + const color3 = pal.focusOutline || (Array.isArray(pal.text) ? [...pal.text.slice(0, 3), 128] : [255, 0, 200, 64]); + $.ink(color3).box(0, 0, frame.width, frame.height, "inline"); + } + } + if (frame.x || frame.y) $.unpan(); + if (!this.enter.btn.disabled && !this.poe) { + this.enter.reposition({ right: 6, bottom: 6, screen: frame }); + $.layer(2); + this.enter.paint($, btnScheme, btnHvrScheme, void 0, btnRolloverScheme); + $.layer(1); + } + if (!this.copy.btn.disabled && !this.poe) { + this.copy.reposition({ left: 6, bottom: 6, screen: frame }); + this.copy.btn.publishToDom($, "copy", this.#coatedCopy); + $.layer(2); + this.copy.paint( + { ink: $.ink }, + this.#copyPasteScheme || btnScheme, + btnHvrScheme, + void 0, + btnRolloverScheme + ); + $.layer(1); + } + if (!this.paste.btn.disabled && !this.poe) { + this.paste.reposition({ left: 6, bottom: 6, screen: frame }); + this.paste.btn.publishToDom($, "paste"); + $.layer(2); + this.paste.paint( + { ink: $.ink }, + this.#copyPasteScheme || btnScheme, + btnHvrScheme, + void 0, + btnRolloverScheme + ); + $.layer(1); + } + return !(keys2(this.typeface.glyphs).length === keys2(this.typeface.glyphData).length); + } + // Simulate anything necessary. + sim({ seconds, needsPaint, gizmo: { Hourglass: Hourglass2 } }) { + this.blink = this.blink || new Hourglass2(seconds(0.75), { + flipped: (count, showBlinkOverride) => { + if (showBlinkOverride !== void 0) + this.showBlink = showBlinkOverride; + else this.showBlink = !this.showBlink; + needsPaint(); + }, + autoFlip: true + }); + if (this.#lock) needsPaint(); + if (this.canType) this.blink.step(); + if (this._needsRepaint) { + this._needsRepaint = false; + needsPaint(); + } + } + // Helper method to ensure blink is initialized before use + #ensureBlink() { + if (!this.blink) { + const Hourglass2 = this.$.gizmo?.Hourglass; + if (Hourglass2) { + this.blink = new Hourglass2(45, { + // 0.75 seconds at 60fps + flipped: (count, showBlinkOverride) => { + if (showBlinkOverride !== void 0) + this.showBlink = showBlinkOverride; + else this.showBlink = !this.showBlink; + this.$.needsPaint?.(); + }, + autoFlip: true + }); + } + } + } + showButton($, { nocopy, nopaste } = { nocopy: false, nopaste: false }) { + this.enter.btn.disabled = false; + if (!nocopy && this.text.length > 0) { + this.#coatedCopy = this.#coatCopy(this.text); + this.copy.btn.disabled = false; + this.paste.btn.disabled = true; + this.paste.btn.removeFromDom($, "paste"); + } else if (nopaste) { + this.paste.btn.disabled = true; + this.paste.btn.removeFromDom($, "paste"); + } else { + this.paste.btn.disabled = false; + } + } + // Run a command. + async #execute(store2) { + if (!this.noHistory) { + store2[this.key] = store2[this.key] || []; + if (store2[this.key][0] !== this.text && !this.text.startsWith("prompt~")) { + store2[this.key].unshift(this.text); + } + } + if (!this.noHistory) store2.persist(this.key); + await this.#processCommand?.(this.text); + this.commandSentOnce = true; + } + // Clear the TextInput object and flip the cursor to ON. + blank(cursor2) { + if (cursor2) this.cursor = cursor2; + this.text = ""; + this.#prompt.cursor = { x: 0, y: 0 }; + this.blink?.flip(true); + this.$.send({ type: "keyboard:text:replace", content: { text: "" } }); + } + // Set the UI state to be that of a completed reply. + replied($) { + this.runnable = false; + this.canType = false; + this.clearUserText(); + this.showButton($); + } + #buildCopyPasteScheme() { + let scheme = [64, 127, 127, 64]; + if (this.pal.btnReply && this.pal.btnReplyTxt) + scheme = [ + this.pal.btnReply, + this.pal.btnReplyTxt, + this.pal.btnReplyTxt, + this.pal.btnReply + ]; + return scheme; + } + // 🎞️ Rolodex history scrubbing. Drives the SAME state as the ArrowUp/ + // ArrowDown handlers, but continuously, for a touch/drag gesture. The + // stack is snapshotted at gesture start so a drag doesn't hammer the + // store; depth -1 == the un-submitted draft (#prehistory); on release + // the input simply stays wherever it landed (the rolodex "snap"). + // These are additive — existing arrow-key history is untouched. + async beginHistoryScrub() { + const store2 = this.$?.store; + this.#scrubCache = !this.noHistory && store2 && await store2.retrieve(this.key) || [""]; + if (this.#prehistory === void 0) this.#prehistory = this.text; + return this.#scrubCache.length; + } + scrubHistoryTo(depth) { + if (!this.#scrubCache) return; + const len5 = this.#scrubCache.length; + let d2 = Math.round(depth); + if (d2 < -1) d2 = -1; + if (d2 > len5 - 1) d2 = len5 - 1; + this.historyDepth = d2; + this.text = d2 === -1 ? this.#prehistory ?? "" : this.#scrubCache[d2] || ""; + this.snap(); + this.$?.send?.({ + type: "keyboard:text:replace", + content: { text: this.text } + }); + this.selection = null; + } + endHistoryScrub() { + this.#scrubCache = null; + } + isHistoryScrubbing() { + return this.#scrubCache !== null; + } + // Handle user input. + async act($) { + const { debug: debug4, event: e2, store: store2, needsPaint, sound: sound2 } = $; + if (e2.is("ui:cancel-interactions")) { + this.#edgeCancelled = true; + this.#activatingPress = false; + this.backdropTouchOff = false; + this.enter.btn.act(e2); + this.copy.btn.act(e2); + this.paste.btn.act(e2); + needsPaint(); + return; + } + if (e2.is("reframed")) { + if (!$.store["gutter:lock"]) this.fullGutter($); + this.flow(); + needsPaint(); + } + if (e2.is("keyboard:down") && this.#lock === false && !this.enter.btn.down) { + if (e2.key.length === 1 && e2.ctrl === false && e2.key !== "`") { + this.#edgeCancelled = false; + } + if (e2.key.length === 1 && e2.ctrl === false && e2.key !== "`") { + if (!this.canType && !this.#edgeCancelled) { + this.#manuallyActivated = true; + this.#manualActivationTime = Date.now(); + activate(this); + } + let insert = e2.key.replace(/[“”]/g, '"').replace(/[‘’]/g, "'"); + let index = this.#prompt.textPos(); + const char = this.text[index]; + const newLine = char?.charCodeAt(0) === 10; + const underCursor = index !== void 0; + if (index === void 0 && this.#prompt.cursor.x === 0 && this.#prompt.cursor.y === 0) { + index = 0; + this.text = insert + this.text; + this.#prompt.forward(this.#prompt.cursor, insert.length); + this.#ensureBlink(); + this.blink?.flip(true); + this.showBlink = true; + return; + } + if (newLine && underCursor) { + this.text = this.text.slice(0, index + 1) + insert + this.text.slice(index + 1); + this.#prompt.forward(); + this.#ensureBlink(); + this.blink?.flip(true); + this.showBlink = true; + return; + } + while (index === void 0) { + index = this.#prompt.textPos( + this.#prompt.backward({ ...this.#prompt.cursor }) + ); + } + const sliceIndex = underCursor ? index : index + 1; + if (this.#prompt.wrapped(sliceIndex) && insert === " ") { + const lastCursor = this.#prompt.textToCursorMap[sliceIndex - 1]; + const thisCursor = this.#prompt.cursor; + let spaces = 0; + spaces = this.#prompt.colWidth - lastCursor.x + thisCursor.x; + insert = " ".repeat(spaces - 1); + } + this.text = this.text.slice(0, sliceIndex) + insert + this.text.slice(sliceIndex); + if (!underCursor || index === 0) { + let skipForward = false; + const newIndex = this.#prompt.textPos(); + const mapped = this.#prompt.textToCursorMap[newIndex]; + if (mapped) { + this.#prompt.cursor = { ...mapped }; + } else { + skipForward = true; + } + if (newIndex <= index && index > 0) { + this.#prompt.forward(this.#prompt.cursor, index - newIndex + 2); + } else if (!skipForward) this.#prompt.forward(); + } else { + let newCursor = this.#prompt.textToCursorMap[sliceIndex + insert.length]; + if (!newCursor) + newCursor = this.#prompt.textToCursorMap[sliceIndex + insert.length + 1]; + if (newCursor) this.#prompt.cursor = { ...newCursor }; + } + } else { + if (e2.key === "Backspace") { + const prompt = this.#prompt; + const currentTextIndex = prompt.textPos(); + const onNewline = this.text[currentTextIndex]?.charCodeAt(0) === 10; + if (onNewline) { + this.text = this.text.slice(0, currentTextIndex) + this.text.slice(currentTextIndex + 1); + if (this.text.length === currentTextIndex) { + this.snap(); + } else { + prompt.crawlBackward(); + if (prompt.posHasVisibleCharacter()) prompt.forward(); + } + } else { + const back = prompt.backward({ ...prompt.cursor }); + const key = `${back.x}:${back.y}`; + const cursorTextIndex = prompt.cursorToTextMap[key]; + const hasNewLine = prompt.cursorToTextMap[key + ":\\n"] !== void 0; + const currentPosition = prompt.textPos(); + if (prompt.wrapped(currentPosition)) { + let movablePosition = prompt.textPos(); + let char = this.text[movablePosition - 1]; + let len5 = 0; + while (char === " ") { + movablePosition -= 1; + char = this.text[movablePosition - 1]; + len5 += 1; + } + if (len5 > 0) { + this.text = this.text.slice(0, currentPosition - len5) + this.text.slice(currentPosition); + prompt.cursor = { + ...prompt.textToCursorMap[currentPosition - len5] + }; + } + this.#ensureBlink(); + this.blink?.flip(true); + this.showBlink = true; + return; + } + if (currentTextIndex === 0) return; + if (cursorTextIndex === void 0 && currentTextIndex > 0) { + this.text = this.text.slice(0, currentTextIndex - 1) + this.text.slice(currentTextIndex); + prompt.cursor = { + ...prompt.textToCursorMap[currentTextIndex - 1] + }; + } + if (cursorTextIndex >= 0) { + this.text = this.text.slice(0, cursorTextIndex) + this.text.slice(cursorTextIndex + 1); + let cursor2 = prompt.textToCursorMap[cursorTextIndex - 1]; + if (!cursor2) { + if (prompt.posHasVisibleCharacter()) { + cursor2 = prompt.textToCursorMap[cursorTextIndex]; + } else { + cursor2 = { x: 0, y: 0 }; + } + } + if (cursor2) { + prompt.cursor = { ...cursor2 }; + if (cursorTextIndex > 0 && !hasNewLine) { + if (!prompt.wrapped(cursorTextIndex)) prompt.forward(); + } + } else { + prompt.crawlBackward(); + } + } + } + } + if (e2.key === "Escape") { + this.activate(this); + $.send({ type: "keyboard:open" }); + this.text = ""; + $.send({ type: "keyboard:text:replace", content: { text: "" } }); + this.#prompt.cursor = { x: 0, y: 0 }; + } + if (e2.key === "ArrowUp" && !this.skipHistory && !this.noHistory) { + const history = await store2.retrieve(this.key) || [""]; + if (this.#prehistory === void 0) this.#prehistory = this.text; + this.historyDepth += 1; + if (this.historyDepth === history.length) { + this.historyDepth = -1; + } + if (this.historyDepth === -1) { + this.text = this.#prehistory; + } else { + this.text = history[this.historyDepth] || ""; + } + this.snap(); + $.send({ + type: "keyboard:text:replace", + content: { text: this.text } + }); + this.selection = null; + } + if (e2.key === "ArrowDown" && !this.skipHistory && !this.noHistory) { + const history = await store2.retrieve(this.key) || [""]; + if (this.#prehistory === void 0) this.#prehistory = this.text; + this.historyDepth -= 1; + if (this.historyDepth < -1) this.historyDepth = history.length - 1; + if (this.historyDepth === -1) { + this.text = this.#prehistory; + } else { + this.text = history[this.historyDepth] || ""; + } + this.snap(); + $.send({ + type: "keyboard:text:replace", + content: { text: this.text } + }); + this.selection = null; + } + } + if (e2.key !== "Enter" && e2.key !== "`") { + if (this.canType) { + if (this.text.length > 0) { + this.enter.btn.disabled = false; + this.runnable = true; + } else { + this.enter.btn.disabled = true; + this.runnable = false; + } + } + } + if (e2.key === "Enter" && !this.skipEnter) { + if (e2.shift) { + const pos = this.#prompt.textPos(); + const char = this.text[pos]; + if (pos === void 0 || char?.charCodeAt(0) === 10 && pos === this.text.length - 1) { + this.text += ` +`; + this.#prompt.newLine(); + this.snap(); + } else { + const hasVis = this.#prompt.posHasVisibleCharacter(); + let insert = "\n"; + let wrapped = false; + if (this.#prompt.wrapped(pos)) { + wrapped = true; + insert += "\n"; + } + this.text = this.text.slice(0, pos) + insert + this.text.slice(pos); + if (hasVis && !wrapped) { + this.#prompt.cursor = { ...this.#prompt.textToCursorMap[pos] }; + } else { + this.#prompt.cursor.y += 1; + } + } + $.send({ + type: "keyboard:text:replace", + content: { + text: this.text + /*cursor: this.#prompt.textPos()*/ + } + }); + } else if (this.runnable) { + if (this.text.trim().length > 0) { + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 850, + attack: 0.1, + decay: 0.96, + volume: 0.65, + duration: 5e-3 + }); + } + await this.run(store2); + deactivate(this); + } + } else if (!this.canType && !this.#edgeCancelled) { + activate(this); + } + } + this.#ensureBlink(); + this.blink?.flip(true); + this.showBlink = true; + } + if (e2.is("keyboard:open") && !this.#lock && !this.#edgeCancelled) { + const timeSinceManualDeactivation = Date.now() - this.#manualDeactivationTime; + const timeSinceManualActivation = Date.now() - this.#manualActivationTime; + if (!this.#manuallyDeactivated || this.#activatingPress || timeSinceManualDeactivation > 100) { + activate(this); + } + } + if (e2.is("keyboard:close") && !this.#lock) { + if (!this.canType) { + return; + } + if (this.#preventDeactivation || this._preventDeactivation) { + return; + } + const timeSinceManualDeactivation = Date.now() - this.#manualDeactivationTime; + const timeSinceManualActivation = Date.now() - this.#manualActivationTime; + if (this._enterButtonActivation) { + return; + } + if ((!this.#manuallyDeactivated || timeSinceManualDeactivation > 100) && (!this.#manuallyActivated || timeSinceManualActivation > 500)) { + deactivate(this); + } + } + if (e2.is("touch") && !this.#lock && //!this.inputStarted && + !this.canType && !this.backdropTouchOff && (this.copy.btn.disabled === true || !this.copy.btn.box.contains(e2)) && (this.paste.btn.disabled === true || !this.paste.btn.box.contains(e2))) { + this.#activatingPress = true; + this.#edgeCancelled = false; + $.send({ type: "keyboard:unlock" }); + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 300, + attack: 0.1, + decay: 0.96, + volume: 0.5, + duration: 0.01 + }); + } + } + if (e2.is("touch") && !this.#lock && this.canType && !this.backdropTouchOff && (this.copy.btn.disabled === true || !this.copy.btn.box.contains(e2)) && (this.paste.btn.disabled === true || !this.paste.btn.box.contains(e2)) && (this.enter.btn.disabled === true || !this.enter.btn.box.contains(e2))) { + this.#deactivatingPress = true; + } + function activate(ti) { + ti.activatedOnce = true; + if (ti.canType) { + return; + } + ti.activated?.($, true); + ti.#activatingPress = false; + if (ti.text.length > 0) { + ti.copy.btn.disabled = true; + ti.copy.btn.removeFromDom($, "copy"); + } + ti.canType = true; + if (ti.#lastUserText.length > 0) { + ti.text = ti.#lastUserText; + ti.runnable = true; + ti.paste.btn.disabled = false; + } else { + if (ti.#lastPrintedText) { + ti.blank("blink"); + } + ti.runnable = false; + ti.paste.btn.disabled = false; + } + $.act("text-input:editable"); + $.send({ type: "keyboard:unlock" }); + $.send({ type: "keyboard:open" }); + if (!ti.mute) { + sound2.synth({ + type: "sine", + tone: 300, + attack: 0.1, + decay: 0.96, + volume: 0.5, + duration: 0.01 + }); + } + } + this.activate = activate; + function deactivate(ti) { + if (ti.#preventDeactivation || ti._preventDeactivation) { + return; + } + if (ti.canType === false) { + return; + } + ti.activated?.($, false); + ti.enter.btn.disabled = false; + ti.paste.btn.disabled = false; + ti.canType = false; + ti.runnable = false; + ti.#lastUserText = ti.text; + ti.backdropTouchOff = false; + ti.text = ti.#lastPrintedText || ti.text; + if (ti.#lastPrintedText.length > 0 && ti.commandSentOnce) { + ti.copy.btn.disabled = false; + ti.#coatedCopy = ti.#coatCopy(ti.text); + ti.paste.btn.disabled = true; + ti.paste.btn.removeFromDom($, "paste"); + } + $.act("text-input:uneditable"); + needsPaint(); + if (!ti.mute) { + sound2.synth({ + type: "sine", + tone: 250, + attack: 0.1, + decay: 0.99, + volume: 0.75, + duration: 1e-3 + }); + } + ti.mute = false; + } + if (e2.is("touch") && (this.enter.btn.disabled === false && this.enter.btn.box.contains(e2) || this.copy.btn.disabled === false && this.copy.btn.box.contains(e2) || this.paste.btn.disabled === false && this.paste.btn.box.contains(e2))) { + this.backdropTouchOff = true; + } + if (e2.is("lift")) { + if (this.shifting) { + this.#moveDeltaX = 0; + this.shifting = false; + this.#recentlyShifting = true; + $.send({ type: "keyboard:unlock" }); + setTimeout(() => { + this.#recentlyShifting = false; + }, 50); + } + const shouldPreventActivation = this.backdropTouchOff; + this.backdropTouchOff = false; + if (!this.#lock && !shouldPreventActivation) { + $.send({ type: "keyboard:unlock" }); + } + if (!this.canType) { + if (this.#activatingPress) { + if (!this.#edgeCancelled && !shouldPreventActivation) { + this.#manuallyActivated = true; + this.#manualActivationTime = Date.now(); + activate(this); + } + this.#activatingPress = false; + } + } else if (!shouldPreventActivation) { + const isOverEnterButton = this.enter.btn.disabled === false && this.enter.btn.box.contains(e2); + const enterButtonIsDown = this.enter.btn.down; + const isOverInteractive = this.copy.btn.disabled === false && this.copy.btn.box.contains(e2) || this.paste.btn.disabled === false && this.paste.btn.box.contains(e2) || isOverEnterButton; + if (!isOverInteractive || isOverEnterButton && enterButtonIsDown) { + if (!isOverInteractive && !this.#recentlyShifting) { + this.#manuallyDeactivated = true; + this.#manualDeactivationTime = Date.now(); + if (this.#deactivatingPress) { + $.send({ type: "keyboard:lock" }); + $.send({ type: "keyboard:close" }); + } + deactivate(this); + } + } + } + this.#deactivatingPress = false; + } + if (!this.#lock) { + if (e2.is("draw") && this.enter.btn.disabled === false && this.enter.btn.box.contains(e2) && !this.enter.btn.down) { + $.send({ type: "keyboard:lock" }); + } + if ((e2.is("draw") || e2.is("touch")) && this.copy.btn.disabled === false && this.copy.btn.box.contains(e2)) { + $.send({ type: "keyboard:lock" }); + } + if ((e2.is("draw") || e2.is("touch")) && this.paste.btn.disabled === false && this.paste.btn.box.contains(e2)) { + $.send({ type: "keyboard:lock" }); + } + this.enter.btn.act(e2, { + down: () => { + $.send({ type: "keyboard:unlock" }); + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 600, + attack: 0.1, + decay: 0.99, + volume: 0.75, + duration: 1e-3 + }); + } + needsPaint(); + }, + scrub: () => { + }, + push: async () => { + if (this.#lock) { + return; + } + if (!this.canType && this.text.trim().length > 0) { + this.#manuallyActivated = true; + this.#manualActivationTime = Date.now(); + activate(this); + if (this.runnable && this.text.trim().length > 0) { + await this.run(store2); + deactivate(this); + } + } else if (this.runnable && this.text.trim().length > 0) { + this.#manuallyActivated = true; + this.#manualActivationTime = Date.now(); + await this.run(store2); + this._enterHandledMessage = true; + deactivate(this); + setTimeout(() => { + this._enterHandledMessage = false; + }, 200); + } else if (this.runnable && this.text.trim().length === 0 && this.closeOnEmptyEnter) { + deactivate(this); + } else { + this.#edgeCancelled = false; + this.#manuallyActivated = true; + this.#manualActivationTime = Date.now(); + activate(this); + } + }, + cancel: () => { + $.send({ type: "keyboard:lock" }); + needsPaint(); + }, + rollover: (btn) => { + if (btn) $.send({ type: "keyboard:unlock" }); + needsPaint(); + }, + rollout: () => { + $.send({ type: "keyboard:lock" }); + needsPaint(); + } + }); + this.copy.btn.act(e2, { + down: () => { + needsPaint(); + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 600, + attack: 0.1, + decay: 0.99, + volume: 0.75, + duration: 1e-3 + }); + } + }, + push: () => { + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 800, + attack: 0.1, + decay: 0.99, + volume: 0.75, + duration: 5e-3 + }); + } + needsPaint(); + }, + cancel: () => needsPaint() + }); + this.paste.btn.act(e2, { + down: () => { + needsPaint(); + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 600, + attack: 0.1, + decay: 0.99, + volume: 0.75, + duration: 1e-3 + }); + } + }, + push: () => { + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 800, + attack: 0.1, + decay: 0.99, + volume: 0.75, + duration: 5e-3 + }); + } + needsPaint(); + }, + cancel: () => needsPaint() + }); + } + if (e2.name?.startsWith("clipboard:copy")) { + const copied = e2.is("clipboard:copy:copied"); + if (debug4) { + copied ? "\u{1F4CB} Copy: Copied \u{1F643}" : console.warn("\u{1F4CB} Copy: Failed \u26A0\uFE0F"); + } + this.copy.txt = copied ? this.scheme.buttons?.copy?.copied || "Copied" : this.scheme.buttons?.copy?.failed || "Failed"; + this.#copyPasteScheme = this.#buildCopyPasteScheme(); + needsPaint(); + clearTimeout(this.#copyPasteTimeout); + this.#copyPasteTimeout = setTimeout(() => { + this.copy.btn.disabled = false; + this.copy.txt = this.scheme.buttons?.copy?.label || "Copy"; + this.#copyPasteScheme = void 0; + needsPaint(); + }, 500); + } + if (e2.name?.startsWith("clipboard:paste")) { + let label; + if (e2.is("clipboard:paste:pasted")) { + if (debug4) "\u{1F4CB} Paste: Pasted \u{1F643}"; + label = this.scheme.buttons?.paste?.pasted || "Pasted"; + } else if (e2.is("clipboard:paste:pasted:empty")) { + if (debug4) console.warn("\u{1F4CB} Paste: Empty \u{1F450}\uFE0F"); + label = this.scheme.buttons?.paste?.empty || "Empty"; + } else { + if (debug4) console.warn("\u{1F4CB} Paste: Failed \u26A0\uFE0F"); + label = this.scheme.buttons?.paste?.failed || "Failed"; + } + this.paste.txt = label; + this.#copyPasteScheme = this.#buildCopyPasteScheme(); + needsPaint(); + clearTimeout(this.#copyPasteTimeout); + this.#copyPasteTimeout = setTimeout(() => { + this.paste.btn.disabled = false; + this.paste.txt = this.scheme.buttons?.paste?.label || "Paste"; + this.#copyPasteScheme = void 0; + needsPaint(); + }, 500); + } + if (e2.is("prompt:text:replace") && (!this.activatedOnce || this.#lock === false)) { + this.text = e2.text; + this.#lastUserText = e2.text; + this.#prompt.snapTo(this.text.slice(0, e2.cursor)); + this.#ensureBlink(); + this.blink?.flip(true); + this.selection = null; + if (this.text.length > 0) { + this.enter.btn.disabled = false; + this.runnable = true; + } else { + this.enter.btn.disabled = true; + this.runnable = false; + } + if (this.#prehistory !== void 0) this.#prehistory = this.text; + } + if (e2.is("prompt:text:cursor") && this.#lock === false) { + if (e2.cursor === this.text.length) { + this.#prompt.snapTo(this.text); + } else if (this.text[e2.cursor]?.charCodeAt(0) === 10) { + if (e2.cursor > 0 && this.#prompt.textToCursorMap[e2.cursor - 1]) { + const prevPos = this.#prompt.textToCursorMap[e2.cursor - 1]; + this.#prompt.cursor = { ...prevPos }; + if (this.text[e2.cursor - 1]?.charCodeAt(0) !== 10) { + this.#prompt.forward(); + } + } else { + this.#prompt.cursor = { x: 0, y: 0 }; + } + } else { + this.#prompt.cursor = { ...this.#prompt.textToCursorMap[e2.cursor] }; + } + if (e2.start !== void 0 && e2.end !== void 0) { + this.selection = [e2.start, e2.end]; + } else { + this.selection = null; + } + this.#ensureBlink(); + this.blink?.flip(true); + } + if (e2.is("touch") && !this.#lock) { + this.#ensureBlink(); + this.blink?.flip(true); + this.#recentlyShifting = false; + } + if (e2.is("draw") && !this.#lock && this.canType && !this.enter.btn.down && !this.paste.btn.down) { + if (!this.shifting) { + $.send({ type: "keyboard:lock" }); + this.shifting = true; + this.backdropTouchOff = true; + this.#deactivatingPress = false; + } + if (this.#moveDeltaX > 0 && e2.delta.x < 0 || this.#moveDeltaX < 0 && e2.delta.x > 0) { + this.#moveDeltaX = 0; + } + this.#moveDeltaX += e2.delta.x; + while (this.#moveDeltaX <= -this.#moveThreshold) { + this.#moveDeltaX += this.#moveThreshold; + this.#prompt.crawlBackward(); + this.selection = null; + $.send({ type: "keyboard:cursor", content: -1 }); + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 800, + attack: 0.01, + decay: 0.95, + volume: 0.25, + duration: 8e-3 + }); + } + } + while (this.#moveDeltaX >= this.#moveThreshold) { + this.#moveDeltaX -= this.#moveThreshold; + this.#prompt.crawlForward(); + this.selection = null; + if (this.prompt.textPos() === void 0) { + $.act("textinput:shift-right:empty"); + } + $.send({ type: "keyboard:cursor", content: 1 }); + if (!this.mute) { + sound2.synth({ + type: "sine", + tone: 800, + attack: 0.01, + decay: 0.95, + volume: 0.25, + duration: 8e-3 + }); + } + } + this.#ensureBlink(); + this.blink?.flip(true); + } + } +}; +var Prompt = class { + top = 0; + left = 0; + wrap = "char"; + // auto-wrap setting, could also be "word". + scale = 1; + letterWidth; + // Taken from the typeface's block sizing. + letterHeight; + typeface; + // Reference to the typeface for proportional spacing + colWidth = 48; + // Maximum character width of each line before wrapping. + cursor = { x: 0, y: 0 }; + gutter; + // A y-position at the end of the colWidth. + lineBreaks = []; + // Legacy? + cursorToTextMap = {}; + // Keep track of text data in relationship to whitespace. + textToCursorMap = []; + wrappedWordIndices = []; + // Keep track of word wrapped indices after + // each mapping. + #mappedTo = ""; + // Text that has been mapped. + constructor(top = 0, left = 0, wrap2, colWidth = 48, lineSpacing = 0, typeface) { + this.typeface = typeface; + this.letterWidth = typeface.blockWidth * this.scale; + this.letterHeight = typeface.blockHeight * this.scale + lineSpacing; + this.top = top; + this.left = left; + this.wrap = wrap2; + this.colWidth = colWidth; + this.gutter = this.colWidth * this.letterWidth; + } + // Snap the cursor to the end of a text. + snapTo(text) { + if (text[text.length - 1]) { + this.cursor = { ...this.textToCursorMap[text.length - 1] }; + if (text[text.length - 1].charCodeAt(0) !== 10) this.forward(); + } else { + this.cursor = { x: 0, y: 0 }; + } + } + // Generate text map for rendering and UI operations. + mapTo(text) { + this.#mappedTo = text; + this.cursorToTextMap = {}; + this.textToCursorMap = []; + this.wrappedWordIndices = []; + const cursor2 = { x: 0, y: 0 }; + if (this.wrap === "char") { + let textIndex = 0; + let brokeLine = false; + const characters = Array.from(text); + for (let c4 = 0; c4 < characters.length; c4 += 1) { + const char = characters[c4]; + const newLine = char.charCodeAt(0) === 10; + if (c4 === 0) { + if (newLine) { + this.newLine(cursor2); + brokeLine = true; + } + this.#updateMaps(text, textIndex, cursor2); + continue; + } + if (newLine) { + this.newLine(cursor2); + brokeLine = true; + } else { + !brokeLine ? this.forward(cursor2) : brokeLine = false; + } + textIndex += 1; + this.#updateMaps(text, textIndex, cursor2); + } + } else if (this.wrap === "word") { + let textIndex = 0; + let brokeLine = false; + let wordStart = false; + let wordCount = 0; + const characters = Array.from(text); + for (let c4 = 0; c4 < characters.length; c4 += 1) { + const char = characters[c4]; + let newLine = char.charCodeAt(0) === 10; + if (c4 === 0) { + if (newLine) { + this.newLine(cursor2); + brokeLine = true; + } + this.#updateMaps(text, textIndex, cursor2); + if (!newLine && char !== " ") { + wordStart = true; + wordCount += 1; + } + continue; + } + if (!newLine && char !== " ") { + if (!wordStart) { + wordStart = true; + wordCount += 1; + let len5 = 0; + for (let i2 = c4; i2 < characters.length; i2 += 1) { + const char2 = characters[i2]; + if (char2 !== " " && char2.charCodeAt(0) !== 10) { + len5 += 1; + } else { + break; + } + } + if (cursor2.x + len5 >= this.colWidth - 1) { + if (!this.posHasNewLine(cursor2)) { + this.newLine(cursor2); + brokeLine = true; + this.wrappedWordIndices.push(c4); + } + } + } + } else { + wordStart = false; + } + if (char === " " && cursor2.x + 1 === this.colWidth - 1 && characters[textIndex] !== " ") { + newLine = true; + } + if (newLine) { + this.newLine(cursor2); + brokeLine = true; + } else { + !brokeLine ? this.forward(cursor2) : brokeLine = false; + } + textIndex += 1; + this.#updateMaps(text, textIndex, cursor2); + } + } + } + // Lookup to check if the word at the beginning of this index was + // word-wrapped. + wrapped(index) { + if (this.wrap !== "word") return false; + return this.wrappedWordIndices.includes(index); + } + #updateMaps(text, textIndex, cursor2 = this.cursor) { + const char = text[textIndex]; + const newLine = char.charCodeAt(0) === 10; + this.textToCursorMap[textIndex] = { ...cursor2 }; + let key = `${cursor2.x}:${cursor2.y}`; + if (newLine) key = key + ":\\n"; + this.cursorToTextMap[key] = textIndex; + } + // Get the current text index given a cursor position. + textPos(cursor2 = this.cursor) { + if (this.textToCursorMap.length === 0) { + return 0; + } else { + const key = `${cursor2.x}:${cursor2.y}`; + let pos = this.cursorToTextMap[key]; + if (pos === void 0) pos = this.cursorToTextMap[key + ":\\n"]; + return pos; + } + } + // Determine whether a cursor has a visible character in the map. + posHasVisibleCharacter(cursor2 = this.cursor) { + return this.cursorToTextMap[`${cursor2.x}:${cursor2.y}`] !== void 0; + } + // Determine whether there is an invisible new line character + // under the cursor in the map. + posHasNewLine(cursor2 = this.cursor) { + return this.cursorToTextMap[`${cursor2.x}:${cursor2.y}:\\n`] !== void 0; + } + // Flatten the coordinates of the cursor to return a linear value. + // (Does not necessarily match text, due to line breaks, etc.) + get index() { + const x = this.cursor.x; + const y = this.cursor.y; + const cols = this.colWidth; + const lineBreaks = y; + return y * (cols + 1) + x - lineBreaks; + } + // Caluclate the screen x, y position of the top left of the cursor. + // (Also include the width and height of the block.) + pos(cursor2 = this.cursor, bh = false) { + const y = this.left + cursor2.y * this.letterHeight; + const isProportional = this.typeface?.data?.proportional === true || this.typeface?.data?.bdfFont === "MatrixChunky8" || this.typeface?.name === "MatrixChunky8" || !!this.typeface?.data?.advances; + let x; + let w; + if (isProportional && this.#mappedTo && typeof this.typeface?.getAdvance === "function") { + x = this.top; + let charsOnLine = 0; + for (const [key, textIdx] of Object.entries(this.cursorToTextMap)) { + const [kx, ky] = key.split(":").map((v2) => parseInt(v2)); + if (ky === cursor2.y && kx < cursor2.x && !key.includes("\\n")) { + charsOnLine++; + } + } + for (let i2 = 0; i2 < this.#mappedTo.length; i2++) { + const mappedPos = this.textToCursorMap[i2]; + if (mappedPos && mappedPos.y === cursor2.y && mappedPos.x < cursor2.x) { + const char = this.#mappedTo[i2]; + if (char && char.charCodeAt(0) !== 10) { + const advance = this.typeface.getAdvance(char); + x += (typeof advance === "number" ? advance : this.letterWidth) * this.scale; + } + } + } + const cursorTextIdx = this.textPos(cursor2); + if (cursorTextIdx !== void 0 && this.#mappedTo[cursorTextIdx]) { + const curChar = this.#mappedTo[cursorTextIdx]; + const advance = this.typeface.getAdvance(curChar); + w = (typeof advance === "number" ? advance : this.letterWidth) * this.scale; + } else { + w = this.letterWidth; + } + } else { + x = this.top + cursor2.x * this.letterWidth; + w = this.letterWidth; + } + return { + x, + y, + w, + h: this.letterHeight + }; + } + // Move the cursor forward, optionally input an override cursor. + forward(cursor2 = this.cursor, amount = 1) { + repeat(amount, () => { + cursor2.x = (cursor2.x + 1) % (this.colWidth - 1); + if (cursor2.x === 0) cursor2.y += 1; + }); + return cursor2; + } + // Move the cursor forward only by the mapped text. + crawlForward() { + if (this.#mappedTo.length === 0) return; + const back = this.backward({ ...this.cursor }); + const backIndex = this.textPos(back); + const startIndex = this.textPos(); + if (backIndex === this.#mappedTo.length || startIndex === this.#mappedTo.length - 1 && !this.posHasVisibleCharacter()) { + return; + } + if (backIndex !== this.#mappedTo.length - 1) { + if (this.#mappedTo[startIndex + 1]?.charCodeAt(0) === 10 && this.posHasVisibleCharacter()) { + this.cursor.x += 1; + } else { + this.forward(); + if (startIndex !== this.#mappedTo.length - 1) { + while (this.textPos() === void 0) { + this.forward(); + } + } + } + } else if (startIndex === 0) this.forward(); + } + // Move the cursor backward only by the mapped text. + crawlBackward() { + const back = this.backward({ ...this.cursor }); + let backIndex = this.textPos(back); + const currentIndex = this.textPos(); + if (backIndex === void 0) { + if (this.posHasNewLine() && currentIndex <= 1 && this.#mappedTo[currentIndex].charCodeAt(0) === 10) { + this.cursor.y -= 1; + return; + } else { + if (this.posHasNewLine()) { + const backupAmount = this.posHasVisibleCharacter() ? 2 : 1; + this.cursor = { + ...this.textToCursorMap[currentIndex - backupAmount] + }; + if (this.posHasVisibleCharacter()) this.forward(); + return; + } else { + while (backIndex === void 0) { + this.backward(); + backIndex = this.textPos(this.backward(back)); + } + } + } + } + this.backward(); + } + // Move cursor backward, with optional override cursor. + backward(cursor2 = this.cursor) { + if (cursor2.x === 0) { + if (cursor2.y > 0) { + cursor2.x = this.colWidth - 2; + cursor2.y -= 1; + } + } else { + cursor2.x -= 1; + } + return cursor2; + } + // Create and track a cursor line break. + newLine(cursor2 = this.cursor) { + cursor2.y += 1; + cursor2.x = 0; + } +}; +var TextFields = class { + values = {}; + focused = 0; + specs; + input; + rows = []; + // hit boxes, rebuilt every paint + #submit; + #pending = null; + // a value waiting for the keyboard to be ready for it + constructor($, specs, submit, options = {}) { + this.specs = specs.map((spec) => ({ lines: 1, ...spec })); + this.specs.forEach((spec) => this.values[spec.name] = ""); + this.#submit = submit; + this.input = new TextInput($, "", () => this.advance($), { + ...options, + poe: true, + history: false, + closeOnEmptyEnter: false + }); + } + get current() { + return this.specs[this.focused]; + } + // Pull the live buffer back into the focused field. + sync() { + this.values[this.current.name] = this.input.text; + } + focus(index, $) { + this.sync(); + this.focused = Math.max(0, Math.min(this.specs.length - 1, index)); + this.#pending = this.values[this.current.name] ?? ""; + $.send({ type: "keyboard:open" }); + } + // Enter walks down the stack, and sends from the last field. + advance($) { + this.sync(); + if (this.focused < this.specs.length - 1) return this.focus(this.focused + 1, $); + this.#submit({ ...this.values }); + } + reset($) { + this.specs.forEach((spec) => this.values[spec.name] = ""); + this.focused = 0; + this.input.text = ""; + this.#pending = ""; + $.send({ type: "keyboard:text:replace", content: { text: "" } }); + } + sim($) { + if (this.#pending !== null && this.input.canType) { + this.input.text = this.#pending; + $.send({ + type: "keyboard:text:replace", + content: { text: this.#pending } + }); + this.input.snap(); + this.#pending = null; + } + this.input.sim($); + } + #labelWidth($) { + const widest = this.specs.reduce( + (wide, spec) => Math.max(wide, $.text.box(spec.label, void 0, void 0, 1, false, "MatrixChunky8").box.width), + 0 + ); + return Math.min(widest + 6, Math.round($.screen.width * 0.34)); + } + // Single-line rows keep their height and the taller fields split whatever is + // left, so one call fits a phone and a desktop. + paint($, frame) { + const { ink: ink3 } = $; + const labelW = this.#labelWidth($); + const gap = 3; + const rowH = 14; + const grows = this.specs.filter((spec) => spec.lines > 1).length; + const singles = this.specs.length - grows; + const spare = frame.height - singles * (rowH + gap) - grows * gap; + const grown = Math.max(30, Math.floor(spare / Math.max(grows, 1))); + this.rows = []; + let y = frame.y; + this.specs.forEach((spec, i2) => { + const h = spec.lines > 1 ? grown : rowH; + const box2 = { x: frame.x, y, width: frame.width, height: h }; + this.rows.push(box2); + const on = i2 === this.focused; + ink3(on ? [120, 210, 255] : [92, 88, 110]).write( + spec.label, + { x: box2.x + 2, y: y + 4 }, + void 0, + void 0, + false, + "MatrixChunky8" + ); + const field = { + x: box2.x + labelW, + y, + width: box2.width - labelW, + height: h + }; + if (on) { + ink3(26, 34, 50).box(field.x, field.y, field.width, field.height); + this.input.paint($, false, field); + ink3(110, 180, 255).box( + field.x, + field.y, + field.width, + field.height, + "outline" + ); + ink3(120, 210, 255).box(field.x - 2, field.y + 1, 2, field.height - 2); + } else { + const value = this.values[spec.name]; + ink3(20, 17, 26).box(field.x, field.y, field.width, field.height); + ink3(46, 42, 58).box(field.x, field.y, field.width, field.height, "outline"); + ink3(value ? 185 : [74, 70, 90]).write( + value || spec.placeholder || "", + { x: field.x + 3, y: y + 4 }, + void 0, + field.width - 6 + ); + } + y += h + gap; + }); + } + // Returns true when the focus moved, so the caller can stop there. + act($) { + const e2 = $.event; + if (e2.is("keyboard:down:arrowup") && this.focused > 0) { + this.focus(this.focused - 1, $); + return true; + } + if (e2.is("keyboard:down:arrowdown") && this.focused < this.specs.length - 1) { + this.focus(this.focused + 1, $); + return true; + } + if (e2.is("touch")) { + const hit = this.rows.findIndex( + (b2) => e2.x >= b2.x && e2.x < b2.x + b2.width && e2.y >= b2.y && e2.y < b2.y + b2.height + ); + if (hit >= 0) { + if (hit !== this.focused) { + this.focus(hit, $); + return true; + } + } + } + this.input.act($); + return false; + } +}; + +// public/aesthetic.computer/lib/p5-worker.mjs +var p5LoadPromise = null; +var stubsInstalled = false; +var P5_URL = "/aesthetic.computer/dep/p5/p5.min.js"; +var CanvasShim = class _CanvasShim { + constructor(w = 100, h = 100) { + this._oc = new OffscreenCanvas(w, h); + this._ctx2d = this._oc.getContext("2d", { willReadFrequently: true, alpha: true }); + this.style = new Proxy({}, { get: () => "", set: () => true }); + this.dataset = {}; + this.attributes = []; + this.id = ""; + this.className = ""; + this.classList = { + add() { + }, + remove() { + }, + toggle() { + }, + contains() { + return false; + }, + replace() { + }, + item() { + return null; + }, + length: 0 + }; + this.tagName = "CANVAS"; + this.nodeName = "CANVAS"; + this.nodeType = 1; + this.children = []; + this.childNodes = []; + this.innerHTML = ""; + this.textContent = ""; + this.parentNode = null; + this.parentElement = null; + this.ownerDocument = null; + } + get width() { + return this._oc.width; + } + set width(v2) { + this._oc.width = v2; + } + get height() { + return this._oc.height; + } + set height(v2) { + this._oc.height = v2; + } + getContext(type, opts) { + if (type === "2d" && this._ctx2d) return this._ctx2d; + return this._oc.getContext(type, opts); + } + getBoundingClientRect() { + return { + x: 0, + y: 0, + left: 0, + top: 0, + right: this._oc.width, + bottom: this._oc.height, + width: this._oc.width, + height: this._oc.height + }; + } + toDataURL() { + return ""; + } + async toBlob(cb) { + cb && cb(await this._oc.convertToBlob()); + } + addEventListener() { + } + removeEventListener() { + } + setAttribute() { + } + getAttribute() { + return null; + } + removeAttribute() { + } + appendChild(c4) { + return c4; + } + removeChild(c4) { + return c4; + } + insertBefore(c4) { + return c4; + } + cloneNode() { + return new _CanvasShim(this._oc.width, this._oc.height); + } + contains() { + return false; + } + focus() { + } + blur() { + } + click() { + } + matches() { + return false; + } + closest() { + return null; + } + // Convenience for AC: get the underlying OffscreenCanvas + get offscreen() { + return this._oc; + } +}; +function makeElementStub(tag) { + const t2 = (tag || "div").toLowerCase(); + return { + tagName: t2.toUpperCase(), + nodeName: t2.toUpperCase(), + style: new Proxy({}, { get: () => "", set: () => true }), + children: [], + childNodes: [], + classList: { + add() { + }, + remove() { + }, + toggle() { + }, + contains() { + return false; + }, + replace() { + } + }, + dataset: {}, + attributes: [], + parentNode: null, + parentElement: null, + ownerDocument: null, + innerHTML: "", + textContent: "", + setAttribute() { + }, + getAttribute() { + return null; + }, + removeAttribute() { + }, + hasAttribute() { + return false; + }, + appendChild(c4) { + return c4; + }, + removeChild(c4) { + return c4; + }, + insertBefore(c4) { + return c4; + }, + replaceChild(c4) { + return c4; + }, + cloneNode() { + return makeElementStub(t2); + }, + addEventListener() { + }, + removeEventListener() { + }, + dispatchEvent() { + return true; + }, + getBoundingClientRect() { + return { x: 0, y: 0, left: 0, top: 0, right: 0, bottom: 0, width: 0, height: 0 }; + }, + contains() { + return false; + }, + focus() { + }, + blur() { + }, + click() { + }, + matches() { + return false; + }, + closest() { + return null; + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + } + }; +} +function installDomStubs() { + if (stubsInstalled) return; + stubsInstalled = true; + if (typeof self.window === "undefined") self.window = self; + self.window.innerWidth = 256; + self.window.innerHeight = 256; + self.window.devicePixelRatio = 1; + self.window.scrollX = 0; + self.window.scrollY = 0; + self.window.pageXOffset = 0; + self.window.pageYOffset = 0; + if (!self.window.screen) self.window.screen = { width: 256, height: 256, availWidth: 256, availHeight: 256 }; + if (!self.window.navigator) { + self.window.navigator = self.navigator || { + userAgent: "aesthetic-computer", + platform: "AC", + language: "en-US", + languages: ["en-US"], + onLine: true + }; + } + if (!self.window.location) { + self.window.location = self.location || { href: "https://aesthetic.computer/", hostname: "aesthetic.computer", protocol: "https:" }; + } + if (typeof self.requestAnimationFrame !== "function") { + self.requestAnimationFrame = (cb) => setTimeout(() => cb(performance.now()), 16); + self.cancelAnimationFrame = (id) => clearTimeout(id); + } + const fakeBody = makeElementStub("body"); + const fakeHead = makeElementStub("head"); + const fakeHtml = makeElementStub("html"); + self.__acP5CreatedCanvases = []; + self.document = { + readyState: "complete", + visibilityState: "visible", + hidden: false, + title: "aesthetic.computer", + body: fakeBody, + head: fakeHead, + documentElement: fakeHtml, + location: self.window.location, + cookie: "", + createElement(tag) { + if (typeof tag === "string" && tag.toLowerCase() === "canvas") { + const c4 = new CanvasShim(); + self.__acP5CreatedCanvases.push(c4); + return c4; + } + return makeElementStub(tag); + }, + createElementNS(_ns, tag) { + return this.createElement(tag); + }, + createTextNode(s2) { + return { nodeValue: String(s2), textContent: String(s2), nodeType: 3 }; + }, + getElementById() { + return null; + }, + getElementsByTagName(tag) { + const t2 = String(tag || "").toLowerCase(); + if (t2 === "head") return [fakeHead]; + if (t2 === "body" || t2 === "html") return [fakeBody]; + return [fakeBody]; + }, + getElementsByClassName() { + return [fakeBody]; + }, + querySelector() { + return fakeBody; + }, + querySelectorAll() { + return [fakeBody]; + }, + addEventListener() { + }, + removeEventListener() { + }, + dispatchEvent() { + return true; + }, + hasFocus() { + return true; + }, + exitFullscreen() { + return Promise.resolve(); + }, + contains() { + return false; + } + }; + self.HTMLCanvasElement = CanvasShim; + if (typeof self.HTMLElement === "undefined") self.HTMLElement = function HTMLElement() { + }; + if (typeof self.Node === "undefined") self.Node = function Node() { + }; + if (typeof self.Element === "undefined") self.Element = function Element() { + }; + if (typeof self.Image === "undefined") { + self.Image = class { + constructor() { + this.src = ""; + this.crossOrigin = ""; + this.complete = false; + } + addEventListener() { + } + removeEventListener() { + } + }; + } + if (typeof self.Audio === "undefined") { + self.Audio = class { + constructor() { + } + play() { + return Promise.resolve(); + } + pause() { + } + addEventListener() { + } + }; + } + if (typeof self.getComputedStyle === "undefined") { + self.getComputedStyle = () => new Proxy({}, { get: () => "" }); + } +} +async function ensureP5Loaded() { + if (p5LoadPromise) return p5LoadPromise; + p5LoadPromise = (async () => { + installDomStubs(); + const res = await fetch(P5_URL, { cache: "force-cache" }); + if (!res.ok) throw new Error(`failed to fetch p5: ${res.status}`); + const code2 = await res.text(); + (0, eval)(code2); + if (typeof self.p5 !== "function") { + throw new Error("p5 did not attach to global after eval"); + } + })(); + return p5LoadPromise; +} +function setViewport(w, h) { + if (typeof self.window === "undefined") return; + self.window.innerWidth = w; + self.window.innerHeight = h; + self.window.windowWidth = w; + self.window.windowHeight = h; + self.window.displayWidth = w; + self.window.displayHeight = h; + if (self.window.screen) { + self.window.screen.width = w; + self.window.screen.height = h; + self.window.screen.availWidth = w; + self.window.screen.availHeight = h; + } +} +var NAMED_KEYS = { + arrowup: 38, + arrowdown: 40, + arrowleft: 37, + arrowright: 39, + enter: 13, + escape: 27, + tab: 9, + backspace: 8, + delete: 46, + shift: 16, + control: 17, + alt: 18, + meta: 91, + capslock: 20, + space: 32, + " ": 32, + pageup: 33, + pagedown: 34, + home: 36, + end: 35, + insert: 45, + f1: 112, + f2: 113, + f3: 114, + f4: 115, + f5: 116, + f6: 117, + f7: 118, + f8: 119, + f9: 120, + f10: 121, + f11: 122, + f12: 123 +}; +function keyToKeyCode(key) { + if (!key) return 0; + const lower = String(key).toLowerCase(); + if (NAMED_KEYS[lower] !== void 0) return NAMED_KEYS[lower]; + if (key.length === 1) return key.toUpperCase().charCodeAt(0); + return 0; +} +function normalizeKey(key) { + if (!key) return ""; + return key; +} +var SKETCH_GLOBALS = [ + "setup", + "draw", + "preload", + "mousePressed", + "mouseReleased", + "mouseClicked", + "mouseMoved", + "mouseDragged", + "mouseWheel", + "doubleClicked", + "keyPressed", + "keyReleased", + "keyTyped", + "touchStarted", + "touchMoved", + "touchEnded", + "windowResized", + "deviceMoved", + "deviceTurned", + "deviceShaken" +]; +function clearSketchGlobals() { + for (const k of SKETCH_GLOBALS) { + try { + delete self[k]; + } catch { + } + } +} +async function makeP5WorkerModule({ slug, source }) { + await ensureP5Loaded(); + let p5Instance = null; + let canvasShim = null; + let mouseDown = false; + let bootError = null; + let lastWidth = 0; + let lastHeight = 0; + let paintCount2 = 0; + let lastPaintTime2 = 0; + let drainTimeTotal = 0; + let blitTimeTotal = 0; + let dtTotal = 0; + let drainCountTotal = 0; + let maxDt = 0; + let maxBlit = 0; + let maxDrain = 0; + let p5Looping = true; + let cachedCtx = null; + const blitPixelsToScreen = (screen2) => { + if (!canvasShim) return; + const oc = canvasShim.offscreen; + if (!cachedCtx) cachedCtx = canvasShim.getContext("2d"); + if (oc.width !== screen2.width || oc.height !== screen2.height) { + const w = Math.min(oc.width, screen2.width); + const h = Math.min(oc.height, screen2.height); + const img = cachedCtx.getImageData(0, 0, w, h); + const dst = screen2.pixels; + const stride = screen2.width * 4; + const srcStride = w * 4; + for (let row = 0; row < h; row++) { + dst.set(img.data.subarray(row * srcStride, (row + 1) * srcStride), row * stride); + } + } else { + const img = cachedCtx.getImageData(0, 0, oc.width, oc.height); + screen2.pixels.set(img.data); + } + }; + return { + boot: async ({ screen: screen2 }) => { + console.log(`[p5-worker] \u{1F7E2} BOOT START v4 screen=${screen2.width}x${screen2.height} slug=${slug}`); + try { + clearSketchGlobals(); + if (self.__acP5CreatedCanvases) self.__acP5CreatedCanvases.length = 0; + setViewport(screen2.width, screen2.height); + lastWidth = screen2.width; + lastHeight = screen2.height; + try { + (0, eval)(source); + } catch (err) { + bootError = `sketch eval: ${err && err.message || err}`; + console.error("[p5-worker]", bootError, err); + return; + } + try { + p5Instance = new self.p5(void 0, void 0); + } catch (err) { + bootError = `new p5(): ${err && err.message || err}`; + console.error("[p5-worker]", bootError, err); + return; + } + const tryCanvas = () => { + const candidates = [ + p5Instance?._renderer?.canvas, + p5Instance?.canvas, + p5Instance?._renderer?.elt, + ...self.__acP5CreatedCanvases || [] + ]; + for (const c4 of candidates) { + if (c4 instanceof CanvasShim) { + canvasShim = c4; + return true; + } + if (c4 && c4.offscreen instanceof OffscreenCanvas) { + canvasShim = c4; + return true; + } + } + return false; + }; + const start = performance.now(); + while ((!tryCanvas() || !p5Instance?._setupDone) && performance.now() - start < 1e3) { + await new Promise((r2) => setTimeout(r2, 10)); + } + if (!canvasShim) { + bootError = "could not locate sketch canvas after 1000ms \u2014 did setup() call createCanvas()?"; + console.warn("[p5-worker]", bootError); + } else { + try { + p5Instance.noLoop(); + p5Looping = false; + } catch (err) { + console.warn("[p5-worker] noLoop failed:", err); + } + console.log(`[p5-worker] \u{1F7E2} canvas=${canvasShim.offscreen.width}x${canvasShim.offscreen.height} setupDone=${p5Instance?._setupDone} looping=${p5Looping}`); + } + } catch (err) { + bootError = String(err); + console.error("[p5-worker] boot crash:", err); + } + }, + paint: ({ screen: screen2, ink: ink3, wipe }) => { + if (bootError) { + wipe(20, 0, 0); + ink3(255, 120, 120).write(`p5 boot error:`, { x: 8, y: 12 }); + ink3(255, 200, 200).write(bootError.slice(0, 200), { x: 8, y: 28 }); + return true; + } + const t0 = performance.now(); + const dt = lastPaintTime2 ? t0 - lastPaintTime2 : 0; + lastPaintTime2 = t0; + if (p5Instance && p5Instance._setupDone) { + try { + p5Instance.redraw(); + } catch (err) { + console.warn("[p5-worker] redraw:", err); + } + } + const t1 = performance.now(); + blitPixelsToScreen(screen2); + const t2 = performance.now(); + const drawMs = t1 - t0; + const blitMs = t2 - t1; + drainTimeTotal += drawMs; + blitTimeTotal += blitMs; + dtTotal += dt; + if (dt > maxDt) maxDt = dt; + if (blitMs > maxBlit) maxBlit = blitMs; + if (drawMs > maxDrain) maxDrain = drawMs; + paintCount2++; + const shouldLog = paintCount2 <= 3 || paintCount2 % 30 === 0; + if (shouldLog) { + const N = paintCount2 <= 3 ? 1 : 30; + const fps = dtTotal > 0 ? N * 1e3 / dtTotal : 0; + const cw = canvasShim && canvasShim.offscreen ? canvasShim.offscreen.width : "?"; + const ch = canvasShim && canvasShim.offscreen ? canvasShim.offscreen.height : "?"; + console.log( + `[p5-worker] frame=${paintCount2} fps=${fps.toFixed(1)} dt=${(dtTotal / N).toFixed(1)}ms(max ${maxDt.toFixed(1)}) draw=${(drainTimeTotal / N).toFixed(2)}ms(max ${maxDrain.toFixed(2)}) blit=${(blitTimeTotal / N).toFixed(2)}ms(max ${maxBlit.toFixed(2)}) canvas=${cw}x${ch} screen=${screen2.width}x${screen2.height}` + ); + drainTimeTotal = blitTimeTotal = dtTotal = 0; + maxDt = maxBlit = maxDrain = 0; + } + return true; + }, + // sim is intentionally empty — reframe is handled via the `reframed` + // event in act() (AC's canonical channel for screen-size changes). + act: ({ event: e2, jump: jump2, handle: handle2, notice: notice2 }) => { + if (!self.ac && jump2) { + self.ac = { + jump: (path, opts) => jump2(path, opts), + handle: () => typeof handle2 === "function" ? handle2() : null, + notice: (msg, color3) => notice2 && notice2(msg, color3) + }; + } + if (!p5Instance) return; + if (e2.is("reframed")) { + const w = e2.width ?? e2.content?.width ?? lastWidth; + const h = e2.height ?? e2.content?.height ?? lastHeight; + lastWidth = w; + lastHeight = h; + setViewport(w, h); + try { + p5Instance.resizeCanvas?.(w, h); + if (canvasShim && (canvasShim.offscreen.width !== w || canvasShim.offscreen.height !== h)) { + canvasShim._oc.width = w; + canvasShim._oc.height = h; + } + } catch (err) { + console.warn("[p5-worker] resizeCanvas:", err); + } + if (typeof self.windowResized === "function") { + try { + self.windowResized(); + } catch (err) { + console.warn("[p5-worker] windowResized:", err); + } + } + console.log(`[p5-worker] \u{1F4D0} reframed \u2192 ${w}x${h}`); + return; + } + const updateMouse = (x, y) => { + const cw = canvasShim?.offscreen.width || lastWidth || 1; + const ch = canvasShim?.offscreen.height || lastHeight || 1; + const sx = cw / (lastWidth || cw); + const sy = ch / (lastHeight || ch); + const mx = x * sx; + const my = y * sy; + self.window.pmouseX = self.window.mouseX ?? mx; + self.window.pmouseY = self.window.mouseY ?? my; + self.window.mouseX = mx; + self.window.mouseY = my; + self.window.winMouseX = mx; + self.window.winMouseY = my; + self.window.pwinMouseX = self.window.winMouseX; + self.window.pwinMouseY = self.window.winMouseY; + if (p5Instance) { + p5Instance.pmouseX = p5Instance.mouseX; + p5Instance.pmouseY = p5Instance.mouseY; + p5Instance.mouseX = mx; + p5Instance.mouseY = my; + p5Instance.winMouseX = mx; + p5Instance.winMouseY = my; + } + }; + if (e2.is("move") || e2.is("draw")) { + updateMouse(e2.x, e2.y); + const fn = mouseDown ? self.mouseDragged : self.mouseMoved; + if (typeof fn === "function") { + try { + fn(); + } catch (err) { + console.warn(err); + } + } + } else if (e2.is("touch")) { + mouseDown = true; + self.window.mouseIsPressed = true; + self.window.mouseButton = self.LEFT || "left"; + if (p5Instance) { + p5Instance.mouseIsPressed = true; + p5Instance.mouseButton = p5Instance.LEFT; + } + updateMouse(e2.x, e2.y); + if (typeof self.mousePressed === "function") { + try { + self.mousePressed(); + } catch (err) { + console.warn(err); + } + } + if (typeof self.touchStarted === "function") { + try { + self.touchStarted(); + } catch (err) { + console.warn(err); + } + } + } else if (e2.is("lift")) { + mouseDown = false; + self.window.mouseIsPressed = false; + if (p5Instance) p5Instance.mouseIsPressed = false; + if (typeof self.mouseReleased === "function") { + try { + self.mouseReleased(); + } catch (err) { + console.warn(err); + } + } + if (typeof self.mouseClicked === "function") { + try { + self.mouseClicked(); + } catch (err) { + console.warn(err); + } + } + if (typeof self.touchEnded === "function") { + try { + self.touchEnded(); + } catch (err) { + console.warn(err); + } + } + } else if (e2.device === "wheel") { + if (typeof self.mouseWheel === "function") { + try { + self.mouseWheel({ delta: e2.y ?? e2.deltaY ?? 0, deltaX: e2.x ?? 0, deltaY: e2.y ?? 0 }); + } catch (err) { + console.warn(err); + } + } + } else if (e2.is("keyboard:down")) { + const k = e2.key || ""; + self.window.key = normalizeKey(k); + self.window.keyCode = keyToKeyCode(k); + self.window.keyIsPressed = true; + if (p5Instance) { + p5Instance.key = self.window.key; + p5Instance.keyCode = self.window.keyCode; + p5Instance.keyIsPressed = true; + } + if (typeof self.keyPressed === "function") { + try { + self.keyPressed(); + } catch (err) { + console.warn(err); + } + } + if (k.length === 1 && typeof self.keyTyped === "function") { + try { + self.keyTyped(); + } catch (err) { + console.warn(err); + } + } + } else if (e2.is("keyboard:up")) { + self.window.keyIsPressed = false; + if (p5Instance) p5Instance.keyIsPressed = false; + if (typeof self.keyReleased === "function") { + try { + self.keyReleased(); + } catch (err) { + console.warn(err); + } + } + } + }, + leave: () => { + try { + p5Instance?.remove?.(); + } catch { + } + p5Instance = null; + canvasShim = null; + cachedCtx = null; + clearSketchGlobals(); + } + }; +} + +// public/aesthetic.computer/lib/l5.mjs +var WASM_URL; +function getWasmUrl() { + if (!WASM_URL) { + try { + WASM_URL = new URL("../dep/wasmoon/glue.wasm", import.meta.url).href; + } catch { + WASM_URL = null; + } + } + return WASM_URL; +} +var factoryPromise; +var LuaFactoryCtor; +async function ensureLuaFactoryCtor() { + if (!LuaFactoryCtor) { + const wasmoon = await import("../dep/wasmoon/index.mjs"); + LuaFactoryCtor = wasmoon.LuaFactory; + } + return LuaFactoryCtor; +} +async function ensureFactory() { + if (!factoryPromise) { + const LuaFactory = await ensureLuaFactoryCtor(); + factoryPromise = Promise.resolve(new LuaFactory(getWasmUrl())); + } + return factoryPromise; +} +function clampByte(value) { + if (typeof value !== "number" || !Number.isFinite(value)) return 0; + if (value < 0) return 0; + if (value > 255) return 255; + return Math.round(value); +} +function asNumber(value, fallback = 0) { + if (typeof value === "number" && Number.isFinite(value)) return value; + return fallback; +} +function parseColorArgs(args, fallback = [255, 255, 255, 255]) { + if (!Array.isArray(args) || args.length === 0) return [...fallback]; + if (Array.isArray(args[0])) { + return parseColorArgs(args[0], fallback); + } + if (args.length === 1) { + const gray = clampByte(args[0]); + return [gray, gray, gray, 255]; + } + const r2 = clampByte(args[0]); + const g = clampByte(args[1]); + const b2 = clampByte(args[2]); + const a2 = clampByte(args.length >= 4 ? args[3] : 255); + return [r2, g, b2, a2]; +} +function applyInk($, color3) { + $.ink(color3[0], color3[1], color3[2], color3[3]); +} +function safeGetGlobalFn(engine, name) { + try { + const fn = engine.global.get(name); + return typeof fn === "function" ? fn : null; + } catch { + return null; + } +} +function updateInputGlobals(engine, $, state2) { + const mouseX = asNumber($.pen?.x, 0); + const mouseY = asNumber($.pen?.y, 0); + state2.pmouseX = state2.mouseX; + state2.pmouseY = state2.mouseY; + state2.mouseX = mouseX; + state2.mouseY = mouseY; + engine.global.set("mouseX", mouseX); + engine.global.set("mouseY", mouseY); + engine.global.set("pmouseX", state2.pmouseX); + engine.global.set("pmouseY", state2.pmouseY); + engine.global.set("movedX", mouseX - state2.pmouseX); + engine.global.set("movedY", mouseY - state2.pmouseY); + engine.global.set("mouseIsPressed", !!state2.mouseIsPressed); + engine.global.set("width", asNumber($.screen?.width, 128)); + engine.global.set("height", asNumber($.screen?.height, 128)); + engine.global.set("frameCount", state2.frameCount); + engine.global.set("deltaTime", state2.deltaTime); + engine.global.set("focused", true); + engine.global.set("key", state2.key); + engine.global.set("keyCode", state2.keyCode); + engine.global.set("keyIsPressed", !!state2.keyIsPressed); +} +function makeErrorModule(message) { + return { + boot() { + }, + sim() { + }, + act() { + }, + leave() { + }, + paint($) { + $.wipe(20, 0, 0); + $.ink(255, 80, 80).write("L5 COMPILE ERROR", { x: 4, y: 4 }); + $.ink(255, 220, 220).write(String(message || "unknown error"), { + x: 4, + y: 18 + }); + return true; + } + }; +} +async function module2(source) { + const factory = await ensureFactory(); + const engine = await factory.createEngine({ + injectObjects: false, + enableProxy: true, + openStandardLibs: true + }); + let activeApi = null; + let runtimeError = null; + let closed = false; + const state2 = { + fillEnabled: true, + strokeEnabled: true, + fillColor: [255, 255, 255, 255], + strokeColor: [0, 0, 0, 255], + strokeWeight: 1, + textSize: 1, + sizeWasCalled: false, + pendingResizePaints: 0, + looping: true, + redrawRequested: false, + hasDrawnOnce: false, + frameCount: 0, + deltaTime: 16, + lastFrameMs: 0, + mouseX: 0, + mouseY: 0, + pmouseX: 0, + pmouseY: 0, + mouseIsPressed: false, + key: "", + keyCode: 0, + keyIsPressed: false + }; + const withApi = (fn) => (...args) => { + if (!activeApi) return void 0; + try { + return fn(activeApi, ...args); + } catch (error) { + runtimeError = error; + console.error("L5 runtime API error:", error); + return void 0; + } + }; + const drawRect = ($, x, y, w, h) => { + if (state2.fillEnabled) { + applyInk($, state2.fillColor); + $.box(x, y, w, h, "fill"); + } + if (state2.strokeEnabled) { + applyInk($, state2.strokeColor); + $.box(x, y, w, h, "outline"); + } + }; + const drawCircle = ($, x, y, diameter) => { + const radius = asNumber(diameter, 0) / 2; + if (state2.fillEnabled) { + applyInk($, state2.fillColor); + $.circle(x, y, radius, true); + } + if (state2.strokeEnabled) { + applyInk($, state2.strokeColor); + $.circle(x, y, radius, false, Math.max(1, asNumber(state2.strokeWeight, 1))); + } + }; + const drawEllipse = ($, x, y, w, h) => { + const rx = asNumber(w, 0) / 2; + const ry = asNumber(h, 0) / 2; + if (state2.fillEnabled) { + applyInk($, state2.fillColor); + $.oval(x, y, rx, ry, true); + } + if (state2.strokeEnabled) { + applyInk($, state2.strokeColor); + $.oval(x, y, rx, ry, false, Math.max(1, asNumber(state2.strokeWeight, 1))); + } + }; + const drawTriangle = ($, x1, y1, x2, y2, x3, y3) => { + if (state2.fillEnabled) { + applyInk($, state2.fillColor); + $.tri(x1, y1, x2, y2, x3, y3, "fill"); + } + if (state2.strokeEnabled) { + applyInk($, state2.strokeColor); + $.tri(x1, y1, x2, y2, x3, y3, "outline"); + } + }; + const drawQuad = ($, x1, y1, x2, y2, x3, y3, x4, y4) => { + if (state2.fillEnabled) { + applyInk($, state2.fillColor); + $.shape({ points: [[x1, y1], [x2, y2], [x3, y3], [x4, y4]], filled: true }); + } + if (state2.strokeEnabled) { + applyInk($, state2.strokeColor); + $.poly([[x1, y1], [x2, y2], [x3, y3], [x4, y4], [x1, y1]]); + } + }; + engine.global.set("background", withApi(($, ...args) => { + const color3 = parseColorArgs(args, [0, 0, 0, 255]); + $.wipe(color3[0], color3[1], color3[2], color3[3]); + })); + engine.global.set("clear", withApi(($) => { + $.wipe(0, 0, 0, 0); + })); + engine.global.set("size", withApi(($, w, h) => { + state2.sizeWasCalled = true; + state2.pendingResizePaints = Math.max(state2.pendingResizePaints, 3); + $.resolution(asNumber(w, 128), asNumber(h, asNumber(w, 128))); + $.needsPaint?.(); + })); + engine.global.set("fill", (...args) => { + state2.fillEnabled = true; + state2.fillColor = parseColorArgs(args, state2.fillColor); + }); + engine.global.set("noFill", () => { + state2.fillEnabled = false; + }); + engine.global.set("stroke", (...args) => { + state2.strokeEnabled = true; + state2.strokeColor = parseColorArgs(args, state2.strokeColor); + }); + engine.global.set("noStroke", () => { + state2.strokeEnabled = false; + }); + engine.global.set("strokeWeight", (value) => { + state2.strokeWeight = Math.max(1, asNumber(value, 1)); + }); + engine.global.set("point", withApi(($, x, y) => { + if (!state2.strokeEnabled) return; + applyInk($, state2.strokeColor); + $.plot(asNumber(x), asNumber(y)); + })); + engine.global.set("line", withApi(($, x1, y1, x2, y2) => { + if (!state2.strokeEnabled) return; + applyInk($, state2.strokeColor); + $.line(asNumber(x1), asNumber(y1), asNumber(x2), asNumber(y2)); + })); + engine.global.set("rect", withApi(($, x, y, w, h) => { + drawRect($, asNumber(x), asNumber(y), asNumber(w), asNumber(h)); + })); + engine.global.set("square", withApi(($, x, y, size) => { + const side = asNumber(size); + drawRect($, asNumber(x), asNumber(y), side, side); + })); + engine.global.set("circle", withApi(($, x, y, diameter) => { + drawCircle($, asNumber(x), asNumber(y), asNumber(diameter)); + })); + engine.global.set("ellipse", withApi(($, x, y, w, h) => { + drawEllipse($, asNumber(x), asNumber(y), asNumber(w), asNumber(h)); + })); + engine.global.set("triangle", withApi(($, x1, y1, x2, y2, x3, y3) => { + drawTriangle($, asNumber(x1), asNumber(y1), asNumber(x2), asNumber(y2), asNumber(x3), asNumber(y3)); + })); + engine.global.set("quad", withApi(($, x1, y1, x2, y2, x3, y3, x4, y4) => { + drawQuad( + $, + asNumber(x1), + asNumber(y1), + asNumber(x2), + asNumber(y2), + asNumber(x3), + asNumber(y3), + asNumber(x4), + asNumber(y4) + ); + })); + engine.global.set("text", withApi(($, str7, x, y) => { + if (!state2.fillEnabled) return; + applyInk($, state2.fillColor); + $.write(String(str7 ?? ""), { + x: asNumber(x), + y: asNumber(y), + size: Math.max(1, asNumber(state2.textSize, 1) / 8) + }); + })); + engine.global.set("textSize", (value) => { + state2.textSize = Math.max(1, asNumber(value, 8)); + }); + engine.global.set("textWidth", withApi(($, value) => { + return $.text.width(String(value ?? "")); + })); + engine.global.set("frameRate", withApi(($, value) => { + $.fps?.(asNumber(value)); + })); + engine.global.set("noLoop", () => { + state2.looping = false; + }); + engine.global.set("loop", withApi(($) => { + state2.looping = true; + state2.redrawRequested = true; + $.needsPaint?.(); + })); + engine.global.set("isLooping", () => state2.looping); + engine.global.set("redraw", withApi(($) => { + state2.redrawRequested = true; + $.needsPaint?.(); + })); + engine.global.set("millis", () => performance.now()); + engine.global.set("print", (...args) => console.log(...args)); + engine.global.set("println", (...args) => console.log(...args)); + engine.global.set("random", (a2, b2) => { + if (a2 === void 0) return Math.random(); + const min10 = b2 === void 0 ? 0 : asNumber(a2); + const max9 = b2 === void 0 ? asNumber(a2, 1) : asNumber(b2, 1); + return min10 + Math.random() * (max9 - min10); + }); + engine.global.set("radians", (deg) => asNumber(deg) * Math.PI / 180); + engine.global.set("degrees", (rad) => asNumber(rad) * 180 / Math.PI); + engine.global.set("constrain", (v2, lo, hi) => Math.max(asNumber(lo), Math.min(asNumber(hi), asNumber(v2)))); + engine.global.set("lerp", (a2, b2, t2) => asNumber(a2) + (asNumber(b2) - asNumber(a2)) * asNumber(t2)); + engine.global.set("dist", (x1, y1, x2, y2) => { + const dx = asNumber(x2) - asNumber(x1); + const dy = asNumber(y2) - asNumber(y1); + return Math.sqrt(dx * dx + dy * dy); + }); + engine.global.set("map", (v2, inMin, inMax, outMin, outMax) => { + const n2 = asNumber(v2); + const a2 = asNumber(inMin); + const b2 = asNumber(inMax); + if (b2 === a2) return asNumber(outMin); + const t2 = (n2 - a2) / (b2 - a2); + return asNumber(outMin) + t2 * (asNumber(outMax) - asNumber(outMin)); + }); + engine.global.set("PI", Math.PI); + engine.global.set("HALF_PI", Math.PI / 2); + engine.global.set("QUARTER_PI", Math.PI / 4); + engine.global.set("TWO_PI", Math.PI * 2); + engine.global.set("TAU", Math.PI * 2); + engine.global.set("LEFT", "LEFT"); + engine.global.set("RIGHT", "RIGHT"); + engine.global.set("CENTER", "CENTER"); + engine.global.set("TOP", "TOP"); + engine.global.set("BOTTOM", "BOTTOM"); + engine.global.set("CORNER", "CORNER"); + engine.global.set("CORNERS", "CORNERS"); + engine.global.set("RADIUS", "RADIUS"); + engine.global.set("CLOSE", "CLOSE"); + engine.global.set("RGB", "RGB"); + engine.global.set("HSB", "HSB"); + engine.global.set("HSL", "HSL"); + try { + await engine.doString(source); + } catch (error) { + console.error("L5 compile error:", error); + try { + engine.global.close(); + } catch { + } + return makeErrorModule(error?.message || String(error)); + } + const setup = safeGetGlobalFn(engine, "setup"); + const draw2 = safeGetGlobalFn(engine, "draw"); + const simFn = safeGetGlobalFn(engine, "sim"); + const actFn = safeGetGlobalFn(engine, "act"); + const mousePressed = safeGetGlobalFn(engine, "mousePressed"); + const mouseReleased = safeGetGlobalFn(engine, "mouseReleased"); + const mouseMoved = safeGetGlobalFn(engine, "mouseMoved"); + const mouseDragged = safeGetGlobalFn(engine, "mouseDragged"); + const keyPressed = safeGetGlobalFn(engine, "keyPressed"); + const keyReleased = safeGetGlobalFn(engine, "keyReleased"); + const safeCall = (name, fn, ...args) => { + if (typeof fn !== "function") return; + try { + fn(...args); + } catch (error) { + runtimeError = error; + console.error(`L5 runtime error in ${name}:`, error); + } + }; + const maybePaintRuntimeError = ($) => { + if (!runtimeError) return false; + $.ink(255, 60, 60).box(0, 0, $.screen.width, 14); + $.ink(255, 240, 240).write(`L5: ${String(runtimeError.message || runtimeError)}`, { + x: 2, + y: 2 + }); + return true; + }; + const runSetup = async ($) => { + activeApi = $; + updateInputGlobals(engine, $, state2); + safeCall("setup", setup); + if (!state2.sizeWasCalled) { + const w = $.screen?.width || 128; + const h = $.screen?.height || 128; + $.resolution(w, h, 0); + } + }; + const runPaint = ($) => { + activeApi = $; + const now = performance.now(); + if (state2.lastFrameMs === 0) { + state2.deltaTime = 16; + } else { + state2.deltaTime = Math.max(0, now - state2.lastFrameMs); + } + state2.lastFrameMs = now; + updateInputGlobals(engine, $, state2); + const shouldDraw = state2.looping || !state2.hasDrawnOnce || state2.redrawRequested || state2.pendingResizePaints > 0; + if (!shouldDraw) { + maybePaintRuntimeError($); + return false; + } + state2.redrawRequested = false; + state2.frameCount += 1; + engine.global.set("frameCount", state2.frameCount); + safeCall("draw", draw2); + state2.hasDrawnOnce = true; + if (state2.pendingResizePaints > 0) { + state2.pendingResizePaints -= 1; + if (state2.pendingResizePaints > 0) { + $.needsPaint?.(); + } + } + maybePaintRuntimeError($); + return true; + }; + const runSim = ($) => { + activeApi = $; + updateInputGlobals(engine, $, state2); + safeCall("sim", simFn); + }; + const runAct = ($) => { + activeApi = $; + updateInputGlobals(engine, $, state2); + const event = $.event; + if (event) { + const eventName = event.name || ""; + if (eventName.startsWith("keyboard:down")) { + state2.keyIsPressed = true; + const maybeKey = event.key || event.char || eventName.split(":").pop() || ""; + state2.key = String(maybeKey || ""); + state2.keyCode = state2.key.length ? state2.key.charCodeAt(0) : 0; + engine.global.set("key", state2.key); + engine.global.set("keyCode", state2.keyCode); + engine.global.set("keyIsPressed", true); + safeCall("keyPressed", keyPressed); + } else if (eventName.startsWith("keyboard:up")) { + state2.keyIsPressed = false; + engine.global.set("keyIsPressed", false); + safeCall("keyReleased", keyReleased); + } + const isEvent = (name) => { + if (typeof event.is === "function") return event.is(name); + return eventName === name; + }; + if (isEvent("touch")) { + state2.mouseIsPressed = true; + engine.global.set("mouseIsPressed", true); + safeCall("mousePressed", mousePressed); + } else if (isEvent("lift")) { + state2.mouseIsPressed = false; + engine.global.set("mouseIsPressed", false); + safeCall("mouseReleased", mouseReleased); + } else if (isEvent("move")) { + safeCall("mouseMoved", mouseMoved); + } else if (isEvent("draw")) { + state2.mouseIsPressed = true; + engine.global.set("mouseIsPressed", true); + safeCall("mouseDragged", mouseDragged); + } + } + safeCall("act", actFn); + }; + const runLeave = () => { + if (closed) return; + closed = true; + try { + engine.global.close(); + } catch (error) { + console.warn("L5 leave cleanup error:", error); + } + }; + return { + boot: runSetup, + paint: runPaint, + sim: runSim, + act: runAct, + leave: runLeave + }; +} + +// public/aesthetic.computer/disks/common/tape-player.mjs +var { floor: floor10, sin: sin4, max: max7, min: min8 } = Math; +function calculateVHSEffects(x, animFrame) { + const scanLine = sin4(animFrame * 0.5 + x * 0.6) * 0.15 + 0.85; + const glowPhase = (animFrame * 0.15 + x * 0.12) % (Math.PI * 2); + const analogGlow = sin4(glowPhase) * 0.2 + 0.8; + const tracking = sin4(animFrame * 0.08 + x * 0.03) * 0.1 + 0.9; + const secondaryGlow = sin4(animFrame * 0.25 + x * 0.2) * 0.1 + 0.9; + return { scanLine, analogGlow, tracking, secondaryGlow }; +} +function blendColorWithVHS(sampledColor, vhsR, vhsG, vhsB, blendFactor = 0.55) { + return { + r: floor10(sampledColor.r * blendFactor + vhsR * (1 - blendFactor)), + g: floor10(sampledColor.g * blendFactor + vhsG * (1 - blendFactor)), + b: floor10(sampledColor.b * blendFactor + vhsB * (1 - blendFactor)) + }; +} + +// public/aesthetic.computer/lib/disk.mjs +var diskTimings = { + sessionStarted: null, + preambleComplete: null, + loadStarted: null, + fetchComplete: null, + compileComplete: null, + bootStarted: null, + bootComplete: null, + firstPaint: null, + firstRenderSent: null +}; +var diskTimingStart = performance.now(); +var _importStart = performance.now(); +var { pow: pow3, abs: abs5, round: round7, sin: sin5, random: random7, min: min9, max: max8, floor: floor11, cos: cos4 } = Math; +var { keys: keys3 } = Object; +var _importEnd = performance.now(); +if (_importEnd - _importStart > 50) { + console.log(`\u{1F4E6} [DISK] Imports: ${(_importEnd - _importStart).toFixed(0)}ms`); +} +function matrixDebugEnabled2() { + if (typeof window !== "undefined" && window?.acMatrixDebug) return true; + if (typeof globalThis !== "undefined" && globalThis?.acMatrixDebug) + return true; + return false; +} +function inkFloodLoggingEnabled2() { + if (typeof globalThis !== "undefined" && globalThis.AC_LOG_INK_COLORS) return true; + if (typeof process !== "undefined" && process.env?.AC_LOG_INK_COLORS === "1") return true; + return false; +} +function inkFloodLogPrefix2() { + let label = null; + if (typeof process !== "undefined" && process.env?.AC_LOG_INK_LABEL) { + label = process.env.AC_LOG_INK_LABEL; + } else if (typeof globalThis !== "undefined" && globalThis.AC_LOG_INK_LABEL) { + label = globalThis.AC_LOG_INK_LABEL; + } + return label ? `[${label}] ` : ""; +} +function cloneColorForLog2(color3) { + if (Array.isArray(color3)) return Array.from(color3); + return color3; +} +function cloneArgsForLog(args) { + return Array.from(args).map((arg) => { + if (Array.isArray(arg)) return Array.from(arg); + if (arg && typeof arg === "object") { + try { + return JSON.parse(JSON.stringify(arg)); + } catch (err) { + return String(arg); + } + } + return arg; + }); +} +if (typeof globalThis !== "undefined") { + if (globalThis.acMatrixDebug === void 0) { + globalThis.acMatrixDebug = true; + } + if (typeof window !== "undefined" && window.acMatrixDebug === void 0) { + window.acMatrixDebug = globalThis.acMatrixDebug; + } + if (typeof window !== "undefined") { + window.acClearImageCache = () => { + imageCache.clear(); + console.log("\u{1F5D1}\uFE0F Image cache cleared"); + }; + window.acImageCacheStats = () => { + console.log("\u{1F5BC}\uFE0F Image cache stats:", { + memorySize: imageCache.memory.size, + urls: Array.from(imageCache.memory.keys()) + }); + }; + } +} +async function fetchPieceMetadata(pieceCode) { + try { + const { protocol, hostname } = getSafeUrlParts(); + const apiUrl = `${protocol}//${hostname}/api/piece-metadata?code=${encodeURIComponent(pieceCode)}`; + const response = await fetch(apiUrl); + if (!response.ok) { + console.warn(`\u26A0\uFE0F Failed to fetch metadata for piece: ${pieceCode}`); + return { code: pieceCode, trustLevel: "untrusted", anonymous: true }; + } + const metadata2 = await response.json(); + return metadata2; + } catch (error) { + console.warn(`\u26A0\uFE0F Error fetching piece metadata:`, error); + return { code: pieceCode, trustLevel: "untrusted", anonymous: true }; + } +} +function isSandboxed() { + try { + if (typeof window !== "undefined" && window.acSPIDER) { + return true; + } + if (typeof window !== "undefined") { + return window.origin === "null"; + } else if (typeof self !== "undefined" && self.origin) { + return self.origin === "null"; + } else if (typeof location !== "undefined" && location.origin) { + return location.origin === "null"; + } else { + return false; + } + } catch (err) { + return false; + } +} +function getSafeUrlParts() { + try { + const sandboxed = isSandboxed(); + if (sandboxed) { + return { + protocol: "https:", + hostname: "aesthetic.computer", + host: "aesthetic.computer" + }; + } else { + let loc = null; + if (typeof location !== "undefined") { + loc = location; + } else if (typeof self !== "undefined" && self.location) { + loc = self.location; + } else if (typeof window !== "undefined" && window.location) { + loc = window.location; + } + if (loc) { + return { + protocol: loc.protocol, + hostname: loc.hostname || loc.host, + // `host` keeps the port (localhost:8888) — hostname drops it, + // which breaks root-relative preloads on port-carrying dev hosts. + host: loc.host || loc.hostname + }; + } else { + return { + protocol: "https:", + hostname: "aesthetic.computer", + host: "aesthetic.computer" + }; + } + } + } catch (err) { + return { + protocol: "https:", + hostname: "aesthetic.computer", + host: "aesthetic.computer" + }; + } +} +var SAME_ORIGIN_BUILT_IN_PIECE_HOSTS = /* @__PURE__ */ new Set([ + "aesthetic.computer", + "www.aesthetic.computer", + "kidlisp.com", + "www.kidlisp.com", + "notepat.com", + "www.notepat.com", + "nopaint.art", + "www.nopaint.art", + "oskiewar.com", + "www.oskiewar.com", + "laklok.com", + "www.laklok.com", + "p5.aesthetic.computer", + "sitemap.aesthetic.computer" +]); +function isLocalDevelopmentHost(hostname) { + return hostname === "localhost" || hostname === "127.0.0.1" || /^192\.168\./.test(hostname) || /^10\./.test(hostname) || /^172\.(1[6-9]|2[0-9]|3[01])\./.test(hostname); +} +function getBuiltInPieceBaseUrl() { + const { protocol, hostname } = getSafeUrlParts(); + if (typeof window !== "undefined" && window.acSPIDER) { + return "https://aesthetic.computer"; + } + if (isLocalDevelopmentHost(hostname) && typeof location !== "undefined" && location.port) { + return `${protocol}//${hostname}:${location.port}`; + } + if (SAME_ORIGIN_BUILT_IN_PIECE_HOSTS.has(hostname)) { + return `${protocol}//${hostname}`; + } + return "https://aesthetic.computer"; +} +var tf; +var typefaceCache = /* @__PURE__ */ new Map(); +async function clearFontCaches() { + console.log("\u{1F524} Clearing font caches..."); + const clearedTypefaces = typefaceCache.size; + for (const [name, typeface] of typefaceCache) { + if (typeface.advanceCache) { + typeface.advanceCache.clear(); + } + } + typefaceCache.clear(); + try { + const { clearGlyphCache: clearGlyphCache2 } = await import("./type.mjs"); + if (clearGlyphCache2) { + await clearGlyphCache2(); + console.log("\u{1F524} IndexedDB glyph cache cleared"); + } + } catch (e2) { + console.log("\u{1F524} IndexedDB cache clear skipped:", e2.message); + } + try { + const timestamp2 = Date.now(); + const fontsUrl = `../disks/common/fonts.mjs?t=${timestamp2}`; + const fontsModule = await import(fontsUrl); + console.log("\u{1F524} fonts.mjs reloaded, MatrixChunky8 * advance:", fontsModule.MatrixChunky8?.advances?.["*"]); + } catch (e2) { + console.log("\u{1F524} fonts.mjs reload skipped:", e2.message); + } + console.log(`\u{1F524} Cleared ${clearedTypefaces} typeface(s). Refresh page or load a piece to see changes.`); + return true; +} +if (typeof window !== "undefined") { + window.clearFontCaches = clearFontCaches; + const isDevMode = location.host === "localhost:8888" || location.host === "aesthetic.local:8888" || location.host === "local.aesthetic.computer"; + if (isDevMode) { + (async () => { + try { + const { clearGlyphCache: clearGlyphCache2 } = await import("./type.mjs"); + if (clearGlyphCache2) { + await clearGlyphCache2(); + console.log("\u{1F524} Dev mode: IndexedDB glyph cache auto-cleared"); + } + } catch (e2) { + } + })(); + } +} +var DEFAULT_TYPEFACE_BLOCK_WIDTH = 6; +var DEFAULT_TYPEFACE_BLOCK_HEIGHT = 10; +var HUD_LABEL_TEXT_MARGIN = 0; +var HUD_DRIFT_X = 1.5; +var HUD_DRIFT_Y = 2; +var HUD_DRIFT_EASE_IN_MS = 220; +var HUD_DRIFT_EASE_OUT_MS = 380; +var HUD_DRIFT_PHASES = Float32Array.from( + { length: 64 }, + (_, i2) => i2 * 0.6180339887 % 1 * Math.PI * 2 +); +function hudDriftEase(amount) { + return amount * amount * (3 - 2 * amount); +} +function hudDriftX(i2, t2, ease) { + const p = HUD_DRIFT_PHASES[i2 & 63]; + return HUD_DRIFT_X * ease * (0.65 * Math.sin(t2 * 21e-4 + p) + 0.35 * Math.sin(t2 * 37e-4 + p * 1.7)); +} +function hudDriftY(i2, t2, ease) { + const p = HUD_DRIFT_PHASES[i2 + 17 & 63]; + return -HUD_DRIFT_Y * ease * Math.abs(Math.sin(t2 * 28e-4 + p)); +} +function hudCodeColor(code2, base) { + if (!code2) return base; + if (Array.isArray(code2)) return code2; + const s2 = code2.trim(); + const lower = s2.toLowerCase(); + if (lower === "reset" || lower === "default" || lower === "base") return base; + if (s2.includes(",")) { + const parts = s2.split(",").map((n2) => parseInt(n2.trim(), 10) || 0); + while (parts.length < 3) parts.push(0); + return parts.slice(0, 4); + } + return findColor2(s2) ?? base; +} +function resolveTypefaceInstance(typefaceRef) { + if (!typefaceRef) return void 0; + if (typefaceRef instanceof Typeface) return typefaceRef; + if (typeof typefaceRef === "string") { + if (typefaceCache.has(typefaceRef)) { + return typefaceCache.get(typefaceRef); + } + const instance = new Typeface(typefaceRef); + typefaceCache.set(typefaceRef, instance); + return instance; + } + if (typeof typefaceRef === "object" && typeof typefaceRef?.getGlyph === "function") { + return typefaceRef; + } + return void 0; +} +function ensureTypefaceLoaded(typeface) { + if (!typeface || typeof typeface.load !== "function") return; + const requiresLoad = typeface.data?.bdfFont || typeface.name === "unifont" || typeface.name === "MatrixChunky8"; + if (!requiresLoad) return; + if (!typeface.__loadPromise) { + typeface.__loadPromise = typeface.load($commonApi.net.preload, () => { + if (typeof window !== "undefined" && window.$activePaintApi?.needsPaint) { + window.$activePaintApi.needsPaint(); + } + }); + } + return typeface.__loadPromise; +} +function getTypefaceForMeasurement(typefaceName) { + if (!typefaceName) return tf; + const resolved = resolveTypefaceInstance(typefaceName); + return resolved || tf; +} +var _isRenderingShadow = false; +function writeHudLabelText($, text, { + x = 0, + y = 0, + typefaceName, + preserveColors = true, + bounds, + wordWrap +} = {}) { + if (text === void 0 || text === null || text === "") return; + const content = preserveColors ? text : stripColorCodes4(text); + const effectiveBounds = typeof bounds === "number" && bounds > 0 ? bounds : void 0; + const shouldWrap = wordWrap === void 0 ? effectiveBounds !== void 0 : wordWrap; + $.write( + content, + { x, y }, + void 0, + effectiveBounds, + shouldWrap, + typefaceName + ); + return $; +} +function isColorDark(colorStr) { + let rgb; + if (typeof colorStr === "string" && colorStr.includes(",")) { + const parts = colorStr.split(",").map((n2) => parseInt(n2.trim(), 10)); + rgb = parts; + } else if (typeof colorStr === "string") { + const lower = colorStr.toLowerCase(); + const resolved = findColor2(lower); + if (Array.isArray(resolved)) { + rgb = resolved; + } else { + return false; + } + } else if (Array.isArray(colorStr)) { + rgb = colorStr; + } + if (!rgb || rgb.length < 3) return false; + const [r2, g, b2] = rgb; + const luminance = (0.299 * r2 + 0.587 * g + 0.114 * b2) / 255; + return luminance < 0.5; +} +var BRIGHT_SHADOW_RGB = "220,220,220"; +var DARK_SHADOW_RGB = "30,20,50"; +function getShadowColorForText(colorStr) { + if (!colorStr) return "64,64,64"; + const isLightMode = $commonApi && !$commonApi.dark; + let rgb; + let normalizedCommand = null; + if (typeof colorStr === "string") { + normalizedCommand = colorStr.trim().toLowerCase(); + if (/[:(]/.test(normalizedCommand) || normalizedCommand.includes("?")) { + return isLightMode ? DARK_SHADOW_RGB : BRIGHT_SHADOW_RGB; + } + } + if (typeof colorStr === "string" && colorStr.includes(",")) { + const parts = colorStr.split(",").map((n2) => parseInt(n2.trim(), 10)); + rgb = parts; + } else if (typeof colorStr === "string") { + const lower = colorStr.toLowerCase(); + const resolved = findColor2(lower); + if (Array.isArray(resolved)) { + rgb = resolved; + } else { + return "64,64,64"; + } + } else if (Array.isArray(colorStr)) { + rgb = colorStr; + } + if (!rgb || rgb.length < 3) return "64,64,64"; + const [r2, g, b2] = rgb; + if (r2 <= 24 && g <= 24 && b2 <= 24) { + return BRIGHT_SHADOW_RGB; + } + const luminance = 0.299 * r2 + 0.587 * g + 0.114 * b2; + if (isLightMode && luminance > 140) { + return DARK_SHADOW_RGB; + } + if (r2 >= 0 && g === 0 && b2 === 0) { + const shadowR2 = Math.max(32, Math.round(r2 * 0.4)); + return `${shadowR2},0,0`; + } + if (r2 === 0 && g >= 0 && b2 === 0) { + const shadowG2 = Math.max(32, Math.round(g * 0.4)); + return `0,${shadowG2},0`; + } + if (r2 === 0 && b2 >= 0 && g >= 0) { + const expectedG = Math.round(b2 * 0.75); + if (Math.abs(g - expectedG) <= 1) { + const shadowG2 = Math.max(24, Math.round(g * 0.4)); + const shadowB2 = Math.max(32, Math.round(b2 * 0.4)); + return `0,${shadowG2},${shadowB2}`; + } + } + if (isColorDark(colorStr)) { + if (r2 <= 24 && g <= 24 && b2 <= 24) { + return "255,255,255"; + } + const factor2 = 0.85; + const shadowR2 = Math.round(r2 + (255 - r2) * factor2); + const shadowG2 = Math.round(g + (255 - g) * factor2); + const shadowB2 = Math.round(b2 + (255 - b2) * factor2); + return `${shadowR2},${shadowG2},${shadowB2}`; + } + const factor = 0.6; + const shadowR = Math.round(r2 * (1 - factor)); + const shadowG = Math.round(g * (1 - factor)); + const shadowB = Math.round(b2 * (1 - factor)); + return `${shadowR},${shadowG},${shadowB}`; +} +function replaceColorCodesWithShadows(text, defaultTextColor = "white") { + if (!text || !textContainsColorCodes(text)) return text; + let currentTextColor = defaultTextColor; + return mapColorCodes(text, (colorStr) => { + if (!colorStr) return colorStr; + const normalized = colorStr.trim(); + const lower = normalized.toLowerCase(); + if (lower === "reset" || lower === "default" || lower === "base") { + currentTextColor = defaultTextColor; + } else { + currentTextColor = normalized; + } + return getShadowColorForText(currentTextColor); + }); +} +function drawHudLabelText($, text, { + x = 0, + y = 0, + typefaceName, + textColor = "white", + shadowColor, + shadowOffsetX = 1, + shadowOffsetY = 1, + preserveColors = true, + bounds, + wordWrap +} = {}) { + if (!text) return; + const containsColorCodes = textContainsColorCodes(text); + const shouldPreserveColors = preserveColors || (typefaceName === "MatrixChunky8" || typefaceName === "unifont") && containsColorCodes; + const effectiveBounds = typeof bounds === "number" && bounds > 0 ? bounds : void 0; + const shouldWrap = wordWrap === void 0 ? effectiveBounds !== void 0 : wordWrap; + let effectiveShadowColor = shadowColor; + if (!effectiveShadowColor && textColor) { + effectiveShadowColor = getShadowColorForText(textColor); + } + if (!effectiveShadowColor) { + effectiveShadowColor = "black"; + } + const shouldRenderShadow = effectiveShadowColor && !((typefaceName === "MatrixChunky8" || typefaceName === "unifont") && matrixDebugEnabled2()); + if (shouldRenderShadow) { + _isRenderingShadow = true; + if (shouldPreserveColors && containsColorCodes) { + const shadowText = replaceColorCodesWithShadows(text, textColor); + writeHudLabelText($, shadowText, { + x: x + shadowOffsetX, + y: y + shadowOffsetY, + typefaceName, + preserveColors: true, + // Keep the shadow color codes + bounds: effectiveBounds, + wordWrap: shouldWrap + }); + } else { + $.ink(effectiveShadowColor); + writeHudLabelText($, text, { + x: x + shadowOffsetX, + y: y + shadowOffsetY, + typefaceName, + preserveColors: false, + bounds: effectiveBounds, + wordWrap: shouldWrap + }); + } + _isRenderingShadow = false; + } + if (textColor) { + $.ink(textColor); + } + const content = shouldPreserveColors ? text : stripColorCodes4(text); + $.write( + content, + { x, y }, + void 0, + effectiveBounds, + shouldWrap, + typefaceName + ); +} +function drawHudLabelDrift($, text, { x, y, typefaceName, typeface, textColor, lineStep, t: t2, ease }) { + if (!text) return; + const parts = splitColorCodes(text); + const perCodeShadows = parts.length > 1; + const blockWidth = typeface?.blockWidth || DEFAULT_TYPEFACE_BLOCK_WIDTH; + for (let pass = 0; pass < 2; pass++) { + const shadow = pass === 0; + let color3 = textColor; + let cx = x, cy = y, i2 = 0; + for (let p = 0; p < parts.length; p++) { + if (p % 2 === 1) { + color3 = hudCodeColor(parts[p], textColor); + continue; + } + const run = parts[p]; + for (let j = 0; j < run.length; j++) { + const ch = run[j]; + if (ch === "\n") { + cx = x; + cy += lineStep; + continue; + } + if (ch !== " ") { + const dx = Math.round(cx + hudDriftX(i2, t2, ease)); + const dy = Math.round(cy + hudDriftY(i2, t2, ease)); + if (shadow) { + $.ink( + perCodeShadows ? hudCodeColor(getShadowColorForText(color3), "black") : "black" + ); + $.write(ch, { x: dx + 1, y: dy + 1 }, void 0, void 0, false, typefaceName); + } else { + $.ink(color3); + $.write(ch, { x: dx, y: dy }, void 0, void 0, false, typefaceName); + } + } + cx += typeface?.getAdvance?.(ch) ?? blockWidth; + i2++; + } + } + } +} +var noWorker = { onMessage: void 0, postMessage: void 0 }; +var ROOT_PIECE = "prompt"; +var USER; +var sessionStarted = false; +var LAN_HOST; +var SHARE_SUPPORTED; +var PREVIEW_OR_ICON; +var VSCODE; +var TV_MODE = false; +var DEVICE_MODE = false; +var SOLO_MODE = false; +var HIGHLIGHT_MODE = false; +var HIGHLIGHT_COLOR = "64,64,64"; +var PERF_MODE = false; +var AUTO_SCALE_MODE = false; +var SPOOF_AUDIO_MODE = false; +var NOGAP_MODE = false; +var AUDIO_SAMPLE_RATE = 0; +var loopPaused = false; +var debug3 = false; +var nopaintPerf = false; +var visible = true; +var pieceBackground = false; +var _trueScreenPixels = null; +var _trueScreenWidth = 0; +var _trueScreenHeight = 0; +var _mainScreenObject = null; +var globalKidLispInstance2 = null; +var persistentFirstLineColor = null; +function storePersistentFirstLineColor(color3) { + persistentFirstLineColor = color3; + if (typeof window !== "undefined" && window.setPersistentFirstLineColor) { + window.setPersistentFirstLineColor(color3); + } +} +function getPersistentFirstLineColor() { + return persistentFirstLineColor; +} +function createGamepadAPI(gamepadEvents) { + if (!gamepadEvents) return []; + return gamepadEvents.map((events, index) => { + if (!events || events.length === 0) return null; + return { + index, + events, + // Helper to check if button was pushed/released + button(buttonIndex) { + const pushEvent = events.find( + (e2) => e2.button === buttonIndex && e2.action === "push" + ); + const releaseEvent = events.find( + (e2) => e2.button === buttonIndex && e2.action === "release" + ); + return { + pushed: !!pushEvent, + released: !!releaseEvent, + event: pushEvent || releaseEvent + }; + }, + // Helper to get axis value (returns most recent value in frame) + axis(axisIndex) { + const axisEvent = events.findLast((e2) => e2.axis === axisIndex); + return axisEvent ? axisEvent.value : 0; + }, + // Check if this gamepad is connected (has events) + connected() { + return events && events.length > 0; + }, + // Get the gamepad device ID/name + get id() { + return events[0]?.gamepadId || null; + } + }; + }); +} +if (typeof globalThis !== "undefined") { + globalThis.storePersistentFirstLineColor = storePersistentFirstLineColor; + globalThis.getPersistentFirstLineColor = getPersistentFirstLineColor; +} +if (typeof window !== "undefined") { + window.setPersistentFirstLineColor = function(color3) { + persistentFirstLineColor = color3; + }; + window.getPersistentFirstLineColor = function() { + return persistentFirstLineColor; + }; +} +function resolveBackgroundFillSpec(colorLike) { + if (colorLike === void 0 || colorLike === null) return null; + let resolved; + try { + resolved = findColor2(colorLike); + } catch (err) { + return null; + } + if (!Array.isArray(resolved) || resolved.length === 0) { + return null; + } + const first = resolved[0]; + if (typeof first === "string" && first.startsWith("fade:")) { + const fadeInfo = parseFadeColor(resolved); + if (fadeInfo) { + return { + type: "fade", + fadeInfo + }; + } + return null; + } + const clampChannel = (value, fallback = 0) => { + if (typeof value !== "number" || !Number.isFinite(value)) return fallback; + return Math.max(0, Math.min(255, Math.round(value))); + }; + const r2 = clampChannel(resolved[0], 0); + const g = clampChannel(resolved[1], r2); + const b2 = clampChannel(resolved[2], r2); + const a2 = clampChannel(resolved[3], 255); + return { + type: "solid", + rgba: [r2, g, b2, a2] + }; +} +function computeFadePositionForPixel(x, y, width2, height2, fadeInfo) { + if (!fadeInfo || !width2 || !height2) return 0; + const maxX = Math.max(width2 - 1, 0); + const maxY = Math.max(height2 - 1, 0); + const direction = fadeInfo.direction; + if (typeof direction === "number" && Number.isFinite(direction)) { + return calculateAngleFadePosition( + x, + y, + 0, + 0, + maxX, + maxY, + direction + ); + } + const numeric = direction !== void 0 ? parseFloat(direction) : NaN; + if (!Number.isNaN(numeric) && Number.isFinite(numeric)) { + return calculateAngleFadePosition( + x, + y, + 0, + 0, + maxX, + maxY, + numeric + ); + } + const safeDiv = (value, denom) => denom <= 0 ? 0 : value / denom; + switch (direction) { + case "horizontal-reverse": + return safeDiv(maxX - x, maxX); + case "vertical": + return safeDiv(y, maxY); + case "vertical-reverse": + return safeDiv(maxY - y, maxY); + case "diagonal": { + const dx = safeDiv(x, maxX); + const dy = safeDiv(y, maxY); + return (dx + dy) / 2; + } + case "diagonal-reverse": { + const dx = safeDiv(maxX - x, maxX); + const dy = safeDiv(maxY - y, maxY); + return (dx + dy) / 2; + } + case "horizontal": + default: + return safeDiv(x, maxX); + } +} +function fillExpandedWithSolidPixels(screen2, width2, height2, oldWidth, oldHeight, rgba) { + const [r2, g, b2] = rgba; + const applyPixel = (x, y) => { + const i2 = (y * width2 + x) * 4; + screen2.pixels[i2] = r2; + screen2.pixels[i2 + 1] = g; + screen2.pixels[i2 + 2] = b2; + screen2.pixels[i2 + 3] = 255; + }; + if (width2 > oldWidth) { + for (let y = 0; y < height2; y++) { + for (let x = oldWidth; x < width2; x++) { + applyPixel(x, y); + } + } + } + if (height2 > oldHeight) { + const bottomLimit = width2 > oldWidth ? oldWidth : width2; + for (let y = oldHeight; y < height2; y++) { + for (let x = 0; x < bottomLimit; x++) { + applyPixel(x, y); + } + } + } +} +function fillExpandedWithFadePixels(screen2, width2, height2, oldWidth, oldHeight, fadeInfo) { + const applyPixel = (x, y) => { + const t2 = computeFadePositionForPixel(x, y, width2, height2, fadeInfo); + const [r2 = 0, g = 0, b2 = 0, a2 = 255] = getLocalFadeColor(t2, x, y, fadeInfo); + const i2 = (y * width2 + x) * 4; + screen2.pixels[i2] = Math.max(0, Math.min(255, Math.round(r2))); + screen2.pixels[i2 + 1] = Math.max(0, Math.min(255, Math.round(g))); + screen2.pixels[i2 + 2] = Math.max(0, Math.min(255, Math.round(b2))); + screen2.pixels[i2 + 3] = Math.max(0, Math.min(255, Math.round(a2 || 255))); + }; + if (width2 > oldWidth) { + for (let y = 0; y < height2; y++) { + for (let x = oldWidth; x < width2; x++) { + applyPixel(x, y); + } + } + } + if (height2 > oldHeight) { + const bottomLimit = width2 > oldWidth ? oldWidth : width2; + for (let y = oldHeight; y < height2; y++) { + for (let x = 0; x < bottomLimit; x++) { + applyPixel(x, y); + } + } + } +} +var projectionMode = location.search.indexOf("nolabel") > -1; +var shellHTMLMode = location.search.indexOf("shellhtml") > -1; +var shellPromptLast = null; +function shellPromptSync($) { + const input3 = $.system?.prompt?.input; + if (!input3) return; + const thinking2 = !!$.system.prompt.thinking; + const state2 = (input3.text || "") + "\0" + thinking2; + if (state2 === shellPromptLast) return; + shellPromptLast = state2; + send({ + type: "prompt:text:shell", + content: { text: input3.text || "", thinking: thinking2 } + }); +} +var pieceRuns = (() => { + let current = null; + const startPerf = performance.now(); + const origConsole = { + log: console.log.bind(console), + warn: console.warn.bind(console), + error: console.error.bind(console), + info: console.info.bind(console) + }; + function serialize(v2) { + if (v2 === void 0) return "undefined"; + if (v2 === null) return "null"; + if (typeof v2 === "string") return v2; + if (typeof v2 === "number" || typeof v2 === "boolean") return String(v2); + if (v2 instanceof Error) return `${v2.name}: ${v2.message} +${v2.stack || ""}`; + try { + return JSON.stringify(v2); + } catch { + return String(v2); + } + } + function post(phase, pieceId, body = {}) { + try { + fetch("/api/piece-log", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ pieceId, phase, ...body }), + keepalive: true + }).catch(() => { + }); + } catch { + } + } + function patch(level) { + console[level] = function(...args) { + origConsole[level](...args); + if (!current) return; + current.events.push({ + level, + at: Date.now(), + elapsed: Math.round(performance.now() - current.startPerf), + message: args.map(serialize).join(" ") + }); + if (current.events.length >= 25) current.flush(); + else if (!current.flushTimer) current.flushTimer = setTimeout(current.flush, 2e3); + }; + } + ["log", "warn", "error", "info"].forEach(patch); + function complete(run, summary = {}) { + if (!run) return; + if (run.flushTimer) { + clearTimeout(run.flushTimer); + run.flushTimer = null; + } + if (run.events.length) { + const events = run.events.splice(0, run.events.length); + post("log", run.pieceId, { data: { events } }); + } + post("complete", run.pieceId, { + data: { duration: Date.now() - run.startedAt, ...summary } + }); + } + return { + start({ slug, params, colon, host, user }) { + const prev = current; + const pieceId = typeof crypto !== "undefined" && crypto.randomUUID?.() || `${Date.now()}-${Math.random().toString(16).slice(2)}`; + const run = { + pieceId, + events: [], + startPerf: performance.now(), + startedAt: Date.now(), + flushTimer: null, + flush: null + }; + run.flush = () => { + if (run.flushTimer) { + clearTimeout(run.flushTimer); + run.flushTimer = null; + } + if (!run.events.length) return; + const events = run.events.splice(0, run.events.length); + post("log", run.pieceId, { data: { events } }); + }; + current = run; + post("start", pieceId, { + meta: { + slug, + params, + colon, + host, + user, + bootId: typeof self !== "undefined" ? self.acBOOT_ID || null : null, + startedAt: (/* @__PURE__ */ new Date()).toISOString(), + userAgent: typeof navigator !== "undefined" ? navigator.userAgent : null + } + }); + run.events.push({ + level: "info", + at: Date.now(), + elapsed: 0, + message: `\u25B6 piece-run started: ${slug}` + }); + run.flushTimer = setTimeout(run.flush, 2e3); + if (prev) setTimeout(() => complete(prev), 0); + return pieceId; + }, + error(err) { + if (!current) return; + post("error", current.pieceId, { + data: { message: err?.message || String(err), stack: err?.stack || null } + }); + }, + flush() { + current?.flush?.(); + }, + get pieceId() { + return current?.pieceId || null; + } + }; +})(); +var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +var nanoid2 = customAlphabet(alphabet, 4); +var defaults = { + boot: ({ cursor: cursor2, screen: { width: width2, height: height2 }, resolution, api }) => { + if (location.host.indexOf("botce") > -1) resolution(width2, height2, 0); + if (AestheticExtension) resolution(width2, height2, 0); + cursor2("native"); + }, + // aka Setup + sim: () => false, + // A framerate independent of rendering. + paint: ({ noise16Aesthetic: noise16Aesthetic2, noise16Sotce: noise16Sotce2, slug, wipe, ink: ink3, write, screen: screen2, net }) => { + if (typeof window !== "undefined" && window.acPACK_MODE) { + wipe("black"); + return; + } + if (!projectionMode) { + if (slug?.indexOf("wipppps") > -1) { + wipe("black"); + } else if (slug?.indexOf("botce") > -1) { + noise16Sotce2(); + } else { + noise16Aesthetic2(); + if (net.motd) { + ink3(255, 255, 255, 200).write( + net.motd, + { center: "x", y: Math.floor(screen2.height / 2) }, + void 0, + screen2.width - 18 + ); + } + if (net.loadFailureText) { + ink3("white").write( + net.loadFailureText, + { x: 6, y: 6 }, + [64, 64], + screen2.width - 6 + ); + } + } + } + }, + beat: () => false, + // Runs every bpm. + act: () => false, + // All user interaction. + leave: () => false, + // Before unload. + receive: () => false, + // Handle messages from BIOS (file drops, etc.) + preview: ({ wipe, slug }) => { + wipe(64).ink(255).write(slug, { center: "xy", size: 1 }); + }, + icon: ({ glaze, wipe, screen: screen2 }) => { + glaze({ on: false }); + wipe(70, 50, 100).ink(200, 30, 100).box(screen2.width / 2, screen2.height / 2, 48, 72, "*center"); + } +}; +var loadAfterPreamble = null; +var hotSwap = null; +var nopaint = { + leave: function leave($) { + const { store: store2, system: system2, page, screen: screen2, flatten } = $; + if (NPnoOnLeave === false) { + if (system2.nopaint.bakeOnLeave) { + page(system2.painting); + bake2($); + flatten(); + } + addUndoPainting(system2.painting, $.slug); + store2["painting"] = { + width: system2.painting.width, + height: system2.painting.height, + pixels: system2.painting.pixels + }; + store2.persist("painting", "local:db"); + system2.nopaint.syncWip($).catch((error) => console.warn("Painting WIP:", error.message)); + $commonApi.broadcastPaintingUpdate("updated", { + source: "leave", + slug: $.slug + }); + store2["painting:transform"] = { + translation: system2.nopaint.translation, + zoom: system2.nopaint.zoomLevel + }; + store2.persist("painting:transform", "local:db"); + } else { + const paintings2 = system2.nopaint.undo.paintings; + page(system2.painting).paste(paintings2[paintings2.length - 1]).page(screen2); + } + NPnoOnLeave = false; + }, + // 🥞 Bake (to the painting) + bake: function bake({ paste: paste3, system: system2 }) { + paste3(system2.nopaint.buffer); + } +}; +var undoPaintings = []; +var undoPosition = 0; +function addUndoPainting(painting2, step = "unspecified") { + if (!painting2) return; + const op = painting2.pixels; + const pixels2 = new Uint8ClampedArray(op.length); + pixels2.set(op); + if (undoPaintings.length > undoPosition + 1) { + undoPaintings.length = undoPosition + 1; + } + if (undoPaintings.length > 0) { + const lastPainting = undoPaintings[undoPaintings.length - 1]; + const eq = painting2.width === lastPainting.width && painting2.height === lastPainting.height && pixels2.every((value, index) => value === lastPainting.pixels[index]); + if (eq) { + return; + } + } + undoPaintings.push({ + pixels: pixels2, + width: painting2.width, + height: painting2.height + }); + if ($commonApi.system.nopaint.recording) { + $commonApi.system.nopaint.addToRecord({ + label: step, + painting: { + pixels: pixels2, + width: painting2.width, + height: painting2.height + } + }); + } + undoPosition = undoPaintings.length - 1; + if ($commonApi.system.nopaint.wipSync) { + clearTimeout($commonApi.system.nopaint.wipTimer); + const sync = $commonApi.system.nopaint.wipSync; + $commonApi.system.nopaint.wipTimer = setTimeout(() => { + if ($commonApi.system.nopaint.wipSync === sync) { + $commonApi.system.nopaint.syncWip().catch((error) => console.warn("Painting WIP:", error.message)); + } + }, 120); + } + const maxUndoSteps = 32; + if (undoPaintings.length > maxUndoSteps) undoPaintings.shift(); + if (debug3 && logs.painting) + console.log("\u{1F4A9} Added undo painting...", undoPaintings.length); +} +var system = null; +var pieceFPS = null; +var lastPaintTime = 0; +var lastPaintOut = void 0; +var shouldSkipPaint = false; +var pieceFrameCount = 0; +var TRANSITION_TYPE = "none"; +var pieceTransition = { + active: false, + phase: "loading", + // "loading" (slow, reach ~50%) or "revealing" (fast, finish) + overlayPixels: null, + // The captured frame that overlays on top (from outgoing piece) + generation: 0, + maxGenerations: 60, + // Total frames for full transition + width: 0, + height: 0, + // Drip-specific state (per-column y-offset) - BLINDS STYLE + dripOffsets: null, + // Int16Array of column y-offsets (positive = distance moved) + dripSpeeds: null, + // Float32Array of per-column speeds + dripDirections: null, + // Int8Array: 1 = down, -1 = up (alternating blinds) + targetOffset: 0, + // Target offset for loading phase (~50% of height) + // Bubble-wrap-specific state + blockData: null, + // Per-block data for bubble-wrap + blockSize: 8, + blocksX: 0, + blocksY: 0 +}; +var golTransition = pieceTransition; +function scaleOverlayPixels(srcPixels, srcWidth, srcHeight, dstWidth, dstHeight) { + const dstPixels = new Uint8ClampedArray(dstWidth * dstHeight * 4); + const xRatio = srcWidth / dstWidth; + const yRatio = srcHeight / dstHeight; + for (let y = 0; y < dstHeight; y++) { + for (let x = 0; x < dstWidth; x++) { + const srcX = Math.floor(x * xRatio); + const srcY = Math.floor(y * yRatio); + const srcIdx = (srcY * srcWidth + srcX) * 4; + const dstIdx = (y * dstWidth + x) * 4; + dstPixels[dstIdx] = srcPixels[srcIdx]; + dstPixels[dstIdx + 1] = srcPixels[srcIdx + 1]; + dstPixels[dstIdx + 2] = srcPixels[srcIdx + 2]; + dstPixels[dstIdx + 3] = srcPixels[srcIdx + 3]; + } + } + return dstPixels; +} +function initDripTransition(width2, height2) { + pieceTransition.dripOffsets = new Int16Array(width2); + pieceTransition.dripSpeeds = new Float32Array(width2); + pieceTransition.dripDirections = new Int8Array(width2); + pieceTransition.maxGenerations = 30; + pieceTransition.phase = "loading"; + pieceTransition.targetOffset = Math.floor(height2 * 0.35); + for (let x = 0; x < width2; x++) { + pieceTransition.dripOffsets[x] = 0; + pieceTransition.dripDirections[x] = x % 2 === 0 ? 1 : -1; + pieceTransition.dripSpeeds[x] = 4 + Math.random() * 3; + } +} +function transitionPieceLoaded() { + if (pieceTransition.active && pieceTransition.phase === "loading" && pieceTransition.dripSpeeds) { + pieceTransition.phase = "revealing"; + for (let x = 0; x < pieceTransition.dripSpeeds.length; x++) { + pieceTransition.dripSpeeds[x] = 10 + Math.random() * 8; + } + console.log("\u{1F3AC} Transition: Piece loaded! Switching to reveal phase"); + } +} +function dripStep() { + pieceTransition.generation++; + const { dripOffsets, dripSpeeds, dripDirections, height: height2, phase, targetOffset } = pieceTransition; + let allDone = true; + for (let x = 0; x < dripOffsets.length; x++) { + const currentOffset = dripOffsets[x]; + if (phase === "loading") { + if (currentOffset < targetOffset) { + dripOffsets[x] += dripSpeeds[x]; + if (dripOffsets[x] > targetOffset) { + dripOffsets[x] = targetOffset; + } + allDone = false; + } + } else { + if (currentOffset < height2) { + dripOffsets[x] += dripSpeeds[x]; + dripSpeeds[x] += 0.3; + allDone = false; + } + } + } + if (phase === "loading") { + return true; + } + return !allDone && pieceTransition.generation < pieceTransition.maxGenerations; +} +function applyDripOverlay(screenPixels) { + const { overlayPixels, dripOffsets, dripDirections, width: width2, height: height2 } = pieceTransition; + if (!overlayPixels || !screenPixels || !dripOffsets || !dripDirections) return; + for (let x = 0; x < width2; x++) { + const offset = Math.max(0, dripOffsets[x] | 0); + const direction = dripDirections[x]; + if (offset >= height2) continue; + const visibleRows = height2 - offset; + if (direction > 0) { + for (let y = 0; y < visibleRows; y++) { + const srcY = y; + const dstY = y + offset; + const srcIdx = (srcY * width2 + x) * 4; + const dstIdx = (dstY * width2 + x) * 4; + screenPixels[dstIdx] = overlayPixels[srcIdx]; + screenPixels[dstIdx + 1] = overlayPixels[srcIdx + 1]; + screenPixels[dstIdx + 2] = overlayPixels[srcIdx + 2]; + screenPixels[dstIdx + 3] = overlayPixels[srcIdx + 3]; + } + } else { + for (let y = 0; y < visibleRows; y++) { + const srcY = offset + y; + const dstY = y; + const srcIdx = (srcY * width2 + x) * 4; + const dstIdx = (dstY * width2 + x) * 4; + screenPixels[dstIdx] = overlayPixels[srcIdx]; + screenPixels[dstIdx + 1] = overlayPixels[srcIdx + 1]; + screenPixels[dstIdx + 2] = overlayPixels[srcIdx + 2]; + screenPixels[dstIdx + 3] = overlayPixels[srcIdx + 3]; + } + } + } +} +function initBubbleWrapCells(width2, height2) { + pieceTransition.blockSize = 1; + pieceTransition.blocksX = width2; + pieceTransition.blocksY = height2; + pieceTransition.blockData = null; + pieceTransition.maxGenerations = 30; +} +function bubbleWrapStep(screenPixels) { + pieceTransition.generation++; + return pieceTransition.generation < pieceTransition.maxGenerations; +} +function applyBubbleWrapOverlay(screenPixels) { + const { overlayPixels, width: width2, height: height2, generation, maxGenerations } = pieceTransition; + if (!overlayPixels || !screenPixels) return; + const progress = generation / maxGenerations; + const eased = progress < 0.5 ? 2 * progress * progress : 1 - Math.pow(-2 * progress + 2, 2) / 2; + const t2 = generation * 0.1; + const dispPeak = Math.sin(progress * Math.PI); + const maxDisp = dispPeak * 16; + const bs = 4; + for (let y = 0; y < height2; y++) { + const rowOff = y * width2; + const qy = (y / bs | 0) * bs; + for (let x = 0; x < width2; x++) { + const i2 = (rowOff + x) * 4; + const qx = (x / bs | 0) * bs; + const n1 = Math.sin(qx * 0.05 + t2) * Math.cos(qy * 0.04 + t2 * 0.7); + const n2 = Math.sin(qx * 0.09 + qy * 0.07 - t2 * 0.6) * 0.5; + const n3 = Math.cos(qx * 0.02 - qy * 0.03 + t2 * 0.4) * 0.4; + const noise = (n1 + n2 + n3) * 0.5 + 0.5; + const threshold = eased * 1.5 - 0.25; + const edge = 0.3; + let blend3 = (threshold - noise * 0.85) / edge; + blend3 = blend3 < 0 ? 0 : blend3 > 1 ? 1 : blend3; + const swirl = Math.sin(qx * 0.06 + qy * 0.04 + t2 * 1.5) * maxDisp; + const churn = Math.cos(qx * 0.05 - qy * 0.07 + t2 * 1.2) * maxDisp; + let ox = x + swirl | 0; + let oy = y + churn | 0; + ox = ox < 0 ? 0 : ox >= width2 ? width2 - 1 : ox; + oy = oy < 0 ? 0 : oy >= height2 ? height2 - 1 : oy; + const oi = (oy * width2 + ox) * 4; + let nx = x - churn * 0.7 | 0; + let ny = y + swirl * 0.6 | 0; + nx = nx < 0 ? 0 : nx >= width2 ? width2 - 1 : nx; + ny = ny < 0 ? 0 : ny >= height2 ? height2 - 1 : ny; + const ni = (ny * width2 + nx) * 4; + const oldR = overlayPixels[oi]; + const oldG = overlayPixels[oi + 1]; + const oldB = overlayPixels[oi + 2]; + const newR = screenPixels[ni]; + const newG = screenPixels[ni + 1]; + const newB = screenPixels[ni + 2]; + const inv = 1 - blend3; + let r2 = oldR * inv + newR * blend3; + let g = oldG * inv + newG * blend3; + let b2 = oldB * inv + newB * blend3; + if (dispPeak > 0.5 && (qx + qy + generation & 7) === 0) { + const tmp = r2; + r2 = g; + g = b2; + b2 = tmp; + } + screenPixels[i2] = r2; + screenPixels[i2 + 1] = g; + screenPixels[i2 + 2] = b2; + } + } +} +function initGOLCells(width2, height2) { + if (TRANSITION_TYPE === "none") return; + if (TRANSITION_TYPE === "drip") { + initDripTransition(width2, height2); + } else { + initBubbleWrapCells(width2, height2); + } +} +function golStep(screenPixels) { + if (TRANSITION_TYPE === "none") return false; + if (TRANSITION_TYPE === "drip") { + return dripStep(); + } else { + return bubbleWrapStep(screenPixels); + } +} +function applyGOLOverlay(screenPixels) { + if (TRANSITION_TYPE === "drip") { + applyDripOverlay(screenPixels); + } else { + applyBubbleWrapOverlay(screenPixels); + } +} +var boot = defaults.boot; +var sim = defaults.sim; +var paint = defaults.paint; +var beat = defaults.beat; +var brush; +var lift; +var filter; +var act = defaults.act; +var leave2 = defaults.leave; +var receive = defaults.receive; +var preview = defaults.preview; +var icon = defaults.icon; +var bake2; +var leaving = false; +var leaveLoad; +var previewMode = false; +var firstPreviewOrIcon = true; +var iconMode = false; +var previewOrIconMode; +var hideLabel = false; +var hideLabelForFrame = false; +function toggleHUDVisibility(isDoubleTap = false, skipSound = false) { + const currentTime = performance.now(); + if (hudAnimationState.animating) { + const elapsed = currentTime - hudAnimationState.startTime; + const progress = Math.min(elapsed / hudAnimationState.duration, 1); + hudAnimationState.visible = !hudAnimationState.visible; + if (hudAnimationState.qrFullscreen) { + hudAnimationState.cornersVisibleBeforeFullscreen = hudAnimationState.visible; + } + const remainingProgress = 1 - progress; + hudAnimationState.startTime = currentTime - remainingProgress * hudAnimationState.duration; + if (isDoubleTap && !hudAnimationState.visible) { + hudAnimationState.animating = false; + hudAnimationState.visible = true; + hudAnimationState.opacity = 1; + hudAnimationState.slideOffset = { x: 0, y: 0 }; + hudAnimationState.qrSlideOffset = { x: 0, y: 0 }; + if (hudAnimationState.qrFullscreen) { + hudAnimationState.cornersVisibleBeforeFullscreen = true; + } + } + if (!skipSound) { + $commonApi.sound.synth({ + type: "sine", + tone: hudAnimationState.visible ? 600 : 400, + duration: 0.15, + attack: 0.1, + decay: 0.8, + volume: 0.2 + }); + } + } else { + hudAnimationState.animating = true; + hudAnimationState.startTime = currentTime; + hudAnimationState.visible = !hudAnimationState.visible; + if (hudAnimationState.qrFullscreen) { + hudAnimationState.cornersVisibleBeforeFullscreen = hudAnimationState.visible; + } + if (!skipSound) { + $commonApi.sound.synth({ + type: "sine", + tone: hudAnimationState.visible ? 600 : 400, + duration: 0.15, + attack: 0.1, + decay: 0.8, + volume: 0.2 + }); + } + } +} +function toggleQRFullscreen() { + try { + const sourceCode = currentText || currentHUDTxt; + console.log("\u{1F50D} [QR Toggle] sourceCode:", sourceCode, "currentPath:", currentPath); + const isInlineKidlispPiece = currentPath && isKidlispSource(currentPath) && !currentPath.endsWith(".lisp") || currentPath === "(...)" || sourceCode && sourceCode.startsWith("$") || currentPath && currentPath.includes("/disks/$") || sourceCode && isKidlispSource(sourceCode); + console.log("\u{1F50D} [QR Toggle] isInlineKidlispPiece:", isInlineKidlispPiece); + if (!isInlineKidlispPiece) { + console.log("\u26A0\uFE0F [QR Toggle] Not a KidLisp piece, skipping QR fullscreen toggle"); + return; + } + if (!hudAnimationState.qrFullscreen) { + console.log("\u2705 [QR Toggle] Enabling fullscreen mode"); + hudAnimationState.cornersVisibleBeforeFullscreen = hudAnimationState.visible; + if (hudAnimationState.visible) { + if (hudAnimationState.animating) { + const currentTime = performance.now(); + const elapsed = currentTime - hudAnimationState.startTime; + const remaining = Math.max(0, hudAnimationState.duration - elapsed); + hudAnimationState.startTime = currentTime - remaining; + } else { + hudAnimationState.animating = true; + hudAnimationState.startTime = performance.now(); + } + hudAnimationState.visible = false; + } + hudAnimationState.qrFullscreen = true; + send({ type: "button:hitbox:remove", content: "qr-corner" }); + } else { + console.log("\u2705 [QR Toggle] Disabling fullscreen mode"); + hudAnimationState.qrFullscreen = false; + send({ type: "button:hitbox:remove", content: "qr-fullscreen" }); + if (hudAnimationState.cornersVisibleBeforeFullscreen && !hudAnimationState.visible) { + if (hudAnimationState.animating) { + const currentTime = performance.now(); + const elapsed = currentTime - hudAnimationState.startTime; + const remaining = Math.max(0, hudAnimationState.duration - elapsed); + hudAnimationState.startTime = currentTime - remaining; + } else { + hudAnimationState.animating = true; + hudAnimationState.startTime = performance.now(); + } + hudAnimationState.visible = true; + } + } + if ($commonApi?.sound?.synth) { + $commonApi.sound.synth({ + type: "sine", + tone: hudAnimationState.qrFullscreen ? 500 : 250, + duration: 0.12, + attack: 0.1, + decay: 0.9, + volume: 0.25 + }); + } + } catch (err) { + console.error("\u274C [QR Toggle] Error toggling QR fullscreen:", err); + } +} +var _packModeHudVisible = getPackMode() ? typeof window !== "undefined" && window.acPACK_COLOPHON?.piece?.isKidLisp === false : true; +var hudAnimationState = { + visible: _packModeHudVisible, + animating: false, + startTime: 0, + duration: 500, + // 500ms animation + opacity: 1, + slideOffset: { x: 0, y: 0 }, + // HUD label offset (slides to top-left) + qrSlideOffset: { x: 0, y: 0 }, + // QR overlay offset (slides to bottom-right) + labelWidth: 120, + // HUD label width - updated when HUD is drawn + labelHeight: 40, + // HUD label height - updated when HUD is drawn + qrSize: 80, + // QR overlay size for bounding box animations + lastTabTime: 0, + // Track last tab press for double-tap detection + qrFullscreen: false, + // Track if QR code is in fullscreen mode + cornersVisibleBeforeFullscreen: true + // Remember corner state before fullscreen QR +}; +var cachedClockCode = null; +var module3; +var loadedModule; +var lastPaintingHash = null; +var paintingChangeCheckInterval = null; +var frameBasedMonitoring = false; +function enableFrameBasedMonitoring() { + if (frameBasedMonitoring) return; + frameBasedMonitoring = true; + let lastDimensions = null; + function checkPaintingChanges() { + if ($commonApi.system?.painting && !$commonApi._processingBroadcast) { + const currentHash2 = generatePaintingHash($commonApi.system.painting); + const currentDimensions = { + width: $commonApi.system.painting.width, + height: $commonApi.system.painting.height + }; + const isNopaintActive = $commonApi.system?.nopaint?.is?.("painting"); + const nopaintBuffer = $commonApi.system?.nopaint?.buffer; + if (lastPaintingHash !== null && currentHash2 !== lastPaintingHash) { + const isDimensionChange = lastDimensions && (lastDimensions.width !== currentDimensions.width || lastDimensions.height !== currentDimensions.height); + if (isNopaintActive) { + console.log(`\u{1F6AB} SKIPPING broadcast during nopaint operation to prevent live preview interference`); + } else { + $commonApi.broadcastPaintingUpdateImmediate("frame_update", { + source: isDimensionChange ? "resize" : "frame_monitor", + hash: currentHash2.substr(0, 8) + }); + } + } + lastPaintingHash = currentHash2; + lastDimensions = currentDimensions; + } + if (frameBasedMonitoring) { + requestAnimationFrame(checkPaintingChanges); + } + } + requestAnimationFrame(checkPaintingChanges); +} +var lastBroadcastTime = 0; +var broadcastThrottleDelay = 100; +var pieceMetadata = null; +var currentPath; +var currentHost; +var currentSearch; +var currentColon; +var currentParams; +var currentHash; +var currentText; +var currentCode; +var currentHUDTxt; +var currentHUDPlainTxt; +var currentOriginalCodeId; +var currentHUDTextColor; +var currentHUDStatusColor = "red"; +var currentHUDButton; +var currentHUDButtonActive = false; +var currentHUDButtonDirectTouch = false; +var currentHUDHovered = false; +var currentHUDHoverAmount = 0; +var currentHUDHoverClock = 0; +var currentHUDScrub = 0; +var currentHUDScrubReadyState = null; +var currentHUDLabelFontName; +var currentHUDLabelBlockWidth = tf?.blockWidth ?? DEFAULT_TYPEFACE_BLOCK_WIDTH; +var currentHUDLabelBlockHeight = tf?.blockHeight ?? DEFAULT_TYPEFACE_BLOCK_HEIGHT; +var currentHUDShareWidth = (tf?.blockWidth ?? DEFAULT_TYPEFACE_BLOCK_WIDTH) * "share ".length; +var currentHUDEditWidth = tf?.blockWidth ?? DEFAULT_TYPEFACE_BLOCK_WIDTH; +var currentHUDLabelMeasuredWidth = 0; +var currentHUDTextHeight = 0; +var currentHUDTextBoxWidth = 0; +var currentHUDTextBoxHeight = 0; +var currentHUDLeftPad = 0; +var currentHUDOffset; +var currentHUDQR = null; +var currentHUDQRCells = null; +var currentHUDAuthor = null; +var currentHUDHits = null; +var currentHUDSuperscript = null; +var forceTinyHudLabel = false; +var qrOverlayCache = /* @__PURE__ */ new Map(); +var globalUpdateReady = false; +var globalVersionInfo = null; +var globalRecentCommits = []; +var updatePollStarted = false; +var updatePollController = null; +var updateBadgeBoxScreen = null; +var updateBadgeHitboxRegistered = false; +var globalAutoReload = false; +var autoUpdateForFrame = false; +var devIdentity = null; +var remoteLogQueue = []; +var remoteLogSocket = null; +var MAX_REMOTE_LOG_QUEUE = 50; +var diagnostics = new Diagnostics({ + send: (type, content) => socket?.send(type, content) +}); +diagnostics.watch(globalThis); +function setupRemoteLogging() { + const originalConsole = { + log: console.log.bind(console), + warn: console.warn.bind(console), + error: console.error.bind(console) + }; + function sendRemoteLog(level, args) { + diagnostics.note(level, serializeArgs(args)); + if (!devIdentity || !remoteLogSocket?.connected) { + if (remoteLogQueue.length < MAX_REMOTE_LOG_QUEUE) { + remoteLogQueue.push({ level, args: serializeArgs(args), time: Date.now() }); + } + return; + } + try { + const logData = { + level, + args: serializeArgs(args), + deviceName: devIdentity.name, + connectionId: devIdentity.connectionId, + time: Date.now() + }; + remoteLogSocket.send("dev:log", logData); + } catch (e2) { + } + } + function serializeArgs(args) { + return args.map((arg) => { + if (arg === null) return "null"; + if (arg === void 0) return "undefined"; + if (typeof arg === "string") return arg; + if (typeof arg === "number" || typeof arg === "boolean") return String(arg); + if (arg instanceof Error) return `${arg.name}: ${arg.message} +${arg.stack}`; + try { + return JSON.stringify(arg, null, 2); + } catch (e2) { + return String(arg); + } + }); + } + console.log = (...args) => { + originalConsole.log(...args); + sendRemoteLog("log", args); + }; + console.warn = (...args) => { + originalConsole.warn(...args); + sendRemoteLog("warn", args); + }; + console.error = (...args) => { + originalConsole.error(...args); + sendRemoteLog("error", args); + }; + if (typeof window !== "undefined") { + window.addEventListener("error", (event) => { + sendRemoteLog("error", [`Uncaught: ${event.message} at ${event.filename}:${event.lineno}:${event.colno}`]); + }); + window.addEventListener("unhandledrejection", (event) => { + sendRemoteLog("error", [`Unhandled Promise: ${event.reason}`]); + }); + } +} +function flushRemoteLogQueue() { + if (!devIdentity || !remoteLogSocket?.connected) return; + while (remoteLogQueue.length > 0) { + const log3 = remoteLogQueue.shift(); + try { + remoteLogSocket.send("dev:log", { + level: log3.level, + args: log3.args, + deviceName: devIdentity.name, + connectionId: devIdentity.connectionId, + time: log3.time, + queued: true + }); + } catch (e2) { + break; + } + } +} +var lastMatrixChunkyWriteDiagnosticLog = null; +function isQROverlayCacheDisabled() { + try { + return typeof window !== "undefined" && window.acDISABLE_QR_OVERLAY_CACHE; + } catch (e2) { + return false; + } +} +if (typeof window !== "undefined") { + window.qrOverlayCache = qrOverlayCache; + if (isQROverlayCacheDisabled()) { + qrOverlayCache.clear(); + } +} +function stripColorCodes4(str7) { + return stripColorCodes(str7); +} +function textContainsColorCodes(str7) { + return hasColorCodes(str7); +} +function hasKidLispMarkers(text) { + if (!text) return false; + return text.includes("ink ") || text.includes("line ") || text.includes("box ") || text.includes("circle ") || text.includes("spin ") || text.includes("(") || textContainsColorCodes(text) || /\d+s\.\.\./.test(text) || /\?\s/.test(text); +} +function detectKidLispPiece({ currentPath: currentPath2, currentHUDTxt: currentHUDTxt2, currentText: currentText2, cleanText }) { + const sourceCode = currentText2 || currentHUDTxt2; + return currentPath2 && isKidlispSource(currentPath2) && !currentPath2.endsWith(".lisp") || currentPath2 === "(...)" || sourceCode && sourceCode.startsWith("$") || currentPath2 && (currentPath2.includes("/disks/$") || currentPath2.includes("$")) || sourceCode && isKidlispSource && isKidlispSource(sourceCode) || hasKidLispMarkers(currentHUDTxt2) || textContainsColorCodes(cleanText) || hasKidLispMarkers(sourceCode); +} +function detectEmbeddedKidLisp({ currentPath: currentPath2, currentHUDTxt: currentHUDTxt2, currentText: currentText2 }) { + const sourceCode = currentText2 || currentHUDTxt2; + return currentPath2 === "(...)" || sourceCode && sourceCode.startsWith("$") || currentPath2 && currentPath2.includes("/disks/$") || currentPath2 && currentPath2.includes("$") && !currentPath2.endsWith(".lisp"); +} +function updateHUDStatus() { + if (udp.connected && socket?.connected) { + currentHUDStatusColor = "lime"; + } else if (udp.connected || socket?.connected) { + currentHUDStatusColor = "orange"; + } else { + currentHUDStatusColor = "red"; + } +} +var loading = false; +var loadingStartTime = null; +var LOADING_TIMEOUT_MS = 1e4; +function checkLoadingTimeout() { + if (loading && loadingStartTime && Date.now() - loadingStartTime > LOADING_TIMEOUT_MS) { + console.warn("\u{1F534} Loading timeout exceeded - forcing loading reset"); + loading = false; + loadingStartTime = null; + return true; + } + return false; +} +var reframe; +var pendingPieceReload = null; +var sfxProgressReceivers = {}; +var sfxSampleReceivers = {}; +var sfxKillReceivers = {}; +var sfxDurationReceivers = {}; +var sfxDurations = {}; +var $sampleCount = 0n; +var signals = []; +var actAlerts = []; +var reframed = false; +var formReframing = false; +var paintings = {}; +if (typeof window !== "undefined") { + window.acPendingImages = () => Object.values(paintings).filter((v2) => v2 === "fetching").length; +} +var imageCache = { + // In-memory cache for fast access (RAM) + memory: /* @__PURE__ */ new Map(), + // url -> ImageBitmap + // IndexedDB persistence reference (set during boot) + store: null, + // Initialize with store reference for persistent caching + init(storeRef) { + this.store = storeRef; + }, + // Get from memory cache + get(url) { + return this.memory.get(url); + }, + // Check if image is cached in memory + has(url) { + return this.memory.has(url); + }, + // Save to both memory and persistent storage + async set(url, imageBitmap) { + this.memory.set(url, imageBitmap); + if (this.store && imageBitmap) { + try { + let pixelData, imgWidth, imgHeight; + if (imageBitmap.pixels) { + imgWidth = imageBitmap.width; + imgHeight = imageBitmap.height; + pixelData = imageBitmap.pixels; + } else { + const canvas = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(imageBitmap.width, imageBitmap.height) : document.createElement("canvas"); + canvas.width = imageBitmap.width; + canvas.height = imageBitmap.height; + const ctx = canvas.getContext("2d"); + ctx.drawImage(imageBitmap, 0, 0); + const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + imgWidth = imageData.width; + imgHeight = imageData.height; + pixelData = imageData.data; + } + this.store[`image-cache:${url}`] = { + width: imgWidth, + height: imgHeight, + data: Array.from(pixelData), + cached: Date.now(), + version: 1 + }; + this.store.persist(`image-cache:${url}`, "local:db"); + } catch (error) { + console.warn(`Failed to save image to persistent cache: ${url}`, error); + } + } + }, + // Load from persistent storage (IndexedDB) + async loadFromPersistent(url) { + if (!this.store) return null; + try { + const data = await this.store.retrieve(`image-cache:${url}`, "local:db"); + if (data && data.data && data.width && data.height) { + const imageData = new ImageData( + new Uint8ClampedArray(data.data), + data.width, + data.height + ); + const imageBitmap = await createImageBitmap(imageData); + this.memory.set(url, imageBitmap); + return imageBitmap; + } + } catch (error) { + console.warn(`Failed to load image from persistent cache: ${url}`, error); + } + return null; + }, + // Clear all caches + clear() { + this.memory.clear(); + }, + // Check if URL is from aesthetic.computer media backend (safe to cache) + isCacheable(url) { + if (!url) return false; + const urlStr = url.toString().toLowerCase(); + return urlStr.includes("aesthetic.computer") || urlStr.includes("art.aesthetic.computer") || urlStr.includes("/media/@") || // User paintings + urlStr.match(/\/@[\w-]+\/\d+/); + } +}; +var screen; +var currentDisplay; +var hdCanvas = null; +var hdContext = null; +var hdPainted = false; +var hdVisible = false; +var hdPixelRatio = 1; +var HD_MAX_PIXELS = 4096 * 2304; +function hd() { + if (!screen || typeof OffscreenCanvas === "undefined") return null; + if (PREVIEW_OR_ICON) return null; + const sub6 = currentDisplay?.subdivisions || 2; + const dpr = currentDisplay?.pixelRatio || hdPixelRatio; + const maxScale = Math.sqrt(HD_MAX_PIXELS / (screen.width * screen.height)); + const scale7 = Math.max(1, Math.min(sub6 * dpr, maxScale)); + const w = Math.round(screen.width * scale7); + const h = Math.round(screen.height * scale7); + if (!hdCanvas || hdCanvas.width !== w || hdCanvas.height !== h) { + hdCanvas = new OffscreenCanvas(w, h); + hdContext = hdCanvas.getContext("2d"); + } + hdContext.setTransform(scale7, 0, 0, scale7, 0, 0); + hdPainted = true; + return { ctx: hdContext, width: screen.width, height: screen.height, scale: scale7 }; +} +function hdUnload() { + if (!hdCanvas) return; + hdCanvas = hdContext = null; + hdPainted = false; + hdVisible = false; + send({ type: "hd:clear" }); +} +var cursorCode; +var pieceHistoryIndex = -1; +var paintCount = 0n; +var simCount = 0n; +var booted = false; +var noPaint = false; +var labelBack = false; +var hiccupTimeout; +function redirectIfBrandedDomain() { + const { hostname } = getSafeUrlParts(); + if (!hostname) return false; + if (hostname === "notepat.com" || hostname === "www.notepat.com") { + send({ type: "web", content: { url: "https://aesthetic.computer", blank: false } }); + return true; + } + if (hostname === "laklok.com" || hostname === "www.laklok.com") { + send({ type: "web", content: { url: "https://aesthetic.computer", blank: false } }); + return true; + } + return false; +} +var storeRetrievalResolutions = {}; +var storeDeletionResolutions = {}; +var usbDeviceListResolution = null; +var usbFlashResolution = null; +var socket; +var socketStartDelay; +var chatDebug = location.host === "local.aesthetic.computer" || location.host === "localhost:8888" || location.host === "aesthetic.local:8888"; +var chatClient = new Chat(chatDebug, send); +var udp = { + send: (type, content) => { + send({ type: "udp:send", content: { type, content } }); + }, + receive: ({ type, content }) => { + if (type === "fairy:point" && visible) { + const isKidlisp = detectKidLispPiece({ currentPath, currentHUDTxt, currentText }) || currentPath && currentPath.endsWith(".lisp"); + if (!isKidlisp) { + fairies.push({ x: content.x, y: content.y }); + } + return; + } + udpReceive?.(type, content); + }, + kill: (outageSeconds) => { + udp.connected = false; + send({ type: "udp:disconnect", content: { outageSeconds } }); + }, + connected: false +}; +var udpReceive = void 0; +var scream = null; +var screaming = false; +var screamingTimer; +var fairies = []; +var glazeEnabled = false; +function darkMode(enabled) { + if (enabled === "default") { + darkMode($commonApi.dark || false); + store.delete("dark-mode"); + actAlerts.push($commonApi.dark ? "dark-mode" : "light-mode"); + return $commonApi.dark; + } else { + store["dark-mode"] = enabled; + store.persist("dark-mode"); + $commonApi.dark = enabled; + actAlerts.push($commonApi.dark ? "dark-mode" : "light-mode"); + return enabled; + } +} +var store = { + persist: function(key, method = "local") { + send({ + type: "store:persist", + content: { + key, + data: this[key], + method + } + }); + }, + retrieve: function(key, method = "local") { + const promise = new Promise((resolve) => { + storeRetrievalResolutions[key] = resolve; + }); + send({ type: "store:retrieve", content: { key, method } }); + return promise; + }, + delete: function(key, method = "local") { + delete store[key]; + const promise = new Promise((resolve) => { + storeDeletionResolutions[key] = resolve; + }); + send({ + type: "store:delete", + content: { + key, + method + } + }); + return promise; + } +}; +var fileImport; +var serverUpload; +var serverUploadProgressReporter; +var zipCreation; +var authorizationRequests = []; +var fileOpenRequest; +var fileEncodeRequest; +var gpuResponse; +var web3Response; +var tezosConnectResponse; +var tezosDisconnectResponse; +var tezosAddressResponse; +var tezosSignResponse; +var tezosCallResponse; +var activeVideo; +var videoDeviceCount = 0; +var lastActiveVideo; +var videoSwitching = false; +var preloadPromises = {}; +var inFocus; +var loadFailure; +var pieceCodeCache = /* @__PURE__ */ new Map(); +var durationStartTime = null; +var durationTotal = null; +var durationProgress = 0; +var durationCompleted = false; +var durationBlinkState = false; +var pageLoadTime = performance.now(); +var wiggleAngle = 0; +var NPnoOnLeave = false; +var Recorder = class { + printProgress = 0; + presentProgress = 0; + printing = false; + // Set by a callback from `bios`. + printed = false; + // " + recording = false; + // " + rollingCallback; + recorded = false; + // " + presenting = false; + // " + playing = false; + // " + cutCallback; + printCallback; + framesCallback; + loadCallback; + tapeTimerStart; + tapeProgress = 0; + tapeTimerDuration; + tapeFrameMode = false; + // Whether we're recording based on frames instead of time + tapeFrameStart = 0; + // Starting frame count + tapeFrameTarget = 0; + // Target number of frames to record + videoOnLeave = false; + constructor() { + } + tapeTimerSet(durationOrFrames, time, isFrameMode = false) { + if (isFrameMode) { + this.tapeFrameMode = true; + this.tapeFrameStart = Number($commonApi.paintCount || 0n); + this.tapeFrameTarget = durationOrFrames; + this.tapeTimerStart = null; + this.tapeTimerDuration = null; + log.tape.log(`Starting frame-based recording: ${durationOrFrames} frames`); + if (this.failsafeTimeout) { + clearTimeout(this.failsafeTimeout); + } + this.failsafeTimeout = setTimeout(() => { + log.tape.warn("Frame-based failsafe triggered! Recording may have stalled."); + this.tapeProgress = 0; + this.tapeFrameMode = false; + this.tapeFrameStart = 0; + this.tapeFrameTarget = 0; + if (typeof this.cut === "function") { + this.cut(() => { + $commonApi.jump("video"); + }); + } else { + log.tape.warn("Cut function not available in failsafe"); + $commonApi.jump("video"); + } + this.failsafeTimeout = null; + }, Math.max(3e4, durationOrFrames * 1e3)); + } else { + this.tapeFrameMode = false; + this.tapeTimerStart = time; + this.tapeTimerDuration = durationOrFrames; + if (this.failsafeTimeout) { + clearTimeout(this.failsafeTimeout); + } + this.failsafeTimeout = setTimeout(() => { + log.tape.warn("Failsafe timer triggered! Normal timer may have failed."); + if (this.tapeTimerDuration && this.tapeTimerStart) { + this.tapeProgress = 0; + this.tapeTimerStart = null; + this.tapeTimerDuration = null; + if (typeof this.cut === "function") { + this.cut(() => { + $commonApi.jump("video"); + }); + } else { + console.warn(`\u{1F3AC} \u26A0\uFE0F Cut function not available in failsafe, manual jump to video`); + $commonApi.jump("video"); + } + } + this.failsafeTimeout = null; + }, (durationOrFrames + 1) * 1e3); + } + } + tapeTimerStep({ needsPaint, sound: { time } }) { + if (this.tapeFrameMode) { + if (!this.tapeFrameTarget) return; + const currentFrame = Number($commonApi.paintCount || 0n); + const framesPassed = currentFrame - this.tapeFrameStart; + this.tapeProgress = framesPassed / this.tapeFrameTarget; + needsPaint(); + if (framesPassed >= this.tapeFrameTarget) { + if (this.failsafeTimeout) { + clearTimeout(this.failsafeTimeout); + this.failsafeTimeout = null; + } + this.tapeProgress = 0; + this.tapeFrameMode = false; + this.tapeFrameStart = 0; + this.tapeFrameTarget = 0; + log.tape.success(`Frame-based recording complete: ${framesPassed} frames`); + if (typeof this.cut === "function") { + this.cut(() => { + $commonApi.jump("video"); + }); + } else { + log.tape.warn("Cut function not available"); + $commonApi.jump("video"); + } + } + } else { + if (!this.tapeTimerDuration) return; + this.tapeProgress = (time - this.tapeTimerStart) / this.tapeTimerDuration; + needsPaint(); + const secondsOver = this.tapeProgress * this.tapeTimerDuration - this.tapeTimerDuration; + if (this.tapeProgress >= 1 && secondsOver > 0.15) { + if (this.failsafeTimeout) { + clearTimeout(this.failsafeTimeout); + this.failsafeTimeout = null; + } + this.tapeProgress = 0; + this.tapeTimerStart = null; + this.tapeTimerDuration = null; + if (typeof this.cut === "function") { + this.cut(() => { + $commonApi.jump("video"); + }); + } else { + log.tape.warn("Cut function not available"); + $commonApi.jump("video"); + } + } + } + } + slate() { + send({ type: "recorder:slate" }); + $commonApi.rec.recording = false; + $commonApi.rec.recorded = false; + $commonApi.rec.printed = false; + $commonApi.rec.printProgress = 0; + $commonApi.rec.cleanMode = false; + this.tapeFrameMode = false; + this.tapeFrameStart = 0; + this.tapeFrameTarget = 0; + } + rolling(opts, cb) { + send({ type: "recorder:rolling", content: opts }); + this.rollingCallback = cb; + } + cut(cb) { + $commonApi.rec.cutCallback = cb; + this.tapeProgress = 0; + this.tapeTimerStart = null; + this.tapeTimerDuration = null; + this.tapeFrameMode = false; + this.tapeFrameStart = 0; + this.tapeFrameTarget = 0; + send({ type: "signal", content: "recorder:cut" }); + } + print(cb) { + $commonApi.rec.printCallback = cb; + send({ type: "recorder:print" }); + } + present(noplay = false) { + this.presentProgress = 0; + send({ type: "recorder:present", content: { noplay } }); + } + unpresent() { + send({ type: "recorder:unpresent" }); + } + play() { + send({ type: "recorder:present:play" }); + } + pause() { + send({ type: "recorder:present:pause" }); + } + requestFrames(cb) { + $commonApi.rec.framesCallback = cb; + send({ type: "recorder:request-frames" }); + } +}; +var cachedAPI; +var hourGlasses = []; +async function uploadPainting(picture, progress, handle2, filename) { + if (typeof picture === "string") { + return { url: picture }; + } else { + filename ||= `painting-${timestamp()}.png`; + try { + const data = await $commonApi.upload( + filename, + { + pixels: picture.pixels, + width: picture.width, + height: picture.height + }, + (p) => { + console.log("Painting upload progress:", p); + progress?.(p); + }, + !handle2 ? "art" : void 0 + // Store in temporary if no HANDLE. + ); + console.log("\u{1FA84} Painting uploaded:", data.slug, data.ext, data.url); + return data; + } catch (err) { + console.error("\u{1FA84} Painting upload failed:", err); + } + } +} +function isLeaving(set7) { + if (set7 === true || set7 === false) leaving = set7; + return leaving; +} +var docs; +var baseTime = Date.now(); +var baseReal = Date.now(); +var clockFetching = false; +var lastServerTime = void 0; +var clockOffset = 0; +var Robo = class { + constructor() { + this.currentAPI = null; + this.pen = { x: 0, y: 0, px: 0, py: 0, pressure: 0.5, delta: { x: 0, y: 0 }, device: "robot" }; + } + setAPI(api) { + this.currentAPI = api; + } + // Send a synthetic event. The event payload carries its own coordinates — + // downstream handlers (nopaint updateBrush etc.) should prefer these over + // $api.pen for events with device === "robot". + sendEvent(eventType, coordinates = {}) { + if (!this.currentAPI) { + console.warn("\u{1F916} Robo: No API context available"); + return; + } + const x = coordinates.x ?? 0; + const y = coordinates.y ?? 0; + const px = coordinates.px ?? this.pen.x ?? 0; + const py = coordinates.py ?? this.pen.y ?? 0; + const pressure = coordinates.pressure ?? 0.5; + this.pen.px = this.pen.x; + this.pen.py = this.pen.y; + this.pen.x = x; + this.pen.y = y; + this.pen.pressure = pressure; + this.pen.delta.x = x - px; + this.pen.delta.y = y - py; + this.pen.device = "robot"; + const eventPayload = { + device: "robot", + type: eventType, + x, + y, + px, + py, + pressure, + delta: { x: x - px, y: y - py } + }; + try { + this.currentAPI.act(eventType, eventPayload); + } catch (error) { + console.error("\u{1F916} Robo: Error dispatching event:", error); + } + } + touch(x, y) { + this.sendEvent("touch:1", { x, y, pressure: 0.5 }); + } + draw(x, y, px, py) { + this.sendEvent("draw:1", { x, y, px, py, pressure: 0.5 }); + } + lift(x, y) { + this.sendEvent("lift:1", { x, y, pressure: 0.5 }); + } + act(eventType, coordinates) { + this.sendEvent(eventType, coordinates); + } +}; +var persistentDawState = { + bpm: null, + playing: null, + time: null, + sampleRate: null +}; +var persistentSpreadnobState = { + note: null, + target: null, + value: null, + active: null, + min: null, + max: null +}; +var $commonApi = { + lisp: kidlisp_exports, + // A global reference to the `kidlisp` evalurator. + undef: void 0, + // A global api shorthand for undefined. + hd, + // 🖼️ Native-resolution Canvas2D layer (see the hd() definition above). + clock: { + offset: function() { + if (clockFetching) return; + if (getPackMode() || typeof window !== "undefined" && window.acSPIDER) { + clockFetching = false; + return; + } + clockFetching = true; + const t0 = Date.now(); + fetch("/api/clock").then((response) => { + if (!response.ok) { + return response.text().then((err) => { + clockFetching = false; + throw new Error( + `Failed to fetch offset: ${response.status} ${err}` + ); + }); + } + return response.text().then((serverTimeISO) => { + const t1 = Date.now(); + const serverTime = new Date(serverTimeISO).getTime(); + const rtt = t1 - t0; + const approxClientMidpoint = t0 + rtt / 2; + const targetOffset = serverTime - approxClientMidpoint; + const blendFactor = 0.25; + clockOffset += (targetOffset - clockOffset) * blendFactor; + baseTime = Date.now() + clockOffset; + baseReal = Date.now(); + lastServerTime = serverTime; + clockFetching = false; + }); + }).catch((err) => { + console.error("Clock:", err); + clockFetching = false; + }); + }, + resync: function() { + $commonApi.clock.offset(); + }, + time: function() { + return new Date(baseTime + (Date.now() - baseReal)); + } + }, + // Enable Pointer Lock + penLock: () => { + send({ type: "pen:lock" }); + }, + // Send a message to BIOS (for effect control, etc.) + send: (msg) => { + send(msg); + }, + chat: chatClient.system, + dark: void 0, + // If we are in dark mode. + theme: { + light: { + wipeBG: 150, + wipeNum: 200 + }, + dark: { + wipeBG: 32, + wipeNum: 64 + } + }, + glaze: function(content) { + if (glazeEnabled === content.on) return; + glazeEnabled = content.on; + if (content.on) { + send({ type: "glaze", content }); + } else { + glazeAfterReframe = { type: "glaze", content }; + } + }, + // Toggle HUD visibility (same as Tab key functionality) + // skipSound: true for KidLisp pieces to avoid beep/bop sounds on tap + toggleHUD: function(isDoubleTap = false, skipSound = false) { + toggleHUDVisibility(isDoubleTap, skipSound); + }, + jump: function jump(to, ahistorical = false, alias = false) { + console.log("\u{1F9ED} jump() called:", to, "SOLO_MODE:", SOLO_MODE, "leaving:", leaving, "loading:", loading); + if (SOLO_MODE) { + console.log("\u{1F512} Jump blocked: solo mode active"); + return; + } + if (leaving) { + console.log("\u{1F6AA}\u{1F434} Jump cancelled, already leaving..."); + return; + } + const jumpOut = to.startsWith("out:") || to.startsWith("http") && Aesthetic; + if (signed.indexOf(to) > -1) to = "/" + to; + if ((to.startsWith("http") || to.startsWith("/")) && !to.endsWith(".mjs") || jumpOut) { + to = to.replace("out:", ""); + try { + console.log("\u{1F40E} Jumping to web URL:", to); + $commonApi.net.web(to, jumpOut); + return; + } catch (e2) { + console.log("\u{1F40E} URL construction failed, treating as local piece:", e2.message); + return; + } + } else { + leaving = true; + unmask(); + } + { + const params = []; + if (DEVICE_MODE) params.push("device=true"); + if (TV_MODE) params.push("tv=true"); + if (SOLO_MODE) params.push("solo=true"); + if (HIGHLIGHT_MODE) { + if (HIGHLIGHT_COLOR && HIGHLIGHT_COLOR !== "64,64,64") { + params.push(`highlight=${encodeURIComponent(HIGHLIGHT_COLOR)}`); + } else { + params.push("highlight=true"); + } + } + if (PERF_MODE) params.push("perf=true"); + if (AUTO_SCALE_MODE) params.push("autoScale=true"); + if (hideLabel) params.push("nolabel=true"); + if (NOGAP_MODE) params.push("nogap=true"); + if (SPOOF_AUDIO_MODE) params.push("spoofaudio=true"); + if (params.length > 0) { + const hashIdx = to.indexOf("#"); + const base = hashIdx >= 0 ? to.slice(0, hashIdx) : to; + const frag = hashIdx >= 0 ? to.slice(hashIdx) : ""; + const separator = base.includes("?") ? "&" : "?"; + to = base + separator + params.join("&") + frag; + console.log("\u{1F9ED} Preserving resolution params:", to); + } + } + function loadLine() { + load(parse2(to), ahistorical, alias, false, callback); + } + let callback; + leaveLoad = () => { + if ($commonApi.rec.videoOnLeave && to.split("~")[0] === "prompt") { + to = "video"; + $commonApi.rec.videoOnLeave = false; + $commonApi.rec.cut(loadLine); + } else { + if (to.split("~")[0] === "prompt" && globalKidLispInstance2?.clearBakedLayers) { + globalKidLispInstance2.clearBakedLayers(); + unmask(); + } + loadLine(); + } + }; + return (cb) => callback = cb; + }, + // 🎄 Preload piece modules for merry pipelines (prevents network latency during fast cycling) + preloadPieces: async function preloadPieces(pieceNames, onProgress) { + if (!pieceNames || pieceNames.length === 0) return; + const baseUrl = getBuiltInPieceBaseUrl(); + let done = 0; + const total = pieceNames.length; + const bump = () => { + done += 1; + try { + onProgress?.(done / total); + } catch (e2) { + } + }; + const fetchPromises = pieceNames.map(async (piece) => { + if (pieceCodeCache.has(piece)) { + console.log(`\u{1F384} Piece already cached: ${piece}`); + bump(); + return; + } + try { + const mjsUrl = `${baseUrl}/aesthetic.computer/disks/${piece}.mjs?v=${Date.now()}`; + let response = await fetch(mjsUrl, { cache: "no-store" }); + if (response.ok) { + const code2 = await response.text(); + pieceCodeCache.set(piece, { code: code2, type: "mjs" }); + console.log(`\u{1F384} Preloaded mjs: ${piece}`); + return; + } + const luaUrl = `${baseUrl}/aesthetic.computer/disks/${piece}.lua?v=${Date.now()}`; + response = await fetch(luaUrl, { cache: "no-store" }); + if (response.ok) { + const code2 = await response.text(); + pieceCodeCache.set(piece, { code: code2, type: "lua" }); + console.log(`\u{1F384} Preloaded lua: ${piece}`); + return; + } + const lispUrl = `${baseUrl}/aesthetic.computer/disks/${piece}.lisp?v=${Date.now()}`; + response = await fetch(lispUrl, { cache: "no-store" }); + if (response.ok) { + const code2 = await response.text(); + pieceCodeCache.set(piece, { code: code2, type: "lisp" }); + console.log(`\u{1F384} Preloaded lisp: ${piece}`); + return; + } + console.warn(`\u{1F384} Could not preload piece: ${piece}`); + } catch (err) { + console.warn(`\u{1F384} Error preloading ${piece}:`, err); + } finally { + bump(); + } + }); + await Promise.all(fetchPromises); + console.log(`\u{1F384} Preloaded ${pieceCodeCache.size} pieces`); + }, + // Get cached piece code (returns undefined if not cached) + getCachedPieceCode: function(pieceName) { + return pieceCodeCache.get(pieceName); + }, + canShare: false, + // Whether navigator.share is enabled for mobile devices. + leaving: isLeaving, + handle: () => { + return HANDLE; + }, + notice: (msg, color3 = ["white", "green"], opts) => { + notice = msg; + noticeColor = color3; + noticeOpts = opts; + const sound2 = {}; + if (color3[0] === "yellow" && color3[1] === "red") sound2.tone = 300; + noticeBell(cachedAPI, sound2); + if (shellHTMLMode) { + send({ type: "notice:shell", content: { text: msg, color: color3 } }); + } + }, + // 🪟 A crisp vector overlay, drawn on the native UI canvas (uiCtx) above the pixel + // buffer. Hand it a display-list of ops each frame and bios replays them with + // anti-aliased Canvas 2D — rounded rects, text, lines. For UI that wants to look + // like an app, not pixels. Set null / omit to draw nothing. + // overlay([["rr", x,y,w,h,r, [r,g,b,a]], ["text","W", x,y, size, [r,g,b,a], "center"], ...]) + overlay: (list) => { + overlay2D = list || null; + }, + // ⌛ Delay a function by `time` number of sim steps. + delay: (fun, time) => { + hourGlasses.push(new Hourglass(time, { completed: () => fun() })); + }, + // Different syntax than `delay` but the same with looped behavior. + blink: (time, fun) => { + hourGlasses.push( + new Hourglass(time, { completed: () => fun(), autoFlip: true }) + ); + }, + // 🎟️ Open a ticketed paywall on the page. + ticket: (name) => { + send({ type: "ticket-wall", content: name }); + }, + // 🪙 Mint a url or the `pixels` that get passed into the argument to a + // network of choice. + mint: async (picture, progress, params) => { + console.log("\u{1FA99} Minting...", picture); + let filename; + let zipped; + if (picture.record && HANDLE) { + const record = picture.record; + filename = `painting-${record[record.length - 1].timestamp}.png`; + zipped = await $commonApi.zip( + { destination: "upload", painting: { record } }, + (p) => { + console.log("\u{1F910} Zip progress:", p); + progress?.(p); + } + ); + console.log("\u{1F910} Zipped:", zipped); + } + const data = await uploadPainting(picture, progress, HANDLE, filename); + let description; + if (picture.width && picture.height) { + description = `A ${picture.width}x${picture.height} pixel painting made on [aesthetic computer](https://aesthetic.computer).`; + } else { + description = `A painting made on [aesthetic computer](https://aesthetic.computer).`; + } + if (data) { + if (HANDLE && zipped) { + description = `[\` ${HANDLE}/${data.slug}\`](https://aesthetic.computer/painting~${HANDLE}/${data.slug}) + +${description}`; + } + if (HANDLE) data.slug = `${HANDLE}/painting/${data.slug}`; + const pixels2 = `https://aesthetic.computer/api/pixel/2048:contain/${data.slug}.${data.ext}`; + $commonApi.jump( + encodeURI( + `https://zora.co/create/single-edition?image=${pixels2}&name=${params[0] || "Untitled Painting"}&symbol=$${data.slug}&description=${description}` + ) + ); + } + }, + // 🖨️ Print either a url or the `pixels` that get passed into + // the argument, with N quantity. + print: async (picture, quantity = 1, progress) => { + console.log("\u{1F5A8}\uFE0F Printing:", picture, "Quantity:", quantity); + const data = await uploadPainting(picture, progress); + let pixels2; + if (data && data.code) { + pixels2 = `${data.code}.${data.ext}`; + } else if (data && data.slug) { + pixels2 = `${data.slug}.${data.ext}`; + } else if (data) { + pixels2 = data.url; + } else { + $commonApi.notice("UPLOAD ERROR", ["red", "yellow"]); + return; + } + try { + const headers2 = { "Content-Type": "application/json" }; + try { + const token = await $commonApi.authorize(); + if (token) headers2.Authorization = `Bearer ${token}`; + } catch (err) { + } + const res = await fetch(`/api/print?new=true&pixels=${pixels2}`, { + method: "POST", + headers: headers2, + body: JSON.stringify({ quantity, slug: $commonApi.slug }) + // TODO: Add order info here. ^ + }); + const data2 = await res.json(); + if (!res.ok) + throw new Error( + `\u{1F5A8}\uFE0F Print: HTTP error! Status: ${JSON.stringify(data2)}` + ); + console.log("\u{1F5A8}\uFE0F Print order:", data2); + $commonApi.jump(data2.location); + } catch (error) { + console.error("\u{1F5A8}\uFE0F Print order error:", error); + } + }, + // ☕ Mug - Print a painting on a ceramic mug with optional color. + // `picture` can be a painting object OR a code string like "abc" or "#abc" + mug: async (picture, color3 = "white", quantity = 1, progress) => { + console.log("\u2615 Mug:", picture, "Color:", color3, "Quantity:", quantity); + let pixels2; + if (typeof picture === "string") { + const code2 = picture.startsWith("#") ? picture.slice(1) : picture; + pixels2 = `${code2}.png`; + console.log("\u2615 Using existing painting code:", code2); + } else { + const data = await uploadPainting(picture, progress); + if (data && data.code) { + pixels2 = `${data.code}.${data.ext}`; + } else if (data && data.slug) { + pixels2 = `${data.slug}.${data.ext}`; + } else if (data) { + pixels2 = data.url; + } else { + $commonApi.notice("UPLOAD ERROR", ["red", "yellow"]); + return; + } + } + try { + const headers2 = { "Content-Type": "application/json" }; + try { + const token = await $commonApi.authorize(); + if (token) headers2.Authorization = `Bearer ${token}`; + } catch (err) { + } + const res = await fetch(`/api/mug?new=true&pixels=${pixels2}&color=${color3}`, { + method: "POST", + headers: headers2, + body: JSON.stringify({ quantity, slug: $commonApi.slug }) + }); + const data = await res.json(); + if (!res.ok) + throw new Error( + `\u2615 Mug: HTTP error! Status: ${JSON.stringify(data)}` + ); + console.log("\u2615 Mug order:", data); + $commonApi.jump(data.location); + } catch (error) { + console.error("\u2615 Mug order error:", error); + } + }, + // Create a zip file of specified content. (Used for storing painting data.) + zip: (content, progress) => { + const prom = new Promise((resolve, reject) => { + zipCreation = { resolve, reject }; + }); + if (content.destination === "upload") { + serverUploadProgressReporter = progress; + serverUploadProgressReporter?.(0); + } + send({ type: "zip", content }); + return prom; + }, + // Track device motion. + motion: { + on: false, + start: () => { + send({ type: "motion:start" }); + }, + stop: () => { + send({ type: "motion:stop" }); + }, + current: {} + // Will get replaced by an update event. + }, + // 🔷 Tezos wallet management (via bios.mjs) + wallet: { + _state: { + connected: false, + address: null, + balance: null, + network: "ghostnet", + domain: null + // .tez domain if resolved + }, + _stateRequested: false, + // Track if we've requested state from bios + // Get current wallet state (requests from bios if not yet synced) + get: function() { + if (!$commonApi.wallet._stateRequested) { + $commonApi.wallet._stateRequested = true; + send({ type: "wallet:get-state" }); + } + return { ...$commonApi.wallet._state }; + }, + // Connect wallet (with optional address for manual entry) + connect: function(options = {}) { + if (typeof options === "string") { + send({ type: "wallet:connect", content: { network: options } }); + } else { + send({ type: "wallet:connect", content: options }); + } + }, + // Disconnect wallet + disconnect: function() { + send({ type: "wallet:disconnect" }); + }, + // Refresh balance from RPC + refreshBalance: function() { + send({ type: "wallet:refresh-balance" }); + }, + // Sign a message with the connected wallet + sign: function(message, callback) { + if (callback) $commonApi.wallet._signCallback = callback; + send({ type: "wallet:sign", content: { message } }); + }, + // Get pairing URI for mobile wallet QR code + getPairingUri: function(network = "mainnet", callback) { + if (callback) $commonApi.wallet._pairingCallback = callback; + send({ type: "wallet:get-pairing-uri", content: { network } }); + }, + // Internal callbacks + _pairingCallback: null, + _signCallback: null, + // Check if connected + isConnected: function() { + return $commonApi.wallet._state.connected; + }, + // Request state sync from bios + sync: function() { + send({ type: "wallet:get-state" }); + } + }, + // Speak an `utterance` aloud. + speak: function speak(utterance, voice = "female:18", mode = "cloud", opts) { + return send({ type: "speak", content: { utterance, voice, mode, opts } }); + }, + // Broadcast an event through the entire act system. + act: (event, data = {}) => { + data.is = (e2) => e2 === event; + cachedAPI.event = data; + try { + act(cachedAPI); + } catch (e2) { + console.warn("\uFE0F \u2712 Act failure...", e2); + } + }, + // 🚥 `Get` api + // Retrieve media assets from a user account. + get: { + picture: (url) => { + return $commonApi.net.preload( + encodeURI(url), + true, + void 0 + // byOpts, + ); + }, + painting: (code2, opts) => { + return { + by: async function(handle2 = "anon", byOpts) { + const extension = opts?.record ? "zip" : "png"; + const { protocol, hostname } = getSafeUrlParts(); + let baseUrl; + const isDevelopment = hostname === "localhost" && typeof location !== "undefined" && location.port; + if (isDevelopment) { + baseUrl = `${protocol}//${hostname}:${location.port}`; + } else { + baseUrl = `https://aesthetic.computer`; + } + const isTimestamp = code2.match(/^\d{4}\.\d{1,2}\.\d{1,2}\.\d{1,2}\.\d{1,2}\.\d{1,2}\.\d{1,3}$/); + let mediaUrl; + if (isTimestamp && handle2 && handle2 !== "anon") { + const handleWithAt = handle2.startsWith("@") ? handle2 : `@${handle2}`; + mediaUrl = `${baseUrl}/media/${handleWithAt}/painting/${code2}.${extension}`; + } else { + mediaUrl = `${baseUrl}/media/paintings/${code2}.${extension}`; + } + return $commonApi.net.preload( + mediaUrl, + true, + void 0, + byOpts + ); + } + }; + } + }, + // ***Actually*** upload a file to the server. + // 📓 The file name can have `media-` which will sort it on the server into + // a directory via `presigned-url.js`. + upload: async (filename, data, progress, bucket, recordingSlug, metadata2) => { + const prom = new Promise((resolve, reject) => { + serverUpload = { resolve, reject }; + }); + serverUploadProgressReporter = progress; + serverUploadProgressReporter?.(0); + console.log("Uploading:", filename, { width: data?.width, height: data?.height }); + send({ type: "upload", content: { filename, data, bucket, recordingSlug, metadata: metadata2 } }); + return prom; + }, + code: { + channel: (chan) => { + codeChannel = chan; + store["code-channel"] = codeChannel; + store.persist("code-channel"); + if (!codeChannel || codeChannel?.length === 0) { + console.log("\u{1F4ED} Code channel cleared!"); + } else { + console.log("\u{1F4EC} Code channel set to:", codeChannel); + } + socket.send("code-channel:sub", codeChannel); + send({ + type: "post-to-parent", + content: { type: "setCode", value: codeChannel } + }); + }, + // Store a painting code mapping (timestamp/slug -> 3-letter code) + store: (slug, handle2, code2) => { + codeCache.storeCode(slug, handle2, code2); + }, + // Get a painting code from timestamp/slug + get: (slug, handle2) => { + return codeCache.getCode(slug, handle2); + } + }, + encode: async (file) => { + const prom = new Promise((resolve, reject) => { + fileEncodeRequest = { resolve, reject }; + }); + send({ type: "file-encode:request", content: file }); + return prom; + }, + // Open a local file picker. Pass { mode: "video" } (and optionally + // { accept }) to pick a clip and resolve with + // { kind:"video", data:ArrayBuffer, mime, name, duration }; the default + // resolves with a bitmap (image picker). + file: async (opts = {}) => { + const prom = new Promise((resolve, reject) => { + fileOpenRequest = { resolve, reject }; + }); + send({ type: "file-open:request", content: opts }); + return prom; + }, + // Authorize a user. + authorize: async () => { + const prom = new Promise((resolve, reject) => { + authorizationRequests.push({ resolve, reject }); + }); + send({ type: "authorization:request" }); + return prom; + }, + // Get a token for a logged in user. + // Hand-tracking. 23.04.27.10.19 TODO: Move eventually. + hand: { mediapipe: { screen: [], world: [], hand: "None" } }, + hud: { + label: (text, color3, offset, plainTextOverride) => { + currentHUDTxt = text; + currentHUDPlainTxt = plainTextOverride || stripColorCodes4(text); + if (!color3) { + currentHUDTextColor = currentHUDTextColor || findColor2(color3); + } else { + currentHUDTextColor = findColor2(color3); + } + currentHUDOffset = offset; + if (currentHUDTxt && currentHUDTxt.length > 0) { + const textForMeasurement = currentHUDPlainTxt || currentHUDTxt; + const sourceCode = currentText || currentHUDTxt; + const isKidlispPiece = currentPath && kidlisp_exports?.isKidlispSource && isKidlispSource(currentPath) && !currentPath.endsWith(".lisp") || currentPath === "(...)" || sourceCode && sourceCode.startsWith("$") || currentPath && currentPath.includes("/disks/$") || sourceCode && kidlisp_exports?.isKidlispSource && isKidlispSource(sourceCode); + const maxWidth = cachedAPI.screen.width; + const labelBounds = cachedAPI.text.box( + textForMeasurement, + void 0, + maxWidth, + 1, + // scale + true, + // wordWrap + // TODO: This should check useTinyHudLabel like the main corner label, but that's not accessible here + // For now, use default font to maintain consistency with current behavior + void 0 + // Use default font - will need to be updated when useTinyHudLabel is globally accessible + ); + const measuredWidth = labelBounds.box.width; + const fallbackShareWidth = (currentHUDLabelBlockWidth || DEFAULT_TYPEFACE_BLOCK_WIDTH) * "share ".length; + const shareWidth = Math.max(currentHUDShareWidth || 0, fallbackShareWidth); + currentHUDLeftPad = shareWidth; + const baseLabelWidth = measuredWidth + shareWidth; + const scrubExtension = Math.max(0, currentHUDScrub); + const h = labelBounds.box.height + cachedAPI.typeface.blockHeight; + currentHUDLabelMeasuredWidth = baseLabelWidth; + hudAnimationState.labelWidth = baseLabelWidth + scrubExtension; + hudAnimationState.labelHeight = h; + } + }, + // 📱 Set a QR code to display to the LEFT of the HUD label + qr: (url) => { + console.log("\u{1F4F1} HUD QR called with:", JSON.stringify(url), "current:", JSON.stringify(currentHUDQR)); + if (url !== currentHUDQR) { + currentHUDQR = url; + currentHUDQRCells = null; + console.log("\u{1F4F1} HUD QR set to:", url); + } + }, + // 🔤 Force MatrixChunky8 (tiny) font for HUD label + tinyLabel: (enabled = true) => { + forceTinyHudLabel = enabled; + }, + // 🌐 Set a compact suffix (e.g. ".com") after the HUD label. + suffix: (text) => { + currentHUDSuperscript = text || null; + }, + // Backward-compatible name for older pieces. + superscript: (text) => { + currentHUDSuperscript = text || null; + }, + currentStatusColor: () => currentHUDStatusColor, + currentLabel: () => ({ + text: currentHUDTxt, + plainText: currentHUDPlainTxt, + // Include plain text version + btn: currentHUDButton, + qrSize: currentHUDQRCells?.length || hudAnimationState?.qrSize || 0, + leftPad: currentHUDLeftPad || 0 + }), + labelBack: () => { + labelBack = true; + send({ type: "labelBack:source", content: { sourcePiece: $commonApi.piece } }); + } + }, + // 📱 LAN Dev mode identity (from session server) + get devIdentity() { + return devIdentity; + }, + send, + platform: platform_exports, + // USB flash support (Electron only) + usb: { + listDevices: () => new Promise((resolve) => { + usbDeviceListResolution = resolve; + send({ type: "usb:list-devices" }); + }), + flashImage: (opts) => new Promise((resolve) => { + usbFlashResolution = resolve; + send({ type: "usb:flash-image", content: opts }); + }) + }, + history: [], + // Populated when a disk loads and sets the former piece. + // Trigger background music. + // Eventually add an "@" style parameter similar to what a stamp system would have. + bgm: { + set: function(trackNumber, volume) { + send({ type: "bgm-change", content: { trackNumber, volume } }); + }, + stop: () => send({ type: "bgm-stop" }), + data: {} + }, + system: { + // 🐚 True when an HTML shell (prompt.ac) hosts the runtime and owns the + // prompt / corner chrome in DOM — pieces skip their own low-res chrome. + shellhtml: shellHTMLMode, + // prompt: { input: undefined }, Gets set in `prompt_boot`. + // 🎵 ac-electron drag-drop: set when a file is dropped onto the app + // (Dock icon or running window). Pieces (notably `play`) read this on + // boot; a `dropped:file` act event also fires for already-running + // pieces. Cleared by the consumer. + droppedFile: null, + // 📦 Global update poll state — `ready` flips true when /api/version + // long-poll detects a new deployment. Pieces can read this to render + // their own update UI; the corner ↑ badge in disk.mjs is automatic. + update: { + get ready() { + return globalUpdateReady; + }, + get versionInfo() { + return globalVersionInfo; + }, + get recentCommits() { + return globalRecentCommits; + }, + reload: () => send({ type: "window:reload" }) + }, + world: { + // Populated in `world_boot` of `world.mjs`. + teleported: false, + telepos: void 0, + teleport: (to, telepos) => { + $commonApi.system.world.teleported = true; + $commonApi.system.world.telepos = telepos; + $commonApi.jump(to); + } + }, + nopaint: { + //boot: nopaint_boot, // TODO: Why are these in the commonApi? 23.02.12.14.26 + // act: nopaint_act, + buffer: null, + // An overlapping brush buffer that gets drawn on top of the + // painting. + piece: null, + // Canonical code + pixel layer stack for No Paint paintings. + syncWip: async (api = cachedAPI) => { + if (!api) return null; + const { syncACPaintingWip } = await import("./painting-wip.mjs"); + return syncACPaintingWip(api); + }, + recording: false, + record: [], + // Store a recording here. + gestureRecord: [], + // Store the active gesture. + startRecord: function(fullText) { + const sys = $commonApi.system; + sys.nopaint.record = []; + sys.nopaint.recording = true; + sys.nopaint.addToRecord({ + label: fullText || "start", + painting: { + pixels: new Uint8ClampedArray(sys.painting.pixels), + width: sys.painting.width, + height: sys.painting.height + } + }); + }, + addToRecord: function(record) { + record.timestamp = timestamp(); + record.gesture = $commonApi.system.nopaint.gestureRecord.slice(); + if (record.gesture.length === 0) delete record.gesture; + $commonApi.system.nopaint.gestureRecord = []; + $commonApi.system.nopaint.record.push(record); + store["painting:record"] = $commonApi.system.nopaint.record; + store.persist("painting:record", "local:db"); + }, + is: nopaint_is, + cancelStroke: nopaint_cancelStroke, + undo: { paintings: undoPaintings }, + needsBake: false, + needsPresent: false, + bakeOnLeave: false, + addUndoPainting, + // Regresses the system painting to a previous state. + // Or the reverse... ("yes") + no: ({ system: system2, store: store2, needsPaint }, yes = false) => { + const paintings2 = system2.nopaint.undo.paintings; + let dontRecord = false; + if (yes) { + undoPosition += 1; + if (undoPosition > paintings2.length - 1) { + undoPosition = paintings2.length - 1; + dontRecord = true; + } + } else { + undoPosition -= 1; + if (undoPosition < 0) { + undoPosition = 0; + dontRecord = true; + } + } + if (paintings2.length > 1) { + const p = paintings2[undoPosition]; + const op = p.pixels; + const pixels2 = new Uint8ClampedArray(op.length); + pixels2.set(op); + store2["painting"] = { + width: p.width, + height: p.height, + pixels: pixels2 + }; + const resolutionChange = paintings2[0].width !== paintings2[1].width || paintings2[0].height !== paintings2[1].height; + store2.persist("painting", "local:db"); + $commonApi.broadcastPaintingUpdate("updated", { + source: "yes-no-decision" + }); + system2.painting = store2["painting"]; + if (system2.nopaint.recording && dontRecord === false) { + const label = yes ? "yes" : "no"; + system2.nopaint.addToRecord({ + label + //, + // painting: { + // width: system.painting.width, + // height: system.painting.height, + // pixels: new Uint8Array(system.painting.pixels), + // }, + }); + } + if (resolutionChange) { + system2.nopaint.resetTransform({ system: system2 }); + system2.nopaint.storeTransform(store2, system2); + } + needsPaint(); + } + }, + // Center the picture within the screen / default translation. + resetTransform: ({ system: sys }) => { + sys.nopaint.zoomLevel = 1; + if (!sys.painting) { + sys.nopaint.translation = { x: 0, y: 0 }; + return; + } + sys.nopaint.translation.x = floor11( + screen.width / 2 - sys.painting.width / 2 + ); + sys.nopaint.translation.y = floor11( + screen.height / 2 - sys.painting.height / 2 + ); + }, + storeTransform: (store2, sys) => { + store2["painting:transform"] = { + translation: sys.nopaint.translation, + zoom: sys.nopaint.zoomLevel + }; + store2.persist("painting:transform", "local:db"); + }, + translation: { x: 0, y: 0 }, + zoomLevel: 1, + translate: ({ system: system2 }, x, y) => { + system2.nopaint.translation.x += x; + system2.nopaint.translation.y += y; + }, + // zoom: ({ system }, dir) => { + // system.nopaint.zoomLevel += dir === "in" ? 1 : -1; + // console.log("🔭 Zoom level:", system.nopaint.zoomLevel); + // if (system.nopaint.zoomLevel <= 0) system.nopaint.zoomLevel = 1; + // // TODO: Adjust the translation based on system.nopaint.brush.x and y + // // Which would serve as the zoom origin point. + // }, + zoom: ({ system: system2 }, dir, cursor2) => { + const oldZoomLevel = system2.nopaint.zoomLevel; + system2.nopaint.zoomLevel += dir === "in" ? 1 : -1; + if (system2.nopaint.zoomLevel <= 0) system2.nopaint.zoomLevel = 1; + const scale7 = system2.nopaint.zoomLevel / oldZoomLevel; + system2.nopaint.translation.x = floor11( + cursor2.x + (system2.nopaint.translation.x - cursor2.x) * scale7 + ); + system2.nopaint.translation.y = floor11( + cursor2.y + (system2.nopaint.translation.y - cursor2.y) * scale7 + ); + }, + brush: { x: 0, y: 0, dragBox: void 0 }, + transform: (p) => { + return { + x: (p.x - nopaintAPI.translation.x) / nopaintAPI.zoomLevel, + y: (p.y - nopaintAPI.translation.y) / nopaintAPI.zoomLevel + }; + }, + // Similar to `updateBrush` but for arbitrary points, + // with no change to `system.nopaint.brush`. + pointToPainting: ({ system: system2, pen }) => { + const zoom2 = system2.nopaint.zoomLevel; + const x = floor11(((pen?.x || 0) - system2.nopaint.translation.x) / zoom2); + const y = floor11(((pen?.y || 0) - system2.nopaint.translation.y) / zoom2); + return { x, y }; + }, + updateBrush: ({ pen, event, system: system2 }, act2) => { + const source = event && event.device === "robot" ? event : pen; + const zoom2 = system2.nopaint.zoomLevel; + const x = floor11(((source?.x || 0) - system2.nopaint.translation.x) / zoom2); + const y = floor11(((source?.y || 0) - system2.nopaint.translation.y) / zoom2); + if (act2 === "touch") { + system2.nopaint.startDrag = { x, y }; + } + if (!system2.nopaint.startDrag) { + system2.nopaint.startDrag = { x, y }; + } + const dragBox = new Box( + system2.nopaint.startDrag.x, + system2.nopaint.startDrag.y, + x - system2.nopaint.startDrag.x, + y - system2.nopaint.startDrag.y + ); + system2.nopaint.brush = { x, y, dragBox, pressure: source?.pressure || 0.5 }; + $commonApi.needsPaint(); + }, + // Helper to display the existing painting on the screen, with an + // optional pan amount, that returns an adjusted pen pointer as `brush`. + // TODO: - [] Add Zoom + // - [] And Rotation! + present: ({ system: system2, screen: screen2, wipe, paste: paste3, ink: ink3, slug, dark, theme, blend: blend3 }, tx, ty) => { + system2.nopaint.needsPresent = false; + if (!system2.painting) { + console.warn("\u{1F5BC}\uFE0F present: system.painting is undefined, skipping"); + return; + } + const x = tx || system2.nopaint.translation.x; + const y = ty || system2.nopaint.translation.y; + system2.nopaint.translation = { x, y }; + const fullbleed = x === 0 && y === 0 && screen2.width <= system2.painting.width && screen2.height <= system2.painting.height; + if (fullbleed) { + paste3(system2.painting); + paste3(system2.nopaint.buffer); + } else { + wipe(theme[dark ? "dark" : "light"].wipeBG).paste(system2.painting, x, y, system2.nopaint.zoomLevel); + paste3(system2.nopaint.buffer, x, y, system2.nopaint.zoomLevel); + ink3(128).box( + x, + y, + system2.painting.width * system2.nopaint.zoomLevel, + system2.painting.height * system2.nopaint.zoomLevel, + "outline" + ); + } + if (system2.nopaint.zoomLevel !== 1 && slug !== "prompt") + ink3(255, 127).write(`${system2.nopaint.zoomLevel}x`, { x: 6, y: 18 }); + return { + x, + y + //, + //brush: { x: (pen?.x || 0) - x, y: (pen?.y || 0) - y }, + }; + }, + // Kill an existing painting. + noBang: async ({ system: system2, store: store2, needsPaint, painting: painting2, theme, dark }, res = { w: screen.width, h: screen.height }) => { + const deleted = await store2.delete("painting", "local:db"); + await store2.delete("painting:piece", "local:db"); + await store2.delete("painting:resolution-lock", "local:db"); + await store2.delete("painting:transform", "local:db"); + system2.nopaint.undo.paintings.length = 0; + system2.painting = null; + system2.nopaint.piece = null; + system2.nopaint.resetTransform({ system: system2, screen }); + needsPaint(); + system2.painting = painting2(res.w, res.h, ($) => { + $.wipe(theme[dark ? "dark" : "light"].wipeNum); + }); + store2["painting"] = { + width: system2.painting.width, + height: system2.painting.height, + pixels: system2.painting.pixels + }; + store2.persist("painting", "local:db"); + $commonApi.broadcastPaintingUpdate("cleared", { + source: "clear", + width: res.w, + height: res.h, + resetTransform: true + // Flag that receiving tabs should reset their transform + }); + await store2.delete("painting:record", "local:db"); + if (system2.nopaint.recording) { + system2.nopaint.recording = false; + system2.nopaint.record.length = 0; + } + return deleted; + }, + // Replace a painting entirely, remembering the last one. + // (This will always enable fixed resolution mode.) + replace: ({ system: system2, screen: screen2, store: store2, needsPaint }, painting2, message = "(replace)") => { + store2.delete("painting:piece", "local:db"); + system2.nopaint.piece = null; + system2.painting = painting2; + store2["painting"] = { + width: system2.painting.width, + height: system2.painting.height, + pixels: system2.painting.pixels + }; + store2.persist("painting", "local:db"); + $commonApi.broadcastPaintingUpdate("replaced", { + source: "replace", + message + }); + store2["painting:resolution-lock"] = true; + store2.persist("painting:resolution-lock", "local:db"); + system2.nopaint.resetTransform({ system: system2, screen: screen2 }); + system2.nopaint.storeTransform(store2, system2); + system2.nopaint.addUndoPainting(system2.painting, message); + system2.nopaint.needsPresent = true; + needsPaint(); + }, + abort: () => NPnoOnLeave = true + } + }, + // Paint all queued rendering commands immediately. + flatten: () => { + return painting.paint(true); + }, + connect: () => { + const p = new Promise((resolve, reject) => { + web3Response = { resolve, reject }; + }); + send({ type: "web3-connect" }); + return p; + }, + // Tezos Wallet API + tezos: { + // Connect to a Tezos wallet (opens Beacon popup) + connect: (network = "mainnet") => { + const p = new Promise((resolve, reject) => { + tezosConnectResponse = { resolve, reject }; + }); + send({ type: "tezos-connect", content: { network } }); + return p; + }, + // Disconnect from Tezos wallet + disconnect: () => { + const p = new Promise((resolve, reject) => { + tezosDisconnectResponse = { resolve, reject }; + }); + send({ type: "tezos-disconnect" }); + return p; + }, + // Get current wallet address (null if not connected) + address: () => { + const p = new Promise((resolve, reject) => { + tezosAddressResponse = { resolve, reject }; + }); + send({ type: "tezos-address" }); + return p; + }, + // Sign a message with the connected wallet + sign: (message) => { + const p = new Promise((resolve, reject) => { + tezosSignResponse = { resolve, reject }; + }); + send({ type: "tezos-sign", content: { message } }); + return p; + }, + // Call a contract method + call: (contractAddress, method, args, amount = 0) => { + const p = new Promise((resolve, reject) => { + tezosCallResponse = { resolve, reject }; + }); + send({ type: "tezos-call", content: { contractAddress, method, args, amount } }); + return p; + } + }, + wiggle: function(n2, level = 0.2, speed = 6) { + wiggleAngle = (wiggleAngle + 1 * speed) % 360; + const osc = sin5(radians(wiggleAngle)); + return n2 + n2 * level * osc; + }, + dark: true, + // Dark mode. (Gets set on startup and on any change.) + darkMode, + // Toggle dark mode or set to `true` or `false`. + // content: added programmatically: see Content class + gpuReady: false, + gpu: { + message: (content) => { + const p = new Promise((resolve, reject) => { + gpuResponse = { resolve, reject }; + }); + send({ type: "gpu-event", content }); + return p; + } + }, + // WebGPU 2D Renderer API + webgpu: { + enabled: false, + // Flag to disable CPU renderer when true + backend: null, + // Preferred backend: "webgpu", "webgl2", "canvas2d", "vello", etc. + // 🛑 Disable WebGPU and restore normal CPU rendering + disable: () => { + $commonApi.webgpu.enabled = false; + $commonApi.webgpu.backend = null; + send({ type: "webgpu-command", content: { type: "disable" } }); + }, + clear: (r2 = 0, g = 0, b2 = 0, a2 = 255) => { + send({ + type: "webgpu-command", + content: { + type: "clear", + color: [r2, g, b2, a2] + } + }); + }, + line: (x1, y1, x2, y2, r2 = 255, g = 255, b2 = 255, a2 = 255) => { + send({ + type: "webgpu-command", + content: { + type: "line", + x1, + y1, + x2, + y2, + color: [r2, g, b2, a2] + } + }); + }, + render: () => { + send({ + type: "webgpu-command", + content: { type: "render" } + }); + }, + // 📊 Toggle performance overlay + perf: (enabled) => { + send({ + type: "webgpu-command", + content: { type: "perf-overlay", enabled } + }); + } + }, + // 📊 DOM-based stats overlay (always on top of everything, even GPU canvases) + stats: { + show: (data = {}) => { + send({ type: "stats-overlay", content: { enabled: true, data } }); + }, + hide: () => { + send({ type: "stats-overlay", content: { enabled: false } }); + }, + update: (data) => { + send({ type: "stats-overlay", content: { data } }); + } + }, + // Deprecated in favor of `bios` -> `hitboxes`. (To support iOS) + // clipboard: { + // copy: (text) => { + // send({ type: "copy", content: text }); + // }, + // }, + text: { + capitalize, + reverse, + // Get the pixel width of a string of characters. + width: (text, fontName) => { + if (Array.isArray(text)) text = text.join(" "); + const useTypeface = getTypefaceForMeasurement(fontName) || tf; + if (!useTypeface) { + return text.length * DEFAULT_TYPEFACE_BLOCK_WIDTH; + } + const isProportional = useTypeface?.data?.proportional === true || !!useTypeface?.data?.advances || !!useTypeface?.data?.bdfFont; + if (isProportional && typeof useTypeface.getAdvance === "function") { + let totalWidth = 0; + for (const char of text) { + if (char === "\n" || char === "\r") continue; + const advance = useTypeface.getAdvance(char); + totalWidth += typeof advance === "number" ? advance : useTypeface.blockWidth; + } + return totalWidth; + } else { + const blockWidth = useTypeface.blockWidth || DEFAULT_TYPEFACE_BLOCK_WIDTH; + return text.length * blockWidth; + } + }, + height: (text) => { + return 10; + }, + // Return a text's bounding box. + box: (text, pos = { x: 0, y: 0 }, bounds, scale7 = 1, wordWrap = true, fontName) => { + if (!text) { + console.warn("\u26A0\uFE0F No text for `box`."); + return; + } + pos = { ...pos }; + const absScale = abs5(scale7 ?? 1); + let useTypeface = getTypefaceForMeasurement(fontName) || tf; + if (!useTypeface) { + useTypeface = tf; + } + const baseBlockWidth = useTypeface?.blockWidth ?? tf?.blockWidth ?? DEFAULT_TYPEFACE_BLOCK_WIDTH; + const baseBlockHeight = useTypeface?.blockHeight ?? tf?.blockHeight ?? DEFAULT_TYPEFACE_BLOCK_HEIGHT; + const blockHeight = baseBlockHeight * absScale; + const isProportional = useTypeface?.data?.proportional === true || !!useTypeface?.data?.advances || !!useTypeface?.data?.bdfFont; + const getAdvanceWidth = (char) => { + if (!char) return baseBlockWidth * absScale; + if (isProportional && typeof useTypeface?.getAdvance === "function") { + const raw = useTypeface.getAdvance(char); + if (typeof raw === "number") { + return raw * absScale; + } + } + return baseBlockWidth * absScale; + }; + const getCharWidth = (char) => { + if (!char || char === "\n" || char === "\r") return 0; + if (char === " ") { + return getAdvanceWidth(" ") * 4; + } + return getAdvanceWidth(char); + }; + if (bounds === void 0) { + const sampleWidth = getAdvanceWidth("0"); + bounds = (text.length + 2) * sampleWidth; + } + if (!(bounds > 0)) { + bounds = Number.POSITIVE_INFINITY; + } + const lines = [""]; + const charMap = [[]]; + let line2 = 0; + let run = 0; + let maxWidth = 0; + const commitLineWidth = () => { + if (run > maxWidth) { + maxWidth = run; + } + }; + const newLine = () => { + commitLineWidth(); + line2 += 1; + lines[line2] = ""; + charMap[line2] = []; + run = 0; + }; + const appendChar = (char, sourceIndex) => { + const width2 = getCharWidth(char); + const renderedChar = char === " " ? " " : char; + lines[line2] += renderedChar; + charMap[line2].push(sourceIndex); + run += width2; + if (run > maxWidth) { + maxWidth = run; + } + }; + if (!wordWrap) { + for (let idx = 0; idx < text.length; idx += 1) { + const char = text[idx]; + if (char === "\r") continue; + if (char === "\n") { + newLine(); + continue; + } + appendChar(char, idx); + } + } else { + const tokens = []; + let idx = 0; + while (idx < text.length) { + const char = text[idx]; + if (char === "\r") { + idx += 1; + continue; + } + if (char === "\n") { + tokens.push({ type: "newline", indices: [idx] }); + idx += 1; + continue; + } + if (char === " " || char === " ") { + let textBuffer2 = ""; + const indices2 = []; + while (idx < text.length) { + const c4 = text[idx]; + if (c4 !== " " && c4 !== " ") break; + textBuffer2 += c4; + indices2.push(idx); + idx += 1; + } + tokens.push({ type: "whitespace", text: textBuffer2, indices: indices2 }); + continue; + } + let textBuffer = ""; + const indices = []; + while (idx < text.length) { + const c4 = text[idx]; + if (c4 === "\n" || c4 === " " || c4 === " " || c4 === "\r") break; + textBuffer += c4; + indices.push(idx); + idx += 1; + } + if (textBuffer.length > 0) { + tokens.push({ type: "word", text: textBuffer, indices }); + } + } + tokens.forEach((token) => { + if (token.type === "newline") { + newLine(); + return; + } + if (token.type === "whitespace") { + for (let i2 = 0; i2 < token.text.length; i2 += 1) { + const char = token.text[i2]; + const sourceIndex = token.indices[i2]; + const width2 = getCharWidth(char); + if (run > 0 && run + width2 > bounds) { + newLine(); + } + appendChar(char, sourceIndex); + } + return; + } + if (token.type === "word") { + const chars = token.text.split(""); + const widths = chars.map((char) => getCharWidth(char)); + const wordWidth = widths.reduce((acc, value) => acc + value, 0); + if (bounds > 0 && wordWidth > bounds) { + chars.forEach((char, charIdx) => { + const width2 = widths[charIdx]; + if (run > 0 && run + width2 > bounds) { + newLine(); + } + appendChar(char, token.indices[charIdx]); + }); + return; + } + if (run > 0 && run + wordWidth > bounds) { + newLine(); + } + chars.forEach((char, charIdx) => { + appendChar(char, token.indices[charIdx]); + }); + } + }); + } + commitLineWidth(); + const lineHeightGap = 1 * absScale; + const finalBlockHeight = blockHeight + lineHeightGap; + if (lines.length >= 1 && pos.center && pos.center.indexOf("y") !== -1) { + pos.y = $activePaintApi.screen.height / 2 - lines.length * finalBlockHeight / 2 + finalBlockHeight / 2 + (pos.y || 0); + } + const height2 = lines.length * finalBlockHeight; + const lineWidths = lines.map((lineText, index) => { + if (!lineText) return 0; + const indices = charMap[index] || []; + let width2 = 0; + for (let i2 = 0; i2 < lineText.length; i2 += 1) { + const sourceIndex = indices[i2]; + if (typeof sourceIndex === "number" && sourceIndex >= 0 && sourceIndex < text.length) { + width2 += getCharWidth(text[sourceIndex]); + } else { + width2 += getCharWidth(lineText[i2]); + } + } + return width2; + }); + const maxLineWidth = lineWidths.reduce((acc, value) => Math.max(acc, value), 0); + const box2 = { x: pos.x, y: pos.y, width: maxLineWidth, height: height2 }; + return { pos, box: box2, lines, lineWidths, lineHeight: finalBlockHeight, charMap }; + } + }, + num: { + add: add7, + wrap, + even, + odd, + clamp, + wave, + rand, + randInt, + randInd, + randIntArr, + randIntRange, + rangedInts, + multiply: multiply7, + perlin, + dist: dist4, + dist3d, + radians, + degrees, + lerp: lerp5, + map, + arrMax, + arrCompress, + Track, + timestamp, + p2, + midp, + number, + intersects, + signedCeil, + signedFloor, + vec2: vec2_exports, + vec3: vec3_exports, + vec4: vec4_exports, + mat3: mat3_exports, + mat4: mat4_exports, + quat: quat_exports, + parseColor, + findColor, + saturate, + desaturate, + shiftRGB, + rgbToHexStr, + hexToRgb, + blend, + rgbToHsl, + hslToRgb, + rainbow, + zebra, + resetZebraCache + }, + geo: { + Box, + DirtyBox, + Grid, + Circle, + linePointsFromAngle, + pointFrom, + Race, + Quantizer + }, + ui: { + Button, + Slider, + TextButton, + TextButtonSmall, + TextInput, + TextFields + }, + help: { + choose, + flip, + repeat, + every, + any, + anyIndex, + anyKey, + resampleArray, + each, + shuffleInPlace, + serializePainting: (painting2) => { + if (!painting2) return; + const pixels2 = uint8ArrayToBase64(painting2.pixels); + return { width: painting2.width, height: painting2.height, pixels: pixels2 }; + }, + deserializePainting: (painting2) => { + if (!painting2) return; + const pixels2 = base64ToUint8Array(painting2.pixels); + return { width: painting2.width, height: painting2.height, pixels: pixels2 }; + } + }, + gizmo: { Hourglass, EllipsisTicker, Ticker }, + rec: new Recorder(), + robo: new Robo(), + net: { + signup: () => { + send({ type: "signup" }); + }, + login: () => { + store.delete("handle"); + send({ type: "login" }); + }, + // { email } + logout: () => { + store.delete("handle"); + send({ type: "logout" }); + $commonApi.broadcast("logout:success"); + chatClient.system?.server?.send("logout"); + }, + pieces: `${(() => { + if (typeof window !== "undefined" && window.acSPIDER) { + return "https://aesthetic.computer"; + } + const { protocol, hostname } = getSafeUrlParts(); + return `${protocol}//${hostname}`; + })()}/aesthetic.computer/disks`, + parse: parse2, + // Parse a piece slug. + // lan: // Set dynamically. + // host: // Set dynamically. + // loadFailureText: // Set dynamically. + // Make a user authorized / signed request to the api. + // Used both in `motd` and `handle`. + requestDocs: async () => { + if (typeof docs === "object") return Promise.resolve(docs); + return fetch("/docs.json").then((response) => { + if (response.status !== 200) { + throw new Error("Network failure: " + response.status); + } + return response.json(); + }).then((d2) => { + docs = d2; + return docs; + }).catch((err) => console.error("\u{1F534} \u{1F4DA} Couldn't get docs:", err)); + }, + // Get the authorization token for the current user (for streaming/custom requests) + getToken: async () => { + try { + return await $commonApi.authorize(); + } catch (error) { + if (error) console.warn("\u{1F511} getToken:", error); + return null; + } + }, + userRequest: async (method, endpoint, body) => { + try { + const token = await $commonApi.authorize(); + if (!token) throw new Error("\u{1F9D6} Not logged in."); + const headers2 = { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json" + }; + const options = { method, headers: headers2 }; + if (body) options.body = JSON.stringify(body); + const response = await fetch(endpoint, options); + if (response.status === 500) { + try { + const json = await response.json(); + return { status: response.status, ...json }; + } catch (e2) { + return { status: response.status, message: response.statusText }; + } + } else { + const clonedResponse = response.clone(); + try { + return { + ...await clonedResponse.json(), + status: response.status + }; + } catch { + return { status: response.status, body: await response.text() }; + } + } + } catch (error) { + if (/^\/api\/(?:mail|mail-status|tell)(?:[/?#]|$)/.test(endpoint)) { + console.error("mail.request.failed"); + } else { + console.error("\u{1F6AB} Error:", error); + } + return { message: "unauthorized" }; + } + }, + // Loosely connect the UDP receiver. + udp: (receive2) => { + udpReceive = receive2; + return udp; + }, + hiccup: (hiccupIn = 5, outageSeconds = 5) => { + console.log("\u{1F635} Hiccuping in:", hiccupIn, "seconds."); + clearTimeout(hiccupTimeout); + hiccupTimeout = setTimeout(() => { + console.log("\u{1F636}\u200D\u{1F32B}\uFE0F Hiccup!"); + chatClient.system?.server.kill(outageSeconds); + socket?.kill(outageSeconds); + udp?.kill(outageSeconds); + }, hiccupIn * 1e3); + }, + // Remote debugging: Send log messages to session server for debugging on any device + log: function(levelOrFilename, ...args) { + if (levelOrFilename.startsWith("/tmp/") || levelOrFilename.includes(".log")) { + const filename = levelOrFilename; + const content = args[0]; + if (socket && socket.send) { + socket.send("dev-log", { + level: "INFO", + message: `${filename}: ${content}`, + device: navigator.userAgent || "unknown", + timestamp: Date.now() + }); + } + } else { + const level = levelOrFilename; + const serializedArgs = args.map((arg) => { + if (typeof arg === "object" && arg !== null) { + try { + return JSON.stringify(arg); + } catch (e2) { + return String(arg); + } + } + return String(arg); + }); + const message = serializedArgs.join(" "); + if (level === "warn") { + console.warn(...args); + } else if (level === "error") { + console.error(...args); + } else { + console.log(...args); + } + if (socket && socket.send) { + socket.send("dev-log", { + level: level.toUpperCase(), + message, + device: navigator.userAgent || "unknown", + timestamp: Date.now() + }); + } + } + } + }, + needsPaint: () => { + noPaint = false; + if (system === "nopaint") { + $commonApi.system.nopaint.needsPresent = true; + } + }, + // TODO: Does "paint" needs this? + store, + pieceCount: -1, + // Incs to 0 when the first piece (usually the prompt) loads. + // Increments by 1 each time a new piece loads. + debug: debug3, + nopaintPerf, + // 🎯 Cursor control API - pieces can request custom cursors + cursor: (cursorStyle) => { + send({ type: "cursor:set", content: { style: cursorStyle } }); + } +}; +$commonApi.net.log.info = (...args) => $commonApi.net.log("info", ...args); +$commonApi.net.log.warn = (...args) => $commonApi.net.log("warn", ...args); +$commonApi.net.log.error = (...args) => $commonApi.net.log("error", ...args); +var pendingRecordingUIOverlays = {}; +$commonApi.recordingUI = { + // Add an overlay that will be visible on screen but not recorded in tapes + // name: unique identifier for the overlay + // painting: a painting buffer created with $api.painting() + // x, y: position to draw the overlay + // opacity: optional opacity (0-1) + add: function(name, painting2, x, y, opacity = 1) { + if (!painting2 || !painting2.pixels) return; + pendingRecordingUIOverlays[name] = { + x, + y, + opacity, + img: { + width: painting2.width, + height: painting2.height, + pixels: painting2.pixels + } + }; + }, + // Clear all recording UI overlays + clear: function() { + pendingRecordingUIOverlays = {}; + }, + // Get pending overlays (used internally when sending frame data) + _getPending: function() { + return pendingRecordingUIOverlays; + }, + // Clear pending overlays (used internally after sending) + _clearPending: function() { + pendingRecordingUIOverlays = {}; + } +}; +chatClient.$commonApi = $commonApi; +var nopaintAPI = $commonApi.system.nopaint; +startPaintingChangeMonitoring(); +var channel = new BroadcastChannel("aesthetic.computer"); +channel.onmessage = (event) => { + processMessage(event.data); +}; +async function processMessage(msg) { + if (logs.messaging) console.log(`\u{1F5FC} Processing broadcast: ${msg}`); + if (msg.startsWith("painting:") || msg.startsWith("{") && msg.includes('"type":"painting:updated"')) { + const isNopaintActive = $commonApi.system?.nopaint?.is?.("painting"); + if (isNopaintActive) { + console.log(`\u{1F6AB} CROSS-TAB INTERFERENCE: Receiving painting update during nopaint operation - this may disrupt live preview!`, { + msgPreview: msg.substring(0, 100) + "...", + nopaintState: "painting" + }); + } + await handlePaintingUpdate(msg); + return; + } + if (msg.startsWith("handle:updated")) { + const newHandle = msg.split(":").pop(); + HANDLE = "@" + newHandle; + if (typeof window !== "undefined") window.acHANDLE = HANDLE; + if (typeof window !== "undefined" && window.acBootCanvas?.setHandle) window.acBootCanvas.setHandle(HANDLE); + send({ type: "handle", content: HANDLE }); + store["handle:received"] = true; + store["handle"] = newHandle; + return; + } + if (msg === "login:success" && !USER) { + $commonApi.net.refresh(); + return; + } + if (msg === "logout:success" && USER) { + $commonApi.net.refresh(); + return; + } +} +async function handlePaintingUpdate(msg) { + try { + const data = JSON.parse(msg); + if (data.type !== "painting:updated") return; + if (data.tabId === $commonApi._tabId) { + console.log(`\u{1F3A8} SKIPPED: Own message (${data.action})`); + return; + } + if (!$commonApi.system) { + console.log(`\u{1F3A8} SKIPPED: No system available`); + return; + } + if (data.action === "resized" && data.metadata?.source === "screen_resize" || data.action === "updated" && (data.source === "resize" || data.source === "crop")) { + const width2 = data.width || data.metadata?.width; + const height2 = data.height || data.metadata?.height; + console.log(`\u{1F4D0} DIMENSION CHANGE EVENT: ${width2}x${height2} (source: ${data.source || data.metadata?.source})`); + $commonApi._processingResize = true; + $commonApi._awaitingResizeStorage = { width: width2, height: height2, timestamp: data.timestamp }; + console.log(`\u{1F4D0} Waiting for storage completion for ${data.source} ${width2}x${height2}...`); + return; + } + if (data.action === "storage_complete" && (data.source === "resize" || data.source === "crop")) { + const awaitingResize = $commonApi._awaitingResizeStorage; + console.log(`\u{1FA9D} RECEIVED storage_complete:`, { + source: data.source, + timestamp: data.timestamp, + awaitingResize, + timestampMatch: awaitingResize && data.timestamp === awaitingResize.timestamp + }); + if (awaitingResize && data.timestamp === awaitingResize.timestamp) { + console.log(`\u{1F4D0} Storage completed for ${data.source} ${awaitingResize.width}x${awaitingResize.height}, applying...`); + try { + const storedPainting = await store.retrieve("painting", "local:db"); + if (storedPainting) { + $commonApi.system.painting = { + width: storedPainting.width, + height: storedPainting.height, + pixels: new Uint8ClampedArray(storedPainting.pixels) + }; + store["painting"] = { + width: storedPainting.width, + height: storedPainting.height, + pixels: storedPainting.pixels + }; + lastPaintingHash = generatePaintingHash($commonApi.system.painting); + const kidlispInstance = getGlobalKidLisp(); + if (kidlispInstance) { + kidlispInstance.setAPI($commonApi); + console.log(`\u{1F3AF} KidLisp API refreshed with ${data.source} painting: ${storedPainting.width}x${storedPainting.height}`); + } + if ($commonApi.system.nopaint) { + $commonApi.system.nopaint.needsPresent = true; + } + $commonApi.needsPaint(); + console.log(`\u{1F4D0} Screen updated after ${data.source}: ${storedPainting.width}x${storedPainting.height}`); + } + } catch (error) { + console.error(`\u{1F4D0} ERROR applying ${data.source} after storage completion:`, error); + } + delete $commonApi._awaitingResizeStorage; + $commonApi._processingResize = false; + return; + } + } + $commonApi._processingBroadcast = true; + try { + const storedPainting = await store.retrieve("painting", "local:db"); + if (storedPainting) { + $commonApi.system.painting = { + width: storedPainting.width, + height: storedPainting.height, + pixels: new Uint8ClampedArray(storedPainting.pixels) + }; + store["painting"] = { + width: storedPainting.width, + height: storedPainting.height, + pixels: storedPainting.pixels + }; + lastPaintingHash = generatePaintingHash($commonApi.system.painting); + const kidlispInstance = getGlobalKidLisp(); + if (kidlispInstance) { + kidlispInstance.setAPI($commonApi); + console.log(`\u{1F3AF} KidLisp API refreshed with updated painting`); + } + if ($commonApi.system.nopaint) { + $commonApi.system.nopaint.needsPresent = true; + } + $commonApi.needsPaint(); + if ((data.action === "cleared" || data.action === "new" || data.resetTransform) && $commonApi.system.nopaint) { + console.log(`\u{1F3AF} ${data.action?.toUpperCase() || "TRANSFORM_RESET"}: Forcing nopan (reset transform) on receiver`); + $commonApi.system.nopaint.resetTransform({ + system: $commonApi.system, + screen: $commonApi.screen + }); + } + console.log(`\u{1F3A8} PAINTING SYNCED: ${storedPainting.width}x${storedPainting.height}`, { + hash: generatePaintingHash($commonApi.system.painting)?.substr(0, 8), + fromHash: data.hash || "unknown", + firstPixels: Array.from($commonApi.system.painting.pixels.slice(0, 12)) + // First 3 pixels (RGBA) + }); + } else { + } + } catch (storageError) { + console.error(`\u{1F3A8} ERROR loading from storage:`, storageError); + } + } catch (error) { + console.error(`\u{1F3A8} ERROR handling painting update:`, error); + if (typeof msg === "string" && msg.startsWith("painting:")) { + const action = msg.split(":")[1]; + console.log(`\u{1F3A8} FALLBACK: Processing legacy format ${action}`); + try { + const storedPainting = await store.retrieve("painting", "local:db"); + if (storedPainting) { + $commonApi.system.painting = { + width: storedPainting.width, + height: storedPainting.height, + pixels: new Uint8ClampedArray(storedPainting.pixels) + }; + store["painting"] = { + width: storedPainting.width, + height: storedPainting.height, + pixels: storedPainting.pixels + }; + const kidlispInstance = getGlobalKidLisp(); + if (kidlispInstance) { + kidlispInstance.setAPI($commonApi); + } + if ($commonApi.system.nopaint) { + $commonApi.system.nopaint.needsPresent = true; + } + $commonApi.needsPaint(); + } + } catch (storageError) { + console.error(`\u{1F3A8} ERROR in fallback storage load:`, storageError); + } + } + } finally { + setTimeout(() => { + $commonApi._processingBroadcast = false; + }, 50); + } +} +$commonApi.broadcast = (msg) => { + processMessage(msg); + channel.postMessage(msg); +}; +$commonApi.broadcastPaintingUpdate = (action, data = {}) => { + if (!$commonApi.system?.painting) return; + const isNopaintActive = $commonApi.system?.nopaint?.is?.("painting"); + if (isNopaintActive) { + console.log(`\u{1F6AB} NOPAINT INTERFERENCE: Attempting to broadcast "${action}" during nopaint operation - this may disrupt live preview!`, { + action, + source: data.source, + nopaintState: "painting" + }); + } + const now = Date.now(); + if (now - lastBroadcastTime < broadcastThrottleDelay) { + return; + } + lastBroadcastTime = now; + if (!$commonApi._tabId) { + $commonApi._tabId = Math.random().toString(36).substr(2, 9); + } + const message = { + type: "painting:updated", + action, + tabId: $commonApi._tabId, + timestamp: now, + width: $commonApi.system.painting.width, + height: $commonApi.system.painting.height, + ...data + }; + channel.postMessage(JSON.stringify(message)); +}; +$commonApi.broadcastPaintingUpdateImmediate = (action, data = {}) => { + if (!$commonApi.system?.painting || $commonApi._processingBroadcast) return; + const isNopaintActive = $commonApi.system?.nopaint?.is?.("painting"); + if (isNopaintActive) { + console.log(`\u{1F6AB} IMMEDIATE NOPAINT INTERFERENCE: Attempting immediate broadcast "${action}" during nopaint operation!`, { + action, + source: data.source, + nopaintState: "painting" + }); + } + const now = Date.now(); + if (now - (lastBroadcastTime || 0) < 16) { + return; + } + if (!$commonApi._tabId) { + $commonApi._tabId = Math.random().toString(36).substr(2, 9); + } + const paintingHash = generatePaintingHash($commonApi.system.painting); + const message = { + type: "painting:updated", + action, + tabId: $commonApi._tabId, + timestamp: now, + width: $commonApi.system.painting.width, + height: $commonApi.system.painting.height, + hash: paintingHash?.substr(0, 8), + immediate: true, + ...data + }; + setTimeout(() => { + store["painting"] = { + width: $commonApi.system.painting.width, + height: $commonApi.system.painting.height, + pixels: $commonApi.system.painting.pixels + }; + store.persist("painting", "local:db"); + if (data.source === "resize" || data.source === "crop") { + const storageCompleteMessage = { + type: "painting:updated", + action: "storage_complete", + source: data.source, + tabId: message.tabId, + timestamp: message.timestamp, + width: $commonApi.system.painting.width, + height: $commonApi.system.painting.height + }; + channel.postMessage(JSON.stringify(storageCompleteMessage)); + console.log(`\u{1FA9D} STORAGE COMPLETE hook fired for ${data.source} ${$commonApi.system.painting.width}x${$commonApi.system.painting.height}`, { + timestamp: message.timestamp, + tabId: message.tabId.substr(0, 4) + "..." + }); + } + }, 0); + lastPaintingHash = paintingHash; + lastBroadcastTime = now; + channel.postMessage(JSON.stringify(message)); +}; +function generatePaintingHash(painting2) { + if (!painting2?.pixels) return null; + let hash = painting2.width * 31 + painting2.height * 37; + for (let i2 = 0; i2 < painting2.pixels.length; i2 += 100) { + hash = (hash << 5) - hash + painting2.pixels[i2] & 4294967295; + } + return hash.toString(36); +} +function startPaintingChangeMonitoring() { + if (paintingChangeCheckInterval) return; + if ($commonApi.system?.painting) { + lastPaintingHash = generatePaintingHash($commonApi.system.painting); + } + enableFrameBasedMonitoring(); + paintingChangeCheckInterval = setInterval(() => { + if (!$commonApi.system?.painting || frameBasedMonitoring) return; + const currentHash2 = generatePaintingHash($commonApi.system.painting); + if (lastPaintingHash !== null && currentHash2 !== lastPaintingHash && !$commonApi._processingBroadcast) { + $commonApi._processingBroadcast = true; + store["painting"] = { + width: $commonApi.system.painting.width, + height: $commonApi.system.painting.height, + pixels: $commonApi.system.painting.pixels + }; + store.persist("painting", "local:db"); + $commonApi.broadcastPaintingUpdate("updated", { + source: "interval_monitor", + hash: currentHash2.substr(0, 8) + }); + setTimeout(() => { + $commonApi._processingBroadcast = false; + }, 100); + } + lastPaintingHash = currentHash2; + }, 1e3); +} +async function session(slug, forceProduction = false, service) { + let endPoint = "/session/" + slug; + const params = { service }; + if (forceProduction) params.forceProduction = 1; + endPoint += "?" + new URLSearchParams(params); + const req = await fetch(endPoint); + let session2; + if (req.status === 200 || req.status === 304) { + session2 = await req.text().then((text) => { + try { + return JSON.parse(text); + } catch (e2) { + return text; + } + }); + } else { + session2 = await req.text(); + } + if (typeof session2 === "string") return session2; + return session2; +} +var $updateApi = {}; +var QUAD = { + type: "quad", + positions: [ + // Triangle 1 (Left Side) + [-1, -1, 0, 1], + // Bottom Left + [-1, 1, 0, 1], + // Top Left + [1, 1, 0, 1], + // Top Right + // Triangle 2 (Right Side) + [-1, -1, 0, 1], + // Bottom Left + [1, -1, 0, 1], + // Bottom Right + [1, 1, 0, 1] + // Top Right + ], + indices: [ + // These are not re-used for now. + // One + 0, + 1, + 2, + //Two + 3, + 4, + 5 + ] +}; +var CUBEL = { + type: "line", + positions: [ + // Back + [-0.5, -0.5, 0.5, 1], + // Down + [-0.5, 0.5, 0.5, 1], + [-0.5, 0.5, 0.5, 1], + // Across + [0.5, 0.5, 0.5, 1], + [0.5, 0.5, 0.5, 1], + // Up + [0.5, -0.5, 0.5, 1], + [0.5, -0.5, 0.5, 1], + // Back + [-0.5, -0.5, 0.5, 1], + // Front + [-0.5, -0.5, -0.5, 1], + // Down + [-0.5, 0.5, -0.5, 1], + [-0.5, 0.5, -0.5, 1], + // Across + [0.5, 0.5, -0.5, 1], + [0.5, 0.5, -0.5, 1], + // Up + [0.5, -0.5, -0.5, 1], + [0.5, -0.5, -0.5, 1], + // Back + [-0.5, -0.5, -0.5, 1], + // Bars (back to front) + [-0.5, -0.5, 0.5, 1], + // Top Left + [-0.5, -0.5, -0.5, 1], + [-0.5, 0.5, 0.5, 1], + // Bottom Left + [-0.5, 0.5, -0.5, 1], + [0.5, 0.5, 0.5, 1], + // Up + [0.5, 0.5, -0.5, 1], + [0.5, -0.5, 0.5, 1], + // Back + [0.5, -0.5, -0.5, 1] + ] +}; +var ORIGIN = { + type: "line", + positions: [ + [-0.5, 0, 0, 1], + // Horizontal X + [0.5, 0, 0, 1], + [0, 0, -0.5, 1], + // Horizontal Z + [0, 0, 2, 1], + [0, -0.5, 0, 1], + // Vertical + [0, 0.5, 0, 1] + ], + colors: [ + [255, 0, 0, 255], + [255, 0, 0, 255], + [0, 255, 0, 255], + [0, 255, 0, 255], + [0, 0, 255, 255], + [0, 0, 255, 255] + ] +}; +var TRI = { + type: "triangle", + positions: [ + [-1, -1, 0, 1], + // Bottom Left + [0, 1, 0, 1], + // Top Left + [1, -1, 0, 1] + // Top Right + // Triangle 2 (Right Side) + ], + indices: [0, 1, 2] +}; +var LINE = { + type: "line", + positions: [ + [0, 0, 0, 1], + // Bottom + [0, 1, 0, 1] + // Top + ], + indices: [0, 1] +}; +function ink() { + const n2 = arguments.length; + if ((n2 === 3 || n2 === 4) && !inkFloodLoggingEnabled2()) { + const r2 = arguments[0], g = arguments[1], b2 = arguments[2]; + const a2 = n2 === 4 ? arguments[3] : 255; + if (typeof r2 === "number" && typeof g === "number" && typeof b2 === "number" && typeof a2 === "number" && r2 === r2 && g === g && b2 === b2 && a2 === a2) return color(r2, g, b2, a2); + } + const foundColor = findColor2(...arguments); + if (inkFloodLoggingEnabled2()) { + console.log( + `${inkFloodLogPrefix2()}\u{1F58D}\uFE0F INK DEBUG`, + { + args: cloneArgsForLog(arguments), + resolved: cloneColorForLog2(foundColor) + } + ); + } + const result = color(...foundColor); + if (inkFloodLoggingEnabled2()) { + console.log( + `${inkFloodLogPrefix2()}\u{1F58D}\uFE0F INK APPLIED`, + { + color: cloneColorForLog2(result) + } + ); + } + return result; +} +function ink2() { + if (arguments[0] === null) { + return color2(null); + } else { + return color2(...findColor2(...arguments)); + } +} +function initializeGlobalKidLisp(api) { + if (!globalKidLispInstance2) { + if (typeof ensureGlobalInstance === "function") { + globalKidLispInstance2 = ensureGlobalInstance(); + } else if (typeof getGlobalInstance === "function") { + globalKidLispInstance2 = getGlobalInstance() || new KidLisp(); + } else { + globalKidLispInstance2 = new KidLisp(); + } + globalKidLispInstance2.setAPI(api); + if (typeof window !== "undefined") { + window.__acGlobalKidLispInstance = globalKidLispInstance2; + } + if (PERF_MODE) { + globalKidLispInstance2.startPerformanceMonitoring(); + } + if (AUTO_SCALE_MODE) { + globalKidLispInstance2.enableAutoDensity(); + } + } + return globalKidLispInstance2; +} +function getGlobalKidLisp() { + return globalKidLispInstance2; +} +function updateKidLispAudio2(audioData) { + const payload = audioData && typeof audioData === "object" ? { ...audioData, __source: audioData.__source || "embedded:paintApi" } : audioData; + if (globalKidLispInstance2 && globalKidLispInstance2.updateAudioGlobals) { + globalKidLispInstance2.updateAudioGlobals(payload); + } else if (payload?.amp > 0) { + console.warn("\u{1F50A} updateKidLispAudio: no instance!", !!globalKidLispInstance2, !!globalKidLispInstance2?.updateAudioGlobals); + } +} +var $paintApi = { + // 1. Composite functions (that use $activePaintApi) + // (Must be unwrapped) + // Prints a line of text using the default / current global font. + // Argument options: + // text, pos: {x, y, center}, bg (optional) + // Parameters: + // text, x, y, options, wordWrap, customTypeface + // text, pos, bg, bounds, wordWrap = true, customTypeface + write: function() { + let text = arguments[0], pos, bg, bounds, wordWrap = true, customTypeface = null, rotation = 0; + if (text === void 0 || text === null || text === "" || !tf) + return $activePaintApi; + text = typeof text === "object" && text !== null ? JSON.stringify(text) : text.toString(); + if (typeof arguments[1] === "number") { + pos = { x: arguments[1], y: arguments[2] }; + const options = arguments[3]; + bg = options?.bg; + bounds = options?.bounds; + wordWrap = options?.wordWrap === void 0 ? wordWrap : options.wordWrap; + customTypeface = options?.typeface; + rotation = options?.rotation ?? options?.angle ?? 0; + } else { + pos = arguments[1]; + bg = arguments[2]; + bounds = arguments[3]; + wordWrap = arguments[4] === void 0 ? wordWrap : arguments[4]; + customTypeface = arguments[5]; + rotation = pos?.rotation ?? pos?.angle ?? 0; + } + if (customTypeface) { + const resolvedTypeface = resolveTypefaceInstance(customTypeface); + if (resolvedTypeface) { + ensureTypefaceLoaded(resolvedTypeface); + customTypeface = resolvedTypeface; + } + } + const hasColorCodes2 = textContainsColorCodes(text); + if (hasColorCodes2) { + const originalColor = $activePaintApi.inkrn(); + let cleanText = ""; + let charColors = []; + let currentColor = null; + const segments = splitColorCodes(text); + for (let i2 = 0; i2 < segments.length; i2++) { + if (i2 % 2 === 0) { + const segment = segments[i2]; + for (let j = 0; j < segment.length; j++) { + cleanText += segment[j]; + charColors.push(currentColor); + } + } else { + const colorStr = segments[i2]; + if (!colorStr) { + continue; + } + const normalized = colorStr.trim(); + const lower = normalized.toLowerCase(); + if (!normalized) { + continue; + } + if (lower === "reset" || lower === "default" || lower === "base") { + currentColor = null; + continue; + } + if (normalized.includes(",")) { + const parts = normalized.split(",").map((n2) => { + const parsed = parseInt(n2.trim(), 10); + return Number.isFinite(parsed) ? parsed : 0; + }); + while (parts.length < 3) parts.push(0); + if (parts.length === 3) parts.push(255); + currentColor = parts.slice(0, 4); + } else if (lower === "transparent" || lower === "clear") { + currentColor = [0, 0, 0, 0]; + } else { + const resolved = findColor2(normalized); + if (Array.isArray(resolved)) { + currentColor = resolved.slice(); + } else if (resolved && typeof resolved === "object") { + currentColor = { ...resolved }; + } else if (resolved !== void 0) { + currentColor = resolved; + } else { + currentColor = null; + } + } + } + } + if (cleanText.trim().length === 0) { + return $activePaintApi; + } + const scale8 = pos?.size || 1; + if (bounds) { + const tb = $commonApi.text.box(cleanText, pos, bounds, scale8, wordWrap, customTypeface); + if (!tb || !tb.lines) { + return $activePaintApi; + } + const charMap = tb.charMap || []; + tb.lines.forEach((lineText, index) => { + const renderedLine = typeof lineText === "string" ? lineText : lineText?.join?.(" ") || ""; + const sourceIndices = charMap[index] || []; + const lineColors = []; + for (let i2 = 0; i2 < renderedLine.length; i2++) { + const sourceIndex = sourceIndices[i2]; + if (typeof sourceIndex === "number" && sourceIndex >= 0 && sourceIndex < charColors.length) { + lineColors.push(charColors[sourceIndex]); + } else { + lineColors.push(null); + } + } + const posWithRotation = { ...tb.pos, rotation }; + (customTypeface || tf)?.print( + $activePaintApi, + posWithRotation, + index, + renderedLine, + bg, + lineColors + ); + }); + } else { + if (cleanText.indexOf("\n") !== -1) { + const lines = cleanText.split("\n"); + const lineHeightGap = 2; + let charIndex = 0; + lines.forEach((line2, index) => { + const lineColors = charColors?.slice( + charIndex, + charIndex + line2.length + ); + (customTypeface || tf)?.print( + $activePaintApi, + { + x: pos?.x, + y: pos ? pos.y + index * (customTypeface || tf).blockHeight + lineHeightGap : void 0, + rotation + }, + 0, + line2, + bg, + lineColors + ); + charIndex += line2.length + 1; + }); + } else { + const posWithRotation = { ...pos, rotation }; + (customTypeface || tf)?.print($activePaintApi, posWithRotation, 0, cleanText, bg, charColors); + } + } + const typefaceName = typeof customTypeface === "string" ? customTypeface : customTypeface?.name; + if (typefaceName === "MatrixChunky8" || typefaceName === "unifont") { + const hasColorAssignments = charColors?.some((color3) => { + if (!color3) return false; + if (Array.isArray(color3)) { + return color3.some((component) => component !== null && component !== void 0); + } + if (typeof color3 === "object") { + return Object.keys(color3).length > 0; + } + return typeof color3 === "string"; + }); + if (!hasColorAssignments) { + const snippet = cleanText.length > 120 ? `${cleanText.slice(0, 117)}\u2026` : cleanText; + if (lastMatrixChunkyWriteDiagnosticLog !== snippet) { + lastMatrixChunkyWriteDiagnosticLog = snippet; + console.warn("\u{1F3A8} MatrixChunky8 HUD charColors missing", { + snippet, + charColorsLength: charColors?.length, + cleanTextLength: cleanText.length + }); + } + } + } + $activePaintApi.ink(...originalColor); + return $activePaintApi; + } + const scale7 = pos?.size || 1; + if (bounds) { + const tb = $commonApi.text.box(text, pos, bounds, scale7, wordWrap, customTypeface); + tb.lines.forEach((lineText, index) => { + const renderedLine = typeof lineText === "string" ? lineText : lineText?.join?.(" ") || ""; + const posWithRotation = { ...tb.pos, rotation }; + (customTypeface || tf)?.print($activePaintApi, posWithRotation, index, renderedLine, bg); + }); + } else { + if (text.indexOf("\n") !== -1) { + const lines = text.split("\n"); + const lineHeightGap = 2; + lines.forEach((line2, index) => { + (customTypeface || tf)?.print( + $activePaintApi, + { + x: pos?.x, + y: pos ? pos.y + index * (customTypeface || tf).blockHeight + lineHeightGap : void 0, + rotation + }, + 0, + line2, + bg + ); + }); + } else { + const actualFont = customTypeface || tf; + const posWithRotation = { ...pos, rotation }; + actualFont?.print($activePaintApi, posWithRotation, 0, text, bg); + } + } + return $activePaintApi; + }, + // 2. Image Utilities + clonePixels: cloneBuffer, + colorsMatch, + color: findColor2, + resize, + // 3. 3D Classes & Objects + Camera, + Form, + Dolly, + sign, + cacheSignGlyph, + // Helper to get glyphs from a typeface for use with sign() + glyphs: (fontName = "MatrixChunky8") => { + const typeface = typefaceCache.get(fontName); + return typeface?.glyphs || {}; + }, + TRI, + QUAD, + LINE, + CUBEL, + ORIGIN, + // Project text glyphs onto a 3D plane, drawing each character's line/point + // commands through a projection function. + // Usage: ink(r,g,b,a).write3D("text", { origin, right, down, project, typeface }, scale) + // origin: [x,y,z] — top-left of the first character in world space + // right: [x,y,z] — unit-ish direction for text flow (gets scaled by glyph size) + // down: [x,y,z] — unit-ish direction for descending lines + // project: ([x,y,z]) => [screenX, screenY] — world-to-screen projection + // typeface: optional typeface name (e.g. "MatrixChunky8") — defaults to active tf + // scale: multiplier for glyph coordinate spacing (default 1) + write3D: function(text, plane, scale7 = 1) { + if (!text || !plane) return $activePaintApi; + const { origin, right, down, project } = plane; + if (!origin || !right || !down || !project) return $activePaintApi; + let face = tf; + if (plane.typeface && typefaceCache.has(plane.typeface)) { + face = typefaceCache.get(plane.typeface); + } + if (!face) return $activePaintApi; + const blockW = face.blockWidth || face.data?.glyphWidth || 6; + const fontData = face.data || {}; + const advances = fontData.advances || {}; + let cursorX = 0; + for (let ci = 0; ci < text.length; ci++) { + const char = text[ci]; + const glyph = face.getGlyph?.(char) || face.glyphs?.[char]; + const advance = advances[char] || face.getAdvance?.(char) || blockW; + if (glyph) { + let offX = 0, offY = 0; + if (glyph.baselineOffset) { + offX = glyph.baselineOffset[0] * scale7; + offY = glyph.baselineOffset[1] * scale7; + } else if (glyph.offset) { + offX = glyph.offset[0] * scale7; + offY = glyph.offset[1] * scale7; + } + const projectPt = (gx, gy) => { + const px = cursorX + (gx * scale7 + offX); + const py = gy * scale7 + offY; + const wx = origin[0] + px * right[0] + py * down[0]; + const wy = origin[1] + px * right[1] + py * down[1]; + const wz = origin[2] + px * right[2] + py * down[2]; + return project([wx, wy, wz]); + }; + const [refX, refY] = projectPt(0, 0); + const [refRX, refRY] = projectPt(1, 0); + const [refDX, refDY] = projectPt(0, 1); + const pxW = Math.sqrt((refRX - refX) ** 2 + (refRY - refY) ** 2) || 1; + const pxH = Math.sqrt((refDX - refX) ** 2 + (refDY - refY) ** 2) || 1; + const pxSize = Math.max(1, Math.round((pxW + pxH) / 2)); + const pixelCb = plane.pixelCallback; + const renderPixel = (gx, gy) => { + const [sx, sy] = projectPt(gx + 0.5, gy + 0.5); + const bx = Math.floor(sx - pxSize / 2); + const by = Math.floor(sy - pxSize / 2); + if (pixelCb) pixelCb(bx, by, gx, gy, ci); + $activePaintApi.box(bx, by, pxSize, pxSize); + }; + if (glyph.pixels) { + for (let row = 0; row < glyph.pixels.length; row++) { + const pixelRow = glyph.pixels[row]; + if (!Array.isArray(pixelRow)) continue; + for (let col = 0; col < pixelRow.length; col++) { + if (pixelRow[col] === 1) renderPixel(col, row); + } + } + } + if (glyph.commands) { + for (const { name, args } of glyph.commands) { + if (name === "point") { + renderPixel(args[0], args[1]); + } else if (name === "line") { + renderPixel(args[0], args[1]); + renderPixel(args[2], args[3]); + const [s1x, s1y] = projectPt(args[0], args[1]); + const [s2x, s2y] = projectPt(args[2], args[3]); + $activePaintApi.line( + Math.floor(s1x), + Math.floor(s1y), + Math.floor(s2x), + Math.floor(s2y) + ); + } + } + } + } + cursorX += advance * scale7; + } + return $activePaintApi; + } +}; +function normalizeAngle(angle3) { + return (angle3 % 360 + 360) % 360; +} +var turtleAngle = 270; +var turtleDown = false; +var turtlePosition = { x: 0, y: 0 }; +var formsToClear = []; +var backgroundColor3D = [0, 0, 0, 255]; +var formsSent = {}; +function form(forms, cam2 = $commonApi.system.fps.doll.cam, { cpu, background } = { + cpu: true, + keep: true, + background: backgroundColor3D +}) { + if (forms == null || forms?.length === 0) return; + if (cpu === true) { + if (formReframing) { + cam2.resize(); + formReframing = false; + } + if (Array.isArray(forms)) + forms.filter(Boolean).forEach((form2) => form2.graph(cam2)); + else forms.graph(cam2); + } else { + if (!Array.isArray(forms)) forms = [forms]; + formsToClear.forEach((id) => delete formsSent[id]); + formsToClear.length = 0; + const formsToSend = []; + forms.filter(Boolean).forEach((form2) => { + if (formsSent[form2.uid] === void 0 && form2.vertices.length > 0) { + formsToSend.push(form2); + formsSent[form2.uid] = form2; + form2.gpuVerticesSent = form2.vertices.length; + form2.gpuReset = false; + } else { + let msgCount = 0; + if (form2.gpuRecolored === true) { + formsToSend.push({ + update: "form:color", + uid: form2.uid, + color: form2.color + }); + msgCount += 1; + form2.gpuRecolored = false; + } + if (form2.gpuTransformed === true) { + formsToSend.push({ + update: "form:transform", + uid: form2.uid, + rotation: form2.rotation, + position: form2.position, + scale: form2.scale + }); + form2.gpuTransformed = false; + msgCount += 1; + } + if (form2.vertices.length > form2.gpuVerticesSent || form2.gpuReset) { + formsToSend.push({ + update: "form:buffered:add-vertices", + uid: form2.uid, + reset: form2.gpuReset, + vertices: form2.vertices.slice(form2.gpuVerticesSent), + length: form2.vertices.length, + // TODO: These aren't being used anymore / they are generated from the GPU. + pastLength: form2.gpuVerticesSent + }); + form2.gpuReset = false; + form2.gpuVerticesSent = form2.vertices.length; + msgCount += 1; + } + if (msgCount === 0) { + formsToSend.push({ + update: "form:touch", + uid: form2.uid + }); + } + } + }); + if (formsToSend.length === 0) return; + if (background !== backgroundColor3D) { + send({ + type: "gpu-event", + content: { + type: "background-change", + content: background + } + }); + backgroundColor3D = background; + } + send({ + type: "forms", + content: { + forms: formsToSend, + cam: { + position: cam2.position, + rotation: cam2.rotation, + scale: cam2.scale, + fov: cam2.fov, + near: cam2.near, + far: cam2.far + }, + color: color() + } + }); + } +} +var codeCache = { + memory: /* @__PURE__ */ new Map(), + // code -> @handle/slug resolution cache + reverseMemory: /* @__PURE__ */ new Map(), + // @handle/slug -> code reverse lookup cache + async resolve(code2) { + if (this.memory.has(code2)) { + return this.memory.get(code2); + } + const response = await fetch(`/api/painting-code?code=${code2}`); + if (!response.ok) { + throw new Error(`Code #${code2} not found`); + } + const data = await response.json(); + let path; + if (data.handle && data.handle !== "anon") { + path = `@${data.handle}/${data.slug}`; + } else { + path = data.slug; + } + this.memory.set(code2, path); + this.reverseMemory.set(path, code2); + return path; + }, + // Store a mapping from timestamp to code (called by profile.mjs and other pieces) + storeCode(slug, handle2, code2) { + if (!slug || !code2) return; + const normalizedHandle = handle2?.replace(/^@+/, ""); + const key = normalizedHandle ? `@${normalizedHandle}/${slug}` : slug; + this.reverseMemory.set(key, code2); + this.memory.set(code2, key); + }, + // Get code from timestamp+handle + getCode(slug, handle2) { + const normalizedHandle = handle2?.replace(/^@+/, ""); + const key = normalizedHandle ? `@${normalizedHandle}/${slug}` : slug; + return this.reverseMemory.get(key); + } +}; +if (typeof window !== "undefined") { + window.acCodeCacheStats = () => { + console.log("\u{1F511} Code resolution cache stats:", { + cacheSize: codeCache.memory.size, + codes: Array.from(codeCache.memory.entries()).map(([code2, path]) => ({ + code: `#${code2}`, + resolvedTo: path + })) + }); + }; +} +async function prefetchPicture(code2) { + const originalCode = code2; + let actualCode = code2; + if (code2.startsWith("#")) { + actualCode = code2.slice(1); + } + if (paintings[code2] === "fetching") return; + if (paintings[code2] && paintings[code2] !== "fetching") { + return; + } + if (imageCache.has(code2)) { + paintings[code2] = imageCache.get(code2); + return; + } + if (imageCache.isCacheable(code2)) { + const cachedImage = await imageCache.loadFromPersistent(code2); + if (cachedImage) { + paintings[code2] = cachedImage; + return; + } + } + const globalScope = (function() { + if (typeof globalThis !== "undefined") return globalThis; + if (typeof self !== "undefined") return self; + if (typeof window !== "undefined") return window; + return {}; + })(); + if (globalScope.acEMBEDDED_PAINTING_BITMAPS) { + const embeddedBitmap = globalScope.acEMBEDDED_PAINTING_BITMAPS[code2] || globalScope.acEMBEDDED_PAINTING_BITMAPS["#" + actualCode] || globalScope.acEMBEDDED_PAINTING_BITMAPS[actualCode]; + if (embeddedBitmap) { + console.log("\u{1F5BC}\uFE0F Loaded from embedded bundle:", code2); + paintings[code2] = embeddedBitmap; + return; + } + } + paintings[code2] = "fetching"; + const cacheAndStore = async (img) => { + paintings[code2] = img; + if (imageCache.isCacheable(code2)) { + await imageCache.set(code2, img); + } + }; + if (actualCode.startsWith("http")) { + $commonApi.get.picture(actualCode).then(({ img }) => cacheAndStore(img)).catch(() => { + delete paintings[code2]; + }); + } else if (actualCode.includes("/")) { + const [author, paintingSlug] = actualCode.split("/"); + $commonApi.get.painting(paintingSlug).by(author).then(({ img }) => cacheAndStore(img)).catch(() => { + delete paintings[code2]; + }); + } else if (actualCode.match(/^\d{4}\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{2}\.\d{3}$/)) { + console.warn(`\u26A0\uFE0F Painting timestamp without handle: ${actualCode}`); + delete paintings[code2]; + } else if (actualCode.length === 3 && actualCode.match(/^[a-zA-Z0-9]{3}$/)) { + $commonApi.get.painting(actualCode).by().then(({ img }) => cacheAndStore(img)).catch(() => { + delete paintings[code2]; + }); + } else { + $commonApi.get.painting(actualCode).by().then(({ img }) => cacheAndStore(img)).catch(() => { + delete paintings[code2]; + }); + } +} +var $paintApiUnwrapped = { + // Turtle graphics: 🐢 crawl, left, right, up, down, goto, face + // Move the turtle forward based on angle, wrapping at screen edges. + crawl: (steps = 1) => { + const w = screen.width, h = screen.height; + const x2 = turtlePosition.x + steps * cos4(radians(turtleAngle)); + const y2 = turtlePosition.y + steps * sin5(radians(turtleAngle)); + const wx2 = (x2 % w + w) % w; + const wy2 = (y2 % h + h) % h; + const wrapped = Math.abs(wx2 - x2) > 0.5 || Math.abs(wy2 - y2) > 0.5; + if (turtleDown && !wrapped) { + line(turtlePosition.x, turtlePosition.y, wx2, wy2); + } + turtlePosition.x = wx2; + turtlePosition.y = wy2; + return { x: turtlePosition.x, y: turtlePosition.y }; + }, + // Turn turtle left n degrees. + left: (d2 = 1) => { + turtleAngle = normalizeAngle(turtleAngle - d2); + return turtleAngle; + }, + // Turn turtle right n degrees. + right: (d2 = 1) => { + turtleAngle = normalizeAngle(turtleAngle + d2); + return turtleAngle; + }, + // Turtle pen up. + up: () => { + turtleDown = false; + }, + // Turtle pen down. + down: () => { + turtleDown = true; + }, + // Teleport the turtle position (wraps to screen bounds). + goto: (x = screen.width / 2, y = screen.height / 2) => { + const w = screen.width, h = screen.height; + const wx = (x % w + w) % w; + const wy = (y % h + h) % h; + if (turtleDown) { + line(turtlePosition.x, turtlePosition.y, wx, wy); + } + turtlePosition.x = wx; + turtlePosition.y = wy; + return { x: turtlePosition.x, y: turtlePosition.y }; + }, + face: (angle3 = 0) => { + turtleAngle = normalizeAngle(angle3); + return turtleAngle; + }, + // Shortcuts + // l: graph.line, + // i: ink, + // Defaults + blend: blendMode, + setEraseTarget, + page: function() { + if (arguments[0]?.api) { + } + const buf = arguments[0]; + if (buf === _mainScreenObject && _trueScreenPixels) { + buf.pixels = _trueScreenPixels; + buf.width = _trueScreenWidth; + buf.height = _trueScreenHeight; + } else { + $activePaintApi.screen.width = buf.width; + $activePaintApi.screen.height = buf.height; + $activePaintApi.screen.pixels = buf.pixels; + } + setBuffer(buf); + }, + edit: changePixels, + // Edit pixels by pasing a callback. + // Color + ink: function() { + const out = ink(...arguments); + twoDCommands2.push(["ink", ...out]); + }, + ink2: function() { + const out = ink2(...arguments); + twoDCommands2.push(["ink2", ...out || []]); + }, + // inkrn: () => graph.c.slice(), // Get current inkColor. + // 2D + wipe: function() { + const cc2 = c.slice(0); + const preserveFadeAlpha2 = getPreserveFadeAlpha?.() || false; + if (!preserveFadeAlpha2 && typeof setPreserveFadeAlpha === "function") { + setPreserveFadeAlpha(true); + } + if (arguments.length === 0) { + ink(255, 255, 255); + } else { + ink(...arguments); + } + if ($commonApi.webgpu.enabled) { + send({ + type: "webgpu-command", + content: { + type: "clear", + color: c.slice(0) + } + }); + ink(...cc2); + if (!preserveFadeAlpha2 && typeof setPreserveFadeAlpha === "function") { + setPreserveFadeAlpha(false); + } + return; + } + clear(); + twoDCommands2.push(["wipe", ...c]); + ink(...cc2); + if (!preserveFadeAlpha2 && typeof setPreserveFadeAlpha === "function") { + setPreserveFadeAlpha(false); + } + if (this.kidlispInstance?.layer0) { + this.kidlispInstance.layer0.pixels.fill(0); + } + }, + // Set background fill color for reframe operations (especially for KidLisp pieces) + backgroundFill: function(color3) { + const cc2 = c.slice(0); + if (arguments.length === 0) { + ink(255, 255, 255); + } else { + ink(...arguments); + } + clear(); + twoDCommands2.push(["backgroundFill", ...c]); + ink(...cc2); + }, + // Erase the screen. + clear: function() { + const cc2 = c.slice(0); + ink(0, 0); + clear(); + ink(...cc2); + }, + copy: copy7, + paste: function paste2() { + if (typeof arguments[0] === "string") { + const code2 = arguments[0]; + if (paintings[code2] && paintings[code2] !== "fetching") { + paste(paintings[code2], ...[...arguments].slice(1)); + } else if (paintings[code2] !== "fetching") { + prefetchPicture(code2); + } + } else { + paste(...arguments); + } + }, + // Similar to paste, but always draws from the center of x, y. + // Has partial support for {center, bottom}. 24.02.15.12.19 + stamp: function stamp2() { + let params; + function makeLayout() { + if (typeof params[0] === "object") { + const layout = params[0]; + if (layout.center === "x") { + params[0] = $activePaintApi.screen.width / 2; + } else { + params[0] = 0; + } + if (layout.bottom !== void 0) { + params[1] = $activePaintApi.screen.height - layout.bottom - paintings[code].height / 2; + } else { + params[1] = 0; + } + } + } + if (typeof arguments[0] === "string") { + const code2 = arguments[0]; + params = [...arguments].slice(1); + if (paintings[code2] && paintings[code2] !== "fetching") { + makeLayout(); + stamp(paintings[code2], ...params); + } else if (paintings[code2] !== "fetching") { + prefetchPicture(code2); + } + } else { + params = [...arguments].slice(1); + if (params.length === 0) params = [0, 0]; + makeLayout(); + stamp(arguments[0], ...params); + } + }, + pixel, + plot: function() { + if (arguments.length === 1) { + plot(arguments[0].x, arguments[0].y); + } else { + plot(...arguments); + } + }, + // TODO: Should this be renamed to set? + flood, + compositeLayers, + // GPU-accelerated multi-layer compositing + batchedEffects, + // GPU-accelerated batched effects (zoom+scroll+contrast+brightness in one pass) + point: function() { + const out = point(...arguments); + twoDCommands2.push(["point", ...out]); + }, + line: function() { + if ($commonApi.webgpu.enabled && arguments.length >= 4) { + const [x1, y1, x2, y2] = arguments; + const color3 = c.slice(0); + send({ + type: "webgpu-command", + content: { + type: "line", + x1, + y1, + x2, + y2, + color: color3 + } + }); + return; + } + return line(...arguments); + }, + lineAngle, + pline, + // Set the alpha of every non-transparent pixel in a buffer to a uniform value. + // Useful for per-stroke alpha — must be called after drawing on the buffer. + setBufferAlpha: function(buffer, alpha) { + if (!buffer || !buffer.pixels) return; + const target = Math.round(alpha * 255); + const px = buffer.pixels; + for (let i2 = 3; i2 < px.length; i2 += 4) { + if (px[i2] > 0) px[i2] = target; + } + }, + pppline: pixelPerfectPolyline, + oval, + circle, + pie, + tri, + poly, + box, + shape, + grid, + draw, + setShowClippedWireframes, + clearWireframeBuffer, + drawBufferedWireframes, + getRenderStats, + printLine, + // TODO: This is kind of ugly and I need a state machine for type. + form, + pan, + unpan, + savepan, + loadpan, + mask, + unmask, + steal, + putback, + skip, + scroll, + flip: flip2, + spin, + sort, + zoom, + suck, + blur: function(radius = 1) { + return blur(radius); + }, + sharpen: function(strength = 1) { + return sharpen(strength); + }, + invert: function() { + return invert4(); + }, + contrast, + shear, + resetScrollState: function() { + return resetScrollState(); + }, + noise16, + noise16DIGITPAIN, + noise16Aesthetic, + noise16Sotce, + noiseTinted, + // 🎨 Alpha-blended paste for crossfade compositing + pasteWithAlpha: function pasteWithAlpha(source, x, y, alpha) { + if (!source || !source.pixels || alpha <= 0) return; + const dst = $activePaintApi.screen; + if (!dst || !dst.pixels) return; + const srcPixels = source.pixels; + const dstPixels = dst.pixels; + const sw = source.width, sh = source.height; + const dw = dst.width, dh = dst.height; + if (alpha >= 255) { + $activePaintApi.paste(source, x, y); + return; + } + const alphaFactor = alpha / 255; + for (let sy = 0; sy < sh; sy++) { + const dy = sy + y; + if (dy < 0 || dy >= dh) continue; + for (let sx = 0; sx < sw; sx++) { + const dx = sx + x; + if (dx < 0 || dx >= dw) continue; + const si = (sy * sw + sx) * 4; + const di = (dy * dw + dx) * 4; + let srcA = srcPixels[si + 3]; + if (srcA === 0 && (srcPixels[si] || srcPixels[si + 1] || srcPixels[si + 2])) { + srcA = 255; + } + if (srcA === 0) continue; + const ea = srcA * alphaFactor + 1 | 0; + const inv = 256 - ea; + dstPixels[di] = ea * srcPixels[si] + inv * dstPixels[di] >> 8; + dstPixels[di + 1] = ea * srcPixels[si + 1] + inv * dstPixels[di + 1] >> 8; + dstPixels[di + 2] = ea * srcPixels[si + 2] + inv * dstPixels[di + 2] >> 8; + dstPixels[di + 3] = Math.min(255, dstPixels[di + 3] + ea); + } + } + }, + // 🎯 Simplified KidLisp integration using global singleton instance + kidlisp: function kidlisp(x = 0, y = 0, width2, height2, source, options = {}) { + if (!globalKidLispInstance2) { + initializeGlobalKidLisp($activePaintApi); + } + if (!width2) width2 = $activePaintApi.screen.width; + if (!height2) height2 = $activePaintApi.screen.height; + const { noCache = false, accumulate: forceAccumulate = false, noPaste = false } = options; + try { + if (!globalKidLispInstance2.persistentPaintings) { + globalKidLispInstance2.persistentPaintings = /* @__PURE__ */ new Map(); + } + let resolvedSource = source; + if (source && source.startsWith && source.startsWith("$") && source.length > 1) { + const cacheId = source.slice(1); + if (!globalKidLispInstance2.singletonDollarCodeCache) { + globalKidLispInstance2.singletonDollarCodeCache = /* @__PURE__ */ new Map(); + } + if (!globalKidLispInstance2.loadingDollarCodes) { + globalKidLispInstance2.loadingDollarCodes = /* @__PURE__ */ new Set(); + } + if (globalKidLispInstance2.singletonDollarCodeCache.has(cacheId)) { + resolvedSource = globalKidLispInstance2.singletonDollarCodeCache.get(cacheId); + } else if (globalKidLispInstance2.loadingDollarCodes.has(cacheId)) { + return null; + } else { + console.log(`\u{1F3AF} Loading ${source} for first time...`); + globalKidLispInstance2.loadingDollarCodes.add(cacheId); + getCachedCodeMultiLevel(cacheId).then((loadedSource) => { + if (loadedSource) { + console.log(`\u{1F3AF} \u2705 Loaded source for ${cacheId}: ${loadedSource.length} chars`); + globalKidLispInstance2.singletonDollarCodeCache.set(cacheId, loadedSource); + } else { + console.warn(`\u274C Could not load source for ${cacheId}`); + } + }).catch((error) => { + console.error(`\u274C Error loading ${cacheId}:`, error); + }).finally(() => { + console.log(`\u{1F3AF} Finished loading attempt for ${cacheId}`); + globalKidLispInstance2.loadingDollarCodes.delete(cacheId); + }); + return null; + } + } + if (!resolvedSource || typeof resolvedSource !== "string") { + return null; + } + const colorWords = ["red", "blue", "green", "yellow", "purple", "orange", "cyan", "magenta", "black", "white", "gray", "grey", "brown", "pink"]; + const firstWord = resolvedSource.trim().split(/\s+/)[0]?.toLowerCase(); + const startsWithColor = colorWords.includes(firstWord); + const accumulate = forceAccumulate || startsWithColor; + const accumulateKey = accumulate ? `auto_${x}_${y}_${width2}_${height2}_${firstWord}` : null; + let regionKey; + let contentKey; + if (accumulate && accumulateKey) { + regionKey = `${x},${y},${width2},${height2}:ACCUMULATE:${accumulateKey}`; + contentKey = `ACCUMULATE:auto_${x}_${y}_${firstWord}`; + } else { + regionKey = `${x},${y},${width2},${height2}:${resolvedSource}`; + contentKey = resolvedSource; + } + let resizedPreviousPainting = null; + let resizedPreviousKey = null; + if (!globalKidLispInstance2.persistentPaintings.has(regionKey)) { + for (const [key, val] of globalKidLispInstance2.persistentPaintings) { + if (key !== regionKey && key.endsWith(`:${contentKey}`)) { + resizedPreviousPainting = val; + resizedPreviousKey = key; + break; + } + } + } + const hasFrameDependentCommands = /\(\s*ink\s*\)|\(\s*color\s*\)|\(\s*rand\s*\)/.test(resolvedSource); + const shouldReset = resolvedSource.includes("wipe") && !accumulate; + const animationCommands = ["rainbow", "zebra", "time", "random", "noise", "clock", "scroll", "zoom", "flip", "contrast", "fade"]; + const hasTimingCommands = /\d+\.?\d*s\b/.test(resolvedSource); + const hasAnimationCommands = animationCommands.some((cmd) => resolvedSource.includes(cmd)); + const isDollarCode = source && source.startsWith && source.startsWith("$"); + const needsFreshExecution = !accumulate && (noCache || isDollarCode && !hasTimingCommands || hasAnimationCommands && !hasTimingCommands); + let painting2; + if (shouldReset || needsFreshExecution || !globalKidLispInstance2.persistentPaintings.has(regionKey)) { + const reason = shouldReset ? "wipe command" : needsFreshExecution ? "animation content" : "first time"; + const previousPainting = !shouldReset && globalKidLispInstance2.persistentPaintings.has(regionKey) ? globalKidLispInstance2.persistentPaintings.get(regionKey) : !shouldReset ? resizedPreviousPainting : null; + if (resizedPreviousKey && resizedPreviousPainting) { + globalKidLispInstance2.persistentPaintings.delete(resizedPreviousKey); + } + painting2 = $activePaintApi.painting(width2, height2, (api) => { + if (previousPainting && needsFreshExecution && !shouldReset) { + api.paste(previousPainting); + } + globalKidLispInstance2.setAPI(api); + if (!api.clock) { + api.clock = { time: () => /* @__PURE__ */ new Date() }; + } + const originalZoom = api.zoom; + const originalScroll = api.scroll || $activePaintApi.scroll; + api.zoom = (...args) => { + if (originalZoom && typeof originalZoom === "function") { + return originalZoom(...args); + } + }; + api.scroll = (dx, dy) => { + if (originalScroll && typeof originalScroll === "function") { + return originalScroll(dx, dy); + } else if ($activePaintApi.scroll && typeof $activePaintApi.scroll === "function") { + return $activePaintApi.scroll(dx, dy); + } + }; + if (!api.num) { + api.num = $activePaintApi.num || { + random: () => Math.random(), + randInt: (min10, max9) => Math.floor(Math.random() * (max9 - min10 + 1)) + min10, + rainbow, + // Use the actual rainbow function from num.mjs + zebra + // Use the actual zebra function from num.mjs + }; + } + if (!api.color) { + api.color = $activePaintApi.color || { + random: () => [ + Math.floor(Math.random() * 256), + Math.floor(Math.random() * 256), + Math.floor(Math.random() * 256) + ] + }; + } + const cssColors3 = cssColors2; + if (cssColors3) { + Object.keys(cssColors3).forEach((colorName) => { + if (!api[colorName]) { + api[colorName] = () => cssColors3[colorName]; + } + }); + } + if (!api.rainbow) { + api.rainbow = () => rainbow(); + } + if (!api.zebra) { + api.zebra = () => zebra(); + } + globalKidLispInstance2.currentInk = null; + const originalInEmbedPhase = globalKidLispInstance2.inEmbedPhase; + const originalIsNestedInstance = globalKidLispInstance2.isNestedInstance; + const originalEmbeddedLayers = globalKidLispInstance2.embeddedLayers; + const originalIsEmbeddedContext = globalKidLispInstance2.isEmbeddedContext; + globalKidLispInstance2.isEmbeddedContext = true; + const hasTimingExpressions = /\d+\.?\d*s(\.\.\.|!)?/.test(resolvedSource); + const hasScrollZoom = /\(\s*(scroll|zoom|flip)\s/.test(resolvedSource); + if (hasTimingExpressions) { + globalKidLispInstance2.embeddedLayers = null; + } else if (hasScrollZoom) { + globalKidLispInstance2.inEmbedPhase = false; + globalKidLispInstance2.isNestedInstance = false; + globalKidLispInstance2.embeddedLayers = null; + } else { + globalKidLispInstance2.inEmbedPhase = true; + globalKidLispInstance2.isNestedInstance = true; + globalKidLispInstance2.embeddedLayers = null; + } + executeLispCode(resolvedSource, api, false); + globalKidLispInstance2.inEmbedPhase = originalInEmbedPhase; + globalKidLispInstance2.isNestedInstance = originalIsNestedInstance; + globalKidLispInstance2.embeddedLayers = originalEmbeddedLayers; + globalKidLispInstance2.isEmbeddedContext = originalIsEmbeddedContext; + globalKidLispInstance2.setAPI($activePaintApi); + }); + globalKidLispInstance2.persistentPaintings.set(regionKey, painting2); + } else { + const existingPainting = globalKidLispInstance2.persistentPaintings.get(regionKey); + painting2 = $activePaintApi.painting(width2, height2, (api) => { + api.paste(existingPainting); + globalKidLispInstance2.setAPI(api); + if (!api.clock) { + api.clock = { time: () => /* @__PURE__ */ new Date() }; + } + const originalZoom = api.zoom; + const originalScroll = api.scroll || $activePaintApi.scroll; + api.zoom = (...args) => { + if (originalZoom && typeof originalZoom === "function") { + return originalZoom(...args); + } + }; + api.scroll = (dx, dy) => { + if (originalScroll && typeof originalScroll === "function") { + return originalScroll(dx, dy); + } else if ($activePaintApi.scroll && typeof $activePaintApi.scroll === "function") { + return $activePaintApi.scroll(dx, dy); + } + }; + if (!api.num) { + api.num = $activePaintApi.num || { + random: () => Math.random(), + randInt: (min10, max9) => Math.floor(Math.random() * (max9 - min10 + 1)) + min10, + rainbow, + // Use the actual rainbow function from num.mjs + zebra + // Use the actual zebra function from num.mjs + }; + } + if (!api.color) { + api.color = $activePaintApi.color || { + random: () => [ + Math.floor(Math.random() * 256), + Math.floor(Math.random() * 256), + Math.floor(Math.random() * 256) + ] + }; + } + const cssColors3 = cssColors2; + if (cssColors3) { + Object.keys(cssColors3).forEach((colorName) => { + if (!api[colorName]) { + api[colorName] = () => cssColors3[colorName]; + } + }); + } + if (!api.rainbow) { + api.rainbow = () => rainbow(); + } + if (!api.zebra) { + api.zebra = () => zebra(); + } + globalKidLispInstance2.currentInk = null; + const originalInEmbedPhase = globalKidLispInstance2.inEmbedPhase; + const originalIsNestedInstance = globalKidLispInstance2.isNestedInstance; + const originalEmbeddedLayers = globalKidLispInstance2.embeddedLayers; + const originalIsEmbeddedContext = globalKidLispInstance2.isEmbeddedContext; + globalKidLispInstance2.isEmbeddedContext = true; + const hasTimingExpressions = /\d+\.?\d*s(\.\.\.|!)?/.test(resolvedSource); + const hasScrollZoom = /\(\s*(scroll|zoom|flip)\s/.test(resolvedSource); + if (hasTimingExpressions) { + globalKidLispInstance2.embeddedLayers = null; + } else if (hasScrollZoom) { + globalKidLispInstance2.inEmbedPhase = false; + globalKidLispInstance2.isNestedInstance = false; + globalKidLispInstance2.embeddedLayers = null; + } else { + globalKidLispInstance2.inEmbedPhase = true; + globalKidLispInstance2.isNestedInstance = true; + globalKidLispInstance2.embeddedLayers = null; + } + executeLispCode(resolvedSource, api, true); + globalKidLispInstance2.inEmbedPhase = originalInEmbedPhase; + globalKidLispInstance2.isNestedInstance = originalIsNestedInstance; + globalKidLispInstance2.embeddedLayers = originalEmbeddedLayers; + globalKidLispInstance2.isEmbeddedContext = originalIsEmbeddedContext; + globalKidLispInstance2.setAPI($activePaintApi); + }); + if (!noCache || !needsFreshExecution) { + globalKidLispInstance2.persistentPaintings.set(regionKey, painting2); + } + } + if (!noPaste && $activePaintApi.paste && painting2) { + $activePaintApi.paste(painting2, x, y); + } + return painting2; + } catch (error) { + console.error("\u{1F6AB} Simple KidLisp error:", error); + if (!projectionMode) { + const originalInk = $activePaintApi.ink(); + $activePaintApi.ink(255, 0, 0); + if ($activePaintApi.write) { + $activePaintApi.write("KidLisp Error", x, y); + } + $activePaintApi.ink(originalInk); + } + return null; + } + }, + // 🎵 Update KidLisp audio globals (accessible to all pieces) + updateKidLispAudio: updateKidLispAudio2 + // glaze: ... +}; +if (typeof globalThis !== "undefined") { + globalThis.$paintApiUnwrapped = $paintApiUnwrapped; + globalThis.wipe = $paintApiUnwrapped.wipe; +} +function executeLispCode(source, api, isAccumulating = false) { + try { + const shouldTrace = $commonApi?.kidlispEnableTrace; + if (shouldTrace) { + enableKidlispTrace(); + clearExecutionTrace(); + } else { + disableKidlispTrace(); + } + globalKidLispInstance2.firstLineColor = null; + globalKidLispInstance2.currentSource = source; + globalKidLispInstance2.parse(source); + if (globalKidLispInstance2.ast) { + globalKidLispInstance2.detectFirstLineColor(); + if (globalKidLispInstance2.firstLineColor && !isAccumulating) { + api.wipe(globalKidLispInstance2.firstLineColor); + } + if (!api.clock) { + api.clock = { time: () => /* @__PURE__ */ new Date() }; + } + if (typeof globalKidLispInstance2.frameCount !== "number") { + globalKidLispInstance2.frameCount = 0; + } + globalKidLispInstance2.frameCount++; + const result = globalKidLispInstance2.evaluate(globalKidLispInstance2.ast, api, globalKidLispInstance2.localEnv); + if (shouldTrace && globalKidLispInstance2.frameCount === 1) { + postExecutionTrace(); + } + } else { + } + } catch (evalError) { + console.error("\u{1F6AB} KidLisp evaluation error:", evalError); + if (!projectionMode) { + api.wipe(60, 0, 0); + api.ink(255, 255, 255); + if (api.write) { + api.write("KidLisp Eval Error", 5, 15); + } + } + } +} +var $activePaintApi; +var paintingAPIid = 0n; +var twoDCommands2 = []; +twoD(twoDCommands2); +var Painting = class _Painting { + #layers = []; + #layer = 0; + api = {}; + inkrn; + // panrn; // In order for this feature to work, translation needs to be stored outside of graph / captured differently? + constructor() { + Object.assign(this.api, $paintApi); + const p = this; + p.api.index = paintingAPIid; + paintingAPIid += 1n; + p.inkrn = c.slice(); + p.pagern = getBuffer(); + function globals(k, args) { + if (k === "page") p.pagern = args[0]; + } + for (const k in $paintApiUnwrapped) { + if (typeof $paintApiUnwrapped[k] === "function") { + p.api[k] = function() { + if (k === "ink") { + $paintApiUnwrapped[k](...arguments); + p.inkrn = c.slice(); + } else { + globals(k, arguments); + } + if (notArray(p.#layers[p.#layer])) p.#layers[p.#layer] = []; + const callArgs = arguments; + p.#layers[p.#layer].push([ + k, + () => { + if (k === "ink") { + $paintApiUnwrapped[k](...callArgs); + p.inkrn = c.slice(); + } else { + globals(k, callArgs); + $paintApiUnwrapped[k](...callArgs); + } + } + ]); + return p.api; + }; + } + } + if (!p.api.box && typeof box === "function") { + p.api.box = function() { + const callArgs = arguments; + if (notArray(p.#layers[p.#layer])) p.#layers[p.#layer] = []; + p.#layers[p.#layer].push([ + "box", + () => box(...callArgs) + ]); + return p.api; + }; + } + if (!p.api.line && typeof line === "function") { + p.api.line = function() { + const callArgs = arguments; + if (notArray(p.#layers[p.#layer])) p.#layers[p.#layer] = []; + p.#layers[p.#layer].push([ + "line", + () => line(...callArgs) + ]); + return p.api; + }; + } + if (!p.api.wipe && typeof $paintApiUnwrapped.wipe === "function") { + p.api.wipe = function() { + const callArgs = arguments; + if (notArray(p.#layers[p.#layer])) p.#layers[p.#layer] = []; + p.#layers[p.#layer].push([ + "wipe", + () => $paintApiUnwrapped.wipe(...callArgs) + ]); + return p.api; + }; + } + if (!p.api.ink && typeof $paintApiUnwrapped.ink === "function") { + p.api.ink = function() { + $paintApiUnwrapped.ink(...arguments); + p.inkrn = c.slice(); + return p.api; + }; + } + this.api.layer = function(n2) { + p.#layer = n2; + return p.api; + }; + this.api.painting = function painting2() { + const oldActivePaintApi = $activePaintApi; + const painting3 = new _Painting(); + $activePaintApi = painting3.api; + $activePaintApi.screen = { + width: arguments[0], + height: arguments[1] + // pix gets added in the makeBuffer... + }; + const pix = makeBuffer(...arguments, painting3, $activePaintApi); + $activePaintApi = oldActivePaintApi; + return pix; + }; + this.api.pixel = function() { + return pixel(...arguments); + }; + this.api.inkrn = () => this.inkrn; + this.api.pagern = () => this.pagern; + this.api.abstract = { bresenham: void 0 }; + } + // Paints every layer. + //async paint(immediate = false) { + paint(immediate = false) { + for (let layer of this.#layers) { + layer ||= []; + for (const paint2 of layer) { + paint2[1](); + } + } + this.#layers.length = 0; + this.#layer = 0; + } +}; +var painting = new Painting(); +var glazeAfterReframe; +var lastGap = 8; +$commonApi.resolution = function(width2, height2 = width2, gap = 8) { + if (typeof width2 === "object") { + const props = width2; + height2 = props.height; + width2 = props.width || props.height; + gap = props.gap === 0 ? 0 : props.gap || 8; + } + if (typeof width2 === "number" && typeof height2 === "number") { + width2 = round7(width2); + height2 = round7(height2); + } + if (screen.width === width2 && screen.height === height2 && gap === lastGap) + return; + lastGap = gap; + painting.paint(); + if (width2 === void 0 && height2 === void 0) { + width2 = round7(currentDisplay.width / currentDisplay.subdivisions); + height2 = round7(currentDisplay.height / currentDisplay.subdivisions); + reframe = { + width: void 0, + height: void 0, + gap + }; + } else { + reframe = { width: width2, height: height2, gap }; + } + const oldScreen = { + width: screen.width, + height: screen.height, + pixels: screen.pixels + }; + screen.width = width2; + screen.height = height2; + depthBuffer.length = screen.width * screen.height; + depthBuffer.fill(Number.MAX_VALUE); + writeBuffer.length = 0; + screen.pixels = new Uint8ClampedArray(screen.width * screen.height * 4); + screen.pixels.fill(255); + setBuffer(screen); + paste({ + painting: oldScreen, + crop: new Box(0, 0, oldScreen.width, oldScreen.height) + }); + if (width2 > oldScreen.width || height2 > oldScreen.height) { + const persistentColor = getPersistentFirstLineColor(); + console.log("\u{1F3A8} Resolution function: Screen expansion detected"); + console.log("\u{1F3A8} Resolution function: Old screen:", oldScreen.width, "x", oldScreen.height); + console.log("\u{1F3A8} Resolution function: New screen:", width2, "x", height2); + console.log("\u{1F3A8} Resolution function: Persistent color found:", persistentColor); + let fillSpec = resolveBackgroundFillSpec(persistentColor); + if (!fillSpec && typeof globalKidLispInstance2?.getBackgroundFillColor === "function") { + const fallbackColor = globalKidLispInstance2.getBackgroundFillColor(); + console.log("\u{1F3A8} Post-reframe: Fallback background candidate:", fallbackColor); + fillSpec = resolveBackgroundFillSpec(fallbackColor); + } + if (fillSpec) { + if (fillSpec.type === "fade") { + console.log("\u{1F3A8} Post-reframe: Applying fade background to expansions"); + fillExpandedWithFadePixels( + screen, + width2, + height2, + oldScreen.width, + oldScreen.height, + fillSpec.fadeInfo + ); + } else { + console.log("\u{1F3A8} Post-reframe: Filling expansions with solid color", fillSpec.rgba); + fillExpandedWithSolidPixels( + screen, + width2, + height2, + oldScreen.width, + oldScreen.height, + fillSpec.rgba + ); + } + } else { + console.log("\u{1F3A8} Post-reframe: No background fill spec available for expansion"); + } + } else { + console.log("\u{1F3A8} Resolution function: No screen expansion needed"); + } +}; +var Content = class { + nodes = []; + #id = 0; + constructor() { + } + // Make a request to add new content to the DOM. + add(content) { + this.nodes.push({ id: this.#id }); + this.#id = this.nodes.length - 1; + send({ type: "content-create", content: { id: this.#id, content } }); + return this.nodes[this.nodes.length - 1]; + } + remove() { + send({ type: "content-remove" }); + this.nodes = []; + this.#id = 0; + } + receive({ id, response }) { + this.nodes[id].response = response; + } + //update({ id, msg }) { + // send({ type: "content-update", content: { id, msg } }); + //} +}; +var Microphone = class { + amplitude = 0; + waveform = []; + pitch = 0; + connected = false; + // Flips to true on a callback message from `bios`. + recording = false; + recordingPromise; + permission = ""; + permissionPending = false; + permissionChecked = false; + recordingBuffer = null; + // Live recording buffer for preview + requestPermission() { + if (this.permissionPending || this.permissionChecked) return this; + this.permissionPending = true; + send({ type: "microphone-permission-request" }); + return this; + } + // Note: can send `{monitor: true}` in `options` for audio feedback. + connect(options) { + send({ type: "microphone", content: options }); + return this; + } + disconnect() { + send({ type: "microphone", content: { detach: true } }); + } + poll() { + send({ type: "get-microphone-amplitude" }); + send({ type: "get-microphone-waveform" }); + send({ type: "get-microphone-pitch" }); + if (this.recording) { + send({ type: "get-microphone-recording-buffer" }); + } + } + // Start recording. + rec() { + this.recording = true; + send({ type: "microphone-record" }); + } + // Stop recording. + cut() { + const prom = new Promise((resolve, reject) => { + this.recordingPromise = { resolve, reject }; + }); + send({ type: "microphone-cut" }); + this.recording = false; + return prom; + } +}; +var Speaker = class { + waveforms = { left: [], right: [] }; + amplitudes = { left: [], right: [] }; + frequencies = { left: [], right: [] }; + beat = { detected: false, strength: 0, timestamp: 0 }; + // Add beat detection data + poll() { + send({ type: "get-waveforms" }); + send({ type: "get-amplitudes" }); + send({ type: "get-frequencies" }); + } +}; +var sound; +var soundId = 0n; +var soundTime; +sound = { + bpm: void 0, + sounds: [], + bubbles: [], + farts: [], + kills: [] +}; +var speaker = new Speaker(); +var microphone = new Microphone(); +var gameboy = { + frame: null, + // Current frame data (Uint8ClampedArray) + width: 160, + // Game Boy screen width + height: 144, + // Game Boy screen height + romName: null, + // Currently loaded ROM name + isPlaying: false + // Whether emulator is running +}; +async function resolveUserCode(slug) { + if (!slug || slug.length !== 9 || !slug.startsWith("ac")) return null; + if (!/^ac[0-9]{2}[a-z]{5}$/.test(slug)) return null; + try { + const res = await fetch(`/api/permahandle/${slug}`); + if (!res.ok) return null; + const data = await res.json(); + return data.handle || null; + } catch { + return null; + } +} +var originalHost; +var firstLoad = true; +var notice; +var noticeTimer; +var noticeColor; +var noticeOpts; +var overlay2D = null; +async function load(parsed, fromHistory = false, alias = false, devReload = false, loadedCallback, forceKidlisp = false, forceP5 = false) { + const loadFunctionStartTime = performance.now(); + diskTimings.loadStarted = Math.round(loadFunctionStartTime - diskTimingStart); + let fullUrl, source; + let params, search, colon, hash, path, host = originalHost, text, slug, clockShortcode = null; + if (typeof window !== "undefined" && window.acSPIDER) { + console.log("\u{1F577}\uFE0F SPIDER: Starting load() with:", { + parsed, + fromHistory, + alias, + devReload, + forceKidlisp + }); + } + checkLoadingTimeout(); + if (loading === false) { + loading = true; + loadingStartTime = Date.now(); + } else { + console.warn( + "Coudn't load:", + parsed.path || parsed.name, + "(Already loading.)" + ); + return true; + } + if (!parsed.source && store["publishable-piece"] && parsed.piece === store["publishable-piece"].slug) { + parsed.source = store["publishable-piece"].source; + parsed.name = store["publishable-piece"].slug; + parsed.ext = store["publishable-piece"].ext; + } + if (!parsed.source) { + params = parsed.params; + path = parsed.path; + search = parsed.search; + colon = parsed.colon; + hash = parsed.hash; + host = parsed.host; + slug = parsed.text; + if (typeof window !== "undefined" && window.acSPIDER) { + console.log("\u{1F577}\uFE0F SPIDER: Parsed slug/path:", { + slug, + path, + parsedText: parsed.text, + parsedPath: parsed.path, + hash, + params + }); + } + const routeChannel = (parsed.piece || slug || "").split(":")[0]; + if (routeChannel.startsWith("@") && routeChannel.indexOf("/") !== -1) { + const owned = routeChannel.slice(1); + if (owned !== pieceCodeChannel) { + pieceCodeChannel = owned; + socket?.send("code-channel:sub", pieceCodeChannel); + } + diagnostics.channel(pieceCodeChannel); + } else { + pieceCodeChannel = void 0; + diagnostics.channel(""); + } + if (slug.startsWith("@") && slug.indexOf("/") === -1) { + params = [slug, ...params]; + const hiddenSlug = "profile"; + console.log("Profile Path:", path); + path = [...path.split("/").slice(0, -1), hiddenSlug].join("/"); + } + if (slug && slug.startsWith("*") && slug.length > 1) { + clockShortcode = slug; + const cacheId = slug.slice(1); + const clockParam = `*${cacheId}`; + params = [clockParam, ...params || []]; + slug = "clock"; + path = "aesthetic.computer/disks/clock"; + parsed.text = slug; + parsed.path = path; + parsed.params = params; + } + if (host === "") host = originalHost; + loadFailure = void 0; + host = host.replace(/\/$/, ""); + const { protocol, hostname } = getSafeUrlParts(); + let baseUrl; + if (path.startsWith("aesthetic.computer/")) { + if (typeof window !== "undefined" && window.acSPIDER) console.log("\u{1F577}\uFE0F getPackMode():", getPackMode(), "window.acPACK_MODE:", window.acPACK_MODE, "checkPackMode():", checkPackMode()); + if (getPackMode()) { + baseUrl = "."; + } else { + baseUrl = getBuiltInPieceBaseUrl(); + } + } else { + baseUrl = `${protocol}//${hostname}`; + } + if (typeof window !== "undefined" && window.acSPIDER) console.log("\uFFFD\uFE0F SPIDER MODE Debug:", { protocol, hostname, baseUrl, isSandboxed: isSandboxed(), path, isDevelopment: hostname === "localhost" && typeof location !== "undefined" && location.port }); + let resolvedPath = path; + if (getPackMode() && path.startsWith("aesthetic.computer/")) { + resolvedPath = path; + } else if (baseUrl === "https://aesthetic.computer" && path.startsWith("aesthetic.computer/")) { + resolvedPath = path.substring("aesthetic.computer/".length); + } + if (path.endsWith(".lisp") || path.endsWith(".lua")) { + if (getPackMode()) { + fullUrl = "/" + resolvedPath + "?v=" + Date.now(); + } else { + fullUrl = baseUrl + "/" + resolvedPath + "?v=" + Date.now(); + } + } else { + if (getPackMode()) { + const relativePath = resolvedPath.startsWith("aesthetic.computer/") ? resolvedPath.substring("aesthetic.computer/".length) : resolvedPath; + fullUrl = "../" + relativePath + ".mjs?v=" + Date.now(); + } else { + fullUrl = baseUrl + "/" + resolvedPath + ".mjs?v=" + Date.now(); + } + } + } else { + if (devReload === true && parsed.codeChannel && parsed.codeChannel !== codeChannel && parsed.codeChannel !== pieceCodeChannel) { + console.warn( + "\u{1F645} Not reloading, code channel invalid:", + codeChannel || "N/A" + ); + return; + } + source = parsed.source; + params = parsed.params; + search = parsed.search; + colon = parsed.colon || []; + hash = parsed.hash; + host = parsed.host; + slug = parsed.name; + if (slug && slug.startsWith("*") && slug.length > 1) { + clockShortcode = slug; + const cacheId = slug.slice(1); + const clockParam = `*${cacheId}`; + params = [clockParam, ...params || []]; + slug = "clock"; + if (slug !== "(...)" && !path) path = "aesthetic.computer/disks/clock"; + parsed.name = slug; + parsed.path = path || "aesthetic.computer/disks/clock"; + parsed.params = params; + } + if (parsed.enableTrace) { + enableKidlispTrace(); + } else { + disableKidlispTrace(); + } + if (slug !== "(...)") path = parsed.path; + } + let prefetches; + let blobUrl, sourceCode, originalCode; + try { + if (slug?.split("~")[0] === currentText?.split("~")[0] && sourceCode == currentCode && !devReload) { + const blob = new Blob([currentCode], { type: "application/javascript" }); + blobUrl = URL.createObjectURL(blob); + sourceCode = currentCode; + originalCode = sourceCode; + } else { + let sourceToRun; + let fetchStartTime = performance.now(); + if (slug && slug.startsWith("$") && slug.length > 1) { + const cacheId = slug.slice(1).split(":")[0]; + currentHUDAuthor = null; + currentHUDHits = null; + const globalScope = (function() { + if (typeof window !== "undefined") return window; + if (typeof globalThis !== "undefined") return globalThis; + if (typeof global !== "undefined") return global; + if (typeof self !== "undefined") return self; + return {}; + })(); + if (globalScope.objktKidlispCodes && globalScope.objktKidlispCodes[cacheId]) { + sourceToRun = globalScope.objktKidlispCodes[cacheId]; + currentOriginalCodeId = slug; + currentHUDAuthor = null; + currentHUDHits = null; + } else { + console.log("\u{1F4BE} Loading cached kidlisp code:", cacheId); + try { + console.log("\u{1F50D} Fetching cached code from API..."); + sourceToRun = await getCachedCodeMultiLevel(cacheId); + if (!sourceToRun) { + throw new Error(`Cached code not found: ${cacheId}`); + } + currentOriginalCodeId = slug; + console.log("\u2705 Successfully loaded cached code:", cacheId, `(${sourceToRun.length} chars)`); + fetchKidlispMetadata(cacheId).then((meta2) => { + if (meta2) { + console.log(`\u{1F464} Author: ${meta2.handle || "anonymous"}, Hits: ${meta2.hits}`); + } + }).catch((err) => { + console.warn("\u26A0\uFE0F Failed to fetch KidLisp metadata:", err); + }); + } catch (error) { + console.error("\u274C Failed to load cached code:", cacheId, error); + throw new Error(`Failed to load cached code: ${cacheId}`); + } + } + } else if (fullUrl) { + const pieceSlug = slug?.split("~")[0]; + const cachedPiece = pieceSlug ? pieceCodeCache.get(pieceSlug) : null; + if (cachedPiece) { + console.log(`\u{1F384} Using cached code for: ${pieceSlug}`); + sourceToRun = cachedPiece.code; + } else { + const urlWithoutHash = fullUrl.split("#")[0]; + const filename = urlWithoutHash.split("/").pop(); + if (getPackMode() && filename.endsWith(".mjs")) { + } + let response; + if (logs.loading) console.log("\u{1F4E5} Loading from url:", fullUrl); + const fetchStartTime2 = performance.now(); + send({ + type: "boot-log", + content: `fetching: ${path}` + }); + { + const maxAttempts = 3; + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + try { + response = await fetch(fullUrl, { cache: "no-store" }); + break; + } catch (fetchErr) { + if (attempt >= maxAttempts) throw fetchErr; + console.warn(`\u{1F504} Piece fetch attempt ${attempt}/${maxAttempts} failed, retrying in ${attempt}s...`); + await new Promise((r2) => setTimeout(r2, 1e3 * attempt)); + } + } + } + const fetchEndTime = performance.now(); + diskTimings.fetchComplete = Math.round(fetchEndTime - diskTimingStart); + if (response.status === 404 || response.status === 403) { + const extension = path.endsWith(".lisp") ? ".lisp" : path.endsWith(".lua") ? ".lua" : ".mjs"; + const { protocol } = getSafeUrlParts(); + const anonUrl = protocol + "//art.aesthetic.computer/" + path.split("/").pop() + extension + "#" + Date.now(); + if (logs.loading) + console.log("\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1} Attempting to load piece from anon url:", anonUrl); + response = await fetch(anonUrl, { cache: "no-store" }); + if (response.status === 404 || response.status === 403) + throw new Error(response.status); + } + sourceToRun = await response.text(); + } + } else { + sourceToRun = source; + } + if (sourceToRun.startsWith("(") || sourceToRun.startsWith(";") || forceKidlisp || slug === "(...)" || path === "(...)" || path && path.endsWith(".lisp") || slug && slug.startsWith("$") && slug.length > 1 || // Cached codes are always kidlisp + // Pack mode KidLisp pieces - but NOT if acPACK_COLOPHON explicitly says isKidLisp: false + typeof window !== "undefined" && window.acPACK_PIECE && slug === window.acPACK_PIECE && window.acPACK_COLOPHON?.piece?.isKidLisp !== false) { + sourceCode = sourceToRun; + originalCode = sourceCode; + pieceMetadata = { + code: slug || "kidlisp", + trustLevel: "kidlisp", + anonymous: true + }; + const isPackMode = typeof window !== "undefined" && window.acPACK_MODE || typeof globalThis !== "undefined" && globalThis.acPACK_MODE; + if (!isPackMode) { + log.lisp.log("Initializing KidLisp piece..."); + } + const compileStartTime = performance.now(); + const fetchElapsed = Math.round(compileStartTime - fetchStartTime); + if (typeof send === "function") { + send({ + type: "boot-log", + content: `compiling kidlisp (fetch: ${fetchElapsed}ms)` + }); + } else { + log.lisp.warn("send function not available for boot-log"); + } + initPersistentCache(store); + imageCache.init(store); + loadedModule = module(sourceToRun, path && path.endsWith(".lisp")); + const compileEndTime = performance.now(); + const compileElapsed = Math.round(compileEndTime - compileStartTime); + diskTimings.compileComplete = Math.round(compileEndTime - diskTimingStart); + if (!isPackMode) { + log.lisp.success(`KidLisp module loaded (${compileElapsed}ms)`); + } + send({ + type: "boot-log", + content: `kidlisp compiled (${compileElapsed}ms)` + }); + send({ + type: "boot-file", + content: { filename: path, source: sourceCode.slice(0, 8e3) } + }); + if (devReload) { + store["publishable-piece"] = { + slug, + source: sourceToRun, + ext: "lisp" + }; + if (logs.loading) + console.log("\u{1F48C} Publishable:", store["publishable-piece"]); + } + } else if (forceP5 || parsed?.ext === "js" || path && path.endsWith(".js")) { + sourceCode = sourceToRun; + originalCode = sourceCode; + pieceMetadata = { + code: slug || "p5", + trustLevel: "p5", + anonymous: true + }; + const compileStartTime = performance.now(); + const fetchElapsed = Math.round(compileStartTime - fetchStartTime); + send({ + type: "boot-log", + content: `compiling p5 (fetch: ${fetchElapsed}ms)` + }); + loadedModule = await makeP5WorkerModule({ slug, source: sourceToRun }); + const compileEndTime = performance.now(); + const compileElapsed = Math.round(compileEndTime - compileStartTime); + diskTimings.compileComplete = Math.round(compileEndTime - diskTimingStart); + send({ + type: "boot-log", + content: `p5 compiled (${compileElapsed}ms)` + }); + send({ + type: "boot-file", + content: { filename: path, source: sourceCode.slice(0, 8e3) } + }); + if (devReload) { + store["publishable-piece"] = { + slug, + source: sourceToRun, + ext: "js" + }; + if (logs.loading) + console.log("\u{1F48C} Publishable:", store["publishable-piece"]); + } + } else if (parsed?.ext === "lua" || path && path.endsWith(".lua") || fullUrl && fullUrl.includes(".lua") || sourceToRun.trim().startsWith("--") && /(?:^|\n)\s*function\s+(setup|draw)\s*\(/.test(sourceToRun)) { + sourceCode = sourceToRun; + originalCode = sourceCode; + pieceMetadata = { + code: slug || "l5", + trustLevel: "l5", + anonymous: true + }; + const compileStartTime = performance.now(); + const fetchElapsed = Math.round(compileStartTime - fetchStartTime); + send({ + type: "boot-log", + content: `compiling lua (fetch: ${fetchElapsed}ms)` + }); + loadedModule = await module2(sourceToRun); + const compileEndTime = performance.now(); + const compileElapsed = Math.round(compileEndTime - compileStartTime); + diskTimings.compileComplete = Math.round(compileEndTime - diskTimingStart); + send({ + type: "boot-log", + content: `lua compiled (${compileElapsed}ms)` + }); + send({ + type: "boot-file", + content: { filename: path, source: sourceCode.slice(0, 8e3) } + }); + if (devReload) { + store["publishable-piece"] = { + slug, + source: sourceToRun, + ext: "lua" + }; + if (logs.loading) + console.log("\u{1F48C} Publishable:", store["publishable-piece"]); + } + } else { + if (devReload) { + store["publishable-piece"] = { slug, source: sourceToRun }; + if (logs.loading) + console.log("\u{1F48C} Publishable:", store["publishable-piece"].slug); + } + imageCache.init(store); + const isBuiltInDisk = path && path.includes("aesthetic.computer/disks/"); + if (isBuiltInDisk) { + pieceMetadata = { code: slug || "system", trustLevel: "trusted", anonymous: false }; + } else if (slug && !devReload) { + try { + if (pieceMetadata?.code) { + clearPermissions(pieceMetadata.code); + } + pieceMetadata = await fetchPieceMetadata(slug); + if (logs.loading) { + console.log(`\u{1F512} Piece metadata:`, { + code: pieceMetadata.code, + trustLevel: pieceMetadata.trustLevel, + anonymous: pieceMetadata.anonymous + }); + } + } catch (err) { + console.warn(`\u26A0\uFE0F Failed to fetch piece metadata, defaulting to untrusted:`, err); + pieceMetadata = { code: slug, trustLevel: "untrusted", anonymous: true }; + } + } else { + pieceMetadata = { code: slug || "unknown", trustLevel: "untrusted", anonymous: true }; + } + originalCode = sourceToRun; + const updatedCode = updateCode(sourceToRun, host, debug3); + prefetches = updatedCode.match(/"(@\w[\w.]*\/[^"]*)"/g)?.map((match) => match.slice(1, -1)); + const blob = new Blob([updatedCode], { + type: "application/javascript" + }); + blobUrl = URL.createObjectURL(blob); + const importStartTime = performance.now(); + const importFetchElapsed = Math.round(importStartTime - fetchStartTime); + send({ + type: "boot-log", + content: `importing module (fetch: ${importFetchElapsed}ms)` + }); + sourceCode = updatedCode; + { + const maxImportAttempts = 3; + for (let attempt = 1; attempt <= maxImportAttempts; attempt++) { + try { + loadedModule = await import(blobUrl); + break; + } catch (importErr) { + const isNetworkError = importErr.toString().includes("Failed to fetch"); + if (attempt < maxImportAttempts && isNetworkError) { + console.warn(`\u{1F504} Module import attempt ${attempt}/${maxImportAttempts} failed, retrying in ${1.5 * attempt}s...`); + URL.revokeObjectURL(blobUrl); + blobUrl = URL.createObjectURL(new Blob([updatedCode], { type: "application/javascript" })); + await new Promise((r2) => setTimeout(r2, 1500 * attempt)); + } else { + throw importErr; + } + } + } + } + const importEndTime = performance.now(); + const importElapsed = Math.round(importEndTime - importStartTime); + diskTimings.compileComplete = Math.round(importEndTime - diskTimingStart); + if (logs.loading) console.log(`\u2705 Module imported (${importElapsed}ms)`); + send({ + type: "boot-log", + content: `module imported (${importElapsed}ms)` + }); + send({ + type: "boot-file", + content: { filename: path, source: sourceCode.slice(0, 8e3) } + // Limit size + }); + } + } + } catch (err) { + const moduleLoadErrorTime = performance.now(); + console.log("\u{1F7E1} Error loading mjs module:", err); + const isFetchError = err.message === "404" || err.message === "403"; + const isNetworkImportError = err.toString().includes("Failed to fetch dynamically imported module"); + const isModuleImportError = isNetworkImportError || err.toString().includes("Unexpected token") || err.toString().includes("SyntaxError") || err.toString().includes("Cannot use import"); + if (fullUrl && !fullUrl.includes(".lisp") && !fullUrl.includes(".lua") && !fullUrl.includes(".js?") && isFetchError && !isModuleImportError) { + try { + const fallbackExts = [".js", ".lua", ".lisp"]; + let loadedFromFallback = false; + let fallbackError = null; + for (const fallbackExt of fallbackExts) { + let fallbackUrl = fullUrl.replace(".mjs", fallbackExt); + if (logs.loading) { + console.log(`\u{1F4E5} Loading ${fallbackExt.slice(1)} from url:`, fallbackUrl); + } + let response = await fetch(fallbackUrl, { cache: "no-store" }); + let resolvedUrl = fallbackUrl; + if (response.status === 404 || response.status === 403) { + const { protocol } = getSafeUrlParts(); + const anonUrl = protocol + "//art.aesthetic.computer/" + path.split("/").pop() + fallbackExt + "#" + Date.now(); + if (logs.loading) { + console.log("\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1} Attempting to load piece from anon url:", anonUrl); + } + response = await fetch(anonUrl, { cache: "no-store" }); + if (response.status === 404 || response.status === 403) { + fallbackError = new Error(response.status); + continue; + } + resolvedUrl = anonUrl; + } + sourceCode = await response.text(); + originalCode = sourceCode; + if (fallbackExt === ".js") { + pieceMetadata = { + code: slug || "p5", + trustLevel: "p5", + anonymous: true + }; + loadedModule = await makeP5WorkerModule({ slug, source: sourceCode }); + if (devReload) { + store["publishable-piece"] = { slug, source: sourceCode, ext: "js" }; + } + } else if (fallbackExt === ".lua") { + pieceMetadata = { + code: slug || "l5", + trustLevel: "l5", + anonymous: true + }; + loadedModule = await module2(sourceCode); + if (devReload) { + store["publishable-piece"] = { slug, source: sourceCode, ext: "lua" }; + } + } else { + pieceMetadata = { + code: slug || "kidlisp", + trustLevel: "kidlisp", + anonymous: true + }; + loadedModule = module(sourceCode, true); + if (devReload) { + store["publishable-piece"] = { slug, source: sourceCode, ext: "lisp" }; + } + } + loadedFromFallback = true; + break; + } + if (!loadedFromFallback) { + throw fallbackError || new Error("404"); + } + if (devReload && logs.loading) { + console.log("\u{1F48C} Publishable:", store["publishable-piece"]); + } + } catch (err2) { + console.error( + `\u{1F621} "${path}" load failure:`, + err2, + "\u{1F4BE} First load:", + firstLoad + ); + loadFailure = err2; + $commonApi.net.loadFailureText = err2.message + "\n" + sourceCode; + loading = false; + if (firstLoad && (err2.message === "404" || err2.message === "403")) { + const handle2 = await resolveUserCode(slug); + if (handle2) { + $commonApi.jump(`@${handle2}`); + } else { + $commonApi.jump(`404~${slug}`); + } + } else { + if (currentText !== "prompt") + $commonApi.notice(":(", ["red", "yellow"]); + } + return false; + } + } else { + if (isNetworkImportError) { + console.error( + `\u{1F621} "${path}" module import failed (network error loading dependencies after ${3} retries):`, + err + ); + } else if (isModuleImportError) { + console.error( + `\u{1F621} "${path}" module import failed (JS error in the piece):`, + err + ); + } else { + console.error( + `\u{1F621} "${path}" load failure:`, + err, + "\u{1F4BE} First load:", + firstLoad + ); + } + loadFailure = err; + $commonApi.net.loadFailureText = err.message + "\n" + (sourceCode || ""); + loading = false; + if (firstLoad && (err.message === "404" || err.message === "403")) { + const handle2 = await resolveUserCode(slug); + if (handle2) { + $commonApi.jump(`@${handle2}`); + } else { + $commonApi.jump(`404~${slug}`); + } + } else { + $commonApi.notice(":(", ["red", "yellow"]); + } + return false; + } + } + const moduleCheckTime = performance.now(); + if (loadedModule == null) { + loading = false; + leaving = false; + return false; + } + pieceHistoryIndex += fromHistory === true ? 0 : 1; + if (!debug3 && !firstLoad) { + headers($commonApi.dark); + } + $commonApi.net.devReload = devReload; + $commonApi.debug = debug3; + $commonApi.reload = function reload({ + piece, + name, + source: source2, + codeChannel: codeChannel2, + createCode, + codeId, + // The $code identifier (e.g., "inz") from kidlisp.com + authToken, + // Auth token from kidlisp.com login + enableTrace, + // Enable execution trace for kidlisp.com visualization + language, + // Optional source language (e.g., "lua") + ext, + // Optional source extension hint (e.g., "lua") + liveName + // Optional stable live piece name + } = {}) { + if (checkLoadingTimeout()) { + console.log("\u{1F534} Recovered from stuck loading state"); + } + if (loading && source2 && !name && !piece) { + const queueCount = (reload._queueCount || 0) + 1; + reload._queueCount = queueCount; + if (queueCount > 10) { + console.warn("\u{1F534} Reload queue timeout - forcing loading reset"); + loading = false; + loadingStartTime = null; + reload._queueCount = 0; + } else { + console.log("\u{1F7E1} Queueing reload until current load completes..."); + setTimeout( + () => reload({ + source: source2, + codeId, + createCode, + authToken, + enableTrace, + language, + ext, + liveName + }), + 100 + ); + return; + } + } else { + reload._queueCount = 0; + } + if (loading) { + console.log("\u{1F7E1} A piece is already loading."); + return; + } + if (piece === "*refresh*") { + send({ type: "refresh" }); + } else if (piece === "*piece-reload*") { + $commonApi.load( + { + path: currentPath, + host: currentHost, + search: currentSearch, + colon: currentColon, + params: currentParams, + hash: currentHash, + text: currentText + }, + true, + // fromHistory - don't add to history stack + alias, + true + // devReload + ); + } else if (source2 && !name && !piece) { + const isLuaReload = language === "lua" || ext === "lua"; + currentText = isLuaReload ? liveName || "l5-live" : source2; + currentPath = isLuaReload ? liveName || "l5-live" : source2; + if (isLuaReload) { + $commonApi.load( + { + source: source2, + name: liveName || "l5-live", + ext: "lua", + search: currentSearch, + colon: currentColon, + params: currentParams, + hash: currentHash + }, + true, + // fromHistory - don't add to history stack + alias, + true + // devReload + ); + return; + } + if (codeId) { + currentOriginalCodeId = `$${codeId}`; + } + if (createCode) { + $commonApi.kidlispCreateCode = true; + } else { + $commonApi.kidlispCreateCode = false; + } + if (authToken) { + $commonApi.kidlispAuthToken = authToken; + } + $commonApi.kidlispEnableTrace = enableTrace || false; + if (globalKidLispInstance2) { + globalKidLispInstance2.frameCount = 0; + } + $commonApi.load( + { + source: source2, + // Pass as source so it's used directly + name: "kidlisp-live", + // Give it a name so slug won't be undefined + search: currentSearch, + colon: currentColon, + params: currentParams, + hash: currentHash, + enableTrace + // Pass trace flag + }, + true, + // fromHistory - don't add to history stack + alias, + true, + // devReload + void 0, + // loadedCallback + true + // forceKidlisp - always treat as KidLisp code + ); + } else if (name && source2) { + const routed = currentText?.startsWith("@") && currentText.split("/")[1]?.split(":")[0] === name ? currentText : name; + $commonApi.load({ source: source2, name: routed, codeChannel: codeChannel2 }, false, false, true); + } else { + $commonApi.load( + { + path: currentPath, + host: currentHost, + search: currentSearch, + colon: currentColon, + params: currentParams, + hash: currentHash, + text: currentText + }, + // Use the existing contextual values when live-reloading in debug mode. + true, + // (fromHistory) ... never add any reload to the history stack + alias, + true + // devReload + ); + } + }; + let receiver; + const forceProd = false; + function startSocket() { + if (getPackMode() || typeof window !== "undefined" && window.acSPIDER) { + return; + } + setupRemoteLogging(); + if ( + //parsed.search?.startsWith("preview") || + //parsed.search?.startsWith("icon") + previewOrIconMode + ) { + console.log("\u{1F9E6} Sockets disabled, just grabbing screenshots. \u{1F603}"); + return; + } + socket = new Socket(debug3, send); + const monolith = "monolith"; + session(slug, forceProd, monolith).then(async (sesh) => { + if (typeof sesh === "string") throw new Error(sesh); + const url = new URL(sesh.url); + const udpUrl = new URL(sesh.udp); + let turnHost = null; + const isLocalDev = url.hostname === "localhost" || url.hostname.endsWith(".local"); + if (isLocalDev) { + try { + const devInfoRes = await fetch(`${sesh.url}/dev-info`); + if (devInfoRes.ok) { + const devInfo = await devInfoRes.json(); + if (devInfo.ip) { + turnHost = devInfo.ip; + log.socket.debug("Got TURN host from dev-info:", turnHost); + } + } + } catch (e2) { + log.socket.debug("Could not fetch dev-info for TURN host:", e2.message); + } + } + log.socket.debug("Sending udp:connect to BIOS:", { + url: `${udpUrl.protocol}//${udpUrl.hostname}`, + port: udpUrl.port || (udpUrl.protocol === "https:" ? "443" : "80"), + turnHost + }); + send({ + type: "udp:connect", + content: { + url: `${udpUrl.protocol}//${udpUrl.hostname}`, + port: udpUrl.port || (udpUrl.protocol === "https:" ? "443" : "80"), + turnHost + // Pass TURN host separately for ICE servers + } + }); + let slugBroadcastInterval; + socket?.connect( + url.host + url.pathname, + (id, type, content) => { + if (type === "scream" && socket?.id !== id) { + console.log("\u{1F631} Scream:", content, "\u2757"); + scream = content; + } + if (type === "jump") { + $commonApi.jump(content.piece); + } + if (type === "dev:identity") { + devIdentity = content; + remoteLogSocket = socket; + flushRemoteLogQueue(); + $commonApi?.needsPaint?.(); + return; + } + receiver?.(id, type, content); + }, + $commonApi.reload, + "wss", + () => { + if (USER) socket?.send("login", { user: USER }); + if (HANDLE) { + socket?.send("location:broadcast", { + handle: HANDLE, + slug: currentText, + user: USER + // Include user for identity resolution + }); + slugBroadcastInterval = setInterval(() => { + socket?.send("location:broadcast", { + handle: HANDLE, + slug: "*keep-alive*", + user: USER + // Include user for identity resolution + }); + }, 2500); + } + if (codeChannel) socket?.send("code-channel:sub", codeChannel); + if (pieceCodeChannel) + socket?.send("code-channel:sub", pieceCodeChannel); + updateHUDStatus(); + $commonApi.needsPaint(); + codeChannelAutoLoader?.(); + }, + () => { + updateHUDStatus(); + clearInterval(slugBroadcastInterval); + } + ); + }).catch((err) => { + console.error("Session connection error:", err); + }); + } + clearTimeout(socketStartDelay); + socket?.kill(); + udp?.kill(); + socket = void 0; + socketStartDelay = setTimeout(() => startSocket(), 250); + $commonApi.net.socket = function(receive2) { + receiver = receive2 || (() => { + }); + if (!socket) { + clearTimeout(socketStartDelay); + startSocket(); + } else { + setTimeout(() => { + if (socket?.id) receiver(socket.id, "connected:already"); + }, 10); + } + return socket; + }; + let meta; + if (alias === false) { + let objktContext = null; + if (checkPackMode() && typeof window !== "undefined" && window.acOBJKT_COLOPHON) { + objktContext = { author: window.acOBJKT_COLOPHON.build.author }; + } + const titleSlug = parsed.piece || slug; + const { title, desc, ogImage, twitterImage, icon: icon2 } = metadata( + location.host, + // "aesthetic.computer", + titleSlug, + loadedModule.meta?.({ + ...parsed, + num: $commonApi.num, + store: $commonApi.store + }) || inferTitleDesc(originalCode), + location.protocol, + // Pass the current protocol + objktContext + // Pass OBJKT context if available + ); + meta = { + title, + desc, + // Note: This doesn't auto-update externally hosted module descriptions, and may never need to? 22.07.19.06.00 + img: { + og: ogImage, + twitter: twitterImage, + icon: icon2 + }, + url: "https://aesthetic.computer/" + slug + }; + } + $commonApi.meta = (data) => send({ type: "meta", content: data }); + $commonApi.net.rewrite = (path2, historical = false) => { + if (historical) $commonApi.history.push(path2); + send({ type: "rewrite-url-path", content: { path: path2, historical } }); + }; + $commonApi.net.host = host; + $commonApi.net.web = (url, jumpOut) => { + send({ type: "web", content: { url, blank: jumpOut } }); + }; + $commonApi.net.refresh = () => { + send({ type: "refresh" }); + }; + $commonApi.net.waitForPreload = () => { + send({ type: "wait-for-preload", content: true }); + }; + $commonApi.net.preloaded = () => { + send({ type: "preload-ready", content: true }); + }; + $commonApi.content = new Content(); + $commonApi.dom = {}; + $commonApi.dom.clear = () => { + $commonApi.content.remove(); + }; + $commonApi.dom.html = (strings, ...vars) => { + const processed = defaultTemplateStringProcessor(strings, ...vars); + $commonApi.content.add(processed); + }; + $commonApi.dom.css = (strings, ...vars) => { + const processed = defaultTemplateStringProcessor(strings, ...vars); + $commonApi.content.add(``); + }; + $commonApi.dom.javascript = (strings, ...vars) => { + const processed = defaultTemplateStringProcessor(strings, ...vars); + $commonApi.content.add(` + +aesel

diff --git a/easel/desktop/notebook-donkey.js b/easel/desktop/notebook-donkey.js index b72fdad001..dc7402ca78 100644 --- a/easel/desktop/notebook-donkey.js +++ b/easel/desktop/notebook-donkey.js @@ -6,6 +6,7 @@ window.installNotebookDonkey=anchor=>{ const active=()=>loaded&&!anchor.hidden&&anchor.isConnected&&!document.hidden; function paint(){ clearTimeout(timer);timer=null;if(!active()){canvas.hidden=true;return;} + if(document.body.classList.contains('window-resizing')){timer=setTimeout(paint,160);return;} const rect=anchor.getBoundingClientRect(),sheet=document.getElementById('conversation').getBoundingClientRect(); if(rect.bottomsheet.bottom){canvas.hidden=true;return;} const size=Math.max(1,rect.height),width=Math.min(rect.width-16,innerWidth-24); @@ -30,5 +31,5 @@ window.installNotebookDonkey=anchor=>{ source.src='assets/donkey-pencil-run-v2.png'; new MutationObserver(paint).observe(anchor,{attributes:true,attributeFilter:['hidden','aria-label']}); new MutationObserver(paint).observe(document.getElementById('notebook-page'),{childList:true,subtree:true}); - document.addEventListener('scroll',paint,true);document.addEventListener('visibilitychange',paint);window.addEventListener('resize',paint);reduced.addEventListener('change',paint); + document.addEventListener('scroll',paint,true);document.addEventListener('visibilitychange',paint);window.addEventListener('aesel-resize-settled',paint);reduced.addEventListener('change',paint); }; diff --git a/easel/desktop/notebook-layout.js b/easel/desktop/notebook-layout.js index 380c41d5a7..49ee27fd7f 100644 --- a/easel/desktop/notebook-layout.js +++ b/easel/desktop/notebook-layout.js @@ -19,6 +19,7 @@ }; const layout = () => { frame = 0; + if (document.body.classList.contains("window-resizing")) return; const height = view.clientHeight; const pin = view.scrollHeight - view.scrollTop - height <= 2 || @@ -67,6 +68,7 @@ window.layoutNotebookPreview = () => { if (!frame) frame = requestAnimationFrame(layout); }; + window.addEventListener("aesel-resize-settled", window.layoutNotebookPreview); const observer = new ResizeObserver(window.layoutNotebookPreview); observer.observe(preview); observer.observe(view); diff --git a/easel/desktop/package-lock.json b/easel/desktop/package-lock.json index 31a655ae21..8e03771cc7 100644 --- a/easel/desktop/package-lock.json +++ b/easel/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "aesel-desktop", - "version": "0.7.15", + "version": "0.7.16", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aesel-desktop", - "version": "0.7.15", + "version": "0.7.16", "dependencies": { "@xterm/addon-fit": "0.10.0", "@xterm/addon-webgl": "0.18.0", diff --git a/easel/desktop/package.json b/easel/desktop/package.json index 2e8f35abde..db99541b06 100644 --- a/easel/desktop/package.json +++ b/easel/desktop/package.json @@ -1,7 +1,7 @@ { "name": "aesel-desktop", "productName": "aesel", - "version": "0.7.15", + "version": "0.7.16", "private": true, "main": "main.cjs", "scripts": { @@ -84,6 +84,10 @@ "dmg" ], "category": "public.app-category.developer-tools", + "extendInfo": { + "CFBundleName": "Aesel", + "CFBundleDisplayName": "Aesel" + }, "hardenedRuntime": true, "icon": "build/icon.icns", "notarize": true, diff --git a/easel/desktop/preview-waveform.js b/easel/desktop/preview-waveform.js index 231e1209ee..c73960d3fc 100644 --- a/easel/desktop/preview-waveform.js +++ b/easel/desktop/preview-waveform.js @@ -12,6 +12,7 @@ window.installPreviewWaveform = (preview) => { document.body.append(line); let version; const align = () => { + if (document.body.classList.contains("window-resizing")) return; const inset = version?.offsetWidth ? version.offsetWidth + (parseFloat(getComputedStyle(version).right) || 0) + 12 : 80; document.documentElement.style.setProperty("--preview-audio-inset", `${inset}px`); }; @@ -21,32 +22,41 @@ window.installPreviewWaveform = (preview) => { if (version) placement.observe(version); align(); }); - window.addEventListener("resize", align); + window.addEventListener("aesel-resize-settled", align); align(); const motion = matchMedia("(prefers-reduced-motion: reduce)"); const historyMs = 4000; // Two 4/4 bars at 120 BPM, oldest at the top. + // The host owns muting (preview-audio.js), so its state answers without a + // synchronous guest call. webview.isAudioMuted() blocks this thread on the + // main process, which stalls for hundreds of milliseconds mid-resize. + const silenced = () => { const audio = window.previewAudio; return !!audio && (audio.muted || audio.volume === 0); }; + const paused = () => !ready || document.hidden || preview.hidden || silenced() || document.body.classList.contains("preview-fullscreen"); let history = []; let ready = false, timer = 0, generation = 0, previousRead = 0, peakEnvelope = 0, - frame = 0; + frame = 0, + cleared = true, + lastActiveAt = -Infinity; const clear = () => { - line.classList.remove("sounding"); - path.setAttribute("d", "M0 16H511"); - previousRead = 0; - peakEnvelope = 0; - history = []; cancelAnimationFrame(frame); frame = 0; + history = []; + previousRead = 0; + peakEnvelope = 0; + if (cleared) return; // Silence is the steady state; leave the DOM alone. + cleared = true; + line.classList.remove("sounding"); + path.setAttribute("d", "M0 16H511"); }; function draw(now) { frame = 0; - if (!ready || document.hidden || preview.hidden || preview.isAudioMuted() || document.body.classList.contains("preview-fullscreen")) { clear(); return; } + if (paused()) { clear(); return; } history = history.filter(point => now - point.at < historyMs); if (!history.some(point => point.active)) { clear(); return; } - line.classList.add("sounding"); + if (cleared) { cleared = false; line.classList.add("sounding"); } // Envelope slices retain transients instead of aliasing an entire audio // cycle down to a pixel. Their timestamps set the upward scroll speed. const position = point => (511 * (1 - (now - point.at) / historyMs)).toFixed(2); @@ -59,19 +69,18 @@ window.installPreviewWaveform = (preview) => { const started = performance.now(); let interval = 200; try { - if ( - !ready || - document.hidden || - document.body.classList.contains("preview-fullscreen") || - preview.hidden || - preview.isAudioMuted() - ) { + if (paused()) { clear(); return; } - // Keep listening during silence: the bird's whole first note is 75 ms. - // Only one guest read is in flight, and hidden/muted previews back off. - interval = motion.matches ? 33 : 16; + // A live window resize already saturates the main process, which every + // guest read crosses. Let the drag finish first. + if (document.body.classList.contains("window-resizing")) { interval = 100; return; } + // Read at frame rate while sound plays and for a beat after it stops, so + // the strip keeps its tail. Silence backs off to eight reads a second: + // the main-process round trip is the app's whole idle cost otherwise. + const listening = performance.now() - lastActiveAt < 1500; + interval = listening ? (motion.matches ? 33 : 16) : 125; const samples = await preview.executeJavaScript( "window.AC?.readOutputWaveform?.(512) || []", ); @@ -86,6 +95,7 @@ window.installPreviewWaveform = (preview) => { const peak = centered.reduce((max, v) => Math.max(max, Math.abs(v)), 0); const active = peak > 0.0005; const now = performance.now(); + if (active) { if (!listening) interval = motion.matches ? 33 : 16; lastActiveAt = now; } // Normalize the display only. Follow peaks immediately, release gain // gently, and cap amplification so near-silence doesn't fill the strip. peakEnvelope = Math.max(peak, peakEnvelope * Math.exp(-(now - previousRead) / 180)); @@ -93,9 +103,8 @@ window.installPreviewWaveform = (preview) => { const gain = Math.min(32, 0.85 / (peakEnvelope || 1)); if (motion.matches) { cancelAnimationFrame(frame); frame = 0; history = []; - line.classList.toggle("sounding", active); - path.setAttribute("d", "M0 16H511"); - } else { + if (active === cleared) { cleared = !active; line.classList.toggle("sounding", active); path.setAttribute("d", "M0 16H511"); } + } else if (active || !cleared) { // Normalization changes only each new slice, never the recorded past. history.push({at: now, active, low: active ? Math.min(...centered) * gain : 0, @@ -131,5 +140,5 @@ window.installPreviewWaveform = (preview) => { document.addEventListener("visibilitychange", () => { if (document.hidden) clear(); }); - window.addEventListener("beforeunload", () => { stop(); placement.disconnect(); window.removeEventListener("resize", align); }, { once: true }); + window.addEventListener("beforeunload", () => { stop(); placement.disconnect(); window.removeEventListener("aesel-resize-settled", align); }, { once: true }); }; diff --git a/easel/desktop/provider-picker.js b/easel/desktop/provider-picker.js index 5d675839d1..6cbc848369 100644 --- a/easel/desktop/provider-picker.js +++ b/easel/desktop/provider-picker.js @@ -1,17 +1,38 @@ -window.createProviderPicker=({backend,busy,onSelect})=>{ - const root=document.createElement('div');root.className='settings-field provider-picker';root.append('Provider'); - const toggle=document.createElement('button');toggle.type='button';toggle.className='provider-toggle';toggle.setAttribute('aria-label','Provider');toggle.setAttribute('aria-haspopup','listbox');toggle.setAttribute('aria-expanded','false');toggle.setAttribute('aria-controls','provider-options');toggle.disabled=busy; - const list=document.createElement('div');list.id='provider-options';list.className='provider-options';list.setAttribute('role','listbox');list.setAttribute('aria-label','Provider');list.hidden=true; - const providers=['AC','Claude','Codex'],ids=['ac','claude','codex']; - const icon=id=>{const img=new Image();img.src=`assets/provider-${id}.svg`;img.alt='';img.className='provider-mark';return img;}; - const current=Math.max(0,ids.indexOf(backend));toggle.append(icon(ids[current]),providers[current]); +// One dropdown for both the provider and the model rows, so they carry the +// same weight. Options may bring a mark: a local asset, or a remote image with +// a local fallback. +window.createChoicePicker=({label,options,current=0,busy=false,onSelect})=>{ + const root=document.createElement('div');root.className='settings-field choice-picker';root.append(label); + const listId=`choice-${label.toLowerCase().replace(/[^a-z0-9]+/g,'-')}-options`; + const toggle=document.createElement('button');toggle.type='button';toggle.className='provider-toggle';toggle.setAttribute('aria-label',label);toggle.setAttribute('aria-haspopup','listbox');toggle.setAttribute('aria-expanded','false');toggle.setAttribute('aria-controls',listId);toggle.disabled=busy||options.length<2; + const list=document.createElement('div');list.id=listId;list.className='provider-options';list.setAttribute('role','listbox');list.setAttribute('aria-label',label);list.hidden=true; + const mark=option=>{if(!option.icon)return null;const img=new Image();img.alt='';img.className='provider-mark'+(option.markClass?' '+option.markClass:'');if(option.fallback)img.addEventListener('error',()=>{if(img.src!==option.fallback)img.src=option.fallback;},{once:true});img.src=option.icon;return img;}; + const fill=(node,option)=>{const icon=mark(option);if(icon)node.append(icon);const text=document.createElement('span');text.className='choice-label';text.textContent=option.label;node.append(text);if(option.detail){const detail=document.createElement('small');detail.className='choice-detail';detail.textContent=option.detail;node.append(detail);}}; + current=Math.min(Math.max(0,current),Math.max(0,options.length-1)); + if(options[current])fill(toggle,options[current]); const arrow=document.createElement('span');arrow.className='provider-arrow';arrow.textContent='⌄';arrow.setAttribute('aria-hidden','true');toggle.append(arrow); const close=()=>{list.hidden=true;toggle.setAttribute('aria-expanded','false');};root.closePicker=close; - const open=()=>{list.hidden=false;toggle.setAttribute('aria-expanded','true');list.children[current].focus();}; - providers.forEach((name,index)=>{const option=document.createElement('button');option.type='button';option.setAttribute('role','option');option.setAttribute('aria-selected',String(index===current));option.tabIndex=-1;option.append(icon(ids[index]),name);option.addEventListener('click',()=>{close();toggle.focus();onSelect(index);});list.append(option);}); + const open=()=>{list.hidden=false;toggle.setAttribute('aria-expanded','true');list.children[current]?.focus();}; + options.forEach((option,index)=>{const item=document.createElement('button');item.type='button';item.setAttribute('role','option');item.setAttribute('aria-selected',String(index===current));item.tabIndex=-1;fill(item,option);item.addEventListener('click',()=>{close();toggle.focus();onSelect(index,option);});list.append(item);}); + // Opening focuses the current option, so a mouse press on a different one + // would blur it first; without this the blur closed the list before the + // click could land, and the choice silently never changed. + list.addEventListener('mousedown',event=>event.preventDefault()); toggle.addEventListener('click',()=>list.hidden?open():close()); toggle.addEventListener('keydown',event=>{if(['ArrowDown','ArrowUp'].includes(event.key)){event.preventDefault();open();}}); - list.addEventListener('keydown',event=>{let index=[...list.children].indexOf(document.activeElement);if(event.key==='ArrowDown')index=(index+1)%3;else if(event.key==='ArrowUp')index=(index+2)%3;else if(event.key==='Home')index=0;else if(event.key==='End')index=2;else return;event.preventDefault();list.children[index].focus();}); - root.addEventListener('focusout',()=>queueMicrotask(()=>{if(!root.contains(document.activeElement))close();})); + list.addEventListener('keydown',event=>{const count=options.length;let index=[...list.children].indexOf(document.activeElement);if(event.key==='ArrowDown')index=(index+1)%count;else if(event.key==='ArrowUp')index=(index+count-1)%count;else if(event.key==='Home')index=0;else if(event.key==='End')index=count-1;else if(event.key==='Escape'){close();toggle.focus();return;}else return;event.preventDefault();list.children[index].focus();}); + root.addEventListener('focusout',event=>{if(!root.contains(event.relatedTarget))close();}); root.append(toggle,list);return root; }; +// A fresh pal each time the settings open: the hosted provider is drawn by +// the same turnaround art as aesthetic.computer's own mark. +window.createProviderPicker=({backend,busy,onSelect})=>{ + const pal=`https://pals.aesthetic.computer/random.webp?menu=${Date.now()}`; + const options=[ + {id:'ac',label:'AC',icon:pal,fallback:'assets/provider-ac.svg',markClass:'pal'}, + {id:'claude',label:'Claude',icon:'assets/provider-claude.svg'}, + {id:'codex',label:'Codex',icon:'assets/provider-codex.svg'}, + ]; + const root=window.createChoicePicker({label:'Provider',options,current:Math.max(0,options.findIndex(o=>o.id===backend)),busy,onSelect}); + root.classList.add('provider-picker');return root; +}; diff --git a/easel/desktop/renderer.js b/easel/desktop/renderer.js index f7173c67ca..14a2250109 100644 --- a/easel/desktop/renderer.js +++ b/easel/desktop/renderer.js @@ -123,14 +123,22 @@ function reportTitleGeometry(){ window.aesel.titleGeometry?.({x:visible?r.right+6:0,y:visible?Math.max(0,r.top+(r.height-size)/2):0,size,visible,title:label.dataset.title||label.textContent,titleX:r.x,titleY:r.y,titleWidth:r.width,titleHeight:r.height,titleFontSize:16,titleColors:label.titleColors||[]}); } new ResizeObserver(()=>reportTitleGeometry()).observe(document.getElementById('qr-label')); +// A live drag delivers a resize every frame. Refitting the terminal each time +// rebuilds xterm's WebGL surface and waits on the GPU, so during the drag the +// grid refits at most every 80 ms and settles once the drag ends; the preview +// scale is a transform and still tracks every frame. +// During the drag only the preview transform tracks the window; the terminal +// grid, shelf, notebook ruling and prompt settle once, 150 ms after the last +// resize event, on the 'aesel-resize-settled' event the modules listen for. function resize() { if (resizeFrame) return; resizeFrame = requestAnimationFrame(() => { resizeFrame = 0; - if (!fullscreenState.preview) { fitTerminal(); sizeShelf(); } + const dragging = document.body.classList.contains('window-resizing'); + if (!fullscreenState.preview && !dragging) { fitTerminal(); sizeShelf(); } sizePreviewBox(); scalePreview(); - reportTitleGeometry(); + if (!dragging) reportTitleGeometry(); }); } let noticeTimer = null; @@ -188,6 +196,7 @@ window.placeNotebookActivity=()=>{ }; let promptState=null; function positionPrompt(){ + if(document.body.classList.contains('window-resizing'))return; const rowHeight=terminal.options.fontSize*1.5; promptLine.style.fontSize=`${terminal.options.fontSize}px`; promptLine.style.lineHeight=`${rowHeight}px`; @@ -220,7 +229,7 @@ function updatePrompt(value){ } promptLine.addEventListener('pointerdown',event=>{event.preventDefault();terminal.focus();}); new ResizeObserver(positionPrompt).observe(terminalElement); -window.addEventListener('resize',positionPrompt); +window.addEventListener('aesel-resize-settled',positionPrompt); let draggingSelection = false, pendingOutput = '', pastedInput = false; let clickOrigin = null; @@ -478,10 +487,29 @@ function scalePreview() { previewViewport.style.transform = `translate(${left}px, ${top}px) scale(${scale})`; } new ResizeObserver(scalePreview).observe(artifact); +// macOS resizes a window synchronously and waits for every embedded frame, +// and the piece guest is busy painting at 60 fps, so each drag step waited on +// it (~75 ms of a ~100 ms step). For the drag the guest is swapped for a +// snapshot of its last frame and hidden; hidden, a step takes ~25 ms. +const previewFreeze=new Image();previewFreeze.id='preview-freeze';previewFreeze.alt='';previewFreeze.hidden=true;previewViewport.append(previewFreeze); +let freezing=false; +function freezePreview(){ + if(freezing||fullscreenState.preview||preview.hidden||window.currentPreviewMedium&&window.currentPreviewMedium!=='piece')return; + freezing=true; + preview.capturePage().then(image=>{ + if(!document.body.classList.contains('window-resizing')||image.isEmpty())return; + previewFreeze.src=image.toDataURL();previewFreeze.hidden=false;preview.style.visibility='hidden'; + }).catch(()=>{}); +} +function thawPreview(){ + freezing=false;preview.style.visibility=''; + requestAnimationFrame(()=>{previewFreeze.hidden=true;previewFreeze.removeAttribute('src');}); +} window.addEventListener('resize', () => { document.body.classList.add('window-resizing'); + freezePreview(); clearTimeout(resizeEndTimer); - resizeEndTimer=setTimeout(()=>document.body.classList.remove('window-resizing'),150); + resizeEndTimer=setTimeout(()=>{document.body.classList.remove('window-resizing');thawPreview();resize();window.dispatchEvent(new Event('aesel-resize-settled'));},150); resize(); }); @@ -529,7 +557,7 @@ function reportZoom() { } function updateWindowTitle() { const mark = /^[A-Z]$/.test(instanceLabel) ? String.fromCodePoint(0x1D56C + instanceLabel.charCodeAt(0) - 65) : `[${instanceLabel}]`; - document.title = titlePiece || 'Aesel'; + document.title = titlePiece || 'aesel'; } window.aesel.onInstanceLabel(label => { instanceLabel = label; @@ -652,16 +680,13 @@ boot().catch(error => { document.body.dataset.notebookReady='true';document.getE close();window.aesel.input(`\x1b[99;${index}~`); }})); if(provider?.backend!=='ac'){ - const modelLabel=document.createElement('label');modelLabel.textContent='Model';modelLabel.className='settings-field'; - const modelSelect=document.createElement('select');modelSelect.setAttribute('aria-label','Model');modelSelect.disabled=!!provider?.busy||!provider?.models?.length; - for(const [index,model] of (provider?.models||[]).entries()){ - const option=document.createElement('option');option.value=String(index);option.textContent=model.label; - option.selected=model.id===(provider.selectedModel??provider.model);modelSelect.append(option); - } - if(![...(provider?.models||[])].some(model=>model.id===(provider.selectedModel??provider.model)))modelSelect.selectedIndex=0; + const models=provider?.models||[]; + const chosen=provider?.selectedModel??provider?.model; const backendIndex=['ac','claude','codex'].indexOf(provider?.backend); - modelSelect.addEventListener('change',()=>{if(provider?.busy)return;window.aesel.input(`\x1b[99;4;${backendIndex};${modelSelect.value}~`);}); - modelLabel.append(modelSelect);choices.append(modelLabel); + choices.append(window.createChoicePicker({label:'Model',options:models.map(model=>({id:model.id,label:model.label,detail:model.detail})),current:Math.max(0,models.findIndex(model=>model.id===chosen)),busy:!!provider?.busy||!models.length,onSelect:index=>{ + if(provider?.busy||models[index]?.id===chosen)return; + window.aesel.input(`\x1b[99;4;${backendIndex};${index}~`); + }})); } const audioLabel=document.createElement('label');audioLabel.className='settings-field';audioLabel.textContent='Preview volume'; @@ -673,7 +698,7 @@ boot().catch(error => { document.body.dataset.notebookReady='true';document.getE volume.addEventListener('input',()=>{level.textContent=volume.value+'%';window.previewAudio?.set({volume:Number(volume.value)/100});}); mute.addEventListener('click',()=>{window.previewAudio?.set({muted:!window.previewAudio.muted});updateMute();}); audioRow.append(volume,level,mute);audioLabel.append(audioRow);menu.append(audioLabel); - const stateLine=document.createElement('p');stateLine.className='inference-status';stateLine.textContent=[provider?.mode==='local'?'Local inference':'Remote inference',provider?.status,provider?.activity].filter(Boolean).join(' · ');menu.append(stateLine); + const stateLine=document.createElement('p');stateLine.className='inference-status';stateLine.textContent=[provider?.mode==='local'?'Local inference':'Remote inference',provider?.status,provider?.activity,provider?.backend!=='ac'&&provider?.model?`running ${provider.model}`:''].filter(Boolean).join(' · ');menu.append(stateLine); if(provider?.notice){const notice=document.createElement('p');notice.className='session-notice';notice.textContent=provider.notice;menu.append(notice);} if(provider?.backend==='ac'){const count=document.createElement('p');count.className='braincell-balance';const icon=new Image();icon.src='assets/braincell.svg';icon.alt='';icon.className='provider-mark';const dollars=credits?.dollars;const usd=value=>new Intl.NumberFormat('en-US',{style:'currency',currency:'USD'}).format(value); const valid=dollars?.currency==='USD'&&[dollars.total,dollars.free,dollars.purchased].every(value=>Number.isFinite(value)&&value>=0); diff --git a/easel/desktop/scripts/linux-download.html b/easel/desktop/scripts/linux-download.html index 8e5c8b49d7..a45f1bbaac 100644 --- a/easel/desktop/scripts/linux-download.html +++ b/easel/desktop/scripts/linux-download.html @@ -12,8 +12,8 @@ sudo apt install ./Easel-0.7.0-linux-amd64.deb
chmod +x Easel-0.7.0-linux-x86_64.AppImage
 ./Easel-0.7.0-linux-x86_64.AppImage

macOS

-

Download for Apple silicon

-

ZIP archive · signed and notarized · macOS 12+

+

Download for Apple silicon

+

ZIP archive · signed and notarized · macOS 12+

If FUSE is unavailable, try --appimage-extract-and-run. On Ubuntu, use the .deb above to install the required sandbox. Do not disable the sandbox.

aesel requires sharing conversations and artifact revision references with authorized Aesthetic Computer staff for product improvement, including when using your own provider. Read and accept the disclosure before use. Hosted generation requires account access; bringing your own Claude or Codex requires its CLI and account.

Tested on Ubuntu 24.04 x86-64. ARM builds are not included. SHA-256 checksums · Aesthetic Computer

diff --git a/easel/desktop/style.css b/easel/desktop/style.css index 77d2050396..1c6fc296ab 100644 --- a/easel/desktop/style.css +++ b/easel/desktop/style.css @@ -5,6 +5,8 @@ html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--aesel #artifact{position:relative;width:100%;height:100%;box-sizing:border-box;overflow:hidden;background:#1c1728;border:1px solid #ffffff55;border-radius:0;box-shadow:2px 2px #0006;transition:none;z-index:2} #preview-viewport{position:absolute;left:0;top:0;width:var(--preview-logical-width,192px);height:var(--preview-logical-height,128px);transform-origin:0 0;image-rendering:pixelated;overflow:hidden} #piece{display:flex;width:var(--preview-logical-width,192px);height:var(--preview-logical-height,128px);image-rendering:pixelated} +#preview-freeze{position:absolute;left:0;top:0;width:var(--preview-logical-width,192px);height:var(--preview-logical-height,128px);image-rendering:pixelated;pointer-events:none} +#preview-freeze[hidden]{display:none} #version{position:absolute;right:0;top:calc(100% + 4px);color:#fff;text-shadow:1px 1px #000;font:calc(var(--aesel-qr-label-size,16px) * .75) "AC aesel Unifont",monospace;pointer-events:none;white-space:nowrap} #version:empty{display:none} #artifact.refresh{animation:refresh .35s ease-out} diff --git a/easel/desktop/transcript.js b/easel/desktop/transcript.js index 6c72030442..d53a29ebb2 100644 --- a/easel/desktop/transcript.js +++ b/easel/desktop/transcript.js @@ -7,6 +7,7 @@ const paper=document.createElement('div');paper.id='notebook-page';view.append(paper); const prose=document.createElement('div');prose.id='notebook-content';paper.append(prose); window.alignNotebookRuling=()=>{ + if(document.body.classList.contains('window-resizing'))return; const spacing=parseFloat(getComputedStyle(view).lineHeight)||24; const origin=paper.getBoundingClientRect().top; const pageTop=origin-view.getBoundingClientRect().top+view.scrollTop; @@ -16,6 +17,7 @@ window.layoutNotebookPreview?.(); }; view.addEventListener('scroll',window.alignNotebookRuling,{passive:true}); + window.addEventListener('aesel-resize-settled',window.alignNotebookRuling); new ResizeObserver(window.alignNotebookRuling).observe(view); if(title)new ResizeObserver(window.alignNotebookRuling).observe(title); const nodes=new Map(); diff --git a/easel/package.json b/easel/package.json index a5f3244025..51dc048eb1 100644 --- a/easel/package.json +++ b/easel/package.json @@ -1,6 +1,6 @@ { "name": "aesel", - "version": "0.7.15", + "version": "0.7.16", "private": true, "type": "module", "scripts": { diff --git a/easel/src/provider-picker.mjs b/easel/src/provider-picker.mjs index f4b974abc3..787e4d70b0 100644 --- a/easel/src/provider-picker.mjs +++ b/easel/src/provider-picker.mjs @@ -23,9 +23,10 @@ export function pickerModels(p) { const backend=BACKENDS[p.backend]; if(p.backend==='ac')return [{id:backend.defaultModel,label:'Automatic'}]; const choices=p.backend==='ac'?Object.entries(backend.models).map(([label,id])=>({id,label})) - :p.backend==='claude'?['fable','opus','sonnet','haiku'].map(id=>({id,label:id})) + // The CLI resolves a family alias to a dated id; a resolved id selects its family row instead of growing a "custom" row. + :p.backend==='claude'?[['fable','Claude Fable 5.1'],['opus','Claude Opus 5'],['sonnet','Claude Sonnet 5'],['haiku','Claude Haiku 4.5']].map(([family,label])=>{const resolved=String(p.model||'').includes(family)?p.model:family;return {id:resolved,label,detail:resolved};}) :[{id:'',label:'CLI default'},...(p.catalog||[]).filter(x=>!x.hidden).map(x=>({id:x.model,label:x.displayName||x.model}))]; - if(!choices.some(x=>x.id===p.model))choices.unshift({id:p.model,label:p.model||'CLI default'}); + if(!choices.some(x=>x.id===p.model))choices.unshift({id:p.model,label:p.model||'CLI default',detail:p.model?'custom':''}); return choices; } export function pickerEfforts(p) { diff --git a/system/public/aesel/index.html b/system/public/aesel/index.html index 82b901d19f..80899ee221 100644 --- a/system/public/aesel/index.html +++ b/system/public/aesel/index.html @@ -3,28 +3,38 @@ Aesel — Aesthetic Computer - + - + -
acby Aesthetic Computer
+
acby Aesthetic Computer

-

Make art and software with AI.

- Download for Mac -
Apple silicon · macOS 12+ · Linux & more
-
-
-
Interactive demo
-
Click to change the colors
-
make a garden that dances
-
+

Make pieces, pictures, sounds, papers and Game Boy games with Aesthetic Computer.

+ Download for Mac +
0.7.16 · Apple silicon · macOS 12+ · iPhone is next
+
+
aesel @jeffrey/raro v0
+ The Aesel window: a dark ruled notebook titled @jeffrey/raro, a live preview of the piece in the top-right corner with its QR code behind it, a cursor on the last line and a v0 version label. +
Type what to make. Aesel writes the piece, the corner shows it live, and the QR opens it on your phone.
+
PiecePictureSoundPaperGame Boy
+
+
+
+
    +
  • Every save publishes the piece to aesthetic.computer under your handle, and the preview reloads.
  • +
  • Sound plays from the preview with a waveform in the margin.
  • +
  • Replies are a notebook: ruled pages, code, math, diagrams and color swatches. Drag to select, right-click to copy.
  • +
  • Tap a version label to preview an earlier revision.
  • +
  • Provider is your choice: AC with daily credits, or your own Claude or Codex.
  • +
  • ⌘N opens another workspace with its own agent, preview and letter.
  • +
-

Downloads

Sign in with Aesthetic Computer.
Use AC, Claude, or Codex.

Mac Apple silicon · DMG↓Linux Ubuntu / Debian · x86-64↓AppImage Other Linux desktops · x86-64↓
Terminalcurl -fsSL https://aesthetic.computer/aesel.sh | sh

Requires Node.js 22+. Run ac after installing.

Mac 0.7.15 · Linux 0.7.0 (Easel)

+

Downloads

Sign in with Aesthetic Computer.
Use AC, Claude, or Codex.

Mac 0.7.16 · Apple silicon · macOS 12+ · DMG↓
iPhone Same account, notebook, donkey and live piece preview. Not on the App Store yet.…
diff --git a/system/public/aesel/screenshot-studio.png b/system/public/aesel/screenshot-studio.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc957e16e17458e14af13eb1054d8b1c8184cee GIT binary patch literal 28792 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 z%0D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 P8x+`{u6{1-oD!M{const o=audio.createOscillator(),g=audio.createGain(),start=audio.currentTime+i*.15;o.type='sine';o.frequency.value=hz;o.connect(g);g.connect(audio.destination);g.gain.setValueAtTime(0,start);g.gain.linearRampToValueAtTime(.08,start+.015);g.gain.exponentialRampToValueAtTime(.001,start+.4);o.start(start);o.stop(start+.42)})} -function remix(e){seed++;if(mode==='sound')play();if(mode==='game'&&e?.clientX){const r=canvas.getBoundingClientRect();player.x=Math.max(16,Math.min(464,(e.clientX-r.left)*480/r.width));player.y=Math.max(48,Math.min(330,(e.clientY-r.top)*360/r.height))}draw()} -document.querySelectorAll('[data-mode]').forEach(b=>b.addEventListener('click',()=>{mode=b.dataset.mode;document.querySelectorAll('[data-mode]').forEach(x=>x.setAttribute('aria-pressed',String(x===b)));paper.hidden=mode!=='paper';document.querySelector('#prompt').textContent=prompts[mode];document.querySelector('#demo-hint').textContent=hints[mode];canvas.setAttribute('aria-label',hints[mode]);document.querySelector('#remix').hidden=mode==='paper';draw()})); -canvas.addEventListener('click',remix);document.querySelector('#remix').addEventListener('click',()=>remix());canvas.addEventListener('keydown',e=>{if(mode==='game'&&e.key.startsWith('Arrow')){e.preventDefault();player.x=Math.max(16,Math.min(464,player.x+(e.key==='ArrowRight'?10:e.key==='ArrowLeft'?-10:0)));player.y=Math.max(48,Math.min(330,player.y+(e.key==='ArrowDown'?10:e.key==='ArrowUp'?-10:0)));draw()}else if(e.key==='Enter'||e.key===' '){e.preventDefault();remix()}}); -let last=0;function tick(now){if(now-last>80&&!document.hidden){last=now;if(!reduced.matches){t+=.08;if(mode==='piece'||mode==='sound')draw();const f=8+(frame++%4);document.querySelector('.donkey').style.backgroundPosition=`${-(f%4)*128}px ${-Math.floor(f/4)*128}px`}}requestAnimationFrame(tick)}draw();requestAnimationFrame(tick); +const donkey=document.querySelector('.donkey'),reduced=matchMedia('(prefers-reduced-motion: reduce)'); +let last=0,frame=0; +function tick(now){if(now-last>80&&!document.hidden&&!reduced.matches){last=now;const f=8+(frame++%4);donkey.style.backgroundPosition=`${-(f%4)*128}px ${-Math.floor(f/4)*128}px`}requestAnimationFrame(tick)} +requestAnimationFrame(tick); diff --git a/system/public/aesel/style.css b/system/public/aesel/style.css index bde8622955..41051ad297 100644 --- a/system/public/aesel/style.css +++ b/system/public/aesel/style.css @@ -1,6 +1,6 @@ @font-face{font-family:Pixel;src:url(pixel.woff) format('woff');font-display:swap} -:root{--ink:#292030;--paper:#f4eddb;--pink:#f588b3;--violet:#8768d7;--wood:#805337}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-underline-offset:4px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible,summary:focus-visible{outline:3px solid #6041ad;outline-offset:5px}header,main,footer{max-width:1240px;margin:auto}header{padding:28px 42px;display:flex;align-items:center;justify-content:space-between}.ac{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:13px}.ac-mark{font-family:Pixel,monospace;font-size:29px;background:var(--ink);color:#ff94c2;padding:0 7px;box-shadow:3px 3px #c6bba9}.ac-mark span{color:#86d7af}nav{display:flex;gap:30px;font-size:14px}nav a{text-decoration:none}nav a:hover{text-decoration:underline}.hero{display:grid;grid-template-columns:1fr 1.16fr;gap:65px;align-items:center;padding:65px 42px 90px}.intro h1{margin:0 0 24px;font-size:clamp(80px,9vw,128px);letter-spacing:-9px;line-height:1.15;font-family:'Comic Sans MS','Chalkboard SE',cursive;font-weight:900}.intro h1 i{font-style:normal;display:inline-block;-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:4px 6px var(--ink);color:var(--pink);transform:rotate(-7deg)}.intro h1 i:nth-child(2){color:#8dbea1;transform:rotate(7deg)}.intro h1 i:nth-child(3){color:#ebbd50;transform:rotate(-4deg)}.intro h1 i:nth-child(4){color:#8c8cdd;transform:rotate(5deg)}.intro h1 i:nth-child(5){color:#ea916b;transform:rotate(-5deg)}.intro h1 b{display:none}h2{font-size:clamp(29px,3.4vw,44px);font-weight:500;line-height:1.12;letter-spacing:-1.7px;margin:0 0 22px}p{font-size:17px;line-height:1.65;margin:0 0 26px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:34px;text-decoration:none;padding:17px 24px;border:2px solid var(--ink);box-shadow:4px 5px var(--ink);font-size:17px;font-weight:600;background:var(--pink);transition:transform .12s,box-shadow .12s}.button:hover{transform:translate(2px,2px);box-shadow:2px 3px var(--ink)}.button span{font-size:23px}.download-note{font-size:12px;margin-top:19px;color:#655b62}.studio{min-width:0;transform:rotate(2deg);border:2px solid var(--ink);box-shadow:9px 11px 0 #c7bfae;background:#d7c9f1;border-radius:12px 12px 3px 3px;overflow:hidden}.studio-top{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;font:14px Pixel,monospace;border-bottom:2px solid var(--ink)}.dots{color:#7552ac;font-size:11px;letter-spacing:3px}.canvas-wrap{position:relative;aspect-ratio:4/3;background:#252038;margin:13px;border:3px solid #4b344c;box-shadow:inset 0 0 0 3px #987bae;overflow:hidden}canvas{width:100%;height:100%;display:block;image-rendering:pixelated;cursor:crosshair}#remix{position:absolute;right:12px;top:12px;border:1px solid #fff8;border-radius:50%;width:34px;height:34px;background:#292030ad;color:white;font-size:23px}#remix:hover{background:#a74d8c}#demo-hint{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);white-space:nowrap;background:#201628c9;color:#fff5ed;font:13px Pixel,monospace;padding:5px 10px;pointer-events:none}.workbench{position:relative;min-height:95px;padding:24px 110px 26px 20px;border-top:3px solid #492c29;border-bottom:3px solid #492c29;color:#ffefd8;background-color:#805337;background-image:repeating-linear-gradient(0deg,transparent 0 12px,#452e222f 12px 15px,transparent 15px 23px),repeating-linear-gradient(4deg,transparent 0 28px,#edb77d20 28px 31px,transparent 31px 49px);box-shadow:inset 0 5px #c6905a,inset 0 -5px #503522}.prompt{font:17px/1.4 Pixel,monospace;min-height:44px}.prompt>span:first-child{color:#ff9ece;margin-right:8px}.cursor{color:#ff9ece}.donkey{position:absolute;right:12px;bottom:5px;width:90px;height:128px;background-image:url(donkey.png);background-size:512px 512px;image-rendering:pixelated;filter:drop-shadow(4px 4px 0 #321f3670);background-position:0 -256px}.media{display:flex;gap:0;background:#30253d;overflow:auto}.media button{background:none;border:0;color:#c8b6d8;font:15px Pixel,monospace;padding:15px 0;flex:1;white-space:nowrap;min-width:65px}.media button:hover{color:white;background:#ffffff10}.media button[aria-pressed=true]{color:#292030;background:#e9bc63;box-shadow:inset 0 3px #ffdaa3}.possibilities{padding:55px 42px 70px;border-top:1px solid #b4a999}.possibilities h2{font-size:30px;margin-bottom:38px}.ideas{display:grid;grid-template-columns:repeat(3,1fr);gap:45px}.ideas p{font-size:22px;line-height:1.5;margin:0}.ideas span{display:block;font:13px Pixel,monospace;color:#766779;letter-spacing:1px;margin-bottom:16px}.downloads{padding:65px 42px;background:#ddd0ed;border:2px solid var(--ink);box-shadow:5px 5px var(--ink);margin:0 42px 48px;display:grid;grid-template-columns:1fr 1fr;gap:70px}.downloads h2{font-size:38px}.small{font-size:13px;line-height:1.6;color:#625368}.download-list>a{display:flex;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid #ac9ab7;text-decoration:none;font-size:20px}.download-list>a:first-child{padding-top:0}.download-list>a:hover{color:#843d75}.download-list small{display:block;font-size:12px;margin-top:5px;color:#625368}.download-list b{font-size:27px}details{margin:22px 0;font-size:14px}summary{cursor:pointer;margin-bottom:12px}details>code{display:block;overflow-wrap:anywhere;padding:12px;background:#f4eddb;font:14px Pixel,monospace}.release{margin:18px 0 0}.privacy{font-size:13px;line-height:1.65;max-width:850px;margin:0 auto;padding:0 42px 45px;color:#695e62}.privacy strong{color:#382d3e}footer{border-top:1px solid #b4a999;padding:28px 42px;display:flex;gap:25px;font:13px Pixel,monospace}footer>span{margin-right:auto}footer>span span{color:#a05793;margin:0 5px}#paper{position:absolute;inset:0;background:#fbf3dc;padding:32px 40px;font-family:Georgia,serif;color:#302236}#paper small{font:10px Arial,sans-serif;letter-spacing:2px}#paper h3{font-size:34px;font-weight:400;margin:22px 0 16px;line-height:1.1}#paper p{font-size:13px;line-height:1.55;margin-bottom:15px}.paper-rule{border-top:1px solid #b7a496;margin:15px 0}#paper>span{font-size:11px} -@media(min-width:1400px){.hero{padding-top:90px;padding-bottom:110px}}@media(max-width:850px){.hero{gap:35px;padding-top:35px}.intro h1{font-size:86px}p{font-size:15px}.button{font-size:14px;padding:15px;gap:15px}.downloads{gap:25px;padding:35px}.ideas p{font-size:18px}#paper{padding:20px}#paper h3{font-size:25px;margin:12px 0}#paper p{font-size:11px}}@media(max-width:650px){header{padding:22px}.ac>span:last-child{font-size:11px}nav{gap:17px;font-size:12px}.hero{grid-template-columns:1fr;padding:30px 25px 65px;gap:46px}.intro{text-align:center}.intro h1{font-size:112px;margin-bottom:20px}.intro h2{font-size:37px}.intro p{font-size:16px}.studio{transform:rotate(1deg);max-width:500px;width:100%;margin:auto}.possibilities{padding:40px 25px}.ideas{grid-template-columns:1fr;gap:28px}.ideas p{font-size:21px}.ideas span{margin-bottom:8px}.downloads{grid-template-columns:1fr;margin:0 20px 35px;padding:30px;gap:10px}.downloads h2{font-size:34px}.privacy{padding:0 25px 30px}footer{padding:24px;flex-wrap:wrap;gap:16px}footer>span{width:100%}#paper{padding:25px 32px}#paper h3{font-size:30px}#paper p{font-size:12px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}} +:root{--ink:#292030;--paper:#f4eddb;--pink:#f588b3;--violet:#8768d7;--wood:#805337}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-underline-offset:4px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible,summary:focus-visible{outline:3px solid #6041ad;outline-offset:5px}header,main,footer{max-width:1240px;margin:auto}header{padding:28px 42px;display:flex;align-items:center;justify-content:space-between}.ac{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:13px}.ac-mark{font-family:Pixel,monospace;font-size:29px;background:var(--ink);color:#ff94c2;padding:0 7px;box-shadow:3px 3px #c6bba9}.ac-mark span{color:#86d7af}nav{display:flex;gap:30px;font-size:14px}nav a{text-decoration:none}nav a:hover{text-decoration:underline}.hero{display:grid;grid-template-columns:1fr 1.16fr;gap:65px;align-items:center;padding:65px 42px 90px}.intro h1{margin:0 0 24px;font-size:clamp(80px,9vw,128px);letter-spacing:-9px;line-height:1.15;font-family:'Comic Sans MS','Chalkboard SE',cursive;font-weight:900}.intro h1 i{font-style:normal;display:inline-block;-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:4px 6px var(--ink);color:var(--pink);transform:rotate(-7deg)}.intro h1 i:nth-child(2){color:#8dbea1;transform:rotate(7deg)}.intro h1 i:nth-child(3){color:#ebbd50;transform:rotate(-4deg)}.intro h1 i:nth-child(4){color:#8c8cdd;transform:rotate(5deg)}.intro h1 i:nth-child(5){color:#ea916b;transform:rotate(-5deg)}.intro h1 b{display:none}h2{font-size:clamp(29px,3.4vw,44px);font-weight:500;line-height:1.12;letter-spacing:-1.7px;margin:0 0 22px}p{font-size:17px;line-height:1.65;margin:0 0 26px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:34px;text-decoration:none;padding:17px 24px;border:2px solid var(--ink);box-shadow:4px 5px var(--ink);font-size:17px;font-weight:600;background:var(--pink);transition:transform .12s,box-shadow .12s}.button:hover{transform:translate(2px,2px);box-shadow:2px 3px var(--ink)}.button span{font-size:23px}.download-note{font-size:12px;margin-top:19px;color:#655b62}.studio{min-width:0;margin:0;border:2px solid var(--ink);box-shadow:9px 11px 0 #c7bfae;background:#d7c9f1;border-radius:12px 12px 3px 3px;overflow:hidden}.studio-top{display:flex;justify-content:space-between;align-items:center;padding:12px 15px;font:14px Pixel,monospace;border-bottom:2px solid var(--ink)}.dots{color:#7552ac;font-size:11px;letter-spacing:3px}.workbench{position:relative;min-height:95px;margin:0;padding:22px 110px 24px 20px;border-top:3px solid #492c29;border-bottom:3px solid #492c29;color:#ffefd8;background-color:#805337;background-image:repeating-linear-gradient(0deg,transparent 0 12px,#452e222f 12px 15px,transparent 15px 23px),repeating-linear-gradient(4deg,transparent 0 28px,#edb77d20 28px 31px,transparent 31px 49px);box-shadow:inset 0 5px #c6905a,inset 0 -5px #503522}.prompt{display:block;font:15px/1.5 Pixel,monospace;min-height:44px}.prompt>span:first-child{color:#ff9ece;margin-right:8px}.cursor{color:#ff9ece}.donkey{position:absolute;right:12px;bottom:5px;width:90px;height:128px;background-image:url(donkey.png);background-size:512px 512px;image-rendering:pixelated;filter:drop-shadow(4px 4px 0 #321f3670);background-position:0 -256px}.shot{display:block;width:100%;height:auto;margin:0;border-top:2px solid var(--ink)}.facts{padding:10px 42px 70px}.facts ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:30px 45px}.facts li{font-size:19px;line-height:1.5;padding-top:14px;border-top:2px solid var(--ink)}.soon{display:flex;justify-content:space-between;align-items:center;padding:15px 0;font-size:20px;color:#4d3f55}.soon b{font-size:27px}.media{display:flex;gap:0;background:#30253d;overflow:auto}.media button,.media span{background:none;border:0;color:#c8b6d8;font:15px Pixel,monospace;padding:15px 0;flex:1;white-space:nowrap;min-width:65px}.media span:first-child{color:#292030;background:#e9bc63;box-shadow:inset 0 3px #ffdaa3}.downloads{padding:65px 42px;background:#ddd0ed;border:2px solid var(--ink);box-shadow:5px 5px var(--ink);margin:0 42px 48px;display:grid;grid-template-columns:1fr 1fr;gap:70px}.downloads h2{font-size:38px}.small{font-size:13px;line-height:1.6;color:#625368}.download-list>a{display:flex;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid #ac9ab7;text-decoration:none;font-size:20px}.download-list>a:first-child{padding-top:0}.download-list>a:hover{color:#843d75}.download-list small{display:block;font-size:12px;margin-top:5px;color:#625368}.download-list b{font-size:27px}.release{margin:18px 0 0}.privacy{font-size:13px;line-height:1.65;max-width:850px;margin:0 auto;padding:0 42px 45px;color:#695e62}.privacy strong{color:#382d3e}footer{border-top:1px solid #b4a999;padding:28px 42px;display:flex;gap:25px;font:13px Pixel,monospace}footer>span{margin-right:auto}footer>span span{color:#a05793;margin:0 5px} +@media(min-width:1400px){.hero{padding-top:90px;padding-bottom:110px}}@media(max-width:850px){.hero{gap:35px;padding-top:35px}.intro h1{font-size:86px}p{font-size:15px}.button{font-size:14px;padding:15px;gap:15px}.downloads{gap:25px;padding:35px}.facts ul{grid-template-columns:1fr 1fr;gap:22px 30px}.facts li{font-size:17px}}@media(max-width:650px){header{padding:22px}.ac>span:last-child{font-size:11px}nav{gap:17px;font-size:12px}.hero{grid-template-columns:1fr;padding:30px 25px 65px;gap:46px}.intro{text-align:center}.intro h1{font-size:112px;margin-bottom:20px}.intro h2{font-size:37px}.intro p{font-size:16px}.studio{max-width:594px;width:100%;margin:auto}.facts{padding:0 25px 45px}.facts ul{grid-template-columns:1fr;gap:18px}.facts li{font-size:17px}.downloads{grid-template-columns:1fr;margin:0 20px 35px;padding:30px;gap:10px}.downloads h2{font-size:34px}.privacy{padding:0 25px 30px}footer{padding:24px;flex-wrap:wrap;gap:16px}footer>span{width:100%}.workbench{padding:18px 100px 20px 16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}} .donkey{transform:scaleX(-1)} -- 2.51.2 From 81d9cc78929783d01dc2df1334d5c20eeab91895 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 20:46:37 -0700 Subject: [PATCH 09/10] =?UTF-8?q?deadlines:=20two=20drafts=20open=20?= =?UTF-8?q?=E2=80=94=20Paul=20R.=20Judy=20(Whistlegraph=20Chamber)=20and?= =?UTF-8?q?=20Squeaky=20Wheel=20(Note(s)pat(ial)=20Native=20=E2=80=94=20Bu?= =?UTF-8?q?ffalo);=20nineteen=20rows=20from=20the=20Sept=2019=20scout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Public WIP pages at /paul-r-judy-2026 and /squeaky-wheel-2027, each an "Application at a Glance" mirror of the live form; the vault holds the RESEARCH + DRAFT v0 for both. Board rows now point at the pages. The scout (grants/scout-2026-09-19/report.md) adds: LACE Lightning Fund (Sept 23, verify), CTM Spatial Audio Lab + Research Networking Day, Wave Farm, MacDowell, A MAZE, COLA IMAP, DAAD Berlin, Processing Foundation, Rhizome microgrants; CURRENTS and Bogliasco paused on fees; and jobs — UCSC Sound & Media Art (Oct 12, strongest fit), IU Bloomington, Hamilton, Fitchburg State, Texas A&M, Cal Academy of Sciences, Anthropic DevRel, UCSC adjunct pool. --- grants/scout-2026-09-19/report.md | 82 ++++++ .../deadlines/index.html | 239 +++++++++++++++++- system/public/paul-r-judy-2026/index.html | 181 +++++++++++++ system/public/squeaky-wheel-2027/index.html | 167 ++++++++++++ 4 files changed, 663 insertions(+), 6 deletions(-) create mode 100644 grants/scout-2026-09-19/report.md create mode 100644 system/public/paul-r-judy-2026/index.html create mode 100644 system/public/squeaky-wheel-2027/index.html diff --git a/grants/scout-2026-09-19/report.md b/grants/scout-2026-09-19/report.md new file mode 100644 index 0000000000..e55565f3ce --- /dev/null +++ b/grants/scout-2026-09-19/report.md @@ -0,0 +1,82 @@ +# Opportunity scout — 2026-09-19 + +Window: deadlines 2026-10-03 → 2027-04-30, or rolling. Items already on the board are excluded. "Verified" = the live page was fetched today (2026-09-19) and the deadline read from it; "snippet" = search-result text only, confirm before filing. Fees over $10 are flagged `FEE`. + +Urgent, closing before the window opens: **LACE 2027 Lightning Fund** ($6,000 project grants, LA artists, Warhol-funded) closes **2026-09-23** — https://app.entrythingy.com/calls/external/2027-lightning-fund/ (snippet). **Art Omi Music 2027** (already on board) closes 2026-10-01. + +## A. New-media opportunities (ranked) + +| # | Name | Deadline | Amount / support | Fee | Location | Fit for AC (lead subsystem) | URL | Verified | +|---|------|----------|------------------|-----|----------|-----------------------------|-----|----------| +| 1 | UC Santa Cruz — see Jobs #1 (creative-coding teaching post, first review 10-12) | — | — | — | — | — | — | — | +| 2 | Wave Farm 2027 Research & Production (Spatial Sound Residency / Transmission Art Residency / Radio Art Fellowship) | 2026-12-01 23:59 EST | $1,000 (10-day residencies) / $2,000 (2-month fellowships) + housing, facilities; international | none | Acra, NY | **AC Native OS** — spatial-audio laptop fleet fits the Spatial Sound Residency; Whistlegraph fits Transmission Art | https://wavefarm.org/ta/residency-program/info-apply | fetched 2026-09-19 | +| 3 | CTM Festival 2027 — Spatial Audio Experimentation Lab (Jan 21–24, 2027) | 2026-10-15 | several days of practical experimentation in Berlin; support unspecified | none listed | Berlin | **AC Native OS** — spatial instrument on old laptops | https://www.ctm-festival.de/festival-2027/open-calls/spatial-audio-experimentation-lab | fetched 2026-09-19 (index page) | +| 4 | CTM Festival 2027 — Research Networking Day | 2026-10-25 | presentation slot for independent artist-researchers | none listed | Berlin | **AC papers press** — present KidLisp/Menu Band research | https://www.ctm-festival.de/festival-2027/open-calls/research-networking-day-2027 | fetched 2026-09-19 (index page) | +| 5 | CURRENTS 2027 Art & Technology Festival, Santa Fe (Jun 11–20, 2027) — Multimedia Performance / Installation | 2026-12-08 23:59 MST | travel, lodging, shipping, equipment support (case by case) | `FEE` $30 single / $25 each multiple; hardship waivers first-come | Santa Fe, NM | **MacNeoPolitan** — laptop-fleet performance category | https://currentsnewmedia.org/submission-guidelines-2027/ | fetched 2026-09-19 | +| 6 | MacDowell Fellowship — Fall/Winter 2027–28 (Interdisciplinary Arts) | 2027-02-10 (opens 2027-01-15) | fully funded residency + need-based stipend and travel grants | none listed | Peterborough, NH | **AC papers press** — a writing/building residency for the KidLisp book or No Paint archive | https://www.macdowell.org/apply/apply-for-fellowship | fetched 2026-09-19 | +| 7 | A MAZE. / Berlin 2027 (playable media festival) | 2026-10-31 | curated exhibition slot, presentation, network; no direct funding | not stated | Berlin | **No Paint** (or oskiewar) as arthouse playable media | https://callopen.art/open-calls/f616fcea-992b-4b0a-8ca9-e33d9b090c34 (primary: 2027.amaze-berlin.de/submissions — TLS error today) | aggregator fetched; primary unverified | +| 8 | Prix Ars Electronica 2027 (Interactive Art+, Digital Humanity, New Animation Art) | opens 2027-01; 2026 closed early March — expect ~2027-03 | up to €10,000 per category + Golden Nica | none | Linz (remote entry) | **Whistlegraph** for Interactive Art+; KidLisp for Digital Humanity | https://ars.electronica.art/prix/en/opencall/ | fetched 2026-09-19 ("launch in January 2027") | +| 9 | DAAD Artists-in-Berlin Program 2028 — Music & Sound (12 months) | application window opens 2026-11; deadline in 2026-12 (exact date TBA) | 12-month funded Berlin residency, stipend, apartment | none | Berlin | **Menu Band** — fleet instrument as sound practice | https://www.berliner-kuenstlerprogramm.de/en/application/ | snippet only — verify exact December date | +| 10 | Onassis AiR / ONX 2027–28 (Athens; technical residencies for digital productions) | 2026/27 call closed 2026-03-03 — expect 2027-01→03 call | artist fee + research/production budget + housing + travel | none | Athens | **AC Native OS** — "technical residencies for performing arts and digital productions" | https://www.onassis.org/initiatives/onassis-air/air-onx-residencies-onassis-air-open-call-2026-27 | 2026 e-flux notice fetched; 2027 call unannounced | +| 11 | NEW INC Year 14 (New Museum incubator, 2027–28) | Y13 call ran 2026-02-03 → 03-02; expect 2027-02 → 03 | mentorship, space, network; **members pay monthly dues** (not a cash award); hybrid, non-NYC allowed | dues | NYC / hybrid | **Aesthetic Inc** — the company track | https://www.newmuseum.org/new-inc/open-call/ | ITP notice fetched; 2027 dates unannounced; newmuseum.org returned empty | +| 12 | Bogliasco Foundation Fellowship — Fall 2027 / Spring 2028 | 2026-12-01 / 2027-03-11 | one-month residency, room, board, workspace (no travel) | `FEE` $30 (rises to $45 in final week) | Bogliasco, Italy | **AC papers press** | https://www.bfny.org/en/apply/requirements | fetched 2026-09-19 | +| 13 | NIME 2027 (Paris, Jun 22–25) — papers, music, installations | CFP not yet posted; NIME deadlines run late Jan–Feb | conference presentation; no fee to submit, reg fee if accepted | reg fee | Paris | **Menu Band / notepat** — new interface for musical expression | https://nime.org/ | snippet only | +| 14 | xCoAx 2027 (Computation, Communication, Aesthetics & X) | 2026 deadline was 02-15 AoE; expect 2027-02 | paper/artwork/performance track; conference | reg fee if accepted | TBA (Europe) | **AC papers press** — KidLisp paper + live-coded performance | https://xcoax.org/ | snippet only | +| 15 | SIGGRAPH 2027 Art Papers / Art Gallery (Aug 8–12, 2027) | TBD; 2026 Art Papers closed late Jan | juried publication in Leonardo + exhibition | none to submit | LA (SIGGRAPH 2027 city TBD) | **AC papers press** | https://s2026.siggraph.org/program/art-papers/ | snippet only — 2027 site not live | +| 16 | Lumen Prize 2027 | 2026 window 01-26 → 05-27; expect 2027-01 → 05 | cash prizes (Gold £/$ tier), touring | `FEE` (Lumen charges an entry fee) | remote | **Whistlegraph** | https://lumenprize.org/ | snippet only | +| 17 | MUTEK Montréal 2027 call for projects | 2026 call closed 01-31; expect 2026-12 → 2027-01 | performance slot, fee, travel for selected | none | Montréal | **MacNeoPolitan** live A/V | https://montreal.mutek.org/en/news/call-for-projects-2026 | snippet only | +| 18 | Games for Change Awards 2027 | 2026 deadline 02-02; expect 2027-02 | award + festival showcase (NYC, July) | check | NYC / remote entry | **KidLisp** (learning) or oskiewar | https://festival.gamesforchange.org/2026-awards-categories | snippet only | +| 19 | Rhizome Microgrants 2026 (+ Octant "open internet" top-up) | 2025 round launched 09-15; 2026 round expected imminently | $500–$1,500 + Octant top-up | none | remote | **AC social network** — community-owned platform theme | https://rhizome.org/editorial/2025/sep/15/open-call-microgrants-2025/ | snippet only — rhizome.org returned 403 | +| 20 | Eyebeam 2027 NYC residency (12 weeks) | "open call in the winter" for spring cohort | $4,000 + activation funds (2026 terms) | none | NYC | **Whistlegraph / AC** | https://eyebeam.org/open-call-2026/ (2026 page now 404) | snippet only; **eligibility: ≤10 yrs professional practice — likely excludes** | +| 21 | Berkman Klein Center Fellowship 2027–28 (Harvard) | 2026–27 deadline was 2025-12-05; expect ~2026-12 | fellowship, some stipends | none | Cambridge / remote | **AC social network** — creative-computing social platform as research object | https://cyber.harvard.edu/page/open-call-fellowship-applications-2026-and-2026-2027 | snippet only | +| 22 | City of LA DCA — COLA Independent Master Artist Project grants FY2027–28 | FY26–27 cycle: opened 09-24, closed 10-31; expect **~2026-10-30** | ~$10,000 project grant + exhibition | none | LA residents | **No Paint** (decade-long body of work suits "master artist") | https://culture.lacity.gov/grants/independent-master-artist-projects-grant-program | snippet only — page 404 today; check culture.lacity.gov this week | +| 23 | Sónar+D 2027 Project Area (Barcelona, Jun 17–19) | 2027 call "being developed"; prior calls closed Dec–Jan | exhibition slot | check | Barcelona | **Whistlegraph** interactive | https://sonar.es/en/project-area | snippet only | +| 24 | Tribeca 2027 Games (incl. VR/AR/mobile) | 2026 tiers: 10-29 / 01-14 / 02-11 — expect same pattern | official selection | `FEE` $40 / $60 / $80 | NYC | oskiewar / No Paint | https://tribecafilm.com/festival/submissions | 2026 page fetched; 2027 not posted | +| 25 | Processing Foundation Fellowship 2027 | opens spring; deadline ~2027-05-02 (just outside window) | stipend (prior years ~$10k) | none | remote | **KidLisp** — kid-facing creative-coding language | https://processingfoundation.org/fellowships | snippet only | +| 26 | Creative Capital 2028 Award | 2027 cycle ran 2026-02 → 04-02; expect 2027-02 → 04 | up to $50,000 + services | none | US | **AC** whole | https://creative-capital.org/creative-capital-award/award-application/ | snippet only (board has "Creative Capital 2026" — this is the next cycle) | +| 27 | IDFA DocLab 2027 (interactive/immersive) | 2026 deadlines 04-14 (grant) / 06-16 (final); expect 2027-04 → 06 | selection; Film Fund grant for Dutch co-pros | `FEE` entry fee | Amsterdam | Whistlegraph as documentary-adjacent | https://professionals.idfa.nl/program/festival-entries/ | snippet only | + +Excluded after checking: Pioneer Works Tech (invite-only), Bemis (paused 2027–28), Headlands 2027 (closed 06-01; 2028 opens 2027-04), Recess (2026 call closed), Signal Culture (call not yet open, Endicott move), Gray Area Incubator (Bay Area residency required, $200/mo), EMAP 2027 (EU residents only), Sundance New Frontier (defunct), transmediale 2027 (all calls closed), Delfina New Media (closed 05-11), Fusebox (next fest 2028), Bellagio 2027 (closed 03-20), Sonic Connections (Creative Europe only, closed), Google Creative Fellowship (≤5 yrs experience). + +Nomination-only (cannot apply): USA Fellowship ($50k), Knight Arts + Tech Fellowship ($50k, administered by USA), Herb Alpert Award ($75k), Civitella Ranieri, Mozilla Fellows (nominations). Worth cultivating nominators; no action item. + +## B. Jobs & career advancement (ranked) + +| # | Position | Deadline / review | Salary | Fee | Location | Fit for AC (lead subsystem) | URL | Verified | +|---|----------|-------------------|--------|-----|----------|-----------------------------|-----|----------| +| 1 | UC Santa Cruz — Assistant Teaching Professor of Sound and Media Art (Music Dept; core faculty, online Creative Technologies major) — start 2027-07-01 | **first review 2026-10-12 23:59 PT**; final 2027-06-30 | $89,400–$116,500 (9-mo) | — | Santa Cruz (online major) | **KidLisp** — post explicitly names creative coding, p5.js, Max/SuperCollider, online pedagogy; needs 2 syllabi (one creative coding), student evals, 3–5 letters | https://recruit.ucsc.edu/JPF02127 | fetched 2026-09-19 | +| 2 | Indiana University Bloomington — TT Assistant/Associate Professor of Digital Art (Eskenazi) — start 2027-08-01 | **review begins 2026-10-15**, until filled | $65,000–$80,000 | — | Bloomington, IN | **Whistlegraph / AC** — call lists creative coding, generative art, interactive media, game art; needs 20-image portfolio + 20 student images | https://indiana.peopleadmin.com/postings/33971 | fetched 2026-09-19 | +| 3 | Texas A&M PVFA — TT Assistant/Associate Professor of Technical Arts & Interactive Media — start 2027-08-01 | not visible (HigherEdJobs blocked fetch) | not listed | — | College Station, TX | **AC runtime** — "computational media, digital performance, interactive systems" | https://www.higheredjobs.com/faculty/details.cfm?JobCode=179481608 | snippet only — pull deadline from CAA career center | +| 4 | Hamilton College — Assistant Professor of Time-based Media (Studio Art) — start 2027-07-01 | **review begins 2026-11-15** | $94,500–$100,360 (9-mo) | — | Clinton, NY | **Whistlegraph** — video/animation teaching load; 4 then 5 courses/yr | https://apply.interfolio.com/192288 (details: https://newmediacaucus.org/opportunities/assistant-professor-of-time-based-media-studio-art-department) | NMC page fetched 2026-09-19 | +| 5 | UMKC Conservatory — TT Assistant Professor of Music Composition (electroacoustic / technology-integrated) — start Fall 2027 | rolling, open until filled (posted 2026-07-31; one aggregator lists 09-15) | "commensurate" | — | Kansas City, MO | **Menu Band** — creative coding, interactive systems, generative composition named; **requires DMA/PhD in composition** | https://jobs.chronicle.com/job/38021217/ | fetched 2026-09-19 | +| 6 | Fitchburg State University — TT Assistant Professor, Game Design — start 2027-09-01 | **2026-10-04** (review 10-05) | $72,000–$78,000 | — | Fitchburg, MA | oskiewar / No Paint — indie, art, serious games named | https://jobs.chronicle.com/job/38026495/assistant-professor-game-design/ | fetched 2026-09-19 | +| 7 | California Academy of Sciences — Associate Director of Experience Design (leads interactive/digital/spatial team) | open; posted 2026-09-16 | $150,000–$165,000 | — | San Francisco, hybrid 3 days | **AC Native OS** installations; wants 10+ yrs exhibition design + 3–5 yrs leadership | https://job-boards.greenhouse.io/californiaacademyofsciences/jobs/5421489008 | mirror fetched 2026-09-19 | +| 8 | UNC Greensboro — TT Assistant Professor of Media Studies (History & Critical Analysis of Interactive and Emerging Media) — start 2027-08-01 | not captured | — | — | Greensboro, NC | **AC papers press** — scholarly line | https://newmediacaucus.org/opportunities/tenure-track-assistant-professor-of-media-studies | NMC listing fetched; deadline not shown | +| 9 | NC State — Professor of the Practice in Media Arts and Production (Communication) | not captured | — | — | Raleigh, NC | **Whistlegraph** — "emerging technologies" storytelling | https://newmediacaucus.org/opportunities/professor-of-the-practice-in-media-arts-and-production | NMC listing fetched; deadline not shown | +| 10 | University of Tampa — TT Assistant Professor, Communication / Emerging Media (interactive design, XR; MASEM program) — start 2027-08-15 | not captured | — | — | Tampa, FL | AC runtime — interactive-design teaching | https://jobs.chronicle.com/job/38034252/assistant-professor-communications/ | snippet only | +| 11 | UT Austin RTF — TT Assistant Professor, Film & Media Industry Studies (incl. games, music industries) — start Fall 2027 | screening from 2026-10-01, until filled | — | — | Austin, TX | weak — PhD industry-studies scholar; listed for completeness | https://faculty.utexas.edu/career/189937 | Chronicle page fetched | +| 12 | Anthropic — Developer Relations Engineer / Developer Relations Lead (Developer Education Lead posting now closed, was $290k–$365k) | open per Anthropic careers listing | DevEd Lead band $290,000–$365,000 (closed); DevRel bands not shown | — | SF / NYC, some remote | **Aesthetic Code harness** — technical content + workshops + hackathons; builds on Claude-in-AC work | https://www.anthropic.com/careers/jobs (DevRel Eng mirror: https://www.builtinnyc.com/job/developer-relations-engineer/6704463) | careers index fetched; individual DevRel posting unverified | +| 13 | Google Creative Lab — Creative Technologist (NYC) | posting closed as of today; Creative Lab hires this role recurrently | $162,000–$247,000 + bonus/equity (last posting) | — | NYC hybrid | **AC runtime** — prototype-to-launch, ML integration; 10 yrs coding req | https://www.google.com/about/careers/applications/jobs/results/119975014175777478-creative-technologist-creative-lab | mirror says closed — watch for reopen | +| 14 | Yale — Director, Center for Collaborative Arts and Media (CCAM) | review began 2026-05-01, until filled — may be filled | $82,000–$130,000 | — | New Haven, CT | **AC papers press / Menu Band** — arts-tech center lead; needs terminal degree + 5 yrs higher-ed leadership | https://ccam.yale.edu/node/942 | snippet only — confirm still open | +| 15 | UCSC Computational Media — Adjunct Professor Pool (2026-27) | final 2027-04-30 | part-time | — | Santa Cruz | **KidLisp** — foot in the door alongside #1 | https://recruit.ucsc.edu/JPF02068 | snippet only | +| 16 | NYU Berlin — Part-time Lecturer, Interactive Media Arts | posted 2026-09-17 | part-time | — | Berlin | Whistlegraph — pairs with DAAD/CTM if Berlin is a lane | https://apply.interfolio.com/193289 | Interfolio page fetched but empty — snippet | +| 17 | Processing Foundation — p5.js / Processing Project Lead (rotating open calls) | none open today | contract | — | remote | **KidLisp** — the one org whose mission overlaps | https://processingfoundation.org/employment | fetched (no posting) | + +Checked, nothing open: UCLA DMA (only 2025–26 part-time lecturer pool on Recruit), CalArts (only a film/media composition post via jobs.art, date unverified), USC IMGD (adjunct only), ArtCenter, NYU ITP/IMA (Associate/Full search was for Fall 2026), Georgia Tech Music Tech (2018 listing), CMU Sound Media (Fall 2026, closed), Temple Creative Technologist (Fall 2026), Juilliard Lead Creative Technologist (Jan 2026 post, stale), Onassis ONX Senior Manager (closed 08-31), Meow Wolf Creative Engineer (removed), OpenAI (no creative/DevEd role surfaced; Sora shut down), CCA (closing 2027), Apple/Nintendo/Unity/Figma (nothing relevant surfaced). + +## Next actions by date + +- 2026-09-23 LACE Lightning Fund ($6k, LA) — 4 days. +- 2026-10-04 Fitchburg State game design. +- 2026-10-12 **UCSC Sound & Media Art** — the strongest fit on both lists. +- 2026-10-15 IU Bloomington Digital Art; CTM Spatial Audio Lab. +- 2026-10-25 CTM Research Networking Day. +- ~2026-10-30 COLA IMAP (confirm cycle opened). +- 2026-10-31 A MAZE Berlin. +- 2026-11-15 Hamilton College. +- 2026-12-01 Wave Farm; Bogliasco Fall 2027. +- 2026-12 DAAD Berlin (music & sound); Berkman Klein (expected). +- 2026-12-08 CURRENTS 2027. +- 2027-01 Prix Ars, MUTEK, NEW INC, Onassis AiR, NIME/xCoAx/SIGGRAPH CFPs expected. +- 2027-02-10 MacDowell Fall/Winter 27–28. +- 2027-03-11 Bogliasco Spring 2028. diff --git a/system/public/papers.aesthetic.computer/deadlines/index.html b/system/public/papers.aesthetic.computer/deadlines/index.html index c23eff45f7..614ccfb7e9 100644 --- a/system/public/papers.aesthetic.computer/deadlines/index.html +++ b/system/public/papers.aesthetic.computer/deadlines/index.html @@ -926,9 +926,11 @@ deadline: '2026-10-01', deadlineExtra: '23:59 ET', status: 'go', - statusLabel: 'Best Whistlegraph fit', - draftPath: 'funding-pipeline-2026-08-07/PROPOSAL-OPTIONS.md', - notes: 'One $10,000 or two $5,000 grants. New participatory chamber work where drawing is notation, conducting gesture and public learning system.', + statusLabel: 'Drafting', + draftPath: 'paul-r-judy-2026/DRAFT.md', + proposalUrl: 'https://aesthetic.computer/paul-r-judy-2026', + proposalLabel: 'Whistlegraph Chamber', + notes: 'One $10,000 or two $5,000 grants. New participatory chamber work where drawing is notation, conducting gesture and public learning system. Draft v0 2026-09-19: Whistlegraph Chamber — a 25-minute work for one drawer and three players, the score drawn live on a lit board, the last movement played by the audience; $10,000 for performer fees, two performances, a filmed multitrack and an open score edition. Form fields, 12-month timeline and budget drafted against the live form. Needs a CV and Jeffrey\'s go.', }, { section: 'submitted', @@ -1011,9 +1013,12 @@ track: 'Artist track — AC Native OS / Whistlegraph', deadline: '2026-10-02', conference: 'Jun 11–26, 2027, Buffalo NY · $1,000 + $300 fee + housing + $400 travel + childcare', - status: 'new', - statusLabel: 'New', - notes: 'Artist track names video games, sonic arts, installation, performance; optional skill-share = KidLisp workshop. Needs SSN/ITIN. Google Form. Notification Dec 18. Grade A.', + status: 'go', + statusLabel: 'Drafting', + proposalUrl: 'https://aesthetic.computer/squeaky-wheel-2027', + proposalLabel: 'Note(s)pat(ial) Native — Buffalo', + draftPath: 'squeaky-wheel-2027/DRAFT.md', + notes: 'Artist track names video games, sonic arts, installation, performance; optional skill-share = KidLisp workshop. Needs SSN/ITIN. Google Form. Notification Dec 18. Grade A. Draft v0 2026-09-19: Artist track, June 11–26, 2027 — the Buffalo edition of Note(s)pat(ial) Native on locally sourced surplus laptops, plus its first film with Squeaky Wheel\'s cameras and editing suite; KidLisp skill-share. All Google Form answers drafted at the guide\'s lengths. Needs the CultureHub recording link and two references.', }, { section: 'open', @@ -1051,6 +1056,38 @@ statusLabel: 'New', notes: 'Posted July 20, 2026, no end date. Bachelor\'s or equivalent; wants live-coding community/festival participation. Getting on the roster positions him for spring 2027 and the full-time Electronic Production & Design line (R0011343, Jan 2027 start, open until filled). Letter + CV with worklist + 3 refs. Grade A (part-time).', }, + { + section: 'rolling', + venue: 'California Academy of Sciences — Associate Director of Experience Design', + venueUrl: 'https://job-boards.greenhouse.io/californiaacademyofsciences/jobs/5421489008', + track: 'Leads the interactive / digital / spatial team — AC Native installations', + deadline: null, + conference: '$150,000–$165,000 · San Francisco, hybrid 3 days', + status: 'candidate', + statusLabel: 'Posted Sept 16', + notes: 'Wants 10+ years exhibition design and 3–5 years leadership. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'rolling', + venue: 'Anthropic — Developer Relations', + venueUrl: 'https://www.anthropic.com/careers/jobs', + track: 'DevRel engineer / lead — technical content, workshops; builds on Claude-in-AC and the Aesthetic Code harness', + deadline: null, + status: 'candidate', + statusLabel: 'Watch', + notes: 'The Developer Education Lead posting ($290k–$365k) has closed; DevRel postings recur. Individual posting unverified. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'rolling', + venue: 'UC Santa Cruz — Computational Media adjunct pool 2026–27', + venueUrl: 'https://recruit.ucsc.edu/JPF02068', + track: 'Part-time — a foot in the door alongside the Sound & Media Art post', + deadline: null, + deadlineExtra: 'final 2027-04-30', + status: 'candidate', + statusLabel: 'Track', + notes: 'Snippet only. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, { section: 'rolling', venue: 'Times Square Arts — Midnight Moment', @@ -1107,6 +1144,16 @@ draftPath: 'smarthistory-essay/PITCH.md', notes: '800–1,500 words on a single artwork or monument, conversational tone, no AI-authored prose. Email beth@smarthistory.org + steven@smarthistory.org with CV; topics claimed via Trello. See style checklist.', }, + { + section: 'rolling', + venue: 'Rhizome — Microgrants 2026', + venueUrl: 'https://rhizome.org/editorial/2025/sep/15/open-call-microgrants-2025/', + track: '$500–$1,500 + Octant open-internet top-up — AC as a community-owned platform', + deadline: null, + status: 'candidate', + statusLabel: 'Watch — round expected', + notes: 'The 2025 round launched Sept 15; the 2026 round was not yet posted on 2026-09-19 (rhizome.org refused fetches). Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, // --- Decided (submitted + resolved) --- { @@ -1493,6 +1540,105 @@ statusLabel: 'Verify terms', notes: 'Essay-shaped prize; the monthly AC essays and the free-vs-open paper are the raw material. Confirm rights, length and judging before drafting. Sourced from the Fuser Assembly newsletter, 2026-09-16.', }, + { + section: 'open', + venue: 'LACE — 2027 Lightning Fund', + venueUrl: 'https://app.entrythingy.com/calls/external/2027-lightning-fund/', + track: '$6,000 project grants for LA artists (Warhol-funded)', + deadline: '2026-09-23', + status: 'verify', + statusLabel: 'Verify — closes in days', + notes: 'Search snippet only; confirm the deadline and form on the live call before spending an hour on it. Lands during the CultureHub residency. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'CTM Festival 2027 — Spatial Audio Experimentation Lab', + venueUrl: 'https://www.ctm-festival.de/festival-2027/open-calls/spatial-audio-experimentation-lab', + track: 'Lab, Berlin, Jan 21–24, 2027 — AC Native spatial fleet', + deadline: '2026-10-15', + conference: 'Several days of practical spatial-audio experimentation; support unspecified', + status: 'new', + statusLabel: 'New', + notes: 'The one call this fall whose subject is literally the piece: a spatial instrument on old laptops. Pairs with the Research Networking Day (Oct 25) and a possible DAAD Berlin application. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'CTM Festival 2027 — Research Networking Day', + venueUrl: 'https://www.ctm-festival.de/festival-2027/open-calls/research-networking-day-2027', + track: 'Presentation slot for independent artist-researchers — papers press', + deadline: '2026-10-25', + status: 'candidate', + statusLabel: 'With the Lab', + notes: 'Only worth filing alongside the Spatial Audio Lab; present the KidLisp or Menu Band papers. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'Wave Farm — 2027 Research & Production', + venueUrl: 'https://wavefarm.org/ta/residency-program/info-apply', + track: 'Spatial Sound Residency (10 days, $1,000) / Transmission Art Residency / Radio Art Fellowship (2 months, $2,000)', + deadline: '2026-12-01', + deadlineExtra: '23:59 EST', + conference: 'Acra, NY · housing + facilities · international', + status: 'new', + statusLabel: 'New — no fee', + notes: 'AC Native spatial fleet for the Spatial Sound Residency; Whistlegraph for Transmission Art. Verified on the live page. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'MacDowell — Fall/Winter 2027–28', + venueUrl: 'https://www.macdowell.org/apply/apply-for-fellowship', + track: 'Interdisciplinary Arts — a writing/building residency (KidLisp book or the No Paint archive)', + deadline: '2027-02-10', + deadlineExtra: 'opens 2027-01-15', + conference: 'Peterborough, NH · fully funded · need-based stipend + travel', + status: 'new', + statusLabel: 'New — no fee', + notes: 'Verified on the live page. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'A MAZE. / Berlin 2027', + venueUrl: 'https://callopen.art/open-calls/f616fcea-992b-4b0a-8ca9-e33d9b090c34', + track: 'Playable media festival — No Paint or oskiewar', + deadline: '2026-10-31', + conference: 'Exhibition slot; no funding', + status: 'verify', + statusLabel: 'Verify — primary site down', + notes: 'Aggregator listing only; 2027.amaze-berlin.de failed TLS on 2026-09-19. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'City of LA DCA — COLA Independent Master Artist Project', + venueUrl: 'https://culture.lacity.gov/grants/independent-master-artist-projects-grant-program', + track: '~$10,000 project grant + exhibition — No Paint, 2016–present', + deadline: '2026-10-30', + deadlineExtra: 'expected · FY26–27 cycle opened Sept 24, closed Oct 31', + status: 'verify', + statusLabel: 'Verify — page 404', + notes: 'The decade-long No Paint body of work suits "master artist." Check culture.lacity.gov this week; the page was 404 on 2026-09-19. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'DAAD Artists-in-Berlin — 2028, Music & Sound', + venueUrl: 'https://www.berliner-kuenstlerprogramm.de/en/application/', + track: '12 funded months in Berlin — Menu Band as sound practice', + deadline: null, + deadlineExtra: 'window opens Nov 2026 · December deadline TBA', + status: 'candidate', + statusLabel: 'Date TBA', + notes: 'Snippet only; confirm the exact December date when the window opens. Pairs with CTM. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'Processing Foundation — Fellowship 2027', + venueUrl: 'https://processingfoundation.org/fellowships', + track: 'KidLisp — a kid-facing creative-coding language', + deadline: '2027-05-02', + deadlineExtra: 'expected · opens spring', + status: 'candidate', + statusLabel: 'Track', + notes: 'Prior years ~$10k. The one fellowship whose mission overlaps KidLisp directly. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, { section: 'open', venue: 'UCLA — Dept. of Art, Arts & Architecture', @@ -1505,6 +1651,65 @@ statusLabel: 'New — for Fia', notes: 'Tenure-track; teaching undergraduate and graduate sculpture with an emphasis on contemporary studio practices. Job #JPF11274. Sent by Fia 2026-09-02 and reads as aimed at her practice rather than AC — tracked here so the date does not slip. Not an AC application.', }, + { + section: 'open', + venue: 'UC Santa Cruz — Assistant Teaching Professor, Sound & Media Art', + venueUrl: 'https://recruit.ucsc.edu/JPF02127', + track: 'Core faculty for the online Creative Technologies major · start July 1, 2027', + deadline: '2026-10-12', + deadlineExtra: 'first review 23:59 PT · final 2027-06-30', + conference: '$89,400–$116,500 (9-month) · Santa Cruz, online major', + status: 'go', + statusLabel: 'Strongest fit', + notes: 'The posting names creative coding, p5.js, Max/SuperCollider and online pedagogy. Wants two syllabi (one creative coding), student evaluations, 3–5 letters. KidLisp is the spine. Verified on UCSC Recruit. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'Indiana University Bloomington — Assistant/Associate Professor of Digital Art', + venueUrl: 'https://indiana.peopleadmin.com/postings/33971', + track: 'Tenure-track, Eskenazi School · start Aug 1, 2027', + deadline: '2026-10-15', + deadlineExtra: 'review begins; open until filled', + conference: '$65,000–$80,000 · Bloomington, IN', + status: 'new', + statusLabel: 'New', + notes: 'Call lists creative coding, generative art, interactive media, game art. Needs a 20-image portfolio and 20 student images. Verified. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'Hamilton College — Assistant Professor of Time-based Media', + venueUrl: 'https://apply.interfolio.com/192288', + track: 'Studio Art · start July 1, 2027', + deadline: '2026-11-15', + deadlineExtra: 'review begins', + conference: '$94,500–$100,360 (9-month) · Clinton, NY', + status: 'new', + statusLabel: 'New', + notes: 'Video and animation teaching load; Whistlegraph is the spine. Listing verified via the New Media Caucus page. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'Fitchburg State University — Assistant Professor, Game Design', + venueUrl: 'https://jobs.chronicle.com/job/38026495/assistant-professor-game-design/', + track: 'Tenure-track · start Sept 1, 2027', + deadline: '2026-10-04', + deadlineExtra: 'review 10-05', + conference: '$72,000–$78,000 · Fitchburg, MA', + status: 'candidate', + statusLabel: 'Candidate', + notes: 'Indie, art and serious games named; oskiewar / No Paint. Verified. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'open', + venue: 'Texas A&M PVFA — Assistant/Associate Professor, Technical Arts & Interactive Media', + venueUrl: 'https://www.higheredjobs.com/faculty/details.cfm?JobCode=179481608', + track: 'Tenure-track · start Aug 1, 2027 — computational media, digital performance, interactive systems', + deadline: null, + deadlineExtra: 'deadline not captured — pull from the CAA career center', + status: 'verify', + statusLabel: 'Verify', + notes: 'Snippet only. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, { section: 'not-pursuing', venue: 'Prospect NEW WORK 2027', @@ -1536,6 +1741,28 @@ statusLabel: 'Paused — $18 fee', notes: 'Requires a public Foundwork profile and an $18 entry fee. Same fee rule as Prospect and Wassaic. Sourced from the Fuser Assembly newsletter, 2026-09-16.', }, + { + section: 'not-pursuing', + venue: 'CURRENTS 2027 — Santa Fe', + venueUrl: 'https://currentsnewmedia.org/submission-guidelines-2027/', + track: 'Multimedia performance / installation, Jun 11–20, 2027 — MacNeoPolitan', + deadline: '2026-12-08', + deadlineExtra: '23:59 MST', + status: 'declined', + statusLabel: 'Paused — $30 fee (waivers exist)', + notes: 'Travel, lodging, shipping and equipment support case by case. Same fee rule as Prospect and Wassaic; hardship waivers are first-come if the rule bends. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, + { + section: 'not-pursuing', + venue: 'Bogliasco Foundation — Fall 2027 / Spring 2028', + venueUrl: 'https://www.bfny.org/en/apply/requirements', + track: 'One-month residency, Italy — papers press', + deadline: '2026-12-01', + deadlineExtra: 'Spring 2028 round: 2027-03-11', + status: 'declined', + statusLabel: 'Paused — $30 fee', + notes: 'Room, board and workspace; no travel. Opportunity scout, 2026-09-19 (vault grants/scout-2026-09-19/report.md).', + }, { section: 'not-pursuing', venue: 'AwesomeNYC', diff --git a/system/public/paul-r-judy-2026/index.html b/system/public/paul-r-judy-2026/index.html new file mode 100644 index 0000000000..3b65e36eed --- /dev/null +++ b/system/public/paul-r-judy-2026/index.html @@ -0,0 +1,181 @@ + + + + + +Whistlegraph Chamber · Paul R. Judy Center Grant · 2026 · WIP + + + + + + +
+ +
+ ▸ WIP · NOT YET SUBMITTED · Paul R. Judy Center Grant, October 2026 cycle · due 2026-10-01, 11:59 pm ET · this page is the public draft of the proposal +
+ +
+
Paul R. Judy Center · Eastman School of Music · innovative project grant · draft
+

Whistlegraph
Chamber.

+

A drawing you sing, for four players and a room — the score is drawn in front of the audience, the players read the board, and the last movement is played by everyone present.

+

Proposal by @jeffrey (Jeffrey Alan Scudder) · whistlegraph.org · aesthetic.computer

+
+
Status
Draft · not yet submitted · due 2026-10-01
+
Funder
Paul R. Judy Center for Innovation and Research · Institute for Music Leadership, Eastman School of Music
+
Ask
$10,000 · Innovative Project category · decision by Nov 15, 2026
+
Ensemble
one drawer, three players · voice, keyboard, a string, and the drawn board
+
Deliverables
an eight-movement suite · two performances · a filmed multitrack · an open score-and-workshop edition
+
Call
program page · form
+
+
+ +
+

§Application at a Glancethe form, answered

+

The Paul R. Judy Center form fields and the draft answers. Lengths are targets; the form has no hard caps.

+
+
Project title
+
Whistlegraph Chamber — a drawing you sing, for four players and a room
+ +
Goal and innovation~450 words
+
A twenty-five-minute work for a four-person ensemble in which the score is drawn in front of the audience. One player draws; three play. Every line is a sung or played phrase, the drawing accumulates on a lit board until the picture is the whole piece, and the players read the board rather than stands. A whistlegraph is at once the notation, the conducting gesture (speed and pressure of the hand are the phrasing) and the learning system (memorizable in one viewing), so the ensemble is open at its edges: the audience reads the same page and plays the last movement. The repertoire is a public index of 1,084 coded pieces at whistlegraph.org; the grant funds the first ensemble to prove the book.
+ +
Impacted communities
+
Los Angeles chamber players who want repertoire without a stand part; general audiences, including children and families, who perform the closing movement themselves; other ensembles and teachers, who receive the open edition. NELA Computer Club is the first place the edition is handed out.
+ +
Impact and assessment
+
Four counted measures: the share of the house that plays the last movement (target: more than half); rehearsals needed before the players can perform a movement without watching the drawer's hand (target: three or fewer); ensembles and classrooms performing from the edition within six months (target: five); plays of the released recording.
+ +
Marketing
+
Each movement is published as a short video the day it is finished to the whistlegraph accounts (1.35 billion combined views); whistlegraph.org indexes the suite by code; Aesthetic Computer's network carries the rehearsal diary; NELA Computer Club runs a preview night; the first performance is asked of CultureHub Los Angeles.
+ +
Sustainability
+
After the second performance the suite is a book — codes, drawings, recordings, rehearsal guide — under an open license. Whistlegraph Chamber then runs as a pickup ensemble: I bring the board, local players bring the rest, each city pays its own performance.
+ +
Uploadstimeline · budget · CV
+
Twelve-month timeline, Nov 2026 – Oct 2027; itemized $10,000 budget below; CV to attach.
+
+
+ +
+

§Pitch

+

A whistlegraph is a short drawing you sing. Every line you draw is a line of a poem you sing while drawing it, so the finished picture is a score that teaches you how to play it. The form is six years old. It has been performed by a trio in an Oregon cabin, on a twenty-two-minute chalkboard commissioned by Rhizome, and to a combined 1.35 billion views online. It has never been written for an ensemble.

+ The score is the performance. +

In Whistlegraph Chamber the drawing happens live. One player draws on a lit board projected for the room; three players read it as it forms. The speed and pressure of the drawing hand are the phrasing, so the drawer conducts by drawing. No stands, no parts, one page that everyone can see.

+ The audience is in the ensemble. +

Because a whistlegraph is made to be memorized in one viewing, the audience has been learning the notation for twenty minutes by the time the last movement arrives. The last movement is theirs. That is the innovation claim, in Eastman's own terms: an ensemble whose edges are open because its score is a picture.

+ A book, not a band. +

The repertoire is already public: 1,084 whistlegraphs, each addressable by a short code at whistlegraph.org. The grant pays the first cast to prove the book — compose the suite, rehearse the handoffs between drawing and playing, perform it twice, film it, and publish the edition so the next ensemble does not need me in the room.

+
+ +
+

§Budget$10,000 · people and performances, not gear

+
+ + + + + + + + + +
LineAmount
Performer fees — 3 players × (6 rehearsals + 2 performances) at $150 per call$3,600
Composer fee — eight whistlegraphs and their boards$2,000
Production — two rooms, lit drawing board, projection$1,200
Documentation — two-camera film and multitrack, both performances$1,300
Score edition — printing and video pairs$700
Travel and lodging — second performance (no food or beverage)$1,200
Total requested$10,000
+
+

In kind from Aesthetic Inc: software, projection laptops, whistlegraph.org. Venue fee for the second performance pending.

+
+ +
+

§Twelve MonthsNov 2026 – Oct 2027

+
+ + + + + + + + + +
MonthWork
Nov 2026Notification. Confirm the four players and the two rooms.
Dec – JanCompose the eight movements; publish each as a short video as it is finished; draw the boards; build the lit board.
Feb – AprSix rehearsals in Los Angeles; rehearsal logs; audience movement tested at NELA Computer Club; preview night.
May 2027Performance 1, Los Angeles. Two-camera film; multitrack.
Jun – JulEdit the recording; assemble and release the edition on whistlegraph.org.
Aug – SepSecond city: two rehearsals with the local cast; Performance 2, filmed and recorded.
Oct 2027Count the measures; final report; IML podcast.
+
+
+ +
+

§The Lineageestablished progress

+
+
Whistlegraph trio · 2020
Formed in a cabin in Ashland, Oregon with Alex Freundlich and Camille Klein during lockdown. The first ensemble.
+
Rhizome · 2022
"The Longest Whistlegraph Ever (so far)": about twenty-two minutes, chalk on a 4×6-foot blackboard with a bell on top. A commissioned long-form proof.
+
whistlegraph.org
1,084 coded works, each a picture and a recording. The repertoire is already a public book.
+
CultureHub LA · Sept 24, 2026
Two new works premiered in residence; the production team and room the ensemble first rehearses in.
+
arXiv
A peer-readable description of the notation: papers.aesthetic.computer.
+
+
+ +
+

§Statusdraft

+
    +
  • Concept lock · single spine: a participatory whistlegraph chamber work; the drawing is notation, gesture, and lesson
  • +
  • Form answered · every Innovative Project field drafted; budget and twelve-month timeline built
  • +
  • Before filing · attach CV; confirm three players and two rooms in principle; pick the one video link
  • +
  • Submit · by Oct 1, 2026, 11:59 pm ET
  • +
+
+ + + +
+ + diff --git a/system/public/squeaky-wheel-2027/index.html b/system/public/squeaky-wheel-2027/index.html new file mode 100644 index 0000000000..2f86feeefb --- /dev/null +++ b/system/public/squeaky-wheel-2027/index.html @@ -0,0 +1,167 @@ + + + + + +Note(s)pat(ial) Native — Buffalo · Squeaky Wheel Workspace Residency · 2027 · WIP + + + + + + +
+ +
+ ▸ WIP · NOT YET SUBMITTED · Squeaky Wheel Workspace Residency 2027 · due 2026-10-02 · this page is the public draft of the proposal +
+ +
+
Squeaky Wheel Film & Media Art Center · Buffalo · workspace residency · artist track · draft
+

Note(s)pat(ial) Native
Buffalo.

+

A spatial sound piece whose loudspeakers are discarded laptops, each booted from a USB stick into AC Native — staged in Buffalo on machines found in Buffalo, and filmed for the first time.

+

Proposal by @jeffrey (Jeffrey Alan Scudder) · aesthetic.computer

+
+
Status
Draft · not yet submitted · due 2026-10-02 · decision Dec 18, 2026
+
Venue
Squeaky Wheel, Buffalo NY · digital lab, editing suite, cameras · partners: Buffalo Game Space, Silo City, Central Library Launchpad
+
Session
June 11–26, 2027 · two weeks · 25–30 hours a week
+
Support
$1,000 stipend · accommodations · up to $400 travel · up to $300 artist fees · $150 skill-share fee
+
System
AC Native · a bootable operating system that turns a laptop into one instrument
+
Piece
Note(s)pat(ial) Native · premiered CultureHub Los Angeles, Sept 24, 2026, on six surplus laptops
+
Call
squeaky.org/workspace-residency
+
Source
fedac/native/
+
+
+ +
+

§Application at a Glancethe Google Form, answered

+

Squeaky Wheel's form fields and the draft answers, at the guide's target lengths.

+
+
Track
+
Artist — sonic arts, performance, and in its resting state a game.
+ +
Project title
+
Note(s)pat(ial) Native — Buffalo: a spatial piece for surplus laptops, and its first film
+ +
Project description~500 words
+
A fifteen-minute spatial piece in which the loudspeakers are a fleet of discarded laptops, each booted from a USB stick into AC Native and each rendering one voice locally, placed among the audience; a performer turns the field, changes its speed, and hands voices from machine to machine. Premiered at CultureHub LA on Sept 24, 2026. In Buffalo: week one, source six to eight surplus laptops locally and stage the piece for the room; week two, make the first proper film of it with Squeaky Wheel's cameras and editing suite. The fleet stays with a partner as a playable installation; the USB image and score are published open-source.
+ +
Time plan~300 words
+
Days 1–2 artist talk and a community call for laptops; 3–4 boot, assign voices, stage; 5–6 re-place the composition, rehearse; 7 open rehearsal doubling as camera blocking. Days 8–9 two-camera shoot plus multitrack; 10 an afternoon in Silo City's Marine A if it can be had; 11–13 cut and mix in the editing suite; 14 skill-share, hand the fleet to its partner, publish.
+ +
Portfolio
+
culture-hub-2026 · notepat · AC Native source · the CultureHub performance recording (after Sept 24).
+ +
Equipment
+
Sony FX6 + A7III, tripods, Zoom recorder, Focusrite interface, the editing suite, one projector; a room with power for eight laptops; Buffalo Game Space and the Launchpad as surplus sources and the installation's home.
+ +
Skill-shareoptional · ~300 words
+
KidLisp — a one-line program that draws and sings. Two hours, 8–16 people, ages 10 and up, on the Digital Lab's Macs with no install: ten words, three programs each, then sound, then every piece played back on the surplus laptops in sequence.
+ +
References
+
Casey Reas (UCLA Social Software) and CultureHub Los Angeles, or a CV.
+
+
+ +
+

§Pitch

+

The loudspeakers are old laptops, and the old laptops are the point.

+ AC Native — the laptop as one instrument. +

AC Native is an operating system I build that boots from a USB stick. Put it in almost any laptop from the last fifteen years and the whole machine becomes a single voice: no desktop, no apps, one part of the piece, rendered locally, on time. The machines agree on a downbeat over a network the piece carries with it, so the work needs nothing from a venue but power.

+ The piece exists. +

Note(s)pat(ial) Native premiered on September 24, 2026 at CultureHub Los Angeles on six surplus grade-school laptops with the audience seated inside the array. Twelve moving sound bodies orbit, approach and recede; one performer turns the field and hands voices between named, second-hand computers the audience can point at. Squeaky Wheel is the second room, and the first camera.

+ Week one: Buffalo's discard pile. +

I source six to eight laptops in Buffalo — school and library surplus, Buffalo Game Space's shelves, whatever the artist talk brings in — boot each from the same stick, and stage the piece for the room I am given. The method is the claim: an instrument assembled from a city's own e-waste in a week, played, and left behind as a playable installation.

+ Week two: the film. +

The piece has only ever been recorded on a phone. With Squeaky Wheel's cameras and editing suite I make its first document: a two-camera performance with the audience inside, close coverage of the handoff gesture, a binaural mix of the multitrack, cut to a short film that can travel to festivals and to ICLC 2027 in Antwerp.

+
+ +
+

§How It Reads on the Rubricmerit · achievability · potential

+
+
Artistic meritA spatial composition where the diffusion bodies are discrete objects among listeners, the handoff between machines is the performable gesture, and the hardware's history names the parts.
+
AchievabilityThe software ships and the piece premiered in September 2026. Two weeks is exactly one source–boot–stage–film cycle; the only support needed is laptops and a room with power.
+
PotentialThe film goes to festivals and ICLC 2027; the fleet stays in Buffalo as an installation; the USB image and score are released so the next city can do the same.
+
+
+ +
+

§Two WeeksJune 11–26, 2027

+
+
SourceArtist talk and a community call for laptops; Buffalo Game Space and the Library Launchpad for surplus. Days 1–2.
+
Boot & stageEach machine booted from the stick, read, named, assigned a voice; the fleet staged in the room; the composition re-placed. Days 3–6.
+
Open rehearsalAn invited audience inside the array, which is also the camera blocking. Day 7.
+
FilmTwo-camera shoot, multitrack, an afternoon in Silo City's Marine A if it can be had. Days 8–10.
+
Cut & mixThe short film and the binaural mix in the editing suite. Days 11–13.
+
Hand overKidLisp skill-share; the fleet to its partner; USB image and score published. Day 14.
+
+
+ +
+

§Statusdraft

+
    +
  • Concept lock · single spine: AC Native, a bootable laptop instrument; the Buffalo edition and its first film
  • +
  • Form answered · bio, description, time plan, equipment, and skill-share drafted at the guide's lengths
  • +
  • Before filing · add the CultureHub performance recording; confirm two references or export a CV
  • +
  • Submit · Google Form by Oct 2, 2026
  • +
+
+ + + +
+ + -- 2.51.2 From 4774e82029e387aa68218aec8492c997a2371c82 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sat, 19 Sep 2026 21:09:20 -0700 Subject: [PATCH 10/10] aesel: name the bundle Aesel, keep the artifacts lowercase The menu bar reads the bundle's CFBundleName, and setting only that key through extendInfo crashed the packaged app at launch: Electron names its helper apps from the same key, and the helpers were still "aesel Helper". productName is the one knob that renames both together. The DMG and ZIP keep their aesel--arm64 names so the update feed, the checksums and the download links stay put; the ZIP drops its "-mac" suffix. Co-Authored-By: Claude Fable 5.1 --- easel/desktop/README.md | 2 +- easel/desktop/package.json | 9 +++------ easel/desktop/scripts/build-mas.sh | 2 +- easel/desktop/scripts/linux-download.html | 2 +- easel/desktop/scripts/publish-mac.cjs | 2 +- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/easel/desktop/README.md b/easel/desktop/README.md index 2823053cba..9fb2b54f8f 100644 --- a/easel/desktop/README.md +++ b/easel/desktop/README.md @@ -97,7 +97,7 @@ node easel/bin/piece-app.mjs --cwd /path/to/project --name sefo \ --piece sefo.mjs --icon /path/to/piece-frame.png --open ``` -The installer uses the installed `~/Applications/aesel.app` as its base (override +The installer uses the installed `~/Applications/Aesel.app` as its base (override with `--base`), creates an APFS clone in `~/Applications/Aesel Pieces/`, renames and signs its native helpers, and verifies a local PTY launch before installation. It requires the repo's desktop development dependencies for ASAR extraction. diff --git a/easel/desktop/package.json b/easel/desktop/package.json index db99541b06..83a99c6e8f 100644 --- a/easel/desktop/package.json +++ b/easel/desktop/package.json @@ -1,6 +1,6 @@ { "name": "aesel-desktop", - "productName": "aesel", + "productName": "Aesel", "version": "0.7.16", "private": true, "main": "main.cjs", @@ -26,7 +26,7 @@ }, "build": { "appId": "computer.aesthetic.easel", - "productName": "aesel", + "productName": "Aesel", "directories": { "output": "dist" }, @@ -84,10 +84,7 @@ "dmg" ], "category": "public.app-category.developer-tools", - "extendInfo": { - "CFBundleName": "Aesel", - "CFBundleDisplayName": "Aesel" - }, + "artifactName": "aesel-${version}-${arch}.${ext}", "hardenedRuntime": true, "icon": "build/icon.icns", "notarize": true, diff --git a/easel/desktop/scripts/build-mas.sh b/easel/desktop/scripts/build-mas.sh index 2c38617345..88dc1b9e30 100755 --- a/easel/desktop/scripts/build-mas.sh +++ b/easel/desktop/scripts/build-mas.sh @@ -18,7 +18,7 @@ env -u ELECTRON_RUN_AS_NODE ./node_modules/.bin/electron-builder \ -c.mac.identity=null \ -c.mas.identity="$identity" \ -c.mas.provisioningProfile="$profile" -app="dist/mas-arm64/aesel.app" +app="dist/mas-arm64/Aesel.app" pkg="dist/mas-arm64/aesel-$version-mas-arm64.pkg" codesign --verify --deep --strict "$app" pkgutil --check-signature "$pkg" diff --git a/easel/desktop/scripts/linux-download.html b/easel/desktop/scripts/linux-download.html index a45f1bbaac..988e3cad07 100644 --- a/easel/desktop/scripts/linux-download.html +++ b/easel/desktop/scripts/linux-download.html @@ -13,7 +13,7 @@ sudo apt install ./Easel-0.7.0-linux-amd64.deb ./Easel-0.7.0-linux-x86_64.AppImage

macOS

Download for Apple silicon

-

ZIP archive · signed and notarized · macOS 12+

+

ZIP archive · signed and notarized · macOS 12+

If FUSE is unavailable, try --appimage-extract-and-run. On Ubuntu, use the .deb above to install the required sandbox. Do not disable the sandbox.

aesel requires sharing conversations and artifact revision references with authorized Aesthetic Computer staff for product improvement, including when using your own provider. Read and accept the disclosure before use. Hosted generation requires account access; bringing your own Claude or Codex requires its CLI and account.

Tested on Ubuntu 24.04 x86-64. ARM builds are not included. SHA-256 checksums · Aesthetic Computer

diff --git a/easel/desktop/scripts/publish-mac.cjs b/easel/desktop/scripts/publish-mac.cjs index 6c7a884f50..dddaf91790 100644 --- a/easel/desktop/scripts/publish-mac.cjs +++ b/easel/desktop/scripts/publish-mac.cjs @@ -7,7 +7,7 @@ const { execFileSync } = require('node:child_process'); const { S3Client, PutObjectCommand } = require('@aws-sdk/client-s3'); const dir = path.resolve(process.argv[2] || 'dist'); const version = require('../package.json').version; -const zip = `aesel-${version}-arm64-mac.zip`; +const zip = `aesel-${version}-arm64.zip`; const dmg = `aesel-${version}-arm64.dmg`; const digest = (name, algorithm, encoding) => crypto.createHash(algorithm).update(fs.readFileSync(path.join(dir, name))).digest(encoding); async function main() { -- 2.51.2

cFKP$u4=nx9@L6bbCi}NMpHqDtCf_{n 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%0D%^QWvB1=Ia=YwHW9G zzUYffzI>Ir^5txyv%zOpyexm3WojPJw{P;-lpQDIMb6G#lXK0(os+_k>%)vA3{Ltm{*o3-NZ%jKdK z8J`(=i1dxA_cn36GQ&epP3LJ^rk>3E;HYdCZzVDDvSs=0yh%oKUHj&*^x3$o+~oDw z5`F#Lyy6dkeGeBNJG(o#>}K|pUK^>GPoB7jetpZ{zEJ$?p_n4<(}UfE6y6tUixTd%&XOVbGB~Qp0_@vGijrT3R@ki{Ul+y$T?y2ON zM@wCz<*|Q>U3W!GcOaQ9$32CA<-%zecTauao)T~}tz+F&lTa&{Gj4lr{`sqf3ZCDu zeB)odT14R+R1ZkIWHg2k31+FfXyS834{qXRq zmCy0{oKF=P7JDGsGeVf`y<2rl_RO|Ep8M^^>Q^>x*5xa93Y+-t@@rebaANREl7ZR@^y9dmh4?$0k2`&M^7 zPPX#(`RTlt6IK$aeH4> z$^5kM-de_UBOmYkvp?*v_{vk$ujj2Yxz%g>XjAu;tLx5uVqonad`VVrQN)T%Z?@iN zYk$~vFYfnL%Wt>y<>T&}e=V`yz`bf!)^jaaLzx8(Vygx|xRG7J{8?pfr+M+LE1|bb zWBV_Jr;3qTe*)7~AD`C*w{~N5sBL!dPVI~PicF)r=0=~HtyTK+warJj ri7wZaRxJ(`Uf=nPao!%^Q)`3MR{l2m)Zf9tgUygpF+w50|NkZcZXJpV diff --git a/xbox/live/social/oskiewar-title.mp4 b/xbox/live/social/oskiewar-title.mp4 index 42f3367463a2b59575c32b1f1252087091591b2c..2c6a43887c5224d0ac13cc36f17e63a5bcb2c2cb 100644 GIT binary patch literal 204904 zcmZQzU{FXasVvAW&d+6FU}6B#nZ@}=iDk)#xdkSM3=AA+bMy1d7#J9Ga?3JO7*GK7 z3kC-M1q_S~AcT-%L@>cDG`<5^5GTRJz`*{aq$n|)fq@~WBpYleGm>hkY5WV2#2`$l z41~jg<|qaRkiAS77#LU~3RF^4N{Sg67-Uj&ic26uAa8)oWr6BtFUU>FOaz5dZVK2P zP-P&>hJk_M14HN$5Su|aBPFK@%wk|*D9cPqg|R_&SY}FUzDHtSN=_&K@-P829eEG~dL z0pu)^q>>^?__FC;gPJW-TmlYz5ErDT0+jYZK~h{&42lz&I3oiC^ND1H+H#1wEKqqa zC=KI-xS%*>0x=jF7)Iq$!wVEFqu~QhYjj8-Y@h&VB;Gz!)zdnCljR`7*;Ych;T75 zuof{eFpDuTFl}RC5d6r%z}(Ehz%Yw}foUHDgQy+@16v&f1Jf-A28Klp3?khO3@n`t z3{2?^3``Rl7=+as7?`dwFfcSSFfgSsFbJD7Ft9{3FffHPFfdGIU=ZhGU|`w7z`*Rs zz`%HqfkF5P0|V1h1_p-t3=E9t7#Kv(Ffg!WF)%QRFfcImFff29rbi46jBX4JjF}7! zLR%OZm<$;h7@8Rv7-bn4_}v&7nC3DtFv>76FwA6N5Y}a2U=CwoVED_xz?jd#AONap zq!}0(+8G!aG8h=RY8e<9UNbN-ax*Y66f!XIeP&=_S_p9)V=n^(|3(G|Mr{TLhGYf? z#vld;{tXNaj8_>L7}ql}Fid7(5WdgA!2FDXfpHxJ1LI=`2BA&{24+D928L-242-)O z7b<{bR~`nVSlxLDGuI zb!%=)W>I260jT-|$$_y>CZqyaSy_?~GEgQZ5v&jD*Absr>GJg^`(wg04bxeo?A|p_!>dk+G4H zkwTKOshNRkqJpl1hn|s{iN0@utGlj=f@7GoLUMjeYO;c^f^&XBWlm~ZiGq=Vfw8WU zfsv_#u0lphNr9EVetCJh9;j)MpOcuUmtT~w53)rsqa-&+L02Kapd>Rtuh>cKPbV8R!`pDCA~Vq^87!Oa$qOFG|cyPqj5PQ%KGz%Fj)V z&rP*8R46G*&B@6uwl!3+sIW*$F0nOGNG{B^HBd-NO-!lE&r7v6GSo3NR7guKE{QKF z&dw~bHG~;ZSP-9|mR6ivVykPUP?AxUnwU~-YpIZvpP!wWk(!ti4-+#~D9*`DPDKb9 zDC8A^?MTkdO)LSqBQvigwJ0YsIW@)BKp`oov?#GMJ~=vgn0|SFe zV`@hWgZlq}S292AEK#psUU?~X(Y5byuS$sMHy2Jz&8|^90BV{sFf%Z)XdSe8zUt!^ zh8Z9c2M2)RYjS9=vDxQE?+mxJm=}M#lG}GR=}vL}Q|1-ZQx`CHiO;KUKOcA@ zPU*oH*)kJ9X}7l9>NZ=OdZyo4u)IM_kbCu;I8C+9<@(F!JS@%Xh~vx)$u%y%qfUCC&aNzE)1zHYaFRN4J2^!Le2jLVtSyn=*%3@`fq zu@Q)!Ta@7V(D6s+i5BO>@!ZnKQ(BM7Ty@%}8(#4-$Ku?-{Y7EZAKqJXxOk;$u67EG z#N#Db7gbI5epi+dxBQRRw7_rf{{J4Qu8M9sQS$drqqA=PH?CS&wk>~@dB2`nqk1|) z`M$%VeJ|%N`1gKk4CC_Oe>0cen0K(qa@Pc|dp-O+Ezf`d{57v-#uD|3`k(Gywyfh` zJ^yk>M$(p<48M&I_ct> z1_=x%vp-LLeR=iva~ToxpCv5?T|FxQulpFq;hinlSg7<)>~>J+3x%$=46m0&_RqSJ zJNvTMjfJ!O8op1-n($gFYs1$zf0er^~?T?p^sMk+{t6ea^kFtT-9`5Po(svLB=POtt@f>*JN&# zTC#>&^KCLW&Fvrt0)tL%^NrRz`Bbi~}36mvCTtUju4R;M9beQ(Mg zg9w@4o=$@!YdX&!OaFOz${ybh&9i5`)%Roky8pA~*@s$I~`Oft-rDx&%)Ti-d!!S#KH{1^xiI63#B1MLL7NcUvhSA1UN3LbnkCGlmw2jJ`nvXA zhP1+VyNl-RvwZJ#Ey;IhC{X?%vEaR;d2I52qp)DlJ5Djre?}=c?e13jSzMa!e%4|` zROj;*oYM%q^1Uu?SLR8L7QQhj6a?T5#al@kpQ-)p+CYyRry4FcQw zPm2b2cW>XC(6{7b*WugSUc5hbFmH?LN6tyg`Ac3*n4h#Zw?TKB^_$G;MSau%>^;vv zg<;vvC2yze@nr7FlrN6`^5#mqpsSvrf$0AHdEcf!Y%R)qap9z}({>$^Ju^D84}8o% zYc3_cMYv?*sYhhq_JkWP3D4 zkLwjZYS?;7INq=}%~HPNNm%sKzWO&a?{ZYC$NJCwarp2azDDJOx#b56^S8G!uPSqm zKW8RUwq4Zs%3THr?UWX!37LZGM2qpp)bY2UsDL2BE6GVe(i{(R!A!g8H> zt7k0gdoOS9(2P-Zg z%xZe_C3*4g9oCC=nhyxQU#5Qdmaz7ePtJVzK2|%e-y@<>@`SY`^nj(94?E8v^LKAN z175|>cL_576L;VS!=B%}&cA7Qs8?`QU@88sw<{**O|s;y_!95m9Oe_n&wCwTrQ&5Y zYl$J-%;{-W_l-Z*N|s)^Rq#_f?p@m|gA|<|7gumbJUMMTecAH!H}|w@6)oE;Hotok z-=$k`>=s^$u{cmvXa9k9yU#oMnx zT%%rRSP{EJVROYN&8ti1*~H)Y`=^B2af=dr&$X{9DwA(5J$jujfFr(l=G>YL^|za^ zwL0z3-}&n6`%ByY2>x`H(R82CInAMYakARCY#+b;*l?pH*8UFLH3=Sm2Rau8*uI`9 zvbXziiOSE}U#^+de$cybQ_+2T`qc39XqF=qx%P`9EQ|j?E;+i?O~$xGFYYPF?p95k ztd`@^Qr*Y8<-Bf{*c`s_uxiPn-fepiy~?%pQeL^{;Y@Cc2}h0CS-Unbs#~{$`K7b! zCzr+B&s~$sVb)TY_0QB#IU-iilwW2m%owfX@ zEaLRnnm>HXp6r(Nu#@gA?#0{w=VZQ0yl8q;UN!dbdG&AY zDUF>0x5K7xY`Nm%Yv7a0t>|qf+ERT-F>_nADzBXFkzR$>$zPiueRq^R;+|qK?_Zkv zu8vcE8z;8T^qBwV_&Sp~uUhuAx0N4A{o520VXvEDvT5c<&8DaVvGc2+eR*6uJNC~C zz06HjlWy%f};SBY8N zkrXNKmsXgj)3iQ~^9P^$7F%I;Jwv9(9SiPPTm`_U^#=lTOX^lE1 zb;PxVDgHrR)2poor(z$dTa}*qA|EXD;eXbY=^tmTy#2;-^Neklt0y_KE!}-+Lu0|O z#?MyY56XMLoPFk&yN*z(dePq3w?kKON$mc)v^Af1_551`%4d`84;^Mvm~rU!lBu>| zB7d~r`4@69Pj%x`u7mrY&lK2aa!qzc>Y{^e0a}Ls+m=4l_--D^d`Rzb$BSLUv~>s>RpREKkw%-``pS^jZt<5|_8 zCzU2vPYL90 zP3EvprJVHTAF;7#``#aI@>26oU2?bSRrQzCkKeIYeq5m?`Zavn@%fwid0sx8-*R$t zN@PTKwpWxR`{`Y~w(D_u`g8bRnP(^SuO=n^?s~7gWTsjb=a;-;THe|M|#6SH+3EWY;|Kl%x!|2plJHk)Ar;{!(hoqG$s zt*(?v37uMF_HSd%mQ6`Z&U#+|xT_-S!g24JhYs3KyyRjj=Ahp=>)Gx3ISngspO$9y z=g@e~wBl??&a=IK6?w*<>iZ%O(eLUOGqyPYe4!B};^pO{Vsm^-Xm7~A z^lqISy^<-}5=vk5_kM1YJM{KEyC=u`+b0#}DvQ+|GXfUqIbH~mn4%Q^V1@YgN!o{Y z>TYyzt`5*$v644>&NoH9IYzwU?f=bh|BL_OS9+Q)_5J0`vvmcOZ+Blivir!3#4EwC zc$~TRg#A8o>-B@emOm%rKQ#!uMNE2o*lI)i&(&wFwtWrT?ig@zoncqXPtAird_D$B zJ69!FSzdfEDb;7V?9cisKW45Fn*UGZ@vhQnSC8Av-C~>+RQZFuU#jvs^xVv=f8VfN z{Q7=NFSbqV+5T;eJGFjk!$%od7S&^?;o^JoG_H0|jH^*m{r&cCb9gQjy`7!DB z&*b;}nl$`!)QTdfNdD<4DLy?@qPxg;vfmq%4J;SM9~&pEyeazqhSp^cE^+(8z$eW zxN|90bRO5Iql)Q0KUZ8`@#kiy*A+famf6~q|CjZv9Jik0*CCeFHlds4da1}}ZQm_N zvz|)t_2XA@sQ$d3f5s%mV8&lNubA6K3EW;M;`n^VYj%^xYtwqzRcC74vrt&{G+BNL z*9&!>!$I2emJcE>e%-O$(CgUV%|AAX{5pC|XU>)8cQZPTwQlXOJJPtf`}WRhhr-2l zTC?6S|DAEYc+vhlXD+5rIJ?f}v9ozh7}qV9<7R0ghZo9Oh3|VaXOVyEygQ=?s#lh;3ru&ks@ZZ&U~T@*R{6aXm;90V zS@VONlWoS*4_oz4ZV!IdTXBZx+a`zei~US&-#wlGcTH>M)sE?=PygME^6zW+d*O`bkE<` zp>8famv{LUwT8)kk6MolN}hggf0I2cqoa}KV$p^BY?sg0Mjw(ZDOF+o_~^n4&dG{? z%7RxvNxc4}IEBMvZiM5DMGL~`bM9L*_4oCO1rzw_rmjZLxC&qOQtvyDzE%_qkiG)R$V@?kL%y}&N8%N z558OLwqnO3?k4$F53jfWS>oaL+;h!ocQ@~Pt5Y9W`nvjG?pIo|zG;iOV_WE9*{Avs zg41qw6>~gw~Se7{h=Us>1IWmT?4!-uz&?PvA(QqnCf+mbRPIe)wLWRl)Of zwUbr*yb_h5_g24_Tq}OeFkSZ8^Po@DK3=(fGyi)_a7(80{>is5d8+g*Q;4o!FU5EE z!dJ1%Kl>B@UXz_WzfdLl+WsRYN(PaJXC@uVP@82J-J4o|b(N;hze$TLuTH9SY>vOj z5E?KkO4{!8QHijqeEITab3<337vl~Tc)vfZu9ZRB`_Y*_$Cdp}HQSE0%rwn$M7_d;g*ccs8N6Zd%tCG4wTcw3>W{LHe`ii_{NO*?wu zja6DV>d66BjY$Tb9?R$HaHO-Qew8}6Vv5D{qEoE17OPx(rhL!8$OP49J$jm#w z?CV|LJLT`qZ#&6oDLhR4`u}s5_%fTnQ!|h5S|OgWZ|~eaM`TrG?(xVZ{b6&Mzarxa ze?d*m+P}vh-nsEEe9HoHrBkkx-JhKhb$Fa5OaD;gmwp z2PetIM-?xVOH|giHa%-uEdON{-5HLAR?ziQ90RXyAF z^3TO&=A);4h31Gxoi0E9B&|#3*_>z2vv_x%xhk5`xIIYvW&cX&xtD@;lCL`5(mL?r zNvYw}rE8aUZuN^$%X>L3vzzzX{+|zASQmU_NqIZz(yM)0?|$?jo4N5%>-om`GY?%| zCjT)}ab`JxWcBMa?YhgaF50wl&T1KE{-OzgKd7e(yZ#BWZCfzEQ}Lp|g|uwf=O>qL zJf3*vx~ALWV~#8uHL#W^-t7)E?C95*UCBFOtJpXt-o(499a03%gA@by9FC| zoLa(OqUv}klPBeHsn>}Ju5)$D`y)-Vuj|Am#MLMZ-Q3L{SG@YlE7hM*%0kNjybH`% zoWsDDnJntGV;`6!lhfn(c^EzkZl8V1+A z+OU0T;l{(}R!4Fa^>4kAxT>jAH|OlZvfhy3yZf#5A@IkG&tARjpSxC`5!bd} zT6x$#`sSwEYHP{uNnaP{p1I98&ywrU=d8QBwMRZKlQa&_I27VxK5L)qjtU0e2~HkH z!jaMc71iA)vHA%GpWJ(eP2#&r<(iap3;8~;m27_17<*g(Uq{B<-)GAA&s8;j&#>== z%L4ZW3ic|8gUl4ye(7P$yK?ko!Sj7nOgVmDdR(&BRp^nd@ioPUd;5;>6Xrde7qb83 zRYBJE0;^uo9e%Se-SZS`VCFZ!8Ws|Kw_)NABb|3YuEdvo*~*d>msVvq=gh8`kHh&V zrt13YZ}NOx8BrI&=yFSV)`T#X*n(W&C-*q2It33OWavD5^-TFagI`h0PRQi1NXvEK zJ%!Eb!WvJGq`eas32QCyn7cYF%JxWDv4#N0wJ%YJ-y8|bp4@lF!6<-9WkI`F;H97p zzukH_BNJyrHj-vnQlPcKUH{B-u0F3AYZ=2Z(1NIN?7v0XivhyBiFihKUY-|_x?Y^_?w zfo(EkVXA$KCZ)!YrCTN`s|4Dpdg??NC(EKksvt^6k4el|}Dnfj~!>lU(D~)2@;ke&3}3X8nIT^UK4s#83Ob zK6AS3eC5F9)l>Y_je?r0&g$m(%31i7oZz~^{^#a}*6p94R!W_|%D-i^>U6=FBS&6n z?7d^TIQotE0lik=aN%RK`B#UpoYJ!IQD%%G_q?DT?`-aDPkY+Ly}8_K@$a7XHr~to z|44H^k-Wig-(&LRv~`%-IUZ5}=#nEFo^Ft_So`MowZ|zZe!thcqN1}r?(^#iv&qN% zgYGjctf)yotv*p-i2s`kfB!nxk0n~7M@mI6RXZ7FhYGEzv6J&V<>@Tr{nBo6y@QtA z?-vC@f7_pNPYvp@7T`){%KyGE^Rd%8#rpH&w_Ro`PRPhwCANI-e4dLPfhA9L44JI5 zr`vsTTl2$tqueK^u0_xOc-1y@cU`P;S|;4K`^1vzD&aH5q%YQ>jF zL4R5oYpgu}Zu2V6xf@M=`=$TA75VzQ^Tvyw$yKIiFKsXWUl3FH@o-I^*eq6;#52!t zObgq_aQr-z<7QvieBEh5`V)<`RcmugYMXNoZs$r@N$~xnNZj64Up^dfUHPhP?#D-=9LbTYVoNv3c*<}vN*eV|)>JyL_bsqAWX0!? zHW!VLT0F8`l2wzpyw1Y>_S+*qj@|C*t}FI8{+lK@zv;n4@5$W{8kud1jN`rkAI}%g zTOJzj*7Nvj{?y-ZBm!>9n`z%%`Acn5*y;a{`}kW#KKzk#w|u|y`qHwXV;ePYvKG(% zWzo6sSjOs?-7zPF3k5^Jg}s+Kwe)#{;f57An&T%}Sbu+JYjj!AN&o5Y$Fn{J7~ft} zu`=)Ci{%jyeK-sMPn7gM|813WTeM%l{iIup%qB~WmIY1!UbQS`dWWj^ZqNN;o=Wec zWh&KVx>hWlHsj!7KL-oN*iGv-%KOxxg|Iub&X}|)j@jhd(M5kR#9BSIG_`4GxaM1` z`8ofU`QAH!&WbCnEvdL6P$D$(+M$X7^_!w*7p^Q}ODZvI`1jdi-G_(9vRRX~ZcRSu zc6});N9xv#ujgI7By4c5K;hWhr{N`LoV%{Z3G>Mn*XDcs@EnoMwA(B>JL`esyqi0h zB_1`+KeOnSN0`5W-iEj>Eep$24qfxF7F_zb^T2dr{_tb+4VS6e*O^aSgX~x+GXSlP~YhjZJ*hVVzfaS99hmaYxCV7MI>_XZ&_32x*)--LGZIus@N1b4%VL-D;*k zu~J&1W}6C2Qj-^|Do1=ed-_iKg8v*`d+z*S_I{&;?5^!wsy7;Le5x_;u3k=j?Z55L z`zH%rJ^kmRwICxQ>Jkb`<1TK74k zH+|a4+4N<>gp=FP?LJe=)liY{xlJ~7?lPB^vv+CpS1F{Nt#9@AWxRWbaW}`Wmt1uL z?SB(Bp64+y?sho&uSxxN&)wA3seFG+XJ_x)eNb1jDE@qvWX8{y7M82(pC_zjXg_f0 zyy`BKEBrrW&Mis)^)FfV^sVZvt(R=Qyk2hJxql72J=Z*TMb%)jrl&%87GGYmhR^@F z_Lp6$rF%}CeEi8yv0Cr!Za;6Cb8ima-1|d;zk~a}Wl8jdJrWh?&N6>JxSYq%VoUn| z4LoHxjqDOu%u2PTP&eLb^g`?J4WxSo93u*Qz9`nB{$^^4h6p8HHD z3a)y|;@|j9%KF)L*Oh%?F8g*)?OKrjH2UzAuItxy0)=7}47QuC-I+0qW1rIU6xZ-q zr1B|;R z_<5I!@k_CL{(mUwt~vXy?{Qt;&BfK<_{~2au(_b?|38}H-T5r_u#%3;38{?HlfAUR z%&AOCy8JozV6Kc@{x=-s z@ca4x8`nh{*PK;i&g9DU{%}F{mf~*yTfdq)^PBU0(w^+zmSS9Ll6`XJ*WXDOb(23% z`RV>|2;_1P7RlAa%ady99En@MQWJ1v|39{$VQ51PHp z=M|56aNus5K+BOVwtFm-HuC<7Ylw>%H4y%AEn~4bNBxv-Mc)4Fmh!62pFhphlzFB~ zwsD%`t{Xj#({-C>Y8?;Ds6279Trf!W5JUXJ8z<`VeCJRc?J)@ zTs}NW`AG#g|E`4Vnu5n7K3JCh>)4W4U7Vz`N%`QhoAqC(9plqs7kD6M#A_bVDW`27 zkYQkUW_y2i|Dx$!LI%;U{#<7VEy!~IQh zSAvVs=cZNu-y|zm*_1lDCMMKb*}CR+xv*9(V_e=@7B4rUS7`HsO%E=Fu%9}yvZ7uU?{NyOU2Uj6*d@V4<)*M_44=pZ%VjHcp?B%>V7ly{C!B>(14szcAB`-FR8A zpDoa6k747wL+y$^{d+?%1kbdny~~ihX36hMGh3c+yt(eseXac)9VTDD$G^K)@$AFSzJeRl=y>YeB56c$`hTF`}&>j zdtD**d=4G)i2;fsv$#55O8;@1Df>-_MLc)BS7$NQ~7e|F5fNPQ$JjPXfCn$N{+ggLiB@|tak-e z`HYvSC_N7iII@Vj!sxTSNptvx>3Va8zK3T^f6M;H+U|0(OzM4x#HPAar|;ZRw0D=$ zJHO&)&H~Z;DWCNvzr34uY_Dpo_Pb<)SI2mh|JpR+^%>iWbLach$E z+YasOl4G6s&v~BWG59h#ribw2PX4dcP@Tg7hf=ESJ;;S zS{r6_tiHqSP`6@fLhA0-w>JMwE!#Q$+g?tlbv15}mi_qg@~F@6kEiComi5g{y20zA z&C|@bRpwm7&qFQ=TQ^%jTK8J^_WQr|OJzVmqe>0iIMx$bPe+PupRuQ z`X{*g<_5-pOWnIC8%;ZYzsN{g(=OrDodc{dZ8pg<_o>`J``%+; zY$h9WrS1spdzKoriDlo_Nh?+@V&CrcV$ZsX-S>Uo2fmJ7>w7X?-KtMKI4<*JQqw7^ znFoE6Z-vZ`o>>)iS|E@Ni5jf+0)|REZGYfR=Q>Sk3cm6EreXB7M#Ui(N8f zWUQ>6mMT1rH&(Chcz@IviJW8YQzLGi`u+9&?HRZ$I8Xc`SItUAAj7Hv~^E7AUEiCcyUp*BPGp`ZdP+GhZ!| z-s+{G6#3yvQH9$kjrr#;{F75`&S^7O+7}>uTx4p{D=U8$vHz>HYCSolmIP`P?b_4p zAl_$m>GCAUQro|8`RtMeVpaA|-{HGh=I`snt2V#iGs)eC<({=p)CGgHy2TT?=1Ybt zEO%OZ^!8%;=-f80O`GR>l~nW3o92+7=dfk(#1mnAr~fk9A<6Y6rkjZ^WKB-4X~N7- zwT+jb6ndK)ZgJysxb|PTGkwEW^}n~5oEPvua>0M9v)9xEyU#sV6XM=kvChau&m+({ zwsBf@Tg?6~x1o1j4J!`D3`hZ19bGx-gz*B0J${F9=P5%X=1l2N|6wQ*O3f8zI3 zrM;y_PnU!(TzFe+rK`>M|Jxke1N#-N!HR};A)d5!vW2SjHYZn1jy zc4zFeb-$z{d3jjpUHejW{jrvL(WZ?I2Ww?lBpp_^c3<*tZ{CaA$=wRqL>Xj#L*$Gr zf5lp|3oJge^{*fQmUGDkMZ70qY-qOIHiEqj$x(Q{tl%a1Q@#!l1L z$R})VSb&Z6@^6``YsD!XAIjuFd@?r}*pT z`tRBXfAupbp7_>n%GjtgJEu@oZsk+KdmdMgS3CPp4Ny$yy?u7M+=a7TywhH4@6z1L z+*Zx%nfLd$TDX$;)XM1Zfqywva_x61&e9R`y`WSltHIBfyC|!?>5@tAq|d55SbF5+ zLn{u;#PdJ4Iqc1Zb5Jp0|MpNv-3$}bGQwADz<6ijLq`xNAx;(hXl!kp*N)H3I(5C5t~xkpae}D;eAFLr{gCytR4!xB zRjn-n?Uyg`Rqc8|%jLr+>6G70Gj;ejWGuZTETw9%=rG6dVeN{(-P3RW-kanV|G@X7 zIQwC)%h~(1bmsCr%`r+gNqjHg^ey<4?&4pMW@vAb3XHt=O^7`?BXf)RnGJU*N?EuZ zTPE_9DUj_I?|QA<{r|pCSiHK@f40x2C$@XLLjuGU?-&2_*lc<`^P|U?2Q~jEO>SSF zIOB1d&asJa&mL0S^)`_AW_@YRM8Su*-rhd^d3{^Lt}iR*3)i-W7B$X(Gb_xrHr4%% z!O8=BUj)uRelzCS`qj^Osw=&7NceV2f0w?tP3!fuC0?r2e!k^<0teb{W}w)$i}m>sguh>`bgiN4_H?HMnkNQ|AxGzloxl0zpCB}XNSA4vsgWXEZ)Cex{BfG ztShfJ2ha8RH>W=AYp2Gtqz=C4JrZ}j7tY+ERB*Nbr;Jdc1w$G?2j8*Ud&+;dEMw;!;$rZ22!Id;J5*{iSLSFvB~?{+VeDxH^AB=qH>`TpLl zxf<(M^s`6pmd(*K$^5JLs5>=j(e>HOK1W4d4U^o}!RL4}Tf1|~=_``nTup{*+d|cz zPIBYBrdeOK%&1%^_WrsjAr>|3|lpZ4(0J-obgac5S%ceUXmw<|CH^RK=+VP<}P&bRQS znT!&=8yG*98KuV;a;@CdTI?YoruneLO)US$@lDK|PW<9sKIQ4rcdO<1<<_NJswtiQ z8yq7!@j%N2J-!9|q+R2`o>6sJveI$thqDSD$35nSm(K8<`l0)@e4T}ferCXF#%PJP zb|*Jm*yXn=AKWkHSF*lbY~JROd(*zK^VQWHaCj^(c&+K)ro*>*UtO5Pn!Mz{p~}X) zks_zHWS^c9yZ`rb@YY8>4^QstY7^}3Z30Db+?@9o8wuAb006C81Uj=cG{0astid+3O_q%t^R57t=v|| zbZ=@w)TP2NRnI%pr#;K`{ZkY@SMoFiL+642!f$8C+<12G#E&kw#-py^&%RMh@!E5- zaVPu6uRYiG?H8pwG59_Z=t)<4KA|W^pKJdIzK^<6YNd~ik}c~^-V~gleA=vy$!Olx z`31sxuiO5(u|H$V$TGS!sZjB?$^7r{)_98CES8cybdOu?NocRd>g7VsLg(gt-<`=G zUz94l(nk8o)tAAIZVaW}v-BTbVLe*@;I({-U;U8~xjBk5E`j#5xYtiV`KRO6;`={j z{Y77FncVDmOK;NOIlZ~h5B!~Iu4&_Au7A7!?>F6Co<>EZx|JEqo8E}{xGW1c_dWhj zDPabG)kK|)fJMxy%v{F839q%Ye^0ZOD(#OD*{RU6HNeQMR4J=_x8j??_iJyvKe6KX z%E>dz3Hv5|MPjXb_3L!T*@~YnE^It9d%OA_t*=+l&#Hg>@>yq9*qm2S;%B8uODXK# z@GZ#Yr1_qt7~RkAa&Mz-UWR9HnX<=t>E+EEf}g9he-zXG5YJq<{&U5)N!xol|6YzN zxf`@&h0KB5mfZ&!=5}43*JW{oYyPW#KK?q*YyX(@#rrP#2Cd&YZQW$$6R$TmL=~19 z^Q@2h_(b*Qlf$~pH>H0z_!#xgbzNf7-CgPT7ryF~scYar6|~d&XIH`Z)%!fk&v+iV+P)*}XwkR8%M%kPX>Ts8 zTtCZm)>h-|j}~-P`-B{|>T=g+OcYHu{~mVd^Nd5kV@=tXPgq-FyjB0e+DU~L624#e z?ow_%EBfoD-%|aOiivi%w_+_8`_1}jXtm?#_oaoa|5?qbnG$`Zc8`>W>N8o_lMMQS&$+hi%%G`|af_Bqk@(Cxi#A?FSRPZ55Y z)9t_2Id^`^86_7N3sbF|>ftw!KR!J{&4)G9yjc080Yl8;6FU!G`)a+t_sKr#llRs- zNXoZ5Z1_F-NzHew`)xVPD^DND7E=?NkTG?K#I-HU<@|m;a+ExlY2y5T#)20i?3(2} zeo9_$=62rgQaUTOx>8K{->187(&@*qKW^QSn3VYc(ZpX33z;Sr{WawHQ@ngV|2ubw zcF(ZjGSyAXT3K#PT`J>WeUjmltB6rv<;`PDlD9uNW0CO3{>PNJB3kS->=rattFzk3 zDL8h!>L|#l_wI52b}P46Y4Kg77RCoAT^tvgHK$42dR1*c_VneuuEV9uXLoJ!7Q`WMJc0AJs!qnA*uOUS z4rf)EW$W_CPT{e)?)i1<=lha$vDG`pIJ|@|l~s!Peh}(iYF`%Oci3scySeuA&!Zen z85e3Quiat1Qc9*@U&`m~9hF;r8_I4e8uJ)hX1oz!>b5BK}g} zx zflE8_!l!Aoc{#WHFQ0Qx_EG+vRcZZuJsCv)^mm<`Hs67PLBbupLk6^Gh8eU~2Eynq zO?cQK;m};lApB&Gvi_`W?|%s&JDyqQ9Lu;AQgv-(5BKfDbqDit$cAQd*-I|dXN7txBuvGxMh3G zRz=^HekJv9q-|Yf!6x}nov?HE(;qJ-?@wdQyZ1$I7tcRVgF5y1J&$hozU?}$DEPW= z$(lK`QM>bxO4^?~+_t+nUD&s=*V9Qo%UuCvsIVae zgZN~}St>bB`~O)uFi6V>cPTjU^*$lp6eb{0$sTu2aIM({mx4>P4qC2nv`$&SM7Dr! z!KH|qSvS5ePs=^}^hYG~KJOWOtLM(^*?-jP*R+E@zvnKx`t7i{rorh2k5}a{Vq0gu zPATb@oQ9a9$*y-&%sh{LCMcvE&lBEJ){33v9-!e z`O_!o$LehMTK-n~=I&qe#ed#yO_Th@?yzy%iD&H^5rt9-buY8a_T=kblInG{<7s^m z$az)hwnb=JqW{B18Fewz`^06$+!eoCS)BjF`}B+WbzyC#%?qYJ;rhPA>QR>g`}z=( zxI<^0j|$3s>ssd5DlE(8m~j94%H-?C%Vc{+TDVQo?V{ndtHLc*o^bw~g|#E3X-yTf@qxwcw;*t<}P1?XKi32`Cf( z=JS6wd=4o?{E^7+)GzmM! z$E<(wqss5wq;QYr7`5PQ7yIj*8a`$JF*=eu1q;!j>TYQpi{SU;>*YA(tcEzpo zu-x_n0p>+rr4JOf%jTpWY{`^athpn1kzluI-nHmg-P&u;Y(JQ}M4@NvF^T=Wi!8Re z%~fSOW5c7PCA8`Dt`AS5e~Wu8n)%>f@7j|K>o05xSlK46X&ts!?X3R3i=vi0BF{{i zeEiDN+y;rLy*a8MwtaD2ba?um$>QbSs|@;b`L#WAzND;Uw%+(+_c5lkdJNkf{0@r!ww6U)*xdPhrIXDmg{RI_*ZkeJeoaz|B-;d?QvKxhl7Ft4^^1B> ztyy}q^Tjszq-*Bal5?I;&_xsbUZK4Wv=2x#3@Vj}eI%j?BQs?^r5m|S{ z^w{RFTrsunUi){I}4+eWP?s|#L>8lD!7Mb4hd(JwxtUHIUIH??;>AY(8FR$$` z4vea5=l-9}`<->UV9K)(!B?xR-+S)%j;a3`I>9t;|JD^^zTGi?f`?c#cyF?*8I@8u_{!7do4CnXi*MWMe*m?$aQj8H;3go{GM($5Q#+U7slrBbKbn zj8&S+bfQK-MY?Dq6UU_LA0C^JoB@ND?bep7tb=1(TN(+fPx zzno$eUY#lRUg*ez`+{d;3y&}!%X?MalOCAb=hn7T?Rxm5hkPLoYWZHhJNI4T@w~yS z@QL-vY)Q5WZT!zCobSlssy*^E^XJ9P@;8&Gwm)mr-uQS|(#AQ(Jpc85%3l1Mc|Y$B z=hN=F*M7KsS8@IkV-|5(;e~F|-4^x-PAeWroD}v}yy9PIXmGH%{ksWo^*wgC{^fo* zy?xJ|f9n$c-EhOl(kncs+l~p(+s1Y5$fNDHEc{CI4L0n1Q>J=Cy3s`6(y{mblrFJ< z6W{eX3$x5z-@BZ#%Xachpr$t~Ya_kZBbte0JOQ1a)N zwOzKMw}m#ZIDd`l$L|%-k0|ZDy71kRDM?JWK7Z#={utkN^3KdMv*l6yRo-zkhMGP) z+;@8Wwc9qVJzJlhiP_)zzk_ev{M|-E7bd8+*)_2#?`@w_q4{8gx&Gz7c1tepo3FlT znu_Ncquw_4Dvr(ST2UNNtr>e<|>v!mI2&)@idR8I4p zuZj5XtC>6a?<561OA+y!>|Id#DMCtKbaRwQoYzhb3rnEQc-MbFpX z?TDUav$1!h?xa($+dNbM?zyx2%G8`IS!ySxO!ja5Fl$BeyRz)s1!)(#R=acai4`3GMx8L+c8E#$VG@H&A<&NMvd(Nihu;yI0bexHk-f7G>q>0!_R zJNdGMeG)jBs}pP9OnP=>_n`w7&8ri`Pu%~x_OH~9N5(02^==}i`|W2t|GV+(ul?Kj zZH?dlHFTPD99?a^Dt1P*>bo;q0nBa3?uXgBZeOmN%q_6qTk(Z=|I}A!rNkcXlYFLk zmRE6`!$LQwTUyEYrhhPWvoDfZFS(P$Q9Jv+`uWUv{9Z@*UKF0X=Vy>v-65_c;0@3v_0&z$&b%BRC^!g+72&s$l4ePk_rQiNAS^2ZTV z;kb{AoR%%m?n^hz{!Y=q@@nQRPD_n#RXmeR=3kpq+L9d>crY-i{r<5xQggq|I1bn~0r=JuYv5o7US z`+Tm=*2kwjbx?(*Zo-`8MQ@BrIlKRTCPVORlBBsm4=JN%% za_TMDnz!#!!y=jf@wlrP)_bPX z!bcxV!#+%r6S?Uzy;J+Rxap&Hvl5@>9g7T9cv$MNcXs5SE$2jbR$A9D34WKFC3^P7 zneF#y_dR5|^(-;!s=<9R>!()Y7wk$ODIK4~UY)ZfB4f+S=It7t=O%3N`~OpK+O_AF z%O$OZBP&`Qv)A1X*cQ#ca`BrCeWe=b=L~}B%AAV@X9RCK?aCLmtENWY;qAY5v*ohe zg6D|~tW{VjCsdaC`dN{V@uVNGo>psfUic^LS3Bprv*(}Lnt_`ZE3PtH;2l+W`b^FR z$#hGV;MhwB>Q}0iqP(RRT>BjN{z@uyYyO89)3%j-I(W{@&8GPGO0oApvXxTY3D*S&+m>qXrY(XiYg4p$!E!>Osu7#5nWKY6d!@>fr;>)C)8hgjZA*dCaE z*15kdh{Z#A$Lf8O8!W@>E_Ouh?ptEN^s!&ckI6EQ&sZu}8U8D2X?(EpV(d1D@*B5) z1eK|m-hZVMp7HpGW>t7|X-|2YexkHM`;3Tt7u(-14qwb%?y`SL#pSevzc_v|+g|=4 z_<44?apa}UY%!M~iaK|<-ToEvDI{XmmCa8R(ymsCUU1pfb@pdnfLP|_kRsKi?5q_H zB|6^!9pkqh>RKeu(|6k;+A1LO>JlsFtOpG@p3Z!|;os?$)YT%{Yo7CNIK|wg@Q!oc z8ICX)jo`U5Rw<|N2S~e>{p9+x({EMh^Xdveo}@1VM>+PV9Q<(jC!g0krPtn59?yTr zdDPyY(_-F)jYlN5rWLR(&yMr>+JC9Mb!}r^g^%9xjc*G+?r3g4yl%tGnNR-4zTuYI zcrYoGEA8~gQx5J)<%|D(DG>3vy{^=-ciz61Ts2u^^WtY4cldF>4!L_K>foEJ-+wUk zq&Papv9PqP6?neDZsm7gaqnn>uG#MF0W2@v``V_8-Mh2xGeiA`pZ2$zg|y$?+V`g> zSTur-q5ey{a^27Y&pV$G>wM_T#%;XI5;o|p7Hq28A^d&r z_2sw1>x~7cwMHmd`SAWW6z@?jG`se+ZNVIe>ksSL8BAQ(U%hXf4?j{*%C{#ADNhV`nzL}ajQ=J^ zoh+U-&-o&}N?W#`zkfzEvty^go4dWYK3nwtzg6}*m1ku{&&h+DMI4V!kNo=|_fqDO zQv!3G`3}3HZ@Uhx6py;Qfpy8_|9`l)2UV^MsL2Uo`fm5m@zk@!LH(tkE88;IOQWyo zJXH9uD}E-t_U1Ez<@%vr(cAjld7|F$e*pzq4QbL3_XQ$=mlomHgICoNgg= z!n3O2v!dk33{SIFX@>P{(&jA{J)Yaf@AJ8)(ur|e%bQg0Sp5ZE8&@atTFIT#KXdQy z%}Fl=)h|wN>vDPLw)Xn|6<+^8ompJqa#^WD-BjmYw|YiY{QjG*|G(VqWjH#k&qeBO zO}G3PF|B|d%d*c`d1|~k)@h&Rw8hw}*80e=dqUo3@0ae#v-)ayYqj=l*9h|kdAj=? zb431b2wzrnTWQLoHAS7z_bUHy$^7M5V_&8nz5bZ7Us*_i-2RVM<_~UVShun@WXAtm z=-|VDdh(~bf}b-#Ec<)EH2BbjRj=HAb$0I)T4G)@xjOWQ(R3rRKfTA+3OxwvE~xHN z>+yKh`BOR7y}VDY-EH00J7R}lL>bwBE#q9z^KxIriR%ehLSx#DtR|IDd|%HImo+!x zmvPN<>ua|s-8^<9?y`()r>IFmin0AO;qEWhNx6&)$}c@{O`pA$mCO4nm+C6+OOJ1G zEoixyaNVERr9fz_pJX}f-4`LxEDmOcxCh56T4gl;Zx`YeIH1O7oHOQaK=DOfj8(%QY4C)p9@mFKLe~De+ z`nvVrcf0?@_{e-YrnR1P&W{5k|E5P(e9Y*~yLA41A#c&0wbHU56ds+fscDV=XY%iF zlX__k!v&`A$6rpnbYa%Ydn-BW?e08Xa-Tibc=B@X+m~%izU-QIv}@kkOL3_ijq_S& zzrJ$shphPdU%ku%8q+T<+h%)9uq5H#y zL*P0HP|4id9B7EajtZ2F8XEz<;E z&RQ8NBK|R9ZPo7!!M|VMYEO2a^f~FrKC@Yio>;RN)*D(ivF(jEzI?P~N#0DZTXH!% zM*KIC9cL9u=MDR(r%NliBg(^ud`%R zt-_A?2X^(9du!HPReYUwNuuj%nE9lf91m`W9hc2yJfB93* zg_|s|_2d?7&N}c3yyW+U*fw_ghtor}-FM76dPs(r81JbU(ZN^d` zKD_^Qb>X>=lMfE$J>AhHP_wOZv01e+n_Y$c=EqX1Z#ObrIPCc%YRWaoQ}Z5qNSqQgzv`_+s|+(eF=5JJv4o)-;#f6Z}<#Cu5fUT{tTf!6&wV)1k*bVzu=@|Nh-r^;q@H!~2~@;m<@QJxzZ;m8x4Sn)FBWLhTHR zci&bo`Ple8J+HOg=bV9xqtA(cR(9r8+8g@)(2?Ps$S@5WOJ@1;!y`N7eZA#3W z!!vvR(rmuQ`VAKabzc--joe`C(9N;^*fO4Y4cX}xJ^OF||8#QF`YpdacFArHsy(ki zsc&KEm6t1SI%(Z-wGv<6u(F}x+KVYiHa?Nal1~UO*k#dqZQX2Tw)MX%_>KLel=VGL zJ~%!Obep^{Wxm{D+2=>5T70RU!nxzF$2mLh*jc5S^QNxJ-g|TR<+GCNHDCOmrYlM< zTX9?9=14ZgcZq>hF%A4%CHALUI!Sj3JVY8xw>r*%W5bzZITF$1%*|^8iaM8_@ zCa0dy)t(dQVK-n6T6mg=9<$YqO|=j3L_iMqKj|7@&( z_4aF{&C$AKK?maP?f)bdWzgLpy5PzPtIG zFH9+{mDOLnjb+irlh;mXUd-g1I;kbA`i7C4N5#a-rURmL@5oO&Qc+(1z^*)x;j8xc z7Nf>8u}Op7TYzcQ}}&G#>ar zlOb(=?|wI_kU7?>I|J@bym2{3UB@ChX72H$f0UQ=dwEPwHON{UoBTEJ|CaDa*Uzh8 zSC(Fvbu?osAD89S-z~Ee7X+>4P}K7cQT=hExba07jw{>Cj?LC{{J_w??*FweyQ!x)7#jX6{(R8iFG3>nT~A)ea*rcH z<@4j2q))n?*|WHIDtAqjf_>vvGaco7;xigwSux1ZZqB+==AHdn<X^Eq#DDdJ)5qj^RraTDf6J-= z{b~06sNb&6#zvgqWvWvCJ4F3@n#wKJbeb!Fzo1gzb6NR=8#bJq5^(2SR^r#EMl%bq z?Mpd5W1Z7g-)mR-0#DU8@aF6(%GzV7w!1U`^4Vzt@;>=JWDbvFQQ~*4tO+ z+u7xA`drG9T*j2H$$I8HfArR^%JZxWb1uy8+2*q3NwMs_oN__y3BDb>s^&QsW*lhE zGYO5Gyeoc_`OpRrAGnEsSjXVFmxOm+CmeG5TO^ex%&0%a~mF+%#^Jkri@aFq- zbdFe4#r3l3CxDr*~=tzF9d=pFQ*Oi#O6! zWU7idXG?M%_@Tay?M7w3WUrtQ+OxruKN*OkvRS6VumLEsXwOgbY7|XQsLsZCEP}QhnAkZ`mfx5sY|8Qt6d&C zep=*Tc)A6mO^@ z^W0LSvt|b(HtDQ0{VjcWZ{D4Ye*fx?^=3Scf0|>n>rk+gY4*prJ^Ne~9~R!q{eLb` zso~W#-YDL^o*($`ZeRS%>4inDzf(8sl-qu8y;n`81SDFc7d}qPQ>w0)o#pT??Y`8j z^Nq~Q3qvBkGcIqtXyh?XW5vz`uUlpYPigf#5p(&#C-E~aho2W;&OBKk!o+fFeM`!J zvFF!Lme@%5f4;<|QG1hbuY{OUH^YN9YWtZ_b?&J3+%rdQ_EIOgl{MY!-CE*#d)QVi zlCroO-&Jb1@j&OtLnn+@%@99abK>>g?|Gi*HuOcFR+ZK?xFLVN@B8I4ffKHZBY^V*x75n?&GQgEw}F5dlwurn&Veiv(Yy|N=jt+)A_|W{^&W)y{EC^ zxX^z^PJdCMwZ2!mO6LU3=*sZ8z@y%Jr*2)rI{_Zg!jMn{e}>j|H(q6#?)3Lv#=18| zAt3GQ->pt3(h9{6yWRey6X)xx-xeR?dRtH-ezx>#u|}rVoW~~^wJpisB4~DSWtQ){ zS8_cEcz-XwYrFX7^mV7gB$FI3-%9+>^8WPH3)3$Ko&J91fb2Yz0@c46`^uhpeT?vY zFx$_q!}Zk5%ERZ)IKMM|d>^oO*&g%YEfE(S8vm^N8^@}2Y-jF|x^F+0sa~4Hp*~T1 zf4yL;%rlk?cDugbzs_&ke}FA|<@L1;4F4QNlIPEDde-M{_4-)nNf+bhc{A315o?+#RoR-HU8Z<=v*F#kl>0f?<$mmXUeJ{+9(AzA`(FB~*YTF0 zimq|>?0D}st*~tW5yp^M<%q*43QV3ZTWfK5+Ol>9jb-x#SR(8r7VgsKoOHG+RXCu< z+J0Helc`mU&GnrhzcMV|cWhUz=j*q3Vx520ZLZv4ci&xpzVaS1G0sfkX_(R%}JIg7th^REH~Wca;iw;j+prI z?Wec%``cq*^0vqr3#Gnz`taG&>{D@JADa^5cw|%}awhh=)U#GMIQnh- z#h5O+>5KeV@U$|=Sq6sQ?)oh{(`?M0(v31d&RBEeLe7~D?XCG`tp7SW!YC*65SF?b_-_5yaGw{i7+&`z;DE5iE@LEe*r^q=ByNu-JleT6H8SlLB z#S;)E@mIiW*_)N^_J2-jYz{epEpLkZeytoY;q&dg*RAL^o$!@;Qbz6~j|Z>x&p$M^ zejg~&TG~4Q#hJ&QR~6cn`}^XHR=LKcyNRruaY`Zjo#5*qqFrY$Up}>B?)__pk_=OO z&TZK$qMym65LNG`Rx4z2bv>I!%gYVRN^eH@STGiwpJ8dQ<-R0%-etYB`_=Oc1O9Yf zIC`Gv34g~^g;nZIX->xf&&RFT%bGl~UFu@Eom?spW@_fb>&xvoY(E|nsH}l`YT22+z+wb7gBhB z+}T?DreWd&F@4Qv4qwF7mb{_s{?!Vvh{g-?? zB$bUm&a<|A`&d};wTDmhI$Q27xxTZG>}p%dQMJL&<;BMR+=&bA;{JTvn6a z@N%&epZ$aPaGlVWbyuhFF?wn{`=Odvx{S-;uiXy+%I}M^KS--}pUm^P|H-`A?b9D` zv=ym7)ao3v`h$D%?gtxnOe!x+w<#Q9(rneSjLm4-d8450Z+On3%Du%bQm;K^<30-> zFFMy8z{YrH7Wd`c#DBg#&sFBAcwOAy=&~!7`N(XwtCLE~K2Lm=DSt>e;rH!Xx+`8B zYizk{AS>zao^YcisL9K4V&0eI@ijLqPo&R{S?H2pDOc^kTTQC&&Qj;O@BZ*EPf6oB z)|EWdKhL4%%tVjPZjtt9^L>P;ZF5ihaUg24bNQ|cDQb<g@`(6)wFE8$uX9?eFWmuC43K zyKs@XZG8Ad3;lh)GaclVbpq8)v~NW3G4t=!^*bmpspYIC<*V)#0K~rAH zvhuXfL+(>;pz!o=%H4i;!|R(Z4&@b-Qml8qPPx;``(J#*`MYa{UznV^pTLqabzPL$ zwR+S0hOhONHI@bRh9Ca%-R510)13I+u-#W8gywx}U|^Ur>8g$5J)Z2&+z$S}ubXB* z5MK0x2nBg+23yqs0ZC_HH|9{nD!RW3`Ld!#9P~ zYk#NeY0j`)dguFbxw>-Cm|5E%m-0;HHY;yC@$K!AtRrk&m}kF=Z8dxoURE9#YH z97nU7q0?{KMP?HhJo>EuU;X+q5xvbT&T6b(CGtPOWZtQwfTTYvKaQl%S?BWdtXSau zlOp?$Y&v({XudzM@JcnY#F)f{$8X;MUw6b`^{r8 zpR@C8y6y7J?83( zC#~kiy{UQGakWm@@O7T_#B$Z+FJCq8aI17W`MLPtS{K_Q zE|L7qmf~k#cb2m_9p`NMA*b|C&->f#{=XH;6Q}WinDO6+f7{->!gcj*k6x`0@yMTC z!W7c{W{3Y?hrbGi6{39?xx*QLf7;7*Vpee5zxxSMO6ye|EDKI9pWEN2`S8%WA9sx= zoYUH+;Ucv7_5T3xosUmso~`(E!lW#Am9^I@XU;b(?Spm%SDZQv)KJh0ewPV&5N!fFE(kIo`JewU-d~KTPyhV#v@^0<%vtDfW za$TdM%@3v<3J-J^c%Jwle{YU_2mgJ}kULpNt_u0q+?TnUKYh{9<6Yq!w=WdpoLI5u z%G+bBB0jEBjy)S>y0>$gNu=6@1s&gNcO*P2e;l8ZDQ@)t=MtHUB$Wi~dJooC$K#Vq z-ihoG4ZKy@y=UR8!hBcx#6@amF;DNDzqjn~uSlk4-)~>7z11}1iQTRYr){U6*cN_! zz3|VFou-Sse6ljr)`5@PA!w)9{y|GvFE0riLfyM{cs zaZf{D6j6U*HD5P6j z=Y-jf@P+R4WD8=YJp5x_{yp2{6KK?&VcNNoVW-PmxgO*!$(=*XikR_vmwbug%@3S84ja>Y4b@u!75yMee(0w|w(G;`QR~ zHi1cM69ju)J0`nb(aL>XB0XjOh8MQHI&6>38TuZ%ZQrWKaU^cC=iZ%h*qw5X=f0uuj^u4@)oXSl7wZDD?H;kC}?e-f^p zi&hR_b1uU}I-;rh@Z)`|UsOXZ!j1AYgKSr+MSHMZGi{yb$eh7_(Y?>=;XU<;O8yx0 zmmM3-8a9Y?m~}@_n>PEzi@FaY=|NL;1I_ggCf{EBd?UMA_~fH&Uvni(zqe~k_;jM- z(pmEix1iU*Cl@STZGQ0e&ea|#Z?5v(u>0(5-4&&l7cwW6U(pj_fBg17&%fQ9KTguO zS-3>lWXk2W-N&3JCvIH5?K%IVs0D9ls);Iyt^eub%eG5s;rtKB)J@cFS4^y3w`RHI z?FHL%b7YlFpIhginU|R+&U|x0NaPt-7mYXTx9nQgS7}k0y4rJhxb=BoU)3zXKlQFzi%ge%~Gf^?zpmflHUKD%vs_HO^&mM5-1 zW>2cDSUTO|<>A2F-Zl469Zgu=I{)*U1@><))?AD|HF?WLN5NnJr?O9QGd?^2i~-;B z{8eA$Di;c{u03TWtzxrr^`7~q2Q%K9yu8vj?@h4E(oM1|429Agw|BCAG*$d1Bk}L} zrZnjfa`%M2?ObyTg!iZX&d52Tly<+wOUt?FIDf>C`cuWBpIJ9=jP(6DTh#RbnhBqz zWhB3cR&M$}=TdnHo42{&m-4QM#&sJ{x=Ofs$W73l@X~H?c}?N7iyQVmEMwMs{I~9Y zUjC(H##-_z|22*8RA2M|W`1~A>E-gN+qqK@Z&PAwe#myv*htd8->Bry;-v~=YtLQU zb3JIY*gS97oQ@g11>Dwsf){hjm^BV??cec1)?o3^xpi)S@9LAIY$vqz#QI5mGIag6 z{M|y6%H^A8v1Q0*P6_5*_>9j(v+zmCPJ_Z}WoFar<{gbJ4^F5sdAhXxUBtC7 z4NrDYn-`XKOgeMIeyv68CcZge*qIXdV&~(TO_$DYdwD)|5BE&D$y2!O%U?MO^Ki?p z`Et1Z>y-CxeSd|T_yg|>R(vaLp0)ko8XtRk=b|^-CURx37PkC*$ouRe9*H`nfgIFGYUrT5;HU<*#s^=bBSe^y*hd z|6vzUnq|=?P*cLC(!QYJ`a;h6|JmL#dZczOm#=D^b2oB|4f8)6)zjV6v-Hza_NCS? z*DBd`?lq~7a>b&)};qVq&{m(hSH7398b^fvcHha|~^^beAjy#pzrzWLm zEc}Z4cA2rPu}blsx+X5;?_BXYtOq=D+m#uMJLfRo z-^SZBG3#|_Kx5>+);+6|oQ(~>ow)r*>wVcj$LZbolnnlJyqLuHZOZy-me##D<{7cv zzQmx}f12;?lUIHbR#*3y1$*k9`VyqeyI1!?@>KWCa87T*X{xuHI5k+d=~^D0bF}ue ztMBG^w?BvO&WMd==UCazb6=F-t!rBC?p)2;>*6n0^&g+!$gN**%ep(gyk*TqlY9{h>pUmCUU&iRRJD&Eg}`n{gx1oql@AEY@i%oIAkTX0%wHruk7^X?q|;NN@sQ{y(y+fS>x>}LD*><*6LfA!0& zR4r!H+_;`)ll&?f|LIM)WKOTs_ zqwpZQNYP}!LiP>6HI5QT=RL99xBRToB}?hLv)0E<&l%2$zC63i<>&T7`)fYs)8a23 zdME8P#qZo4!NLc}roUY8E4TTe8`t*FF^baS#rZ$IG|tODGkoU!hWm;5ALotF8@KU> z^U5B67MylV;cD^+0mIYroA1}$oKtb*F$- zt=?w$xO;1{z^aE8zTG$1$6V&0Vii>*^{F@xLP~w$)OF^T<%9naeZZ+$#{hY(kcX+pDLVjOS`RbOgo6>PI8F3Tt%PXGUy)XFR zlJM5p)YpcFVh3ELf;Vk%&R8-L!RI&nCt{9h}i$TaP^1 zHGRVm&H10UbQvGGu{|c_*_9}N_A7>`#ZIUA9I#w^zvanx-Wvf2G&8hcrY_yO_o5{8 z1Kt+-s6*0ge0Rz7g%zl;T->T${Ad&rpWQr+`qtinxA-hOP?L84hG_Xy0tG-usxk@_haBQ!_VRzTvQzT_R5M>1*a!A97c} zPg`zgwDt5+--{A@jKTX$z4b0pV@i zrT#9mTVeaSz-G&=?3ULi+l;@io26cqH0OfPbCD$ijuXTZdyk!r*(ATpt>uT-!7SaT zu6lzTukWp5*lw2+WqmVr1_xVbdP(oq*MBlo*Qa!{-1M3JxZsx9%N=!V|FJDPq_k9q z%j>M}^eOlDmKvN`==yzs)?41aoafv2`pl&9(o|4m_B2F zw|dz^26mS<-+~yHgsZYHx9!-qEc5dzp1QsW&7jJcAO3OW9cyS_nZ|f5S0y6pSgL?O zf8Ct^O>X<*CGT;Vvk7)2_bZecNInYS+FGq%>YE$1;^V8GJvHCoipVZhPv!h<{70O- z@=LwuRi2+^_h(iuI(|)0<$T*QN9UMn&QBAT-S`xB0Ct`E&C}t;4REW~qB`M1LUZ1~O((3Y@BR7iOSQ7cw5?7VI6=q|0?bFhH&$Cczg882Pb$4&V0}&WBWStYWhvyA0k^_wMzSKE-?5U zQEK?``}0Ocj~5N@Prj=DyMB@T<+{zwvv=9g7npITPG@d|VNJ8HqUTE8d;9cE9|a1P zFmhk0PHgBjcRJME-1tbP|JHj~<=dHWtz{KgDf%YahqG_#+w6*t18bh+yf#-s9qs=Nj2+gt3{?w_HZS%s<6iIiAk)L-BZJWVXS=pXehvOv zC+=Z?Ztdy4UlgWIe*ffZ+$W2=PgBCy{&tgPU4AH$J22I`fmbsv zUPDyrPmA?~oQ3nn}|_v4LgooPe^ z1A}XCBxpoWa_2UsS^b4?BJP%^tvCETll=gL&V}Z0;WJjUFl-mzo6@@Kujx{*N=BDe zIXl%Bvo$cxSYf_zPwAo6R<%c@v&+75zn^UW;{+KAK}b`<&VKS<{p@US@2} z)lTuMd8s#t>Fl8t#yhJ_TK1dHZ1PtqlDWa@T~r*@|7zv$mYx3!_(YZ7G~WAt(o8F1 zjqJQ%ueE=P9@l;%6J>b*=b3FL2YmG%&0mz13KY1RraV5r{pTD%>)q42KI*PLxh%GF zzl6|x> z)vbdU-yY?k`MduFcbn?{J$ZtwE-Y7Ga!9o%`YhFnRZsgXa;M{*KnTd$k%~CQYOsFyv_RE@W#K8 zf94w)%!?vo8doOo5aUu%_xWJp`en+Vou|LPJ?7TOexdw$^7gMgpX@tlmGxTvthBUU zWy;>*JGWMA9iRN>y-VGKDz+^#b6WTU{GF!9`3t!Tu;qsDdbqr8Ua*sJ=#}Yj^!Us= zU4#Xb>-t_ytC%71OnCeIFPw>nR?9!78wpyQZk&2?N{+xMO)F&`RsM&C^6j;L%w}=U z*CVA?+&i{w1J|9usS^ADM)pr!+Wsx!YSy7h;bW_Bes#Ml^!mU%uZGprPoDP+=e#QW zZp*{ui?tok@5rr>mQhLm!+pm>=!rJxk_Ejt_WnEQoFADVxboJNm)9Q3{r)sbJYOxz zXM2J0Uai0x+4eG#9gl){<<$jlD2RA0^Z!yxk*Pww|MJ79pJj^uo~e+uTb)HBc=BG& zfG4;7)!q7Lx>^P`Mx{K|7g#pC^ZkEXr}-=4WeoTco#$hPXOA>rYkD+}&S z5erOQljdL>HuIQV{o;<@&bi#avrb-pd^2lbVh#g?0Ke6L0si-0K6^tM7}Wop>l<-D zESs(%H2LZ)13?4-87C}r85o#_80Reo&G#}azEkWX$dToG)NTI*jr(~s?7lQaac@v% zzjxwnkDR}t!~IRaRDb2BotyGE&1S-Pp*l~t_*7--wJLJWQiuCEN(`(CNJHysj6eb3;yl%rgopL_7=K-eDkvvyDECtX-RGgo^8<_WWI3Gd-*E| z7*glHVO9y+_j>uVQtJitj?3(O+Hf%>&eb!8xggu1E&S z1=0(Cy0|Z@W-Nc3@Xokmqw~8Dq8m=1yL?|TI>XS;|IF7P5=;5M?w^@`EG#&)LT~oh z6Eh|?+@HH3TX%k+n#xac!?hY`QkU3#=HL|CDVyT_eARuHjyqefpE#@Xr}kw@>K5F4ju z6fHk^>{9)w?M$s{zT9q|YxCW-OU$o|iM;5#xz@A!Xt{ecZ%0G%>Up+ulf5kO>@}2} zf8x)zd0x|_= z*6xi8OYiLoy_0VO#gl z`}a1g-S~9>pj^OB`=*((*73*YiOuvA7Bg<}KIk=J?cG=V&O3G9Ili3#HuK_~$tjK2 zd%LDYK9;JOs_o-(y8rvViV2_MXYF28WE-TE|K3P3AhgDM>hxH~&u(dkvK}4R-`-`o zz+zk>yU5IQnN-}F&l^+j-kGE8`%Y`AF!%PRTXBMKo!77F^4c3Jcu-LEcgeYpdg*R% zTNXs_kVef&|4AWk$hYGQ$IzlIyNJiVM_;# zUT*t+%@W_V<6$)xsRv`uH+XnYF+Cpso9%{ywQ!2?wEvq;%Z_E3-Y>1T*l}ZOn?#;f z)3h7fYzN=0{xAKbcH+dDvk#}cUgAIIqx z59SG=dOkd8x`F#5yRC|#TVfgKEeB7XE?%}JjoZVceB15)${(-WWEW{=xty4P>43Cp z!^S0hQofs%uXotjal|0}n-I&|i|*on@8TLCN{e5exaoA4=#u`pf_EXOJ~a6L+T^o+ znjou&QH;OtCa+AxQw7h~FKb<~(V>^qpwvxD_it8;PE5brg)$HSZZ&Q8swy{oho+{8 zIoT86U;L%rR((N1omJ;fL;9P8n$4jLuLsuu5?`!T6PdvHOs&*ngZfsl3oGi;quPw^+qwPs{oq>5_G4qTMSarugTZSEnDA*I3Q{>B`KnYk#kLHgoN% zcbs=8Y}~PTwe^hBHxAe0-y}L-;Z&2(m^#OZ<$Y`0VT)UwD;eTta--k@BGb&XPMHn;sq59Np4f@9rO= zx?sYzC9ihtyx+EU%2u^_|Mk}{R-a!Uc0=g1dbUc`lj+@2o+q?xA!RSE73>E>?_(<-n@IKpoibW!>-(Oc`m=zq54}__8XqM zUm|#C?-B9odnV|+@)vR}ICx3N@G z_~ohK_lzK8qt`7vbXM+>(=jNv-J0;|#Pb&s0g1D2hVI!j>&C^2D=c@}{La@548F5? zDzlPye>(g3)fqeg_T&~GsugU~4&cq}WEJUeRbJ6A_P-_TV^EV-i10>@if$vVUn|}w zNR;t>Qp)O`CiY>g>-M{Rvu7sEe$&8cyxTd_ah~Hw|F73AwrphUIK#Hm<)beH18dVt z2~etK%X8r6J-@24k%2+*t>dgUo+})4W+LX%57d7TkIh;1H7Ixfa&!N4hwdGaKIQw` z#pb`xH@w>hp|`FrGhofg-`!yfn3wO!m~AP zrzdVaRX+2YzRjZEq-?*uL`}1+_A5kkKc_Gxzf$J@@WJiaRH-zXX?wZNd@s+~<+LI5 zOY+mS8RdB;~8~ zn!;9o2{BR(z4Gfgzu1iTOYJ5*EMT-qQBdm27JSiDc(7u_|2o6>P9$Y1MZN*aNGPwec*_#*hGy3>Gyg!ve;@vARcCQr$i#T?@ke0SrVYrwUZ+%U# z;M(z7D)-F)R$tIldCmLzjm1Z|bt~<6e$&gfJpSX9+>Y70s~)Y@e9|0Q3I&snw} zpK)~Z?@H^f5%E>`l&x2?XzKnf_-%IS*3VG&cQevjLS;6uxp-D&b6ZMF=ySmy*~bfO zc4VF_+HyE>Ie*V(PxgOO#t;7b&pP?<>FkgH+@iDcRpkyfJ2#)Xp%chH^PTd46B~6? zrhq#V=aPAjO|`zrboefly!gc@;(iNG*73iWJm#bD;_YMBF5ko7KVPfYE#X)y9Ji(a z^SVi^+*UsSFCYG1vUOJRO=msswogq_Ucucv_DbC?6y3&tb;8=>2|srieEh5S#AQp% zR92Oi?fW9nnw~Fq^iNaQSLk`)T9EWekGtckvGqF9_xtuul&sEpVH)^PUce~sc)Y)b z$upj3@y3;(7sRu6<#b2ay6xHBxBroI5950l>6vB!tG^$=DrQ>#iv7vLsll&IWouJz z_XQd?@y>G$Ix}H2yZ8T#)zvFrPg(R}V&~)XLmoYWzLziC-_K~jey#bkzD4UY1En*p zG3P{D+A9$nwXkMXrxS)1&V996npL&U^mXEjN7I&e|P` zzaV>&_2$~Fbk0*B-#gED`DAQ)=hCeot74|MGzSaaOWqp0bd4l?RQTfyGk&mIPH2}s znmmJ*FIY2Md4+VGuGvP_{n7_{q%PhPp49hM(!zw}rpwY}$IhMHu|}-iZL$=%>Gt{a zPqDFu+{=Et-L;wLMFnHqHW8zQdhW!onVK)E4|jyDo}Kc`B(H_}`V-G%UIq?q$#%Dd zT+T)w=`+x>jC!%lb8)2bowl~8_B@PvQhv{$?f7u2t;Xp{jU+#aO zxwOeIFyqk{<0qTAVyr{;Q-9f)m26rhVyIYuq~i6ycGhD?kq2ATUs?aTeB0Nj^S!Fk zy1vt$fc*eBoXukSk^TJ%40Zj0iZAoa5OHD}i3tUtNz?r%wvhtfG_Wstz@^6rOh4vKj$pHy0%b4lA=BT&dWXFlKOcj1$tY?jT5_MC5jEWx|{e*>S2Sc?9O431MZG2wrf2GpJ2^(&A` zLEy9SBJoI>8yo)baC#E8?AOutdDUy>mPfr=`{rvQ_dkZ*Q_)xdRFPH!KcAcxyxABVAQD{fpc~Yu^v_4?Tgz=BkNRy6IS;P=T^N4-Ozh%j$Gsb$)@sYe zv)5<5cjkyY|NlyTvel`Bt0cZ2RNUibe|pEdKXZcEpQ`fy z6}=UwpK85byWpDS)AQ@*ocz<$eD(l)?X`pd{=JHyo9qzVF7bcU$*(_ny$jB)KmBON zbj@p51yxqC_3Ef4UddK+xN&rbl}Nk7yIkeAO__31}@LQeV6~Fs7ht6267dGShq1hSN?QypHwe{O?8NG2OtU@|5du?SGJ>1{3SvTM3 zNd4L@|CqKZ%**W0{q-r~saX5gyKBls(fb_5t2T3=`P?m56FlJ-i;%Cw^IWZI^67Sb zQAG>BIWYhK!ozcNyW;0JGe2GzRSe&fus=uV>z_@j3LP_cYW<07T*k3+%F>%oxjz$2 z7OtD~m1pDSo~F$@y3QS;8I4NMo-iJm+~u8-o~OI&%4->;FH;uUte4@u2NYLflCC<*N z8>R*HU-`U8nSU{_eHD{je_Pg@(iQ7>DlA!6cJrmi^><0{f10iDKVZP)v$M}=*V7c` zDSP^jL>29BT;z)Ra`*HF%hfYymG3ZfGfpzKI_SRRec;9=d!9ACV_2ZKd+TieWg9pR z+oePl>w>NtNN5__2l`&{=IIvhHs8F$_|Z$BmUkP&_pEuz#CpzOVprkv#Px^IF0$0Q zYb3C9my5xY`V(9KGh0SXJTU*1!^~H1#TJH_=PXKH9`0hF%KP-&LeD&Hb{>t^C{2qV zu~idV7lvEk6clNmxUae^R(Y{a|KH0^|65)?eY@Cd_xqjw)8hZMF{|H+ES&jDzu9My#)dZarJn2micYOR8ys_ELU5$9*6~04WEp4L zyuY&G*^a7PPA)7rudyvjOf>squ)XknlT6eV)79_4D{p@lGfD9AZZ7Mdgdgvc&a6y2 zqWIokxWVG=wX8aqTzl1DD<+>mksNZLm&(pYccISn8^)Y>zcHgf*d%{P?i8Xl= zTOFUy$=>+KC*W#3$MJviwNGaA`6n#yX1cOrc9!wO#@~~R8cf?a^LT&mnSPhUU=7=i z_1e{&X6eoPHUC%qm4wXQeCl0%NfTyAHh$#Sl|Qyh=V`|Yp1I2&HdmQv=DhQjkIPxQ z+8joSSHC#?zV3Le;>M1-yDq1Dml}Tk?Wy|v z>r^J`?eYtr99&|3hvT|ibj{VPkA?qeyt;VmtnC-I*@hQ24^LtDVRV>%^^L)#b0)J^ z=`7lNx_h(pxlP9|$%u!%3fNm5EvKPh|H4b-8}nmQjsO+R6tZS&XbTwsK7t&;0mv9HDEH-AYjD_$zmcf~)`@$LV@oRV|RYjfK= zx>7|Mp3Hc6KBDKwB&og5tG*r-ELTY97m!?D@T5LM%esHPSzYayy5Ah=-L?lfD*jK|9Ft*(7|Qg0)j zt)=s&!FgVLsGUyUxyQXyN)7w$xcaWATh=tkMqbzZem3`l8*d#-S-$P^3YC$0 zdzEF*!>v;*0+;?h=PkZqt#tkw$AiJ<9sRcyCdXJ$Je#~(d8g9b4P}l~CC(gDxXOK| zmZ9%mrOqE=PKQmAbFP1o6c6B7ve5j?gRhQdxjv#r$4;&i-DmN9!j;vMTX`Q|%i3(V zpmUFJ)NkVtXR}sY=tt{abBn23E|P60n>0_mnK8duk8yUWzwyPK(!GcOY&_HVSWvS@ zaL3>JfCk=roebmnw?NxJ&wftTa?2TS|hoOKP#Zd{Lun;JLcg}3cVhTm+WT)FpspZ-5xd+m1c z>y5GhqE1y+hj`6ZkFxoax^RE5ma_G)gI5lh=K5@FH2(hmd7=7_E#Xh9!km{Cf9UZ) z%(vvzZ6Bv)LK!zZrgv+dEDU4Ye7~afmcb#WC-;k6?4x^M?UUKl)pl>6h|ja{(`5zE zW$yl5CcwlWz3^0V3Ttc1zH=_t@x6&VKCRlhVyeir?^AfD-V?8E$ojryRjF@7@boX7 z_2CH;tnYQY4d&07cKM~Ww9}csbru}P&7UN4S8hGDxK1KcE56t5+N2VPptEnb*|)A* z7Qahn&CT}D3Omg-&haxV}4Ec?6Rz~T z@l-s(BkMuR=^t|xH)(3V;>nQm`h3pi{VT~Z)^+#7X0=qbWEEV94C>reHtWO9_-P4C z*bi;+<~;H^_}R7jc}E2ML{2W&`L^ceW{2d%?EO>vLIYd&NIj|IYzh1m{=eVp%j~@U zJToT;&Ph(`eV8`eB}73gW!>$AvM&Amb$K}XV-$Z+TrBFvQhPhxUw)bL7b*UOM=wm{ z77gOJ-~LK?KdZpS~t)egbY0TQY-F?aOJJ;{_%rSY>YRh!Aet+1PQs&L^wilJ1C%hG_ySV1o_9dTP zZ#)olnYn3;>g)gC6Z2(EqKi{5dp}>1VsWN~m)rSEYf=7e$KUI#&wh9MqNMbP(VtUW zdV`b1s=|+V4ctN|#wIGLzC2c}|59?IyYJ2In`cbw=nbv=m7yKww=r^m+Oq6px|NHa zc^@!vbrdiN9P(;QGU>P`dCBbs-}-xN3(x)ZW$c}y*(OEGiwrBY`CvR79LDwt@tdpmLnv2tDE|f4~07$&Xtxton+t@v8}N%N5EVE z#id6R`7HFAO81K})a=VGvv$zP9tArvvlB6S)p7E%#MCIKKQWT72o~D*JC6 zSUjG0-H`jV*6~yQ=)WRpyKGNG$4JWnrz~u|DY8r;3%XOwlWN7N(XJyCxpk zIgRP#LgSrq zY`j2t{mE-(Te99-81D56=v3f#n(VXs@lA;z;V-vnY1e;V@BIAu+Qh5#vt$>oc+BxR zExAC~HCHk_&in7yz?;h%ieskFy!39_)5Gbd8e$o>TcvzY)Fo!8uD3g|Z^;)1o2Kql zA&gO}y9L+r*p+TDPmumlF(Wr~PZb7b_2pR8eOef0siOn_*6ANMB)hIm({DOUqL zoPQ*47n{5O!op*d99PJ`(fm3mW`4aykLl|_-iHi6aCcstUM?JLZYvgliCbRy=;t8* z|E9)~%u1KeY_(sl(ox>pa$8qb*IM>ZSdI3MVY}pju-054RXwj_5x9RXmld!Lv8L;oDmB$5687WmQc2bH5u0cO+yMFqN`cDy*Dz zDJZ7c^T+=~KWF%y>YW-Osj%+$nG$oAc;|ojA56E@*}nC%n#@nzw7jT{mKHtr`)qG* zD$m#6w6jT6-R*mK*#pG{o$hUJn^HbCp3h+tcDt-r>eppvg!TRaB z;fg6oWfnv&)#YDvRZpZgqgZ)${et@bSKFWGd%aqJFldj-HsOTQ*@;FWy1jqBW3I3* zTai`pRl%~*TFqzU@(s#6tyktaZ~ag$Jh^R~#Nq4BTWkW4FmKm$xjyxXrYW-#-=mE6 z@0n_L`+Uk>6}bG=7EiZ>hJC_zOaINd9nZzR?Vz>Q-{@dA(ZKan%M?oQ1~5#zsX4Q$ z;api2f6SHgWmh9F|4c3nXj#&5XmP)EyNAU&ecSeDwlVu2F8*U|YNyD=@H6i2JpW6r z(bqQ!<{Lkq{z!1jS5vt!4;8le=zMmL|352WEpxPfuJW3d`#3lJVVj{@yV!MI>$SsQ z6X$LI6K`(h_rPH0s!N9EyF9rc`kprno8a!TU&v8;{{zK{WX|ap791j=QC6207ty6A z{SFKaJCzt#nAmDwNZy%nrICSwVH)GSmyr3hSF?+&mZyjAbGmbTo%1Av28R&kmIn+B z>^Y?kjP+anYMW<#QvPXmdBbE~zks3w4~~@&+64PpE;Hx6@SeHJuzhdy9#x5bp=-Gr zT6xtg`l3^x9C%+RU17pG??g>U)XF8!j*BApe5vsG{lrFL*3tV9osU^s9o7Focj5uR z-`^iFFg#lXawx--mVmE&4jy1&VA{nv?=@%+gYl#8^k?%GBYs`%QWngAdE_DQCR<}g z{@+auV)CY(A$4m%Wms|sGdQ^4_|b5|bfRQfqEnOkQM1CjxwC$R+|hT9ZOvbnF;8pO z{v56qr#{-3-nca4S{%m1#N+_JZ)`NSllh7HR9eeHSe8n5{u zC~lro9krFsUpFy*kH$RqUw0hqJcOR-f1SYl;pm;2whR6;2Yz~Me{k38m}_s=@3f5+ zD%v*dZ^)D4dGCsj&fg}R%TQHzxh`6L?~>a}xqSseI#T*U|2_*<>^ogq)w6!jl$qU& ztNxfqn0e~cRT7WyFYlWBK+T-B>A|OXnQ#1Fj=En|{9f{JU&d7=$I+Q@`XR4+r=Rm4)n|*nH{q85S0)LbR)GS!pVJC*4!=#@{A8gz!_*0jP9Hxv@vf2dsvWcM zPCu2GyWro)6AwL)th+nG-u0*8>E+BH3?_;HYIM)mG24}JX!R-m{7W~s&J>sNy~4}G z*8kww*=6V16iZy5OH^ks^=vViAFl8`yL;{9x+xoe+s8eM2oMw%V-iXGse0VeR^i@p z#i@VG>i#XrKFt<9yGizd)6^UCw^<&j?3{7iU8c`|rj}-xUM#!7z#yvSIO_w-T!yrKaL3c^j_$zE*Ogf$ zgXZ0jKeAe?_hs4wkiXo*i2ZL1_wme99p#&T z=gt0Zb>DPnC6ke9c(0|~lRp3TeJh(6FfcGP+APo8w4D9Gs+sG!rU(UxCgj~0@$z2j zxw_2n^AdS^(_eE`@BgezUNK{#&O6pPuFKNSFPFF+^D>B)+Q&hNZfez+H^jVWEKYZfZ{bh*xWcfwn4{TAjFsi*)jJBC>;Js>;EUMfs#;LTW2xib z9(VO;(ZeOG()G*tPUrSz(1X^ zTYR}@6#2yeO~j@CU&q4DHg>!TJSg8<>h=0o?y8@gx9RTuYtW3h zEff6{&p#Btb=vQ2oBM&e$r}GICmnD-c_+?)(;uSvZwwZWOiSe zSbFw*v>*Q$p4obTrQ&jBj*I0dDK=<}d(DVX(?c13f>sp&6rFitOxAz>6Ew>FXefZv3l61ZB z|Kzi;f~FqfUUFuZ(}89Ftwq5Lt+F>Hio{#hPp@wd}b2|=Xj#jG305m9pZ#*LL~TV%QIE~zADNvyc56(F;a zqvesvN1pbmwWnPl?p-73>wNvi-A0Dj=kKi$Uv+!wjrYi=~My>gbR>F@-d z^9_zS-c4Ejd5+~RjjRtTmkzNt9a>=d@4~mmDqjw5)St||PElL>aMf;iUW=F+|TvytIrLJzcjz&Ta-@w zoa-iEa-K$dy^@umxMA+CHBTwYg~ z3sYIuVV6far(3y?R|Xyv zdYN^=v&qW#Q-?z*aHR_6t_cUCTYNyg_v487Kr+JOydCSBW z9kpfgk#JnD|J~8Q!1QkUJI%U-A6M~DSZ*CZjW1(m#iMHqj~zdpd*<4)O~dknY3zo8 zdF2xCH*7LG^J3rmkZ0R`PfwJXvi0Id^_#|>pNo}cIM*)=k8Y9jbn{NKJL4z7Fkt~h zsP@&qCE3{v{jT1SnsUq6#y-l_oMWdBSE=K=l(4+6t+C?QmQAnuc!pPJvD1}n=@r|r zpMSLJ(v2^Z=6?OLaq)+T7SEbXLzq0d|Ic_^)M0Q}XOfxipKG6&_a5bQ)qV3J^xJ0n z!VcMfCxiF7FW%oR;1M$4)h)g~>=f(sdv)33%3HjOA`YJY@zPII|KUCEuqJ2r+pk$~ zpX0gsl}oMOePe0E4O{Dw2YKk=C z)xH$3wh2m^FZFVfcDcIwwbYZ_4}9@T_2s#|{}-Q;Rf*NEJ~7pGTQ*qU|W zjZ1Xgq6?okufDqLu6wQI#t)yi|5vdQ-l7~*F?FHMt3wxqN{;Af3{Tfpgf=w53?3! znXJ?7IITY;NlAYh&)EsNt1hL*v~7C5i*t(Se1|uS_iAMPop?E`Gxojez6o*n7OS~z zV#@KJe*3B5z07@CmGiY6mjAz3b*|ceJIC7TQjHUf-ON{rMjZA2-C47&thyk)O6B-1 zv;0>Zdoq9M7%P<5JT(QdG_g*Q8C)qcUCz*Gb$-RSSDizd1_wWL)HD zdy(QPX99MN9< zO-_7Yr138MUQNla{9cm=N86os_gJ1-U$eh^iM`^%ckS2wT(3MMnoe7*mv?Z9M?5(5 zDe8An>6H~c3!fKBTrW7TvTnck)Hz3YN_e+@cr$Mj|Km!Lrvh&bA6?wNNbvuc6wB^Q zY`c$Jwj>s=O z6Ard-p5+)T`OskZjfH_>s}nkI-0%4DC7RPOtH1F2L;a&qqypKu_{^#`Axd}3#*2k=&QF@YMBO%7mhD{sNTvLStD|!f6mEH;dwV_tJt+qJN3_cFN%53W4r&R?FRqrY2N>%eXd7GZ95hl zDLP}v2EX`~tnI&_%?tbCVK1DJxjWT$@*EjQ)_(#lRS&|Gv(1}kFcgU0Zk}v%5szCw%$Fo_?A?@7e~C~6g8{QeedGdWjiGnl}DR=?>Icmk$cLkPn_QA z=5rqiX3y%>7icjIIeF%U%;F77s-n6j&!!qS-e|k~zG!R450&W^SDr52@mV1A-e%^5 z=VvT6JYlk&iG82ii7%q3=9>z#f4Gp8G|lXnzud~CAE};yPv*AUS}i}>N6&b3NBxx%~g40+N~)*d-EPn zKl-U?mBS0IeG?;97>x~*f7gAnX#6Y0HN4>d#sbQrHd*pVT z{_Xeo*?Gy;TZywAT5X@ccu^AHt(6{%(MK)fuErauCH^?Fc-z~=U(#XEnCEIda`^Fb zO6z-v%I}`Ho7ZgGvz@E^{jAjAPtP5U$ysB6i}S;?DI94L`oEbhBpN>)a?-6%a$;${ z+_B~;qv54ozKOQiYq#B98NW9{uG95J;a1}_L6|P-)bKG{a?zd5XQO$D zW}>rO*hHu2eWHn)kB?jnUcTY~mcy6Um@E9czTsBm(j@}*>UAape9Nkoy?Fm@i#n=# zM0vwBb-y`25fS^mr*C`05cjdSbhoo!_VbGhM_+EMI?QgOX}J4io>f6f$^5op#y5rg zpUF$DT7OTl`o%pH!*k42vzw(Hlono(ymIM`Mhou*4e4){9mjB+yTje~T zzkXCdEZ%&8w{$YM->qp?&eL)fR?Jdtbv!@s`gGBdpjrH$pJr}5n|7~A@2B>9=9o=7 zPk-Atw*76oWu9?f!?}r(0Z~sH-x_O-JvkvTeeZoRX zj7M%$a7?}8pIeRL;)(%l3QoyJWu-sf^F%nr#>e~FW5%o?{;;?|8$a1!_}8x>TsLQP za(jwSn05EBNt0eLPIggbuHNb)e#b!Z-~o}zCtH>4Hv}nvy?1ls{g1r@^Bi6>O6xYP zcrO>Ou5!58PGY5Q>amJy^LOquS+`g7mxwMnx_!qb_eUG5=Uv=?U|w<1R`)x0XAfEw zSnW8hofH-7&dH!0TFPUYb#Y;Qznbr?(h!>~KTdGn;f|j8nM?1$Zri_KzA*)B=(4T2 zGH30*^D`29w*K*olzF`W)YB}j`Z>;dy|>-5`>d!Ekc;pvDDkSM%(rLFzL+|B=W zl2*UCANy083`IUX{{+wrTzr{LHN`hl5KlOx`*ePMcgN=Rw(%8ty#y1xbQ zFJ868?E2S}LYmI!LyJOA@4Mx$(rTQ2NJ#S3=IE()U8P4f=PvK(+hufe>T%`go9DFf z?!PLgzP)ODTk#YN$?5$)3X?g6jTT&F(DCz_wr13Xyj*-6y+$r zZZsuI?dFwYiPh0{ttnUb+71Wu=Gu<%erAtZO z=flQ}k1w#`h*S4obJ}fnspsON28LqK+|QS7XDzah6?mNO5V<@=;d3&pfgtnpNL!|| zwMXTyu?t-JJ@su*L5a1%OP^QL6VLovF`wnvvHDJ3fzMMSx5Y8>7qMk99A;a&JuIla zZ}qw>vm;`jPL>XqJrw=@IP(+LO`G;ioYNd1na22XqMe6!WzX~4SeZ44a$nw*v40Y| z%DniP|7Om-?B)6ooO44$ygnN0O^Uy`MPN-5|76B4qdyt)i&S=eV*8?R~ob z!iU#+R;_D)r8M3;KUuX#z~^)(uS;B>V@~C_hAs8GOIA8I@qdsxsj_EVxruE5;cWuJ ziCfz=7w%qph0W_taUoCDiwCb2<9lbQl^U-$Y~N{nB9m4{#HBTT;gv4Qnzxl-mu)&cBk%077_+jv z?LRG#Fm9H8`Fxeb&P@+i9?Lje8WB;Feps^HMBnzk@r#o?bsh!VPnsC9YV*XSp3d>< ze;zzI{BqwO<%vzD-AmKNRZJYdisp$p?{V;SU-GXx+|IN;wZBNWe*c>baRSekZ>(2% z_9emSzHniwndwc%&-#K+FH}tpH=e97QEM_@BQx)SuS4DDYgOkXU+?&{$tzo6{(m{Y z@7ji)t8?zX+!;7gr1?sJZtd~RI|q{|t@*&E!N{9&VBOy%p{3nMeovAQubUxwjFI7O zc-C{%H9XsNZB&=a2}(9HFtAlQ&gX+p1QvhqG?sHX5a6{eSMGyT*LR-v)n6Vk`KUi; zDf;Gj&Fu0~fq4#!VWEqj?tJp=cT+8IP>Z@M|KuLbas0z22L_Sva;0YR4y8vvPFfb2eQe=hA05St?4+ZI z*PlslYT39qJ+l1JZI=trRQu1|JIinJndOsTlNi&Q%hxPwgZl%$LhoEWyfXja$#oS; zZbIEBCb=74YW{k~qJKh!7|)i^`8;!ta+pL|eBNzwWE4yKEHh#HH52~*!hd^iUSB80 z``V-LQ{JM)n`cDU<|Tjr9+^C=P4esZDGzF|eE-@v$#?#ewaI%v_4$hC6>7aosFU8{ zEAv}z-N~|qeckHTT%MkrE($Z*>~dWl-t(wchXH2?KU6$KMV-3J#SY)Jsm9@u)uj#P;@= z<`0Fb93GDqc3eMr<^-d6a$^Y7Nn=rlc)L(p>*`M_^KTVQ-+qAiwM6=s12Ii})An#V zFg1&DT-r4Mebf)lA1*6QkLIz?b+A1bsI@qJ|I6<`6CQ?y#>-t;^fLI$GnH3Sy_YNJ zUDfY+{y{WTdF@Un>D9`={a9CCOp41;FZo@y#{6*1#Mbv4UK?#xKc02nY3aEK>0g%1 z@f-cW*b`#d#CbKO;KJ){>wO6xKdil+LPL#;E+(oKAOD>k;~7@x8_l?XM-|TkQ@%Sa z2W{oPH1akrv|BYhM4RPfZv31Zx}{N45C7OqG?O)c|I7P|b3w=1wd_{!xayBh&}iPutC7Ib|7hX1YmXF&$K0RyNzm$_lxuzm*Sza&84Pwhc``0uI|56zlT>n&cJw*lnDU&> z*`e&XZ12$nUaI^7OM>oCsAcHl zm!9@vbK3fK&*SK&&Bgx>Eho=r+QOpwf4bBx0q1_-u&0;VwW4?qw=J&P{(t9_p$RAL&0$zJG(^$$QH)e$%&wujZaKE8>w#Pn)Ef)Ux`Ma~5cZ ztexcHw?Dc4>MI4GT7z?~p*}1cWiCa_#XoV)tKyH`>Di)dQt-oXf&g!P)SU=9frn}m zTNiiyu6Hl1lwlX1&K~AeQZ1gBVPJc@L}JE7?nx#WcWQ^d;Sk7~m-9}Uh5OhB!LRP; zcJI<;7yFx2X#VS4*o+gL$JborXS=rQ!~|Xr#vk#K_b0SYXgRznjLS=l@z}Dj%J%JF zdi8mJ^?$3M|3j#^?8F0x{VD6q4$e6G`9Se1hqz@Qa+4f^=V<(%q$8$c`LAUE6Qe(C zP9NNLyI*6U+83KAuCW|X@7-P!r`(`8J2dR-UFRdSCtPt@|6oQXi&q*S*YoV(vg$WO zzYFRbi}nclmj3sN6|R5i(xq|y-Jf?~j<37(Pc{9i6w}?1TeTDaPPNtVdUYvb@rH-I zL7n^BrH`jY9;q$e#B%F!UBC89{r+`x)&zG)FfO^#+@m}BpMzr7BC9J2+Jcr7!o^PB zYEP20;+<_irG5R5^|MyIGMUWkeR7qs?XlfU9vwLt<9o30%`xkq2T^&&!IzDbo)$j* zKk4rY2JT4j!$*9j85m^pH%~I=|28i?Wy8e6S1jLGu-GiP^LEZYN3S_6PlYouFkNGu zuM3_7pEhHn>V|{sm&Yz%$iQd2N8C>H_bjo1yFC@za@+^=9Ud-BSpk~pQx{~oHsJth z=8uu@(Ep#OoU)A;^Rx6!nA5<#`$x*$WyS^RpM(qSb{0f3|Fn6#*lO3K}1l z#Rg3|arXPGhzh>>m;c`DtLWVKO}Hmt_UgVPZT!#U?%uQRVBLP_n_z*Km&G?JzF=nG zF4G6!0&06%kMo8aDsPm*lh&wi3AhcbS93}J!ivm7_^*f5p{x?I{Zn`3rNOdJ|=O;+O`1$t|I; z&q7_qUiw}Nd~+zvb=|Xg;ok`roYl`Z95&sk&l{@pfng&1t;H>RUAG;2qqU|@ zKf}1Zlrg(X3e#TowW)PS4DlU-u32D_^|5kTXWWu1J`8loq4l*@AulXn-?1J zCT_oF#cJTG&YfMr5U6@l;wQ7(9hH`*dnXuJm*4APVA{nXSjIi8e|q5o1_qIK$Jr*( zdGh%G|9UnsFd2x~3OFzX+wQpLufMKQM?%$8y4+nrp+7crHOCIsB|)DmTQ|5Yh`r19 z)mdck0oLGM+n?_%EJ@iH;+${xrpG4X?ezdY*?kpNpSWKM=l}h#pv!xaYyO>vM`!jd zVygYiUBDA;zwPf{#kEHxKR-&d&^aQ%Y+7u3dD$wXBcFWN$-VS;nwuYZH8gnEexay0 zXV2Tm{h8vi*y`MZc8wd$q9!!n<1O3%a`*XswY;E$8;R9ld>3u}md|?dm`dsiF$RG% zOkLqS#P`qdYbyOe=hM3T(IMYAwf$Az+bCGh{ji+laeEFl4!`fsd>bb69MYv*`O=V?F_^vv? zHwUFlV+^$y$r*>w3OZEvGS>BM&9@BsD~K|K7@?LZ&=iD&)|28E*=*YTk+ZU&%^|={- z^b`2g=ixtP$^9uMt6zo0U0u9&+oH3Z#JKHUoV#DzH>LC&ED-+Vc$&@r--dV7RJRFm z-#j7arP}8EM1AG{55Moky4YWxvghpvr&u=E{65FoyccY5EiC=N`ND2J`K4cN&em;o z+gA24>(YXmlS=Y)*`G#l6P3MURlyVyw?d^a=&#j>%F+j`oSXGD9%)XV8n*7@qXyAc z_qcmz-O|{n{p8n&)i1V)>U{^o-hw?o#-UR!FF0I_Kiqg6HW=+lKpNp3@E5$!tcVfo;8<$EM(#s~!T(EbI#i_4fB|E)cw!BpRq5pb^ z`PN9Ui8|d%@_F^Whwi-nysLd#+WYhU+Sb>uY>yRG{8lo>ExL}kO3~xyb<=Ox<2Ubo z()`FhGhph*n3?gbf_x)Nxu@yM-3!YX(rB-{x#>gsBUVr~T<#j%)*R!ni_i57kHnS(}+M*l> zUSYwPQsPC-djcdLZpqY|B@@$jTYtj~f62}}>~bsCw)tOgX4Q4n@7)q+^7?(m?=xZl zK9qd@e9GhO!>bKBTjO;v%Wf9AwN&!o-m~RKb9}PZzUQioCEtBuUG97!*1q9YwbP&8 zf1x$ga+zLV*?z!ek;t^&p>F-`GnTA)d$=I{U4+z(Lheb&mVCMCAG^uUV|$y}*= zkiJdH!tkR2SJVecKA>+84S$I)1j%X4c~)_oCnNKU;Vs;i>wcl1EEq z5A=wI_#P_$dvD6QqKK^02}hRBeJ|z|v})?%B>uL2tERJiCY_1#HLzp7;;>@x=KXdn z<&UP#HPTKr=urQ{Ao*5$mJI8b^_m}z1KF2N-~V@kpELjT^0O1K^~}+js44YK`JZ{F zQ=yyWOUvUvd^dTy*epuwQrGn>%XJ;R6;#CSVP_Y#ZtIWp593^q2b||v`FWo1a@%$1 zUY3@fSh32U(OQy0ZBt>ycHy?&rCQO?o&PCT?e!O#-aOIg%*|7;B2r@$8Gf8li;c~K2$kz19;Y}nky)A-YN<@f$4Ngcm0K4(4QG}pf}`_ghD$wjUIZe7;+ z7&=8PdG-GnU14+hGd@k{o-N(|ZSGyy8TTg!XiwPc!s;Cwvc-pUwh(J=Te+s)42NI; zOXqoQyEmip>GYlp8ZT~adZ_V%^{R`K^^vdH_gB6;#HExvpD)O@bmbO@UvGuAcCc>K ze|u+V;{y)w-#cgD)V-AZd-{dSev9MJde5v_^G)Q2!^E9QH{RC&>wVo~@}zP4|C$KH z-)E9VmAEW-3g^ZjzG6A;jjoC3+*w)yCqB+ie6!Z&`?oua(uoFa85Juc_a90TSmu^Cz+Dk<}4zsR|;ZdK^~HE#`nFZ*}FZo=kBr-r7jfx=G=dO4EC zj;x*IRQd2r4Oi+G&ch0EN(Z*Q=dGN0Vim9PoW>oG_CK1TIbq}0+nc^_tY7nA;+AMj zZ~rFtx$`I5`E8$CKVyo@o`qd+n(ytlpZd9No_0HXOojG*d5I{oXWIKOFMXgPKT?z1%MU6a(k=Wj&!&7Iv~v%^nQ z??XhaY^lZRNi0)~IrwV)>)zddw~{S{IoDWv*G-W_J8UIHrJuZZ+^gPoZ~2ogGCYD3 z^%um%b?_^edykfw1>(ffn03GX{ zQ?|CWc=s%C=3o2&bxhE;+frXc?%Q8_dn-Gj|7}r>Yt4>@DdyLOdFSSZo>O;Zou3-2 zHeF~^bBAZs9is_aCCrQXTjD-*wLZ?|U2wcCaa&Pc%AcwqkL8cKs@*yN)TAVT``oWn zr=B?N-fukpd)eeSva3&!r!!0=4kwGJ$sIH}vLhw%tP znIO|T`;hmyC(9f23zluCaD7t;R4 zBlPedn?llWR`>Sb^`Cc6IFwT=x#iihoK;I)8XTI>JS{ak6S{E$)9-mFEJ7aI+lC!c z>bkL5+&^XR?zwmK8EY?HkKfEBx3PJD{N;b)Wrrta*-8BN`r0$sV8zys9yw>0YQ>-K zmHw(}OyV0Ib_bl7uA08(!<0skdbw{w?>KIM5j>med|B^s`tp5`zZ~HGTK{b3jTBMV z3rYLyV=7bD++^GO<HXXm&t`e|V~i7}~BTj1!PW#%g7Q{pXlh#uIQzxuI6K+E2p z)s-2OgxpoxK2*$ECaramZ5?}V-$U6+zMIqciE$j8EV}4+g3+PcIEi}sf0~wC-e*>R zGCvTj=Fq$=Z2iRxEmB`im;K3*e7Tx|z2|GfQPT|8sEI$<%d8YI_|$yGUftMamuN!U zT+{c?;g-{HFYeUZ>5j(SMw#zoDN&VqEo?LT_6l`~;{g2u7X~C!c>i%RY9B`PV*;QQ>6dE>hRw&oj` zzsXL@_DN2@66rTpr}TuN)*9`VCX1P;&&yMO(IkGGWnbaS%QF0n4YmvCo(+C|c}w=x z*MHAl3i;WQQ6lkkR~TE0+KrCo1)_;dI)x|AOp^(H#G3O$^U`6C{oD5!1#FD*|F>!N z()b%YL}cq!xMYMR+o73u!-Fo)S zI#JS}RQ7LIpS)b)@SJHidpX=xuid!O<+J0s@m{_4B7cr<+4opJy@mV!fy43BXLeWj zo|cQVT=R%?UcwjA)UsnT*LOAabw@9h`L}Vlxz3`D`PaI=dY;a2sEk-}T-JAo{+dq* ztfc1%{LcK9u}`V(nniqY%Hj0GVsngqGL@oN{kYHB$Mx2_C+1zfoQ@%L*WO~cZ;#)t zS^n#W;d;$?84p`(_$8kF{ik_w{(>%X^=*^?ioaQN^y*q2JDznN=j>k!NwAxBopIrs z6W`sJ?j&d#p1yVEbfpiElecsz#m~{6J~94KYQR}3uB-n({afs66#Zbr>SMC2zE9~= zEMzskwpmA6dGgbyy7e&+AL_BobVvA=WUpAi!*ANQEqA^5iLBNQpM3w}zha%ktT&GJ zCrsNI`{ixzqkDzB+v{$byzicse@`dEalUKm^0&(io-kcM8@I9K&w3Z7_b(Uj(ZBU8 zW7+@YWs|nZt=8SGS*-9OYdTL)UAvj@{l&>I^V2VCYRPR`^zzA(b`8EO-GBRb9N5-m zII-AkiD!r}pP0eYRe~)#U7a8LuGlU$G5fYYr`)XP;dGPp5}p@ItB=_loBHkHTi!q2 zf5q0V>9%?dZNaz8^t%3eKE7ikoflI%{rBZf33U(GTiK^|&a7kE!W_?5^0@YJQERXH z<^E8=QekDO14;SYRzKBX7T+7yeZ96ktYlWH@sk;mw-){oi|QCT){^mQAt|>c#yGomT5l>9`7kR z{%Nmcr@I8m^t@0qYd^WuhHv%K-jL&eSuB(-V+Hw4mfCn&IO`n}Pmju;b@%I{rEAoh zZM@E}J99?;%yqB&qdVSdC^m>+%9n1a(G#Az==?{~r~l&*^IFW!=+=N==@{o(BW1sA>iqy(p(2$5?t5#)Axq~dKM88J8ZVAm>x z{TH{(h14=c=)IKvVZ7!@%AQ~9U+TYxESPguBt^4VzCc`|qc>FV(GspjYW@1De$jph zFMIE5d(332&o`HAS(i#}xqId7fWz;m{`GqD;gC7Aaf`OOP`Z#oB~#Qzt?=;1*^@sV zmb!Z>^%qkq?@eV`uGkfx2)rT$NlE*;;lU{Vaz2=K5hYU3`*Um9Vy~}$(>5TlH1oO|#k~>6g5A5cx z>{u^sGJSUI#7~d%pS%5HFnnEh@?Pg>Y1h!d-G3I^z7>!6$2a^C{Fc1Y_U?Hzq_= zTc7ZL*>RPIK)Gv&{}wO%cQgF{^cNn{Ig>1e;~s?Hb~E|0>%Sn!w&Jqb9JSub>env4 zTI=}_X+X`x9<|BSL(Zy9 z*Rx`ucjDlRA3m?*zHKg^eLCpn?B6THCDYeEOYRkVU>wUo`^l0yny%X#V$uWCGGnGn z+m=|p@V!xAwU~K(o$G}E65i`wb=~+xS2h{E-StYjl1+H|n1prPN&;^w{&-2^&p2IvLE3D*kLK`LuDto&I?ZSuO9iCzP!&?`L|lW0Q$x*rc=b?!|sQ zELiwS_{#5==1OLkL&7U(E4yT6iYB_&%s*Uj8MtHWoYkUyO|xaMa$U_lmSwzKr}@%{ zHBtT@zy53&bm$Ee%G>#|O2aszw_@S>d)!MRh0Wfq`rNqFOY*(V9+{6PHYlG@uGNUS z@UHl+NRz=dw%#Y9BFrZnWdArCJoZ@g`&#~wf^XXw?4QMW{KCr@rx;8ninlZ7Tnekr zOMT8^TNxSt_C-z2>HTwU(;qVYV^nYy`>W;bFuz9Tq&;_D+kKHOt3I|pU1j-)W!%Bs;}!9`(-C<72(Py*=i$>r4Gat{t&a19V3W{|tG9Q5d3IZcM<8y_-QES8 zEls!2jICy!H^qEmPS@+Tlb7ps3-CAwoG((Ht8^vniO{4C*`HSaxZfi$Y`TJN!G-KO z$yImwyQQ-_Ur(IUT2`FXVE4dGXuALEDp*CBqX}3r!3^A#8AZ)$Y20BO8A0QlGg&c;{okx`df3bz86X zhKh3Z-kJ5f%QfuWw+Ea}0rfK%73`H3&}r41BqJOs7Jpgg=k{%1cB)=qlQF|<-|1d% zsrHqXbMMZ3*BqV6w_NAo`nIqvB|qoHjqKNsOYt*%D3!fmKDYPRA)ZMa%-F)aTOyMy zZt`z=&lD`YByv`0WBxI=@b@jk(T}d%+wbx$v{6hE+++VO-D>?x2Wu^(=zBBgA3L0~ z(!4Kbf5B;Wl@GTy=d3XNtsiNk#Cxe$J6*#>x!U{Wd*za7J-^3N)5SlkT6_L~7bxs_ zGij1wK%3B~t!5TKZ|Ut@|{N*cZ^#fT>0dD zJN{GnI^XV1FJ!j0YyF*i^IEy)L*6sJ+nzM4yt#TnKf1#_CA2F`qo%;!yj^g3;5>UGTzl#_bIP zX1B$69}Qdln!Wk=kC|_n@0YE+w7@t0^+e}+dOKCzdHi1VbX9u3Gjx)zk$QW}<=rXe z%@P-Ejd$2BKkZ(tmE6z~ay!kIAzo7LdQIOQ-R0+2-TC``p8Rw6Q<0~Ba|lb-bDUTI z8e!sG?v;OU-?5oG-z239Czj25bVFsf_qVDC2hLu)_NZ4j-)K!Lb4Rc1E7m-PMgMMn zQ&nGa^>`Scz>Su2hdTb|8iv`~X)6z({`oSPZ_=Ez!tPe*wpK7tn8xj0p;E2L&Gynk z^H{{6+DX2LYZ4@;@`rCfTS=6IV1%FNK#uZl|S$A?v|s;ckX( z+x>##IT932EdP7VU0Pg~?a>gZ92UNd%kytvkjeuOAO5CU86s}08cKC;uJ*sjyed{f zJIroUXnQWZXz$&}BIl-FRa$)INc@wa_CpW%+Rs0w7`~~YPcODVV0GxrDZ6b>Sf)O= z+@Wi_$HG4Bn$m2)f2;w2w@knGqG;jCuK$`dc9^ZG+HvDxaLb{Zo%2HWZ4F(e`GQSt z;rvpDI@4`$(<6%)J&A1P71$|Jy2L*7_;iJ{Mt9e(wRe@3`LxYMD*SNf;`bs`fAVje zS8#3V>br$AjJBtKVhz8_K0o+<7>g`BZUHnx#g|tlPr0sT_~Eq)XW0g$|KELf^dFj>>0*>`(c|Uwe?yTM z6Vt&HQFcv=pvgli)rDzc_gg+NukQ@5Yc;CFuSuZoAtb?X;AD*mWxXVD+G z=8o)fKA(~$eW6$P?B6bGwm?3+{J_+V`&Y81V`|m~vTri$n537Vwrp#BgUw+-;jHkb zdnYy*KHbN3-)pMSVwt}gEw8WgwfP9~gzskGq$_GDHRskFT^**a-m5EB17@a%%=2l< zSUx2(Hz`W0+^jY!R#|?k@$=1>AF!sU=gwFn$tLanx!gF}om-#hyz$3H;l^w;q^{rH z>d|X*kUx#FCrrX?`JR2(%jY(xd^~GCUoXkQsY)gIiq9|O%WwEtf^uTCYkDVtv((+b z)-ol-UGr?dxpMbaw+Va>oX_XBn@;W9^;pa2*TR1*Eu)RsiLKQ8rp_U(bSdZ3Gz%rx z-s4Ht`knKq9$W9YVOQf4BU$&JdK0(#3wCli+bM9|;NS1PRkXj_3${ZT0CDh=Hrx&Q#(1%P2UoG^Jc~m ziQH+=(sET*ABWYletIA_F(b@6!J7Mgc;`k}`vs5Xwy%D<=Dcs@iZqrB%Tmu4i-iUAJe$OiFdFl@X)1g3X(f4jQlAHWBpC9xskw3towBrbS?L&tDN1AW158E%k z{P4NFaO(#BgVOh7?gb0|NwF*u_~LNk_Lhj1lE-v5KQvop9$0G4xI?MyQJL!*$KOj& zx@`-4vq16I<)a7RMVhq=_dRsjROhqFPTRJ6&jyH$VF zY5(&D^OKFXoV(8+-qxCBb8hLk zWlVQ$tUfa-i977cyEF08iPLip>+25KT=5UyC=$-ZRuFsN&oSHazNwGS>6AxPs%Eqn z%x!Wkp62!apK8#`#x9rnv;J?jzGW-p!Ng|wx!PuP@cjH}2CE-8|2hZQM{r2qusru? zVcM4Eui`oV|IT#X^yurB7DJocOXr#FKl$_M)b~sNyBiB}F4r`BZ0Y=QdU#R4+~=!G zT0ToQn7vV*ug_cd`#X1@kreNhkYwA7*Mx%}JeZzlweZ+0$-ALCZytv2-_G$V@`tB9bQ!`SdY5-yQ4Bg(%2lHUzYJN zTJO@lHkaXv(pT44Cl78hUa?l;aQMA;#o!!;tdBdZteDeo?pHHyPAEUg^!X0|f}}&- zH%`xg?Y+@CHG6}&s;EevpL)f-L}nlXo`rUvsC72{nKEgc3G?plZ~3!bJItQ_uiwdXMOUXsuR>X68oBL6t|gNI2%>;&iMY`(?24r^tqDsP|t&V9x4 zXG^Cl&hWT6^DJj<+mrum{4ZZ`Ec>@=^`tY2onoDOcV^o!oOo=u!H)HA7gzC{h=d*t zV4D5vy~~alyU&N7W}YVM^*li4(-&=Ssmv`2kGJrAe(9TKde(V!Orxt(UXeOi{f~*a zFEM<*Dy#Q?N8`J?ub0lfTK#z4TAA;rOm{bi|6s}e9Jj6})Q(ZNa(nFJ!`e)Z+g418 zF@E=%@z6SX2E%=<6AiYiqsMgLW_{4NCtNc)MdTwkzTe%JN+3!W%u-hXAi|B#qPkokYUx8;ZaKWN)2VY%S6 zSa!Cf6ua%IH+Em59~_aiaCvc>DgNF4Bhh>wkD|^A96QTXWuz|sEcxRO;PfgO^RW+Q6a$|llU0ZKSapC?`_InzZ zf34LHzM1%TAHyws={561-d25?#B$xqocDe0wcoo7Rx2l++iCTDR$oTd7T1!B)7w*y zd(Xens_p^3l5;n-1JtUQ?r) z@a~VG4JSXi_ALT-TLDdk5p;k$OnW@WNvADLtM>$`NO7iY=yl=IqK<7&BC zm)x+OA$M(SxaE#IuFseRnpo@jl=3Z|&2gH&(lcf9m4H8QKqo zP4`qXkV^h|^ZoRko=>YB1di@pcTMd?n5&0o=tYO`<(&PC=0~2^*(xaLc3Q^EKJB`b zqQ=kjxtC6i16!KV8WD+2qU- ztGI>M@9dtc7=}&LzGimUT}{tqw;J>J9z#J#+n3wCRW@u~8?%1X2Syt%cY#kHT?xy|eP7JbYNhKgKg##7*km{7->%$Mrso* z=ge=tS}XO?MKZkY#h3pNSCsEtpU9)d5O16vdW%brvX1*Ts&Tdj}+7th89}2wVo~TIq+`HJ2_w`=9V76gU z4&%HTo7A~|Pg~ezXL%o(H&PEDJ8u!{5fDb-_%y4qm@9J^v(UMji$IB0F;(k0uU_f+JxRJN6#*R}sB*uuUw zta_sKzv&5A(k5PSFBIo__wuK#q~}2=k%=mrQ+Uk<8iQ}YTft|jdq_`f!&4*qrFHjb z6omWVQ+$1eBTZlI%Tvb4pO+;i{(MN>dV#${Z~BqGyT@nbecGiJbwe@CO;j!Y$K-|K z>@Dkbj;G&V#pf6o%bjj;DrxD_3Kplc8}%ng1V`|1dv@r@{uqw^x{0w1rk|L!nWy;K zolqhFt31W8j@@H_yt8M1UhC|M+*O~i<%Nl?c=|So$&kINa*E75{-iSP3wuuZ+B(&n zyl;w*wOwkZ?mYWZ%oQi+-tK`RB<*}Z-bYWW>UWCYp$O>=a;>Ee>?B$ zW3x|cb?hv$-6520ogI{Q_)dP5aND`UKJHhRhwY>Hp1a~TrOD@CL-Y*pcG7l8P0v5Vr>|s~fEM0P*$ZXN&w%YQ=(8@HvXwSsN_cOE_tY%wY{J!nr z#xSLLCTl7ABY#VF7v8t_n{+2BL%E;r+H&d1GXrnxB%dhhn=P`n?vTp*EYHY}cYxXi(IFN%_)%5dGxeWP_e6+edE?U&(6KLdb{O};nw<92_b8^(ydyQ ze|5f5oN~lqDesPpW@kUTrM&wh8~9!`tf1$ZpP9P8lS=5L%gz_76B&x%uC@NBUmX_4 z`7&(#bI#_E8F}piI{u%!f>UI_ntD9yUB|z8R;QQXTlep_HHWtZXDQ9*Ik+hH@{t{m zw^vPEI^E-=?xt6pZ)z;^i>TjnAY7Pb`GrQtY2SNu7s~Wzgt%<0d*r+^l-=t+0F7OM4bQSl8}XT|(`b@@!$kd@*WTvM#xnyhNw zl${!@d26n~H`j%dA=B0@`^}~1u4A%I)~&5jRs6fo&)F`AqVBVObk@BQ3g*lQ<$%C`P^fK4$iAS{SqJw-ZEA@AfI1zTPIc`>%-=Bm+E3`Sz#s>Ii- z-kb5=TYe(+M-qyO@fFu0ezg9celuG$W+t;*uD*tAf`t%GJr^0OIx$kYckMH1m-d5YN zv?}xu`|L>z@9+4)a83F7JvN~eX+rb1%~`Pg-&HlvynELYx=*e?5;CESe~Q!3?^@#JRL>_es5w{A1yKQ$7hl&su!)uXoURAM=4V`&fW2B z(x&{CKdW9`;+WWcq^IH^*M@HE^g|D}o~&_lJ*s`|^5sUEo2{*~Y=({2ubR%V8=oq) zIr#Xlms9QH5R#MbI5z`^aLXx_cc;G3@&bKumJCFW~tH@w~v zu&9e=_v}i;Z!5iee*aT!`M>zn9o_oJ&(7~JOS*8ji1pC{)wpLWQ*Gt{{qjx;Up3RB z-QCA^)tRXU$J9M48hqFMQlIZLY(&+J8wc}tWJyX)-bj9m8j{(pW2OPh1QpH|mCjLc4WKO-tGVCF65 zx}?yK*G&tBiZ#R*wMMhYG@U+h6{@0$#8~lWirtRn`lMfc zKSAyCf<P7jBxl{(V};6aTBlXP)b8m^Amf7qo`1f5{X^do>(S}9alAhdgzwaxPTIH^FVSQ}a%k_+_m5Q7lPoMgk zZvWzO%VmX5ai+_6!z7n|*5CB4%23rJUd_Z?_TaCSpsI5`>toy2Rf?=`US;HcWBHHo zu5MAQVo#N199`hA?6awV>VoD?$=QdW@VfK6DH!S|FK39~9``6lZJn`v7Q@ZRx_6uO zm`&6_Chy<6qy4zbjp~qHN)s1qD|EL;3eMk=@$m?Uj=_o{FcNw84Ch<7F^Hj4ZFi;<62N>)a{{A z^8LSB%M6P>hl{$Uxyp9EEB`n3`NLbRqE6kx+{b$_D-<8{Zf7w)v+I~yf<>jDKjZAJ zXK!55>2-;ZzEIV^Gv-a$1u>UZ1x#yH>y47kWkh^)at#}IwPs#kE5FwAlS{ywI~w2C zP5QXtx;2+`R%Ghe$`8}{61T6OtJf$v@mk76&)N4p`33*HNW1Tp#jD5Rb zMWxP76;oKx^!mQA?cZF643S{PyT2|P?)3avx2eh`#d_(AS{1fW{P~uFH!dxHXfa7? z)^~ZQ>V@0CWluh+y7jfygGVd9<`~_5S-#IGASEe2?9<<@)F5WflKhc3E}L)aLM|w&xQW7?>_N&YuRGr@X`dZEfO~_aQ9(>SEg6 zhc#u)IYJo93~n$m@Z4Uyeyxpz@{@^C4g!sT?GD_leZS)UwpR-nRpKNvy5BV23Eq39 zN!d+8Vvl`_#B8w*yAu5SU!LCFa_izW2F{n)J}u*Bba|`X(IDt&t30L8L~@UPSym2r zsCls2v|sMc%ol>S-}y1Uv{=}6phh^it0sKg`@`>c)g21?E%EwL-#QbUi|>wA> ze^~r{>FaXN_a_XsPV9@wX1-ajVB3FWeVL46k|}HdqCCSax9pxdn>NXBcu|_LkoUn9 zvwu$C!b)yPWW4!#dhHFt`qYhw^A~(qH=a@LF?j;xpS@2mzy0;8;$n?-pYR4Q)}Zi- z7fyc&;FDc+!*90svDLug&Jl0 z8S1BX4qlzan3Uc;`%lXz`!(NH@4T7PaOUSXH|~~#e`}Z){{18>cFTsF#mnfBbVvNJ z_wyR~o*(*a$Mxyj-xQq<*+Ic|XBJ*?XmM>xZu?-qp`dJMS*FRs(zDy=Hr!lWDP5Ja zl(%Q;)VfRMc4`ONzDsS^d|LOtpL?yzs}FZK_x)$?YJ1xt?O70fA}hUbE3eX{pGc{w1vPFS_B>pG6sbI^V**7o=+MbZuvtzuoh% zYyY-%|K90u9v8eVICthG=fcV@@{13u1oUiAZ~CYdYd+5+b3v-(!>(dx9sZ`BUuvc( z|NS%dxuqA&{=k2ZbJUHl-t*O2)fBpEZFj?&4SO6vY+zt;IMoe0GLwP9%;?L7W(gkK zt6X*o3=9mljPtibro4VDwsKF{`6OWLL3>Hv1_mKj1_n;ut@=WZJeL_o!yWHGUz&R9 z^|fVnUWG?KHC6^4Sm0gc@6v6v+T)zig1*zeRS{BtkG7uq^s%Pe@N;N@?w0kZ=k;)L zy*un}?0 zaxG#^UsP|f{K#x6(e(+(R~=>bT=s6_m2OqN#Q95RuIX3wT;srcns;w{k-{TENkQRF zv43ak-Bgj$6~CRj<@lx+?h~uuiY+di*q8seP15Xn)v?fghkD8TbCh+j*jJlg6^ik( zobk=;iOFrZ1AXTYB~B=vIOkqff8?o2r$7Ga+_NHJLmgjCg1+{fH?5(@dIru_(Q7!0 z?kzKay1w*}+niU6%Hl-xBBayAnu>oH=l)cC`|5tb?0lAZj^stLf?N6QC+scQt$e@c zr&mml=^;6*6Qw);e7g~rn!b$d?}C(No0?yzJzn>+mVeK_MNAXpw0HC6aRrK*pvihcrq)8in!kq>UlRwaQgS3FSw5?No2?7>;BG|3XamPdaY9>H}fjhUwE&4Xuk83 zE%R4P?G+SFo2n;auwsvC*M4K;pC6{Hmo{Ix^`3!eRZ4^LyHk737F&qi4xL>&Ls#JI zw^j4suhEH*eV%pup6c?llkexWD)2|0U75P7KQrCYLEvpA*V|La?(ofB;`sQ)+dofQ zpIq8e6>hCw7VciRp85N|k^;qBTZ)7fzc;Nu!&=g-^nKO)&6D|8oDqGN=<{}C`=|Ne zwMDiwPXA>0{fy|2X{rg{pTE0r=H{tdxSRKYWW!SMTrUGNXp`vmHEs@$2N@WIjU8w2 zfzEG)|Nm#{3?bg7Zm1My-EF2&sg~|YO}*DW&hgv1&R(!^VFrhyFocjGTkQywSU#$}2~FsP=K6mL2G>s{*oa?{%^)1K{;t$XloWk&DcL(@N6 z+HY8VWtZcn<8SRXy!TYy^Xzauvvk$26C2LAa&CRz|5HQayms!sl~>JgpAo+u^4D1? z;>c{<<{xeLS+QIGY@c9a-QII;&Bc97AK0sW_upcjw&`1=;WTxN(%PKtrWtouoO&U; zw^88rv&XMluS_|;`RKmU`>voghY#RVs% z-e=SVztXzBQb>V6eJ2OkM;X&ck*n{T{7vd8cQh8bwWxJfsb*!m(Vcx;!b@cuBWt$t z8xpMgC z=UFWcm&+byJjm3F<7b(FisAJ(_U!!gnQaEL7i+mJ<|ne2K3P@D*f8fYduo8q%&%AW zalGREe#ofMoSjqtWO+x(i%2z|PpMM%mv1<>T-rK6I(}!dq3xG*Hqr811N@5PdTL8c zkNJCW6fK#Ucx1a8zh(4Cml$6D*8QK1Oc^6&ucj8ob-&5i)kqhgD`ds|YOShcFFF2YrXdxe^2{x_4t;O zZMVGc8m#`4@=W-m!?#~dB7*CkOfACrw@RG+w?%2Wvhm4px9>ljE9L*5Z%V`*@r=0V zr`M}@g%>sibFaSmPm5=Hf57cacFJcjiyktKC=$-;{=4|-Z{45L5r>1)%9iykc>4Z% z`$5(di2*T5v-Yn#U-&+J>q(^o&6D!$6>85tu-NI^biThUC*yhJQ=?nw)?c*H+%I$B z@{Sl*=gRY%PyYP&_GDsv+>yvRk;8YdCC}VX%lsXLSDpKEbN`P!>>;YvKUvvA%iWSR zT(^}cOTNm!Wz4=dQZ0Rb8m4Eh>TLkxnyni@{ z_3Fo0D!1Ryxf<3u;pv-%ue0Z*sFuA5i-b|98ncF7*oaxVs zxsUTLLy!5oc<8rlbY$pPsb$40wk37{nLppU{LE*e`Bp1DZu3oNi)Yz-W`;dyRr=(W zWx;p$A4^PqX)jf|glE&&vj)#AJ~bKq-4tO`%zm(W7klhp&4a6UlwQ94xm&aErMJmC zRg)DT6uEXzo)|b```&p6bFclYs)?xFaO+Lqi|XE%*Rdf_%%7fYYM-(4saERYVA-|W z1#`pAAJ2+nHGld}IBHipL$bD51 zO?;#9E_8oUW7~Sk**{Gtl(rmPa)4*ii~on4oJ6YnKDC{@qU-oaKjl)V!jixa7tsle zOM%LnL9g3N1t7oKkv79?M6x41=7E-g_V4tEK|e5 z>c6tA!|;%lXA-?|`Ymey6e{W277QbU=nC;)V z=6mXwj(2xTICliIPHOU7=({d{@1bT&EoAE7b_M&SMO|j8UL)RtM>BK;3?6QgM#O8v77p8Zjgu2&0k&JiaR*A zEtg!=_F;?g!ru`E4;Qd9S)jvw~xl1l369W{N$RdZS#L8Z{C_4$aVJX?Y=dorFlBJJbT;U z9#SuP;`G{%S!7!FL_yWPVL}T_rfN2Scf7DCdUwT*S^JV%r#?GX7QgM*MHk+(^N$>@ zzD4@yUAX%{M}xbtpCs}}3GdN1^)KkITJMteuv+EFf)!l{ z+RLTi2kbk?uXkBTt7%_yqqE+>bvxfan*U+)e&s9cM5E$$g4i#oxQ08L3--Qj?R&JG zf3Em(rmOrHH%GI1&A(*-A^kv|O?J*7!B*{nEi<%C9Xx9FB>%h@xAVF%XTht_8*a&p zcwUR&DEVcP|Mm;YEvu9FxjP<8sa>9Xp=n{vyyG595$`oT+gGz)jUm8^86bIQ7b6AUm zd|JCA=g)9_EAVl`372ojbEkGsZ819Zw#&PHVVvRF^zt|BxKa#R-^^=%k;B)()!S!d z`N!n&l{V(Aj$$n**t>@;6I2{aKi%O@dADtyuKs0_ z+gwo_-+fMM=+5i=BmL^}{%fJrqC(>HBCem444?ATp^E)?a=VLLp33EWua?i*ETVD4 zah21~dHKDquJaZzG`Nry!Msr3C;so}Z?bDl+n+Bvwd}8ng>0+t>J=#;V<-G@|2Fsh zy31D+kE(xc@GD=u{MyS!?`0}k3fJzQ9NqL&JY0C%ip$AY+-x3fQfjl*;ktCHh`aVo ztRG{(?4RaItpd`e+nTdVo+g%V_`NmvqqxY_-*IA-XK42rGC#OxG?gv$!o~wR_X?R9 z*T?yNcy+VMp`xNukuai ziHz)PI^XlfSgtJiXnXgPb@XMAoP%y*NAF&)wqTNw(2lwDX1nR{ImPc;qWq#h)z!R{ zamsA!^kX`Gt6Xf|^Nb0q4^4Ha`F~DyOm-!kLcCP+hP1W2kH1(d_9^4O zFGu8^!{;WQ3Dw%?aAwDvgx1enta!EgU(ZQQl=5z|H zlI^_Kn>w=Hb)Thw)P3#y;c<1E!^^(iPcMJjp;8fjQ=XqwFxPix^E{r@;>k}EWfm;m zYuL$rM!-UG_by#N-s}IRzlUCGRZ{&T<{LM0{~N=?KK`}${`MAqoc3V%$@|alKKDp@ zFw33!Op4RZW(hZLVKh05^aW35E zaf1KtOwDlaLRl`ZXBr-UOG&Q!^i8ck3Ehrn z{ifY9)ZD&j$r`yi;=*~77sS7D%)fGW$?SR0=Q!_hTyXNaqtRMZJujPD-LF#9L`4ec zU;Ocfd-1b`x0|zTFN*D}yIQt1JLxRf;jF6-?3?U;-7Ql0uy~rDfAoL;pO)8RJ4G+v zNt@_#=Iyp53qO|?Pit*8&p0hxDD?WTsgJDIo9!YtLT2lx*zAA9Wna8>>eQy)6EauZ z?cP#&N-d-P{-1Ai^kyu0oG|U<4WGWRt$fM3daZrE*S5E(F)ukD`Th|9@>k;f8sa(5 z|6QwF&cEQWzTqrii=-Fg+36oI%r?2!IkBW^^-{*`^KNYqmg+sV?%{KTM_nQxzb|-xhzOMO3rsV)_&%7oJbgmU&WC>B;a~EW}x$?@?aoLtJhF6(08ecv5JitTI;-t2%z?^?iqd(lO%6mNDiSOL0 z=@b6gZB1)FotA%MD&zAvvs5|LR~i&P^Dn6I(F^kEnf|EIr|E-#&ZNp^AOF30w9xle z;opD94|efHL za%N*MQ&pGIOeGzi9nv>hVt%Nb&s*loGb^B>c!BJSLw}oByj8X0(>4e=zRzLW*SFDH z2PSDZo%A?tIoqhg@oVa@{ zy_Nf)cWd4AA3G%XL>`;=&8ESy`{b?l<=c4~=S2FxW!bqeK04~}mWOX8bS4G6vK+5U zQh4%X=|cS<9`_XW&-ZG?1Q|rH47L!dUHe4Dt~^XM{icxIi^SVbQGTy~a`^vH5Lv!O z{c31i^v4OmB>N2XcYnEYyZ5)lm07z(dv?V;t