From 227b265fa5764f1edd5aad734da4b1aba87b4a72 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 4 Feb 2024 13:14:36 +0000 Subject: [PATCH] deploy: publish app to GitHub Pages --- .nojekyll | 0 assets/_commonjs-dynamic-modules-302442b1.js | 2 + .../_commonjs-dynamic-modules-302442b1.js.map | 1 + assets/build-53e87ed8.svg | 33 + assets/close-444dc9a6.svg | 33 + assets/code-74870b2e.svg | 33 + assets/components-11160596.js | 2 + assets/components-11160596.js.gz | Bin 0 -> 816 bytes assets/components-11160596.js.map | 1 + assets/dynamic-import-helper-e113e409.js | 2 + assets/dynamic-import-helper-e113e409.js.gz | Bin 0 -> 639 bytes assets/dynamic-import-helper-e113e409.js.map | 1 + assets/exportDrawing-aee43b5d.svg | 12 + assets/guitar-ef193250.wav | Bin 0 -> 389670 bytes assets/help-a0383ce2.svg | 33 + assets/index-060fb1c6.js | 2 + assets/index-060fb1c6.js.gz | Bin 0 -> 1953 bytes assets/index-060fb1c6.js.map | 1 + assets/index-096c861c.js | 2 + assets/index-096c861c.js.map | 1 + assets/index-0ef6c638.css | 1 + assets/index-0ef6c638.css.gz | Bin 0 -> 633 bytes assets/index-10a52919.css | 1 + assets/index-21e6ea22.css | 1 + assets/index-21e6ea22.css.gz | Bin 0 -> 531 bytes assets/index-35b52911.js | 2 + assets/index-35b52911.js.map | 1 + assets/index-4245e63e.js | 2 + assets/index-4245e63e.js.gz | Bin 0 -> 12290 bytes assets/index-4245e63e.js.map | 1 + assets/index-4fff1452.js | 2 + assets/index-4fff1452.js.map | 1 + assets/index-97cad2bf.js | 2 + assets/index-97cad2bf.js.map | 1 + assets/index-98afefcf.css | 1 + assets/index-98afefcf.css.gz | Bin 0 -> 908 bytes assets/index-b95677c8.js | 41 + assets/index-b95677c8.js.gz | Bin 0 -> 45373 bytes assets/index-b95677c8.js.map | 1 + assets/index-d3e8bc84.css | 1 + assets/index-d3e8bc84.css.gz | Bin 0 -> 578 bytes assets/index-e491dcfc.css | 1 + assets/index-e491dcfc.css.gz | Bin 0 -> 441 bytes assets/index-e642236f.js | 2 + assets/index-e642236f.js.gz | Bin 0 -> 791 bytes assets/index-e642236f.js.map | 1 + assets/index-e95da2f1.js | 2 + assets/index-e95da2f1.js.gz | Bin 0 -> 589 bytes assets/index-e95da2f1.js.map | 1 + assets/lang.en-a09fe94b.js | 2 + assets/lang.en-a09fe94b.js.map | 1 + assets/lang.es-5dc320b5.js | 2 + assets/lang.es-5dc320b5.js.map | 1 + assets/lib.assets-d64954a0.js | 2 + assets/lib.assets-d64954a0.js.gz | Bin 0 -> 1085 bytes assets/lib.assets-d64954a0.js.map | 1 + assets/lib.config-257eb5b5.js | 2 + assets/lib.config-257eb5b5.js.gz | Bin 0 -> 912 bytes assets/lib.config-257eb5b5.js.map | 1 + assets/lib.i18n-3137bee4.js | 2 + assets/lib.i18n-3137bee4.js.map | 1 + assets/lib.view-f4687c7b.js | 2 + assets/lib.view-f4687c7b.js.map | 1 + assets/loadProject-f9e0b620.svg | 16 + assets/logo-3080f493.png | Bin 0 -> 46593 bytes assets/misc-ecacff45.js | 2 + assets/misc-ecacff45.js.map | 1 + assets/module.editor-93a6384b.js | 122 + assets/module.editor-93a6384b.js.gz | Bin 0 -> 16069 bytes assets/module.editor-93a6384b.js.map | 1 + assets/module.menu-9b2a1c75.js | 2 + assets/module.menu-9b2a1c75.js.gz | Bin 0 -> 972 bytes assets/module.menu-9b2a1c75.js.map | 1 + assets/module.painter-0b477364.js | 936 +++ assets/module.painter-0b477364.js.gz | Bin 0 -> 232453 bytes assets/module.painter-0b477364.js.map | 1 + assets/module.singer-0eae6471.js | 218 + assets/module.singer-0eae6471.js.gz | Bin 0 -> 66986 bytes assets/module.singer-0eae6471.js.map | 1 + assets/mouse-46cf41ce.svg | 54 + assets/piano-9b2c5e87.wav | Bin 0 -> 96828 bytes assets/pin-8515e01d.svg | 33 + assets/preset-0-9cb6c92a.js | 2 + assets/preset-0-9cb6c92a.js.map | 1 + assets/reset-a8de2102.svg | 33 + assets/run-123f2282.svg | 39 + assets/saveProjectHTML-e442bff6.svg | 1 + assets/snare-7903412c.wav | Bin 0 -> 32044 bytes assets/startRecording-5dec9e0d.svg | 47 + assets/stop-aa193098.svg | 39 + assets/stopRecording-48f9a011.svg | 39 + assets/unpin-427cfcc6.svg | 33 + assets/uploadFile-52fcbca5.svg | 1 + assets/web-vitals-60d3425a.js | 2 + assets/web-vitals-60d3425a.js.gz | Bin 0 -> 1722 bytes assets/web-vitals-60d3425a.js.map | 1 + browserconfig.xml | 11 + favicon.ico | Bin 0 -> 1150 bytes icons/android-icon-144x144.png | Bin 0 -> 13729 bytes icons/android-icon-192x192.png | Bin 0 -> 18753 bytes icons/android-icon-36x36.png | Bin 0 -> 2691 bytes icons/android-icon-48x48.png | Bin 0 -> 3718 bytes icons/android-icon-72x72.png | Bin 0 -> 5968 bytes icons/android-icon-96x96.png | Bin 0 -> 8356 bytes icons/apple-icon-114x114.png | Bin 0 -> 10265 bytes icons/apple-icon-120x120.png | Bin 0 -> 10877 bytes icons/apple-icon-144x144.png | Bin 0 -> 13729 bytes icons/apple-icon-152x152.png | Bin 0 -> 14836 bytes icons/apple-icon-180x180.png | Bin 0 -> 18694 bytes icons/apple-icon-57x57.png | Bin 0 -> 4502 bytes icons/apple-icon-60x60.png | Bin 0 -> 4792 bytes icons/apple-icon-72x72.png | Bin 0 -> 5968 bytes icons/apple-icon-76x76.png | Bin 0 -> 6285 bytes icons/apple-icon-precomposed.png | Bin 0 -> 19274 bytes icons/apple-icon.png | Bin 0 -> 19274 bytes icons/favicon-16x16.png | Bin 0 -> 1479 bytes icons/favicon-32x32.png | Bin 0 -> 2307 bytes icons/favicon-96x96.png | Bin 0 -> 8356 bytes icons/ms-icon-144x144.png | Bin 0 -> 13729 bytes icons/ms-icon-150x150.png | Bin 0 -> 14528 bytes icons/ms-icon-310x310.png | Bin 0 -> 42004 bytes icons/ms-icon-70x70.png | Bin 0 -> 5770 bytes index.html | 41 + index.html.gz | Bin 0 -> 722 bytes logo.png | Bin 0 -> 46593 bytes logo.svg | 497 ++ manifest.json | 1 + registerSW.js | 1 + robots.txt | 3 + stats.html | 6177 +++++++++++++++++ stats.html.gz | Bin 0 -> 85255 bytes stats.json | 1 + stats.json.gz | Bin 0 -> 40657 bytes sw.js | 2 + sw.js.gz | Bin 0 -> 1302 bytes sw.js.map | 1 + workbox-2522900a.js | 2 + workbox-2522900a.js.gz | Bin 0 -> 5238 bytes workbox-2522900a.js.map | 1 + 139 files changed, 8607 insertions(+) create mode 100644 .nojekyll create mode 100644 assets/_commonjs-dynamic-modules-302442b1.js create mode 100644 assets/_commonjs-dynamic-modules-302442b1.js.map create mode 100644 assets/build-53e87ed8.svg create mode 100644 assets/close-444dc9a6.svg create mode 100644 assets/code-74870b2e.svg create mode 100644 assets/components-11160596.js create mode 100644 assets/components-11160596.js.gz create mode 100644 assets/components-11160596.js.map create mode 100644 assets/dynamic-import-helper-e113e409.js create mode 100644 assets/dynamic-import-helper-e113e409.js.gz create mode 100644 assets/dynamic-import-helper-e113e409.js.map create mode 100644 assets/exportDrawing-aee43b5d.svg create mode 100644 assets/guitar-ef193250.wav create mode 100644 assets/help-a0383ce2.svg create mode 100644 assets/index-060fb1c6.js create mode 100644 assets/index-060fb1c6.js.gz create mode 100644 assets/index-060fb1c6.js.map create mode 100644 assets/index-096c861c.js create mode 100644 assets/index-096c861c.js.map create mode 100644 assets/index-0ef6c638.css create mode 100644 assets/index-0ef6c638.css.gz create mode 100644 assets/index-10a52919.css create mode 100644 assets/index-21e6ea22.css create mode 100644 assets/index-21e6ea22.css.gz create mode 100644 assets/index-35b52911.js create mode 100644 assets/index-35b52911.js.map create mode 100644 assets/index-4245e63e.js create mode 100644 assets/index-4245e63e.js.gz create mode 100644 assets/index-4245e63e.js.map create mode 100644 assets/index-4fff1452.js create mode 100644 assets/index-4fff1452.js.map create mode 100644 assets/index-97cad2bf.js create mode 100644 assets/index-97cad2bf.js.map create mode 100644 assets/index-98afefcf.css create mode 100644 assets/index-98afefcf.css.gz create mode 100644 assets/index-b95677c8.js create mode 100644 assets/index-b95677c8.js.gz create mode 100644 assets/index-b95677c8.js.map create mode 100644 assets/index-d3e8bc84.css create mode 100644 assets/index-d3e8bc84.css.gz create mode 100644 assets/index-e491dcfc.css create mode 100644 assets/index-e491dcfc.css.gz create mode 100644 assets/index-e642236f.js create mode 100644 assets/index-e642236f.js.gz create mode 100644 assets/index-e642236f.js.map create mode 100644 assets/index-e95da2f1.js create mode 100644 assets/index-e95da2f1.js.gz create mode 100644 assets/index-e95da2f1.js.map create mode 100644 assets/lang.en-a09fe94b.js create mode 100644 assets/lang.en-a09fe94b.js.map create mode 100644 assets/lang.es-5dc320b5.js create mode 100644 assets/lang.es-5dc320b5.js.map create mode 100644 assets/lib.assets-d64954a0.js create mode 100644 assets/lib.assets-d64954a0.js.gz create mode 100644 assets/lib.assets-d64954a0.js.map create mode 100644 assets/lib.config-257eb5b5.js create mode 100644 assets/lib.config-257eb5b5.js.gz create mode 100644 assets/lib.config-257eb5b5.js.map create mode 100644 assets/lib.i18n-3137bee4.js create mode 100644 assets/lib.i18n-3137bee4.js.map create mode 100644 assets/lib.view-f4687c7b.js create mode 100644 assets/lib.view-f4687c7b.js.map create mode 100644 assets/loadProject-f9e0b620.svg create mode 100644 assets/logo-3080f493.png create mode 100644 assets/misc-ecacff45.js create mode 100644 assets/misc-ecacff45.js.map create mode 100644 assets/module.editor-93a6384b.js create mode 100644 assets/module.editor-93a6384b.js.gz create mode 100644 assets/module.editor-93a6384b.js.map create mode 100644 assets/module.menu-9b2a1c75.js create mode 100644 assets/module.menu-9b2a1c75.js.gz create mode 100644 assets/module.menu-9b2a1c75.js.map create mode 100644 assets/module.painter-0b477364.js create mode 100644 assets/module.painter-0b477364.js.gz create mode 100644 assets/module.painter-0b477364.js.map create mode 100644 assets/module.singer-0eae6471.js create mode 100644 assets/module.singer-0eae6471.js.gz create mode 100644 assets/module.singer-0eae6471.js.map create mode 100644 assets/mouse-46cf41ce.svg create mode 100644 assets/piano-9b2c5e87.wav create mode 100644 assets/pin-8515e01d.svg create mode 100644 assets/preset-0-9cb6c92a.js create mode 100644 assets/preset-0-9cb6c92a.js.map create mode 100644 assets/reset-a8de2102.svg create mode 100644 assets/run-123f2282.svg create mode 100644 assets/saveProjectHTML-e442bff6.svg create mode 100644 assets/snare-7903412c.wav create mode 100644 assets/startRecording-5dec9e0d.svg create mode 100644 assets/stop-aa193098.svg create mode 100644 assets/stopRecording-48f9a011.svg create mode 100644 assets/unpin-427cfcc6.svg create mode 100644 assets/uploadFile-52fcbca5.svg create mode 100644 assets/web-vitals-60d3425a.js create mode 100644 assets/web-vitals-60d3425a.js.gz create mode 100644 assets/web-vitals-60d3425a.js.map create mode 100644 browserconfig.xml create mode 100644 favicon.ico create mode 100644 icons/android-icon-144x144.png create mode 100644 icons/android-icon-192x192.png create mode 100644 icons/android-icon-36x36.png create mode 100644 icons/android-icon-48x48.png create mode 100644 icons/android-icon-72x72.png create mode 100644 icons/android-icon-96x96.png create mode 100644 icons/apple-icon-114x114.png create mode 100644 icons/apple-icon-120x120.png create mode 100644 icons/apple-icon-144x144.png create mode 100644 icons/apple-icon-152x152.png create mode 100644 icons/apple-icon-180x180.png create mode 100644 icons/apple-icon-57x57.png create mode 100644 icons/apple-icon-60x60.png create mode 100644 icons/apple-icon-72x72.png create mode 100644 icons/apple-icon-76x76.png create mode 100644 icons/apple-icon-precomposed.png create mode 100644 icons/apple-icon.png create mode 100644 icons/favicon-16x16.png create mode 100644 icons/favicon-32x32.png create mode 100644 icons/favicon-96x96.png create mode 100644 icons/ms-icon-144x144.png create mode 100644 icons/ms-icon-150x150.png create mode 100644 icons/ms-icon-310x310.png create mode 100644 icons/ms-icon-70x70.png create mode 100644 index.html create mode 100644 index.html.gz create mode 100644 logo.png create mode 100644 logo.svg create mode 100644 manifest.json create mode 100644 registerSW.js create mode 100644 robots.txt create mode 100644 stats.html create mode 100644 stats.html.gz create mode 100644 stats.json create mode 100644 stats.json.gz create mode 100644 sw.js create mode 100644 sw.js.gz create mode 100644 sw.js.map create mode 100644 workbox-2522900a.js create mode 100644 workbox-2522900a.js.gz create mode 100644 workbox-2522900a.js.map diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/assets/_commonjs-dynamic-modules-302442b1.js b/assets/_commonjs-dynamic-modules-302442b1.js new file mode 100644 index 00000000..bfc2ba21 --- /dev/null +++ b/assets/_commonjs-dynamic-modules-302442b1.js @@ -0,0 +1,2 @@ +function r(o){throw new Error('Could not dynamically require "'+o+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}export{r as c}; +//# sourceMappingURL=_commonjs-dynamic-modules-302442b1.js.map diff --git a/assets/_commonjs-dynamic-modules-302442b1.js.map b/assets/_commonjs-dynamic-modules-302442b1.js.map new file mode 100644 index 00000000..65adc2a8 --- /dev/null +++ b/assets/_commonjs-dynamic-modules-302442b1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"_commonjs-dynamic-modules-302442b1.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/build-53e87ed8.svg b/assets/build-53e87ed8.svg new file mode 100644 index 00000000..29ea6aaa --- /dev/null +++ b/assets/build-53e87ed8.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/assets/close-444dc9a6.svg b/assets/close-444dc9a6.svg new file mode 100644 index 00000000..f6ea682b --- /dev/null +++ b/assets/close-444dc9a6.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/assets/code-74870b2e.svg b/assets/code-74870b2e.svg new file mode 100644 index 00000000..57b27bfe --- /dev/null +++ b/assets/code-74870b2e.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/assets/components-11160596.js b/assets/components-11160596.js new file mode 100644 index 00000000..4c43de66 --- /dev/null +++ b/assets/components-11160596.js @@ -0,0 +1,2 @@ +import{_ as e}from"./dynamic-import-helper-e113e409.js";const i={editor:{name:"Editor",desc:"Code editor for programs",definition:{dependencies:{optional:["menu"],required:[]},flags:{},strings:{"editor.build":"build button - build the program","editor.help":"help button - show syntax information"},assets:["image.icon.build","image.icon.help","image.icon.pin","image.icon.unpin","image.icon.code","image.icon.close"]},importFunc:()=>e(()=>import("./module.editor-93a6384b.js"),["assets/module.editor-93a6384b.js","assets/index-b95677c8.js","assets/index-98afefcf.css","assets/index-e642236f.js","assets/index-97cad2bf.js","assets/index-35b52911.js","assets/_commonjs-dynamic-modules-302442b1.js","assets/index-4245e63e.js","assets/index-0ef6c638.css"])},menu:{name:"Menu",desc:"Menubar of the Primary Toolbar",definition:{dependencies:{optional:[],required:[]},flags:{uploadFile:"boolean",recording:"boolean",exportDrawing:"boolean",loadProject:"boolean",saveProject:"boolean"},strings:{"menu.run":"run button - to start the program execution","menu.stop":"stop button - to stop the program execution","menu.reset":"reset button - clear program states"},assets:["image.icon.run","image.icon.stop","image.icon.reset","image.icon.saveProjectHTML","image.icon.exportDrawing","image.icon.startRecording","image.icon.stopRecording","image.icon.uploadFile","image.icon.loadProject"]},importFunc:()=>e(()=>import("./module.menu-9b2a1c75.js"),["assets/module.menu-9b2a1c75.js","assets/index-4245e63e.js","assets/index-97cad2bf.js","assets/index-35b52911.js","assets/index-b95677c8.js","assets/index-98afefcf.css","assets/index-096c861c.js","assets/index-d3e8bc84.css","assets/index-21e6ea22.css"])},painter:{name:"Painter",desc:"Allows creation of artwork in the workspace",definition:{dependencies:{optional:["menu"],required:[]},flags:{},strings:{},assets:["image.icon.mouse"]},importFunc:()=>e(()=>import("./module.painter-0b477364.js"),["assets/module.painter-0b477364.js","assets/index-97cad2bf.js","assets/index-4245e63e.js","assets/index-35b52911.js","assets/index-b95677c8.js","assets/index-98afefcf.css","assets/_commonjs-dynamic-modules-302442b1.js","assets/index-e491dcfc.css"])},singer:{name:"Singer",desc:"Allows creation of music in the workspace",definition:{dependencies:{optional:["menu"],required:[]},flags:{},strings:{},assets:[]},importFunc:()=>e(()=>import("./module.singer-0eae6471.js"),["assets/module.singer-0eae6471.js","assets/index-4245e63e.js"])}};export{i as default}; +//# sourceMappingURL=components-11160596.js.map diff --git a/assets/components-11160596.js.gz b/assets/components-11160596.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..fc994db5a015895758fd7b73a029f22d74c9a5ea GIT binary patch literal 816 zcmV-01JC>)iwFP!000021HD#TPunmQe&<(2*$YTXX)aBhASO-Q&>lcSj6ETQ9OtB% zC3a>zqp0eC-*G}Op`j`p+C$>_TT|tc29_JBug_7P%CqJvh#uI4K!*S)+9C zp{PK*;CTUr!+7wZ>=P=u(iS_NL&mg_$s9c(vA;Gm+sQ!D#QrQYuv!Bv$ET8FDoLq~ zK4+Y1CU`Q>paPx&rwmjw7nPBcBDt|k;I)10NcdGV30ZP;yKwS?OwnrLC@mQ`pLV;! zAgx)E*@@kZR$6NvQy4HT!Sklhrl?u9BdHkg3TnP3qFAaIl0qo3G36G8vzpW7@aXg-9GZ74JVdZc zk<|qZ+ML`tAW<+0Qv=eGb7Qwb?=W(fCJZr{xoJF##$!6^QN`0s$i6k{Mhq4syiymQt$`mE@{{XuiRkhhoPT(Ju8KNID#mE9@P-?h+?`; z*tbUu$IxoY*9$|jXSSN}lt@eD4P7oJf+3%*Yat30@5kAGw$@c4NOr~w+%d)FfFSx3 zsE`?QctZv=gX$Ma9=memeksKRP`x2lI-lH+^LaV;#RiPW2IVZjV& z-B8_W9hDZQJos8{;R1l{R|CYX+--K1-@F37j* zi}S9sQ`?t|V==Clcx-R{ifRpOSH6MP{{3qT=fHYq z5_z=8Eel|h(n;9o=6etU@%>e!R)ld4tGng0oi5w;Q&EUVWl;&u0d3kAQG68gC!X64 zKh3wQ2!(gOZ~6&aiux_5^>b?OFb&7!APV~d@3Yz;*d26uPt5=7yoNCLGMdvB)(VTe zhWdLm+ktdhD@Okp&U>TUCV@8&!TWIR^@G}Dv;#P-&Eljzy5`LMq+y1nF7)E$;Q081 ur9>?$T#yQXD5gKI&QB4HN^sy>xt`}m!%-aJGJ}#-2Y&z?`(3Q-2><{}9E$`1 literal 0 HcmV?d00001 diff --git a/assets/components-11160596.js.map b/assets/components-11160596.js.map new file mode 100644 index 00000000..cf54fc71 --- /dev/null +++ b/assets/components-11160596.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"wDAEA,MAAMA,EAA+B,CACjC,OAAQ,CACJ,KAAM,SACN,KAAM,2BACN,WAAY,CACR,aAAc,CACV,SAAU,CAAC,MAAM,EACjB,SAAU,CAAC,CACf,EACA,MAAO,CAAC,EACR,QAAS,CACL,eAAgB,mCAChB,cAAe,uCACnB,EACA,OAAQ,CACJ,mBACA,kBACA,iBACA,mBACA,kBACA,kBACJ,CACJ,EACA,WAAY,IAAMC,EAAA,WAAO,6BAA8B,qRAC3D,EACA,KAAM,CACF,KAAM,OACN,KAAM,iCACN,WAAY,CACR,aAAc,CACV,SAAU,CAAC,EACX,SAAU,CAAC,CACf,EACA,MAAO,CACH,WAAY,UACZ,UAAW,UACX,cAAe,UACf,YAAa,UACb,YAAa,SACjB,EACA,QAAS,CACL,WAAY,8CACZ,YAAa,8CACb,aAAc,qCAClB,EACA,OAAQ,CACJ,iBACA,kBACA,mBACA,6BACA,2BACA,4BACA,2BACA,wBACA,wBACJ,CACJ,EACA,WAAY,IAAMA,EAAA,WAAO,2BAA4B,gQACzD,EACA,QAAS,CACL,KAAM,UACN,KAAM,8CACN,WAAY,CACR,aAAc,CACV,SAAU,CAAC,MAAM,EACjB,SAAU,CAAC,CACf,EACA,MAAO,CAAC,EACR,QAAS,CAAC,EACV,OAAQ,CACJ,kBAEJ,CACJ,EACA,WAAY,IAAMA,EAAA,WAAO,8BAA+B,2PAC5D,EACA,OAAQ,CACJ,KAAM,SACN,KAAM,4CACN,WAAY,CACR,aAAc,CACV,SAAU,CAAC,MAAM,EACjB,SAAU,CAAC,CACf,EACA,MAAO,CAAC,EACR,QAAS,CAAC,EACV,OAAQ,CAAC,CACb,EACA,WAAY,IAAMA,EAAA,WAAO,6BAA8B,kEAC3D,CACJ","names":["manifest","__vitePreload"],"sources":["../../src/components.ts"],"sourcesContent":["import type { TComponentManifest } from '#/@types/components';\n\nconst manifest: TComponentManifest = {\n editor: {\n name: 'Editor',\n desc: 'Code editor for programs',\n definition: {\n dependencies: {\n optional: ['menu'],\n required: [],\n },\n flags: {},\n strings: {\n 'editor.build': 'build button - build the program',\n 'editor.help': 'help button - show syntax information',\n },\n assets: [\n 'image.icon.build',\n 'image.icon.help',\n 'image.icon.pin',\n 'image.icon.unpin',\n 'image.icon.code',\n 'image.icon.close',\n ],\n },\n importFunc: () => import('@sugarlabs/mb4-module-editor'),\n },\n menu: {\n name: 'Menu',\n desc: 'Menubar of the Primary Toolbar',\n definition: {\n dependencies: {\n optional: [],\n required: [],\n },\n flags: {\n uploadFile: 'boolean',\n recording: 'boolean',\n exportDrawing: 'boolean',\n loadProject: 'boolean',\n saveProject: 'boolean',\n },\n strings: {\n 'menu.run': 'run button - to start the program execution',\n 'menu.stop': 'stop button - to stop the program execution',\n 'menu.reset': 'reset button - clear program states',\n },\n assets: [\n 'image.icon.run',\n 'image.icon.stop',\n 'image.icon.reset',\n 'image.icon.saveProjectHTML',\n 'image.icon.exportDrawing',\n 'image.icon.startRecording',\n 'image.icon.stopRecording',\n 'image.icon.uploadFile',\n 'image.icon.loadProject',\n ],\n },\n importFunc: () => import('@sugarlabs/mb4-module-menu'),\n },\n painter: {\n name: 'Painter',\n desc: 'Allows creation of artwork in the workspace',\n definition: {\n dependencies: {\n optional: ['menu'],\n required: [],\n },\n flags: {},\n strings: {},\n assets: [\n 'image.icon.mouse',\n //\n ],\n },\n importFunc: () => import('@sugarlabs/mb4-module-painter'),\n },\n singer: {\n name: 'Singer',\n desc: 'Allows creation of music in the workspace',\n definition: {\n dependencies: {\n optional: ['menu'],\n required: [],\n },\n flags: {},\n strings: {},\n assets: [],\n },\n importFunc: () => import('@sugarlabs/mb4-module-singer'),\n },\n};\n\nexport default manifest;\n"],"file":"assets/components-11160596.js"} \ No newline at end of file diff --git a/assets/dynamic-import-helper-e113e409.js b/assets/dynamic-import-helper-e113e409.js new file mode 100644 index 00000000..6126d704 --- /dev/null +++ b/assets/dynamic-import-helper-e113e409.js @@ -0,0 +1,2 @@ +const f="modulepreload",h=function(o){return"/musicblocks-v4/"+o},u={},v=function(r,t,a){if(!t||t.length===0)return r();const l=document.getElementsByTagName("link");return Promise.all(t.map(e=>{if(e=h(e),e in u)return;u[e]=!0;const s=e.endsWith(".css"),m=s?'[rel="stylesheet"]':"";if(!!a)for(let i=l.length-1;i>=0;i--){const c=l[i];if(c.href===e&&(!s||c.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${m}`))return;const n=document.createElement("link");if(n.rel=s?"stylesheet":f,s||(n.as="script",n.crossOrigin=""),n.href=e,document.head.appendChild(n),s)return new Promise((i,c)=>{n.addEventListener("load",i),n.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${e}`)))})})).then(()=>r())},d=(o,r)=>{const t=o[r];return t?typeof t=="function"?t():Promise.resolve(t):new Promise((a,l)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(l.bind(null,new Error("Unknown variable dynamic import: "+r)))})};export{v as _,d as a}; +//# sourceMappingURL=dynamic-import-helper-e113e409.js.map diff --git a/assets/dynamic-import-helper-e113e409.js.gz b/assets/dynamic-import-helper-e113e409.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..2d34cf0ce1be48dcec66fdd0c588cf0bc9cc4c7e GIT binary patch literal 639 zcmV-_0)YJ=iwFP!0000217%ZBPunmQzw;?v4}mS*v}jz`$W$8Q2HP}1J5<#$&P(If zu`}B#tJ-|`*=-7|rW_nS=l%Y@7ioy>=bRxbT;bv42lwqq^dbZqthxnqF|x=|$=gzYwD8q6Y8obxf=!yrd!E_b||7gn}4 zn2;?X+-gX#{`2}#EWU^u2-eChG0pqNZ_d`rLngE)A*)40fL|vj;1vPN04amoo+fW+ zFz17DPvtpeU<&_3g^J)zdXFiqxu2fTqGyhMSZnYVK*00!3C4LcFc7q~j%Wx-aot-P zUgqkWk8?E~(#;-Ray?V?)FQLWK^fh`*%=x5?N(+9o*xm=USbE@N6jU9OW}75Zv6ln zWQe@a$^L8yh)*}r;rZ#N?w$|ry)*M3qI4hv^f|tz7YWQxg`fVbVp6iGFJ1{B)k&wC zfSHLH*88tcEtKInW@Pq`fW5I)Ac{;hO^oxVQo109GJhDZf!D*F2vJPZIH5>U6t}C` zd#8K=11@UYt(i*r|6hW0)?r3svm^=eHWkS8lMyc(P_U?9RCM$3fZ~WyiYEp`yZF#7 zRA5Nzj;lsHR&ZjOOG@^M1#V|O-_pH$hbknrdyE7Bpl{A4uxfV^#;g!?!xWfo80?|6?g+@lOD&<(gD ZTwZ>JtMRAomrwuI$zLkt#Htqr005(GHZ1@E literal 0 HcmV?d00001 diff --git a/assets/dynamic-import-helper-e113e409.js.map b/assets/dynamic-import-helper-e113e409.js.map new file mode 100644 index 00000000..b8887cd3 --- /dev/null +++ b/assets/dynamic-import-helper-e113e409.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dynamic-import-helper-e113e409.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/exportDrawing-aee43b5d.svg b/assets/exportDrawing-aee43b5d.svg new file mode 100644 index 00000000..fbeddfdf --- /dev/null +++ b/assets/exportDrawing-aee43b5d.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/guitar-ef193250.wav b/assets/guitar-ef193250.wav new file mode 100644 index 0000000000000000000000000000000000000000..ed10a50acd0bed2bf7dab7407c791a483dc0dac6 GIT binary patch literal 389670 zcmWh!1yEb-5{`R9kOTq*Ns!+Wt;XektThq$}DzVjw?GQ%Vj z=1=zQezucF4j&$(hl8dMo>shM^`r+G=G~84(jnV zd7gXTdulxYdH8Og`?GtVyU~5$JseaD5`Z1xWbkS5PS7<_K4d@S7wiT+6Z!%w0p~$l zKt|9%_i1;stIGMxip?f1f zhKEPT1=od*Bs~g%5Y`g=Pyv{iggEbHuVdaVgiP;MM5^x&-yP&z(1S$h0>PPUeHj%$kQcXbS7i+YFl(>nwE;hk?-^xhEWsP6AQ zrELp3i<=I&4{fMu4XU%%udjSjC;I)h<4EI_fmvPq`lfa~XZCiN2wt(5@^7(v**p4n za_0>k5KrP?P?ShBW&1_V{2+ENe+jFdr)74r_x6d{yZbis_A>>-O;8(Vr*0b(H_cPd1cr>gMb`jhQ9_}`}&RAzzzUww?iZtt$(|~#j zv~euu<`UCE<4t{2@wWf2AXQ{}oH^N*Jvucz=S<4!LH!xq3m)gvirez*N2v2#Mg$aKN&*T< zCEkU>BX1UAM?;2w7~58ipNJlfpI$q4{leHqLpK$y>De2*x@ph+C5>D1=4@Q8oHT46 zXZX}f#YHzp_2zvZ-jb6)Y)1aj5f_Kf9S0tFqO51SZSl)ezh&R1%N8%0Hg3_G$(Z@C z#-EtQ9J{zIe?sEyF_SLNJu%k5?BH<2#9_mRjxQT*8T~qUPO&;WWXO!HIYqGaHF@Dl z{h6B?gru$XAu-ahNm0qc^%G3fF2Hw!9)fb6%?`17r^&|NzE!-H58|}+ zb@WwtWcK`S4eR~ac733+Yau7E{}+3GAHU~f+n0`qjo&-Fn=ZD`Y53SmtNX93uer8o zep_3|-^R(ErA-5URUPuau8!3mWsM7(*Zu2md|5T4zV6Sgs;2T&Kh5uleouT0syP4g zaOI<~seb~$-2c7r^Qmf|A6pwUtBPB1*0!`@Yd1G7t-jQ>xH=E`yRZYq|!r{xdo^ZAAWOsqS2M{eEz9IGK_{-R~##=Mt~_%5ZcqA-n^z4|EC? z2O0+&>PhniIJVkLYz5Y2=N*R&6bbf&+u(5s1~LuW2>sz&?}FL=Y;SFUtZ&V^rcY{u za)tDv&|kJi^iuUv{$9gSrKxh|O6hP>g>W5r9{&MrjVO+{M(z^dm8VOb!f#wM`&I9a z{=1!z2fDkyu#$Tp_Lp}qYWHhc)-<_#cblbd*TD6zI`J#ML3>EuWZ7nJwe?z`nlnu( zb-dympTfrU8#+R|7q!H9MmI&ZZmd07`?_M`Z^q}R-=DvI@&)KmlD@UyWDSChDk=M7=uNM6F`W#l%`tx$*(5m!i@;`jzoxkY1 z@ZbLbp8q)Vx9VHjAI6u>zmq?IsB)DPTkth^`*(IC_+-`-(G=b^*(s4-Ge)(^O0k>+ zzUwbYCh95f3IRvRAXefk2{(aReHM+zO0ggCOMQlsghBaX*P`CV-$~gr$dh}#_}Y+^ zvEf6?$IQ&_88$2>ZqSX$`*Cw9tEi#G*FKX8r-+yQ>in05mPG``+(|+w9n8dJY|H;y z@UtYM_}i$E44w9(iGEMX_bV$RVsT4~p=kXB3Prxu1g`wk&I0QGa?`erKvR z=V8jrK?5mh>#b3WE?KjyV+$js7nvFsz4s zF%U&s8xTM`5s*!8qh$Cy15*PcgUx{xLMMgJkN8fT#kfSD7;`C16M2O4mRjh$iagTq zvj2pj522&NKSXT_7epC?--o}Wu&D__S3<=hQhIY3JqjNh7BLW*7&_74Cuk^HPcf3t zP(uCo_-A-~`<*6;iPh+>SU7k(c!Vv{+H0+_%mQr$h2nF(Rt3Hfq0nweAE%Fv*-9fZ z_Jq|(Rs?ShXOSNT-u6oIfuOHqG_XqeK4?5FAMyg?aNcm1=|^ghiTCq|a{~K~tmD07 zIllcQ_RrqL-nO=fz+8CHFz9ba{mnm{8_<7kO@?Y!OJ41h7DY{T6S&${zqfKs-J#z@ ztGVB`70*BQ{ml7buXy=s_}@L>?pGK5_+0by7rx;@<%E`PHNG9a4eE~G#)cM3?dO_D zzdly1{&cE*+MBwslV7ba&wkVKYw$obu(;t3r}AOPH^o zsK8q;n)W+oj$00yeT+q5iZd4K&l^AM-RAwKmDVK7Mr)>}-g@2Qut9A)N3r9Td#&3I zE`gkcFGhSq>QT>u=j+fUSP|p`WB_&xo`Gq`dI*cWxn3)Mat`ZxD*oV`r#}wR~QSlA64%ZyQEhn&jqIiAWk|j zpBcoT#+od0akop32-IQ`|BrAE7sDUUvT~~XtJvH6{;)E7FEK^k!wX-B9%O1%st-zAQdL<`=DHu45U*Lk^OBLBW?hd?7Q;I0$;e14HKfZE0d?+v>hvV(p(tS!bj5D;K#vjGHEgHgmAtQ=kD7VPkRReN_CRO=N3sNKXb($1Ih;EZ%g|0z2 zTccBtP*T(piuF2}=7@!6E_J?hxSWTbc{XqB8DpjXo#BFRz6E4Py0$oPfjhyMpy9A^ z=sBndJRWirz|0KSTW2_M_8eWOnx)B6{WPJCcyJupjYE57k*)-A{l5pj_TLsnpoCD{ zf|rCBhHZvP zi%m;;8u<~Jn`Xv_h>5W>#;PQ0@<3MGAn4Es!=8>mKQ3aXacafFv1J|0>dNLUA2uy< z5o7F~(tU&d#@x)9STHz#N!qI@Rs1LVwwMIk+h`y9E5_*P`w8O{PN$DgU6Hds16Hs! zYhuyp>;;2IW+fJlNdKG1OfJvPPyCkA87EHtkCBm74q(b1;lilnp)Vu8h1{c04;e~- z96UJumH(cg4_;G!29P-PJV+Hp>27u3abO(lEZOEL165a}JEvJ>sxT~eys{HKa-e%2 zc0Y46oTr^o=V-Sdz$la4-|aAal4+}frTe0ptdG++8nK22X1#HxsmkEiu{4?L`3kL4 zDD%?HQEma|-z?*KJ;M;JqpN2qEMhBv1UF^i%YeMg-q+W0sQ*YOZXm3yzpt|6MeoA) zZ+*8rrm`w~hVvFO2l#Pp8rNqawBM_9Vb|H_GhKh0|Ih!=un4`oIb-_e?1z0&)~24P z1Kh4b1EpQketV~?uct%V*WEFR^{uBukjRn9CW!kKx22aQZv~H(dB=uzRN|_%-yLd73d*W>M3Wc}6UGvmLGPYVjT0Yq=HirRbQ!HprdI{D0j#{2-k2G%n3akdSGo$9X}f*TaVU`Y(!Q`YrTKR z)nI>psJZp)LS4;ocEh&6Uz>mZ!?bO!%V^zEJF20jvbehU`|ip!UrVZO@*c_}Qd@w)=O-!JyVf_{`?c>> zpBz#=X=A|rphuzfC`|mww5hr43pb6NR`P4|tFeJ)8^(iXX~&Ex-8}r^L~;SNWKo7L zACf>#4~mM9kD_gh4h|n5^@K)de2DrKpAa9PHYi1wy)C^dZ(b&-(4N&<6q&PiXnfv_ z;y1ZNi?P|7qFHI@a$hH}$`&Wz%f69%HwTqQ&z+R)%&LhiPkqQhC7GhA2?g{f1|)bv zSh;T#`6a%_%Ln@dcMmfdmxHOr4n;r5fY1vu5!h_hko#9r_-aF|E$UgTmqSK0U4Hk;lXo@*S+3(8G0t4bqx>8driO`V4M=62&R!ynxp zjYTO?cF0PVfwE*JRJK@wla5hXB#Tvx<+a+0YPdnK4bkg05|x+Ys#Gkri8^=-rT2u7 z)f~k!6WdT?Utzll-~^48V~I7y>BcJ4WP8M$_!Pl@b_#zR3ocm6ekYvA)rmoZC9-}| zveFmm|8%w1e9koA73PWo?*lgi*r5dc4g4FN0U<(bpdX++V7-uo&{LpJ&?Kx%FJ#_(n!mdV{obQq!91khYg~^Eyv7HFdh1 z4z&%cw>GM)baku$Y^r@*F~4U0ulSnyUlDbye#@Hh|N1-aO##fc-KD%eOqbvSXR0Wj z_f!0ZzexI5D3&b{@03SLw#c-iN#YTF5f{rW=+Eu+>0Z;~>^awl*&eDk4;Pm>h#PA@Z`TkpNw0P7ctzNnv#1nW^(d-+F-_=(ANv`C#B6 zpG?wGVxsR7?;O8q-z;*f-)jHuz8A?Z?`FR;pFC13=|DiM|G6Nte?{O{pLrxUwhEts z2u3DBA45+-1dz8743q%#G%X$jXe!oJO!T9LC*tPgSUfnn)VIK;E z;R3qn1NTYyXy-Rawta?ei6zjSXI!m6sNbu-X!xLu26_z{&}5E*HQ+^vC&;B}B6bI6 zE^ZpO6km)#;l=fO;xp4{52?~O!GERCP0|X2mgtR9VjYMPsM~MpLvHVYX<%MAy?;pO-M)Jr8~fIETK}Cx zfA-hx{I#!U|F6&WiIvf(}1a_pM|0z^<-6Y4e13og zA&~JPEb;)OYj@{?CPYh0&76k*%C7p1%H7Q?{_X18(Trg4>OBnT%8jaexk&#~yT|m? zu-)|95N`0%$uz@M-s%{|GR=Est)X7$wlS@9!CSyzG2?M7$eonMwC~Zv*c&Nx6V9a9 z#NJ665w#@#c{n0^S+FJSF)5w$6R+?pK@3N_!NVc5AkQEx;PHq8)J$|D<}Fr)s~~{A z&-*SWy$P5dP#nw&XbEQc3j)JPdjceWsR5_SF@c8z76(tGtf9UNxEvhk-x_!b=<9oZ zw~?<9eSC$u2Eshl2{as%4x!r3R*U{Oz?F6@wVD*wQUgsFU|DUNV(m3E&4DJY$*A9F z+F-b94YPc6{&WoT{B`r)YupV0w$h_zhz9xrt^wZ%KLXo5pFMmh-5F^6X_;)AZ1B_H)$G^)QZ3T;sf&!^`eBx@rZd)T zOM>N|smIW+yQ{^ik80YK!Ma!KBgT9BJ=Rf{a)-CW;k@81c09IsoA;TNx?ar(4PA9g zH(8TmE;nv;blA-vUr-XX8LEQy!gs+BAhy6)BHqHT!^!J$T0kyWD&QK%Qm# zZUb6>(>%qr6zH>QptYc4XfO;5$0DX6pP>q{x%gegIlfJ#8wq(z-n3cSlb=XI?r8*1ww&6f<1vvhEImsU=tuuAqU;#+}|A_$3ubc`o^f5_(Ng8BNqj6L)Vc5 z0#ExKB+c~3`1$x+Nh8RgC{>gn)ce6<;RPWMT6PGOeukP$TS^U~`G?qOn?o-}+z8V} z7KH7HJRY)>j-h@EA57(h8$$Z&icnpIKlNq!FH!XbUvj!?%! z`!w4y%NNrV;~o7O;}(62d9?AB#cY~v{c1jL)thzJ4VHMj&>HK^c06_=TpL|&&N_$L z-eY@b-E9rEys$)@BP|C_;g*x8c+01CZHbz#Tc$Z;Sf^WMx@#bs=NT6o=jl7OtJQtVPqLc;*0L(frEj&NYQ1T(F~#O( zjk6_NzniC-78v&FE@<=BLp5)eJk2H*Lr>7UjSCD9EE~+b?B8uJSC6X&JP0x#UWT}X zw4mA$6jU+fFNEzVb!1rdrUp~7agNzxjIwAz$(Gwe5PZ-G-ShZrC~krC(% zxLSfQQSOuHvx`*d*X{2lu8F;BFNGB2^cw}Kt#?ZfS#Y=xFgbFtx?PN8|NI-%moXDSX$H_FC~ zk4u9^N2L%^o)kbFl1{-+iBQ0iT@jy9LzJtH9Q|PXXxGDe%}Q$vu&Eac4pg zL>!{*qu%kW_fH`{^x24|;{5@vs01lMd9Fv!X^s{4efDKGzU?hg3r!Zf^@MqcrN*SS zWSQe^<(6!_%KFv*pUq|$+rHSJ+Sc20tZ>U(lgl92#p!OT%QY{{0rPZ$0k3qSo)H)>#-@E2#Mbfs`Wu~k|H;Mh|-isn0@4{if=tt{tN#~sfFk0103 zbP|Bwo?_47pW@|S+p!DrPvOrHL)~;Y#!_t(Y457HD-X!%@^|9nGLxuE#t@guUW;-i zDFTjQCWpZDVSeTu?q_g%`;4qzy_*LvcRlKz*dEriqZQUOtCi5RxRu$R+S=JOrLB5^ z*`?+uvmYrYNk5EMnVYu}^>0e$*y$zi?NB+2CJ*pIZvv56*EjT@!$gbi}^hcHYT!Yyj^Ck3ql3 zl=+S(v#FemICO%e`Jd0sW z9Kz^LJQQtDm=d`#ZYte3riFe!Mj4f!fQpl*oJbI*GZGG`cf@w3xEMc@C^4EOS8Q}@ zOTwCrisYK?p48mj&b0Y?;8p zU|%3GsP)kCup;mWumLm{EQXwgEf2 z{WhRqE_JMSBAh$zjkZv8osq3QuRf$aFMB0lF3D7AB~O$OWyb)2=%DJge4%Q;{Dq1q zSE>>eOH}XV>l6#5osvA^2|+$*7x&`;5~#^yeiN%ie3;)Tua}%u)0FMn-|9MDy9THC z(N^oeYW`_YsH@cZ$_t7MQjTP-FkD3BNd(V1cLd`(t%5zAHsND#fn=4yA^$DWs>dqt z>(*-m0KD_W2m$)?I&+xwv!fgw4Y`B#Mf>7Qy$r-gUzpDz(j2eBKIhOUu>T;BplFxU zX|cvx+f18)WP?)sRWn{S1h^-=6d$Dz74 zxEIzh>!|HAH|KSj8@_bxZ%ppl*7}gy+}+2wvM91#(G1NhrNOAzZvgc5(bi7$7vmHC z5X}hXaM=w{CKlIsSphgGM60A@<<0UQDuyGM_dj`oF}(8LzV^4<;8}8F9a$ zwB%8qxi~6^F*G5YUo<=OSHX+4`?(vFerKMF%}mLQE=l+tbtC>3<7?vcxY4NriLi{j ziSII439aeb0N;;H2u?qpa6f%P;{6O^(%P)#R9X%!V?#bCtD@+~ApHzZ@T|*zjgkfybt(Yz&Co`MGwXaZ=#^L=F2<|X zYp;)j*x;Mx^~pO4>xDNXu&BMTMEEgS3LK0uA}k07N(;v!d5}9$KTnS5hhvc=$9C8{ z)DmZ&XL1`>7;fpDx>gND->W%pc%WmMrWt=*mYO-1tL9;*a>G?^nYvBUEUlML6@^Lf z3rVtS(P{ZR30ApW=2Dd_Y+9mbw6RTp$~?zJw&+aRW{l~VG2if9uhvR6Z&Xv1|H+!A zheYGW5BQr!_jw$VH-9{!r_YsP#fKC-r9)KP<#hFG1w*}7@l=gaUeayUoU+U@!#!jV z7mi0B#hk+(#fb@{aL))=F)wkukR)^^~pJIvA+RlovU~!p(u(axl)SouRzG&%hvXS`u4OZbt)RSw0)|B zwU4N$cRQQ=na{hUg#jF$?2m}38YvT~3gj16a@k5%gKUiIwX8t7Me2}gL{#Z>LAFdF ztW}Rt?6;mX?}VL#`4XMpP|DWejL^q)0X;BA9bKRBJ{FNei@TCi$>1i=j%bLP6l$Vd z1MMMR0cV1qkTsMRGCa`fzaeNW#T|?eY@qf~Zc%#zjt0N*&kP#x-y4`0U<_)bn5i8> z!^2WS>@-7ILKGL^>bs)e#4DqRC$5YxPl$~q#Zc6fPbkKPmB7zLaIE{grZUwq}|!$gs`w&%Da!v6^jf zY-?>kHkW0a<&BAD{HC9$d!{j}PO6?LwyJI^4rmlAik`1MVc4rrHaK)p{VDAi9aS3- z@U$uBRi*~}QTq;1A~+N&LK*NXqQJM!|AfDPu*UyP@K=(XQs;ApJe2s-mjk>e#q7h! z0QEWm!NZQajqV!z8N0|r0o^XMSj30jEynyOPSl5G)>6JdFN+`fKR z|JP1dx4UIUS59*-Fy{w=Tn&P+WPX!g6He8nE31sh^<%Bq&2Ma3))m$-=3c`_-6N%+ zY_8}G_ZZjQzlsBR9y|ndqG%eIBzr16ro17|($*-i7&~+-YoB?gqu;j5-e4VUW*dTZ zU8+y2df8^x3E2njFx4k>q;ajA;SwW!k+ojqz267?3Q7%s6uE}slh~F}ntmtwM%J$6 zvsoU%AJ30nkqn7C9G6E6j#h?lh$spDNZ%hSrN0cNM4SxmrniPr=pU*7!WRTj4;vX2 z63PsG7BVwvROlrj<2NRxn|34YK;%n0GG=o0sD!52*(u6+Sz1$kU)tf=>=f_l;)Gpv zpO``*qql~dM7tO02^sFs2#WTdPF_!76OW+duy8mFZU>KnECU||uK;wv2E;SuA@mPS zE7}{o7daU91mMR*Kq5~skPJhESe{Nu2y_uV6;Xzm4`@Rbh*z+ka07HB>;)7GTMGRM zT?F`z`#~9?KkfkcLibD8G*7)d5hUE(R0!xnwUrFbQ*2z~% z%9R-TCJjwhrT1uGn=hIs+1qVNPOD=zzybGL`z;|R0#KhDbiKM0T7Em>lO679a6af3c&+=oo9t3MPdLk* z#ZJ9roI`DIva&5}j9>J3)f&Yt=`Ep|Kc0Pb^Hf94q6UM2K@m%lX6R*Sq5lFLN!+TT`@(P24rTw0CONinl9X>=#!9iW7U-w zvU!2)nKJ;y_w4iJc|JPD4z+cMWuysfc&1lqdUZ1OP{Tg0+srdcoG%=cVI{CC9G0Lb zy$hHU`hk8Q$XM)7C`?aF-jEfOye6wCaZ$$pxWd#640U2e6e50Ege9hwUd4Dx<3*!r zjOcmc*-^{F(2=r`v2<5(TKJ%#f>1k!McqRgNks~mhYyYmKEj} z>wlJH8_rs6wVJ1!pBd>!y>5fPRr5txr*6_|)%*30nu!LscCi7c%dAjyLSQLRoC=4 zcPe}9+N-)}wo0J?8SXu%!54-nQ1*c*c1C^@c*&COQ=Gt zYKfxM*sU)Fc=%AyDbGk~CTudI9C;Tt8W6x`SR=X?dlglTDFe9iOlSdYpXaw{nB%)W z*WztXHtyDc1^gzK-lW}axUEwHIHLl%o*^}S2jEN$Cg zf1%B%{$$tF<~}C2Cqi_Go35;udh2GW9fs$+X{H22CXj4AZkVMTq`jxwstA{k7L)iF z_&-?JdApgL1n1cwC3^&qRZHYfL$^+6ePLPT*kvE;7!D`_!+<2iA=3fl27RXfs|Epl z=0hDsGsBpuKWEuh4dL1nxE^!vF573szK7t$oTo6^4I=A^&N@>G0bZ5KQ6*wE4Xac;q|EKiFqD=^}BkuZEE2jl+8g z)tD8yX8?EFguH~>j=YB=p;n?>P^Fl6=*`&sm?OAa%p=@H^iRwy#BpRMYzvG4wL?}x zM?hb|9>5;Kd*LVGmGBX;tw0W_2(rnO=&5rc91ATl^E5-L?wNL)`nx7Z#nlW}O#>1r z@3nH3UK^l})s?8{>&~f@bd%IOG&7YTaz$`K_?L5%zmrwXyUi@)PiKt)xatBrszwcYX1J_q0v;{hyFj+CP8m>+F^A3iJcD}ZoAV)vW>FhEl%?~Q@nY-aj)s3 z0c+Ih-f7JM19XXbd_8OAKuXv9u8+;gjyDb4ItDe)?!MLHKVa?b<=z=ki{J6@C@09~ z=ql7(jC1tqrnQDLpgyUZ?aIxvZjoHDi8GTsd7zqeqhHC3U>QVRyk_}L$vI83YNX+y zZaXkH#+nUAxoNABVO*>q2jJt0K;9x*a!ly$#oU0On(E#Yqln88Y1Lp#ObQ{1@?#j3%E%= z?4KHZitGs7NqR~d2e zE0uKZRFyzGOfA&TP`7HZszyL37_Im!xhB0R93peu9wIE@ya%#DW8~T5 zNcA&0QzucM2YS~PTc2f{`&6G-mlC*GG0p*a#LY+=N)NLDnnn#M z!{y^VWUIFXS=`3y=0xK^^Fd>xMPiILKQgocb7hU{knEZGA#VyNq;Fm?p{=U@Q+-a$ z>3`3f`l|AqORMFr8)}bsRW>agIMw-+rx+-ctl?M6H;b_ffp~}1E`SMp*m^df0dkg=GNX3~6OR3yfH{y? zp5dTp?o7`Tx1Z;&`!%2nvO#9hBgkY3&{ZI6*f5A6>@z3?Lh}TGPP(%_Gd&8=d(aH< zd2j(l1bzU)LU<59xEUo79uDr<)ICeYJ{*{ZFFfqjd;K;|k&m!PRs zFI3{x8x+sfiOMgU1*(tQooX)t^G-Bw(l=O+nCAnUm=U}I@&-voYjIv)Gl9%l7HM06 zU%>sKTa@9{5(+yQsx?9TopLH9yub`CinY zI6iGev?7#GpBIut8x)dC`!A${c0EKyLxqf@t)adM-%M=|uL)UCFAwKMeFXNFj>J?Y zmBg!4^$FGKjft-_S`(jT3{SA6{fI#&zl<0WJ0&zOLKYYk3JPEc1(SbM_5hyA4WG}X z^Te6HrwM59V%%s#0s1fI8T=CB2!sv!4U&NNfY_io@Bo+tWLg?Uh$Qn=z z_`PQkNaG&jS>WF4PIJTEE8JAK%6-qh7O2)fAPZaT;d(+mDW1EoSFX8^9LGp&z2!Nu zSu+msEdQ$6%GIhY#dMXg;vt}l^0X99gyFgl1@L=~eu$0@_%F>0qm(PTEesGHX@QdaYe?KACpGPA4y_m`@|{ISt7bLLo`KpTwJFplWEip)jRzO zUAm>he8nknE`&UWW}=p2PU80yzj}`)seQlrzwuq~zuCLmFOc9QN-$&a4^j1)yU0`M zy~ru(Cgd$N233##i(H7lgU}#nzzX1vAV09dvCpA0-7zZEx0P=JU3Ul1!F z?uq7P_umjK=M0iHi2Brnls65ZbPDqc(^~5U3*5>x_W_BjLHb~=P35OZl2?emrHh4h z=_O&doF-wa)+^%mN3>(i>8AZaes__h)4tkKV_#$&ZLKp=j9+w%G!xWE6jPMBGM?h6 z^tbY-EK{>hX)x63Rywlmy)Ym67D6JifLu&T3c`ifP6pZX^yK)^)Wn#7i6xQKV+X(0gBNZkILNy)ZKh{ zl`Gc$&ZTob11fEYE7oOp?r?fL?>fZxS|C@;ww<@)Y>O?g0eypP3$@hSxRx>Y4b~a< zW7gj`qIHS&l^JD@Hdg58X}i_kiXM51q*hWPI4hpd&ya)(q*AKrfgCM4t>8%F6f-2d zWQ#I&?Dz0JU))YN(TQ_Tv0OBF zXah9sWw*qM{A_kOGqq=Q@4a?XPf^>r-uvx`26DOw0Y1bxQ5;_b+;0xGSsAH2r5OWc z9QSE1sWvM?a<~jGR)|jV>jl}|l>z}LMHI?6ORtFksWO!F^*eO8Of-|P<+0fh&}T!; zLrfctqYO&jX6;t>W#wCWmQ*b16W)@P3XcJp^@w(@`ny$csRA#7^q@asal{6nLw;ia zkbtCMQPAD6rD5vGHIWbFzQjCBz7o$(>q!`qQI_~I<4R&z#&h5*O`MRiIUy-MI{tNP zOKeQa!ycOD-ZOAXljD=qVv?6-3DTbAW@fD{ z+&xG>I6LRf5agiJ!P7Fw76?=4i>Gy~8X z#6h1!`vUO6DdhG5x9<@0RG)QzLEeSF1;kT6-CmhKtzIL2YQ2W|4EK8By@OCge1ZSr z)q{HjWNWA4L$FlbKg;bNc4z!Emh;SIJPb^FzgEvomQTtE%Kz(0cr7D-L zQ7xCXDr=#YyfjM0XuHmXsIhf1)Fq9~H|$e5zn(gVW1Kz4hl7{fP+_Vd<=L-@<2yM#-X zu`;@TKvQqMWg&Yc?gZFl*dyc_z@Hev?7;M5hhUyy3(@B=9|8Vkf*TRbVA1ef&?s0l zbRkRv)NurYf_#d2h1>w24B+oekU&5QzG+f%B|CN|?^QBHbz~P(G7AQLj_3(o9hi)Xj>MfagUJ-{eo_uVLTh-ewYbGg*Fu z9!{SqQy`F5h#iU?d5GqRs!!LeJ!|0UPaCxQqq;NNQ!1izn{<%)n&2UKKi9>a&#h

o!(}7h@9f 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

d&ZTHk1N8;)n>hq;*S9iOq^Xsf3&?u3@p1yWxB z854)j`9yTM6(l2W9Npe`^o61P%)4wzoYBwpe0MRPlR-Zg=Wk>5M|Hr$hS2f0gL~!$ zox1^VaujRXd>{E7E+NM%1JmdP@iHx_sr;Ylu`%$1KExBU5Qlwsajv+8Y~Z&fUnPZK z%0q5h3C?Im&RHWi@*(d3oa>HbS9Pk}@tv1eO6RfF*};oMw&Nlirt5|aF^hV_qjBFq zMi2fIyy_-7r#&L4U_FwDWss1dTi(&on7U--xo{4d=-um0FV8RiKYUx0(9rbad`=Fn z)-SU+7UP}2O-}G;JhWTL$oK+wU!Sb>+ip@Eko7&AJsr?tlwn(Xfo8NK2?-PNsP6#3 zzb$M;^Yoa!1jS#OPN{L?NOGS};A0B;6O%z&!rxiy!c4l(?~x7W(IHYwB@6FyK#2#Q zSusFsebCeXi$@_4l?Irkf-NAhL=f6_zpU%r4(N8|WtipKs9=W?NU4e$IG zn9$E;{Wa$kcc1K>%G{sBgtB0xvXDZUzC;v zEMqC=K5MF(ko~A0cV|C4ht-K$w3z*j8FHxEhd!qN(Q{Cp-25#@7CkL*`8qv)sGfd4 zCX2p4CLi}`OEgX!^(rBcu?E~eTE{WP9`Q{d!vDT#WjFWJ(m54v+$<-Jv(N4A{=gTP z1^%+Cx2pFaUt?b)Hr`{P_xZ)aq*nfqGn&Ew6_3a_c%>`!Wsed+;;ZN{_QDgp3*YuD zI-7obveUJg%oB}%K4bU+8H`t)t#AXSoqz2FWL0N!M0*sdhT?v+_qbb~j-aQ(Na^r& zv?Gs6Y5s^_^f(!LRYC05aYirV`npB(@Rd!fF8^Ep2> zn%^JPzcACZAQw}iWBe<*!Lrqw_on%%wlqXeLjoR$XGZeUh#hyCAvaOOQrCH_T(PjgbrV$cX^IfNU1L8Pzy6Z zmQcqBifKoKY3Z{&73dtDFu0vw?|I-&siT_)T7rp=52l1$nn3SeLO7%gN)m0g;s;~W zw7JS(+AO7@)jzvzA+BK4`zANXm@1J=z zaij&as5jC8U&0P1|JzO@=Odm=A6QaWd><3c6h^eUOn+=Nqo1Ld9yGVkv2ebKy(r=zCz*f?rdFw)|?AI%*Z(MN{n>PbR1^~cPk z$H^4EAJY%qa6f&D0ponAHCllE@G{BF^u}oOfRQA&^95h#Ub}&Pg8ar1&4yXn^xDvV z(hL5gm2V#neN#X&vXFDQP8`MTd5mm_`(iVGH9~V=2%Xahc8u*-@@V(c_4F)OvPZleTDAM3~`yXYhhS+77Wo_KrFVpkU3#Rt@DHO0MT<-H{5 z*uyN7mA9fgc*R)o@;%^A-$ftV*lN;0{vlEiI;59^KGQU{J+o&LZG#ff7BY`6 zP_n`)Wz#w+l9mokbUXQG(Q+lFJl)kT(B}3Alb(cI{3O}T$>`9f%-ihB=vMsjPsA)9$%q%qicQ6|v>{FWQtV>I*s z5xgP!VXR}Z$HnBq?S}#V&zfcitOZ6F^M&p+TkChgM4uTI^(1tB_ccA}n1+*q8#XSY ziAqAIaUI)ZH6}Zxw0)Pn(TV14FsmTBBqP8$U*R{aZ=7S7Eel8ehWm3Hd;Lnz=>=v{ zA#{{IB8qIC*6j29j1781^KWCSdDKWt#`g!>yKdUO@M&yv;`82CLr2%kv%xcr7o-DQ zVlw!O-6UG25Ep=szNSSa4f{h8=FmK3Ao={6$YR^VB;b(QRvOH%Ef~iT__pczWY)m` zo@J*G;HdA-+mXhJv1I2QI+D-U4tD$oZW2cge|Apsch%*kIfdr-D=*M%c+e$aq`b@F zPAG7u(w4s1Sw*_jGV}>c(J}5ebac&a;B&qBy)Mx)afV&~nf{iH-%9#y;~H9=iD1j4 zP1o9D}YCRsE6PJBch0^#y=L)05i^6g7i|`pmOdPP@3iv?# z`!~@`{8Wscga^RDW{M&$g`yqN@h8z+H$n^SjiiBpw`15-!5t} zU7k*0H~Quq(OPgU{m4J)1<4vUS*sWPtog?^UG_^29j7Yr4iqIooF#roHG4&U5*5T|2&+Wh>LHl#S7C4)>A zlAy`U3|0|C0`5#-0^cWZb6lXCJbgX!JTKsvM@M?H(>GzKufu6AM*~I@Hl~B&F{FuK za=VcsGuPQ+Z$#I7$?9b)oUxu{*T*$`>Tis4`Y-O%Z02S#q11Sn)}g!4L08BUGZUVW zf0;>ZljV_-oablgq&i!o`OWNS)T5`EtxL~g9OoV>A8Mw5z^8i%t^LlJa{8T^f#9Mi z$uo>H9+7ESRo{aiI3C@Nv&|RqOY2Psrt6!%)ehncD9FClmDZEVo?D)&-jKH=UvnHX z1XjR-y5Mp(&@~MN3!O?XLVt4Ai-?cJN5Vibrys&5_Txw1c0L)@F%h}y*+4c6l3CgU z59ew!7*jb_?Ym?)-zT>*sq?{Fitn^Ic+_t=_+|JKGDOCQ$Dwgp$-Xo_BJe5S8s0*x z$!Gd;Vx5Tz*_RSAi>D`>r83^cWqcip!I3Y~4Z4E!xl+FxI>((FpFL`<5z=$=PI%zv z;=@Xnc1k+)+;i^#(4M97?BI;PqUrP%iQMba1pO`crl)VCaFAJ)COaYE&j?3RU+l*$ zx}AKrAO81ZcJdwDN@dCZ9YlZMPV}QP`JtJ?FFhv?fZII7{aAzyl22sjT=zcq{>B4Zm?oyx^xH&yGW=3S zv?TxF0Zkwr2hq>s(^2M^B$0C-*l09)_Xo(wTS$`ZR8%!HBI6_7n6A>pv@Aq{f76{$ z5B5&y2#UPLmKE#Eu-4<{^cziitBcXM)Ck;u5qGGEKAZlQAO3TOS(BMynqAyFU^lR~ z*=4}*nIiGj?_;;kMaRu-X4f$JBE88l^Pr2~i!N^lI<-mcO}q6}aGyOwdGPOzF!GZ@ zvX(s}A$RC#~jZ!7wzhBV(q$Z6RSeuCzIc(@k{E|bujwn2|4MmmSPgs-{l`Rp8l zH$IIn`hsQf&ihQw%w{y@oqt8q^?ZE?_~hO{k)$Wpz8Bhw-*iW9ChuXbcO&ZNhy0|n^R>)jr~e95pI#_L3YiCH zVjj1v1Ah9iH>r1@rw3XR!E=wBbTjzqeBQa4BtH!1PAv_~^e8-tDq({FS(z%N~~ z`*TJInpLgMWaA{}y}nLP)(P|@mj0BS@XGYo9km*pIqjQt5$0!}>S=ufA9{vvbPbx( zs`h0(_1q`cF?4m=*>R`qD~))1N%Sbc=pA~bmjWlPNRIx*P-SvVrx}HqBWMd@{~u`% zGv1Sr)Y&>>CbK74KkOOy4`;g*FZ{zThKscgb4x7$+nh9(v?N&_68xOcUU(y~l7bZU z-$1W+g-)+f5@2$SvsSZ>5TJr3xhljYIKtP+5R<;rbc>~i?PjsVVqz#k8ZrJtv`0*dv%k7(B zbvNKZpQ4jZWHbi@d8s@2Uyp@`qH&(aJ$h1)(o+~?^-V@5vaB7Wj+MyjVmGwcgDQM- ztA(@DNKhSqsT_Jdh1A0ZoY9C+ATPF-*oXIE3TN~H-PyMVuU{4m;uGoT?;;){pCrWB zTv!T=-N}F0Ee-H1@-6=;`fsw)d84YYq3O&K4~)&^=_N77vWxvf)y9c8 zi_x-~l3gadtGYG9_23~_MOM;PyAfPtjPHrB7#Q#=Art%3eBSuioYC}X@QV4*aYk2& zfB9?EPxw;kN^i&&Fpdan{rJ8!o(RgX2ay-N)UG>;+?z?xBIl%C&?#Xja}wGm=%rZh zY`62G4|(h+cBh12{(0wTaW*fr$)Al>2OEiELYl-GeU2L0;f%`8R=lJ8EH4V$bR>$^ zH-;H!^`Ox}zd=jGaXo>4Q_ssgKSUpBSnQqajl1Sj_Q5082Ro^g(Vgga3OnI-beEm- zEGAQKD-MfZ+@XS4o%?AFKD(X5Rq>MW4%{iqp8&6NIkA_25ZL_|@f*3+*(8OIro#TY z_(AVUyUD?iD;<>ANWJI>{YTBGG}Kb7odTlPpG@28>`YIhCItM^!|1Ea8~8VBzc!By zyz_x6ssV^xM_Z!YP-`n=)$B@3HI-6VO{z3f<0{qFpLB^IptrfI{I7CES}dFXeQ*Zb z$Vpitw!nS73iXQ%BDeyEo?I30P;V1%)A?ireD)3{59S8>xM6gZ-H@)c&ljW>#S z{+?%yr-;WU!Er2Sv<9cNFq?etNOKgVB~X>b;0@`IoBk^O7zSKRQs;kGA$*{{$za9} z%Fc9NFKsTwpS)e4!aM)T>}0gGz8ZI}PG&j#o;e+@=rJ@xC(ty{MT1`rPyI7+r@je#9F)FZ|lginnhPpXQ@59~)rkS}`5Hz^9mxx2J`B8rA6qd$9eVHGvbl13mp$ zqpH!_IH5Bo>F5*qm0tg$SHi!rfh>zcXuu3373VpLoyjgq=j~uucTa_TM1DuEdlat^ z?RuED_M>Qj3yaN#Y2qS$cE|9B#PalhGSaic(>E2D^L4%eyH72dVnZo2xwy5#DJS_; z%eV2{m6inMo^+O+yp3vi<)~Hb%GKHDKPm;}hRS^O{WtLO8)#S)Ghr3y zjE-b)f5%%j4J;}49vugFbcs`%oy>$r6u= z>;khN$lKnY*S#$mbPG6^{Gj)*!o9emj=M|U|D2QPer}UoV6g`kwN4nD=~t+49?}b# ztM&TkDSa`RpTsOW%<|&*9M2j0N@qezYaiJCI&zWv!GWf=PnvsabSrFKGIp3n!T-16 zDalCR*uhXp?*N}vfHyB6?|o%D8^+M@bQ6DR7X31BeM(a!PimnNqWyKg<*{1Xrqu-f zRTo?w3(#Nhk6eme_WbnhAxU63FGpgy&6&bY*zByN|Mn7_aZbB1ySGLwnuGIslU}M? zbfRxWY4gcjz!$)WkjWF*lQZ%%Tpo_S9dG##dcrb08OhGM2v2{8Sv1<-?aZ?4yS1FC za6ES>b9!Nv4AaQK+J>HSX5|&;=Ym7J3kh`1NYGb#wXFBJd2X66jGB$-O9+BBBGr62W z;Q~I;ymTrL;*DPePk#<>>5~vf-<+8{w1vN`xRg8e86J_;Qe5uPV%(wKnMF6C$@}de zE_aY5_U_BdG5Lr(Upb@oQ6C2?YL|l_wb4;^dE`TW>%)E$(4R|J(N~w$#<1_asj0yxp*t+AwN%!^ec9{M6@n6 z<$in&J2rurU?6(sWxVw7z2CgGP>pWkPKoga!0ppBiAuru5`d`kC!uOv?cd; zEa&wJSvFLIsd#$w|9&~_R&q~HUy4M=cKmU_X(6&Zi^AS3` z#@wS{L&?#Ud?UZ`C%*#5q)>6=EdKfAV4{6=n_STv%)0x`mt;E4#;e!F+HW_v_n`DR zc8>Td+7AbY|t12=Hwdv$ik>=&a~Q+(X-XQ%^aw~^r_I1codXHH8?HrGM4 z_vzstT9ErQ87_A-IPWF;-yD1*nfz^d>zCudyun^C_%llR{4LNs&6ie^NA}tO4}SXR zvI91HK%T2EQRZ_-*O4_ck$bdY6sl0p>2x}13r6kMRtD2(PXZIwBmo26$YkXzcz;jk z(88*ywW7KXUsNEn%#_9Xz2Oe8>h{h?4i4i zk@Qr5M=Mv)PR+R-Y~8YVSx?C46QOsf}bv>pH?y^nPYh8LJ33v#HRF&A_{08YC2|7xP^XVAy9u4`IPDvSXS;97b!bBK z-9p~_)%a-pa7N`wzi>}>{mpJ7)J_GR=XP=a={i<&c#DRd(R0k4_35ckVwBY#{V!cb zgAkhsw2=EXjd{d)h$8o#bsP*qbP~{|To;x31ac@=cm~3658;fK6;6>!l8RZo0UqG7 z?DT7ded1+$8or@D%swpIvUen3>}K!>R3S{Oe_li+=I5qQ&0xXuh(ZLm*GDXqSf6R9s{ zL470#_`SsW{H08l_bMsmioEli<@^5IQat}hc;^3!P0&2f@cm|=&x)3QC2v6kk~ONM zWSYq>`Vl{UTQ=O&fAIVNd|v+E^Wgl|d_%$aAA3|hcJ0{_bP%UC?4uK4Nd~}v_J$9w z81bQTn-p$D55{CBvnh0GjJ3OwGrE%;vEh>Q>7sD8yLOh(jQ&gJw_D)LQI zlT%*8*ox=mJ9&83&{XZh7nRP~Xl^pnlli>M^0Dtev&uSe>~gTPb=c{8aPJTEjD=sC zOeRSaShTp@q6>xl@Prvaof?7O4@TcSklff7U{FyaDWk$qFpi=^Rd&jbq_B@8{eL36 z;_7f7P^TQO0{%IacRjn4*-nKHuNs(YH`5cuk!UD5TO50-sbvnGL>FM*YVA{z6WuzLk@! z5BPOh_Ne{jqe_r7+Dlp?AEQI}72Ovy8i}mTQ(e(6-z8I{FaEMRe6QQ$1Kr|1%yj)1 z2-74o#oyqTNGcrkMS)LUVT-EdtHUg?1Ku~IrvZcxH*@S<~W;%n=z={YB5>8 zg#oS1Poj(anj1xO8gL`jw8mH+Oq=eN74VoN@ea>4vl`dg=X1~nHizy{KiE=JdP7%{ zeRz)Zd4!InRp{Aj;Yqhi)*esSO|-R>Jlpg}5_1On{bYJQa`sYkHU;_}G^0-_CwV7r zxLY@q>HOO`pjR@pF#jGi{=%bth|aBn;Ej!(6i#D20e#t*CV=M7g&!KpXR{={+FRVb z4d6jf&?PO1b?AYaMR&?Ru^uYt%;H4$i&E?x+k|7_#x9*zDZN>}g<;#u;|*yO{)qGS zjq@CzaZB#a*nK_`XY^mr=m|Pe8`buHBRJnHgiD5( zyZynF7dY?jowkjN-e>u(tY!n|qkHJ@$r@q?ugE#Az}MafkLz7MKKtfDGauid{OA{3 z*(*@~-$XGgbMkY0F8{&qqu72o`$jOe{YH;hL0pC&?<9GnFNCA`uHTV#oR)5>rr;JU z{EwJNJ!D#C^H-9pp?4ZgN9bYnPRXSa@)jw((oBwGu8fCH`LDotHA!&3_C6Rt&?Ks0 zU@UiOm8etnCzhahVWV0ukQ6V-QssqOT4~K0&7gh;vwFiF`c6)*K9!TIdu37WDIZc| zz+CG}%Ex^v=wc`- z?867q2<+*Rx0NY3-v`$&v`KGMUngbl#eru9!62JikGu1NpED4g=^9#*up)< zcKgMyV5h-XK9Do|iJkT=!AE#;0NgK7qft=XQ1_{}GJb8tqF`W#eDW61=3$JSI> zRB$aP!OfI_+w?I%+fl-6yh}BOT4Z0$g8$s<*~@#fo^5FvI;E*@A$JX&+D$tJ9Q_+| z#Xs|_0Jzg0=P>(Hd&d(_26lhR&BmQMJaUwG-UMNP7tT*E*3NKNk}vy!Tdj2(f;#o* z>tAi%GM|`X^8Ra*IC4SnjwiVkyk`}5rB3*l&l!HBD45e5b0oUj34G5E*)N=E(%gH7 z|DhMErzbu+30Zx4c?-|^mI!%-IAl9jrZ0OeJm@Mgr%QZoE-5TIIHSG&+wt4o7vD0A zrsj-RkZSq|N@M+7rK@yy72*tCmCEooXHeV1WmY6(B)*m>xJ!FQ##61R?16@K&Bu#c zrHw>GasjO#IMvADCVk^JouiU|ix8%5-*SO?|e^)w^+xVG0iBeJxd6>Tw z`EH&47x7pL_&w@@$iG5IvY70bx#ZyP=N9$&{HUD!Et&_v$5gn? zWXzK{%}K@ubFlG>u9@uo`2;#Mzgt(~Jsw$>>L(=oBmqMX|u-hfZ?Tx2)6(|8!*ynHgx@^0kjgwBEIyeX7K3)EGN#~HPSZsI94 zCJphUU+1%%j-9eGSn>!ytIK#r_K`3D$gSoka65q+t+F*Ill|C!jeqHjj^TXxc}Lp_S-|XJs^#_5g1& z61W3ocC2C+Rm8TO(HX)Zyn>6-JDn9JeA!vVjQ%F%fJ|nuKfpcuLZmFkUkE<3mDJY1 zQ98yM%|+MEBdL|LjLyy>c$n&|Z39WQYQc@#&!DSSiBba<>8ASTmh8@>2ewyqA9~Z)8RNPj;16@;#-5++R6P7D=>}Uao>hpg)}KYVt_l z&}&oC*OQ(872MKdUhoCp+j#9V__Bg9EeC0mxGx$AuCF~>r?Nsz-#v1jO8d(4_nza7 z)?|i@<0*lnBq=FRNlBAcJ)2RNwc^eHNm5=t&gd+#or@%me&K|c#Miml8U^D^u&K9A9t2J#wi&t z>Rt`M!QG{%l$(+%+XcUjZ@owgG9-GBy+gaJ$>XBMHI^v;)C~trDHFWaCBRhPbcO5%l z2X>{NxCM84lhM)89o@)&pFk&A3E`fvp0F0gun;%vKJ;gQGqbLxcdEQ+Ff3?6w4=#9 z_akx07k5FRE~9hqjN9y5I5+w2z2R}zVL*GvcRQ#3m$lsLZkC~YAs#bjB6@7fTCa^6 z+*h_C?x-``Y!bFiBh!_<1?zVK}Nxe{_9^@R*Ds zFRuf-lCH+(&3y?6WEH@l^@_BO~6K1g705)%KVv+B)gVXjPKbfbB*!K2pZGDDQX$*c{`eOpHAi- zc?q`G1v*u23_n^Br9Ecp_t2;+S*gQ7iGVo!0nMVWYwo3~l+4r%% zZ}m8%Bk+jq6HVa*xLQVkMf%`-ic`o<-|IiYefnEWDB)%%zxk?^S?WahVqxylylQW> zN~P4?fe)&}el(iwkz>K(+O%L%EoJb8+K+vHi?&yZQA;W1*pF@~>*V3eEV->RLhhtY zl!qyU<>{Qy5$yBj$SS`n|0QLUd-!Who5j{-;MNn9qXq4T|K=@Pyjg7YoxPcuMN5F9 zOn?J5xKGF=W5zzju5^Gmq8GDhTr?*mz304^C!=>D^V?srOm9gWy@I0b2;1Wt{_g-L z)4xzWtqBk2gsx}e+snJR*FHd>unNC9$;xZyu&(f#pK1iGB}P%}hB1-6kq^AXRqb@v zX7V0C+fS@yWRs?3*D&ZlK8y~f9(&Yla*kSX=RPJ!rX_u0-07Zc)ue5# zHuHBq_oFk6F6oDMR?cV+cEz^NF#8!Nt_x0?MBJfU*{gDs<1`K~ZU-5T%i!jk@yD;j zqiFiQOR7m6cOPo0|Hvsdt&-%Dv;n{0X1GQwW2J$T%UHl1x)87Tf8<%_G)kGr!JI~$ z%SqXZZ6{mnJaitpMZ-3?XfnKJL9~Vsy{mn_@Tf(nY@^)j;zk$%B;3a!+-YGE{2{59+G9 zg3Yz%^eLU7KXC+es2E(XRtqFk$7?f`%W6s`lX{k&Xreq&8NeCsL?7({d6d#xo~2ab zk1e`!XGwcxo1LtRKaDgNF5wVwSZrQFZQQF5xI>3~OL2>)A;qyG>fU+GqZ-KQ5E2R> z`i`)>ZozZkkvlX7KBXtv=~Isj(lUTV@%VIqKjmZ|gGt;0Had+LuNsK-Lr}tef1Krh zw~JE|K5!g+&qvN-2TL`RT8rS#hvKW9VB{sAc`_N|AFP$=oDzWB59W-Xu;Mx2(ObT= z{)d-iHW_4j(L5ah8;#Al+h>+A%9%USMQ5So;Wqox%1~`%ai|4v{&*u2+DpcRLw0c~ z@}HNG7iE*{F_<%&fb)OFZcV04OJ^}R{EF}@IM5@J1)e)-NzRjiGmR9v5_k;`;)+R6 z{!w?{zlH1*TkxUH5pVF>?#oVW_*(P5JB()GmG`J8?0L!OG(^rt8oVL(m?RH4#mJ~$ zjen^c_h?zWD}AUhnaIcBVa^b)1vlvr7pCEMDtOasTwgQ!RF~xCxg4%bKI>XIs%y>^ z=N0KUzpO`AJaXGgnIv9tMw1x3;6W#ou`=G+0r&Yo_Qob)PVbqSPSQtq+D%hd5JI-{rw8@0bMA!cBSKB_J4CmkK=Kktc(PwAIRApCa+Su%iEL+@+8G%2OB3HAYb3+-<4Pz zjB9MO5G8&Cldp{9^Ex_`F>Lf*y|u`88UY9Tka@HgNc~ygDc<+TzA|9GX}L$Qku+Z3 z*Oly&H(;ZkJwrfSGNT;*MBeZnx|L6HLRW%1H6>B&HSKVP!w1~PG%&Sf8f|Tl1si>j zzor`<$+1|dY|S^)SbL1daPND`VMuOYqr1JVb(bE^_|8WwGkUg^j!SmeMec?!X!5?9 zyZQSHpm*9$4^vruB~Oji`XaPVU5)i%_Pav;@iZ-CPJ6(VPmJzB&#^D1g70jB|7p%dV@3C$V$y# ze*tcO2e|!zMmH-3-jAtpKa#bKxA-&Jg_)h4b{6Kil=yug*zd_E84VBm+gwEMLptjS z*lK1n?3d$x%&#wHKN<>#Kfrh$nqwr;Pw>vW>`Eoz1}2!}$Q%pt^BWGXm6{BmXXJHU zvQ-!yIsD6w!WS3Kyb@v>J>gA*yYKJcx8tI@%P17fbueSk zG&-|4HPxpZJx+kD^B3-w)m)uiY4KsyAAvRiwV|L)Co5Q=H7MthA!Mh1Kpz zUh^dyHe|4;yy84QgFC^W{u2&~G31e@z^_$}Y}^6lldR#bza`!UBNf<}%1ZOt>t(5= zyh2iyhO(oiQ+#Nfg}_qv4jGL-f^D_U!4BGD`aW|8FQB)tNUqos@YCY-em#^QDbwX? z^xd{pn#$dH<3}n@IHy(kl|*i)oRu8<&(Viwech;x2_xUxetq2FO0F= zaqr2ktAS>3uf5qaY}L--l(+vzXDK;Z>~r>gtFztCa;(Sjm=*ElZ-<{sZTxMn#Y+G=n&WoR`ii}Jb( z>|+_vOix6sZ&Li|=z8 zI+BHOO!XocKo{!s+djO`znrJw|FVF8ZK!`(THUW?iKLE{+n zOhTibxx%o_dVB`U{=w9?IrE(V+&Av8aK4BDHt0d2cG24&HY|$$cOsbDa}dYG;&i^g z9bjpfh55{)*VzX>{t{>pJA+Hkr_1&v`_c#THhxe^s^zaLZS|j!QcI2G^W1p@*y*b( zY01Dz9@wKk4`kKa2V260Hsh=&*4)5WwN4<5I!jxr+(F-zN4>;8KaN?n1Lv_mXSA_A zM5)91EX_7ksT9PtV4Wf%C2#0X8vD`?KXG?@Ix8*HVGc;ySB$gBQGOY)0% zp&=QLo4G3ZZ0!2u`l&wUwUlqBttwG*>0Pe zKf{*C$p!9|!+vOc?78qvh0*0*;2hVql9;#f-ZwF0z?DYe2hG7w?~ny)a+fA&e``Mi_N4!70BYY!$ znQ2H_Dby1@a4@CBEBp+f3WIqIdy1>sl`7GNew8MGyxd6ra4PH}@BSWmhQQbSH^_Sz zSo%{=ey5f*$BrUbA|d_aHJz6BCFic))E(^j!};7L;TLZ5$iQ${xcSNabA$Mf6$HmW z55|xaG`Sz&vn_b3?}CE_@EQJNHAj=TAN@>T<2i5p9`XTp;1#)Le8vA&7ryO@tjnF(z$0xiKPyKWDCBbi!CXknYw4vlX{g!GS(fW%8`llKQ#f} zAmf5VwY7B4cL=7}zLG;yI*^^*rZwzKe=Awk8}bP-|6yd8^<-Zf!5lhI=_0RI>TCUy)NgJ63CkWt*G7uapn^Zt+YZNfe8 z7e4z6bC0GI=J@XTQouXS#II%W$sFwI&bB0iiJpW7T^3n^-f2A8%fEP-1ab^UgYvz0 z$GaKW5n6*~FD2X4#LM0tk4IYG_}}IbBWO)yr@u@VNilL7574bx#M;ey{6%_UG;^Hf zq_CgbFRYpN6e~A=ri0{{l|uh~gpQjUWZr$I`*sU&`$Xe&XfPciGmKQ+G0oYdHiO&y znBN+J$DA-?*q6G%p^9WGop50@=l~_J|k|e>2TR^ zxGmGuNmxldgRgfhcTR61E`1@ph3V{?Us2WOMFZZ=bCSIKbD;1C@E+}V^TJll=X_`ZOYHAK_BvgFUk70Z0B2M0N3 zuO>_PktJ9etup2`?#k3)ZP$#)oXQ*q0iE`NoGiTSP)-1ie#f6tR8z{4FB$0rU}__7n663cYrv{hjb-%!h+KC7$ID zeNS(gCYAG-lBVDv{^XA%_m@t}spXZ*Q+biPRav67REM(D=iv^W5gZLZ+FffHOr|{` zZ!B#fh1yD+t!zRYnuvXAi!z>Bw2$1IvpG}gD=+2U-^>{uuOybsDBGpIaxzJf+p{k% z6qESR@x69^3E)60voCFBUuq00S_e=4Sno5mljYHoETdQX72K!GJO7jnoyl_Jr|-lJ79>08VdO^S5d7z6^oi3!`RXy3g~LX;HyYjRAShA%Tq>fgm;rY5$+~Rz zv(lJ&F7c+|<1iRPFqxeSBlMO%4?q@v&bBf2$^>3$)ot%5&7G4G zJo$t0(>Gq|h$iX+2?{cw>=Ja?wI%gtCY<95w+CPEbaW&)c;oBYE`5uMoxkl4a7Ayy zhezP0PZnj51N;p-6L*f5Y#i-=`S& z=y3lu>8C%r+)w&X&LZzuKFB-CZrH4KRwo5)_3vOUZ3x}-1ITzt7yPWwB2)ApIb$ib z#!5#x`De;}d4keju8VHJIq!TYG_tbW$uYa6)&{X1SVOX;fqpw`hyVGgJ``P(`eVr~mAFMw@H$exm#9U;2Bg42h+TaIheuu*KRD`+7 z#Kf33oFbeA&wvV3_Rdq4hM)MpN}w25c{j3?OfsBK&@FtHFM=VS;N4jwq+y?bEW9Gy zvL1Z!Mv~V*c=CFa!v>e;f2R-A_geTRhwh{ScwbYq??tgIhl)UDb{Q88Z`8Y^jv+%#+GwxdaBQL?N60&1ef&(2xZ}>CQW7aV{8^4VR z+0z&GjmCcZQ=Ws{XE&OmdHzCP&RQmdad?-;(@DP!t2iV)AGuzT8+jCViF5N%iGL`0E~v)BHX(JB5WYLQn3DSLj1~ zb3$u!MjMdJvCzAk2`e7Tw1v2rWU^tZf%n!08;y&1e7Y>%s@ah0xh9b_cmHoV}#xeCEHEwnnQfeuNw51EVGxf41?Buk#4!^BCDf zAN3UAYE#LqN=5eNBdeEn9(3;v|MW}O=HF2W#;*%{ysm7)wP?=%3A)`!5QK|DNp||) zLQyivI*J$m>`RyE5V6DxVs?Kov4MXM*$+q2J>3^ildt;IUj)8>ihmurQyF=_Br3IJ zTS-d3@+0MqHi0u5Rx<@l(p6tn%Mmox(}Brq%0NVEf$wv*`c?L-qj=9N%9WM0a#kfB z?|LS=fs#w^3%Asfj?sL|4C#!lN=e9iC?m~g-Z;e_|BJh#u&*Wgjoa~i`~$O;lixQ0 z^*rizQB<@;>9og}N_gaJ${kuw7>`RN3Qm74dW%n1B&Cm;GtYLOXD-OERCG<9A0uMNX=d2AoQ!+eIKhcytrhnuu zUAPYVrc7o?Z%qI49DGYJ&F}d4I^a=u%wll#78A#5XOeT2+iGk0Bss}XA~QWNJdOFf z1MGtfnZIS)HCoX1xkN|`=UJXzzOi^(s4Gt8tuKm;`4C#CY<#|ZkUDpO6YvCWLLBlM zisFwOhR^t^lg;VoEVOfTHj98A#b!UeaeksBnTYqa7~JGjH)*6(xD&|72z*POm`T${ zW`Ja-A(4Ctz28Uh=zX#u*$OXr0jm`~lNa$J*D|Y-Bm9+F<_2%aW&M*80DEiCJMWN} zbJC2qH=*;tWcyI=Ckq$H13EO4jk`ofpLUXbyejxW_xpyi51yv=%`bLDt1(?@j-F%& zJJVtG2w%klc#ONJ@5DH2#wGN|anek-1L| z_|(Iam+rbj@&*4zG|ex;W}o0ueSp924w#dSUbHQzGqE?dH{h)VzqE*b$wC{`3jSo3 zFFCki#GhZwGkihvSpT92o(> z@!UPeEqc!BfkJmL9oBK}usI!Va#1`UDXp7ERx~9YtrGOkA24&UvoAzz|I(mJ4(GMQy3SY^!w)+sV#Y8iFOb4+IL=53!&e#As{%qz$azoeIE zpC81}^Dr3_L=Bp4`CPnZ>lnmYFAiTGmz~+if1QDn_%k|^Ys{iEysy25;g^p3((ulY zLw)}Ols+BaiJIaEyveu7yj;Scm&8YZ#+P46PtH|unpQTT$$Wq|K?FA{6u!zm`o{S} zhUqvu7@E=Z-I=%G032|3w~%v=cfLt@tosEPsU9rxA`~|pIo)GnJ}g zOEY-qSNntHyX6%|3+?!MoZ{}N?9EFr-FHtsuk9(!DP2gG<8O34HFy;!gN@DuPwPn* zSyFiWMfCVYdH?o~@=Wq1%voxD~a|pL+dr}|jaFZry7ClP>eg!a;73>e6Ns!6t z48_wp+PcYSy`7c8Oh_iKXq_}tbC0&Ms+y$%ZF&9@JN-D~U`mF+ytqseI-e9ykL zz@BO4vr}5s)Y?UHcH;!G4%%p6t2i0#vG;ld!FAIC_fsD@c{-k+|&gfXJ9SL$>NNrvxq-38j z#k^LFoxZTx8GopPmw6QK*vHhYdTKry?Q+}Y1K;Y-1Q9>9InjJLkL)531$ z^hYmx*)D>=?gE+-_{gZfmQ+7Pg_=-4po> z#dco!?WDYcS5T@q7C!j)@fq}s?MYahEp+*#ZTYjr1f${8m*j@N2)WFzFGyfR^W>IDUe1h&K#PHcm7des#-J< zK+oJ)Ie-^gR)@%gl_GL_&Sh98+ypE%6IfG4aQnK-FDVbXcu(XUQYmoJ-qI;_tMBnr zC-{@&+8saA9^UtY+@tYn7sw1oItmUngb%boskirF1d|H8@ed9Mfl7r&axoZ{!ks%7 z{xdN-+}9$v!0b=|(TWb|K5fP3lpZDi8I(K4nYZS_fj(hhN)0yH%^qewu#T7=t&;5J zI_J|hs=&|B!29+KeR*Rv_Q&v~DR4`L_}P|q>ew0CHNM&JIHMD-Jb3C+Idevnpe0#o z48`-D$9$+8=q6v&>GaGP$vrxk`Rp3Fy$mndjBJSm@T^(6V-A|}>{e*`^V>tno@+%e zNOim+Wg=A~*->ppKo1Y#r>{lM#d+rLzj^C>pb1(jc=7XQArm1ZbDJ#Iz}fTyZDK<( zxvj7qh9|B!BYF2t=|-Lu&H{!}77u4{aLpU&`#afH*qM6swO@BmplPn)d}U7?iGN9? z3$z}b=VY{^LzqWvM0Uf-{R_Wz(LICeG%mWR%HUQL?Df`Vu)0iObt}==7DF53L(~1q z_^o@*l<>g4jP>wmrPw!rqR71sihRjAN%zuk_j$MgtY1S=u@-E^Me+8$hLLH<89hZ7 zk}S4l7M+fs>oD5pkN833(K%HdOtKld%|qaq=5n8H$IEn0eD3%96VP`vNIK&WOU*W6ZcrBDSMCtFseYqlDSJ@Uq~LXRO`wSyquoObRbJ^0-gE)2epSw7NOti* zSyGG~;Jn5|3TiBZmzioLm zPZK$_|Ko&~hFzNG^9p;xU}Dc{SAKG`udHtnbIo^lgdXq~QT%Lf!7FV>>$H-YbUg2V zJAA)sVM6zT=VXKf9pYAW4}v=R$T0jrOJ@NcMWRH}p6==HnFJ3m!QI{6g1g%if}KoT^e?M6RGESaevK4ov&$5GwPdT*&{YK-k^~PGnVW5&@AuQH*0mcFLGbo zg(q%JZZ!N%lC*==y|rjTw%~hk7C#;DWb7CCH|ClKyyS+;9W;TjI1cDxjeFi$LyCWAZe#asM5ytU)x(`8Z;-oUHSQf8OR zQ#HfDMX#`D6NG2DIwf#l@;h641wLK_Hasy#Ti&t8W@TeKpXVLg`vW*F5F|jVZWOTT&smAr7&9fC){kIs>?CH&CAIoXj3{t$fLOf*5t+iQ89s$jz`2 zxO0`6(Ph_J_XXDupI+`@-+S)2z8-gq6u;c@zMF{IlH3K^h<-k^tEf91e7?S#g}VM$ zHIyghV9Aw+Jer>Q-lNoYomE_}&hSOgacexa{FxosduF+N(gsjZQA|b5%_2f8Ir8w+ zfSVu-@NNF#=m`FDi3vUn{L+T=X!=Y!$)-$+icS7d*EoL;mIyi*q#!4u<`c^O>v95?Ll*t=j8hO%F3 z38(un+LsyZvcHO5*wde;+AG9nC2D;mdbUc=N#xYLQlu2kJDUpjS5Kb&TKrk!sU>cl zf&%QX)?#LQ+iXjWUNrs#5A9Db-Ds`=b8?#z)-tnnS*Nqwe@*;Vtv(KC6C}U8IChKJt=jC8g9+xblHBzIDt!bh6RotwtYKxti<+}B)d zxFOQkH`cw|_ZdCuG518@zV5$1AIPEI;oIM5_t{@9?#is*Mn4*j2jn3&QF+GcKsWK3 z)AdwI;aa5}<4#^_b*|h`x#b)y+hAdpP+1M<&U`%HqJ8N=rN~{hA>pY?T(X(;GCJeu^FVy)4V4@?b zlk?~sN5XBc1DE6rvrZ_S(^UF$ZjI%nzdWKv!5giToL~DyY@Vmy$FNh1!^`k9-ppm$ zE6qxNti5MH(3KhMIo^gL_?whBnvl``*_AtS_4#94c+r}k!@@gZ6g$w&u(_i|2|myS z_Vf>>2y*8csWx+cQ}jM1or9!LU^dgx(SH@+f!$XEu^WRA+b*utd;r5J$hDM-AfrEV z3R;49Ww1HRm}o9AuAvL5MV-H8JvIk|#C_+V>kR&5zl=m93w!#8`c$yGpITD#BruBd;7r-kWcf1>cF{tq6$ zg}Z}qX>KhY!IQZ#+T;Up?;5Lq%t~j~&)moPpq#`v{~dc&AJ;eH^MvwQ9imK8zoCV0 zCZ|*8ciKk9R{@K;SETNp>&rF{P3-39o{abjCFHjwxg`qnHjomN18CdpiE08BPfV+b; zjaA$za2sy+B}=s~dNZvqTBQHtO^p`6AE zvecQ>A*xw;b+ztPHDInfw!}R=QotQ zSq^a3rD*rM5I2R*MtJ6wq!#*n@^Qs8FLw)knU@}eaEId3k{Q3)h4i9tVBqIso~TW~ zRs~*ACipjJ;bOFw0?{AFa(g-jwWl$Bn&}|IC+r1mjkdscdTTy6OMz^~8N-Ot#b%`O z7XD{1Yl!)sE?}O0)N*;6vZKF-?@}7x?ZQl3PMD)R?cH{vf4Eb3>kvA<*X-$2fIBtN zhoJF(&Rvj6_*&Hf!!L|?P!0AB-ks5v z$-N1VXhUXsw|av-8mlHKx6~x%m-VV>ar+HewEX`YAY%wT7wo4J}>>IDew>f@!I* zkei9=5$|a%yykFv(NOAL7g%}O@zUaI3)6$b6^uMM=TxK8cR|xQNB_z_p;`2wP2o4y z;ih7DFv~5}VMEWN2N9!Z@W@O7$Fe5;y@uQ|r~tO8^PF~}VXBMP`LTYJ{6>Ddt$aBh*Zve*8^?l6ozlu4?< z<%(r6h+c6EHV=Pv#WQF%{sFJaqV-_SU+3!7RC9+h+MH}euyfVmi;jl}n##`3j{dZj z$MYYU&^3DxC~^!QE)$sTv(p`|fbaa58>JPkP_6=bFMzy76O&W#z`cNY`qA<1>KoxX zT1^{44qcxdL9eaqQ}6>S&JCaxXrpD*#kF;TS=F)w@!1Vw6F8J9xSp63|LtY?k7;5Y zT$0T6EzPM76WD+5MhA19c}YVH<0n@^58BjO2cM_bc&iS8JGz9sKKJC(;OaZ@A#18c zsZRFom(>aGN#OI@-RXTNyXU}pit>$e5B2?zSt-%g!Y70q$p+lg1!^1iNZ(br8cU2G zB8T22hkoTpVpjU9u2=S|<(1;BIaUxu?g*-0ID<2)7y&RK^lUlc5Or$3qu1P+z4h`$!N^HbrarFUG~oP7W(YW+3u}9hyJ;OX*g@Hl=cwV<1 zDe(~4&vvsMGw(8~4|z0(L8BJ(tW|j5Jz$2#FfV-pxhjAjrXSv8 z2hp75vR2{k{1V=LZx4lAX(2u^b@yS{apU3^J8p;^pWF=Wqmp8P1jl2Fcu z*<+cxuHXWh249n=#P)o22M@ivBz=%}0WIqYaI_|9vKnyPcPQ`aK{WJ5;m90D7cv6f zOHJOtlGLueTx9hJ3smu;elA4d6wn=ySQ*aRcqvJIMlb3QKHiBuI*VRA20quVfBGd~ zr_9ZcOmYclVe)A;bfKNliOiPcoDaEq-dx!$|5Vzr3rekSb6r(eq6O{mgZR@okQr%# zdl+70WqgafcXNNi?NbLIysPj>dazTlxb98?R;Ml>@S zTft1Lqlt`zhu&E)MU3vFme<7>E|J=Pj=SC`@GHIn-sEKVZA=c0K)2-3D%1Bah6kj= zIb8t1tv;$CCtCH-)&}dYz1BX;+qFtqDRhJf>)oqO2S5A_Pqr$YTJMfyDZIRJZWB%? zr#8pMIhnoOB>aT_z*h)>N3ufLj6UX)CxhoJerqx}mCNCJGuGV4erN)Bl_xR#oiPs@ z`K?^$K`{9ycAynceQCjsZ*MPpnC~hIZHRXd`pphvQy*vT;d1y7IDMt4J%fy8`UNnL z5_%KuEHhIGd9(vqMIf;nhHKtS7$&XoBKe?4(uhFC2^Q} zX(%k9^vu7rB!zdcHaxB|Qb#`9MD!sW*iFPbKS&RW)34mI6=Z+z_>|}7R0nctC@~uE zd@t9>zxlfCr;a7Iim4Y}@73Mz1+HM96mHSCtGgjw`&zy&+<$x=?*2ZDxL1?G<>y`l z|E`LvtKXDu>UCwFdP-TQ#^FtVLAk1)CDxZHo784XL-m1t6mRGx?m}dc@8WsxD^;eS z>MveKv(pQ$Z6UH~ZhY?o@OE0rZIHK)Y;>xF!C=;lv%moRQSI}f#y-R+txErOmU*eY z&{goIkGoGEJp%VWl3sKQm{UEf)^AYpQT8CR=w>SF6_glXx$>I>Uc^xS4nB%A^z~@o zX46-$!VBjiUL*ze-o|46Ci?kYW+P_dP$L9h@KC&F>fys}8%2#Z#wEBs_4T9rDR`rm zwD)K}RkSiLm5H+FLNu2K2joz_klAtL@WI8eRE!W;3gD z``sVjy~|_R-+8~zfy_){OX$yg86hfo;tYq6cLpv=61Cn%u949yJd^5jGwlWLWPNe8 zyi3Pk$kEy{N|-GifOq;6)Tk2Px}hjLoM^T-!&jL=9t<_t7!S?6aGIN$FRc&k=$Bif zry_gL6W|HyU^bK|k7mLN^BPR~I^fA`aT~e^>cBxLFya6sNMA=Ul!aaKA?+@;esgjk zd{f7wtJ}#tDAJox)_wGJd_VVaZr^NfM4NRCFVhG1R6JvP2w#OlDA2DvX4AdpK`*&b zN{MGh9s2AM%z=x*M)yc_z%Dj3HyuK2a04x2f>UB=Ux?YI0UpjX@o>KH{3bVqH+r92 z;Nuj59s4WSOZ5n~ez;Gv>!(jOcOlLm1loje>;&eSeIU|$-YHmg5zW87zrMy+{j7B*ezRnZ&M&*dYjo_jU$f6k? zY2kU^L0jjo5 z7TrYUD8`eiuJ_k6!;?>z$z0tF*Mv-X!_VC&}_W4^0OgcKy5$8?%)QuK%>xt26(Q6 zJJkhGo{4kVMb!Qu_}n>Bf_Bqa=qHKMTH1Ln5$?ey{M7CzM`}9vds{FMp3!#W``4I$ z$O-23!Zgi`RvJ5&d1;HM#y=HyT}KA-gX5amhk5C$cv14>y=#KM%20N@3#BQ}&FEVX zq7sNQ{o>&&$+3#B78zP3@!9 zQ`0KO&5l z3(qi&7;Vjcute^HkLI8JN@W}?RDyZ`8|?lXx%05+AgudnT*XJCXDkRaVk0qXT4(9} z{j9D$v4u>VSJ-0~8TdE*p6gO? zn94lA!#ryET4~Jr)_OCq-M~7|_fnotXeC|yS-jfL@J`PmkLLHRXI@GVy4uz%jojxFYa)ShkGB!t(ypGKeOR^FpOu+P`2}r zltaz}_S6LLhcM>@`LnZ$@}K-v(d7trgEA0}M?<%z`ufaqMRWhl?dwO3x|o%&yFz_} zU54A?>gZksep-SUeNOMWmz=qr8&1oWMd~tTrMgfFSH~!0)M`q3^|gFj=`LqiV!0zE zJICY6A0;hfa{a}-H3l!I;?($bO!bAiTjTW~I|%-gS}cu*X)@}O^~_Bx$+#WG`|zE+ z!2W&0Oy5@+#eT`}|JtQXFh!5ji*7&@9?XQAm7VoUwo9L^h3pz%vR^7=PB9jvr%y$` zJV1<2f!i@#pQvrucmKN;j{;A>WL(z$&8p~nr?P84V64OoX*7K3a_sA$G3yL72I&st zJzSKI+;VzFE$5yFcWWl&S2~8dX(nF!o51tqv?a-g_5!|N8ThG-(Di)P3L8Us2L!wq zju?K-Gv0mr1A95WV5DcYumV=)D6(iN`tA#C3QIG)&%teApELn)hw1Q}g4uo6;eREI zCBTV~uCw=i!)_uww^+u}Gkw?I>#Nzpbp)#mFpHyW%z>|3T0E;X&kC-hEP$=vos8s^ z!o=C^a9@L~<#yI#C(#S8(+J{pCb@JC9y;5Y?=OOpK0g^4vM4d?aU}%ad^5K%_rAioJNw4<%|~)4`TTTU;oGNI_sJ`{;haQIQ9`}~cPEWB5)a%pVjPT-HuRqv ziB6{@1G%&Y6F?~0;VaSGh!|Z)M;Zg>y9)Q_R^l#L`K5`{eauTWg#U!^OpJ#-@l?4} zd>i{vt3^<`f^p7Fhlk8UaKfk7f9#ibnibjT^)rIdhy2#FgN>d++a9V-^?DYuZ}K6x z4uC82z!2Fj^#V_f#&7tJ5e7%{z?-^W|P<=0tdi zmFY%9>~y#=SH)Fn20P3o@@KTM$BZ!knh%Yh++_L<4{DyhfSVyz(I=m_pK_V<3*Gx& zu+gb#nS5~?8fNdH_9U39<%cUp0PYR5blLFs?}M1#bFpXo!Mph-`3ZYZCmQ<(^!3}} znv^om@%_!j8xN!l-u(!BHT!{s++;W>WM)@;$uW^Tb{XLkhDjnkt_tjyI&c$o2p&(f zq%L5QgW$@{gqybsf0DE8L_dQ=rIjlXqr;e&j6{A+@s{IuPkG4=$q z=q0N<{GNqy#NHXrjTS~YF_wu7NTZ9t6K4SgXPQrDyU+_D+|{HHKCS z?(}GS(Rgl-)BsnFW1a}6hbV8h2d^y$_bn%}VSKjX!qyXZy1hq#O|C6@BtEmRYzt~^O~jp5+;AV$ZsPYZWGXTI0)!_P&G zw&c#_Jm#h6&ace$gOw}XTo0i^NR6++Pj%w7g4$M5RHt%KSt6HIEaz12>+EAsaz}cI zj=ns#Y705DIXTqd@l(j>P|?#@fqB0M&0r#qq8-?J&PBVsiuZ4bXri5%%`_zu&-1tk zQxM+$YjCC$bfQ~8oxE3=Ml&_l+-oMvC4Q0e@RJf_V}ToAZW&XXH2>uKe&L*$jK32wlNU zdeMV0Z1?ap0p4g9{Kc2?Z}>%@T*sPi&VwHnZ+P^|yuZ=((+!yYzM~bqqovSJYB{vW zT4hZ^bJ$UTt6kLlvVY5hKlCT~({If?@b0hJ8JJ+pvkR<1t;{6;X1~-=Yz+r^H@xO= z>?eGjjfl}+QYm!x^_)}7LGLV@xJnH%j}Qp z!pGZ!4%7wr{y%o0OW;;4rOJ0?zm!DB){kg@!A0c`LQX1N0$a9oTwL76GupsCb;0gS+n2Q|l>>xp4aY=_8&R$>x4$-d%7iciZ!Mzq(VaGqSbVOD|d!9C#jF zrdw#y1o%#Q*mD$v@l;USCOP0bU!eyWj3b2Z2oeY4jBx>9JwH4GTeDeP$}ZrgwbH6< zT{G{HtHaD2K{f1D1$OD zwUyt}tOoX9_DhdF6NDqe80O#>q66LeP;s~v$9@U0iWtp;j-a@+6Z_phQZx2VL2#eu z;JdON|A%<|06pyOD=;syop&CUUpwMwBmS!xt_K4&YriOa12VskY2y*r^z&Z#_6PRS#= z?f61o%RTxZ{9Y>1Va*m-^Ikn+I%*5*q=UMALS^Pev)ln*+95|tcJf2f+0CbC9Y>s& zqc^<|52_hDl6bsd1BI$EMxU~wk3ppyj>0Y+?&xxuc%zuixE0|-Mg7+PY@cE0Fqes z)u6=dcd-}Rio9qLj^YVi5iiRHj+Me)e1npx)H(1TE6wNaK^GBa9)e9b7yis_^MrAo z{bwoeeV?=v&6YSqJh5xyGjS2zDKqbNH561?xuSX-U#BLponx#e)=%>lu~vrt+9Knu zZs-;CncziiCrb~8bqsxqhEK#fz|)~pC_wS4D$YlPP0ATxVI^f!*28=IkpaarDe?VrexZ{HWzSy}&xi|Pqa*c_ z>|9U=G3T4dvQasrKA1=uZ%tjTajubNq4yz~JNKEYj}iuz>z657JCT7t&abFC6_ z+8F)8XnYCIgD+RsoyHyRSwt`o&Nkb^I;~^xvMa(h%p}|tUI{1R0*?}XdG`j0gQVT! zekoqOhX(ztlm@T7B2p@6Rk+*j;Fb)<*J3^x)K0vft`Vb&Qen9uoTm}aeKJZ>rLDYO z`5?Db7b`i?d%ShsS0lKYSionkYdkk-r}(UMHTCHVheTKFao=+bdOEl3qB2{Zrj%5B zaObnJ@`*kF2c?mctW;M1D(RI+%2nq19&$G2KD}r$deKSJ19E*bH7%#O$uR{^vjh|G zHuoZ*(2-@tiFrKN>EDqh0;u(KcxKDRdg1_XNv1?!H-}8C!$2D-6o-wMNGE!YxI9UG z9t0PSq$?c^HkyM!wy|?gM>jeQ2IX0pB>BKMBe=Ctj#{nhujmhNvzOGg0Cw*YMhtyo zE-;~~@I3CrJC?w0(wIlhL~7+>qbj$E5{y6pu+e<*r7puy8^?~RI@%In{aCVz2j^!z zwN374q|rYm7o*O1)&GNUzYg49W!@dFZ$)!bhud;V=3?_ae2*yRxe)M&W?&N{$XgUO z#a|r6ChfX-11`4@t|Vot?XBsH+JT8SL0|8^&2)=-sR!Rlyu-tM*&LnBB)tE(vCTXM zXY`%5kq9kdO*9{vY5D!X!MpJnzO;?u1)PE}+K)Q#v1)o&*egIj&ftO-%g+pM*cCy~ zv>n}SCVLppeJ6=gg~;v#_x`y4hZvlNzh4osx?fsX?V;9^Iv>Q$xB~ywPuf;}Am6Kx z@rpn8a$|9YmB71T<0X+%Xf0$T^CUX9J9db9*-Majq`l$^=@Gm7B=IMoQ^cPpGaSuI z&Ng_}48|j94tu7p(rfgg>8QJv>Y?lObw5#KnVIU+ ze@@|6-4vfuc;6Po6YsoQz}*(_k#F$r7Ab?&&Po=wwDJ+3(icj8qI48}>p|2dZz?{wr7ukQ-<+e=%Tj1^dv7T;pBVG?N%uC+N73g_~S93qm`vBM6t}rM4OfE~E?+#}= zoI3wf&!;yv*69~u2oC~t%8h$;5`I2cxK+EEcd9=zmYp|s5A#o95R5tSWADPr^Od?X zCrt#yUrLOwfr~$0N(F*{5LBw3*cbimZ8mLb9Ub{DmU1EODK0Ge!HgEcOUTJh#fQ{_ zyS#50_ZnTT7Uo0vqW$gB);G3Lfy_qHC=ss_nTO#!O<_l$1MlW=ShhZPWwvrN;Edkq zrb8h%?@Ni%)Nq^kXcgc#NbGfgX%)3(_VWed;SAS5@)?8mv3Nrl<@3o@t!2S90xNo&Or?ifVVkDg`E^jIp6hed5J`E=z*?+CoBLZxYVQtw7@ z@Z9-D66N&HvT_@0{YK|$IgMOSS;1YqGD@f#uXMogE|*(|+dSA+3+!pA&n8!p&lp!K zpFG?NIf1u*6ScMLJsiB{?BTm89;K%8Kq;#{vijz~*Fe|+x=BJ}uO2ZxH5$L3E z{PVyaj346)@fDFcknK`ohep@`T*%G5)Sl^Y9az+7M=tK34Z?+VITe0}s5xrD7rpAp z56-`bJJR)pvh0@Lupc>054sPA(-C^A(|8eXf*H{dhmCLef0ND0QL;INL1H`>S|a$=t3jLVPxmw!mMD;;(1Y z!_~sG?HPKt&f+wp`Z{Ppb~G}bK-;3gFn)6jG?2N-LuV7mKJqquOvTD-4z?!17xl45 z!ztC-#COL>JPQ5&A)E)+GBSKYh6ZW@ee5sh#BTIKPx;Ja@og)v z_tQLDedeaxj66Z`WFqkvc2nmUqpxdXbf<@{#Fesq>{2tL)JgUX22%?n7v*EdJ1usj zK5WDD;Sv674r#xX6-=!>IB8QZq6NY&nZ&HJ3_rjF;G=h?OYE3_;Q^c(pOTJXqr2t8 zav|jaH&kCT_6q1D7jeXUDs^EpPP%Hsd?-xf6|c_}r$zW9*0SN30dmag^cxKTVFy zZRBBg4?>%^1}@tUVstApI+Z*cKpxeN#{Ybd>KkK-?-We1+u@V6!)Gt6_E-Cq{2t!O zM{d<=ny;3DKD9cSs8eRnk)CU3&*{aN z5u=5?%?6N4JBC9+V2OYf{)boyEVaCwjxz_%t_QBOD>zU~2q}t}u(I zH%yW^I-BZfJH8R4r|DH5(X;qjP0VT5E^yI0Rwz1p!4rh1(I zgT}5UuKD}f8fUZu%|YM+_xXL-CPuFiqkX_9@~~$z$e)Q?4=trWi5t@wv<>vC`Hb`W z6{f3DGnmge+3H{~W+vO|$xW~Pk$GtrD54u}dT+GK+nMX1p;xwPyy~!Q}FWs z+?Je-$A2Vw^q92Q886*&+ETK!B=_xxv8%uCyeQX^1C$%`4`rybPfdqE_%5{)cRla9 zr*LO}rK_>eVpk@gMy|d1ie_<7!-qMOdQ&~Z9)5)KMyaptQOYS1N-E+JNXQ?)XHiSMCmbTz^9-rnx!zb4e`ba>U^A;!8}Pn zww!v`nmJ!VtG3m+i%xD3n1BZ#lMV3lnxT*MV-NU=Iq4-e|1&r7eBqhY)Y|J4;Njh3 zw^SVdN;F)x@pj<-pOe8kEN`mW&+!xi)Kdi z9eJ&=H303>D>J(tOb_hjM&|-}_lb6drzBlc6}tD7ye%g{R;z*CM>EsgW)k|6W^hiA z;1yWV7^@$Gv)GPWpOu*@QR}5?+5j+(m1r2=aMPwc*uA0uHLie#97aEQ!3wh<;yv~e zf4mncBKP5u(4G4Rk6~U^_?Jg-6Qh5{o$#KnfvF`()u{CyrPB1GovHP+;FfHIS8@x! z^ABfUbaw-onJ(jv+khR@9d3Y6fa{rAUFX`Xwgm%yN3Ad8Go3!PFM1Jw?tPxZSEnWW z`H$@4!<6jYzl&1}C{apAWrdPf*{=91hm^l^EH`u3C?NJqX89iYYa#g$o_&p_DbiMU z@2SWHOJFqDaJ)fBe~Mo8x=@{)^J9tI%iv2A%;u8d_hrO(%z`=4-JfuDgpK!JI0Wy$ zHf+)Nbfd@FE=99h+D*MW$c3=Y?5l^N#_@VMj^b&YfIa-1*(V>4Si#15=1y;nmd3*= zKXFF ze_zW@nQ`cpJHXP;&ZoY}^}bH*(k_!p^TWFvz$~#E{Lt$WA1mcWDe{Z_vl$=K(%>A? z(B&NTNv(tl!eaJn&!`(k@nBgC&Q{dgYkmf4dk%6WGAp%Z#*c%k9DqOL4fN5KJYGyT z9a*jx-(F47ouYryr+`^hFiM#&6ETkY+)9OdDKk$aKa8KW^k;adIL70_`G$Q=Ewtx@(1{0}7~MpTa^Qp1mKcrZhWlH5V^!ia zt+~tm$v*V5Q3cHEwUN)5hnBercb4z#3GA)sYEAGh%Z4|UswaTgKTA%DuBo7&n;7j1 z7PC`3hDP7by_})wOFx5J&EyVjSvbRgtY=m%jJ4U|xwVB5;ge9Bck>l^TR&p-9x+;+ zer*7}ycOiny=d!qGCwWDL#UlJh5MALz>GtvHSt0whd;aEK`;~!*h|4M?pU)yM)Se3 z|3Mb~0fz6-edO`*nZJRlkHO9PH$9kV9k9dFLmF_wb(g!?(O1+N_#ZF4SWw zsSydD|AbwjzMaT8FCC${$9tGU8c-ub==Y+?p-1Rpp2Fcaq_%KNaH(dVALd*Kr{n~4 z{WEI4>ip}hO|4((43Ymjf5_wH1xh;h>j#x=fV3x0@Y=eWcL`kKrR1_szNkXsm1b*K}V!n}_QhAKmetmrLcEBxj zf`$b#mA*h#HkexsCBdBhsPp-l?OTE5ujKDPfJ@@XTUUhm%uPQ1inqaP+{TMKJTMbN z(SYWs8-3$>z;@|4$i4Sw$ZYC-ADCs?(ehlj&w@l3w9m6^EC!annjNU0S&a?k8NDMu zV&%Z_OQA<hQd+bLR_B0t?VospbgwI7zPHOA8(}l@S;bchtJ8q zuvqYb32;u!>D8!r7Cq?CWSu&%=qZ_VYZ9Xqh~Zo8uZwf5eHA%|3wiKXSHQ(<&b>}w zTV$*L(GF+gYbHc+^}9VWYN2wShz{npxB$<}OUxC&$u%nds6r0?h$qr^ZdNq|mAV6R zTn!X?DQ+e&IMr4Ff4p(Ll~3@C>O!5Ct!Z#cYO;+iY38v0Gbd2{lZl;i`0D(I2iS&h zXc2jI9f)WcJ!t?e+i$pDj<7#iZ`gshguA!H6hKEiFy)=seb_OrML*Dvy+vU-hB=s< zO2TCvz<%zyUQMq?5A*;w*%B1D13;}B;*V06tf4SBTo=0WoYTQ=3kRif?yf1Y$G;{N`59GR*W#;GCbz!Ua4-26F{=8salOX(cC`CC^ZZb?Ierd@)fo781K^63RkkuCtx!@Z8x$9F z({K5Za*sRo%jND$HTkQ2hMOg2oQvVKoRfZ_v+Y2Ryo-8iup*vRX;~15`t5Ae%?5|+kUj?^6Mlb5+l59o4G=*JD zKF?9ARz19n526>#jpx=9ddxI%?RFBQL3oce;O18o{KSSBOZ5H5BVB_-(v%x8i{OxW zG5g2xXlbLTcIyrxv#c1X!>`@DL7 ztroW%22%q!=zrm(cF?P!IoZm7urT@g3KtW`q13F3Qmyp_N$f%Cez~KR-x_U(S}#n+?q$v5j&l+{Pzz#m3b8qdeslnS&3QpV&Tt#29y9#` z-l6Q)RC6->+P6k!l&f3dk`$$ypC^aT!q=+1=A-xjhdBiix2Nz4sLyTjSKL_KPBs`% zx6#Mmf|h;6UDBWDcxs~{m7%lBea5tgeS8*M5 zi>{{b7;f1FsM%canEk_)jA~Qml9Ee_qz7G&$6h2kbg%NB9D0&EKSi#pkeHhQ*iG|Z-ITW!N@mY zG4oPE#~0xYI_17FN&JOBp5LDP{NbJLFEKgo1`Q8k1DXrpoK?6rCt0W9xR_gDH*1E2h4ycTbB2P1+xzY!Xd zBruqT##Xq|mC%D;(Zci*)H+L+VU*)c19(Jaa_0jm0CXj&# zF~6h)7d-*LWfH!%mD!Oec?zKAeZ}?m72w+ic^lWVuaKFG8sR586YOb|l$JX0;Cs8n zbDhQimys;H7$2x#LPJLYd1@(G#%udM(~dtI%pqjUhj5EW&`&lnomNw`G1`Ou_~sR} zr{ImJ;LAMI?#i#2;mJtt$qmmoi5Y6U9m9U96!X$L@F~gag=eEw~O7!Hjc(&3!T+u{GFX-Ga0I)b7WVse~WJD`7I5Fn|0y zm%|_WLYG$*Zgv;&iD~pRTbTo|vJd@2oMv#=hF8*)TpGe%pS98w^mqHXL-pQS9egwb zjiwhHjgns|717JxQU-8i!OtD1F2!T)2Dj?sh|gK>)2feq0N&va^_99A@6Z;?7bOF; z(iiSCKas~Px8ym>Wn%LXH=X9mfl2_mIRUS;KF%-B2kf~}E|Ke3imAm<%u79(m?Tv6 zFNHMhLCe5x?#~;y7X;>uLxyWolzy}{tP)YY$iB26N>K@nY9$)bxa?no2kH9Hg!c_rWHE4BtY( zRN8jg+sV=OtvhBKuuu`7oTAnsZg3yO_cOQE(cWrZ=UXX_2ktPmQ!D95!>Bod=#M2y~)j-X}w>THgVX%}}I3gMG?M0Toel*{-x%;Hu}LH9j% z8T{rmXy?6nQx`lN-?^IOefJ)(k$Fm4wKDjULs^KQNidkzaOHwLhWt5Q*(?uLCZc~X zE`J2m3X~ft5I&om{^J{9)k2-gS&xk*2Mn=W)Oz36_Pb|m}H>98Q{!iJ2e8){Fbk4Dd9 zn(yh$dU7-Cmyy<3WgONA(t~#XH^(f}HyIc7_vFV)@SLWbXXrys<0G^1?|;2qMe_)= z(-`v{xM?rrBDX<%!1Gn{CfSYtcqDg{>vPkg%)c1T3un#ib21jZ=?ok-Uq}i;dK=z} zBSsy1-Fsj%W6bU-FEa5vyJ6q67qWM#40G$fP=hY!74PK`_7%@y*;JJ7ilfM#>!l3L zOPQptaPDWoWvfab{}>KV8?ig@@oB!fG(sKx#7BA#+dJ4V{bZxo$ZE#Cli8Zgo+;3* zOP>?T{}%0f)ag z!8@uM!TLS&PFW*wW9k4yZQ{S1MZZraQ6qi9lbX`tEh!t zH;^L6L*5s@?`1Yy_1Tx-;o^G;9-Kw(d?1;B zxy5sikClvW!UbCAh9bl}dH_8Q$aZ>*PHztaAavHnP@!ac) z)}}G%ztn@6L3KFId)d*4!jl;fPiCxL5`Qhr)0u5x5!6`^$T~f_S$mEc^J|!=1ah-4{e?f3fci&NSxW{m#E(aWvU1;h$!COwj4F5tNr<^4wkIB82eemyg zz>!`ccLj6GrlgRM(MJ@KGdstjw~Yn!`++M?HG0uVw(f=T%=scnTu;p8FmYI^&D;>i zw)2g{MHbD*#FPQ|zi03)=E2^}2flxp?yap*o|_EbPV^!b{s?(=H+@w&+s{!b?24d? zJj{e!6m`frZVz5D&%;j(VCH$nj%gV_Zlme1hOzfqgMacJzTZ4%b7Q!<#qiEYKZ#4H z)zkE~Ix!R1gW>6c>%5EoP(3h#dwL^0%)HoWH2D1p>Uw+bYBWJ3*%l9p!FYEpVK;vc zF0;WLQ5_!MLhyn=I42AN#}TYca5`r33_IFcd6%x@mo|>6Hx*s@Qq&=)V=1%bcUXuu zx#<(kj%figx`G&;K<#gZ2Z6yGyBG}4DZ2Ug`Uug&ar{`)GbN7T+UzH52N9B)+wwcj z^wvSij0ff^bGx;j zUVDe#2~}ARVJe?4fZypCG=#%>p4ZufrkAFR0pQ~Us0)k0(xSmgFN5@aVNc-#J1;@4 z_i9E4a-V6j^D!}+$C*YRjYiYUZ5|@;1lt@0mn6TdpnBaEp*G?k?IJXFE8RcT9(Xx< z@N69BN>bj!UG6}gPauab0jKxIW=mx!`2Tjfn-b2?bh(z&P)_D1?lO5Ao+y9uN$Dod z=05p35T(@M&tpKJ)4+y!M2y}S{2c;Y`r2$p!*Tb04N{SvEmL9c)TR`#bEkGJyC*k2 z>ss*YT5PA2cs6lFXbiP}6;V17*L&}c;`D5oE^ueFk)6W64u7#a+Oh-G@2X~B;{h1u zDtafcm)H#E`Q2zkzf=Efn?soAFB|vGtfqv=W@dP%DXbu7;u>gnlZ;MqPCek$QS`2L zjE?M>euB+!1fw5>Z)q!dBdy_742I7ij;8Lh_6eO-K4Ul<{Y&~WyhZ)dXlyX+n`M|= zUZR~?f**zVR+K|1jblS19>D9_!jxu9v7LFzK^<%gzC9X@ZV5k2sq>@Zg4dSD;-BYB zpET3)((xTmdqZJ5cNUK^@z}&yb^8&WWH8r5%32%DEciZ@vqH=<)^51)8Nlx6a4R7l z@5XeyH=4RRd{3d&`Mw|mxjcKB=^MadJZc@KZ}sQb&NZ*1IVf)Q2RHkv7erHYmHBWD zIdq;@lh4@`K4UbvS{i1~aHA#td|LY7-{x)WxwXT7g5SzzPj%j*w?aSar7YfaOy>Q% zPX)~;O#^$1;_l)pxKH=ND}ITW*j2n`W>THC;Nu6v&6|uL{ucVtcUt;7r~A~@F1(;Do%`sqX&JWj>Fr2B6pT5gWKP6l~(JppFajiw5Xa+xj=6)g1p&6 zi6ADIb8l>k+)SAvH&uGe`ILO}E4-un$*r9a!Md_Ji%4D2H>^M-mH_anfqv0SE zS1EfvSrC^UzJoDv8{Qh}jULpTAG$xj54YfWZJ=I65vvFIyvg)4ZRu6x@n@Z4jN~1x zj_x*votf=PS}L3A=>sEHp)SsVck#ioOe_KJ8^k;al8+bVkbg7N3-YK=9!-aLRVj2$ z0ql6ZTzoEfz{~UMnI4lzi<0M}WYbxe+qKW&)U84b8o(X8m#!^n?c&uCbf5jw>bdqx^S>&toA#Oobb?)cC zXVV*(LEkV&jAx6~pLr=0c`*?Wd!0?7*CQ_oj^3_+Grj3Z1LBksrr{?xFYC#!Rp|?^ z!cFKYG{leOD{tv3X8BFzf;DuZYw&)Vh*ME>?$v&==c8y$Z(p^-@S<}t(}yq%`QW|0 z7w+9mVl#vsx&mG3Rc4^f)bQTa`F&vZU%(SnTYbqvL&ym|h|vPf^w06n8E-si_Mb-W zE?`vFpEE10*CWt*j$m%;4~KM!wv0Nsk6G!dF6*h_Q8h4D=!@wi-s39O4c^pCdbR0z z^A^W-DuHe^lD${}KDh7b!iTZG z&}(?M)Wf}HJBW@OUUU!8w$n`H#kn1F0DtOk%sb_*C1wd?w7a#4Ui2}(V|A_Z_>R59 z^Q?+z2i{|U(1PaUyUPR)@);~@5$|;dc+JzS1@!O9_~vxS|M4Ck7%l1Bzv^l5y12%> zxDDUi&Ga}|>A4j>Ssz2KNYX81yRi+dYY4q;P2QGto;qkl3JYO^!E@aX7q~LHW&^$U z4>T2p=&M_Rj}GH=h4TJwr&e5HX8Isiq91KVj1H#e&PC6(Pl|B9gFjjZ-_e!qDKp9q z@V-x08YnyQY3j;-h7Yct#OPCX5OLa`yR@RaGdJfGm1MZ0L)B93mfq68?vWc3n=tw0 zg33(19cIaul;O-ujquZV$b0ZOE5g0pQ0Fv$A1_58DS*lKC>MuXo_h_%cQRq)?=N1cl%m&{^rm<)$Gl->Oy zX88p0rri89!OZ`M!R>P!E_@zBUgoL+A&wV&}N(gl?dXUb5c*HaHluX5zOZ8 z0lKa1(h;8FEBaAyoWA;}3n`CA`74!WmbeYv*o)9jMJ5rtCBOX2hmZYq5^=zTL> z0Sj|0tORvF&{}K8Sf9{Fce1A0kFC$_mtZr)Iraqy$xZj3%^OW@yF!?_H0v)h7G%Zp zx!v5N9>%^S9xhA}xRZ*j!xi+PG4wTiiP5L@I=R6&mgxZC&nN7Xe%8ue9G5S`jjP|Yteh`D` zM?>*=Jc3r_hxE}I;A|-Gh1*<}ndcVX-vgD4c!Q5{4O4%(PO8n_Z`4lI`RefS;$8K) z`}GE`=s2a8nu|LBm^psCTvl1e-T6hbKmH@7xaU+x8A}drApasa&qpJbLROuf;ao*Z z*KvR=&7{5uL^lAQXlk6A3^3kwI1)A>PtN12-7RK%QS@U5EPxkWTJaWl2*>bDd>nt- zSWMzNn7{CixAX*fQzS9EoEV+JWZxUd%tGt~pTI8bPiOT7%~>bw9f)!TqBNYjB`1OL>$^!N3+W8pyqdd=KJH#-sBw*}ltHyYQ2LV5T?PspTg(AgbEqxAfvu!L;I>=nFn@w0wWqsG5>h*k2|kYV?CHM= zJ*nm!+0%dF!mxLu_oDZ{cskueyA+JV&f$1~gGVo%VpO(E*V!uVCQ7#vom=7Kd2y$a z%%}O_k{q!6a8Kw3-tryMDqmyc+}WIE{H3=#PK<75ml*?|@&dkDcC#6~_#N==E!xvjbl?}hLmuU44!yVno46%W}^f0;QCNqSk zr-X~z8jjOyeI4`JH$2B$f{R|m$G8jr6CUfnwbx!}_ri(F58l>(I`P`z+lRP~odsQX zPoCj=u`s&x&eWX#(rd8~?{#x2QcNwi5>M09H9`Y=7G`2zM-{yPS5ixoY|HLVeSL*G zWCk0|>fBH&iQc$68rbpV?z>hVtD3#q+6re+rlvQc7ac|p9f5Oj8`Mv!z@c`s1Fb+W zu#J8)6W_sjYR6|7qkX6aNqP%C3g3Z2`gOc7Ptc3r)+WMdzNmMj?|I1Wvk~|X6oDV0 zfP8(hBJ7uZzVrB2MRBpVBQg4$s_E7EoCZl0qz-WK$BE78T?Ud%=g^aG;&Wc4uX#h9 zs?I{hXnm;(d;8(eD0ZRm;Epzg(|OYQS#HX0?gY6mdgWw%!56!FbBig8IcWz!bJb-0 z?L%E}xnVP18L8$_zH#Sv8oT|9U zW(dw2xb}Ww(;19UPCn{U5S`zlZ4D4#Kg64gGSMPJ>|hrejaP4g}d@p96KOgJcVrK59Ym;er^V}xdoV&!t4-@&ueXB^gjE( zVbt*~@SEec^Tg#*Fw&FsX!po1fANsXY2-%_(jUx#&J=&x40z9vCnqJb#oj)g8rhKOed5S3 zcH#}cOm|dBXexLy;m^#_-I#@5S@Vcdm0G{Ytj#;t-CAz0wH}$cIZ=O)v0s97=ZPkM zH1_lb=-!L|n=n)0)w}^ew8C6#T)_@hMyuSP{{5v<81DTRdd>!D>i^PnKLo?Lf{(=q zdhvqXSDm4EFr4@bZS>xMFl*w7qOzrWz!k~WY1Mi{7E{@Ff>C0T_y|Aod$~-69;DVEVwblEw0IS)`(7Y@ zE_R?ZQCfZ^Csed@kWZrEaTGJVGow0;-Q>^R#OWokx0YFg_n&Pjn#nh233%##$)StP zD&UEQtnubwvk92hU;J|-4b?11FMAn1Niel9z5a%oDUP~#l6rrYKJ*>W59uN^e@*_G z3HmbQCi8q={<~ftPzEy__}4Df8(q17;L99+lKj_Cn1g<+0^QAR6ihAQaqk1Ww{Z%t z2>-jC^hpe)7i}(`gwH%pd_@kL2p>F!Se?#iv+zVnB@`2ekPW^5cukqZ?!&#GVi{&f z{#(t+p=0=SEWKzZyQ?*Wop1vD`l|5kN8%wK$~JBqERxpDP7-dpDzDy-KSFO%d(PDeuTbsn%vK6J3r$y)f%l>EVq(# zgL$rHlT?uiHH5QZXUB-qCqfaFA_MsD_b@NL0ZY@tD!$_;a{@GfApegKeZgApgVkY< z{fiF$9N)q=u+e4U_p_<_{fW_PRIVSkW{28+VL)D|d(TAm8D!2duN%4Xzj?%reSjIj z`}2@}Q(Cj3(b3!tPv^JsfqpS3dzq?m_{v+W&D_=`F16GG$Nt70kwwN&p2ZU5l->}o zscfXf=ioJY^aOs-C#dn)wa@xDErpRA?R*C~Rgrq6@e!U%Juulr_$*byIqtD}jq4s` ziIW0s8N4?VCkXrSd+3Tf(lXd3P%Gvm0d?`vT!me$Q+p9vOSy`^P1_s*VvMG>%5_$sab~3t}5JSNne7d4rg}o zwTyba-dV2FAZ&#=od!G7{ILbIEh-|GRox60g-SOdrMCF-j* z(gfbY2=0LI1Fwj~ANRSq4IbQCFrRniQHQf4wZ0`jkJGsgeoQ(HFE5Kc8NP=i7YEyX zgvMhIo_EE_ncH1KYLaUT{E_}(Q02J$`2;`vDfo(Q}S%$L7nzdbxTij#V3FpOF32;*Ve z_)AB@w;za|;5fCT7FL#4z;kNB{mH-N+DTwkHXUql=B0Z$%a_GnHJX2CUN&lHVSJ8d zM(lxRsjsySU)sCoCpdO3>VvT%xu%B^>sl(J~G3NMy2-!hwDIY z;a%dYa&5ex5A#kpCq{phGf(oFBfvv9!a+Erm(&Gr1NNXlzi))#@mrGb>!2Ra1s|P*=I*9+!C3&lT%>a=oV@z%*uN`vmG$anrLwEAy3;j4{m!lVU+k4maf7y# z>w*%m1}Oomq?}a_%N>;vSz_1uh8_Ps;`5E%SpLILBAUIIauRrJ6nwuD&aLbUextQ5 zD~*Ax^NBn;@_#(t3Al{~_criz_I~z0M~RYTNMtMx8YHArDwX+dLL?zVDN-b}%o+?) zndd2l%!&+|rzjDT3>gw7oIRZHx6k)o-{m_0-v9fm?ES1~4flPodr=saz1` zNa0Q$v3ljWx-KxEme!kfNz|pI_*qV96d$ct-yhq^Gjy>SUFWZV%Zn9YE8X1L*n(Ti zOuP*D{*)$Zj949^7j14=t(abPGj0AWX8N>PTXRt9SdFX;^gr9O_ToFYTv<;~`3t=1 zKiEuRb^Zxjl}@;*uhq$zi{p*>d+#!Jy$q*Kv*-4;ocF5P?t0!T^UX_-Py@|RF9E$6 z!X@u8@0|Q*_y@zw`Q)s^hmH>w)x)2_wtW`b!e8eFZ|#n>!s!pEy^}T#dUY*trk?IH zM3O5_O!vW!cE{@`X2zQ*ro}&py8Xk){zZz??_B{amOa;wU2dx5hxJEKs68chrQ4J1 z;dHfW_t%-}?}PnMFr(i9j~h)-Sl;cQ-?M7c&lJh}GAo}w*b-S=Z8Tj=pV-NJdyXUN z$J9Di^t|yzeyZ{$9l+7-3Y7OdZBEvsL0D{F3e0;|_1Z1*5Cgn}^PAUKz((uxCRvu*D&q`| z^9grsre}sSDrbHbU6%25v{c65`qpWYhs^Gm-ETS&sT27z@+@sry~ufa^irfuWOwAW zyN;g(h2f$-XqvasvF1{*o`H4Fup3f>y6H!5uHV?hT5m!Paci!LU7COc{e#*m0*8sx z8t%f1_N3j*pS~|`qHT(YRr>R?#}7H(=wfj?$vgY8tkBdqUWzti9S_0h=-Yqf3|mV+ z*=i@LiJ3k#UY3UbPuh;7SqEa5v#t}f&&5B)E&WU@n$oGai`Pti5r0yRtRkO=aZKx7 zb$Ek*vY^?2rQ7oD>^ql>J#5ZRTsdH7+AW73z+wMwhR7Q$N>ln|R%6d}sGj!+z3BD! zpE|+|&eAk@r(wN?mi0$kmp;0|yKNC{Nz28#VFpFet^7lW;^}|p#d5VfYGrXs74R^n zU^J0%LwD1zvKNxVMepMUHG@}o5o~ZbZ|FJmQezu(r|D6L=xrLhJ5^gPXk~7ijh76P z&n4Q!MfckDyxVR_JDB}Pc0>C3d0D((OD#1AUVB$^KJ|Wa+fJSAz@D-H+6Z59GOJ|l z(Z-(Ee=A}F6U!R7Lz6QhZp&$K%C*2CW*n7kA&?Wuob-_I}B`?{z8%gu@ zYxsEZbntv+d2m>*?#qL$ygd1fJ2y>vi?7RUAU+#q{G54v#>ceGMKTA_IhBj%%GgU6 z`U!lgdE{KAw!X7QtvtpV|zB z-QOfLCOxHV$oEOF%yUc0s2C+vi0o#s6_9J?=8K0e;ORG5zQ>-Z$jr?u&iv#5){f|xz$ z(;V}5wv}bJ;OTD>qm9kIeQ7Hv^L>~q-;9GdeGoc@dzytit{WPvt`szF4uvOQp>A(! zM%)T#dr}tNop?(xdL{lp?`0h`-#h-D%M%HAxZA+)Pb5wx+a{~ZnH}|_gLUp*)cM-# z{>9`l-&i54(*fqKKjWw3&&QkEr~ftf5T1UAeEE)=@krLJtiodS=B#hBs$?Cfbgl?< z8i%7Vrx#uCVo7%!R8`#@NXPRn;r`cxlIv{RFmrJ6(0A#*%=BC7Vw3ziORA?2o9i2? z5$}l8k6@&W#OX$S+IjUp3VXVfKCh9TyJ5j^_CcTGrMx!yH&UO^&F^rh*PCFHsxiXK|`{brs+NNd#b)yi~Jm^68Saqs2;Sk+5T2LA@Sh5 z$Tv9pdTu)JrTc#(+*g0R&2zXhG+j6PxZRLE{Bkbyg1y=E#5xnrIMzrZ__@d$E(0iJjUB<4@KS%82%QOew{mE)8x^XaHoh($F8c{!NfOi zY1~UUX@dtB-_4H5o%~5M)TV1_dG5x)cY)ilfjJeSUwc`79D$Qr5P!wIQI(c0Y8U+* zG1`(YKWx7wrQdrk)+;M@Cp=dyYS#Vp$`$!D61#Mzq#XK)9-t-cbSOWwRc4KN?B!UU z_z!yBTK;)Q%`T&1+YM=pOF`XFW%o&&L5uhdFO~z83AOZU6QT3RIbCGh=`G1)rlh$d zceop!-b2)+f2CKaBiTe#Q$4*qeB&fX1F-OP@XKm zCi2@y`2;Q+O=e^d;vIQ{)~TF#x{4Srr58O&x&MK!k$(~w5-s%!o9)KjYfEoxY>Qr~ zxf$^)dtZC(D$S*lS(H^KYb_iqP)};b&Sq_hb%Ki&h+nXIIyLciq7`TI(v%Yi%uC%N z-+_&v_c^X?N$*Y-v>{Xl586mC^G>L|n|#l}(^`hVGBd3)*YANnoedpP?-O(-rTFF6 z;sG(-ynQ-&E@%#SN=9C_cXXa6uY(&R2coai-p$Lr-%e@SO!7jsFTITvy?X#tG)37Uh?Y$YF&N3Zt#3c!2+lVRqF&|0wj18Gy_ohKdG>F$tZ8{|F{x{rFeL6{VM?bOIG8T*`?0wCIWYXWxR^2O{yU-H>{bj5{gz%K)WKcG|I%(xZ{>a6 z0~vVGlsFrMc?V7CdZ=hmx9nb%Ki{TvnwB^ckI~aK=AO6No^nZu+#A_pDDwTVkcaSc zMexSEk_YiiO?2;v6VK@17sl7(Y^%nHndytcMwjK}(S7phI&;$Z>iqGn=JpMz`>cgy zXJcQgMYVb3UBlDl6dr3c&EG6Lc3o(>?&OWM-kwE8J~Tt{6B~WTe?rZ3YQx>IrzgV` zaTJR}ee|T$^rWlJO~0F4V&Mv6v^jhbKE4OPxN1R>0Zga zIb#al(UQ(>)q7~iY z{^tigcXJ25&1SpxqD5%Oo6wQ0l=~~HSI5)-f;;_5@042vred@YT>3kg!cNddx{i_l z3$Nd?So#!pe;7v76Eb?c&5*zN!fjOJzp))M749^`ck&iAy0QuPQ1V+$-~DvWgKQ<9 z;?ePVyjy%V9QlZ%XSS~nzAv3uirFts`S5g6=jYJ$|3d>*HFlF7 z{Z6!MXXD(qxqudh-KRF%x|&$Z*dbV<6Mw?IG@D;+DAZlAM$sI)0v|1E&!@EbEEVo$ zf3itv2QK47z5+!<_2i|U(5mY0P|fr$6tWT1+x?_#lPeO_;pZJ_NnY}vy{9K#KuL2| zvKh~uLy4bt=zQzc`2y67PpUhQ<3Ml3p>FhzJ)5k?^L}-rvh9Eg@fq~pWog0Z$8L;q zROhYo7M!V$IjO20!`fN@*%rAMPW(yi5xD3!n(%J=_!_P(mPr19#p=o{{VqFzYiYJ0 zGh0lg<@!7QbCq#7N6t&U9}0xKXfL=^M&x$=w=m7KeOQ8^mUXy9rU6R8niF4eh=6UInVK86Bcxl zo@a?XIuG_Vo-U#d4zv*DZ#-l)ug%-nx#6x6XQkus#HYkc@MHcbmX~j6l!rrcy=Y^e z%u``PS+VO9PuT_U9d8Nmep4@3SDh>Y%m2wO`2lM69eneD_4f_MOE;jcxE;P!L~Is_ zW#XH1i_da=pX>0???LOg3~mt1Iv%SPyAP)IDLqPVzH{SX+mFM3{xMNZ)Sc8wYmcSR zPlq@M)>hnZQcqfo^=?u8%c(jaj<5)v?s|OT-*$h#^S`&U1Dea8a8~;6iuW%R0n|BtlDC%kIdWSTo;E zBDOX@+YO!GiMwIb&7ff0&xb5su5uv-Z#ES6G)atp z6B?ZpqrZiI#M%F8uFoAjj5qH@-@FPodUH@ZG92!7W8`VOpl5j9edN|czRXk6cA0rI zM$+JQ&pa8e;=bqhjQY5xerXq!#=xA8;(zX<8)={y?VMOnS2oYg@g?0;W1c409oz3$T%=2r!3jy5qDLbf(<2B^y zKjJ^g>+hI(3&S0@oAz2!lKg9PtDVod4xV(qdnr$t-P_aO57dti*Ry@(dA>_)S)INi z4i_DRZ!3jWoJhwQ;adHk&8?qg!A2B_hdGLj;>^@0v5SUeZG0pTlwUdNR7-wl2Q)v8 zRsUoPs~;dnKNX+7axPX~;)V7l^u9PH_z3$Y3?O(kb*HmU<2CxZ*|HjaSl}}s%6dvq z`V0)Jxw~Lf?19Cz*2X@F)u3hg-FEays8@Y=7IT{l)|;1JRVDvU>t&|T;OW;?j837^ z_!-CapP8wU&z0&&>#G;-^xZ?~oaf>!e!%_yiLcKEd%DMM&JMgnz6(kP6(U~*-{#zB zm=%ets4#ku0@a_hDo}P(D&Bn5Un}6WkPT0uP%S%BDT*nf{iDjHaK}iyg6XeMv`J z*1Yrv$L5)|O^4O_^HifJOiqib(pzvI&xG$!gpAha_mG)(N+sEDJ0!IqvH?1}M%_wb zqp!)L>0DsCQ=%WGa(~doG%CK5r_0Ouk|K7JlX}Fcx#?DZ25<1VpU*oyJy99Q+?!v) zf_M)*9PJa|tMy~d;jh4*uGdK}p(SY)+Zjt_jilvk9BYqfdPr>EmQ~5^u1kgbT9@7uem?<^yHhPa2Oqr#-g~P&`Xt<<8H}wDu4$}V z`>i~BSglX+2E4~kQR`qk{r&wg_IbfJbINH5>Z`J*ND3&GcWp9`d`|a9S_A->f@c^{)xL|0``h z2J|H?eSx&g^mxCT=U4l+Tt7BlKRVF7^c+4gaEo<}{=azgTMScSzq)e$I!klZU(7ri zi^T86eO9A~f5#oIMR5D8@bk}#$4ko%R%44@V}tRYfOidiL+jq2cq*I%12l^IyX-d3Lq9)uhE3qZH zLO;lHLC-Qx{kYY{JJ@^sTY4j^gqb`a4q!NQ&ztP~#Bee{Q_v2kS-30Ij`r(3 z#<&HxZF~0brk;Cw|9+Uf4>Gz*FY!qtul?7b+yy%>W^yMAB;Vwj!)cVBsRCWo+x9|+ zi_c-U>)P1`EiVi2z%IRtL;XW%^a@UDziH`ZxYKcZr-6Lis>Hrj+uLNF!F!%^XCjwc z@fZwlRP15c$i~d?c=t}+Qe)wo2{HWdK59vvM;!jdNc#3z(uWpF+;6YX- z<1u$`rbn-J8@Zl(U&lU3q0GjpkaPFG2ZU^8hLa( z9C|6Peh~h&ZhV@V{(0K`Ont&?`27&Oq)q8bYKhTm@TVHF2YE)-g-3O;t3S~`&rkS) z!m-Qv&&TWmO}3X`K-|y5$Ub56KBE`?3}<_nO1PS;`5yDqC_U!k^me+SuROm$O!uMi zhxqL7e%_aJp26Q=&n;moN1@vG5Vle=KAhG%ZMM&zAHOsN=2?J0^)k*mgQ%4{iO*3! z`!0JS<>*5OyI*%M*`B8PfLZMpIkYbJ;0e3*w{R!fl3Xc5pMleD(-}RjkKKU#tx4nc zs~GJGpRm0}!`ulM+QzKZCF>^N!AtfQ7R6fPhySsMJwXrO%CuC)UC~0~|7iBT-2c|5 zJxyi#Bc$d57XdVg|y*I~?Bo(8( zX-U>%>lf$jiA+;n-E;<7i20(UOGYRmA9V^U!!+du_7n^Rurd zM(fI46>N=dxLb<=TzGWvR z;^VYm<6vxmrniL~&kxlK9nz0p<~f=vPGjQrkREkTD8WN-s(gDN_0W8%e+dZOPzYx{ zc|jI@GMPd1xxjV$!L%d2^`SEonTgYSoyT}R%;Xjx$sVZ3II9=E7w%L?j6S1J$m`c? z{L)i2qZ<+{5*2Zvllce~@yW-=evFlmb#^E6UVOyWX2E~6-W96@=wdf!b&Orh8}noD zZ!x{W4qoD4CZ6`LgyiRi=B0Y-y z|D3u09k}_&b_wUxB5n+y*N+x+ORQG7Iv<@;!G-XppheKvE@*x`@JspR)#bsw(ao9? z_U0eX+~h{+6j*6f`^kBEGk+u3wxe6V1GbbI86t1K8~K}u+2vr6zYcYaWB}a00gvXZ zBUcB*f-k~ZID>lpD87V0U($=dj$2AsySItX)wCqPW1Vj{)3@}#eI-T@=Iq(+g5%GU zV_xS`V={{RId}c~R+SeZ04{-f!6OZ6M2boD1#6Ohpy68t6!v{;*uQ+0tXQVyc zr(iJ2*xk7LBleF+i^n(33pIF{JuaWr5VOs)y2bjb^Na27op)`z$zHls`UH!&gc6%As4ec=#1(Gq=W0@C@C{mxa% zTlwIPr4RTwIfRa6j5z9}6Ma^1noTkKB|T{=e$G=U7)$#uCeg~?1262r#MV$JLNKfKJkBO0Z}S`uxL4ag?F<#d0P|APMA5)} zF-DzOhpRt>M+=8riP0XRs&?+4rQ7aeX8IT(Iv>xJ;>%Bli}2E^=Z4r=`unVKu1JSq zc;uhpPWO^F**|Vh7rG~7a-J;mohv(kI!ugBd5`#U(vr{^`dR}Y8EgzJPpa5H2d1={mG+b^s0+x%>T zJzdn3-De;2132in(B5O_hrev%ZP%R+rX#sK{ZGH|Q(C9TuuBp*l;*_2xs0yJ}YE~TOb;q*ERpm+wOhJ`^#JeUiL}9 zPA_L>?@Y6{2>X~-feR;z>UX~}& zdDy`Q9MhM8%t zT7T3|({=PDwds(i2YGml_YS7OMjz$Xa3~szwl^CcG&9{KKJS!66B%zt=Vg?QR>;^9 zSsv|e@AE;p{ne3?k#p`i9m91V4c@{j^~6*4hKauEpLb8>zTlT&y?@7(;U(b}a{E1@ zm*5YpVNwJS`L7R2}{@Tut~vjGi;upV4WjT*`Wg(83hZD>w)=;`Wf= zrt%q+!d|&(pN@1d+-WN<$$0EigY2~IKiy<|#U{k+#29-KrSa|G+8JvL8?B}vy%UE2 zsK2(2e;J#?Z|tD4ctX9n$n_fi%)^m-Y*J%qPu@v z-<+vu8Lo;%VQMb%>bf6+cl5&}t@8Yi*p~fUt-oNt{~4Az3wGa}z9AfXiOSmssGAIL zrER9}en92;MvPU0jGmzHnv^J&_?!-L8ovHWq8zNUd*WmJ(dVg69<`Own>XJWf7fK4 zdsj1kb)C_1m}xhAq+y!TUWsG+_lEI)bcA{AZ7qh4Hj8~PMn}Sd`)A#3CVT*%|1Jz} zvwpi8&B;b@aa-I}0ov#-?g(}^B@{I;&4kpH#Z2_ZO>9kXZO?8bY;=Q}exF^fOX@=& zyMwpFdTQW8o6*huUtP&wema*!2i$1Nv|C@>UGUkk(VOMHMexm9JjhPcHos%n?x&0~ z(d+1&a%T>W{+iL)UGGd9l2wuZ(YBF%wDn8%p&e0+8w+O9orXN8ex?NT|nZDVS zJ3|e81L{;5>a+ps)IP0_C!5FZkmI%}5Azz`D~}!!qiguy54Y1;J^L>lTsPXCAUQ5) zcF31_E54A{p_LeYjGt&lxwHf7vqoF1?hv6Sc>?O0(JG|{bp|@WTx6g*#KZd^=>ph6a z)?p5+Cer9RM<-q|mHbP0J(NbPI5*0vwzO}={JsMV-jrTnjE+_ZH|f>RnvO1u(@PNh zpK@@~WcrJ+`~RSGAJ{?Q6XA-=6kSeH-Q);&=x$5?4hw!0I$6TMDejK)wTZtIkC@TM zB_``sL)q`@MfWEMWtWgcpR)J$6a`~3mzaL!G}TuBej0<>Jkc7i`lo5BtywZ`Utv=0 z>KHYmesq%f9E$&)%mZ^LZmAH>!(jJSuI0PCEIynEOf}#8g=A6t5U>V}^?JTlm33~P zrkBAhwx-D&F9KG{qx(ZIc>mhbzjaVw2h)`dcfW5oZ;R#pRe!NBaw+r^C$L<2pXY;( zc0}&6uRK3UaqX|#J-))XzO$QOd)-gGlJQ0KpN!7D@E>)L_8i^wWS%20Mox+6)NIs9 z4z1(P*pqJLG&FOyvai>eSI#5ul3WbZ-B;{ucPS5!zDH=DUBC=_oo?pX{OPG3`rlnT zJ13jofNgpv2O}J1KV+-t^_z;nL){Car`Tu^R4iaPs^Vvyy<1L(hzvb23%jt`86AB}%bLscsAyI!p`zx!*&$Q*z22Qa$J(h9-iCy3H0@0FI6 zGn34`KVgc`o0+oVPv_;-pLivVGEdd?-5t}lw{Vl;H@EyAN&8SV5O8}Z8*y6LOMCyi z7%lGSTK~426DfburnIChU8*Q-qxn^PDWf1&)76`?R48xwvy{o+0R?HMS2�zt@MU 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 h_};reeeuKh-~8b>AD!R-r>QqDUw?A8qS!}c{{ + + + + + + + diff --git a/assets/index-060fb1c6.js b/assets/index-060fb1c6.js new file mode 100644 index 00000000..4a2f8f49 --- /dev/null +++ b/assets/index-060fb1c6.js @@ -0,0 +1,2 @@ +import{_ as n,a as q}from"./dynamic-import-helper-e113e409.js";(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))g(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const w of r.addedNodes)w.tagName==="LINK"&&w.rel==="modulepreload"&&g(w)}).observe(document,{childList:!0,subtree:!0});function m(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function g(e){if(e.ep)return;e.ep=!0;const r=m(e);fetch(e.href,r)}})();const u={lang:{},assets:{},components:{}};async function F(i){return(await q(Object.assign({"./config/preset/preset-0.ts":()=>n(()=>import("./preset-0-9cb6c92a.js"),[])}),`./config/preset/preset-${i}.ts`)).default}function S(i,p){if(i==="lang")u.lang[p]=!0;else if(i==="assets"){const m={...u.assets};m[p]=!0,u.assets={...m}}else if(i==="components"){const m={...u.components};m[p]=!0,u.components={...m}}return u}async function x(i){i===void 0&&(i=await F("0"));const p=(await n(()=>import("./components-11160596.js"),["assets/components-11160596.js","assets/dynamic-import-helper-e113e409.js"])).default,m=(await n(()=>import("./lib.assets-d64954a0.js"),[])).default,{importAssets:g,getAssets:e}=await n(()=>import("./lib.assets-d64954a0.js"),[]);let r;{const{initView:s,setView:a}=await n(()=>import("./lib.view-f4687c7b.js"),["assets/lib.view-f4687c7b.js","assets/index-35b52911.js","assets/index-e95da2f1.js","assets/index-b95677c8.js","assets/index-98afefcf.css","assets/index-e642236f.js"]),{mountSplash:o,definition:_,injected:E}=await n(()=>import("./index-4fff1452.js"),["assets/index-4fff1452.js","assets/index-b95677c8.js","assets/index-98afefcf.css","assets/index-096c861c.js","assets/index-d3e8bc84.css","assets/index-e95da2f1.js","assets/index-e642236f.js","assets/index-10a52919.css"]);await g(Object.entries(m).filter(([f])=>_.assets.includes(f)).map(([f,O])=>({identifier:f,manifest:O})),()=>{}),E.assets=e(_.assets),await s(),await o(),r=Date.now(),await a("main")}{const{updateSplash:s}=await n(()=>import("./index-4fff1452.js"),["assets/index-4fff1452.js","assets/index-b95677c8.js","assets/index-98afefcf.css","assets/index-096c861c.js","assets/index-d3e8bc84.css","assets/index-e95da2f1.js","assets/index-e642236f.js","assets/index-10a52919.css"]),a=await fetch("stats.json").then(t=>t.json()),o=t=>{{const c=(P=!0)=>Object.entries(t.assets).filter(([,l])=>P||l).map(([l])=>a.assets[m[l].path.split("assets/").slice(-1)[0]]).reduce((l,D)=>l+D,0),j=(P=!0)=>Object.entries(t.components).filter(([,l])=>P||l).map(([l])=>a.modules[l]).reduce((l,D)=>l+D,0),R=c(),b=c(!1),I=j(),z=j(!1),y=Object.keys(t.lang)[0],V=a.i18n[y],C=t.lang[y]?V:0,M=R+I+V,N=b+z+C;s(N/M*100)}},_=i.env.lang,E=i.components.map(({id:t})=>t),f=(()=>{try{return Object.entries(p).map(([t,{definition:{assets:c}}])=>c).reduce((t,c)=>[...new Set([...t,...c])])}catch{return[]}})();u.lang=Object.fromEntries([[_,!1]]),u.assets=Object.fromEntries(f.map(t=>[t,!1])),u.components=Object.fromEntries(E.map(t=>[t,!1]));const{importStrings:O}=await n(()=>import("./lib.i18n-3137bee4.js"),["assets/lib.i18n-3137bee4.js","assets/dynamic-import-helper-e113e409.js"]),{importComponent:A}=await n(()=>import("./lib.config-257eb5b5.js"),["assets/lib.config-257eb5b5.js","assets/index-4245e63e.js"]),{importAsset:d}=await n(()=>import("./lib.assets-d64954a0.js"),[]);await Promise.all([O(_).then(()=>o(S("lang",_))),...E.map(t=>new Promise(c=>{A(t,p[t].importFunc).then(()=>{o(S("components",t)),c()})})),...f.map(t=>new Promise(c=>{d(t,m[t]).then(()=>{o(S("assets",t)),c()})}))])}const{getComponent:w}=await n(()=>import("./lib.config-257eb5b5.js"),["assets/lib.config-257eb5b5.js","assets/index-4245e63e.js"]),T=i.components.map(({id:s})=>s),L=Object.fromEntries(T.map(s=>[s,w(s)])),h=T.map(s=>[s,p[s].definition]);{const{getStrings:s}=await n(()=>import("./lib.i18n-3137bee4.js"),["assets/lib.i18n-3137bee4.js","assets/dynamic-import-helper-e113e409.js"]);h.forEach(([a,{strings:o}])=>L[a].injected.i18n=Object.keys(o).length!==0?s(Object.keys(o)):void 0),h.forEach(([a,{assets:o}])=>L[a].injected.assets=o!==void 0?e(o):void 0),h.forEach(([a])=>{var o;return L[a].injected.flags=(o=i.components.find(({id:_})=>_===a))==null?void 0:o.flags})}let v;{const{mountComponents:s,setupComponents:a,registerElements:o,serializeComponentDependencies:_}=await n(()=>import("./lib.config-257eb5b5.js"),["assets/lib.config-257eb5b5.js","assets/index-4245e63e.js"]);v=_(h.map(([d,{dependencies:t}])=>[d,[...new Set([...t.optional,...t.required])]]).map(([d,t])=>({id:d,dependencies:t}))),o(v.map(d=>{var t;return{id:d,filter:(t=i.components.find(({id:c})=>c===d))==null?void 0:t.elements}})),await s(v),await a(v);const{unmountSplash:E}=await n(()=>import("./index-4fff1452.js"),["assets/index-4fff1452.js","assets/index-b95677c8.js","assets/index-98afefcf.css","assets/index-096c861c.js","assets/index-d3e8bc84.css","assets/index-e95da2f1.js","assets/index-e642236f.js","assets/index-10a52919.css"]),O=Date.now()-r,A=Math.max("1000"-O,0);setTimeout(()=>E(),A)}{const{loadServiceWorker:s}=await n(()=>import("./misc-ecacff45.js"),["assets/misc-ecacff45.js","assets/dynamic-import-helper-e113e409.js"]);s()}}(async function(){{await x();return}})(); +//# sourceMappingURL=index-060fb1c6.js.map diff --git a/assets/index-060fb1c6.js.gz b/assets/index-060fb1c6.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1d4194e7951685f5bd13005ca15e21481b4cad9b GIT binary patch literal 1953 zcmV;S2VVFeiwFP!000021MOH_ZyUK4e&1gqPYW+uQ)9`NWJ>~L7>NS}^(BbY^g$4` z6o(@*nOjJX6lHe)dk^QLo29fVitWq3NW2`LJJ0zzGE8D+vPpyKMnstX`1pEXG_maU_82)~?4^N7fH-EJgRv4ORngFo6)NS3M(j7% zqQ0g=t)4|7xQW$m5TIYJv=JPqd#uL4Vmw0v4C)P6=eru6 zp3cw`=h%%)El_P0$=1RKCoQ7WsZm0}Fvr8%?~M>_sa&sUmJdruHH0f8BW6mP)#)jy zzn;;p9ZUqM>r!WBhIvw%gjL6#GywJ_R_cnrxOfqXm5hfJ>`-dKx$izLoUafmIM zG>xz5Y5Ezm&;=H97NHF85wQ2=>>T0^T&urk%Qe~=AWUCH$o`g>3;}sf(CqVRkM}Q_ zy=jmm_o(Wv)J zmG z1sN-8>HD|HX+fzN)`h4F$-aL#qMGe?yVvUWdzFVP(~nV*djH=S#_=W&Bs``_Ag7fN zn_jQe?{-*g9qP^TtUPdArsRywL_HQc{dva2K)_`fmO;s6B+Vx&mIF`IulUt;&ua(w*FKYxC%!c=yVLGPzui8tCHh^DUHFH#ru}a3>WW_<*y>+1U-;a2 zxqiv9*SWa3?D=ItNCsslGS5lC^n4H#@UOKVQfe?EGP0Lec!RrR)|V_hzVEj?-HScb zUvB}|DM%*Li)aD+rD{V=Nw8e9h@g+?KE zeHj>NmT2UU!AFxS*W9YgYve=vhAgoJ ze>5D6!F8^giwGI|$`lI-LK9P%W>o>_6upOH4G!GP2vbLElNcnhVSoSo??Igj#R97+ zM^sKXeIrNSXt4wp<1oUC(2yezK%w#F?mhP4H(~i z8nnm*{c!f~>=SvU)3fhquZJ2voMekDVDo`MWf%jhlh4RRI@VnH)W$>sPJ)uceCM=&AJ);s$k_m>eL6)o|WAmpv ziZ~?cE#y`*GGn(C{ua>O7N@LWwFMf90e*1va-5fp{bP(hU>pMD7u+fsyTi$5aFHnh zqBgNv{=u>Nc;sShd$FPC-5<*Nj|H8EoY!QDG`9C-PPbQ+ksiC7YYq|2*2dO%LjV8n z#BlDygZYj@+d(5nGF_<@7e(lP#2_~+6jn&uDXuYg0};*4{DjihjYhkBcu>9tz$3dd zszP^2L{*RCllmcXBY@LkM)q{JV5$+<&+A=Ye!ym$qIfs15D2df?8F9k0#6o(F{M!& z1UIFeL0q1N!82KY7i+>dA`y^+ z5r-54HU7{%A1>$w&8rUN*$%X&izz|^%P*RZ8z(k>SwM=J5?@mZ{R!I77_XU`8dVNF zvd7m}q8Kd-Qm=}esp3{1C}F_>s>zXfaT_lV@$&ZL1--R$cWw()jZPOE9J;8RQ5tQ( zH~xHAtRd*r7JP3ia!Vg94h-2h {\n return (await import(`./config/preset/preset-${preset}.ts`)).default;\n}\n\nfunction _updateImportMap(item: 'lang', subitem: TI18nLang): TAppImportMap;\nfunction _updateImportMap(item: 'assets', subitem: string): TAppImportMap;\nfunction _updateImportMap(item: 'components', subitem: TComponentId): TAppImportMap;\nfunction _updateImportMap(item: keyof TAppImportMap, subitem?: string): TAppImportMap {\n if (item === 'lang') {\n _importMap.lang[subitem as TI18nLang] = true;\n } else if (item === 'assets') {\n const assets = { ..._importMap.assets };\n assets[subitem as string] = true;\n _importMap.assets = { ...assets };\n } else if (item === 'components') {\n const components = { ..._importMap.components };\n components[subitem as TComponentId] = true;\n _importMap.components = { ...components };\n }\n\n // if (import.meta.env.DEV) console.log(`${item}${subitem ? ` > ${subitem}` : ''}`);\n\n return _importMap;\n}\n\n// -------------------------------------------------------------------------------------------------\n\nasync function init(config?: IAppConfig) {\n if (config === undefined) {\n config = await _loadConfig(import.meta.env.VITE_CONFIG_PRESET);\n }\n\n const componentManifest = (await import('./components')).default;\n const assetManifest = (await import('@sugarlabs/mb4-assets')).default;\n\n const { importAssets, getAssets } = await import('@sugarlabs/mb4-assets');\n\n let splashTimeStart: number;\n\n /*\n * Initialize the application view and mount the spalsh screen.\n */\n\n {\n const { initView, setView } = await import('@sugarlabs/mb4-view');\n const { mountSplash, definition, injected } = await import('./splash');\n\n await importAssets(\n Object.entries(assetManifest)\n .filter(([identifier]) => (definition.assets as string[]).includes(identifier))\n .map(([identifier, manifest]) => ({ identifier, manifest })),\n () => undefined,\n );\n\n // @ts-ignore\n injected.assets = getAssets(definition.assets);\n\n // Initialize view toolkit\n await initView();\n await mountSplash();\n splashTimeStart = Date.now();\n await setView('main');\n }\n\n /*\n * Dynamically import components, strings, and assets asynchronously.\n */\n\n {\n const { updateSplash } = await import('./splash');\n\n const stats = import.meta.env.PROD\n ? await fetch('stats.json').then((res) => res.json())\n : undefined;\n\n const updateSplashData = (data: TAppImportMap) => {\n if (import.meta.env.DEV) {\n const total =\n 1 + Object.keys(data.assets).length + Object.keys(data.components).length;\n const items =\n (data.lang !== undefined ? 1 : 0) +\n Object.values(data.assets).filter((flag) => flag).length +\n Object.values(data.components).filter((flag) => flag).length;\n updateSplash((items / total) * 100);\n } else {\n const getAssetsSize = (all = true): number => {\n return Object.entries(data.assets)\n .filter(([, val]) => all || val)\n .map(\n ([key]) =>\n stats.assets[assetManifest[key].path.split('assets/').slice(-1)[0]],\n )\n .reduce((a, b) => a + b, 0);\n };\n\n const getComponentsSize = (all = true): number => {\n return Object.entries(data.components)\n .filter(([, val]) => all || val)\n .map(([key]) => stats.modules[key])\n .reduce((a, b) => a + b, 0);\n };\n\n const allAssetsSize = getAssetsSize();\n const loadedAssetsSize = getAssetsSize(false);\n\n const allComponentsSize = getComponentsSize();\n const loadedComponentsSize = getComponentsSize(false);\n\n const langName = Object.keys(data.lang)[0] as TI18nLang;\n const allLangSize = stats.i18n[langName];\n const loadedLangSize = data.lang[langName] ? allLangSize : 0;\n\n const totalSize = allAssetsSize + allComponentsSize + allLangSize;\n const loadedSize = loadedAssetsSize + loadedComponentsSize + loadedLangSize;\n\n updateSplash((loadedSize / totalSize) * 100);\n }\n };\n\n const importItemLang = config.env.lang;\n /** List to component Ids to import. */\n const importListComponents = config.components.map(({ id }) => id);\n /** List to asset Ids to import. */\n const importListAssets = (() => {\n try {\n return Object.entries(componentManifest)\n .map(\n ([\n _,\n {\n definition: { assets },\n },\n ]) => assets,\n )\n .reduce((a, b) => [...new Set([...a, ...b])]);\n } catch (e) {\n return [];\n }\n })();\n\n _importMap.lang = Object.fromEntries([[importItemLang, false]]);\n _importMap.assets = Object.fromEntries(importListAssets.map((assetId) => [assetId, false]));\n _importMap.components = Object.fromEntries(\n importListComponents.map((componentId) => [componentId, false]),\n );\n\n const { importStrings } = await import('@sugarlabs/mb4-i18n');\n const { importComponent } = await import('@sugarlabs/mb4-config');\n const { importAsset } = await import('@sugarlabs/mb4-assets');\n\n await Promise.all([\n // import ES module for i18n and load strings\n importStrings(importItemLang).then(() =>\n updateSplashData(_updateImportMap('lang', importItemLang)),\n ),\n // import ES modules for components\n ...importListComponents.map(\n (componentId) =>\n new Promise((resolve) => {\n importComponent(\n componentId,\n componentManifest[componentId].importFunc,\n ).then(() => {\n updateSplashData(_updateImportMap('components', componentId));\n resolve();\n });\n }),\n ),\n // import asset files and load data\n ...importListAssets.map(\n (assetId) =>\n new Promise((resolve) => {\n importAsset(assetId, assetManifest[assetId]).then(() => {\n updateSplashData(_updateImportMap('assets', assetId));\n resolve();\n });\n }),\n ),\n ]);\n }\n\n /*\n * Collect imported components.\n */\n\n const { getComponent } = await import('@sugarlabs/mb4-config');\n const componentIds = config.components.map(({ id }) => id);\n\n /** Map of component identifier and corresponding component module. */\n const components: Partial> = Object.fromEntries(\n componentIds.map((componentId) => [componentId, getComponent(componentId)]),\n );\n /** List of 2-tuples of component identifier and component definition. */\n const componentDefinitionEntries: [TComponentId, IComponentDefinition][] = componentIds.map(\n (componentId) => [componentId, componentManifest[componentId].definition],\n );\n\n /**\n * Inject items into component modules.\n */\n\n {\n const { getStrings } = await import('@sugarlabs/mb4-i18n');\n\n // Inject i18n strings.\n componentDefinitionEntries.forEach(\n ([id, { strings }]) =>\n (components[id]!.injected.i18n =\n Object.keys(strings).length !== 0\n ? getStrings(Object.keys(strings))\n : undefined),\n );\n\n // Inject asset entries.\n componentDefinitionEntries.forEach(\n ([id, { assets }]) =>\n (components[id]!.injected.assets =\n assets !== undefined\n ? (getAssets(assets) as { [identifier: string]: TAsset })\n : undefined),\n );\n\n // Inject feature flags.\n componentDefinitionEntries.forEach(\n ([componentId]) =>\n (components[componentId]!.injected.flags = config!.components.find(\n ({ id }) => id === componentId,\n // @ts-ignore\n )?.flags),\n );\n }\n\n /**\n * Serialized list of component identifiers in which the dependent components take precedence.\n */\n let componentsOrdered: TComponentId[];\n\n /*\n * Complete the application initialization\n */\n\n {\n const {\n mountComponents,\n setupComponents,\n registerElements,\n serializeComponentDependencies,\n } = await import('@sugarlabs/mb4-config');\n\n // Generate serialized list of component identifiers\n componentsOrdered = serializeComponentDependencies(\n componentDefinitionEntries\n .map<[TComponentId, TComponentId[]]>(([id, { dependencies }]) => [\n id,\n [...new Set([...dependencies.optional, ...dependencies.required])],\n ])\n .map(([id, dependencies]) => ({ id, dependencies })),\n );\n\n // Register syntax elements as configured for each component\n registerElements(\n componentsOrdered.map((componentId) => {\n return {\n id: componentId,\n // @ts-ignore\n filter: config.components.find(({ id }) => id === componentId)?.elements,\n };\n }),\n );\n\n // Mount components in serialized order\n await mountComponents(componentsOrdered);\n\n // Initialize components in serialized order\n await setupComponents(componentsOrdered);\n\n // Unmount the splash screen.\n const { unmountSplash } = await import('./splash');\n const splashTimeEnd = Date.now();\n const splashTime = splashTimeEnd - splashTimeStart;\n const splashBuffer = Math.max(import.meta.env.VITE_APP_SPLASH_MIN_DELAY - splashTime, 0);\n setTimeout(() => unmountSplash(), splashBuffer);\n }\n\n if (import.meta.env.PROD) {\n const { loadServiceWorker } = await import('./utils/misc');\n loadServiceWorker();\n }\n}\n\n// =================================================================================================\n\n(async function () {\n /**\n * if PRODUCTION mode, proceed initializing with configuration preset.\n */\n\n if (import.meta.env.PROD) {\n await init();\n return;\n }\n\n /**\n * if DEVELOPMENT mode, and configuration in session storage,\n * proceed initializing with configuration from session storage.\n */\n\n {\n const config = window.sessionStorage.getItem('appConfig');\n\n if (config !== null) {\n await init(JSON.parse(config) as IAppConfig);\n return;\n }\n }\n\n /**\n * if DEVELOPMENT mode, and configuration not in session storage,\n * open configurator page.\n * @todo currently needs refresh to go to main app page\n */\n\n {\n const config = await _loadConfig(import.meta.env.VITE_CONFIG_PRESET);\n\n const { initView } = await import('@sugarlabs/mb4-view');\n await initView();\n\n window.sessionStorage.setItem('appConfig', JSON.stringify(config));\n\n const componentManifest = (await import('./components')).default;\n const { importComponent } = await import('@sugarlabs/mb4-config');\n const components = Object.fromEntries(\n await Promise.all(\n (Object.keys(componentManifest) as TComponentId[]).map((componentId) =>\n importComponent(componentId, componentManifest[componentId].importFunc).then(\n (component) => [componentId, component],\n ),\n ),\n ),\n ) as Record;\n const componentDefinitions = Object.fromEntries(\n Object.entries(componentManifest).map<[TComponentId, IComponentDefinitionExtended]>(\n ([componentId, { definition }]) => [\n componentId as TComponentId,\n { ...definition, elements: components[componentId as TComponentId].elements },\n ],\n ),\n ) as Record;\n\n const { mountConfigPage, updateConfigPage } = await import('./config');\n\n await mountConfigPage(\n { ...config },\n Object.fromEntries(\n (\n Object.entries(componentDefinitions) as [TComponentId, IComponentDefinition][]\n ).map(([componentId, definition]) => [\n componentId,\n {\n ...definition,\n elements: components[componentId]?.elements,\n },\n ]),\n ),\n (config: IAppConfig) =>\n requestAnimationFrame(() => {\n window.sessionStorage.setItem('appConfig', JSON.stringify(config));\n updateConfigPage(config);\n }),\n );\n }\n})();\n"],"file":"assets/index-060fb1c6.js"} \ No newline at end of file diff --git a/assets/index-096c861c.js b/assets/index-096c861c.js new file mode 100644 index 00000000..4b235928 --- /dev/null +++ b/assets/index-096c861c.js @@ -0,0 +1,2 @@ +import{a as c,F as s,j as n,b as a}from"./index-b95677c8.js";function g(e){const t=e.asset.type;return c(s,{children:[t==="image/svg+xml"&&n(i,{content:e.asset.data}),t.startsWith("image")&&t!=="image/svg+xml"&&n(o,{content:e.asset.data})]})}function i(e){const t=a.useRef(null);return a.useEffect(()=>{const r=t.current;r.innerHTML=e.content}),n(s,{children:n("div",{className:"l-image l-image-vector",ref:t})})}function o(e){return n(s,{children:n("img",{className:"l-image l-image-raster",src:e.content})})}export{g as S}; +//# sourceMappingURL=index-096c861c.js.map diff --git a/assets/index-096c861c.js.map b/assets/index-096c861c.js.map new file mode 100644 index 00000000..7ee0d2c4 --- /dev/null +++ b/assets/index-096c861c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-096c861c.js","sources":["../../../lib/components/src/SImage/index.tsx","../../../lib/components/src/SImageVector/index.tsx","../../../lib/components/src/SImageRaster/index.tsx"],"sourcesContent":["import type { TAsset } from '#/@types/assets';\n\n// -- ui items -------------------------------------------------------------------------------------\n\nimport { SImageRaster, SImageVector } from '../..';\n\n// -- component definition -------------------------------------------------------------------------\n\n/**\n * React component definition for a generic Image component.\n */\nexport default function (props: {\n /** Image asset. */\n asset: TAsset;\n}): JSX.Element {\n const type = props.asset.type;\n\n // ---------------------------------------------------------------------------\n\n return (\n <>\n {type === 'image/svg+xml' && }\n {type.startsWith('image') && type !== 'image/svg+xml' && (\n \n )}\n \n );\n}\n","import { useEffect, useRef } from 'react';\n\n// -- stylesheet -----------------------------------------------------------------------------------\n\nimport './index.scss';\n\n// -- component definition -------------------------------------------------------------------------\n\n/**\n * React component definition for Image Vector component.\n */\nexport default function (props: {\n /** SVG content string. */\n content: string;\n}): JSX.Element {\n const wrapper = useRef(null);\n\n useEffect(() => {\n const _wrapper = wrapper.current! as HTMLDivElement;\n _wrapper.innerHTML = props.content;\n });\n\n // ---------------------------------------------------------------------------\n\n return (\n <>\n

\n \n );\n}\n","// -- stylesheet -----------------------------------------------------------------------------------\n\nimport './index.scss';\n\n// -- component definition -------------------------------------------------------------------------\n\n/**\n * React component definition for Image Raster component.\n */\nexport default function (props: {\n /** Source string as URL data. */\n content: string;\n}): JSX.Element {\n // ---------------------------------------------------------------------------\n\n return (\n <>\n \n \n );\n}\n"],"names":["SImage","props","type","jsxs","Fragment","jsx","SImageVector","SImageRaster","wrapper","useRef","useEffect","_wrapper"],"mappings":"6DAWA,SAAAA,EAAyBC,EAGT,CACR,MAAAC,EAAOD,EAAM,MAAM,KAIzB,OAEKE,EAAAC,EAAA,CAAA,SAAA,CAAAF,IAAS,iBAAoBG,EAAAC,EAAA,CAAa,QAASL,EAAM,MAAM,KAAM,EACrEC,EAAK,WAAW,OAAO,GAAKA,IAAS,iBACpCG,EAACE,EAAa,CAAA,QAASN,EAAM,MAAM,IAAM,CAAA,CAE7C,CAAA,CAAA,CAEJ,CChBA,SAAAK,EAAyBL,EAGT,CACR,MAAAO,EAAUC,SAAO,IAAI,EAE3BC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAWH,EAAQ,QACzBG,EAAS,UAAYV,EAAM,OAAA,CAC5B,OAMG,SAACI,EAAA,MAAA,CAAI,UAAU,yBAAyB,IAAKG,CAAS,CAAA,CACxD,CAAA,CAEJ,CCpBA,SAAAD,EAAyBN,EAGT,CAIZ,OAAAI,EAAAD,EAAA,CACE,WAAC,MAAI,CAAA,UAAU,yBAAyB,IAAKH,EAAM,OAAS,CAAA,CAC9D,CAAA,CAEJ"} \ No newline at end of file diff --git a/assets/index-0ef6c638.css b/assets/index-0ef6c638.css new file mode 100644 index 00000000..d787146e --- /dev/null +++ b/assets/index-0ef6c638.css @@ -0,0 +1 @@ +#editor{width:26rem;height:100%}#editor .editor-wrapper{display:flex;flex-direction:column;width:100%;height:100%}#editor .editor-wrapper.editor-wrapper-hidden{display:none}#editor .editor-wrapper>*{width:100%;margin:0}#editor .editor-wrapper #editor-codebox{flex-shrink:1;height:100%;margin-bottom:.5rem;padding:.5rem;border:none;border-radius:.25rem;font-size:.9rem;font-family:Courier New,Courier,monospace;font-weight:700;color:#192a56;resize:none}#editor .editor-wrapper #editor-codebox:focus{outline:none}#editor .editor-wrapper #editor-console{flex-shrink:0;display:flex;flex-direction:row;align-items:center;width:100%;height:2.5rem;border-radius:0 0 .25rem .25rem}#editor .editor-wrapper #editor-console>*{box-sizing:border-box;height:100%;margin-right:.5rem}#editor .editor-wrapper #editor-console #editor-btn-help{flex-shrink:0;width:2.5rem;padding:.5rem;border:none;border-radius:.25rem;text-transform:uppercase;background-color:#fff;cursor:pointer;transition:all .25s ease}#editor .editor-wrapper #editor-console #editor-btn-help svg{width:100%;height:100%}#editor .editor-wrapper #editor-console #editor-btn-help svg .path-fill{fill:#0652dd;transition:all .25s ease}#editor .editor-wrapper #editor-console #editor-status-wrapper{flex-shrink:1;width:100%}#editor .editor-wrapper #editor-console #editor-status-wrapper #editor-status{width:100%;height:100%;margin:0;padding:.5rem;border-radius:.25rem;font-size:.9rem;font-family:Courier New,Courier,monospace;font-weight:700;color:#192a56;background-color:#fff;overflow:auto}#editor .editor-wrapper #editor-console #editor-btn-build{flex-shrink:0;width:2.5rem;margin-right:0;padding:.5rem;border:none;border-radius:.25rem;text-transform:uppercase;background-color:#fff;cursor:pointer;transition:all .25s ease}#editor .editor-wrapper #editor-console #editor-btn-build svg{width:100%;height:100%}#editor .editor-wrapper #editor-console #editor-btn-build svg .path-fill{fill:#0652dd;transition:all .25s ease}#editor .editor-wrapper #editor-console #editor-btn-build:hover svg .path-fill{fill:#1b9cfc}#editor .editor-wrapper #editor-help{flex-shrink:1;height:100%;margin-bottom:.5rem;padding:.5rem;border:none;border-radius:.25rem;font-size:.9rem;font-family:Courier New,Courier,monospace;font-weight:700;color:#1b9cfc;background-color:#1b1464;resize:none}#editor .editor-wrapper #editor-help:focus{outline:none}#editor .editor-wrapper #editor-help-close{flex-shrink:0;width:2.5rem;height:2.5rem;border:none;border-radius:.25rem;background-color:unset;cursor:pointer}#editor .editor-wrapper #editor-help-close svg{width:calc(100% - .5rem);height:calc(100% - .5rem);margin:.25rem}#editor .editor-wrapper #editor-help-close svg .path-fill{fill:#1b1464;transition:all .25s ease}#editor .editor-wrapper #editor-help-close:hover svg .path-fill{fill:#fff}#editor-toolbar-btn{padding:.25rem}#editor-toolbar-btn svg{width:100%;height:100%}#editor-toolbar-btn svg.editor-toolbar-btn-img-hidden{display:none}#editor-toolbar-btn svg .path-fill{fill:#0652dd;transition:all .25s ease}#editor-toolbar-btn:hover svg .path-fill{fill:#1b9cfc} diff --git a/assets/index-0ef6c638.css.gz b/assets/index-0ef6c638.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..70b8fff086f6daacd308b0ff5347744d65046f88 GIT binary patch literal 633 zcmV-<0*3t`iwFP!000021Jzc+j+-zLz4t4SqDpPGMi6aM#YnyM-hVK*0c(v1*=ETW z_1_B)VF@9W&~2r?fNktIGjHaN*>EN-=(-ZjW_Y{TJdZLi(#+y82tNMWoW6Vh>5VE) zih}E!2~$Y&f)mM)QTsqlXilvFg(=7~SJ4TwMOlJ4nxafF##L`ef#SE0e*01nY~@6! zLgC=nZm(NM6c~@;SUc}criFUK;n39%3dLY8pb6CSo? zw~sV;pmVg01H}o@($r8|Db(Vl%7Ek-90k!_@-Lq?6C860!Vfk<~<*1aywe z);=Ys*-hwEs-aX2b;(bXB%-A@&A0&Jh;;{rqn=3FvSvKqoL(K7XP(pgKJ6~T^!$R@ z3?)L!x_#hHu-|PNd%FmXCAKtui@MbHYeavEJ6gU$Ro{jttKmO2iRl7@XRZ?o6(*&H zRVj^2A=#V)E`%1mV?nq`-&zqp=)adlZw_Z|+NX_%@qs4vkJwjj?;Tv0F0zTb3FGi_ z|9ICe+J?X83T@9JD#7qM#Y|m_GfZ7YR4T*mND6njHYjmQB>mK8)I*;0=JVOPi7#E3 zTXCX8GDdn^B%n=c~an2Rzxt35lIQ1$@F@*EO#?=c8>6j_raI zdO|Lg%3`X|KzR5_@MMq;N(s78^oIT)gU=RGq6BqTN0i>EE&zWcs3q(MqFg~86%ndh z4z#l$*^$5lpZ7>=oOPgC{_AYDk57-M{i+r0_;3)34ysYF7}>S@a?5O_Gl5new a(s,u)},l={label:t,type:r,category:o,prototypeName:a.name};return Object.entries(n).forEach(([s,u])=>{["label","type","category","prototype"].includes(s)||(i[s]=u,l[s]=u)}),T[e]=i,ge[e]=l,e in T}h.registerElementSpecificationEntry=He;function Mt(e){const n=[];return Object.entries(e).forEach(([t,r])=>n.push(He(t,r))),n}h.registerElementSpecificationEntries=Mt;function Xe(e){return e in T?(delete T[e],delete ge[e],!0):!1}h.removeElementSpecificationEntry=Xe;function wt(e){const n=[];return e.forEach(t=>n.push(Xe(t))),n}h.removeElementSpecificationEntries=wt;function Dt(e){return e in T?Object.assign({},T[e]):null}h.queryElementSpecification=Dt;function Rt(){return Object.keys(T)}h.getElementNames=Rt;function qt(){return[...new Set(Object.entries(T).map(([e,{category:n}])=>n))]}h.getElementCategories=qt;function Je(){T={},ge={}}h.resetElementSpecificationTable=Je;function $t(){return ge}h.getSpecificationSnapshot=$t;function Gt(e,n){if("values"in T[e]){const t=T[e].values;if(t instanceof Array)return t.includes(n);{let r;return["true","false"].includes(n)?r="boolean":isNaN(Number(n))?r="string":r="number",t.types.includes(r)||t.types.includes("string")}}return!0}h.checkValueAssignment=Gt;Je();var f={},ue,Lt=new Uint8Array(16);function Qe(){if(!ue&&(ue=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!ue))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ue(Lt)}const Ut=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function pe(e){return typeof e=="string"&&Ut.test(e)}var _=[];for(var _e=0;_e<256;++_e)_.push((_e+256).toString(16).substr(1));function be(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=(_[e[n+0]]+_[e[n+1]]+_[e[n+2]]+_[e[n+3]]+"-"+_[e[n+4]]+_[e[n+5]]+"-"+_[e[n+6]]+_[e[n+7]]+"-"+_[e[n+8]]+_[e[n+9]]+"-"+_[e[n+10]]+_[e[n+11]]+_[e[n+12]]+_[e[n+13]]+_[e[n+14]]+_[e[n+15]]).toLowerCase();if(!pe(t))throw TypeError("Stringified UUID is invalid");return t}var Ue,Ne,Ce=0,Ie=0;function Ft(e,n,t){var r=n&&t||0,o=n||new Array(16);e=e||{};var a=e.node||Ue,i=e.clockseq!==void 0?e.clockseq:Ne;if(a==null||i==null){var l=e.random||(e.rng||Qe)();a==null&&(a=Ue=[l[0]|1,l[1],l[2],l[3],l[4],l[5]]),i==null&&(i=Ne=(l[6]<<8|l[7])&16383)}var s=e.msecs!==void 0?e.msecs:Date.now(),u=e.nsecs!==void 0?e.nsecs:Ie+1,g=s-Ce+(u-Ie)/1e4;if(g<0&&e.clockseq===void 0&&(i=i+1&16383),(g<0||s>Ce)&&e.nsecs===void 0&&(u=0),u>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");Ce=s,Ie=u,Ne=i,s+=122192928e5;var p=((s&268435455)*1e4+u)%4294967296;o[r++]=p>>>24&255,o[r++]=p>>>16&255,o[r++]=p>>>8&255,o[r++]=p&255;var y=s/4294967296*1e4&268435455;o[r++]=y>>>8&255,o[r++]=y&255,o[r++]=y>>>24&15|16,o[r++]=y>>>16&255,o[r++]=i>>>8|128,o[r++]=i&255;for(var x=0;x<6;++x)o[r+x]=a[x];return n||be(o)}function Ye(e){if(!pe(e))throw TypeError("Invalid UUID");var n,t=new Uint8Array(16);return t[0]=(n=parseInt(e.slice(0,8),16))>>>24,t[1]=n>>>16&255,t[2]=n>>>8&255,t[3]=n&255,t[4]=(n=parseInt(e.slice(9,13),16))>>>8,t[5]=n&255,t[6]=(n=parseInt(e.slice(14,18),16))>>>8,t[7]=n&255,t[8]=(n=parseInt(e.slice(19,23),16))>>>8,t[9]=n&255,t[10]=(n=parseInt(e.slice(24,36),16))/1099511627776&255,t[11]=n/4294967296&255,t[12]=n>>>24&255,t[13]=n>>>16&255,t[14]=n>>>8&255,t[15]=n&255,t}function Kt(e){e=unescape(encodeURIComponent(e));for(var n=[],t=0;t>5]>>>o%32&255,i=parseInt(r.charAt(a>>>4&15)+r.charAt(a&15),16);n.push(i)}return n}function ze(e){return(e+64>>>9<<4)+14+1}function Qt(e,n){e[n>>5]|=128<>5]|=(e[r/8]&255)<>16)+(n>>16)+(t>>16);return r<<16|t&65535}function Zt(e,n){return e<>>32-n}function he(e,n,t,r,o,a){return F(Zt(F(F(n,e),F(r,a)),o),t)}function N(e,n,t,r,o,a,i){return he(n&t|~n&r,e,n,o,a,i)}function C(e,n,t,r,o,a,i){return he(n&r|t&~r,e,n,o,a,i)}function I(e,n,t,r,o,a,i){return he(n^t^r,e,n,o,a,i)}function O(e,n,t,r,o,a,i){return he(t^(n|~r),e,n,o,a,i)}var zt=Ze("v3",48,Xt);const en=zt;function tn(e,n,t){e=e||{};var r=e.random||(e.rng||Qe)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,n){t=t||0;for(var o=0;o<16;++o)n[t+o]=r[o];return n}return be(r)}function nn(e,n,t,r){switch(e){case 0:return n&t^~n&r;case 1:return n^t^r;case 2:return n&t^n&r^t&r;case 3:return n^t^r}}function Oe(e,n){return e<>>32-n}function rn(e){var n=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof e=="string"){var r=unescape(encodeURIComponent(e));e=[];for(var o=0;o>>0;ve=se,se=q,q=Oe(W,30)>>>0,W=X,X=Ot}t[0]=t[0]+X>>>0,t[1]=t[1]+W>>>0,t[2]=t[2]+q>>>0,t[3]=t[3]+se>>>0,t[4]=t[4]+ve>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var on=Ze("v5",80,rn);const an=on,ln="00000000-0000-0000-0000-000000000000";function sn(e){if(!pe(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)}const cn=Object.freeze(Object.defineProperty({__proto__:null,NIL:ln,parse:Ye,stringify:be,v1:Ft,v3:en,v4:tn,v5:an,validate:pe,version:sn},Symbol.toStringTag,{value:"Module"})),et=St(cn);var V={},d={};Object.defineProperty(d,"__esModule",{value:!0});d.resetWarehouse=d.getCategoryCountAll=d.getCategoryCount=d.getTypeCountAll=d.getTypeCount=d.getKindCountAll=d.getKindCount=d.getNameCountAll=d.getNameCount=_n=d.removeInstance=yn=d.getInstance=hn=d.addInstance=void 0;const un=et,Me=h,tt=B;class fo extends tt.ElementData{}class mo extends tt.ElementExpression{}let Q={},ne={},re={},Y={},j={};function fn(e,n,t,r,o){const a=r==="Data"||r==="Expression"?"Argument":"Instruction";switch(r){case"Data":j[n]={instance:t,name:e,type:r,kind:"Argument",category:o};break;case"Expression":j[n]={instance:t,name:e,type:r,kind:"Argument",category:o};break;case"Statement":j[n]={instance:t,name:e,type:r,kind:"Instruction",category:o};break;case"Block":j[n]={instance:t,name:e,type:r,kind:"Instruction",category:o};break}Q[e]++,ne[a]++,re[r]++,Y[o]++}function mn(){Q={},(0,Me.getElementNames)().forEach(e=>Q[e]=0)}function dn(){ne={Argument:0,Instruction:0}}function gn(){re={Data:0,Expression:0,Statement:0,Block:0}}function pn(){Y={},(0,Me.getElementCategories)().forEach(e=>Y[e]=0)}function bn(e){const n=(0,Me.queryElementSpecification)(e);if(n===null)throw Error(`InvalidAccessError: element with name "${e}" does not exist`);const{label:t,type:r,category:o,prototype:a}=n;let i;switch(r){case"Data":i=a(e,t);break;case"Expression":i=a(e,t);break;case"Statement":i=a(e,t);break;case"Block":default:i=a(e,t)}let l;do l=(0,un.v4)();while(l in j);return fn(e,l,i,r,o),l}var hn=d.addInstance=bn;function En(e){return e in j?Object.assign({},j[e]):null}var yn=d.getInstance=En;function vn(e){if(!(e in j))return;const{name:n,kind:t,type:r,category:o}=j[e];Q[n]--,ne[t]--,re[r]--,Y[o]--,delete j[e]}var _n=d.removeInstance=vn;function Nn(e){return Q[e]}d.getNameCount=Nn;function Cn(){return Object.assign({},Q)}d.getNameCountAll=Cn;function In(e){return ne[e]}d.getKindCount=In;function On(){return Object.assign({},ne)}d.getKindCountAll=On;function Sn(e){return re[e]}d.getTypeCount=Sn;function Pn(){return Object.assign({},re)}d.getTypeCountAll=Pn;function Vn(e){return Y[e]}d.getCategoryCount=Vn;function An(){return Object.assign({},Y)}d.getCategoryCountAll=An;function nt(){j={},mn(),dn(),gn(),pn()}d.resetWarehouse=nt;nt();Object.defineProperty(V,"__esModule",{value:!0});V.TreeNodeBlock=V.TreeNodeStatement=V.TreeNodeExpression=V.TreeNodeData=V.TreeNode=void 0;const Fe=d;class we{constructor(n,t,r){this._argConnections={},this._elementName=n,this._nodeID=t,this._instanceID=r,(0,Fe.getInstance)(this._instanceID).instance.argLabels.forEach(a=>this._argConnections[a]=null)}get nodeID(){return this._nodeID}get instanceID(){return this._instanceID}_attachArg(n,t){this._argConnections[n]=t}_detachArg(n){this._argConnections[n]=null}_getArgSnapshot(){const n=(0,Fe.getInstance)(this._instanceID);if(n.instance.argCount===0)return null;this._elementName;const t={};return n.instance.argLabels.forEach(r=>t[r]=this._argConnections[r]===null?null:this._argConnections[r].snapshot),t}}V.TreeNode=we;class rt extends we{constructor(){super(...arguments),this.connectedTo=null}}class Bn extends rt{get elementName(){return this._elementName}get snapshot(){return{elementName:this._elementName,nodeID:this._nodeID}}}V.TreeNodeData=Bn;class kn extends rt{constructor(){super(...arguments),this.argConnections=this._argConnections,this.attachArg=super._attachArg,this.detachArg=super._detachArg}get elementName(){return this._elementName}get snapshot(){return{elementName:this._elementName,nodeID:this._nodeID,argMap:this._getArgSnapshot()}}}V.TreeNodeExpression=kn;class ot extends we{constructor(){super(...arguments),this.argConnections=this._argConnections,this.attachArg=super._attachArg,this.detachArg=super._detachArg,this.beforeConnection=null,this.afterConnection=null,this.nestLevel=0,this.parentBlock=null}}class Tn extends ot{get elementName(){return this._elementName}get snapshot(){return{elementName:this._elementName,nodeID:this._nodeID,argMap:this._getArgSnapshot()}}}V.TreeNodeStatement=Tn;class xn extends ot{constructor(){super(...arguments),this.innerConnection=null,this.innerCount=0}get elementName(){return this._elementName}get snapshot(){const n=[];let t=this.innerConnection;for(;t!==null;)n.push(t.snapshot),t=t.afterConnection;return{elementName:this._elementName,nodeID:this._nodeID,argMap:this._getArgSnapshot(),scope:n}}}V.TreeNodeBlock=xn;Object.defineProperty(f,"__esModule",{value:!0});f.assignNodeValue=f.generateFromSnapshot=f.generateSnapshot=f.detachInstructionInside=f.attachInstructionInside=f.attachInstructionInsideCheck=f.detachInstructionBelow=f.attachInstructionBelow=f.attachInstructionBelowCheck=f.detachArgument=f.attachArgument=f.attachArgumentCheck=f.resetSyntaxTree=f.removeNode=f.getNode=f.addNode=f.getCrumbs=f.getRoutineNodes=f.getProcessNodes=void 0;const jn=et,J=V,Z=d,k=h,m={};let b={process:[],routine:[],crumbs:[]};function at(e){if(!(e in m))return;const n=m[e];(0,Z.removeInstance)(n.instanceID),delete m[e]}function it(e,n){if(!(e in m)||!(n in m))return!1;const t=m[e],r=m[n],o=(0,k.queryElementSpecification)(t.elementName),a=(0,k.queryElementSpecification)(r.elementName);return!(o.type==="Data"||o.type==="Expression"||a.type==="Data"||a.type==="Expression")}function Mn(){return b.process}f.getProcessNodes=Mn;function wn(){return b.routine}f.getRoutineNodes=wn;function Dn(){return b.crumbs}f.getCrumbs=Dn;function ee(e){const n=(0,Z.addInstance)(e);let t;do t=(0,jn.v4)();while(t in m);let r;switch((0,k.queryElementSpecification)(e).type){case"Data":r=new J.TreeNodeData(e,t,n);break;case"Expression":r=new J.TreeNodeExpression(e,t,n);break;case"Statement":r=new J.TreeNodeStatement(e,t,n);break;case"Block":default:r=new J.TreeNodeBlock(e,t,n)}return m[t]=r,e==="process"?b.process.push(r):e==="routine"?b.routine.push(r):b.crumbs.push(r),t}f.addNode=ee;function De(e){return e in m?m[e]:null}f.getNode=De;function Rn(e){if(!(e in m))return;const n=m[e];let t;n.elementName==="process"?t=b.process:n.elementName==="routine"?t=b.routine:t=b.crumbs,t.splice(t.indexOf(n),1),at(e)}f.removeNode=Rn;function Ae(){Object.entries(m).forEach(([e])=>{at(e)}),b={process:[],routine:[],crumbs:[]}}f.resetSyntaxTree=Ae;function qn(e,n,t){if(!(e in m)||!(n in m))return!1;const r=m[e],o=m[n],a=(0,k.queryElementSpecification)(r.elementName),i=(0,k.queryElementSpecification)(o.elementName);if(a.type==="Data"||i.type==="Statement"||i.type==="Block")return!1;const l=(0,Z.getInstance)(r.instanceID),s=(0,Z.getInstance)(o.instanceID);if(!l.instance.argLabels.includes(t))return!1;const u=l.instance.getArgType(t),g=s.instance.returnType;for(const p of g)if(!u.includes(p))return!1;return!0}f.attachArgumentCheck=qn;function lt(e,n,t){const r=m[e],o=m[n];r.attachArg(t,o),o.connectedTo=r,b.crumbs.includes(o)&&b.crumbs.splice(b.crumbs.indexOf(o),1)}f.attachArgument=lt;function $n(e,n,t){const r=m[e],o=m[n];r.detachArg(t),o.connectedTo=null,b.crumbs.push(o)}f.detachArgument=$n;function Gn(e,n){if(!it(e,n))return!1;const t=m[e],r=m[n],o=(0,k.queryElementSpecification)(t.elementName),a=(0,k.queryElementSpecification)(r.elementName);if(o.forbidBelow&&o.forbidBelow.includes(r.elementName)||a.forbidAbove&&a.forbidAbove.includes(t.elementName))return!1;if(o.allowBelow!==void 0){if(o.allowBelow instanceof Array){if(!o.allowBelow.includes(r.elementName))return!1}else if(o.allowBelow===!1)return!1}if(a.allowAbove!==void 0){if(a.allowAbove instanceof Array){if(!a.allowAbove.includes(t.elementName))return!1}else if(o.allowAbove===!1)return!1}return!0}f.attachInstructionBelowCheck=Gn;function st(e,n){const t=m[e],r=m[n];t.afterConnection=r,r.beforeConnection=t,r.nestLevel=t.nestLevel,r.parentBlock=t.parentBlock,b.crumbs.includes(r)&&b.crumbs.splice(b.crumbs.indexOf(r),1)}f.attachInstructionBelow=st;function Ln(e,n){const t=m[e],r=m[n];t.afterConnection=null,r.beforeConnection=null,r.nestLevel=0,r.parentBlock=null,b.crumbs.push(r)}f.detachInstructionBelow=Ln;function Un(e,n){if(!it(e,n))return!1;const t=m[e],r=m[n],o=(0,k.queryElementSpecification)(t.elementName),a=(0,k.queryElementSpecification)(r.elementName);if(!(o.type==="Block"&&(a.type==="Statement"||a.type==="Block"))||o.forbidNestInside&&o.forbidNestInside.includes(r.elementName)||a.forbiddenNestInside&&a.forbiddenNestInside.includes(t.elementName))return!1;if(o.allowNestInside!==void 0){if(o.allowNestInside instanceof Array){if(!o.allowNestInside.includes(r.elementName))return!1}else if(o.allowNestInside===!1)return!1}if(a.allowedNestInside!==void 0){if(a.allowedNestInside instanceof Array){if(!a.allowedNestInside.includes(t.elementName))return!1}else if(o.allowedNestInside===!1)return!1}return!!(a.allowedNestLevel&&a.allowedNestLevel instanceof Array&&a.allowedNestLevel.includes(t.nestLevel+1))}f.attachInstructionInsideCheck=Un;function ct(e,n){const t=m[e],r=m[n];t.innerConnection=r,t.innerCount++,r.parentBlock=t,r.nestLevel=t.nestLevel+1,b.crumbs.includes(r)&&b.crumbs.splice(b.crumbs.indexOf(r),1)}f.attachInstructionInside=ct;function Fn(e,n){const t=m[e],r=m[n];t.innerConnection=null,t.innerCount--,r.parentBlock=null,r.nestLevel=0,b.crumbs.push(r)}f.detachInstructionInside=Fn;function Kn(){const e={process:b.process.map(n=>n.snapshot),routine:b.routine.map(n=>n.snapshot),crumbs:[]};return b.crumbs.forEach(n=>{if(n instanceof J.TreeNodeData||n instanceof J.TreeNodeExpression)e.crumbs.push([n.snapshot]);else{const t=[];let r=n;for(;r!==null;)t.push(r.snapshot),r=r.afterConnection;e.crumbs.push(t)}}),e}f.generateSnapshot=Kn;function Wn(e){Ae();function n(l){if(l.length===0)return null;const s=l.map(u=>{const g=(0,k.queryElementSpecification)(u.elementName);let p;switch(g.type){case"Data":p=r(u);break;case"Expression":p=o(u);break;case"Statement":p=a(u);break;case"Block":default:p=i(u)}return p});if(s.length>1)for(let u=0;u{if(g===null)return;let p;(0,k.queryElementSpecification)(g.elementName).type==="Data"?p=r(g):p=o(g),lt(l,p,u)})}function r(l){const s=ee(l.elementName);if(l.value){const u=(0,Z.getInstance)(De(s).instanceID).instance;if((0,k.checkValueAssignment)(u.name,l.value))u.updateLabel(l.value);else throw Error(`InvalidDataError: value "${l.value}" cannot be assigned to data element "${u.name}"`)}return s}function o(l){const s=ee(l.elementName);return t(s,l.argMap),s}function a(l){const s=ee(l.elementName);return t(s,l.argMap),s}function i(l){const s=ee(l.elementName);t(s,l.argMap);const u=n(l.scope);return u!==null&&ct(s,u),s}try{e.process.forEach(l=>i(l)),e.routine.forEach(l=>i(l)),e.crumbs.forEach(l=>n(l))}catch(l){throw Ae(),l}}f.generateFromSnapshot=Wn;function Hn(e,n){try{const t=(0,Z.getInstance)(De(e).instanceID).instance;if(t.type==="Data"&&(0,k.checkValueAssignment)(t.name,n))t.updateLabel(n);else throw Error()}catch{return!1}return!0}f.assignNodeValue=Hn;var S={},c={};Object.defineProperty(c,"__esModule",{value:!0});c.flushAllVariables=c.flushRoutineVariablesAll=c.flushRoutineVariables=c.flushProcessVariablesAll=c.flushProcessVariables=c.flushGlobalVariables=c.removeRoutineVariable=c.getRoutineVariableNamesWithTypesAll=c.getRoutineVariableNamesAll=c.getRoutineVariableNamesWithTypes=c.getRoutineVariableNames=c.getRoutineVariable=c.addRoutineVariable=c.removeProcessVariable=c.getProcessVariableNamesWithTypesAll=c.getProcessVariableNamesAll=c.getProcessVariableNamesWithTypes=c.getProcessVariableNames=c.getProcessVariable=c.addProcessVariable=c.removeGlobalVariable=c.getGlobalVariableNamesWithTypes=c.getGlobalVariableNames=c.getGlobalVariable=c.addGlobalVariable=void 0;let K={},G={},L={};function ut(e,n,t,r,o){const a=o==="process"?G:L;r in a||(a[r]={}),a[r][e]={dataType:n,value:t}}function ft(e,n,t){const r=t==="process"?G:L;return n in r&&e in r[n]?r[n][e]:null}function mt(e,n){const t=n==="process"?G:L;return e in t?Object.keys(t[e]):[]}function dt(e,n){const t=n==="process"?G:L;if(!(e in t))return{};const r={};return Object.entries(t[e]).forEach(([o,{dataType:a}])=>{r[o]=a}),r}function gt(e){const n=e==="process"?G:L,t={};return Object.entries(n).forEach(([r,o])=>{t[r]=Object.keys(o)}),t}function pt(e){const n=e==="process"?G:L,t={};return Object.entries(n).forEach(([r,o])=>{t[r]={},Object.entries(o).forEach(([a,{dataType:i}])=>{t[r][a]=i})}),t}function bt(e,n,t){const r=t==="process"?G:L;n in r&&e in r[n]&&delete r[n][e]}function ht(e,n){const t=n==="process"?G:L;e in t&&delete t[e]}function Xn(e,n,t){K[e]={dataType:n,value:t}}c.addGlobalVariable=Xn;function Jn(e){return e in K?K[e]:null}c.getGlobalVariable=Jn;function Qn(){return Object.keys(K)}c.getGlobalVariableNames=Qn;function Yn(){const e={};return Object.entries(K).forEach(([n,{dataType:t}])=>{e[n]=t}),e}c.getGlobalVariableNamesWithTypes=Yn;function Zn(e){e in K&&delete K[e]}c.removeGlobalVariable=Zn;function zn(e,n,t,r){ut(e,n,t,r,"process")}c.addProcessVariable=zn;function er(e,n){return ft(e,n,"process")}c.getProcessVariable=er;function tr(e){return mt(e,"process")}c.getProcessVariableNames=tr;function nr(e){return dt(e,"process")}c.getProcessVariableNamesWithTypes=nr;function rr(){return gt("process")}c.getProcessVariableNamesAll=rr;function or(){return pt("process")}c.getProcessVariableNamesWithTypesAll=or;function ar(e,n){bt(e,n,"process")}c.removeProcessVariable=ar;function ir(e,n,t,r){ut(e,n,t,r,"routine")}c.addRoutineVariable=ir;function lr(e,n){return ft(e,n,"routine")}c.getRoutineVariable=lr;function sr(e){return mt(e,"routine")}c.getRoutineVariableNames=sr;function cr(e){return dt(e,"routine")}c.getRoutineVariableNamesWithTypes=cr;function ur(){return gt("routine")}c.getRoutineVariableNamesAll=ur;function fr(){return pt("routine")}c.getRoutineVariableNamesWithTypesAll=fr;function mr(e,n){bt(e,n,"routine")}c.removeRoutineVariable=mr;function Et(){K={}}c.flushGlobalVariables=Et;function dr(e){ht(e,"process")}c.flushProcessVariables=dr;function yt(){G={}}c.flushProcessVariablesAll=yt;function gr(e){ht(e,"routine")}c.flushRoutineVariables=gr;function vt(){L={}}c.flushRoutineVariablesAll=vt;function pr(){Et(),yt(),vt()}c.flushAllVariables=pr;var v={};Object.defineProperty(v,"__esModule",{value:!0});v.stackTrace=v.getNextElement=v.clearPCOverride=v.setPCOverride=v.getExecutionItem=v.setExecutionItem=v.generateArgumentSequence=v.validateArgumentSequence=void 0;const U=V,Se=f,_t=d;let Be=[],ke=[],Te=[],M={process:{},routine:{},crumbs:{}},E=null;function Re(){Be=(0,Se.getProcessNodes)(),ke=(0,Se.getRoutineNodes)(),Te=(0,Se.getCrumbs)(),M={process:{},routine:{},crumbs:{}};for(const e of Be)M.process[e.nodeID]={frames:[],pc:null,pcHandler:[],pcOverride:null};for(const e of ke)M.routine[e.nodeID]={frames:[],pc:null,pcHandler:[],pcOverride:null};for(const e of Te)M.crumbs[e.nodeID]={frames:[],pc:null,pcHandler:[],pcOverride:null};E=null}function br(e){if(Object.keys(e.argConnections).length===0)return null;function n(t){for(const[r,o]of Object.entries(t.argConnections)){if(o===null)return{instruction:t,argName:r};if(o instanceof U.TreeNodeExpression){const a=n(o);if(a!==null)return a}}return null}return n(e)}v.validateArgumentSequence=br;function hr(e){if(Object.keys(e.argConnections).length===0)return[];function n(t){let r=[];return Object.entries(t.argConnections).forEach(([o,a])=>{a instanceof U.TreeNodeExpression&&(r=[...r,...n(a)]),r.push((0,_t.getInstance)(a.instanceID).instance)}),r}return n(e)}v.generateArgumentSequence=hr;function Er(e){Re();let n;for(const t of Be)if(t.nodeID===e){E={node:t,bucket:"process"},n=M.process[e];break}for(const t of ke)if(t.nodeID===e){E={node:t,bucket:"routine"},n=M.routine[e];break}for(const t of Te)if(t.nodeID===e){E={node:t,bucket:"crumbs"},n=M.crumbs[e];break}n!==void 0&&(n.pc=E.node,n.frames.push({node:E.node,pages:null}))}v.setExecutionItem=Er;function yr(){return E?E.node.nodeID:null}v.getExecutionItem=yr;function vr(e){E!==null&&(M[E.bucket][E.node.nodeID].pcOverride=e)}v.setPCOverride=vr;function _r(){E!==null&&(M[E.bucket][E.node.nodeID].pcOverride=null)}v.clearPCOverride=_r;function Nt(){if(E===null)return null;const e=M[E.bucket][E.node.nodeID];e.pcHandler!==null&&(e.pcHandler.forEach(i=>i()),e.pcHandler=[]);const n=e.pc,t=e.frames;if(n===null){if(t.length===0)return Re(),null;{const i=t[t.length-2];throw Error(`Invalid access: "${i.pages[i.pages.length-1].marker}" of "${i.node.elementName}" (node ID: "${i.node.nodeID}")`)}}const r=(0,_t.getInstance)(n.instanceID).instance;function o(){const i=t[t.length-1];if(i.pages===null&&(i.pages=[],Object.entries(n.argConnections).forEach(([l,s])=>i.pages.push({node:s,marker:l})),i.pages=i.pages.reverse()),i.pages.length!==0){if(i.pages[0].marker==="__rollback__")return e.pcHandler.push(()=>{e.pcOverride!=="__goinnerfirst__"&&t.pop()}),{marker:"__rollback__"};const l=i.pages[i.pages.length-1].node;return e.pcHandler.push(()=>{t.push({node:l,pages:null}),e.pc=l}),{element:Nt()}}else{if(n instanceof U.TreeNodeBlock)return i.pages=[{node:n,marker:"__rollback__"}],a(!0),{element:{type:"Instruction",instance:r,marker:null}};t.pop();let l=null;if(n instanceof U.TreeNodeExpression&&t.length!==0){const s=t[t.length-1].pages;l=s[s.length-1].marker,t[t.length-1].pages.pop()}return{marker:l}}}function a(i){e.pcHandler.push(()=>{let l=n.afterConnection;if(n instanceof U.TreeNodeBlock)if((i||e.pcOverride==="__goinnerfirst__")&&(l=n.innerConnection),e.pcOverride==="__goinnerlast__")for(l=n.innerConnection;l!==null&&l.afterConnection!==null;)l=l.afterConnection;else e.pcOverride==="__skipscope__"&&(t[t.length-1].pages=[{node:n,marker:"__rollback__"}],l=null);e.pcOverride==="__goup__"?l=n.beforeConnection:e.pcOverride==="__skip__"?(l=n.afterConnection,l!==null&&(l=l.afterConnection)):e.pcOverride==="__repeat__"?l=n:(e.pcOverride==="__rollback__"||e.pcOverride==="__rollback__i")&&(t.length>0&&(t[t.length-1].pages=[{node:n,marker:"__rollback__"}]),l=null),e.pcOverride!=="__rollback__i"&&(e.pcOverride=null),l===null?t.length!==0?e.pc=t[t.length-1].node:e.pc=l:(t.push({node:l,pages:null}),e.pc=l)})}if(n instanceof U.TreeNodeData){t.pop();let i=null;if(t.length!==0){const s=t[t.length-1].pages;i=s[s.length-1].marker,t[t.length-1].pages.pop()}const l={type:"Argument",instance:r,marker:i};return e.pcHandler.push(()=>{e.pc=n.connectedTo}),l}else if(n instanceof U.TreeNodeExpression){const i=o();if("element"in i)return i.element;const l={type:"Argument",instance:r,marker:i.marker};return e.pcHandler.push(()=>{e.pc=n.connectedTo}),l}else{const i=o();return"element"in i?i.element:(a(),{type:"Instruction",instance:(n instanceof U.TreeNodeStatement,r),marker:i.marker})}}v.getNextElement=Nt;function Nr(){if(E===null)return null;const e=M[E.bucket][E.node.nodeID],n=e.pc;return[...e.frames.map(({node:t,pages:r})=>({elementName:t?t.elementName:null,nodeID:t?t.nodeID:null,pages:r?r.map(({node:o,marker:a})=>({elementName:o?o.elementName:null,nodeID:o?o.nodeID:null,marker:a})):null})),{elementName:n?n.elementName:null,nodeID:n?n.nodeID:null,pages:null}].reverse()}v.stackTrace=Nr;Re();Object.defineProperty(S,"__esModule",{value:!0});S.run=S.releaseProgramCounter=S.overrideProgramCounter=S.queryVariable=S.declareVariable=void 0;const Ct=c,de=v,Ke=B,Cr=P;function Ir(e,n,t){(0,Ct.addGlobalVariable)(e,n,t)}S.declareVariable=Ir;function Or(e){return(0,Ct.getGlobalVariable)(e)}S.queryVariable=Or;function Sr(e){(0,de.setPCOverride)(e)}S.overrideProgramCounter=Sr;function Pr(){(0,de.clearPCOverride)()}S.releaseProgramCounter=Pr;function Vr(e){class n extends Ke.ElementData{}class t extends Ke.ElementExpression{}(0,de.setExecutionItem)(e);const r={};function o(){const a=(0,de.getNextElement)();if(a===null)return;const{instance:i,type:l,marker:s}=a;if(l==="Argument"){i instanceof n?i.evaluate():i.evaluate(r);const u=i.value;s!==null&&(r[s]=u)}else i instanceof Cr.ElementStatement||s!=="__rollback__"?i.onVisit(r):i.onExit();o()}o()}S.run=Vr;var qe={},$={};Object.defineProperty($,"__esModule",{value:!0});$.ElementValueString=$.ElementValueNumber=$.ElementValueBoolean=void 0;const Ar=B;class $e extends Ar.ElementData{constructor(n,t,r,o){super(n,"",{},r,o),this.updateLabel(t)}evaluate(){switch(this.returnType[0]){case"boolean":if(this.label==="true"||this.label==="false")this._value=this.label==="true";else throw Error(`TypeMismatchError: ${this.label} is not of type "boolean"`);break;case"number":if(!isNaN(Number(this.label)))this._value=Number(this.label);else throw Error(`TypeMismatchError: ${this.label} is not of type "number"`);break;case"string":default:this._value=this.label}}}class Br extends $e{constructor(n,t){super(n,t,["boolean"],!0)}}$.ElementValueBoolean=Br;class kr extends $e{constructor(n,t){super(n,t,["number"],0)}}$.ElementValueNumber=kr;class Tr extends $e{constructor(n,t){super(n,t,["string"],"")}}$.ElementValueString=Tr;var w={};Object.defineProperty(w,"__esModule",{value:!0});w.ElementBoxString=w.ElementBoxNumber=w.ElementBoxBoolean=w.ElementBoxGeneric=void 0;const xr=P,Pe=S;class Ee extends xr.ElementStatement{constructor(n,t,r){super(n,t,{name:["string"],value:r})}onVisit(n){switch(typeof n.value){case"boolean":(0,Pe.declareVariable)(n.name,"boolean",n.value);break;case"number":(0,Pe.declareVariable)(n.name,"number",n.value);break;case"string":(0,Pe.declareVariable)(n.name,"string",n.value);break;default:throw Error("Trespassing access: This should never be reached")}}}class jr extends Ee{constructor(n,t){super(n,t,["boolean","number","string"])}onVisit(n){super.onVisit(n)}}w.ElementBoxGeneric=jr;class Mr extends Ee{constructor(n,t){super(n,t,["boolean"])}onVisit(n){super.onVisit(n)}}w.ElementBoxBoolean=Mr;class wr extends Ee{constructor(n,t){super(n,t,["number"])}onVisit(n){super.onVisit(n)}}w.ElementBoxNumber=wr;class Dr extends Ee{constructor(n,t){super(n,t,["string"])}onVisit(n){super.onVisit(n)}}w.ElementBoxString=Dr;var D={};Object.defineProperty(D,"__esModule",{value:!0});D.ElementBoxIdentifierString=D.ElementBoxIdentifierNumber=D.ElementBoxIdentifierBoolean=D.ElementBoxIdentifierGeneric=void 0;const Rr=B,qr=S;class ye extends Rr.ElementData{constructor(n,t,r,o){super(n,t,{},r,o)}evaluate(){const n=typeof this._value;try{const{dataType:t,value:r}=(0,qr.queryVariable)(this.label);if(this.returnType.length>1)this._value=r;else if(t===n)this._value=r;else throw Error("")}catch{throw this.returnType.length>1?Error(`ItemNotFoundError: box "${this.label}" does not exist`):Error(`ItemNotFoundError: box "${this.label}" of type "${n}" does not exist`)}}}class $r extends ye{constructor(n,t){super(n,t,["boolean","number","string"],"")}}D.ElementBoxIdentifierGeneric=$r;class Gr extends ye{constructor(n,t){super(n,t,["boolean"],!0)}}D.ElementBoxIdentifierBoolean=Gr;class Lr extends ye{constructor(n,t){super(n,t,["number"],0)}}D.ElementBoxIdentifierNumber=Lr;class Ur extends ye{constructor(n,t){super(n,t,["string"],"")}}D.ElementBoxIdentifierString=Ur;var A={};Object.defineProperty(A,"__esModule",{value:!0});A.ElementOperatorMathModulus=A.ElementOperatorMathDivide=A.ElementOperatorMathTimes=A.ElementOperatorMathMinus=A.ElementOperatorMathPlus=void 0;const Fr=B;class oe extends Fr.ElementExpression{constructor(n,t,r,o,a){super(n,"",{operand1:r,operand2:r},r,a),this._operator=o,this.updateLabel(this._operator)}evaluate(n){const{operand1:t,operand2:r}=n;switch(this._operator){case"+":this._value=typeof t=="string"||typeof r=="string"?`${t}${r}`:t+r;break;case"-":this._value=t-r;break;case"*":this._value=t*r;break;case"/":this._value=t/r;break;case"%":this._value=t%r;break}}}class Kr extends oe{constructor(n,t){super(n,t,["number","string"],"+",0)}}A.ElementOperatorMathPlus=Kr;class Wr extends oe{constructor(n,t){super(n,t,["number"],"-",0)}}A.ElementOperatorMathMinus=Wr;class Hr extends oe{constructor(n,t){super(n,t,["number"],"*",0)}}A.ElementOperatorMathTimes=Hr;class Xr extends oe{constructor(n,t){super(n,t,["number"],"/",0)}}A.ElementOperatorMathDivide=Xr;class Jr extends oe{constructor(n,t){super(n,t,["number"],"%",0)}}A.ElementOperatorMathModulus=Jr;var ae={};Object.defineProperty(ae,"__esModule",{value:!0});ae.ElementRepeat=void 0;const Qr=P,Yr=S;class Zr extends Qr.ElementBlock{constructor(n,t){super(n,t,{times:["number"]}),this._counter=0}onVisit(n){this._counter=n.times}onInnerVisit(){}onInnerExit(){}onExit(){this._counter--,this._counter!==0&&(0,Yr.overrideProgramCounter)("__goinnerfirst__")}}ae.ElementRepeat=Zr;var ie={};Object.defineProperty(ie,"__esModule",{value:!0});ie.ElementIf=void 0;const zr=P,eo=S;class to extends zr.ElementBlock{constructor(n,t){super(n,t,{condition:["boolean"]})}onVisit(n){n.condition||(0,eo.overrideProgramCounter)("__skipscope__")}onInnerVisit(){}onInnerExit(){}onExit(){}}ie.ElementIf=to;var H={};Object.defineProperty(H,"__esModule",{value:!0});H.ElementRoutine=H.ElementProcess=void 0;const It=P;class no extends It.ElementBlock{constructor(n,t){super(n,t,{})}onVisit(){}onInnerVisit(){}onInnerExit(){}onExit(){}}H.ElementProcess=no;class ro extends It.ElementBlock{constructor(n,t){super(n,t,{name:["string"]})}onVisit(){}onInnerVisit(){}onInnerExit(){}onExit(){}}H.ElementRoutine=ro;var le={};Object.defineProperty(le,"__esModule",{value:!0});le.ElementPrint=void 0;const oo=P;class ao extends oo.ElementStatement{constructor(n,t){super(n,t,{value:["boolean","number","string"]})}onVisit(n){console.log(n.value)}}le.ElementPrint=ao;Object.defineProperty(qe,"__esModule",{value:!0});const Ve=$,fe=w,me=D,z=A,io=ae,lo=ie,We=H,so=le,co={"value-boolean":{label:"true",type:"Data",category:"value",prototype:Ve.ElementValueBoolean,values:{types:["boolean"]}},"value-number":{label:"0",type:"Data",category:"value",prototype:Ve.ElementValueNumber,values:{types:["number"]}},"value-string":{label:"string",type:"Data",category:"value",prototype:Ve.ElementValueString},"box-generic":{label:"Box",type:"Statement",category:"box",prototype:fe.ElementBoxGeneric},"box-boolean":{label:"Box (boolean)",type:"Statement",category:"box",prototype:fe.ElementBoxBoolean},"box-number":{label:"Box (number)",type:"Statement",category:"box",prototype:fe.ElementBoxNumber},"box-string":{label:"Box (string)",type:"Statement",category:"box",prototype:fe.ElementBoxString},"boxidentifier-generic":{label:"Box 1",type:"Data",category:"boxidentifier",prototype:me.ElementBoxIdentifierGeneric},"boxidentifier-boolean":{label:"Box 1",type:"Data",category:"boxidentifier",prototype:me.ElementBoxIdentifierBoolean},"boxidentifier-number":{label:"Box 1",type:"Data",category:"boxidentifier",prototype:me.ElementBoxIdentifierNumber},"boxidentifier-string":{label:"Box 1",type:"Data",category:"boxidentifier",prototype:me.ElementBoxIdentifierString},"operator-math-plus":{label:"+",type:"Expression",category:"operator-math",prototype:z.ElementOperatorMathPlus},"operator-math-minus":{label:"-",type:"Expression",category:"operator-math",prototype:z.ElementOperatorMathMinus},"operator-math-times":{label:"×",type:"Expression",category:"operator-math",prototype:z.ElementOperatorMathTimes},"operator-math-divide":{label:"÷",type:"Expression",category:"operator-math",prototype:z.ElementOperatorMathDivide},"operator-math-modulus":{label:"%",type:"Expression",category:"operator-math",prototype:z.ElementOperatorMathModulus},repeat:{label:"repeat",type:"Block",category:"loop",prototype:io.ElementRepeat},if:{label:"if",type:"Block",category:"loop",prototype:lo.ElementIf},process:{label:"start",type:"Block",category:"program",prototype:We.ElementProcess,allowAbove:!1,allowBelow:!1},routine:{label:"action",type:"Block",category:"program",prototype:We.ElementRoutine,allowAbove:!1,allowBelow:!1},print:{label:"print",type:"Statement",category:"print",prototype:so.ElementPrint}};qe.default=co;(function(e){var n=Le&&Le.__importDefault||function(q){return q&&q.__esModule?q:{default:q}};Object.defineProperty(e,"__esModule",{value:!0}),e.ElementOperatorMathMinus=e.ElementOperatorMathPlus=e.ElementBoxIdentifierString=e.ElementBoxIdentifierNumber=e.ElementBoxIdentifierBoolean=e.ElementBoxIdentifierGeneric=e.ElementBoxString=e.ElementBoxNumber=e.ElementBoxBoolean=e.ElementBoxGeneric=e.ElementValueString=e.ElementValueNumber=e.ElementValueBoolean=e.librarySpecification=e.run=e.releaseProgramCounter=e.overrideProgramCounter=e.queryVariable=e.declareVariable=e.getCategoryCountAll=e.getCategoryCount=e.getKindCountAll=e.getKindCount=e.getTypeCountAll=e.getTypeCount=e.getNameCountAll=e.getNameCount=e.getInstance=e.assignNodeValue=e.resetSyntaxTree=e.generateFromSnapshot=e.generateSnapshot=e.getNode=e.getCrumbs=e.getRoutineNodes=e.getProcessNodes=e.checkValueAssignment=e.getSpecificationSnapshot=e.resetElementSpecificationTable=e.getElementCategories=e.getElementNames=e.queryElementSpecification=e.removeElementSpecificationEntries=e.removeElementSpecificationEntry=e.registerElementSpecificationEntries=e.registerElementSpecificationEntry=e.ElementBlock=e.ElementStatement=e.ElementExpression=e.ElementData=void 0,e.ElementRoutine=e.ElementProcess=e.ElementPrint=e.ElementRepeat=e.ElementIf=e.ElementOperatorMathModulus=e.ElementOperatorMathDivide=e.ElementOperatorMathTimes=void 0;var t=B;Object.defineProperty(e,"ElementData",{enumerable:!0,get:function(){return t.ElementData}}),Object.defineProperty(e,"ElementExpression",{enumerable:!0,get:function(){return t.ElementExpression}});var r=P;Object.defineProperty(e,"ElementStatement",{enumerable:!0,get:function(){return r.ElementStatement}}),Object.defineProperty(e,"ElementBlock",{enumerable:!0,get:function(){return r.ElementBlock}});var o=h;Object.defineProperty(e,"registerElementSpecificationEntry",{enumerable:!0,get:function(){return o.registerElementSpecificationEntry}}),Object.defineProperty(e,"registerElementSpecificationEntries",{enumerable:!0,get:function(){return o.registerElementSpecificationEntries}}),Object.defineProperty(e,"removeElementSpecificationEntry",{enumerable:!0,get:function(){return o.removeElementSpecificationEntry}}),Object.defineProperty(e,"removeElementSpecificationEntries",{enumerable:!0,get:function(){return o.removeElementSpecificationEntries}}),Object.defineProperty(e,"queryElementSpecification",{enumerable:!0,get:function(){return o.queryElementSpecification}}),Object.defineProperty(e,"getElementNames",{enumerable:!0,get:function(){return o.getElementNames}}),Object.defineProperty(e,"getElementCategories",{enumerable:!0,get:function(){return o.getElementCategories}}),Object.defineProperty(e,"resetElementSpecificationTable",{enumerable:!0,get:function(){return o.resetElementSpecificationTable}}),Object.defineProperty(e,"getSpecificationSnapshot",{enumerable:!0,get:function(){return o.getSpecificationSnapshot}}),Object.defineProperty(e,"checkValueAssignment",{enumerable:!0,get:function(){return o.checkValueAssignment}});var a=f;Object.defineProperty(e,"getProcessNodes",{enumerable:!0,get:function(){return a.getProcessNodes}}),Object.defineProperty(e,"getRoutineNodes",{enumerable:!0,get:function(){return a.getRoutineNodes}}),Object.defineProperty(e,"getCrumbs",{enumerable:!0,get:function(){return a.getCrumbs}}),Object.defineProperty(e,"getNode",{enumerable:!0,get:function(){return a.getNode}}),Object.defineProperty(e,"generateSnapshot",{enumerable:!0,get:function(){return a.generateSnapshot}}),Object.defineProperty(e,"generateFromSnapshot",{enumerable:!0,get:function(){return a.generateFromSnapshot}}),Object.defineProperty(e,"resetSyntaxTree",{enumerable:!0,get:function(){return a.resetSyntaxTree}}),Object.defineProperty(e,"assignNodeValue",{enumerable:!0,get:function(){return a.assignNodeValue}});var i=d;Object.defineProperty(e,"getInstance",{enumerable:!0,get:function(){return i.getInstance}}),Object.defineProperty(e,"getNameCount",{enumerable:!0,get:function(){return i.getNameCount}}),Object.defineProperty(e,"getNameCountAll",{enumerable:!0,get:function(){return i.getNameCountAll}}),Object.defineProperty(e,"getTypeCount",{enumerable:!0,get:function(){return i.getTypeCount}}),Object.defineProperty(e,"getTypeCountAll",{enumerable:!0,get:function(){return i.getTypeCountAll}}),Object.defineProperty(e,"getKindCount",{enumerable:!0,get:function(){return i.getKindCount}}),Object.defineProperty(e,"getKindCountAll",{enumerable:!0,get:function(){return i.getKindCountAll}}),Object.defineProperty(e,"getCategoryCount",{enumerable:!0,get:function(){return i.getCategoryCount}}),Object.defineProperty(e,"getCategoryCountAll",{enumerable:!0,get:function(){return i.getCategoryCountAll}});var l=S;Object.defineProperty(e,"declareVariable",{enumerable:!0,get:function(){return l.declareVariable}}),Object.defineProperty(e,"queryVariable",{enumerable:!0,get:function(){return l.queryVariable}}),Object.defineProperty(e,"overrideProgramCounter",{enumerable:!0,get:function(){return l.overrideProgramCounter}}),Object.defineProperty(e,"releaseProgramCounter",{enumerable:!0,get:function(){return l.releaseProgramCounter}}),Object.defineProperty(e,"run",{enumerable:!0,get:function(){return l.run}});var s=qe;Object.defineProperty(e,"librarySpecification",{enumerable:!0,get:function(){return n(s).default}});var u=$;Object.defineProperty(e,"ElementValueBoolean",{enumerable:!0,get:function(){return u.ElementValueBoolean}}),Object.defineProperty(e,"ElementValueNumber",{enumerable:!0,get:function(){return u.ElementValueNumber}}),Object.defineProperty(e,"ElementValueString",{enumerable:!0,get:function(){return u.ElementValueString}});var g=w;Object.defineProperty(e,"ElementBoxGeneric",{enumerable:!0,get:function(){return g.ElementBoxGeneric}}),Object.defineProperty(e,"ElementBoxBoolean",{enumerable:!0,get:function(){return g.ElementBoxBoolean}}),Object.defineProperty(e,"ElementBoxNumber",{enumerable:!0,get:function(){return g.ElementBoxNumber}}),Object.defineProperty(e,"ElementBoxString",{enumerable:!0,get:function(){return g.ElementBoxString}});var p=D;Object.defineProperty(e,"ElementBoxIdentifierGeneric",{enumerable:!0,get:function(){return p.ElementBoxIdentifierGeneric}}),Object.defineProperty(e,"ElementBoxIdentifierBoolean",{enumerable:!0,get:function(){return p.ElementBoxIdentifierBoolean}}),Object.defineProperty(e,"ElementBoxIdentifierNumber",{enumerable:!0,get:function(){return p.ElementBoxIdentifierNumber}}),Object.defineProperty(e,"ElementBoxIdentifierString",{enumerable:!0,get:function(){return p.ElementBoxIdentifierString}});var y=A;Object.defineProperty(e,"ElementOperatorMathPlus",{enumerable:!0,get:function(){return y.ElementOperatorMathPlus}}),Object.defineProperty(e,"ElementOperatorMathMinus",{enumerable:!0,get:function(){return y.ElementOperatorMathMinus}}),Object.defineProperty(e,"ElementOperatorMathTimes",{enumerable:!0,get:function(){return y.ElementOperatorMathTimes}}),Object.defineProperty(e,"ElementOperatorMathDivide",{enumerable:!0,get:function(){return y.ElementOperatorMathDivide}}),Object.defineProperty(e,"ElementOperatorMathModulus",{enumerable:!0,get:function(){return y.ElementOperatorMathModulus}});var x=ie;Object.defineProperty(e,"ElementIf",{enumerable:!0,get:function(){return x.ElementIf}});var R=ae;Object.defineProperty(e,"ElementRepeat",{enumerable:!0,get:function(){return R.ElementRepeat}});var X=le;Object.defineProperty(e,"ElementPrint",{enumerable:!0,get:function(){return X.ElementPrint}});var W=H;Object.defineProperty(e,"ElementProcess",{enumerable:!0,get:function(){return W.ElementProcess}}),Object.defineProperty(e,"ElementRoutine",{enumerable:!0,get:function(){return W.ElementRoutine}})})(Pt);export{hn as a,yn as b,Le as c,uo as g,Pt as m,_n as r}; +//# sourceMappingURL=index-4245e63e.js.map diff --git a/assets/index-4245e63e.js.gz b/assets/index-4245e63e.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..67f32a8176488543b34dd821fd70c3e899f18512 GIT binary patch literal 12290 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 literal 0 HcmV?d00001 diff --git a/assets/index-4245e63e.js.map b/assets/index-4245e63e.js.map new file mode 100644 index 00000000..551739bf --- /dev/null +++ b/assets/index-4245e63e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-4245e63e.js","sources":["../../../node_modules/@sugarlabs/musicblocks-v4-lib/syntax/elements/elementSyntax.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/syntax/elements/elementArgument.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/syntax/elements/elementInstruction.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/syntax/specification/specification.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/regex.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/validate.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/v1.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/parse.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/v35.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/md5.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/v3.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/v4.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/sha1.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/v5.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/nil.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/node_modules/uuid/dist/esm-browser/version.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/syntax/warehouse/warehouse.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/syntax/tree/node.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/syntax/tree/syntaxTree.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/execution/symbolTable.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/execution/parser.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/execution/interpreter.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementValue.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementBox.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementBoxIdentifier.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementOperatorMath.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementLoop.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementConditional.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementProgram.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/elements/elementPrint.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/library/specification.js","../../../node_modules/@sugarlabs/musicblocks-v4-lib/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementSyntax = void 0;\n// -------------------------------------------------------------------------------------------------\n/**\n * @virtual\n * @class\n * Defines a generic syntax element and it's properties.\n *\n * @classdesc\n * Syntax elements define the building blocks of a Music Blocks program. Every building block\n * element need to inherit this class.\n */\nclass ElementSyntax {\n /**\n *\n * @param name name of the syntax element\n * @param label display of the syntax element\n * @param kind kind (`Argument`, `Instruction`) of the syntax element\n * @param type type (`Data`, `Expression`, `Statement`, `Block`) of the syntax element\n * @param argMap an object describing the type specification of each argument as a\n * `argName: type[]` pair\n */\n constructor(name, label, kind, type, argMap) {\n this._name = name;\n this._label = label;\n this._kind = kind;\n this._type = type;\n this._argMap = argMap;\n this._argLabels = Object.keys(this._argMap);\n this._argCount = this.argLabels.length;\n }\n get name() {\n return this._name;\n }\n get label() {\n return this._label;\n }\n get kind() {\n return this._kind;\n }\n get type() {\n return this._type;\n }\n get argCount() {\n return this._argCount;\n }\n get argLabels() {\n return this._argLabels;\n }\n getArgType(argName) {\n return this._argMap[argName];\n }\n updateLabel(value) {\n this._label = value;\n }\n}\nexports.ElementSyntax = ElementSyntax;\n//# sourceMappingURL=elementSyntax.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementExpression = exports.ElementData = exports.ElementArgument = void 0;\nconst elementSyntax_1 = require(\"./elementSyntax\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @virtual\n * @class\n * Generic class that defines a generic argument element.\n *\n * @classdesc\n * Argument elements return a value which is either stored (data element) or evaluated (expression\n * element) from the parameters passed. Every data element and expression element needs to extend\n * this class.\n */\nclass ElementArgument extends elementSyntax_1.ElementSyntax {\n /**\n * @param name name of the argument element\n * @param label display name of the instruction element\n * @param type type (`Data`, `Expression`) of the argument element\n * @param argMap an object describing the type specification of each argument as a\n * `argName: type[]` pair\n * @param returnType return types of the value returned by the argument element\n * @param initialValue initial return value of the argument\n */\n constructor(name, label, type, argMap, returnType, initialValue) {\n super(name, label, 'Argument', type, argMap);\n this._returnType = returnType;\n this._value = initialValue;\n }\n get returnType() {\n return this._returnType;\n }\n get value() {\n return this._value;\n }\n}\nexports.ElementArgument = ElementArgument;\n/**\n * @virtual\n * @class\n * Generic class that defines a generic data element.\n *\n * @classdesc\n * Data elements return a stored value.\n */\nclass ElementData extends ElementArgument {\n /**\n * @param name - name of the data element\n * @param label - display name of the instruction element\n * @param argMap - an object describing the type specification of each argument as a\n * `argName: type[]` pair\n * @param returnType - return types of the value returned by the argument element\n * @param initialValue - initial return value of the argument\n */\n constructor(name, label, argMap, returnType, initialValue) {\n super(name, label, 'Data', argMap, returnType, initialValue);\n }\n}\nexports.ElementData = ElementData;\n/**\n * @virtual\n * @class\n * Generic class that defines a generic expression element.\n *\n * @classdesc\n * Expression elements evalutate a value based on the provided passed whose shape is in accordance\n * with the shape of arguments it registers.\n */\nclass ElementExpression extends ElementArgument {\n /**\n * @param name name of the expression element\n * @param label display name of the instruction element\n * @param argMap an object describing the type specification of each argument as a\n * `argName: type[]` pair\n * @param returnType return types of the value returned by the argument element\n * @param initialValue initial return value of the argument\n */\n constructor(name, label, argMap, returnType, initialValue) {\n super(name, label, 'Expression', argMap, returnType, initialValue);\n }\n}\nexports.ElementExpression = ElementExpression;\n//# sourceMappingURL=elementArgument.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementBlock = exports.ElementStatement = exports.ElementInstruction = void 0;\nconst elementSyntax_1 = require(\"./elementSyntax\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @virtual\n * @class\n * Defines a generic instruction element.\n *\n * @classdesc\n * Instruction elements execute logic and may operate on the parameters passed. Every statement\n * element and block element needs to extend this class.\n */\nclass ElementInstruction extends elementSyntax_1.ElementSyntax {\n /**\n * @param name name of the instruction element\n * @param label display name of the instruction element\n * @param type type (`Statement`, `Block`) of the instruction element\n * @param argMap an object describing the type specification of each argument as a\n * `argName: type[]` pair\n */\n constructor(name, label, type, argMap) {\n super(name, label, 'Instruction', type, argMap);\n }\n}\nexports.ElementInstruction = ElementInstruction;\n/**\n * @virtual\n * @class\n * Defines a generic statement element.\n *\n * @classdesc\n * Statement elements execute one single logic.\n */\nclass ElementStatement extends ElementInstruction {\n /**\n * @param name name of the statement element\n * @param label display name of the instruction element\n * @param argMap an object describing the type specification of each argument as a\n * `argName: type[]` pair\n */\n constructor(name, label, argMap) {\n super(name, label, 'Statement', argMap);\n }\n}\nexports.ElementStatement = ElementStatement;\n/**\n * @virtual\n * @class\n * Defines a generic block element.\n *\n * @classdesc\n * Block elements encapsulate other instruction elements and set-up states prior to their execution.\n * After the contained instruction elements have completed execution, the initial state prior to\n * visiting the block element is restored.\n */\nclass ElementBlock extends ElementInstruction {\n /**\n * @param name name of the block element\n * @param label display name of the instruction element\n * @param argMap an object describing the type specification of each argument as a\n * `argName: type[]` pair\n */\n constructor(name, label, argMap) {\n super(name, label, 'Block', argMap);\n }\n}\nexports.ElementBlock = ElementBlock;\n//# sourceMappingURL=elementInstruction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkValueAssignment = exports.getSpecificationSnapshot = exports.resetElementSpecificationTable = exports.getElementCategories = exports.getElementNames = exports.queryElementSpecification = exports.removeElementSpecificationEntries = exports.removeElementSpecificationEntry = exports.registerElementSpecificationEntries = exports.registerElementSpecificationEntry = void 0;\n// -- private variables ----------------------------------------------------------------------------\n/** Stores the specifications for each element as a key-value pair of name: specification. */\nlet _elementSpecification = {};\n/**\n * Stores the snapshot (similar to snapshot, except that prototype is replaced with prototype name —\n * class name of the syntax element or the prototype) of the specifications for each element as a\n * key-value pair of name: specification.\n */\nlet _elementSpecificationSnapshot = {};\n// -- public functions -----------------------------------------------------------------------------\n/**\n * Registers a syntax element specification from a given specification entry data.\n * @param name name of the syntax element\n * @param specification specification entry data\n * @returns `false` if element name already exists, else `true`\n */\nfunction registerElementSpecificationEntry(name, specification) {\n if (name in _elementSpecification)\n return false;\n const { label, type, category, prototype } = specification;\n const specificationTableEntry = {\n label,\n type,\n category,\n // @ts-ignore\n prototype: (name, label) => new prototype(name, label),\n };\n const specificationSnapshotTableEntry = {\n label,\n type,\n category,\n prototypeName: prototype.name,\n };\n Object.entries(specification).forEach(([key, value]) => {\n if (!['label', 'type', 'category', 'prototype'].includes(key)) {\n // @ts-ignore\n specificationTableEntry[key] = value;\n // @ts-ignore\n specificationSnapshotTableEntry[key] = value;\n }\n });\n _elementSpecification[name] = specificationTableEntry;\n _elementSpecificationSnapshot[name] = specificationSnapshotTableEntry;\n return name in _elementSpecification;\n}\nexports.registerElementSpecificationEntry = registerElementSpecificationEntry;\n/**\n * Registers a syntax element specification from a given specification entry table.\n * @param specification specification entry table object with key-value pairs of element name and\n * corresponding specification entry data\n * @returns a list of boolean , `false` if element name already exists else `true`\n */\nfunction registerElementSpecificationEntries(specification) {\n const registerStatus = [];\n Object.entries(specification).forEach(([identifier, specification]) => registerStatus.push(registerElementSpecificationEntry(identifier, specification)));\n return registerStatus;\n}\nexports.registerElementSpecificationEntries = registerElementSpecificationEntries;\n/**\n * Removes specification for a syntax element.\n * @param name name of the syntax element\n * @returns `true` if element is successfully removed, else `false` if element doesn't exist already\n */\nfunction removeElementSpecificationEntry(name) {\n if (name in _elementSpecification) {\n delete _elementSpecification[name];\n delete _elementSpecificationSnapshot[name];\n return true;\n }\n else {\n return false;\n }\n}\nexports.removeElementSpecificationEntry = removeElementSpecificationEntry;\n/**\n * Removes specification for a list of syntax element.\n * @param names list of names of the syntax element\n * @returns list of boolean, `true` if element is successfully removed, else `false`\n */\nfunction removeElementSpecificationEntries(names) {\n const removeStatus = [];\n names.forEach((name) => removeStatus.push(removeElementSpecificationEntry(name)));\n return removeStatus;\n}\nexports.removeElementSpecificationEntries = removeElementSpecificationEntries;\n/**\n * Returns the element specification for a syntax element.\n * @param name name of the syntax element\n * @returns element specification if exists, else `null`\n */\nfunction queryElementSpecification(name) {\n return name in _elementSpecification ? Object.assign({}, _elementSpecification[name]) : null;\n}\nexports.queryElementSpecification = queryElementSpecification;\n/**\n * Returns the names of available syntax elements.\n * @returns a list of syntax element names.\n */\nfunction getElementNames() {\n return Object.keys(_elementSpecification);\n}\nexports.getElementNames = getElementNames;\n/**\n * Returns the categories of available syntax elements.\n * @returns a list of syntax element categories\n */\nfunction getElementCategories() {\n return [...new Set(Object.entries(_elementSpecification).map(([_, { category }]) => category))];\n}\nexports.getElementCategories = getElementCategories;\n/**\n * Resets the element specification to factory list.\n */\nfunction resetElementSpecificationTable() {\n _elementSpecification = {};\n _elementSpecificationSnapshot = {};\n}\nexports.resetElementSpecificationTable = resetElementSpecificationTable;\n/**\n * Returns the snapshot of the element specification table.\n * @returns snapshot entry table object with key-value pairs of element name and corresponding\n * element specification snapshot\n */\nfunction getSpecificationSnapshot() {\n return _elementSpecificationSnapshot;\n}\nexports.getSpecificationSnapshot = getSpecificationSnapshot;\n/**\n * Check if `value` can be assigned to element `name`.\n * @param name name of the syntax element (expecting a data element)\n * @param value value to check\n * @returns whether value can be assigned\n */\nfunction checkValueAssignment(name, value) {\n if ('values' in _elementSpecification[name]) {\n const values = _elementSpecification[name].values;\n if (values instanceof Array) {\n return values.includes(value);\n }\n else {\n let typeDeepInfer;\n if (['true', 'false'].includes(value)) {\n typeDeepInfer = 'boolean';\n }\n else if (!isNaN(Number(value))) {\n typeDeepInfer = 'number';\n }\n else {\n typeDeepInfer = 'string';\n }\n return (values.types.includes(typeDeepInfer) || values.types.includes('string'));\n }\n }\n return true;\n}\nexports.checkValueAssignment = checkValueAssignment;\nresetElementSpecificationTable();\n//# sourceMappingURL=specification.js.map","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resetWarehouse = exports.getCategoryCountAll = exports.getCategoryCount = exports.getTypeCountAll = exports.getTypeCount = exports.getKindCountAll = exports.getKindCount = exports.getNameCountAll = exports.getNameCount = exports.removeInstance = exports.getInstance = exports.addInstance = void 0;\nconst uuid_1 = require(\"uuid\");\nconst specification_1 = require(\"../specification/specification\");\nconst elementArgument_1 = require(\"../elements/elementArgument\");\n// -- private variables ----------------------------------------------------------------------------\n/** A non-generic wrapper for class `ElementData`. */\nclass _ElementDataCover extends elementArgument_1.ElementData {\n}\n/** A non-generic wrapper for class `ElementExpression`. */\nclass _ElementExpressionCover extends elementArgument_1.ElementExpression {\n}\n/** Stores the count of element name. */\nlet _elementNameCountMap = {};\n/** Stores the count of element kind. */\nlet _elementKindCountMap = {};\n/** Stores the count of element type. */\nlet _elementTypeCountMap = {};\n/** Stores the count of element category. */\nlet _elementCategoryCountMap = {};\n/** Stores an extensive table of element name, kind, type, category, instance, by instance ID. */\nlet _elementMap = {};\n// -- private functions ----------------------------------------------------------------------------\n/**\n * Helper function that creates a new instance, adds to element table, and updates count tables.\n * @param elementName - name of the element\n * @param instanceID - key for entry in element table\n * @param instance - element instance\n * @param type - type of the element\n * @param category - category of the element\n */\nfunction _addInstance(elementName, instanceID, instance, type, category) {\n const kind = type === 'Data' || type === 'Expression' ? 'Argument' : 'Instruction';\n switch (type) {\n case 'Data':\n _elementMap[instanceID] = {\n instance: instance,\n name: elementName,\n type: type,\n kind: 'Argument',\n category: category,\n };\n break;\n case 'Expression':\n _elementMap[instanceID] = {\n instance: instance,\n name: elementName,\n type: type,\n kind: 'Argument',\n category: category,\n };\n break;\n case 'Statement':\n _elementMap[instanceID] = {\n instance: instance,\n name: elementName,\n type: type,\n kind: 'Instruction',\n category: category,\n };\n break;\n case 'Block':\n _elementMap[instanceID] = {\n instance: instance,\n name: elementName,\n type: type,\n kind: 'Instruction',\n category: category,\n };\n break;\n }\n _elementNameCountMap[elementName]++;\n _elementKindCountMap[kind]++;\n _elementTypeCountMap[type]++;\n _elementCategoryCountMap[category]++;\n}\n/**\n * Helper that resets the element name count table.\n */\nfunction _resetElementNameCountMap() {\n _elementNameCountMap = {};\n (0, specification_1.getElementNames)().forEach((elementName) => (_elementNameCountMap[elementName] = 0));\n}\n/**\n * Helper that resets the element kind count table.\n */\nfunction _resetElementKindCountMap() {\n _elementKindCountMap = {\n Argument: 0,\n Instruction: 0,\n };\n}\n/**\n * Helper that resets the element type count table.\n */\nfunction _resetElementTypeCountMap() {\n _elementTypeCountMap = {\n Data: 0,\n Expression: 0,\n Statement: 0,\n Block: 0,\n };\n}\n/**\n * Helper that resets the element category count table.\n */\nfunction _resetElementCategoryCountMap() {\n _elementCategoryCountMap = {};\n (0, specification_1.getElementCategories)().forEach((category) => (_elementCategoryCountMap[category] = 0));\n}\n// -- public functions -----------------------------------------------------------------------------\n/**\n * Creates a new instance, adds to element table, and updates count tables.\n * @param elementName - name of the element\n * @returns - unique instance ID for the element instance\n */\nfunction addInstance(elementName) {\n const elementSpecification = (0, specification_1.queryElementSpecification)(elementName);\n if (elementSpecification === null) {\n throw Error(`InvalidAccessError: element with name \"${elementName}\" does not exist`);\n }\n const { label, type, category, prototype } = elementSpecification;\n let instance;\n switch (type) {\n case 'Data':\n instance = prototype(elementName, label);\n break;\n case 'Expression':\n instance = prototype(elementName, label);\n break;\n case 'Statement':\n instance = prototype(elementName, label);\n break;\n case 'Block':\n default:\n instance = prototype(elementName, label);\n }\n let instanceID;\n do {\n instanceID = (0, uuid_1.v4)();\n } while (instanceID in _elementMap);\n _addInstance(elementName, instanceID, instance, type, category);\n return instanceID;\n}\nexports.addInstance = addInstance;\n/**\n * Fetches the element instance entry from element table.\n * @param instanceID - instance ID of the element in element table\n * @returns element instance with additional properties\n */\nfunction getInstance(instanceID) {\n return instanceID in _elementMap ? Object.assign({}, _elementMap[instanceID]) : null;\n}\nexports.getInstance = getInstance;\n/**\n * Removes the element entry corresponding to the instance ID and updates count tables.\n * @param instanceID - instance ID of the element in element table\n */\nfunction removeInstance(instanceID) {\n if (!(instanceID in _elementMap)) {\n return;\n }\n const { name, kind, type, category } = _elementMap[instanceID];\n _elementNameCountMap[name]--;\n _elementKindCountMap[kind]--;\n _elementTypeCountMap[type]--;\n _elementCategoryCountMap[category]--;\n delete _elementMap[instanceID];\n}\nexports.removeInstance = removeInstance;\n/**\n * Returns the number of element instances of an element name exists in element table.\n * @param name - name of the element\n * @returns count of the element instances for the element name\n */\nfunction getNameCount(name) {\n return _elementNameCountMap[name];\n}\nexports.getNameCount = getNameCount;\n/**\n * Generates a table of element instance counts by element name.\n * @returns an object with key-value pairs of element name and instance count\n */\nfunction getNameCountAll() {\n return Object.assign({}, _elementNameCountMap);\n}\nexports.getNameCountAll = getNameCountAll;\n/**\n * Returns the number of element instances of an element kind exists in element table.\n * @param kind - kind of the element\n * @returns count of the element instances for the element kind\n */\nfunction getKindCount(kind) {\n return _elementKindCountMap[kind];\n}\nexports.getKindCount = getKindCount;\n/**\n * Generates a table of element instance counts by element kind.\n * @returns an object with key-value pairs of element kind and instance count\n */\nfunction getKindCountAll() {\n return Object.assign({}, _elementKindCountMap);\n}\nexports.getKindCountAll = getKindCountAll;\n/**\n * Returns the number of element instances of an element type exists in element table.\n * @param type - type of the element\n * @returns count of the element instances for the element type\n */\nfunction getTypeCount(type) {\n return _elementTypeCountMap[type];\n}\nexports.getTypeCount = getTypeCount;\n/**\n * Generates a table of element instance counts by element type.\n * @returns an object with key-value pairs of element type and instance count\n */\nfunction getTypeCountAll() {\n return Object.assign({}, _elementTypeCountMap);\n}\nexports.getTypeCountAll = getTypeCountAll;\n/**\n * Returns the number of element instances of an element category exists in element table.\n * @param category - category of the element\n * @returns count of the element instances for the element category\n */\nfunction getCategoryCount(category) {\n return _elementCategoryCountMap[category];\n}\nexports.getCategoryCount = getCategoryCount;\n/**\n * Generates a table of element instance counts by element category.\n * @returns an object with key-value pairs of element category and instance count\n */\nfunction getCategoryCountAll() {\n return Object.assign({}, _elementCategoryCountMap);\n}\nexports.getCategoryCountAll = getCategoryCountAll;\n/**\n * Resets all the count tables and element map.\n */\nfunction resetWarehouse() {\n _elementMap = {};\n _resetElementNameCountMap();\n _resetElementKindCountMap();\n _resetElementTypeCountMap();\n _resetElementCategoryCountMap();\n}\nexports.resetWarehouse = resetWarehouse;\nresetWarehouse();\n//# sourceMappingURL=warehouse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TreeNodeBlock = exports.TreeNodeStatement = exports.TreeNodeExpression = exports.TreeNodeData = exports.TreeNode = void 0;\nconst warehouse_1 = require(\"../warehouse/warehouse\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @virtual\n * @class\n * Defines a generic syntax tree node.\n */\nclass TreeNode {\n constructor(\n /** Name of the syntax element. */\n elementName, \n /** Node ID of the syntax tree node instance. */\n nodeID, \n /** Warehouse ID of the syntax element instance. */\n instanceID) {\n /** Stores key-value pairs of argument names and corresponding argument nodes. */\n this._argConnections = {};\n this._elementName = elementName;\n this._nodeID = nodeID;\n this._instanceID = instanceID;\n const instance = (0, warehouse_1.getInstance)(this._instanceID);\n instance.instance.argLabels.forEach((label) => (this._argConnections[label] = null));\n }\n get nodeID() {\n return this._nodeID;\n }\n get instanceID() {\n return this._instanceID;\n }\n /**\n * Helper that adds an argument connection.\n * @param argName - name of the argument\n * @param node - node instance of the connecting node\n */\n _attachArg(argName, node) {\n this._argConnections[argName] = node;\n }\n /**\n * Helper that removes an argument connection.\n * @param argName - name of the argument\n */\n _detachArg(argName) {\n this._argConnections[argName] = null;\n }\n /**\n * Helper that generates a snapshot of the arguments.\n */\n _getArgSnapshot() {\n const instance = (0, warehouse_1.getInstance)(this._instanceID);\n if (instance.instance.argCount === 0) {\n return null;\n }\n this._elementName;\n const snapshot = {};\n instance.instance.argLabels.forEach((label) => (snapshot[label] =\n this._argConnections[label] === null\n ? null\n : this._argConnections[label].snapshot));\n return snapshot;\n }\n}\nexports.TreeNode = TreeNode;\n/**\n * @virtual\n * @class\n * Defines a generic syntax tree argument element node.\n */\nclass TreeNodeArgument extends TreeNode {\n constructor() {\n super(...arguments);\n this.connectedTo = null;\n }\n}\n/**\n * @class\n * Defines a syntax tree data element node.\n */\nclass TreeNodeData extends TreeNodeArgument {\n get elementName() {\n return this._elementName;\n }\n get snapshot() {\n return {\n elementName: this._elementName,\n nodeID: this._nodeID,\n };\n }\n}\nexports.TreeNodeData = TreeNodeData;\n/**\n * @class\n * Defines a syntax tree expression element node.\n */\nclass TreeNodeExpression extends TreeNodeArgument {\n constructor() {\n super(...arguments);\n this.argConnections = this._argConnections;\n this.attachArg = super._attachArg;\n this.detachArg = super._detachArg;\n }\n get elementName() {\n return this._elementName;\n }\n get snapshot() {\n return {\n elementName: this._elementName,\n nodeID: this._nodeID,\n argMap: this._getArgSnapshot(),\n };\n }\n}\nexports.TreeNodeExpression = TreeNodeExpression;\n/**\n * @virtual\n * @class\n * Defines a generic syntax tree instruction element node.\n */\nclass TreeNodeInstruction extends TreeNode {\n constructor() {\n super(...arguments);\n this.argConnections = this._argConnections;\n this.attachArg = super._attachArg;\n this.detachArg = super._detachArg;\n this.beforeConnection = null;\n this.afterConnection = null;\n this.nestLevel = 0;\n this.parentBlock = null;\n }\n}\n/**\n * @class\n * Defines a syntax tree statement element node.\n */\nclass TreeNodeStatement extends TreeNodeInstruction {\n get elementName() {\n return this._elementName;\n }\n get snapshot() {\n return {\n elementName: this._elementName,\n nodeID: this._nodeID,\n argMap: this._getArgSnapshot(),\n };\n }\n}\nexports.TreeNodeStatement = TreeNodeStatement;\n/**\n * @class\n * Defines a syntax tree block element node.\n */\nclass TreeNodeBlock extends TreeNodeInstruction {\n constructor() {\n super(...arguments);\n this.innerConnection = null;\n this.innerCount = 0;\n }\n get elementName() {\n return this._elementName;\n }\n get snapshot() {\n const scope = [];\n let nextNode = this.innerConnection;\n while (nextNode !== null) {\n scope.push(nextNode.snapshot);\n nextNode = nextNode.afterConnection;\n }\n return {\n elementName: this._elementName,\n nodeID: this._nodeID,\n argMap: this._getArgSnapshot(),\n scope,\n };\n }\n}\nexports.TreeNodeBlock = TreeNodeBlock;\n//# sourceMappingURL=node.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignNodeValue = exports.generateFromSnapshot = exports.generateSnapshot = exports.detachInstructionInside = exports.attachInstructionInside = exports.attachInstructionInsideCheck = exports.detachInstructionBelow = exports.attachInstructionBelow = exports.attachInstructionBelowCheck = exports.detachArgument = exports.attachArgument = exports.attachArgumentCheck = exports.resetSyntaxTree = exports.removeNode = exports.getNode = exports.addNode = exports.getCrumbs = exports.getRoutineNodes = exports.getProcessNodes = void 0;\nconst uuid_1 = require(\"uuid\");\nconst node_1 = require(\"./node\");\nconst warehouse_1 = require(\"../warehouse/warehouse\");\nconst specification_1 = require(\"../specification/specification\");\n// -- private variables ----------------------------------------------------------------------------\n/** Stores a table with key-value pairs of node ID and corresponding node instance. */\nconst _nodeMap = {};\n/** Stores the syntax tree. */\nlet _syntaxTree = {\n process: [],\n routine: [],\n crumbs: [],\n};\n// -- private functions ----------------------------------------------------------------------------\n/**\n * Helper that removes corresponding element instance and removes node table entry.\n * @param nodeID - node ID\n */\nfunction _destroyNode(nodeID) {\n if (!(nodeID in _nodeMap)) {\n return;\n }\n const node = _nodeMap[nodeID];\n (0, warehouse_1.removeInstance)(node.instanceID);\n delete _nodeMap[nodeID];\n}\n/**\n * Helper that checks whether two instruction element nodes can be connected.\n * @param connectorNodeID - node ID of the connector node\n * @param connectingNodeID - node ID of the connecting node\n * @returns `true` if node connections are valid, else `false`\n */\nfunction _attachInstructionCheck(connectorNodeID, connectingNodeID) {\n if (!(connectorNodeID in _nodeMap) || !(connectingNodeID in _nodeMap)) {\n return false;\n }\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n const specificationConnector = (0, specification_1.queryElementSpecification)(nodeConnector.elementName);\n const specificationConnecting = (0, specification_1.queryElementSpecification)(nodeConnecting.elementName);\n if (specificationConnector.type === 'Data' ||\n specificationConnector.type === 'Expression' ||\n specificationConnecting.type === 'Data' ||\n specificationConnecting.type === 'Expression') {\n return false;\n }\n return true;\n}\n// -- public functions -----------------------------------------------------------------------------\n/**\n * @returns the list of process element nodes.\n */\nfunction getProcessNodes() {\n return _syntaxTree['process'];\n}\nexports.getProcessNodes = getProcessNodes;\n/**\n * @returns the list of routine element nodes.\n */\nfunction getRoutineNodes() {\n return _syntaxTree['routine'];\n}\nexports.getRoutineNodes = getRoutineNodes;\n/**\n * @returns the list of top instruction element nodes of crumb stacks.\n */\nfunction getCrumbs() {\n return _syntaxTree['crumbs'];\n}\nexports.getCrumbs = getCrumbs;\n/**\n * Adds a new element to the syntax tree.\n * @param name - name of the syntax element\n * @returns node ID of the syntax tree node\n */\nfunction addNode(name) {\n const instanceID = (0, warehouse_1.addInstance)(name);\n let nodeID;\n do {\n nodeID = (0, uuid_1.v4)();\n } while (nodeID in _nodeMap);\n let node;\n const specification = (0, specification_1.queryElementSpecification)(name);\n switch (specification.type) {\n case 'Data':\n node = new node_1.TreeNodeData(name, nodeID, instanceID);\n break;\n case 'Expression':\n node = new node_1.TreeNodeExpression(name, nodeID, instanceID);\n break;\n case 'Statement':\n node = new node_1.TreeNodeStatement(name, nodeID, instanceID);\n break;\n case 'Block':\n default:\n node = new node_1.TreeNodeBlock(name, nodeID, instanceID);\n }\n _nodeMap[nodeID] = node;\n if (name === 'process') {\n _syntaxTree['process'].push(node);\n }\n else if (name === 'routine') {\n _syntaxTree['routine'].push(node);\n }\n else {\n _syntaxTree['crumbs'].push(node);\n }\n return nodeID;\n}\nexports.addNode = addNode;\n/**\n * Returns a new entry from the syntax tree.\n * @param nodeID - node ID of the syntax tree node\n * @returns syntax tree node entry if present, else `null`\n */\nfunction getNode(nodeID) {\n return nodeID in _nodeMap ? _nodeMap[nodeID] : null;\n}\nexports.getNode = getNode;\n/**\n * Removes an element node from the syntax tree.\n * @param nodeID - node ID of the syntax tree node\n */\nfunction removeNode(nodeID) {\n if (!(nodeID in _nodeMap)) {\n return;\n }\n const node = _nodeMap[nodeID];\n let list;\n if (node.elementName === 'process') {\n list = _syntaxTree['process'];\n }\n else if (node.elementName === 'routine') {\n list = _syntaxTree['routine'];\n }\n else {\n list = _syntaxTree['crumbs'];\n }\n list.splice(list.indexOf(node), 1);\n _destroyNode(nodeID);\n}\nexports.removeNode = removeNode;\n/**\n * Resets the syntax tree — removes all nodes and syntax element instances.\n */\nfunction resetSyntaxTree() {\n Object.entries(_nodeMap).forEach(([nodeID]) => {\n _destroyNode(nodeID);\n });\n _syntaxTree = {\n process: [],\n routine: [],\n crumbs: [],\n };\n}\nexports.resetSyntaxTree = resetSyntaxTree;\n/**\n * Checks whether an argument element node can be connected.\n * @param connectorNodeID - node ID of the connector node\n * @param connectingNodeID - node ID of the connecting argument element node\n * @returns - `true` if node connections are valid, else `false`\n */\nfunction attachArgumentCheck(connectorNodeID, connectingNodeID, argName) {\n if (!(connectorNodeID in _nodeMap) || !(connectingNodeID in _nodeMap)) {\n return false;\n }\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n const specificationConnector = (0, specification_1.queryElementSpecification)(nodeConnector.elementName);\n const specificationConnecting = (0, specification_1.queryElementSpecification)(nodeConnecting.elementName);\n if (specificationConnector.type === 'Data' ||\n specificationConnecting.type === 'Statement' ||\n specificationConnecting.type === 'Block') {\n return false;\n }\n const instanceConnector = (0, warehouse_1.getInstance)(nodeConnector.instanceID);\n const instanceConnecting = (0, warehouse_1.getInstance)(nodeConnecting.instanceID);\n if (!instanceConnector.instance.argLabels.includes(argName)) {\n return false;\n }\n const typeConnector = instanceConnector.instance.getArgType(argName);\n const typeConnecting = instanceConnecting.instance.returnType;\n for (const type of typeConnecting) {\n if (!typeConnector.includes(type)) {\n return false;\n }\n }\n return true;\n}\nexports.attachArgumentCheck = attachArgumentCheck;\n/**\n * Attaches an argument element node.\n * @param connectorNodeID - node ID of the connector node\n * @param connectingNodeID - node ID of the connecting argument element node\n * @param argName - name of the argument\n */\nfunction attachArgument(connectorNodeID, connectingNodeID, argName) {\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n nodeConnector.attachArg(argName, nodeConnecting);\n nodeConnecting.connectedTo = nodeConnector;\n if (_syntaxTree.crumbs.includes(nodeConnecting)) {\n _syntaxTree.crumbs.splice(_syntaxTree.crumbs.indexOf(nodeConnecting), 1);\n }\n}\nexports.attachArgument = attachArgument;\n/**\n * Detaches an argument element node.\n * @param connectorNodeID - node ID of the connector node\n * @param connectingNodeID - node ID of the connecting argument element node\n * @param argName - name of the argument\n */\nfunction detachArgument(connectorNodeID, connectingNodeID, argName) {\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n nodeConnector.detachArg(argName);\n nodeConnecting.connectedTo = null;\n _syntaxTree.crumbs.push(nodeConnecting);\n}\nexports.detachArgument = detachArgument;\n/**\n * Checks whether an instruction element node can be connected in sequence after another instruction\n * element node.\n * @param connectorNodeID - node ID of the connector instruction element node\n * @param connectingNodeID - node ID of the connecting instruction element node\n * @returns - `true` if node connections are valid, else `false`\n */\nfunction attachInstructionBelowCheck(connectorNodeID, connectingNodeID) {\n if (!_attachInstructionCheck(connectorNodeID, connectingNodeID)) {\n return false;\n }\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n const specificationConnector = (0, specification_1.queryElementSpecification)(nodeConnector.elementName);\n const specificationConnecting = (0, specification_1.queryElementSpecification)(nodeConnecting.elementName);\n if ((specificationConnector.forbidBelow &&\n specificationConnector.forbidBelow.includes(nodeConnecting.elementName)) ||\n (specificationConnecting.forbidAbove &&\n specificationConnecting.forbidAbove.includes(nodeConnector.elementName))) {\n return false;\n }\n if (specificationConnector.allowBelow !== undefined) {\n if (specificationConnector.allowBelow instanceof Array) {\n if (!specificationConnector.allowBelow.includes(nodeConnecting.elementName)) {\n return false;\n }\n }\n else {\n if (specificationConnector.allowBelow === false) {\n return false;\n }\n }\n }\n if (specificationConnecting.allowAbove !== undefined) {\n if (specificationConnecting.allowAbove instanceof Array) {\n if (!specificationConnecting.allowAbove.includes(nodeConnector.elementName)) {\n return false;\n }\n }\n else {\n if (specificationConnector.allowAbove === false) {\n return false;\n }\n }\n }\n return true;\n}\nexports.attachInstructionBelowCheck = attachInstructionBelowCheck;\n/**\n * Attaches an instruction element node in sequence after another instruction element node.\n * @param connectorNodeID - node ID of the connector instruction element node\n * @param connectingNodeID - node ID of the connecting instruction element node\n */\nfunction attachInstructionBelow(connectorNodeID, connectingNodeID) {\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n nodeConnector.afterConnection = nodeConnecting;\n nodeConnecting.beforeConnection = nodeConnector;\n nodeConnecting.nestLevel = nodeConnector.nestLevel;\n nodeConnecting.parentBlock = nodeConnector.parentBlock;\n if (_syntaxTree.crumbs.includes(nodeConnecting)) {\n _syntaxTree.crumbs.splice(_syntaxTree.crumbs.indexOf(nodeConnecting), 1);\n }\n}\nexports.attachInstructionBelow = attachInstructionBelow;\n/**\n * Detaches an instruction element node from sequence after another instruction element node.\n * @param connectorNodeID - node ID of the connector instruction element node\n * @param connectingNodeID - node ID of the connecting instruction element node\n */\nfunction detachInstructionBelow(connectorNodeID, connectingNodeID) {\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n nodeConnector.afterConnection = null;\n nodeConnecting.beforeConnection = null;\n nodeConnecting.nestLevel = 0;\n nodeConnecting.parentBlock = null;\n _syntaxTree.crumbs.push(nodeConnecting);\n}\nexports.detachInstructionBelow = detachInstructionBelow;\n/**\n * Checks whether an instruction element node can be nested inside a block element node.\n * @param connectorNodeID - node ID of the connector block element node\n * @param connectingNodeID - node ID of the connecting instruction element node\n * @returns - `true` if node connections are valid, else `false`\n */\nfunction attachInstructionInsideCheck(connectorNodeID, connectingNodeID) {\n if (!_attachInstructionCheck(connectorNodeID, connectingNodeID)) {\n return false;\n }\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n const specificationConnector = (0, specification_1.queryElementSpecification)(nodeConnector.elementName);\n const specificationConnecting = (0, specification_1.queryElementSpecification)(nodeConnecting.elementName);\n if (!(specificationConnector.type === 'Block' &&\n (specificationConnecting.type === 'Statement' ||\n specificationConnecting.type === 'Block'))) {\n return false;\n }\n if ((specificationConnector.forbidNestInside &&\n specificationConnector.forbidNestInside.includes(nodeConnecting.elementName)) ||\n (specificationConnecting.forbiddenNestInside &&\n specificationConnecting.forbiddenNestInside.includes(nodeConnector.elementName))) {\n return false;\n }\n if (specificationConnector.allowNestInside !== undefined) {\n if (specificationConnector.allowNestInside instanceof Array) {\n if (!specificationConnector.allowNestInside.includes(nodeConnecting.elementName)) {\n return false;\n }\n }\n else {\n if (specificationConnector.allowNestInside === false) {\n return false;\n }\n }\n }\n if (specificationConnecting.allowedNestInside !== undefined) {\n if (specificationConnecting.allowedNestInside instanceof Array) {\n if (!specificationConnecting.allowedNestInside.includes(nodeConnector.elementName)) {\n return false;\n }\n }\n else {\n if (specificationConnector.allowedNestInside === false) {\n return false;\n }\n }\n }\n if (!(specificationConnecting.allowedNestLevel &&\n specificationConnecting.allowedNestLevel instanceof Array &&\n specificationConnecting.allowedNestLevel.includes(nodeConnector.nestLevel + 1))) {\n return false;\n }\n return true;\n}\nexports.attachInstructionInsideCheck = attachInstructionInsideCheck;\n/**\n * Attaches an instruction element node inside a block element node.\n * @param connectorNodeID - node ID of the connector block element node\n * @param connectingNodeID - node ID of the connecting instruction element node\n */\nfunction attachInstructionInside(connectorNodeID, connectingNodeID) {\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n nodeConnector.innerConnection = nodeConnecting;\n nodeConnector.innerCount++;\n nodeConnecting.parentBlock = nodeConnector;\n nodeConnecting.nestLevel = nodeConnector.nestLevel + 1;\n if (_syntaxTree.crumbs.includes(nodeConnecting)) {\n _syntaxTree.crumbs.splice(_syntaxTree.crumbs.indexOf(nodeConnecting), 1);\n }\n}\nexports.attachInstructionInside = attachInstructionInside;\n/**\n * Attaches an instruction element node from inside a block element node.\n * @param connectorNodeID - node ID of the connector block element node\n * @param connectingNodeID - node ID of the connecting instruction element node\n */\nfunction detachInstructionInside(connectorNodeID, connectingNodeID) {\n const nodeConnector = _nodeMap[connectorNodeID];\n const nodeConnecting = _nodeMap[connectingNodeID];\n nodeConnector.innerConnection = null;\n nodeConnector.innerCount--;\n nodeConnecting.parentBlock = null;\n nodeConnecting.nestLevel = 0;\n _syntaxTree.crumbs.push(nodeConnecting);\n}\nexports.detachInstructionInside = detachInstructionInside;\n/**\n * Generates a snapshot of the syntax tree.\n * @returns syntax tree snapshot\n */\nfunction generateSnapshot() {\n const snapshot = {\n process: _syntaxTree.process.map((node) => node.snapshot),\n routine: _syntaxTree.routine.map((node) => node.snapshot),\n crumbs: [],\n };\n _syntaxTree.crumbs.forEach((node) => {\n if (node instanceof node_1.TreeNodeData || node instanceof node_1.TreeNodeExpression) {\n snapshot.crumbs.push([node.snapshot]);\n }\n else {\n const snapshotList = [];\n let nextNode = node;\n while (nextNode !== null) {\n snapshotList.push(nextNode.snapshot);\n nextNode = nextNode.afterConnection;\n }\n snapshot.crumbs.push(snapshotList);\n }\n });\n return snapshot;\n}\nexports.generateSnapshot = generateSnapshot;\n/**\n * Generates the syntax tree from a snapshot.\n * @param snapshot - syntax tree snapshot\n * @throws `InvalidDataError`\n */\nfunction generateFromSnapshot(snapshot) {\n resetSyntaxTree();\n function __generateSnapshotList(snapshotList) {\n if (snapshotList.length === 0) {\n return null;\n }\n const snapshotNodes = snapshotList.map((snapshot) => {\n const specification = (0, specification_1.queryElementSpecification)(snapshot.elementName);\n let nodeID;\n switch (specification.type) {\n case 'Data':\n nodeID = __generateFromSnapshotData(snapshot);\n break;\n case 'Expression':\n nodeID = __generateFromSnapshotExpression(snapshot);\n break;\n case 'Statement':\n nodeID = __generateFromSnapshotStatement(snapshot);\n break;\n case 'Block':\n default:\n nodeID = __generateFromSnapshotBlock(snapshot);\n }\n return nodeID;\n });\n if (snapshotNodes.length > 1) {\n for (let i = 0; i < snapshotNodes.length - 1; i++) {\n attachInstructionBelow(snapshotNodes[i], snapshotNodes[i + 1]);\n }\n }\n return snapshotNodes[0];\n }\n function __generateFromSnapshotArg(nodeID, snapshot) {\n if (snapshot === null) {\n return;\n }\n Object.entries(snapshot).forEach(([argName, snapshot]) => {\n if (snapshot === null) {\n return;\n }\n let argNodeID;\n const specification = (0, specification_1.queryElementSpecification)(snapshot.elementName);\n if (specification.type === 'Data') {\n argNodeID = __generateFromSnapshotData(snapshot);\n }\n else {\n argNodeID = __generateFromSnapshotExpression(snapshot);\n }\n attachArgument(nodeID, argNodeID, argName);\n });\n }\n function __generateFromSnapshotData(snapshot) {\n const nodeID = addNode(snapshot.elementName);\n if (snapshot.value) {\n const instance = (0, warehouse_1.getInstance)(getNode(nodeID).instanceID).instance;\n if ((0, specification_1.checkValueAssignment)(instance.name, snapshot.value)) {\n instance.updateLabel(snapshot.value);\n }\n else {\n throw Error(`InvalidDataError: value \"${snapshot.value}\" cannot be assigned to data element \"${instance.name}\"`);\n }\n }\n return nodeID;\n }\n function __generateFromSnapshotExpression(snapshot) {\n const nodeID = addNode(snapshot.elementName);\n __generateFromSnapshotArg(nodeID, snapshot.argMap);\n return nodeID;\n }\n function __generateFromSnapshotStatement(snapshot) {\n const nodeID = addNode(snapshot.elementName);\n __generateFromSnapshotArg(nodeID, snapshot.argMap);\n return nodeID;\n }\n function __generateFromSnapshotBlock(snapshot) {\n const nodeID = addNode(snapshot.elementName);\n __generateFromSnapshotArg(nodeID, snapshot.argMap);\n const innerNodeID = __generateSnapshotList(snapshot.scope);\n if (innerNodeID !== null) {\n attachInstructionInside(nodeID, innerNodeID);\n }\n return nodeID;\n }\n try {\n snapshot.process.forEach((snapshot) => __generateFromSnapshotBlock(snapshot));\n snapshot.routine.forEach((snapshot) => __generateFromSnapshotBlock(snapshot));\n snapshot.crumbs.forEach((snapshotList) => __generateSnapshotList(snapshotList));\n }\n catch (e) {\n resetSyntaxTree();\n throw e;\n }\n}\nexports.generateFromSnapshot = generateFromSnapshot;\n/**\n * Assigns the value (label) of the data element instance included in the node `nodeID`.\n * @param nodeID node ID of the syntax tree node\n * @param value value to assign\n * @returns whether successful assignment or not\n */\nfunction assignNodeValue(nodeID, value) {\n try {\n const instance = (0, warehouse_1.getInstance)(getNode(nodeID).instanceID).instance;\n if (instance.type === 'Data' && (0, specification_1.checkValueAssignment)(instance.name, value)) {\n instance.updateLabel(value);\n }\n else {\n throw Error();\n }\n }\n catch (e) {\n return false;\n }\n return true;\n}\nexports.assignNodeValue = assignNodeValue;\n//# sourceMappingURL=syntaxTree.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flushAllVariables = exports.flushRoutineVariablesAll = exports.flushRoutineVariables = exports.flushProcessVariablesAll = exports.flushProcessVariables = exports.flushGlobalVariables = exports.removeRoutineVariable = exports.getRoutineVariableNamesWithTypesAll = exports.getRoutineVariableNamesAll = exports.getRoutineVariableNamesWithTypes = exports.getRoutineVariableNames = exports.getRoutineVariable = exports.addRoutineVariable = exports.removeProcessVariable = exports.getProcessVariableNamesWithTypesAll = exports.getProcessVariableNamesAll = exports.getProcessVariableNamesWithTypes = exports.getProcessVariableNames = exports.getProcessVariable = exports.addProcessVariable = exports.removeGlobalVariable = exports.getGlobalVariableNamesWithTypes = exports.getGlobalVariableNames = exports.getGlobalVariable = exports.addGlobalVariable = void 0;\n// -- private variables ----------------------------------------------------------------------------\n/** Stores the global table. */\nlet _globalTable = {};\n/** Stores the processes' tables. */\nlet _processTable = {};\n/** Stores the routines' table. */\nlet _routineTable = {};\n// -- private functions ----------------------------------------------------------------------------\n/**\n * A helper that adds a variable for a process or routine. If already present, overwrites it.\n * @param variable - name of the variable\n * @param dataType - data type of the variable\n * @param value - value of the variable\n * @param selector - the key to be used for selection (project ID or routine ID)\n * @param tableName - `process` or `routine`\n */\nfunction _addTableVariable(variable, dataType, value, selector, tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n if (!(selector in table)) {\n table[selector] = {};\n }\n table[selector][variable] = { dataType, value };\n}\n/**\n * A helper that fetches a variable for a process or routine.\n * @param variable - name of the variable\n * @param selector - the key to be used for selection (project ID or routine ID)\n * @param tableName - `process` or `routine`\n * @returns the variable entry if present, else `null`\n */\nfunction _getTableVariable(variable, selector, tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n return selector in table && variable in table[selector] ? table[selector][variable] : null;\n}\n/**\n * A helper that returns names of all variables for a process or routine.\n * @param selector - the key to be used for selection (project ID or routine ID)\n * @param tableName - `process` or `routine`\n * @returns a list of all variable names for a process or routine\n */\nfunction _getTableVariableNames(selector, tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n return selector in table ? Object.keys(table[selector]) : [];\n}\n/**\n * A helper that returns names of all variables for a process or routine with their data types.\n * @param selector - the key to be used for selection (project ID or routine ID)\n * @param tableName - `process` or `routine`\n * @returns an object with key-value pairs of variable names and corresponding data type\n */\nfunction _getTableVariableNamesWithTypes(selector, tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n if (!(selector in table)) {\n return {};\n }\n const res = {};\n Object.entries(table[selector]).forEach(([variable, { dataType }]) => {\n res[variable] = dataType;\n });\n return res;\n}\n/**\n * A helper that returns names of all process or routine variables.\n * @param tableName - `process` or `routine`\n * @returns an object with key-value pairs of process or routine names and corresponding list of\n * variable names\n */\nfunction _getTableVariableNamesAll(tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n const res = {};\n Object.entries(table).forEach(([key, variables]) => {\n res[key] = Object.keys(variables);\n });\n return res;\n}\n/**\n * A helper that returns names and types of all process or routine variables.\n * @param tableName - `process` or `routine`\n * @returns an object with key-value pairs of process or routine names and corresponding object with\n * key-value pairs of variable names and data types.\n */\nfunction _getTableVariableNamesWithTypesAll(tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n const res = {};\n Object.entries(table).forEach(([key, variables]) => {\n res[key] = {};\n Object.entries(variables).forEach(([variable, { dataType }]) => {\n res[key][variable] = dataType;\n });\n });\n return res;\n}\n/**\n * Removes a variable for a process or routine if present.\n * @param variable - name of the variable\n * @param selector - the key to be used for selection (project ID or routine ID)\n * @param tableName - `process` or `routine`\n */\nfunction _removeTableVariable(variable, selector, tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n if (selector in table && variable in table[selector]) {\n delete table[selector][variable];\n }\n}\n/**\n * A helper that clears all variables for a process or routine.\n * @param selector - the key to be used for selection (project ID or routine ID)\n * @param tableName - `process` or `routine`\n */\nfunction _flushTableVariables(selector, tableName) {\n const table = tableName === 'process' ? _processTable : _routineTable;\n if (selector in table) {\n delete table[selector];\n }\n}\n// -- public functions -----------------------------------------------------------------------------\n/**\n * Adds a global variable. If already present, overwrites it.\n * @param variable - name of the variable\n * @param dataType - data type of the variable\n * @param value - value of the variable\n */\nfunction addGlobalVariable(variable, dataType, value) {\n _globalTable[variable] = { dataType, value };\n}\nexports.addGlobalVariable = addGlobalVariable;\n/**\n * Fetches a global variable.\n * @param variable - name of the variable\n * @returns the variable entry if present, else `null`\n */\nfunction getGlobalVariable(variable) {\n return variable in _globalTable ? _globalTable[variable] : null;\n}\nexports.getGlobalVariable = getGlobalVariable;\n/**\n * Returns names of all global variables.\n * @returns a list of all global variable names\n */\nfunction getGlobalVariableNames() {\n return Object.keys(_globalTable);\n}\nexports.getGlobalVariableNames = getGlobalVariableNames;\n/**\n * Returns names of all global variables with their data types.\n * @returns an object with key-value pairs of variable names and corresponding data type\n */\nfunction getGlobalVariableNamesWithTypes() {\n const table = {};\n Object.entries(_globalTable).forEach(([variable, { dataType }]) => {\n table[variable] = dataType;\n });\n return table;\n}\nexports.getGlobalVariableNamesWithTypes = getGlobalVariableNamesWithTypes;\n/**\n * Removes a global variable if present.\n * @param variable - name of the variable\n */\nfunction removeGlobalVariable(variable) {\n if (variable in _globalTable) {\n delete _globalTable[variable];\n }\n}\nexports.removeGlobalVariable = removeGlobalVariable;\n/**\n * Adds a variable for a process. If already present, overwrites it.\n * @param variable - name of the variable\n * @param dataType - data type of the variable\n * @param value - value of the variable\n * @param process - ID of the process\n */\nfunction addProcessVariable(variable, dataType, value, process) {\n _addTableVariable(variable, dataType, value, process, 'process');\n}\nexports.addProcessVariable = addProcessVariable;\n/**\n * Fetches a variable for a process.\n * @param variable - name of the variable\n * @param process - ID of the process\n * @returns the variable entry if present, else `null`\n */\nfunction getProcessVariable(variable, process) {\n return _getTableVariable(variable, process, 'process');\n}\nexports.getProcessVariable = getProcessVariable;\n/**\n * Returns names of all variables for a process.\n * @param process - ID of the process\n * @returns a list of all variable names for a process\n */\nfunction getProcessVariableNames(process) {\n return _getTableVariableNames(process, 'process');\n}\nexports.getProcessVariableNames = getProcessVariableNames;\n/**\n * Returns names of all variables for a process with their data types.\n * @param process - ID of the process\n * @returns an object with key-value pairs of variable names and corresponding data type\n */\nfunction getProcessVariableNamesWithTypes(process) {\n return _getTableVariableNamesWithTypes(process, 'process');\n}\nexports.getProcessVariableNamesWithTypes = getProcessVariableNamesWithTypes;\n/**\n * Returns names of all process variables.\n * @returns an object with key-value pairs of process names and corresponding list of variable\n * names\n */\nfunction getProcessVariableNamesAll() {\n return _getTableVariableNamesAll('process');\n}\nexports.getProcessVariableNamesAll = getProcessVariableNamesAll;\n/**\n * Returns names and types of all process variables.\n * @returns an object with key-value pairs of process names and corresponding object with key-value\n * pairs of variable names and data types.\n */\nfunction getProcessVariableNamesWithTypesAll() {\n return _getTableVariableNamesWithTypesAll('process');\n}\nexports.getProcessVariableNamesWithTypesAll = getProcessVariableNamesWithTypesAll;\n/**\n * Removes a variable for a process if present.\n * @param variable - name of the variable\n * @param process - ID of the process\n */\nfunction removeProcessVariable(variable, process) {\n _removeTableVariable(variable, process, 'process');\n}\nexports.removeProcessVariable = removeProcessVariable;\n/**\n * Adds a variable for a routine. If already present, overwrites it.\n * @param variable - name of the variable\n * @param dataType - data type of the variable\n * @param value - value of the variable\n * @param routine - ID of the routine\n */\nfunction addRoutineVariable(variable, dataType, value, routine) {\n _addTableVariable(variable, dataType, value, routine, 'routine');\n}\nexports.addRoutineVariable = addRoutineVariable;\n/**\n * Fetches a variable for a routine.\n * @param variable - name of the variable\n * @param routine - ID of the routine\n * @returns the variable entry if present, else `null`\n */\nfunction getRoutineVariable(variable, routine) {\n return _getTableVariable(variable, routine, 'routine');\n}\nexports.getRoutineVariable = getRoutineVariable;\n/**\n * Returns names of all variables for a routine.\n * @param routine - ID of the routine\n * @returns a list of all variable names for a routine\n */\nfunction getRoutineVariableNames(routine) {\n return _getTableVariableNames(routine, 'routine');\n}\nexports.getRoutineVariableNames = getRoutineVariableNames;\n/**\n * Returns names of all variables for a routine with their data types.\n * @param routine - ID of the routine\n * @returns an object with key-value pairs of variable names and corresponding data type\n */\nfunction getRoutineVariableNamesWithTypes(routine) {\n return _getTableVariableNamesWithTypes(routine, 'routine');\n}\nexports.getRoutineVariableNamesWithTypes = getRoutineVariableNamesWithTypes;\n/**\n * Returns names of all routine variables.\n * @returns an object with key-value pairs of routine names and corresponding list of variable\n * names\n */\nfunction getRoutineVariableNamesAll() {\n return _getTableVariableNamesAll('routine');\n}\nexports.getRoutineVariableNamesAll = getRoutineVariableNamesAll;\n/**\n * Returns names and types of all routine variables.\n * @returns an object with key-value pairs of routine names and corresponding object with key-value\n * pairs of variable names and data types.\n */\nfunction getRoutineVariableNamesWithTypesAll() {\n return _getTableVariableNamesWithTypesAll('routine');\n}\nexports.getRoutineVariableNamesWithTypesAll = getRoutineVariableNamesWithTypesAll;\n/**\n * Removes a variable for a routine if present.\n * @param variable - name of the variable\n * @param routine - ID of the routine\n */\nfunction removeRoutineVariable(variable, routine) {\n _removeTableVariable(variable, routine, 'routine');\n}\nexports.removeRoutineVariable = removeRoutineVariable;\n/**\n * Clears all global variables.\n */\nfunction flushGlobalVariables() {\n _globalTable = {};\n}\nexports.flushGlobalVariables = flushGlobalVariables;\n/**\n * Clears all variables for a process.\n * @param process - 0 ID of the process\n */\nfunction flushProcessVariables(process) {\n _flushTableVariables(process, 'process');\n}\nexports.flushProcessVariables = flushProcessVariables;\n/**\n * Clears all process variables.\n */\nfunction flushProcessVariablesAll() {\n _processTable = {};\n}\nexports.flushProcessVariablesAll = flushProcessVariablesAll;\n/**\n * Clears all variables for a routine.\n * @param routine - ID of the routine\n */\nfunction flushRoutineVariables(routine) {\n _flushTableVariables(routine, 'routine');\n}\nexports.flushRoutineVariables = flushRoutineVariables;\n/**\n * Clears all routine variables.\n */\nfunction flushRoutineVariablesAll() {\n _routineTable = {};\n}\nexports.flushRoutineVariablesAll = flushRoutineVariablesAll;\n/**\n * Clears all variable tables.\n */\nfunction flushAllVariables() {\n flushGlobalVariables();\n flushProcessVariablesAll();\n flushRoutineVariablesAll();\n}\nexports.flushAllVariables = flushAllVariables;\n//# sourceMappingURL=symbolTable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stackTrace = exports.getNextElement = exports.clearPCOverride = exports.setPCOverride = exports.getExecutionItem = exports.setExecutionItem = exports.generateArgumentSequence = exports.validateArgumentSequence = void 0;\nconst node_1 = require(\"../syntax/tree/node\");\nconst syntaxTree_1 = require(\"../syntax/tree/syntaxTree\");\nconst warehouse_1 = require(\"../syntax/warehouse/warehouse\");\n// -- private variables ----------------------------------------------------------------------------\n/** Stores the list of process element nodes. */\nlet _processNodes = [];\n/** Stores the list of routine element nodes. */\nlet _routineNodes = [];\n/** Stores the list of crumb stack top element nodes. */\nlet _crumbNodes = [];\n/** Maintains the parsing state tables. */\nlet _programMap = {\n process: {},\n routine: {},\n crumbs: {},\n};\n/** Stores a reference to the starting node of parsing. */\nlet _executionItem = null;\n// -- private functions ----------------------------------------------------------------------------\n/**\n * Helper that resets the parser.\n */\nfunction _reset() {\n _processNodes = (0, syntaxTree_1.getProcessNodes)();\n _routineNodes = (0, syntaxTree_1.getRoutineNodes)();\n _crumbNodes = (0, syntaxTree_1.getCrumbs)();\n _programMap = {\n process: {},\n routine: {},\n crumbs: {},\n };\n for (const processNode of _processNodes) {\n _programMap['process'][processNode.nodeID] = {\n frames: [],\n pc: null,\n pcHandler: [],\n pcOverride: null,\n };\n }\n for (const routineNode of _routineNodes) {\n _programMap['routine'][routineNode.nodeID] = {\n frames: [],\n pc: null,\n pcHandler: [],\n pcOverride: null,\n };\n }\n for (const crumbNode of _crumbNodes) {\n _programMap['crumbs'][crumbNode.nodeID] = {\n frames: [],\n pc: null,\n pcHandler: [],\n pcOverride: null,\n };\n }\n _executionItem = null;\n}\n// -- public functions -----------------------------------------------------------------------------\n/**\n * Recursively validates the argument sequence for a syntax tree instruction node. Checks if there\n * are `null` argument connections.\n * @param instructionNode - syntax tree instruction node\n * @returns `null` if valid, else an object of the invalid syntax tree non-data node and arg name.\n */\nfunction validateArgumentSequence(instructionNode) {\n if (Object.keys(instructionNode.argConnections).length === 0) {\n return null;\n }\n function __validateArgumentSequence(node) {\n for (const [argName, argNode] of Object.entries(node.argConnections)) {\n if (argNode === null) {\n return {\n instruction: node,\n argName,\n };\n }\n else {\n if (argNode instanceof node_1.TreeNodeExpression) {\n const result = __validateArgumentSequence(argNode);\n if (result !== null) {\n return result;\n }\n }\n }\n }\n return null;\n }\n return __validateArgumentSequence(instructionNode);\n}\nexports.validateArgumentSequence = validateArgumentSequence;\n/**\n * Recursively generates the argument sequence for a syntax tree instruction node.\n * @description\n * Expects that argument sequence is valid — no `null` argument connections.\n * @param instructionNode - syntax tree instruction node\n * @returns a list of argument element instances\n */\nfunction generateArgumentSequence(instructionNode) {\n if (Object.keys(instructionNode.argConnections).length === 0) {\n return [];\n }\n function __generateArgumentSequence(node) {\n let sequence = [];\n Object.entries(node.argConnections).forEach(([_, argNode]) => {\n if (argNode instanceof node_1.TreeNodeExpression) {\n sequence = [...sequence, ...__generateArgumentSequence(argNode)];\n }\n sequence.push((0, warehouse_1.getInstance)(argNode.instanceID).instance);\n });\n return sequence;\n }\n return __generateArgumentSequence(instructionNode);\n}\nexports.generateArgumentSequence = generateArgumentSequence;\n/**\n * Sets the starting node of parsing.\n * @param nodeID - syntax tree node ID of the starting node.\n */\nfunction setExecutionItem(nodeID) {\n _reset();\n let executionItemEntry = undefined;\n for (const processNode of _processNodes) {\n if (processNode.nodeID === nodeID) {\n _executionItem = { node: processNode, bucket: 'process' };\n executionItemEntry = _programMap['process'][nodeID];\n break;\n }\n }\n for (const routineNode of _routineNodes) {\n if (routineNode.nodeID === nodeID) {\n _executionItem = { node: routineNode, bucket: 'routine' };\n executionItemEntry = _programMap['routine'][nodeID];\n break;\n }\n }\n for (const crumbNode of _crumbNodes) {\n if (crumbNode.nodeID === nodeID) {\n _executionItem = { node: crumbNode, bucket: 'crumbs' };\n executionItemEntry = _programMap['crumbs'][nodeID];\n break;\n }\n }\n if (executionItemEntry !== undefined) {\n executionItemEntry.pc = _executionItem.node;\n executionItemEntry.frames.push({\n node: _executionItem.node,\n pages: null,\n });\n }\n}\nexports.setExecutionItem = setExecutionItem;\n/**\n * Returns the starting syntax tree node ID of the starting node of parsing.\n * @returns - syntax tree node ID if present, else `null`\n */\nfunction getExecutionItem() {\n return _executionItem ? _executionItem.node.nodeID : null;\n}\nexports.getExecutionItem = getExecutionItem;\n/**\n * Sets a program counter override signal for the current execution item.\n * @param signal - program counter override signal\n */\nfunction setPCOverride(signal) {\n if (_executionItem === null) {\n return;\n }\n _programMap[_executionItem.bucket][_executionItem.node.nodeID].pcOverride = signal;\n}\nexports.setPCOverride = setPCOverride;\n/**\n * Clears any program counter override signal for the current execution item.\n */\nfunction clearPCOverride() {\n if (_executionItem === null) {\n return;\n }\n _programMap[_executionItem.bucket][_executionItem.node.nodeID].pcOverride = null;\n}\nexports.clearPCOverride = clearPCOverride;\n/**\n * Returns the next node in execution sequence.\n * @returns - element entry if present, else `null`\n */\nfunction getNextElement() {\n if (_executionItem === null) {\n /*\n * Nothing to execute\n */\n return null;\n }\n const executionItemEntry = _programMap[_executionItem.bucket][_executionItem.node.nodeID];\n if (executionItemEntry.pcHandler !== null) {\n executionItemEntry.pcHandler.forEach((handler) => handler());\n executionItemEntry.pcHandler = [];\n }\n const currentNode = executionItemEntry.pc;\n const frames = executionItemEntry.frames;\n if (currentNode === null) {\n if (frames.length === 0) {\n /*\n * Successful end of execution\n */\n _reset();\n return null;\n }\n else {\n /*\n * ERROR: Missing argument\n */\n const frame = frames[frames.length - 2];\n throw Error(`Invalid access: \"${frame.pages[frame.pages.length - 1].marker}\" of \"${frame.node.elementName}\" (node ID: \"${frame.node.nodeID}\")`);\n }\n }\n const instance = (0, warehouse_1.getInstance)(currentNode.instanceID).instance;\n function __handlePages() {\n const frame = frames[frames.length - 1];\n if (frame.pages === null) {\n frame.pages = [];\n Object.entries(currentNode\n .argConnections).forEach(([argName, argNode]) => frame.pages.push({\n node: argNode,\n marker: argName,\n }));\n frame.pages = frame.pages.reverse();\n }\n if (frame.pages.length !== 0) {\n if (frame.pages[0].marker === '__rollback__') {\n executionItemEntry.pcHandler.push(() => {\n if (executionItemEntry.pcOverride !== '__goinnerfirst__') {\n frames.pop();\n }\n });\n return { marker: '__rollback__' };\n }\n const upcomingNode = frame.pages[frame.pages.length - 1].node;\n executionItemEntry.pcHandler.push(() => {\n frames.push({\n node: upcomingNode,\n pages: null,\n });\n executionItemEntry.pc = upcomingNode;\n });\n return { element: getNextElement() };\n }\n else {\n if (currentNode instanceof node_1.TreeNodeBlock) {\n frame.pages = [\n {\n node: currentNode,\n marker: '__rollback__',\n },\n ];\n __handleInstructionFall(true);\n return {\n element: {\n type: 'Instruction',\n instance: instance,\n marker: null,\n },\n };\n }\n frames.pop();\n let marker = null;\n if (currentNode instanceof node_1.TreeNodeExpression && frames.length !== 0) {\n const topFramePages = frames[frames.length - 1].pages;\n marker = topFramePages[topFramePages.length - 1].marker;\n frames[frames.length - 1].pages.pop();\n }\n return { marker };\n }\n }\n function __handleInstructionFall(goInner) {\n executionItemEntry.pcHandler.push(() => {\n let nextNode = currentNode.afterConnection;\n if (currentNode instanceof node_1.TreeNodeBlock) {\n if (goInner || executionItemEntry.pcOverride === '__goinnerfirst__') {\n nextNode = currentNode.innerConnection;\n }\n if (executionItemEntry.pcOverride === '__goinnerlast__') {\n nextNode = currentNode.innerConnection;\n while (nextNode !== null && nextNode.afterConnection !== null) {\n nextNode = nextNode.afterConnection;\n }\n }\n else if (executionItemEntry.pcOverride === '__skipscope__') {\n frames[frames.length - 1].pages = [\n {\n node: currentNode,\n marker: '__rollback__',\n },\n ];\n nextNode = null;\n }\n }\n if (executionItemEntry.pcOverride === '__goup__') {\n nextNode = currentNode.beforeConnection;\n }\n else if (executionItemEntry.pcOverride === '__skip__') {\n nextNode = currentNode.afterConnection;\n if (nextNode !== null) {\n nextNode = nextNode.afterConnection;\n }\n }\n else if (executionItemEntry.pcOverride === '__repeat__') {\n nextNode = currentNode;\n }\n else if (executionItemEntry.pcOverride === '__rollback__' ||\n executionItemEntry.pcOverride === '__rollback__i') {\n if (frames.length > 0) {\n frames[frames.length - 1].pages = [\n {\n node: currentNode,\n marker: '__rollback__',\n },\n ];\n }\n nextNode = null;\n }\n if (executionItemEntry.pcOverride !== '__rollback__i') {\n executionItemEntry.pcOverride = null;\n }\n if (nextNode === null) {\n if (frames.length !== 0) {\n executionItemEntry.pc = frames[frames.length - 1].node;\n }\n else {\n executionItemEntry.pc = nextNode;\n }\n }\n else {\n frames.push({\n node: nextNode,\n pages: null,\n });\n executionItemEntry.pc = nextNode;\n }\n });\n }\n if (currentNode instanceof node_1.TreeNodeData) {\n frames.pop();\n let marker = null;\n if (frames.length !== 0) {\n const topFramePages = frames[frames.length - 1].pages;\n marker = topFramePages[topFramePages.length - 1].marker;\n frames[frames.length - 1].pages.pop();\n }\n const element = {\n type: 'Argument',\n instance: instance,\n marker,\n };\n executionItemEntry.pcHandler.push(() => {\n executionItemEntry.pc = currentNode.connectedTo;\n });\n return element;\n }\n else if (currentNode instanceof node_1.TreeNodeExpression) {\n const result = __handlePages();\n if ('element' in result) {\n return result.element;\n }\n const element = {\n type: 'Argument',\n instance: instance,\n marker: result.marker,\n };\n executionItemEntry.pcHandler.push(() => {\n executionItemEntry.pc = currentNode.connectedTo;\n });\n return element;\n } /* currentNode instanceof TreeNodeStatement || currentNode instanceof TreeNodeBlock */\n else {\n const result = __handlePages();\n if ('element' in result) {\n return result.element;\n }\n __handleInstructionFall();\n return {\n type: 'Instruction',\n instance: currentNode instanceof node_1.TreeNodeStatement\n ? instance\n : instance,\n marker: result.marker,\n };\n }\n}\nexports.getNextElement = getNextElement;\n/**\n * Returns the execution call frame stack of the current execution item.\n * @returns a list of execution call frames if execution item is set, else `null`\n */\nfunction stackTrace() {\n if (_executionItem === null) {\n return null;\n }\n const executionItemEntry = _programMap[_executionItem.bucket][_executionItem.node.nodeID];\n const currentNode = executionItemEntry.pc;\n return [\n ...executionItemEntry.frames.map(({ node, pages }) => ({\n elementName: node ? node.elementName : null,\n nodeID: node ? node.nodeID : null,\n pages: pages\n ? pages.map(({ node, marker }) => ({\n elementName: node ? node.elementName : null,\n nodeID: node ? node.nodeID : null,\n marker,\n }))\n : null,\n })),\n {\n elementName: currentNode ? currentNode.elementName : null,\n nodeID: currentNode ? currentNode.nodeID : null,\n pages: null,\n },\n ].reverse();\n}\nexports.stackTrace = stackTrace;\n_reset();\n//# sourceMappingURL=parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = exports.releaseProgramCounter = exports.overrideProgramCounter = exports.queryVariable = exports.declareVariable = void 0;\nconst symbolTable_1 = require(\"./symbolTable\");\nconst parser_1 = require(\"./parser\");\nconst elementArgument_1 = require(\"../syntax/elements/elementArgument\");\nconst elementInstruction_1 = require(\"../syntax/elements/elementInstruction\");\nfunction declareVariable(variable, dataType, value) {\n (0, symbolTable_1.addGlobalVariable)(variable, dataType, value);\n}\nexports.declareVariable = declareVariable;\n/**\n * Fetches a variable entry from the symbol table.\n * @param variable name of the variable\n * @returns the variable entry if present, else `null`\n */\nfunction queryVariable(variable) {\n return (0, symbolTable_1.getGlobalVariable)(variable);\n}\nexports.queryVariable = queryVariable;\n/**\n * Sets a program counter override signal for the current execution item.\n * @param signal program counter override signal\n */\nfunction overrideProgramCounter(signal) {\n (0, parser_1.setPCOverride)(signal);\n}\nexports.overrideProgramCounter = overrideProgramCounter;\n/**\n * Clears any program counter override signal for the current execution item.\n */\nfunction releaseProgramCounter() {\n (0, parser_1.clearPCOverride)();\n}\nexports.releaseProgramCounter = releaseProgramCounter;\n/**\n * Runs a process, routine, or crumb stack from start to end.\n * @param nodeID syntax tree node ID of the starting node\n */\nfunction run(nodeID) {\n class ElementDataCover extends elementArgument_1.ElementData {\n }\n class ElementExpressionCover extends elementArgument_1.ElementExpression {\n }\n (0, parser_1.setExecutionItem)(nodeID);\n const memo = {};\n function __execute() {\n const element = (0, parser_1.getNextElement)();\n if (element === null) {\n return;\n }\n const { instance, type, marker } = element;\n if (type === 'Argument') {\n if (instance instanceof ElementDataCover) {\n instance.evaluate();\n } /* instance instanceof ElementExpressionCover */\n else {\n instance.evaluate(memo);\n }\n const value = instance.value;\n if (marker !== null) {\n memo[marker] = value;\n }\n }\n else {\n if (instance instanceof elementInstruction_1.ElementStatement) {\n instance.onVisit(memo);\n } /* instance instanceof ElementBlock */\n else {\n if (marker !== '__rollback__') {\n instance.onVisit(memo);\n }\n else {\n instance.onExit();\n }\n }\n }\n __execute();\n }\n __execute();\n}\nexports.run = run;\n//# sourceMappingURL=interpreter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementValueString = exports.ElementValueNumber = exports.ElementValueBoolean = void 0;\nconst elementArgument_1 = require(\"../../syntax/elements/elementArgument\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @virtual\n * @class\n * Generic class that defines a generic value element.\n *\n * @classdesc\n * Value elements return a stored value.\n */\nclass ElementValue extends elementArgument_1.ElementData {\n constructor(name, label, returnType, initialValue) {\n super(name, '', {}, returnType, initialValue);\n this.updateLabel(label);\n }\n /** @throws `Error` (TypeMismatchError) */\n evaluate() {\n switch (this.returnType[0]) {\n case 'boolean':\n if (this.label === 'true' || this.label === 'false') {\n this._value = (this.label === 'true');\n }\n else {\n throw Error(`TypeMismatchError: ${this.label} is not of type \"boolean\"`);\n }\n break;\n case 'number':\n if (!isNaN(Number(this.label))) {\n this._value = Number(this.label);\n }\n else {\n throw Error(`TypeMismatchError: ${this.label} is not of type \"number\"`);\n }\n break;\n case 'string':\n default:\n this._value = this.label;\n }\n }\n}\n/**\n * @class\n * Defines a value element that stores a boolean value.\n * @throws `Error` (TypeMismatchError)\n */\nclass ElementValueBoolean extends ElementValue {\n constructor(name, label) {\n super(name, label, ['boolean'], true);\n }\n}\nexports.ElementValueBoolean = ElementValueBoolean;\n/**\n * @class\n * Defines a value element that stores a number value.\n * @throws `Error` (TypeMismatchError)\n */\nclass ElementValueNumber extends ElementValue {\n constructor(name, label) {\n super(name, label, ['number'], 0);\n }\n}\nexports.ElementValueNumber = ElementValueNumber;\n/**\n * @class\n * Defines a value element that stores a string value.\n * @throws `Error` (TypeMismatchError)\n */\nclass ElementValueString extends ElementValue {\n constructor(name, label) {\n super(name, label, ['string'], '');\n }\n}\nexports.ElementValueString = ElementValueString;\n//# sourceMappingURL=elementValue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementBoxString = exports.ElementBoxNumber = exports.ElementBoxBoolean = exports.ElementBoxGeneric = void 0;\nconst elementInstruction_1 = require(\"../../syntax/elements/elementInstruction\");\nconst interpreter_1 = require(\"../../execution/interpreter\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @virtual\n * @class\n * Generic class that defines a literally generic box element.\n *\n * @classdesc\n * Box elements add (declare) variables to the symbol table.\n */\nclass ElementBox extends elementInstruction_1.ElementStatement {\n constructor(name, label, types) {\n super(name, label, {\n name: ['string'],\n value: types,\n });\n }\n /** @override */\n onVisit(params) {\n switch (typeof params.value) {\n case 'boolean':\n (0, interpreter_1.declareVariable)(params.name, 'boolean', params.value);\n break;\n case 'number':\n (0, interpreter_1.declareVariable)(params.name, 'number', params.value);\n break;\n case 'string':\n (0, interpreter_1.declareVariable)(params.name, 'string', params.value);\n break;\n default:\n throw Error('Trespassing access: This should never be reached');\n }\n }\n}\n/**\n * @class\n * Defines a box element that declares a variable of any data type.\n */\nclass ElementBoxGeneric extends ElementBox {\n constructor(name, label) {\n super(name, label, ['boolean', 'number', 'string']);\n }\n /** @override */\n onVisit(params) {\n super.onVisit(params);\n }\n}\nexports.ElementBoxGeneric = ElementBoxGeneric;\n/**\n * @class\n * Defines a box element that declares a variable of boolean type.\n */\nclass ElementBoxBoolean extends ElementBox {\n constructor(name, label) {\n super(name, label, ['boolean']);\n }\n /** @override */\n onVisit(params) {\n super.onVisit(params);\n }\n}\nexports.ElementBoxBoolean = ElementBoxBoolean;\n/**\n * @class\n * Defines a box element that declares a variable of number type.\n */\nclass ElementBoxNumber extends ElementBox {\n constructor(name, label) {\n super(name, label, ['number']);\n }\n /** @override */\n onVisit(params) {\n super.onVisit(params);\n }\n}\nexports.ElementBoxNumber = ElementBoxNumber;\n/**\n * @class\n * Defines a box element that declares a variable of string type.\n */\nclass ElementBoxString extends ElementBox {\n constructor(name, label) {\n super(name, label, ['string']);\n }\n /** @override */\n onVisit(params) {\n super.onVisit(params);\n }\n}\nexports.ElementBoxString = ElementBoxString;\n//# sourceMappingURL=elementBox.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementBoxIdentifierString = exports.ElementBoxIdentifierNumber = exports.ElementBoxIdentifierBoolean = exports.ElementBoxIdentifierGeneric = void 0;\nconst elementArgument_1 = require(\"../../syntax/elements/elementArgument\");\nconst interpreter_1 = require(\"../../execution/interpreter\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @virtual\n * @class\n * Generic class that defines a literally generic box identifier element.\n * @classdesc\n * Box identifier elements fetch variables according to their label from the symbol table.\n * @throws `Error` (ItemNotFoundError)\n */\nclass ElementBoxIdentifier extends elementArgument_1.ElementData {\n constructor(name, label, returnType, initialValue) {\n super(name, label, {}, returnType, initialValue);\n }\n /** @override */\n evaluate() {\n const expectedType = typeof this._value;\n try {\n const { dataType, value } = (0, interpreter_1.queryVariable)(this.label);\n if (this.returnType.length > 1) {\n this._value = value;\n }\n else if (dataType === expectedType) {\n this._value = value;\n }\n else {\n throw Error('');\n }\n }\n catch (e) {\n if (this.returnType.length > 1) {\n throw Error(`ItemNotFoundError: box \"${this.label}\" does not exist`);\n }\n else {\n throw Error(`ItemNotFoundError: box \"${this.label}\" of type \"${expectedType}\" does not exist`);\n }\n }\n }\n}\n/**\n * @class\n * Defines a box identifier element that fetches a variable of any data type based on presence.\n * @throws `Error` (ItemNotFoundError)\n */\nclass ElementBoxIdentifierGeneric extends ElementBoxIdentifier {\n constructor(name, label) {\n super(name, label, ['boolean', 'number', 'string'], '');\n }\n}\nexports.ElementBoxIdentifierGeneric = ElementBoxIdentifierGeneric;\n/**\n * @class\n * Defines a box identifier element that fetches a variable of boolean type based on presence.\n * @throws `Error` (ItemNotFoundError)\n */\nclass ElementBoxIdentifierBoolean extends ElementBoxIdentifier {\n constructor(name, label) {\n super(name, label, ['boolean'], true);\n }\n}\nexports.ElementBoxIdentifierBoolean = ElementBoxIdentifierBoolean;\n/**\n * @class\n * Defines a box identifier element that fetches a variable of number type based on presence.\n * @throws `Error` (ItemNotFoundError)\n */\nclass ElementBoxIdentifierNumber extends ElementBoxIdentifier {\n constructor(name, label) {\n super(name, label, ['number'], 0);\n }\n}\nexports.ElementBoxIdentifierNumber = ElementBoxIdentifierNumber;\n/**\n * @class\n * Defines a box identifier element that fetches a variable of string type based on presence.\n * @throws `Error` (ItemNotFoundError)\n */\nclass ElementBoxIdentifierString extends ElementBoxIdentifier {\n constructor(name, label) {\n super(name, label, ['string'], '');\n }\n}\nexports.ElementBoxIdentifierString = ElementBoxIdentifierString;\n//# sourceMappingURL=elementBoxIdentifier.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementOperatorMathModulus = exports.ElementOperatorMathDivide = exports.ElementOperatorMathTimes = exports.ElementOperatorMathMinus = exports.ElementOperatorMathPlus = void 0;\nconst elementArgument_1 = require(\"../../syntax/elements/elementArgument\");\n/**\n * @virtual\n * @class\n * Generic class that defines a generic math operator element.\n *\n * @classdesc\n * Math operator elements are expression elements that take two arguments (operands) and return the\n * result of operation on those arguments.\n */\nclass ElementOperatorMath extends elementArgument_1.ElementExpression {\n constructor(name, label, returnType, operator, initialValue) {\n super(name, '', { operand1: returnType, operand2: returnType }, returnType, initialValue);\n this._operator = operator;\n this.updateLabel(this._operator);\n }\n evaluate(params) {\n const { operand1, operand2 } = params;\n switch (this._operator) {\n case '+':\n this._value = (typeof operand1 === 'string' || typeof operand2 === 'string'\n ? `${operand1}${operand2}`\n : operand1 + operand2);\n break;\n case '-':\n this._value = (operand1 - operand2);\n break;\n case '*':\n this._value = (operand1 * operand2);\n break;\n case '/':\n this._value = (operand1 / operand2);\n break;\n case '%':\n this._value = (operand1 % operand2);\n break;\n }\n }\n}\n/**\n * @class\n * Defines a plus math-operator element.\n *\n * @classdesc\n * Performs addition on numbers and concatenation on strings.\n */\nclass ElementOperatorMathPlus extends ElementOperatorMath {\n constructor(name, label) {\n super(name, label, ['number', 'string'], '+', 0);\n }\n}\nexports.ElementOperatorMathPlus = ElementOperatorMathPlus;\n/**\n * @class\n * Defines a minus math-operator element.\n *\n * @classdesc\n * Performs subtraction on numbers.\n */\nclass ElementOperatorMathMinus extends ElementOperatorMath {\n constructor(name, label) {\n super(name, label, ['number'], '-', 0);\n }\n}\nexports.ElementOperatorMathMinus = ElementOperatorMathMinus;\n/**\n * @class\n * Defines a times math-operator element.\n *\n * @classdesc\n * Performs multiplication on numbers.\n */\nclass ElementOperatorMathTimes extends ElementOperatorMath {\n constructor(name, label) {\n super(name, label, ['number'], '*', 0);\n }\n}\nexports.ElementOperatorMathTimes = ElementOperatorMathTimes;\n/**\n * @class\n * Defines a divide math-operator element.\n *\n * @classdesc\n * Performs division on numbers.\n */\nclass ElementOperatorMathDivide extends ElementOperatorMath {\n constructor(name, label) {\n super(name, label, ['number'], '/', 0);\n }\n}\nexports.ElementOperatorMathDivide = ElementOperatorMathDivide;\n/**\n * @class\n * Defines a modulus math-operator element.\n *\n * @classdesc\n * Performs modulus operation on numbers.\n */\nclass ElementOperatorMathModulus extends ElementOperatorMath {\n constructor(name, label) {\n super(name, label, ['number'], '%', 0);\n }\n}\nexports.ElementOperatorMathModulus = ElementOperatorMathModulus;\n//# sourceMappingURL=elementOperatorMath.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementRepeat = void 0;\nconst elementInstruction_1 = require(\"../../syntax/elements/elementInstruction\");\nconst interpreter_1 = require(\"../../execution/interpreter\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @class\n * Defines a repeat block element.\n * @classdesc\n * Repeats the scope as many times as the parameter provided.\n */\nclass ElementRepeat extends elementInstruction_1.ElementBlock {\n constructor(name, label) {\n super(name, label, { times: ['number'] });\n this._counter = 0;\n }\n onVisit(params) {\n this._counter = params.times;\n }\n onInnerVisit() {\n // no use\n }\n onInnerExit() {\n // no use\n }\n onExit() {\n this._counter--;\n if (this._counter !== 0) {\n (0, interpreter_1.overrideProgramCounter)('__goinnerfirst__');\n }\n }\n}\nexports.ElementRepeat = ElementRepeat;\n//# sourceMappingURL=elementLoop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementIf = void 0;\nconst elementInstruction_1 = require(\"../../syntax/elements/elementInstruction\");\nconst interpreter_1 = require(\"../../execution/interpreter\");\n// -------------------------------------------------------------------------------------------------\n/**\n * @class\n * Defines an If block element.\n * @classdesc\n * Allows entry to scope only if condition is satisfied.\n */\nclass ElementIf extends elementInstruction_1.ElementBlock {\n constructor(name, label) {\n super(name, label, { condition: ['boolean'] });\n }\n onVisit(params) {\n if (!params.condition) {\n (0, interpreter_1.overrideProgramCounter)('__skipscope__');\n }\n }\n onInnerVisit() {\n // no use\n }\n onInnerExit() {\n // no use\n }\n onExit() {\n // no use\n }\n}\nexports.ElementIf = ElementIf;\n//# sourceMappingURL=elementConditional.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementRoutine = exports.ElementProcess = void 0;\nconst elementInstruction_1 = require(\"../../syntax/elements/elementInstruction\");\nclass ElementProcess extends elementInstruction_1.ElementBlock {\n constructor(name, label) {\n super(name, label, {});\n }\n onVisit() {\n 1;\n }\n onInnerVisit() {\n 1;\n }\n onInnerExit() {\n 1;\n }\n onExit() {\n 1;\n }\n}\nexports.ElementProcess = ElementProcess;\nclass ElementRoutine extends elementInstruction_1.ElementBlock {\n constructor(name, label) {\n super(name, label, { name: ['string'] });\n }\n onVisit() {\n 1;\n }\n onInnerVisit() {\n 1;\n }\n onInnerExit() {\n 1;\n }\n onExit() {\n 1;\n }\n}\nexports.ElementRoutine = ElementRoutine;\n//# sourceMappingURL=elementProgram.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementPrint = void 0;\nconst elementInstruction_1 = require(\"../../syntax/elements/elementInstruction\");\n// -------------------------------------------------------------------------------------------------\nclass ElementPrint extends elementInstruction_1.ElementStatement {\n constructor(name, label) {\n super(name, label, { value: ['boolean', 'number', 'string'] });\n }\n onVisit(params) {\n // eslint-disable-next-line no-console\n console.log(params.value);\n }\n}\nexports.ElementPrint = ElementPrint;\n//# sourceMappingURL=elementPrint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst elementValue_1 = require(\"./elements/elementValue\");\nconst elementBox_1 = require(\"./elements/elementBox\");\nconst elementBoxIdentifier_1 = require(\"./elements/elementBoxIdentifier\");\nconst elementOperatorMath_1 = require(\"./elements/elementOperatorMath\");\nconst elementLoop_1 = require(\"./elements/elementLoop\");\nconst elementConditional_1 = require(\"./elements/elementConditional\");\nconst elementProgram_1 = require(\"./elements/elementProgram\");\nconst elementPrint_1 = require(\"./elements/elementPrint\");\n// -------------------------------------------------------------------------------------------------\n/** Stores element specification data entries for factory list of syntax elements. */\nconst _elementSpecificationEntries = {\n // -- value elements ---------------------------------------------------------------------------\n 'value-boolean': {\n label: 'true',\n type: 'Data',\n category: 'value',\n prototype: elementValue_1.ElementValueBoolean,\n values: {\n types: ['boolean'],\n },\n },\n 'value-number': {\n label: '0',\n type: 'Data',\n category: 'value',\n prototype: elementValue_1.ElementValueNumber,\n values: {\n types: ['number'],\n },\n },\n 'value-string': {\n label: 'string',\n type: 'Data',\n category: 'value',\n prototype: elementValue_1.ElementValueString,\n },\n // -- box elements -----------------------------------------------------------------------------\n 'box-generic': {\n label: 'Box',\n type: 'Statement',\n category: 'box',\n prototype: elementBox_1.ElementBoxGeneric,\n },\n 'box-boolean': {\n label: 'Box (boolean)',\n type: 'Statement',\n category: 'box',\n prototype: elementBox_1.ElementBoxBoolean,\n },\n 'box-number': {\n label: 'Box (number)',\n type: 'Statement',\n category: 'box',\n prototype: elementBox_1.ElementBoxNumber,\n },\n 'box-string': {\n label: 'Box (string)',\n type: 'Statement',\n category: 'box',\n prototype: elementBox_1.ElementBoxString,\n },\n // -- box identifier elements ------------------------------------------------------------------\n 'boxidentifier-generic': {\n label: 'Box 1',\n type: 'Data',\n category: 'boxidentifier',\n prototype: elementBoxIdentifier_1.ElementBoxIdentifierGeneric,\n },\n 'boxidentifier-boolean': {\n label: 'Box 1',\n type: 'Data',\n category: 'boxidentifier',\n prototype: elementBoxIdentifier_1.ElementBoxIdentifierBoolean,\n },\n 'boxidentifier-number': {\n label: 'Box 1',\n type: 'Data',\n category: 'boxidentifier',\n prototype: elementBoxIdentifier_1.ElementBoxIdentifierNumber,\n },\n 'boxidentifier-string': {\n label: 'Box 1',\n type: 'Data',\n category: 'boxidentifier',\n prototype: elementBoxIdentifier_1.ElementBoxIdentifierString,\n },\n // -- math operator elements -------------------------------------------------------------------\n 'operator-math-plus': {\n label: '+',\n type: 'Expression',\n category: 'operator-math',\n prototype: elementOperatorMath_1.ElementOperatorMathPlus,\n },\n 'operator-math-minus': {\n label: '-',\n type: 'Expression',\n category: 'operator-math',\n prototype: elementOperatorMath_1.ElementOperatorMathMinus,\n },\n 'operator-math-times': {\n label: '\\u00d7',\n type: 'Expression',\n category: 'operator-math',\n prototype: elementOperatorMath_1.ElementOperatorMathTimes,\n },\n 'operator-math-divide': {\n label: '\\u00f7',\n type: 'Expression',\n category: 'operator-math',\n prototype: elementOperatorMath_1.ElementOperatorMathDivide,\n },\n 'operator-math-modulus': {\n label: '%',\n type: 'Expression',\n category: 'operator-math',\n prototype: elementOperatorMath_1.ElementOperatorMathModulus,\n },\n // -- loop elements ----------------------------------------------------------------------------\n 'repeat': {\n label: 'repeat',\n type: 'Block',\n category: 'loop',\n prototype: elementLoop_1.ElementRepeat,\n },\n // -- conditional elements ---------------------------------------------------------------------\n 'if': {\n label: 'if',\n type: 'Block',\n category: 'loop',\n prototype: elementConditional_1.ElementIf,\n },\n // -- program elements -------------------------------------------------------------------------\n 'process': {\n label: 'start',\n type: 'Block',\n category: 'program',\n prototype: elementProgram_1.ElementProcess,\n allowAbove: false,\n allowBelow: false,\n },\n 'routine': {\n label: 'action',\n type: 'Block',\n category: 'program',\n prototype: elementProgram_1.ElementRoutine,\n allowAbove: false,\n allowBelow: false,\n },\n // -- print element ----------------------------------------------------------------------------\n 'print': {\n label: 'print',\n type: 'Statement',\n category: 'print',\n prototype: elementPrint_1.ElementPrint,\n },\n};\nexports.default = _elementSpecificationEntries;\n//# sourceMappingURL=specification.js.map","\"use strict\";\n// == SYNTAX =======================================================================================\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ElementOperatorMathMinus = exports.ElementOperatorMathPlus = exports.ElementBoxIdentifierString = exports.ElementBoxIdentifierNumber = exports.ElementBoxIdentifierBoolean = exports.ElementBoxIdentifierGeneric = exports.ElementBoxString = exports.ElementBoxNumber = exports.ElementBoxBoolean = exports.ElementBoxGeneric = exports.ElementValueString = exports.ElementValueNumber = exports.ElementValueBoolean = exports.librarySpecification = exports.run = exports.releaseProgramCounter = exports.overrideProgramCounter = exports.queryVariable = exports.declareVariable = exports.getCategoryCountAll = exports.getCategoryCount = exports.getKindCountAll = exports.getKindCount = exports.getTypeCountAll = exports.getTypeCount = exports.getNameCountAll = exports.getNameCount = exports.getInstance = exports.assignNodeValue = exports.resetSyntaxTree = exports.generateFromSnapshot = exports.generateSnapshot = exports.getNode = exports.getCrumbs = exports.getRoutineNodes = exports.getProcessNodes = exports.checkValueAssignment = exports.getSpecificationSnapshot = exports.resetElementSpecificationTable = exports.getElementCategories = exports.getElementNames = exports.queryElementSpecification = exports.removeElementSpecificationEntries = exports.removeElementSpecificationEntry = exports.registerElementSpecificationEntries = exports.registerElementSpecificationEntry = exports.ElementBlock = exports.ElementStatement = exports.ElementExpression = exports.ElementData = void 0;\nexports.ElementRoutine = exports.ElementProcess = exports.ElementPrint = exports.ElementRepeat = exports.ElementIf = exports.ElementOperatorMathModulus = exports.ElementOperatorMathDivide = exports.ElementOperatorMathTimes = void 0;\nvar elementArgument_1 = require(\"./syntax/elements/elementArgument\");\nObject.defineProperty(exports, \"ElementData\", { enumerable: true, get: function () { return elementArgument_1.ElementData; } });\nObject.defineProperty(exports, \"ElementExpression\", { enumerable: true, get: function () { return elementArgument_1.ElementExpression; } });\nvar elementInstruction_1 = require(\"./syntax/elements/elementInstruction\");\nObject.defineProperty(exports, \"ElementStatement\", { enumerable: true, get: function () { return elementInstruction_1.ElementStatement; } });\nObject.defineProperty(exports, \"ElementBlock\", { enumerable: true, get: function () { return elementInstruction_1.ElementBlock; } });\nvar specification_1 = require(\"./syntax/specification/specification\");\nObject.defineProperty(exports, \"registerElementSpecificationEntry\", { enumerable: true, get: function () { return specification_1.registerElementSpecificationEntry; } });\nObject.defineProperty(exports, \"registerElementSpecificationEntries\", { enumerable: true, get: function () { return specification_1.registerElementSpecificationEntries; } });\nObject.defineProperty(exports, \"removeElementSpecificationEntry\", { enumerable: true, get: function () { return specification_1.removeElementSpecificationEntry; } });\nObject.defineProperty(exports, \"removeElementSpecificationEntries\", { enumerable: true, get: function () { return specification_1.removeElementSpecificationEntries; } });\nObject.defineProperty(exports, \"queryElementSpecification\", { enumerable: true, get: function () { return specification_1.queryElementSpecification; } });\nObject.defineProperty(exports, \"getElementNames\", { enumerable: true, get: function () { return specification_1.getElementNames; } });\nObject.defineProperty(exports, \"getElementCategories\", { enumerable: true, get: function () { return specification_1.getElementCategories; } });\nObject.defineProperty(exports, \"resetElementSpecificationTable\", { enumerable: true, get: function () { return specification_1.resetElementSpecificationTable; } });\nObject.defineProperty(exports, \"getSpecificationSnapshot\", { enumerable: true, get: function () { return specification_1.getSpecificationSnapshot; } });\nObject.defineProperty(exports, \"checkValueAssignment\", { enumerable: true, get: function () { return specification_1.checkValueAssignment; } });\nvar syntaxTree_1 = require(\"./syntax/tree/syntaxTree\");\nObject.defineProperty(exports, \"getProcessNodes\", { enumerable: true, get: function () { return syntaxTree_1.getProcessNodes; } });\nObject.defineProperty(exports, \"getRoutineNodes\", { enumerable: true, get: function () { return syntaxTree_1.getRoutineNodes; } });\nObject.defineProperty(exports, \"getCrumbs\", { enumerable: true, get: function () { return syntaxTree_1.getCrumbs; } });\nObject.defineProperty(exports, \"getNode\", { enumerable: true, get: function () { return syntaxTree_1.getNode; } });\nObject.defineProperty(exports, \"generateSnapshot\", { enumerable: true, get: function () { return syntaxTree_1.generateSnapshot; } });\nObject.defineProperty(exports, \"generateFromSnapshot\", { enumerable: true, get: function () { return syntaxTree_1.generateFromSnapshot; } });\nObject.defineProperty(exports, \"resetSyntaxTree\", { enumerable: true, get: function () { return syntaxTree_1.resetSyntaxTree; } });\nObject.defineProperty(exports, \"assignNodeValue\", { enumerable: true, get: function () { return syntaxTree_1.assignNodeValue; } });\n// -- warehouse ------------------------------------------------------------------------------------\nvar warehouse_1 = require(\"./syntax/warehouse/warehouse\");\nObject.defineProperty(exports, \"getInstance\", { enumerable: true, get: function () { return warehouse_1.getInstance; } });\nObject.defineProperty(exports, \"getNameCount\", { enumerable: true, get: function () { return warehouse_1.getNameCount; } });\nObject.defineProperty(exports, \"getNameCountAll\", { enumerable: true, get: function () { return warehouse_1.getNameCountAll; } });\nObject.defineProperty(exports, \"getTypeCount\", { enumerable: true, get: function () { return warehouse_1.getTypeCount; } });\nObject.defineProperty(exports, \"getTypeCountAll\", { enumerable: true, get: function () { return warehouse_1.getTypeCountAll; } });\nObject.defineProperty(exports, \"getKindCount\", { enumerable: true, get: function () { return warehouse_1.getKindCount; } });\nObject.defineProperty(exports, \"getKindCountAll\", { enumerable: true, get: function () { return warehouse_1.getKindCountAll; } });\nObject.defineProperty(exports, \"getCategoryCount\", { enumerable: true, get: function () { return warehouse_1.getCategoryCount; } });\nObject.defineProperty(exports, \"getCategoryCountAll\", { enumerable: true, get: function () { return warehouse_1.getCategoryCountAll; } });\nvar interpreter_1 = require(\"./execution/interpreter\");\nObject.defineProperty(exports, \"declareVariable\", { enumerable: true, get: function () { return interpreter_1.declareVariable; } });\nObject.defineProperty(exports, \"queryVariable\", { enumerable: true, get: function () { return interpreter_1.queryVariable; } });\nObject.defineProperty(exports, \"overrideProgramCounter\", { enumerable: true, get: function () { return interpreter_1.overrideProgramCounter; } });\nObject.defineProperty(exports, \"releaseProgramCounter\", { enumerable: true, get: function () { return interpreter_1.releaseProgramCounter; } });\nObject.defineProperty(exports, \"run\", { enumerable: true, get: function () { return interpreter_1.run; } });\n// == LIBRARY ======================================================================================\n// -- specification --------------------------------------------------------------------------------\nvar specification_2 = require(\"./library/specification\");\nObject.defineProperty(exports, \"librarySpecification\", { enumerable: true, get: function () { return __importDefault(specification_2).default; } });\n// -- elements -------------------------------------------------------------------------------------\nvar elementValue_1 = require(\"./library/elements/elementValue\");\nObject.defineProperty(exports, \"ElementValueBoolean\", { enumerable: true, get: function () { return elementValue_1.ElementValueBoolean; } });\nObject.defineProperty(exports, \"ElementValueNumber\", { enumerable: true, get: function () { return elementValue_1.ElementValueNumber; } });\nObject.defineProperty(exports, \"ElementValueString\", { enumerable: true, get: function () { return elementValue_1.ElementValueString; } });\nvar elementBox_1 = require(\"./library/elements/elementBox\");\nObject.defineProperty(exports, \"ElementBoxGeneric\", { enumerable: true, get: function () { return elementBox_1.ElementBoxGeneric; } });\nObject.defineProperty(exports, \"ElementBoxBoolean\", { enumerable: true, get: function () { return elementBox_1.ElementBoxBoolean; } });\nObject.defineProperty(exports, \"ElementBoxNumber\", { enumerable: true, get: function () { return elementBox_1.ElementBoxNumber; } });\nObject.defineProperty(exports, \"ElementBoxString\", { enumerable: true, get: function () { return elementBox_1.ElementBoxString; } });\nvar elementBoxIdentifier_1 = require(\"./library/elements/elementBoxIdentifier\");\nObject.defineProperty(exports, \"ElementBoxIdentifierGeneric\", { enumerable: true, get: function () { return elementBoxIdentifier_1.ElementBoxIdentifierGeneric; } });\nObject.defineProperty(exports, \"ElementBoxIdentifierBoolean\", { enumerable: true, get: function () { return elementBoxIdentifier_1.ElementBoxIdentifierBoolean; } });\nObject.defineProperty(exports, \"ElementBoxIdentifierNumber\", { enumerable: true, get: function () { return elementBoxIdentifier_1.ElementBoxIdentifierNumber; } });\nObject.defineProperty(exports, \"ElementBoxIdentifierString\", { enumerable: true, get: function () { return elementBoxIdentifier_1.ElementBoxIdentifierString; } });\nvar elementOperatorMath_1 = require(\"./library/elements/elementOperatorMath\");\nObject.defineProperty(exports, \"ElementOperatorMathPlus\", { enumerable: true, get: function () { return elementOperatorMath_1.ElementOperatorMathPlus; } });\nObject.defineProperty(exports, \"ElementOperatorMathMinus\", { enumerable: true, get: function () { return elementOperatorMath_1.ElementOperatorMathMinus; } });\nObject.defineProperty(exports, \"ElementOperatorMathTimes\", { enumerable: true, get: function () { return elementOperatorMath_1.ElementOperatorMathTimes; } });\nObject.defineProperty(exports, \"ElementOperatorMathDivide\", { enumerable: true, get: function () { return elementOperatorMath_1.ElementOperatorMathDivide; } });\nObject.defineProperty(exports, \"ElementOperatorMathModulus\", { enumerable: true, get: function () { return elementOperatorMath_1.ElementOperatorMathModulus; } });\nvar elementConditional_1 = require(\"./library/elements/elementConditional\");\nObject.defineProperty(exports, \"ElementIf\", { enumerable: true, get: function () { return elementConditional_1.ElementIf; } });\nvar elementLoop_1 = require(\"./library/elements/elementLoop\");\nObject.defineProperty(exports, \"ElementRepeat\", { enumerable: true, get: function () { return elementLoop_1.ElementRepeat; } });\nvar elementPrint_1 = require(\"./library/elements/elementPrint\");\nObject.defineProperty(exports, \"ElementPrint\", { enumerable: true, get: function () { return elementPrint_1.ElementPrint; } });\nvar elementProgram_1 = require(\"./library/elements/elementProgram\");\nObject.defineProperty(exports, \"ElementProcess\", { enumerable: true, get: function () { return elementProgram_1.ElementProcess; } });\nObject.defineProperty(exports, \"ElementRoutine\", { enumerable: true, get: function () { return elementProgram_1.ElementRoutine; } });\n//# sourceMappingURL=index.js.map"],"names":["elementSyntax","ElementSyntax","name","label","kind","type","argMap","argName","value","elementArgument","elementSyntax_1","require$$0","ElementArgument","returnType","initialValue","ElementData","ElementExpression","elementInstruction","ElementInstruction","ElementStatement","ElementBlock","specification","_elementSpecification","_elementSpecificationSnapshot","registerElementSpecificationEntry","category","prototype","specificationTableEntry","specificationSnapshotTableEntry","key","registerElementSpecificationEntries","registerStatus","identifier","removeElementSpecificationEntry","removeElementSpecificationEntries","names","removeStatus","queryElementSpecification","getElementNames","getElementCategories","_","resetElementSpecificationTable","getSpecificationSnapshot","checkValueAssignment","values","typeDeepInfer","getRandomValues","rnds8","rng","REGEX","validate","uuid","byteToHex","i","stringify","arr","offset","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","options","buf","b","node","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","n","parse","v","stringToBytes","str","bytes","DNS","URL","v35","version","hashfunc","generateUUID","namespace","md5","msg","md5ToHexEncodedArray","wordsToMd5","bytesToWords","input","output","length32","hexTab","x","hex","getOutputLength","inputLength8","len","a","c","d","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","y","lsw","msw","bitRotateLeft","num","cnt","md5cmn","q","s","t","v3","v3$1","v4","rnds","f","z","ROTL","sha1","K","H","l","N","M","_i","j","_i2","W","_t","e","_t2","T","v5","v5$1","nil","warehouse","removeInstance_1","getInstance_1","addInstance_1","uuid_1","specification_1","require$$1","elementArgument_1","require$$2","_ElementDataCover","_ElementExpressionCover","_elementNameCountMap","_elementKindCountMap","_elementTypeCountMap","_elementCategoryCountMap","_elementMap","_addInstance","elementName","instanceID","instance","_resetElementNameCountMap","_resetElementKindCountMap","_resetElementTypeCountMap","_resetElementCategoryCountMap","addInstance","elementSpecification","getInstance","removeInstance","getNameCount","getNameCountAll","getKindCount","getKindCountAll","getTypeCount","getTypeCountAll","getCategoryCount","getCategoryCountAll","resetWarehouse","warehouse_1","TreeNode","nodeID","snapshot","TreeNodeArgument","TreeNodeData","TreeNodeExpression","TreeNodeInstruction","TreeNodeStatement","TreeNodeBlock","scope","nextNode","syntaxTree","node_1","require$$3","_nodeMap","_syntaxTree","_destroyNode","_attachInstructionCheck","connectorNodeID","connectingNodeID","nodeConnector","nodeConnecting","specificationConnector","specificationConnecting","getProcessNodes","getRoutineNodes","getCrumbs","addNode","getNode","removeNode","list","resetSyntaxTree","attachArgumentCheck","instanceConnector","instanceConnecting","typeConnector","typeConnecting","attachArgument","detachArgument","attachInstructionBelowCheck","attachInstructionBelow","detachInstructionBelow","attachInstructionInsideCheck","attachInstructionInside","detachInstructionInside","generateSnapshot","snapshotList","generateFromSnapshot","__generateSnapshotList","snapshotNodes","__generateFromSnapshotData","__generateFromSnapshotExpression","__generateFromSnapshotStatement","__generateFromSnapshotBlock","__generateFromSnapshotArg","argNodeID","innerNodeID","assignNodeValue","symbolTable","_globalTable","_processTable","_routineTable","_addTableVariable","variable","dataType","selector","tableName","table","_getTableVariable","_getTableVariableNames","_getTableVariableNamesWithTypes","res","_getTableVariableNamesAll","variables","_getTableVariableNamesWithTypesAll","_removeTableVariable","_flushTableVariables","addGlobalVariable","getGlobalVariable","getGlobalVariableNames","getGlobalVariableNamesWithTypes","removeGlobalVariable","addProcessVariable","process","getProcessVariable","getProcessVariableNames","getProcessVariableNamesWithTypes","getProcessVariableNamesAll","getProcessVariableNamesWithTypesAll","removeProcessVariable","addRoutineVariable","routine","getRoutineVariable","getRoutineVariableNames","getRoutineVariableNamesWithTypes","getRoutineVariableNamesAll","getRoutineVariableNamesWithTypesAll","removeRoutineVariable","flushGlobalVariables","flushProcessVariables","flushProcessVariablesAll","flushRoutineVariables","flushRoutineVariablesAll","flushAllVariables","parser","syntaxTree_1","_processNodes","_routineNodes","_crumbNodes","_programMap","_executionItem","_reset","processNode","routineNode","crumbNode","validateArgumentSequence","instructionNode","__validateArgumentSequence","argNode","result","generateArgumentSequence","__generateArgumentSequence","sequence","setExecutionItem","executionItemEntry","getExecutionItem","setPCOverride","signal","clearPCOverride","getNextElement","handler","currentNode","frames","frame","__handlePages","upcomingNode","__handleInstructionFall","marker","topFramePages","goInner","element","stackTrace","pages","interpreter","symbolTable_1","parser_1","elementInstruction_1","declareVariable","queryVariable","overrideProgramCounter","releaseProgramCounter","run","ElementDataCover","ElementExpressionCover","memo","__execute","elementValue","ElementValue","ElementValueBoolean","ElementValueNumber","ElementValueString","elementBox","interpreter_1","ElementBox","types","params","ElementBoxGeneric","ElementBoxBoolean","ElementBoxNumber","ElementBoxString","elementBoxIdentifier","ElementBoxIdentifier","expectedType","ElementBoxIdentifierGeneric","ElementBoxIdentifierBoolean","ElementBoxIdentifierNumber","ElementBoxIdentifierString","elementOperatorMath","ElementOperatorMath","operator","operand1","operand2","ElementOperatorMathPlus","ElementOperatorMathMinus","ElementOperatorMathTimes","ElementOperatorMathDivide","ElementOperatorMathModulus","elementLoop","ElementRepeat","elementConditional","ElementIf","elementProgram","ElementProcess","ElementRoutine","elementPrint","ElementPrint","elementValue_1","elementBox_1","elementBoxIdentifier_1","elementOperatorMath_1","elementLoop_1","require$$4","elementConditional_1","require$$5","elementProgram_1","require$$6","elementPrint_1","require$$7","_elementSpecificationEntries","__importDefault","this","mod","exports","specification_2","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]} \ No newline at end of file diff --git a/assets/index-4fff1452.js b/assets/index-4fff1452.js new file mode 100644 index 00000000..6c470c4d --- /dev/null +++ b/assets/index-4fff1452.js @@ -0,0 +1,2 @@ +import{a as i,j as n,c as r,r as o}from"./index-b95677c8.js";import{S as m}from"./index-096c861c.js";import{m as c,u as l}from"./index-e95da2f1.js";import"./index-e642236f.js";const y={assets:["image.logo"]},u={assets:void 0};function d(s){return i("div",{id:"splash-container",children:[n("div",{id:"splash-logo",children:n(m,{asset:s.logo})}),n("div",{id:"splash-progress-bar",children:n("div",{id:"splash-progress",style:{width:`${s.progress}%`}})})]})}let a;async function e(s){return new Promise(t=>{o.flushSync(()=>{a.render(n(d,{logo:u.assets["image.logo"],progress:Math.min(Math.max(s||0,0),100)})),requestAnimationFrame(()=>t())})})}async function w(){await c(async s=>{a=r(s),await e()})}async function S(s){await e(s)}async function v(){return await l(),new Promise(s=>{o.flushSync(()=>{a.unmount(),requestAnimationFrame(()=>s())})})}export{d as Splash,y as definition,u as injected,w as mountSplash,v as unmountSplash,S as updateSplash}; +//# sourceMappingURL=index-4fff1452.js.map diff --git a/assets/index-4fff1452.js.map b/assets/index-4fff1452.js.map new file mode 100644 index 00000000..afa1add2 --- /dev/null +++ b/assets/index-4fff1452.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-4fff1452.js","sources":["../../src/splash/index.tsx"],"sourcesContent":["import type { Root } from 'react-dom/client';\nimport type { TAsset } from '#/@types/assets';\n\nimport { flushSync } from 'react-dom';\nimport { createRoot } from 'react-dom/client';\n\nimport { SImage } from '@sugarlabs/mb4-components';\nimport { mountViewOverlay, unmountViewOverlay } from '@sugarlabs/mb4-view';\n\n// -- ui items -------------------------------------------------------------------------------------\n\nimport './index.scss';\n\n// -------------------------------------------------------------------------------------------------\n\ntype TAssetIdentifierView = 'image.logo';\n\nexport const definition: {\n assets: TAssetIdentifierView[];\n} = {\n assets: ['image.logo'],\n};\n\nexport const injected: {\n assets: Record;\n} = {\n // @ts-ignore\n assets: undefined,\n};\n\n// -- component definition -------------------------------------------------------------------------\n\n/**\n * React component definition for the Splash component.\n */\nexport function Splash(props: {\n /** Image asset for logo. */\n logo: TAsset;\n /** Load progress [0 - 100]. */\n progress: number;\n}): JSX.Element {\n return (\n + + + + + +
+ + + diff --git a/index.html.gz b/index.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..53adb2876e22de2f961810481a53ae048bb4922e GIT binary patch literal 722 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

@dr9}sIFD7hAbQY%s_(#X2NRr;QNuK=!NryMa7 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 literal 0 HcmV?d00001 diff --git a/logo.svg b/logo.svg new file mode 100644 index 00000000..0aa829ec --- /dev/null +++ b/logo.svg @@ -0,0 +1,497 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 00000000..db06941e --- /dev/null +++ b/manifest.json @@ -0,0 +1 @@ +{"name":"Music Blocks - A Musical Microworld","short_name":"Music Blocks","start_url":".","display":"standalone","background_color":"#ffffff","lang":"en","scope":"/musicblocks-v4/","icons":[{"src":"favicon.ico","sizes":"64x64 32x32 24x24 16x16","type":"image/x-icon"},{"src":"icons/android-icon-36x36.png","sizes":"36x36","type":"image/png","density":"0.75"},{"src":"icons/android-icon-48x48.png","sizes":"48x48","type":"image/png","density":"1.0"},{"src":"icons/android-icon-72x72.png","sizes":"72x72","type":"image/png","density":"1.5"},{"src":"icons/android-icon-96x96.png","sizes":"96x96","type":"image/png","density":"2.0"},{"src":"icons/android-icon-144x144.png","sizes":"144x144","type":"image/png","density":"3.0"},{"src":"icons/android-icon-192x192.png","sizes":"192x192","type":"image/png","density":"4.0"}],"theme_color":"#1b9cfc"} diff --git a/registerSW.js b/registerSW.js new file mode 100644 index 00000000..ca9cdcd7 --- /dev/null +++ b/registerSW.js @@ -0,0 +1 @@ +if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/musicblocks-v4/sw.js', { scope: '/musicblocks-v4/' })})} \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/stats.html b/stats.html new file mode 100644 index 00000000..f2ed6590 --- /dev/null +++ b/stats.html @@ -0,0 +1,6177 @@ + + + + + + + + Rollup Visualizer + + + +

+ + + + + diff --git a/stats.html.gz b/stats.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..c18628e7765b7431887401b92bc04f774e3b5199 GIT binary patch literal 85255 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

-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 M51jx?Cs1Dd5Ahc@$N&HU literal 0 HcmV?d00001 diff --git a/sw.js b/sw.js new file mode 100644 index 00000000..9093009f --- /dev/null +++ b/sw.js @@ -0,0 +1,2 @@ +if(!self.define){let s,e={};const i=(i,n)=>(i=new URL(i+".js",n).href,e[i]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()})).then((()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s})));self.define=(n,l)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let o={};const u=s=>i(s,r),a={module:{uri:r},exports:o,require:u};e[r]=Promise.all(n.map((s=>a[s]||u(s)))).then((s=>(l(...s),o)))}}define(["./workbox-2522900a"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/_commonjs-dynamic-modules-302442b1.js",revision:null},{url:"assets/components-11160596.js",revision:null},{url:"assets/dynamic-import-helper-e113e409.js",revision:null},{url:"assets/index-060fb1c6.js",revision:null},{url:"assets/index-096c861c.js",revision:null},{url:"assets/index-0ef6c638.css",revision:null},{url:"assets/index-10a52919.css",revision:null},{url:"assets/index-21e6ea22.css",revision:null},{url:"assets/index-35b52911.js",revision:null},{url:"assets/index-4245e63e.js",revision:null},{url:"assets/index-4fff1452.js",revision:null},{url:"assets/index-97cad2bf.js",revision:null},{url:"assets/index-98afefcf.css",revision:null},{url:"assets/index-b95677c8.js",revision:null},{url:"assets/index-d3e8bc84.css",revision:null},{url:"assets/index-e491dcfc.css",revision:null},{url:"assets/index-e642236f.js",revision:null},{url:"assets/index-e95da2f1.js",revision:null},{url:"assets/lang.en-a09fe94b.js",revision:null},{url:"assets/lang.es-5dc320b5.js",revision:null},{url:"assets/lib.assets-d64954a0.js",revision:null},{url:"assets/lib.config-257eb5b5.js",revision:null},{url:"assets/lib.i18n-3137bee4.js",revision:null},{url:"assets/lib.view-f4687c7b.js",revision:null},{url:"assets/misc-ecacff45.js",revision:null},{url:"assets/module.editor-93a6384b.js",revision:null},{url:"assets/module.menu-9b2a1c75.js",revision:null},{url:"assets/module.painter-0b477364.js",revision:null},{url:"assets/module.singer-0eae6471.js",revision:null},{url:"assets/preset-0-9cb6c92a.js",revision:null},{url:"assets/web-vitals-60d3425a.js",revision:null},{url:"index.html",revision:"534b7013ad7b81d143a7a759841c1835"},{url:"registerSW.js",revision:"92a25bf795db010ac683da18d2ad9fca"},{url:"stats.html",revision:"2fc2ee7538bf9f6b307c0a8b27815e98"},{url:"favicon.ico",revision:"619b8f372cd7b918b335c5d0606374e9"},{url:"icons/android-icon-36x36.png",revision:"d38cab05217793378068bbc58b3d5cf6"},{url:"icons/android-icon-48x48.png",revision:"f1739417e64f0faa48a30235be01840f"},{url:"icons/android-icon-72x72.png",revision:"4986dca665802ff42d2b1c41d4bdbc56"},{url:"icons/android-icon-96x96.png",revision:"a24a274ada33c644ead0771d09c13d5f"},{url:"icons/android-icon-144x144.png",revision:"e16c36ec5dee7daf0485662f63c4f48e"},{url:"icons/android-icon-192x192.png",revision:"da3737271b0ce04383220524aa3e9595"},{url:"manifest.json",revision:"7665f92875d9f9f23db8661e68a62a9c"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))})); +//# sourceMappingURL=sw.js.map diff --git a/sw.js.gz b/sw.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..7df44fb67abb3a9f160b27d9019055d233cb0a36 GIT binary patch literal 1302 zcmV+x1?l=9iwFP!000021C3YPZrer>ea}~@Y#&Heq`4RF#RgNfL4ZCqZIQIdgJCqw z-C286id1(=TZJs3ztP|8mvkw`m&Aa@2U!v|=ggd$+1atP=~n?-TNtpegKXQvun0@2 zx4SdlcVSq#I(5q~t6!$B?%-ze``e#V_ia*q3`u-kTzRldICmGfx6`k``hMjCq$$)d zx6Y=C>GimRZb)3Wm>gx>18u19ekrsEHNfi@rf+Eyw0G+v$<9I%ysq6c6n)qB%G9vD z$6SFjg<7wnGq0{(YtoSIpbZdt-O{bry&vA~c|z*4C8XId%ZlL&x-?CrmV?ZCiu=q> zDaeK^-`^}I39r5Hefr@|Z^jlD-)!A(VVvpy`{&HVKgzsYfhu`ElKTr5*N zc6tgwvTT!aD$(Gb9+E?*!k=#aUb(?_muVJDty>pU5MH&)t@aPr9<HrHG-Ef~^s&A~Fwh$wWJ zWsgc#VTt5idyIgA!g#JdshWu&%?zJnS^*<4*W6l*XoY8*ORkl{jh$;Qlm)BpT&<0) z80T8dq&EaaqXnHy4^$$ft)6YqD8_`%RSU8*3ftqAYE^exK$ojhT9CAv2?%**G{I$4 z9S69kIDE_vqq3r^oP~+g(7MYwhd4CVOg|2ZE+>fa27t~&TsyeQEoFjheq4MUusWZH znYHwIM29g}fN?|bb4gS@$}=+j2^Q~@F_#TiNb}jg*2;D9a?8txa!weXiwkjhPcTri z(fIMUi6cF}=VdN+!?eWeDB=d1{Mrqw4LK_fp}2Ymvv1th>v{goX&MnzF)(b4dsnB@<1ftH^9BZP{~#RBWjDlF%Yf zBt<-Sfi104RH%3f$GHzB6123>5pulY_)9`61v6SPR*4eFQ-kBkMw%i+8xsS4HbTiZ z@`+@HsluEpqX^NA(zr#IoFh|8jiTshBSe&L;_FLFKui+`u@bSkM%j{ziZN^%(bQ4_ z&r(XfiLWPxQG~}jbJUa?N=gL5IF^YjMdE0d53RaVowE>z*r|OaE%+b$u`|E*)4vFhPvNvB#?AP}$;sD?(2rijo4C5ip%D%1a1*1SHqICS M1J2r>t&9u+0Ec9cd;kCd literal 0 HcmV?d00001 diff --git a/sw.js.map b/sw.js.map new file mode 100644 index 00000000..6123bda4 --- /dev/null +++ b/sw.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sw.js","sources":["../../../../../../tmp/8f70f2f07bb98a1a1c075dbbb7ed6c3a/sw.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/musicblocks-v4/musicblocks-v4/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/musicblocks-v4/musicblocks-v4/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/musicblocks-v4/musicblocks-v4/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/musicblocks-v4/musicblocks-v4/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/musicblocks-v4/musicblocks-v4/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/musicblocks-v4/musicblocks-v4/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/_commonjs-dynamic-modules-302442b1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/components-11160596.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dynamic-import-helper-e113e409.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-060fb1c6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-096c861c.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-0ef6c638.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-10a52919.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-21e6ea22.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-35b52911.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-4245e63e.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-4fff1452.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-97cad2bf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-98afefcf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-b95677c8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-d3e8bc84.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-e491dcfc.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-e642236f.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-e95da2f1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lang.en-a09fe94b.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lang.es-5dc320b5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lib.assets-d64954a0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lib.config-257eb5b5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lib.i18n-3137bee4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lib.view-f4687c7b.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/misc-ecacff45.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/module.editor-93a6384b.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/module.menu-9b2a1c75.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/module.painter-0b477364.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/module.singer-0eae6471.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/preset-0-9cb6c92a.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/web-vitals-60d3425a.js\",\n \"revision\": null\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"534b7013ad7b81d143a7a759841c1835\"\n },\n {\n \"url\": \"registerSW.js\",\n \"revision\": \"92a25bf795db010ac683da18d2ad9fca\"\n },\n {\n \"url\": \"stats.html\",\n \"revision\": \"2fc2ee7538bf9f6b307c0a8b27815e98\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"619b8f372cd7b918b335c5d0606374e9\"\n },\n {\n \"url\": \"icons/android-icon-36x36.png\",\n \"revision\": \"d38cab05217793378068bbc58b3d5cf6\"\n },\n {\n \"url\": \"icons/android-icon-48x48.png\",\n \"revision\": \"f1739417e64f0faa48a30235be01840f\"\n },\n {\n \"url\": \"icons/android-icon-72x72.png\",\n \"revision\": \"4986dca665802ff42d2b1c41d4bdbc56\"\n },\n {\n \"url\": \"icons/android-icon-96x96.png\",\n \"revision\": \"a24a274ada33c644ead0771d09c13d5f\"\n },\n {\n \"url\": \"icons/android-icon-144x144.png\",\n \"revision\": \"e16c36ec5dee7daf0485662f63c4f48e\"\n },\n {\n \"url\": \"icons/android-icon-192x192.png\",\n \"revision\": \"da3737271b0ce04383220524aa3e9595\"\n },\n {\n \"url\": \"manifest.json\",\n \"revision\": \"7665f92875d9f9f23db8661e68a62a9c\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"index.html\")));\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox","registerRoute","workbox_routing_NavigationRoute","NavigationRoute","workbox_precaching_createHandlerBoundToURL"],"mappings":"0nBAwBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,iCACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C"} \ No newline at end of file diff --git a/workbox-2522900a.js b/workbox-2522900a.js new file mode 100644 index 00000000..3673b4e8 --- /dev/null +++ b/workbox-2522900a.js @@ -0,0 +1,2 @@ +define(["exports"],(function(t){"use strict";try{self["workbox:core:6.5.4"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:6.5.4"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const c=t.method;if(!o&&this.i.has(c)&&(o=this.i.get(c)),!o)return;let a;try{a=o.handle({url:s,request:t,event:e,params:i})}catch(t){a=Promise.reject(t)}const h=r&&r.catchHandler;return a instanceof Promise&&(this.o||h)&&(a=a.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),a}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let c;const a=()=>(c||(c=new o,c.addFetchListener(),c.addCacheListener()),c);function h(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}return a().registerRoute(o),o}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter((t=>t&&t.length>0)).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:6.5.4"]&&_()}catch(t){}function p(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class y{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class g{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.h.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.h=t}}let R;async function m(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,c=function(){if(void 0===R){const t=new Response("");if("body"in t)try{new Response(t.body),R=!0}catch(t){R=!1}R=!1}return R}()?i.body:await i.blob();return new Response(c,o)}function v(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class q{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}const U=new Set;try{self["workbox:strategies:6.5.4"]&&_()}catch(t){}function L(t){return"string"==typeof t?new Request(t):t}class b{constructor(t,e){this.u={},Object.assign(this,e),this.event=e.event,this.l=t,this.p=new q,this.g=[],this.R=[...t.plugins],this.m=new Map;for(const t of this.R)this.m.set(t,{});this.event.waitUntil(this.p.promise)}async fetch(t){const{event:e}=this;let n=L(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.l.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=L(t);let s;const{cacheName:n,matchOptions:i}=this.l,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=L(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const c=await this.v(e);if(!c)return!1;const{cacheName:a,matchOptions:h}=this.l,u=await self.caches.open(a),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=v(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===v(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?c.clone():c)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of U)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:a,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.u[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=L(await t({mode:e,request:n,event:this.event,params:this.params}));this.u[s]=n}return this.u[s]}hasCallback(t){for(const e of this.l.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.l.plugins)if("function"==typeof e[t]){const s=this.m.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.g.push(t),t}async doneWaiting(){let t;for(;t=this.g.shift();)await t}destroy(){this.p.resolve(null)}async v(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class C{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new b(this,{event:e,request:s,params:n}),r=this.q(i,s,e);return[r,this.U(r,i,s,e)]}async q(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.L(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async U(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}class E extends C{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this._=!1!==t.fallbackToNetwork,this.plugins.push(E.copyRedirectedCacheableResponsesPlugin)}async L(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.C(t,e):await this.O(t,e))}async O(t,e){let n;const i=e.params||{};if(!this._)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.N(),await e.cachePut(t,n.clone()))}return n}async C(t,e){this.N();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}N(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==E.copyRedirectedCacheableResponsesPlugin&&(n===E.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(E.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}E.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},E.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await m(t):t};class O{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.k=new Map,this.K=new Map,this.P=new Map,this.l=new E({cacheName:f(t),plugins:[...e,new g({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.l}precache(t){this.addToCacheList(t),this.T||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.T=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=p(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.k.has(i)&&this.k.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.k.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.P.has(t)&&this.P.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.P.set(t,n.integrity)}if(this.k.set(i,t),this.K.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return d(t,(async()=>{const e=new y;this.strategy.plugins.push(e);for(const[e,s]of this.k){const n=this.P.get(s),i=this.K.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return d(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.k.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.k}getCachedURLs(){return[...this.k.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.k.get(e.href)}getIntegrityForCacheKey(t){return this.P.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}let x;const N=()=>(x||(x=new O),x);class k extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.NavigationRoute=class extends i{constructor(t,{allowlist:e=[/./],denylist:s=[]}={}){super((t=>this.W(t)),t),this.j=e,this.M=s}W({url:t,request:e}){if(e&&"navigate"!==e.mode)return!1;const s=t.pathname+t.search;for(const t of this.M)if(t.test(s))return!1;return!!this.j.some((t=>t.test(s)))}},t.cleanupOutdatedCaches=function(){self.addEventListener("activate",(t=>{const e=f();t.waitUntil((async(t,e="-precache-")=>{const s=(await self.caches.keys()).filter((s=>s.includes(e)&&s.includes(self.registration.scope)&&s!==t));return await Promise.all(s.map((t=>self.caches.delete(t)))),s})(e).then((t=>{})))}))},t.clientsClaim=function(){self.addEventListener("activate",(()=>self.clients.claim()))},t.createHandlerBoundToURL=function(t){return N().createHandlerBoundToURL(t)},t.precacheAndRoute=function(t,e){!function(t){N().precache(t)}(t),function(t){const e=N();h(new k(e,t))}(e)},t.registerRoute=h})); +//# sourceMappingURL=workbox-2522900a.js.map diff --git a/workbox-2522900a.js.gz b/workbox-2522900a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..4efc9430adae83375f5bda8e8e94c428fab7542c GIT binary patch literal 5238 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 literal 0 HcmV?d00001 diff --git a/workbox-2522900a.js.map b/workbox-2522900a.js.map new file mode 100644 index 00000000..ff1107e1 --- /dev/null +++ b/workbox-2522900a.js.map @@ -0,0 +1 @@ +{"version":3,"file":"workbox-2522900a.js","sources":["../node_modules/workbox-core/_version.js","../node_modules/workbox-core/_private/logger.js","../node_modules/workbox-core/models/messages/messageGenerator.js","../node_modules/workbox-core/_private/WorkboxError.js","../node_modules/workbox-routing/_version.js","../node_modules/workbox-routing/utils/constants.js","../node_modules/workbox-routing/utils/normalizeHandler.js","../node_modules/workbox-routing/Route.js","../node_modules/workbox-routing/RegExpRoute.js","../node_modules/workbox-routing/Router.js","../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../node_modules/workbox-routing/registerRoute.js","../node_modules/workbox-core/_private/cacheNames.js","../node_modules/workbox-core/_private/waitUntil.js","../node_modules/workbox-precaching/_version.js","../node_modules/workbox-precaching/utils/createCacheKey.js","../node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","../node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","../node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../node_modules/workbox-core/copyResponse.js","../node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","../node_modules/workbox-core/_private/Deferred.js","../node_modules/workbox-core/models/quotaErrorCallbacks.js","../node_modules/workbox-strategies/_version.js","../node_modules/workbox-strategies/StrategyHandler.js","../node_modules/workbox-core/_private/timeout.js","../node_modules/workbox-core/_private/getFriendlyURL.js","../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../node_modules/workbox-strategies/Strategy.js","../node_modules/workbox-precaching/PrecacheStrategy.js","../node_modules/workbox-precaching/PrecacheController.js","../node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../node_modules/workbox-precaching/PrecacheRoute.js","../node_modules/workbox-precaching/utils/generateURLVariations.js","../node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../node_modules/workbox-routing/NavigationRoute.js","../node_modules/workbox-precaching/cleanupOutdatedCaches.js","../node_modules/workbox-precaching/utils/deleteOutdatedCaches.js","../node_modules/workbox-core/clientsClaim.js","../node_modules/workbox-precaching/createHandlerBoundToURL.js","../node_modules/workbox-precaching/precacheAndRoute.js","../node_modules/workbox-precaching/precache.js","../node_modules/workbox-precaching/addRoute.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.5.4'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production'\n ? null\n : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in globalThis)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null, // No colored prefix on groupEnd\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n })());\nexport { logger };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.5.4'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * {@link workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * @memberof workbox-routing\n * @extends workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * {@link workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if (url.origin !== location.origin && result.index !== 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a `FetchEvent` using one or more\n * {@link workbox-routing.Route}, responding with a `Response` if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call {@link workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox-routing.Route} The generated `Route`.\n *\n * @memberof workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http')\n ? captureUrl.pathname\n : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (new RegExp(`${wildcards}`).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (url.pathname === captureUrl.pathname &&\n url.origin !== captureUrl.origin) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\nfunction waitUntil(event, asyncFn) {\n const returnPromise = asyncFn();\n event.waitUntil(returnPromise);\n return returnPromise;\n}\nexport { waitUntil };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:6.5.4'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n constructor() {\n this.updatedURLs = [];\n this.notUpdatedURLs = [];\n this.handlerWillStart = async ({ request, state, }) => {\n // TODO: `state` should never be undefined...\n if (state) {\n state.originalRequest = request;\n }\n };\n this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n if (event.type === 'install') {\n if (state &&\n state.originalRequest &&\n state.originalRequest instanceof Request) {\n // TODO: `state` should never be undefined...\n const url = state.originalRequest.url;\n if (cachedResponse) {\n this.notUpdatedURLs.push(url);\n }\n else {\n this.updatedURLs.push(url);\n }\n }\n }\n return cachedResponse;\n };\n }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n constructor({ precacheController }) {\n this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n // Params is type any, can't change right now.\n /* eslint-disable */\n const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n this._precacheController.getCacheKeyForURL(request.url);\n /* eslint-enable */\n return cacheKey\n ? new Request(cacheKey, { headers: request.headers })\n : request;\n };\n this._precacheController = precacheController;\n }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof workbox-core\n */\nasync function copyResponse(response, modifier) {\n let origin = null;\n // If response.url isn't set, assume it's cross-origin and keep origin null.\n if (response.url) {\n const responseURL = new URL(response.url);\n origin = responseURL.origin;\n }\n if (origin !== self.location.origin) {\n throw new WorkboxError('cross-origin-copy-response', { origin });\n }\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream()\n ? clonedResponse.body\n : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array} ignoreParams\n * @return {Promise}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.5.4'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * {@link workbox-strategies.Strategy~handle} or\n * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params] The return value from the\n * {@link workbox-routing~matchCallback} (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * {@link workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = (await event.preloadResponse);\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail')\n ? request.clone()\n : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownErrorMessage: err.message,\n });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse =\n (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n // See https://github.com/GoogleChrome/workbox/issues/2818\n const vary = response.headers.get('Vary');\n if (vary) {\n logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` +\n `has a 'Vary: ${vary}' header. ` +\n `Consider setting the {ignoreVary: true} option on your strategy ` +\n `to ensure cache matching and deletion works as expected.`);\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback\n ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions)\n : null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise}\n */\n async getCacheKey(request, mode) {\n const key = `${request.url} | ${mode}`;\n if (!this._cacheKeys[key]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params, // eslint-disable-line\n }));\n }\n this._cacheKeys[key] = effectiveRequest;\n }\n return this._cacheKeys[key];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * {@link workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * {@link workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * {@link workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while ((promise = this._extendLifetimePromises.shift())) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache =\n (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * {@link workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to {@link workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of `[response, done]` promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string'\n ? new Request(options.request)\n : options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the {@link workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {workbox-strategies.StrategyHandler} handler\n * @return {Promise}\n *\n * @memberof workbox-strategies.Strategy\n */\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A {@link workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * {@link workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n /**\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}\n * of all fetch() requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor(options = {}) {\n options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n super(options);\n this._fallbackToNetwork =\n options.fallbackToNetwork === false ? false : true;\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const response = await handler.cacheMatch(request);\n if (response) {\n return response;\n }\n // If this is an `install` event for an entry that isn't already cached,\n // then populate the cache.\n if (handler.event && handler.event.type === 'install') {\n return await this._handleInstall(request, handler);\n }\n // Getting here means something went wrong. An entry that should have been\n // precached wasn't found in the cache.\n return await this._handleFetch(request, handler);\n }\n async _handleFetch(request, handler) {\n let response;\n const params = (handler.params || {});\n // Fall back to the network if we're configured to do so.\n if (this._fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n `found. Falling back to the network.`);\n }\n const integrityInManifest = params.integrity;\n const integrityInRequest = request.integrity;\n const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n // Do not add integrity if the original request is no-cors\n // See https://github.com/GoogleChrome/workbox/issues/3096\n response = await handler.fetch(new Request(request, {\n integrity: request.mode !== 'no-cors'\n ? integrityInRequest || integrityInManifest\n : undefined,\n }));\n // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n // that the response matches the precache manifest's expectations,\n // and there's either a) no integrity property in the incoming request\n // or b) there is an integrity, and it matches the precache manifest.\n // See https://github.com/GoogleChrome/workbox/issues/2858\n // Also if the original request users no-cors we don't use integrity.\n // See https://github.com/GoogleChrome/workbox/issues/3096\n if (integrityInManifest &&\n noIntegrityConflict &&\n request.mode !== 'no-cors') {\n this._useDefaultCacheabilityPluginIfNeeded();\n const wasCached = await handler.cachePut(request, response.clone());\n if (process.env.NODE_ENV !== 'production') {\n if (wasCached) {\n logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n `was used to \"repair\" the precache.`);\n }\n }\n }\n }\n else {\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this.cacheName,\n url: request.url,\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n }\n return response;\n }\n async _handleInstall(request, handler) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const response = await handler.fetch(request);\n // Make sure we defer cachePut() until after we know the response\n // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n const wasCached = await handler.cachePut(request, response.clone());\n if (!wasCached) {\n // Throwing here will lead to the `install` handler failing, which\n // we want to do if *any* of the responses aren't safe to cache.\n throw new WorkboxError('bad-precaching-response', {\n url: request.url,\n status: response.status,\n });\n }\n return response;\n }\n /**\n * This method is complex, as there a number of things to account for:\n *\n * The `plugins` array can be set at construction, and/or it might be added to\n * to at any time before the strategy is used.\n *\n * At the time the strategy is used (i.e. during an `install` event), there\n * needs to be at least one plugin that implements `cacheWillUpdate` in the\n * array, other than `copyRedirectedCacheableResponsesPlugin`.\n *\n * - If this method is called and there are no suitable `cacheWillUpdate`\n * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n *\n * - If this method is called and there is exactly one `cacheWillUpdate`, then\n * we don't have to do anything (this might be a previously added\n * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n *\n * - If this method is called and there is more than one `cacheWillUpdate`,\n * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n * we need to remove it. (This situation is unlikely, but it could happen if\n * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n * and then later on after manually adding a custom `cacheWillUpdate`.)\n *\n * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n *\n * @private\n */\n _useDefaultCacheabilityPluginIfNeeded() {\n let defaultPluginIndex = null;\n let cacheWillUpdatePluginCount = 0;\n for (const [index, plugin] of this.plugins.entries()) {\n // Ignore the copy redirected plugin when determining what to do.\n if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n continue;\n }\n // Save the default plugin's index, in case it needs to be removed.\n if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n defaultPluginIndex = index;\n }\n if (plugin.cacheWillUpdate) {\n cacheWillUpdatePluginCount++;\n }\n }\n if (cacheWillUpdatePluginCount === 0) {\n this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n }\n else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n // Only remove the default plugin; multiple custom plugins are allowed.\n this.plugins.splice(defaultPluginIndex, 1);\n }\n // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n async cacheWillUpdate({ response }) {\n if (!response || response.status >= 400) {\n return null;\n }\n return response;\n },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n async cacheWillUpdate({ response }) {\n return response.redirected ? await copyResponse(response) : response;\n },\n};\nexport { PrecacheStrategy };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] The cache to use for precaching.\n * @param {string} [options.plugins] Plugins to use when precaching as well\n * as responding to fetch events for precached assets.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n this._strategy = new PrecacheStrategy({\n cacheName: cacheNames.getPrecacheName(cacheName),\n plugins: [\n ...plugins,\n new PrecacheCacheKeyPlugin({ precacheController: this }),\n ],\n fallbackToNetwork,\n });\n // Bind the install and activate methods to the instance.\n this.install = this.install.bind(this);\n this.activate = this.activate.bind(this);\n }\n /**\n * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n * used to cache assets and respond to fetch events.\n */\n get strategy() {\n return this._strategy;\n }\n /**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n */\n precache(entries) {\n this.addToCacheList(entries);\n if (!this._installAndActiveListenersAdded) {\n self.addEventListener('install', this.install);\n self.addEventListener('activate', this.activate);\n this._installAndActiveListenersAdded = true;\n }\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {Array} entries\n * Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n install(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const installReportPlugin = new PrecacheInstallReportPlugin();\n this.strategy.plugins.push(installReportPlugin);\n // Cache entries one at a time.\n // See https://github.com/GoogleChrome/workbox/issues/2528\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n await Promise.all(this.strategy.handleAll({\n params: { cacheKey },\n request,\n event,\n }));\n }\n const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, notUpdatedURLs);\n }\n return { updatedURLs, notUpdatedURLs };\n });\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n activate(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const cache = await self.caches.open(this.strategy.cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * @param {string} url A cache key whose SRI you want to look up.\n * @return {string} The subresource integrity associated with the cache key,\n * or undefined if it's not set.\n */\n getIntegrityForCacheKey(cacheKey) {\n return this._cacheKeysToIntegrities.get(cacheKey);\n }\n /**\n * This acts as a drop-in replacement for\n * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this.strategy.cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @return {workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n return (options) => {\n options.request = new Request(url);\n options.params = Object.assign({ cacheKey }, options.params);\n return this.strategy.handle(options);\n };\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of {@link workbox-routing.Route} that takes a\n * {@link workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof workbox-precaching\n * @extends workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n /**\n * @param {PrecacheController} precacheController A `PrecacheController`\n * instance used to both match requests and respond to fetch events.\n * @param {Object} [options] Options to control how requests are matched\n * against the list of precached URLs.\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\n constructor(precacheController, options) {\n const match = ({ request, }) => {\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(request.url, options)) {\n const cacheKey = urlsToCacheKeys.get(possibleURL);\n if (cacheKey) {\n const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n return { cacheKey, integrity };\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n }\n return;\n };\n super(match, precacheController.strategy);\n }\n}\nexport { PrecacheRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * NavigationRoute makes it easy to create a\n * {@link workbox-routing.Route} that matches for browser\n * [navigation requests]{@link https://developers.google.com/web/fundamentals/primers/service-workers/high-performance-loading#first_what_are_navigation_requests}.\n *\n * It will only match incoming Requests whose\n * {@link https://fetch.spec.whatwg.org/#concept-request-mode|mode}\n * is set to `navigate`.\n *\n * You can optionally only apply this route to a subset of navigation requests\n * by using one or both of the `denylist` and `allowlist` parameters.\n *\n * @memberof workbox-routing\n * @extends workbox-routing.Route\n */\nclass NavigationRoute extends Route {\n /**\n * If both `denylist` and `allowlist` are provided, the `denylist` will\n * take precedence and the request will not match this route.\n *\n * The regular expressions in `allowlist` and `denylist`\n * are matched against the concatenated\n * [`pathname`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/pathname}\n * and [`search`]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search}\n * portions of the requested URL.\n *\n * *Note*: These RegExps may be evaluated against every destination URL during\n * a navigation. Avoid using\n * [complex RegExps](https://github.com/GoogleChrome/workbox/issues/3077),\n * or else your users may see delays when navigating your site.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {Object} options\n * @param {Array} [options.denylist] If any of these patterns match,\n * the route will not handle the request (even if a allowlist RegExp matches).\n * @param {Array} [options.allowlist=[/./]] If any of these patterns\n * match the URL's pathname and search parameter, the route will handle the\n * request (assuming the denylist doesn't match).\n */\n constructor(handler, { allowlist = [/./], denylist = [] } = {}) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArrayOfClass(allowlist, RegExp, {\n moduleName: 'workbox-routing',\n className: 'NavigationRoute',\n funcName: 'constructor',\n paramName: 'options.allowlist',\n });\n assert.isArrayOfClass(denylist, RegExp, {\n moduleName: 'workbox-routing',\n className: 'NavigationRoute',\n funcName: 'constructor',\n paramName: 'options.denylist',\n });\n }\n super((options) => this._match(options), handler);\n this._allowlist = allowlist;\n this._denylist = denylist;\n }\n /**\n * Routes match handler.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {Request} options.request\n * @return {boolean}\n *\n * @private\n */\n _match({ url, request }) {\n if (request && request.mode !== 'navigate') {\n return false;\n }\n const pathnameAndSearch = url.pathname + url.search;\n for (const regExp of this._denylist) {\n if (regExp.test(pathnameAndSearch)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The navigation route ${pathnameAndSearch} is not ` +\n `being used, since the URL matches this denylist pattern: ` +\n `${regExp.toString()}`);\n }\n return false;\n }\n }\n if (this._allowlist.some((regExp) => regExp.test(pathnameAndSearch))) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The navigation route ${pathnameAndSearch} ` + `is being used.`);\n }\n return true;\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`The navigation route ${pathnameAndSearch} is not ` +\n `being used, since the URL being navigated to doesn't ` +\n `match the allowlist.`);\n }\n return false;\n }\n}\nexport { NavigationRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { deleteOutdatedCaches } from './utils/deleteOutdatedCaches.js';\nimport './_version.js';\n/**\n * Adds an `activate` event listener which will clean up incompatible\n * precaches that were created by older versions of Workbox.\n *\n * @memberof workbox-precaching\n */\nfunction cleanupOutdatedCaches() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('activate', ((event) => {\n const cacheName = cacheNames.getPrecacheName();\n event.waitUntil(deleteOutdatedCaches(cacheName).then((cachesDeleted) => {\n if (process.env.NODE_ENV !== 'production') {\n if (cachesDeleted.length > 0) {\n logger.log(`The following out-of-date precaches were cleaned up ` +\n `automatically:`, cachesDeleted);\n }\n }\n }));\n }));\n}\nexport { cleanupOutdatedCaches };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst SUBSTRING_TO_FIND = '-precache-';\n/**\n * Cleans up incompatible precaches that were created by older versions of\n * Workbox, by a service worker registered under the current scope.\n *\n * This is meant to be called as part of the `activate` event.\n *\n * This should be safe to use as long as you don't include `substringToFind`\n * (defaulting to `-precache-`) in your non-precache cache names.\n *\n * @param {string} currentPrecacheName The cache name currently in use for\n * precaching. This cache won't be deleted.\n * @param {string} [substringToFind='-precache-'] Cache names which include this\n * substring will be deleted (excluding `currentPrecacheName`).\n * @return {Array} A list of all the cache names that were deleted.\n *\n * @private\n * @memberof workbox-precaching\n */\nconst deleteOutdatedCaches = async (currentPrecacheName, substringToFind = SUBSTRING_TO_FIND) => {\n const cacheNames = await self.caches.keys();\n const cacheNamesToDelete = cacheNames.filter((cacheName) => {\n return (cacheName.includes(substringToFind) &&\n cacheName.includes(self.registration.scope) &&\n cacheName !== currentPrecacheName);\n });\n await Promise.all(cacheNamesToDelete.map((cacheName) => self.caches.delete(cacheName)));\n return cacheNamesToDelete;\n};\nexport { deleteOutdatedCaches };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport './_version.js';\n/**\n * Claim any currently available clients once the service worker\n * becomes active. This is normally used in conjunction with `skipWaiting()`.\n *\n * @memberof workbox-core\n */\nfunction clientsClaim() {\n self.addEventListener('activate', () => self.clients.claim());\n}\nexport { clientsClaim };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Helper function that calls\n * {@link PrecacheController#createHandlerBoundToURL} on the default\n * {@link PrecacheController} instance.\n *\n * If you are creating your own {@link PrecacheController}, then call the\n * {@link PrecacheController#createHandlerBoundToURL} on that instance,\n * instead of using this function.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @param {boolean} [fallbackToNetwork=true] Whether to attempt to get the\n * response from the network if there's a precache miss.\n * @return {workbox-routing~handlerCallback}\n *\n * @memberof workbox-precaching\n */\nfunction createHandlerBoundToURL(url) {\n const precacheController = getOrCreatePrecacheController();\n return precacheController.createHandlerBoundToURL(url);\n}\nexport { createHandlerBoundToURL };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * {@link workbox-precaching.precache} and\n * {@link workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See the\n * {@link workbox-precaching.PrecacheRoute} options.\n *\n * @memberof workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * {@link workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * {@link workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.precache(entries);\n}\nexport { precache };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}\n * options.\n *\n * @memberof workbox-precaching\n */\nfunction addRoute(options) {\n const precacheController = getOrCreatePrecacheController();\n const precacheRoute = new PrecacheRoute(precacheController, options);\n registerRoute(precacheRoute);\n}\nexport { addRoute };\n"],"names":["self","_","e","messageGenerator","fallback","code","args","msg","length","JSON","stringify","WorkboxError","Error","constructor","errorCode","details","super","this","name","normalizeHandler","handler","handle","Route","match","method","setCatchHandler","catchHandler","RegExpRoute","regExp","url","result","exec","href","origin","location","index","slice","Router","_routes","Map","_defaultHandlerMap","routes","addFetchListener","addEventListener","event","request","responsePromise","handleRequest","respondWith","addCacheListener","data","type","payload","requestPromises","Promise","all","urlsToCache","map","entry","Request","waitUntil","ports","then","postMessage","URL","protocol","startsWith","sameOrigin","params","route","findMatchingRoute","has","get","err","reject","_catchHandler","catch","async","catchErr","matchResult","Array","isArray","Object","keys","undefined","setDefaultHandler","set","registerRoute","push","unregisterRoute","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","capture","captureUrl","matchCallback","RegExp","moduleName","funcName","paramName","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","value","join","cacheNames","userCacheName","asyncFn","returnPromise","createCacheKey","urlObject","cacheKey","revision","cacheKeyURL","originalURL","searchParams","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","state","originalRequest","cachedResponseWillBeUsed","cachedResponse","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","_precacheController","getCacheKeyForURL","headers","supportStatus","copyResponse","response","modifier","clonedResponse","clone","responseInit","Headers","status","statusText","modifiedResponseInit","body","testResponse","Response","error","canConstructResponseFromBodyStream","blob","stripParams","fullURL","ignoreParams","strippedURL","param","delete","Deferred","promise","resolve","quotaErrorCallbacks","Set","toRequest","input","StrategyHandler","strategy","options","_cacheKeys","assign","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","mode","FetchEvent","preloadResponse","possiblePreloadResponse","hasCallback","cb","iterateCallbacks","thrownErrorMessage","message","pluginFilteredRequest","fetchResponse","fetch","fetchOptions","callback","runCallbacks","responseClone","cachePut","key","matchOptions","effectiveRequest","getCacheKey","multiMatchOptions","caches","ms","setTimeout","String","replace","responseToCache","_ensureResponseSafeToCache","cache","open","hasCacheUpdateCallback","oldResponse","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheMatchIgnoreParams","put","executeQuotaErrorCallbacks","newResponse","statefulCallback","statefulParam","shift","destroy","pluginsUsed","Strategy","responseDone","handleAll","_getResponse","_awaitComplete","_handle","doneWaiting","waitUntilError","PrecacheStrategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","cacheMatch","_handleInstall","_handleFetch","integrityInManifest","integrity","integrityInRequest","noIntegrityConflict","_useDefaultCacheabilityPluginIfNeeded","defaultPluginIndex","cacheWillUpdatePluginCount","entries","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","redirected","PrecacheController","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","bind","activate","addToCacheList","_installAndActiveListenersAdded","urlsToWarnAbout","cacheMode","firstEntry","secondEntry","warningMessage","console","warn","installReportPlugin","credentials","currentlyCachedRequests","expectedCacheKeys","values","deletedURLs","getURLsToCacheKeys","getCachedURLs","getIntegrityForCacheKey","createHandlerBoundToURL","getOrCreatePrecacheController","PrecacheRoute","urlsToCacheKeys","possibleURL","ignoreURLParametersMatching","directoryIndex","cleanURLs","urlManipulation","hash","urlWithoutIgnoredParams","some","test","removeIgnoredSearchParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","generateURLVariations","allowlist","denylist","_match","_allowlist","_denylist","pathnameAndSearch","search","currentPrecacheName","substringToFind","cacheNamesToDelete","includes","deleteOutdatedCaches","cachesDeleted","clients","claim","addRoute"],"mappings":"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"} \ No newline at end of file

\n
\n \n
\n
\n
\n
\n
\n );\n}\n\n// -- private variables ----------------------------------------------------------------------------\n\nlet _rootContainer: Root;\n\n// -- private functions ----------------------------------------------------------------------------\n\n/**\n * Helper function to render/update the Splash component.\n * @param progress progress bar value [0 - 100]\n */\nasync function _renderComponent(progress?: number): Promise {\n return new Promise((resolve) => {\n flushSync(() => {\n _rootContainer.render(\n ,\n );\n requestAnimationFrame(() => resolve());\n });\n });\n}\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Mounts the Splash component in the view overlay.\n */\nexport async function mountSplash(): Promise {\n await mountViewOverlay(async (container: HTMLElement) => {\n _rootContainer = createRoot(container);\n await _renderComponent();\n });\n}\n\n/**\n * Updates the Splash component in the view overlay.\n * @param progress progress bar value [0 - 100]\n */\nexport async function updateSplash(progress: number): Promise {\n await _renderComponent(progress);\n}\n\n/**\n * Unmounts the Splash component from the view overlay.\n */\nexport async function unmountSplash(): Promise {\n await unmountViewOverlay();\n return new Promise((resolve) => {\n flushSync(() => {\n _rootContainer.unmount();\n requestAnimationFrame(() => resolve());\n });\n });\n}\n"],"names":["definition","injected","Splash","props","jsxs","jsx","SImage","_rootContainer","_renderComponent","progress","resolve","flushSync","mountSplash","mountViewOverlay","container","createRoot","updateSplash","unmountSplash","unmountViewOverlay"],"mappings":"gLAiBO,MAAMA,EAET,CACF,OAAQ,CAAC,YAAY,CACvB,EAEaC,EAET,CAEF,OAAQ,MACV,EAOO,SAASC,EAAOC,EAKP,CAEZ,OAAAC,EAAC,MAAI,CAAA,GAAG,mBACN,SAAA,CAACC,EAAA,MAAA,CAAI,GAAG,cACN,SAAAA,EAACC,GAAO,MAAOH,EAAM,KAAM,CAC7B,CAAA,EACCE,EAAA,MAAA,CAAI,GAAG,sBACN,WAAC,MAAI,CAAA,GAAG,kBAAkB,MAAO,CAAE,MAAO,GAAGF,EAAM,YAAe,CAAA,EACpE,CACF,CAAA,CAAA,CAEJ,CAIA,IAAII,EAQJ,eAAeC,EAAiBC,EAAkC,CACzD,OAAA,IAAI,QAASC,GAAY,CAC9BC,EAAAA,UAAU,IAAM,CACCJ,EAAA,OACbF,EAACH,EAAA,CACC,KAAMD,EAAS,OAAO,YAAY,EAClC,SAAU,KAAK,IAAI,KAAK,IAAIQ,GAAY,EAAG,CAAC,EAAG,GAAG,CAAA,CACnD,CAAA,EAEmB,sBAAA,IAAMC,GAAS,CAAA,CACtC,CAAA,CACF,CACH,CAOA,eAAsBE,GAA6B,CAC3C,MAAAC,EAAiB,MAAOC,GAA2B,CACvDP,EAAiBQ,EAAWD,CAAS,EACrC,MAAMN,EAAiB,CAAA,CACxB,CACH,CAMA,eAAsBQ,EAAaP,EAAiC,CAClE,MAAMD,EAAiBC,CAAQ,CACjC,CAKA,eAAsBQ,GAA+B,CACnD,aAAMC,EAAmB,EAClB,IAAI,QAASR,GAAY,CAC9BC,EAAAA,UAAU,IAAM,CACdJ,EAAe,QAAQ,EACD,sBAAA,IAAMG,GAAS,CAAA,CACtC,CAAA,CACF,CACH"} \ No newline at end of file diff --git a/assets/index-97cad2bf.js b/assets/index-97cad2bf.js new file mode 100644 index 00000000..5c3e5bb2 --- /dev/null +++ b/assets/index-97cad2bf.js @@ -0,0 +1,2 @@ +const i={};function f(n,t){n in i||(i[n]=[]),i[n].push(t)}function h(n,...t){!(n in i)||i[n].length===0||i[n].forEach(a=>a(...t))}export{h as e,f as h}; +//# sourceMappingURL=index-97cad2bf.js.map diff --git a/assets/index-97cad2bf.js.map b/assets/index-97cad2bf.js.map new file mode 100644 index 00000000..437e78df --- /dev/null +++ b/assets/index-97cad2bf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-97cad2bf.js","sources":["../../../lib/events/src/index.ts"],"sourcesContent":["import type { TEvent } from '#/@types/events';\n\n// -- private variables ----------------------------------------------------------------------------\n\n/** Map of event names and corresponding list of callbacks. */\nconst _eventTable: Partial> = {};\n\n// -- public functions -----------------------------------------------------------------------------\n\nexport function hearEvent(event: 'menu.run', callback: () => unknown): void;\nexport function hearEvent(event: 'menu.stop', callback: () => unknown): void;\nexport function hearEvent(event: 'menu.reset', callback: () => unknown): void;\nexport function hearEvent(event: 'menu.uploadFile', callback: (e: Event) => unknown): void;\nexport function hearEvent(event: 'menu.startRecording', callback: () => unknown): void;\nexport function hearEvent(event: 'menu.stopRecording', callback: () => unknown): void;\nexport function hearEvent(event: 'menu.exportDrawing', callback: () => unknown): void;\nexport function hearEvent(event: 'menu.loadProject', callback: (e: Event) => unknown): void;\nexport function hearEvent(event: 'menu.saveProject', callback: () => unknown): void;\n/**\n * Adds a callback to an event.\n * @param event event name\n * @param callback callback to be called when the event is emitted\n */\nexport function hearEvent(event: TEvent, callback: CallableFunction): void {\n if (!(event in _eventTable)) _eventTable[event] = [];\n\n _eventTable[event]!.push(callback);\n}\n\n// -----------------------------------------------------------------------------\n\nexport function emitEvent(event: 'menu.run'): void;\nexport function emitEvent(event: 'menu.stop'): void;\nexport function emitEvent(event: 'menu.reset'): void;\n/**\n * Emits an event.\n * @param event event name\n * @param args arguments to the event callbacks\n */\nexport function emitEvent(event: TEvent, ...args: unknown[]): void {\n if (!(event in _eventTable) || _eventTable[event]!.length === 0) return;\n\n _eventTable[event]!.forEach((callback) => callback(...args));\n}\n"],"names":["_eventTable","hearEvent","event","callback","emitEvent","args"],"mappings":"AAKA,MAAMA,EAA2D,CAAA,EAkBjD,SAAAC,EAAUC,EAAeC,EAAkC,CACjED,KAASF,IAA0BA,EAAAE,CAAK,EAAI,IAEtCF,EAAAE,CAAK,EAAG,KAAKC,CAAQ,CACrC,CAYgB,SAAAC,EAAUF,KAAkBG,EAAuB,CAC3D,EAAEH,KAASF,IAAgBA,EAAYE,CAAK,EAAG,SAAW,GAElDF,EAAAE,CAAK,EAAG,QAASC,GAAaA,EAAS,GAAGE,CAAI,CAAC,CAC/D"} \ No newline at end of file diff --git a/assets/index-98afefcf.css b/assets/index-98afefcf.css new file mode 100644 index 00000000..6752bb70 --- /dev/null +++ b/assets/index-98afefcf.css @@ -0,0 +1 @@ +#toolbar-wrapper{flex-shrink:0;position:relative;display:flex;flex-direction:row;width:unset;height:100%}#toolbar-wrapper #toolbar{display:flex;flex-direction:column;padding:.5rem;background-color:#1b1464}#toolbar-wrapper #toolbar .toolbar-cluster{flex-shrink:1;display:flex;flex-direction:column;align-items:center;width:100%;height:100%;padding:.25rem 0}#toolbar-wrapper #toolbar .toolbar-cluster .toolbar-cluster-item{width:2.5rem;margin:.25rem 0;padding:.25rem;border-radius:.25rem;background-color:#0652dd}#toolbar-wrapper #toolbar .toolbar-cluster .toolbar-cluster-item:first-child,#toolbar-wrapper #toolbar .toolbar-cluster .toolbar-cluster-item:last-child{margin:0}#toolbar-wrapper #toolbar .toolbar-cluster .toolbar-cluster-item.toolbar-cluster-item-btn{height:2.5rem;border:none;border-radius:.25rem;background-color:#fff;cursor:pointer;transition:all .25s ease}#toolbar-wrapper #toolbar .toolbar-cluster#toolbar-cluster-a{justify-content:flex-start;padding-top:0}#toolbar-wrapper #toolbar .toolbar-cluster#toolbar-cluster-b{justify-content:flex-end;padding-bottom:0}#toolbar-wrapper .toolbar-extended{display:flex;flex-direction:column;box-sizing:border-box;max-width:30rem;height:100%;padding:.5rem}#toolbar-wrapper .toolbar-extended>*{width:100%;padding:.5rem}#toolbar-wrapper .toolbar-extended .toolbar-extended-head{flex-shrink:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;height:2rem;padding-top:0;padding-bottom:0}#toolbar-wrapper .toolbar-extended .toolbar-extended-head .toolbar-extended-head-title{margin:0 0 0 .5rem;font-size:1rem;color:#fff}#toolbar-wrapper .toolbar-extended .toolbar-extended-head .toolbar-extended-head-btn{width:1.5rem;height:1.5rem;padding:.125rem;border:none;border-radius:.25rem;text-transform:uppercase;background-color:#fff;cursor:pointer;transition:all .25s ease}#toolbar-wrapper .toolbar-extended .toolbar-extended-head .toolbar-extended-head-btn svg{width:100%;height:100%}#toolbar-wrapper .toolbar-extended .toolbar-extended-head .toolbar-extended-head-btn svg .path-fill{fill:#0652dd;transition:all .25s ease}#toolbar-wrapper .toolbar-extended .toolbar-extended-head .toolbar-extended-head-btn:hover svg .path-fill{fill:#1b9cfc}#toolbar-wrapper .toolbar-extended .toolbar-extended-content{flex-shrink:1;height:100%;padding-top:0}#toolbar-wrapper .toolbar-extended.toolbar-extended-hidden{display:none!important}#toolbar-wrapper #toolbar-float{position:absolute;z-index:10;top:0;left:100%}#toolbar-wrapper #toolbar-float>*{background-color:#1b9cfc}#toolbar-wrapper #toolbar-float #toolbar-float-head{border-radius:.25rem .25rem 0 0;border-bottom:none}#toolbar-wrapper #toolbar-float #toolbar-float-content{border-radius:0 0 .25rem .25rem}#toolbar-wrapper #toolbar-pinned{padding:.5rem;border-top:0;border-bottom:0;background-color:#1b9cfc}#toolbar-wrapper #toolbar-pinned>*{background-color:#0652dd}#toolbar-wrapper #toolbar-pinned #toolbar-pinned-head{border-radius:.25rem .25rem 0 0}#toolbar-wrapper #toolbar-pinned #toolbar-pinned-content{border-radius:0 0 .25rem .25rem}html,body{width:100vw;height:100vh;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}#mb-root{position:relative;width:100%;height:100%}#mb-root *{box-sizing:border-box}#mb-root #root-overlay{position:absolute;z-index:9999;top:0;width:100%;height:100%}#mb-root #root-overlay #root-overlay-body{position:relative;width:100%;height:100%}#mb-root #root-main{position:relative;display:flex;flex-direction:row;width:100%;height:100%}#mb-root #root-main #workspace{flex-shrink:1;position:relative;width:100%;height:100%} diff --git a/assets/index-98afefcf.css.gz b/assets/index-98afefcf.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dcc2485b40b663f1b0c16ed82ae787f5bf80182d GIT binary patch literal 908 zcmV;719SWziwFP!000021HD(vZsRr--S;b07_%wFz)mv(A_22#2SK}N3pAJypu{VQ z6N(f_%8v;7_g;#UV#{(YC+XOLA=2czFP_7zg;h!2 zmMa-)5Y+ND#EhFt&|T!##qDCoHKcx#+Qb{qY!TJcfQ<{_d10f~a{1|bF)|eN6U}Rg zsSF(nhQUGNmg*>N+5rug{-C;Vsl$mFPD~Tat$=}hf%|%PWazys z7DOvId?CQc`{1bARn6P(Pkx{PY)WQvshXhMHL+<{r=&GfDE zzu60}DryUoaUmM_(_algHu9)YYebs#XO-NgS^74!9qUHd{e-5R63`>ai5NIzAP2>B zC-G-qR!Unc?P*CSnNZX=Lx)8ZgSu!Tej*%kx9DE%c`qP4*Fy59CdC!3tNgXQEc}jH|xzFFV;ohXD+?=XSC#E7ZG$r05Lo48OrcCfqeRl zrVs7#9@m8rkShqj{TcqNFySivXS>TmhToD}+B*Cl8A0(?LWK8R)8GLWCj6=uXa4aI z5NohJrNQ4&Luhc07|=Y6$p(@~j&8K~P^pwHT(uF7;}wdk#9~saC!)-Dye8LlXHqKQ z8Ot}-ay&1}glJse9KY?H660=1a1Jt9xL@ML4YlDFvftsSqx(6V2aty&(w6k{Fg!>} ixoqD0#y1B%SZtJjY&)QlBF}dDr~d#-({3uU4gdhw^ugl* literal 0 HcmV?d00001 diff --git a/assets/index-b95677c8.js b/assets/index-b95677c8.js new file mode 100644 index 00000000..9aabecda --- /dev/null +++ b/assets/index-b95677c8.js @@ -0,0 +1,41 @@ +var Ai={exports:{}},qr={},Bi={exports:{}},T={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Kt=Symbol.for("react.element"),tc=Symbol.for("react.portal"),rc=Symbol.for("react.fragment"),lc=Symbol.for("react.strict_mode"),uc=Symbol.for("react.profiler"),oc=Symbol.for("react.provider"),ic=Symbol.for("react.context"),sc=Symbol.for("react.forward_ref"),ac=Symbol.for("react.suspense"),cc=Symbol.for("react.memo"),fc=Symbol.for("react.lazy"),Oo=Symbol.iterator;function dc(e){return e===null||typeof e!="object"?null:(e=Oo&&e[Oo]||e["@@iterator"],typeof e=="function"?e:null)}var Hi={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Wi=Object.assign,Qi={};function rt(e,n,t){this.props=e,this.context=n,this.refs=Qi,this.updater=t||Hi}rt.prototype.isReactComponent={};rt.prototype.setState=function(e,n){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};rt.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ki(){}Ki.prototype=rt.prototype;function Fu(e,n,t){this.props=e,this.context=n,this.refs=Qi,this.updater=t||Hi}var Iu=Fu.prototype=new Ki;Iu.constructor=Fu;Wi(Iu,rt.prototype);Iu.isPureReactComponent=!0;var Mo=Array.isArray,Yi=Object.prototype.hasOwnProperty,ju={current:null},Xi={key:!0,ref:!0,__self:!0,__source:!0};function Gi(e,n,t){var r,l={},u=null,o=null;if(n!=null)for(r in n.ref!==void 0&&(o=n.ref),n.key!==void 0&&(u=""+n.key),n)Yi.call(n,r)&&!Xi.hasOwnProperty(r)&&(l[r]=n[r]);var i=arguments.length-2;if(i===1)l.children=t;else if(1>>1,X=C[H];if(0>>1;Hl(hl,z))hnl(qt,hl)?(C[H]=qt,C[hn]=z,H=hn):(C[H]=hl,C[vn]=z,H=vn);else if(hnl(qt,z))C[H]=qt,C[hn]=z,H=hn;else break e}}return N}function l(C,N){var z=C.sortIndex-N.sortIndex;return z!==0?z:C.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var u=performance;e.unstable_now=function(){return u.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var s=[],c=[],v=1,m=null,p=3,g=!1,w=!1,k=!1,I=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(C){for(var N=t(c);N!==null;){if(N.callback===null)r(c);else if(N.startTime<=C)r(c),N.sortIndex=N.expirationTime,n(s,N);else break;N=t(c)}}function h(C){if(k=!1,d(C),!w)if(t(s)!==null)w=!0,ml(E);else{var N=t(c);N!==null&&vl(h,N.startTime-C)}}function E(C,N){w=!1,k&&(k=!1,f(P),P=-1),g=!0;var z=p;try{for(d(N),m=t(s);m!==null&&(!(m.expirationTime>N)||C&&!xe());){var H=m.callback;if(typeof H=="function"){m.callback=null,p=m.priorityLevel;var X=H(m.expirationTime<=N);N=e.unstable_now(),typeof X=="function"?m.callback=X:m===t(s)&&r(s),d(N)}else r(s);m=t(s)}if(m!==null)var Jt=!0;else{var vn=t(c);vn!==null&&vl(h,vn.startTime-N),Jt=!1}return Jt}finally{m=null,p=z,g=!1}}var _=!1,x=null,P=-1,B=5,L=-1;function xe(){return!(e.unstable_now()-LC||125H?(C.sortIndex=z,n(c,C),t(s)===null&&C===t(c)&&(k?(f(P),P=-1):k=!0,vl(h,z-H))):(C.sortIndex=X,n(s,C),w||g||(w=!0,ml(E))),C},e.unstable_shouldYield=xe,e.unstable_wrapCallback=function(C){var N=p;return function(){var z=p;p=N;try{return C.apply(this,arguments)}finally{p=z}}}})(es);bi.exports=es;var Cc=bi.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ns=Zi,he=Cc;function y(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Hl=Object.prototype.hasOwnProperty,_c=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Fo={},Io={};function xc(e){return Hl.call(Io,e)?!0:Hl.call(Fo,e)?!1:_c.test(e)?Io[e]=!0:(Fo[e]=!0,!1)}function Pc(e,n,t,r){if(t!==null&&t.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return r?!1:t!==null?!t.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Nc(e,n,t,r){if(n===null||typeof n>"u"||Pc(e,n,t,r))return!0;if(r)return!1;if(t!==null)switch(t.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function ie(e,n,t,r,l,u,o){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=t,this.propertyName=e,this.type=n,this.sanitizeURL=u,this.removeEmptyString=o}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){b[e]=new ie(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];b[n]=new ie(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){b[e]=new ie(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){b[e]=new ie(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){b[e]=new ie(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){b[e]=new ie(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){b[e]=new ie(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){b[e]=new ie(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){b[e]=new ie(e,5,!1,e.toLowerCase(),null,!1,!1)});var Vu=/[\-:]([a-z])/g;function Au(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(Vu,Au);b[n]=new ie(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(Vu,Au);b[n]=new ie(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(Vu,Au);b[n]=new ie(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){b[e]=new ie(e,1,!1,e.toLowerCase(),null,!1,!1)});b.xlinkHref=new ie("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){b[e]=new ie(e,1,!1,e.toLowerCase(),null,!0,!0)});function Bu(e,n,t,r){var l=b.hasOwnProperty(n)?b[n]:null;(l!==null?l.type!==0:r||!(2i||l[o]!==u[i]){var s=` +`+l[o].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=o&&0<=i);break}}}finally{wl=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?ht(e):""}function zc(e){switch(e.tag){case 5:return ht(e.type);case 16:return ht("Lazy");case 13:return ht("Suspense");case 19:return ht("SuspenseList");case 0:case 2:case 15:return e=kl(e.type,!1),e;case 11:return e=kl(e.type.render,!1),e;case 1:return e=kl(e.type,!0),e;default:return""}}function Yl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Mn:return"Fragment";case On:return"Portal";case Wl:return"Profiler";case Hu:return"StrictMode";case Ql:return"Suspense";case Kl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ls:return(e.displayName||"Context")+".Consumer";case rs:return(e._context.displayName||"Context")+".Provider";case Wu:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Qu:return n=e.displayName||null,n!==null?n:Yl(e.type)||"Memo";case Ge:n=e._payload,e=e._init;try{return Yl(e(n))}catch{}}return null}function Tc(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Yl(n);case 8:return n===Hu?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function cn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function os(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Lc(e){var n=os(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var l=t.get,u=t.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return l.call(this)},set:function(o){r=""+o,u.call(this,o)}}),Object.defineProperty(e,n,{enumerable:t.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function nr(e){e._valueTracker||(e._valueTracker=Lc(e))}function is(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t=n.getValue(),r="";return e&&(r=os(e)?e.checked?"true":"false":e.value),e=r,e!==t?(n.setValue(e),!0):!1}function zr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Xl(e,n){var t=n.checked;return V({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??e._wrapperState.initialChecked})}function Uo(e,n){var t=n.defaultValue==null?"":n.defaultValue,r=n.checked!=null?n.checked:n.defaultChecked;t=cn(n.value!=null?n.value:t),e._wrapperState={initialChecked:r,initialValue:t,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function ss(e,n){n=n.checked,n!=null&&Bu(e,"checked",n,!1)}function Gl(e,n){ss(e,n);var t=cn(n.value),r=n.type;if(t!=null)r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Zl(e,n.type,t):n.hasOwnProperty("defaultValue")&&Zl(e,n.type,cn(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function $o(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(!(r!=="submit"&&r!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function Zl(e,n,t){(n!=="number"||zr(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}var yt=Array.isArray;function Wn(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l"+n.valueOf().toString()+"",n=tr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Lt(e,n){if(n){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=n;return}}e.textContent=n}var kt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Rc=["Webkit","ms","Moz","O"];Object.keys(kt).forEach(function(e){Rc.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),kt[n]=kt[e]})});function ds(e,n,t){return n==null||typeof n=="boolean"||n===""?"":t||typeof n!="number"||n===0||kt.hasOwnProperty(e)&&kt[e]?(""+n).trim():n+"px"}function ps(e,n){e=e.style;for(var t in n)if(n.hasOwnProperty(t)){var r=t.indexOf("--")===0,l=ds(t,n[t],r);t==="float"&&(t="cssFloat"),r?e.setProperty(t,l):e[t]=l}}var Oc=V({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function bl(e,n){if(n){if(Oc[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(y(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(y(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(y(61))}if(n.style!=null&&typeof n.style!="object")throw Error(y(62))}}function eu(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var nu=null;function Ku(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var tu=null,Qn=null,Kn=null;function Bo(e){if(e=Gt(e)){if(typeof tu!="function")throw Error(y(280));var n=e.stateNode;n&&(n=rl(n),tu(e.stateNode,e.type,n))}}function ms(e){Qn?Kn?Kn.push(e):Kn=[e]:Qn=e}function vs(){if(Qn){var e=Qn,n=Kn;if(Kn=Qn=null,Bo(e),n)for(e=0;e>>=0,e===0?32:31-(Hc(e)/Wc|0)|0}var rr=64,lr=4194304;function gt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Or(e,n){var t=e.pendingLanes;if(t===0)return 0;var r=0,l=e.suspendedLanes,u=e.pingedLanes,o=t&268435455;if(o!==0){var i=o&~l;i!==0?r=gt(i):(u&=o,u!==0&&(r=gt(u)))}else o=t&~l,o!==0?r=gt(o):u!==0&&(r=gt(u));if(r===0)return 0;if(n!==0&&n!==r&&!(n&l)&&(l=r&-r,u=n&-n,l>=u||l===16&&(u&4194240)!==0))return n;if(r&4&&(r|=t&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=r;0t;t++)n.push(e);return n}function Yt(e,n,t){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Le(n),e[n]=t}function Xc(e,n){var t=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Et),Jo=String.fromCharCode(32),qo=!1;function Fs(e,n){switch(e){case"keyup":return Cf.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Is(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Dn=!1;function xf(e,n){switch(e){case"compositionend":return Is(n);case"keypress":return n.which!==32?null:(qo=!0,Jo);case"textInput":return e=n.data,e===Jo&&qo?null:e;default:return null}}function Pf(e,n){if(Dn)return e==="compositionend"||!eo&&Fs(e,n)?(e=Ms(),wr=Ju=be=null,Dn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:t,offset:n-e};e=r}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=ti(t)}}function Vs(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Vs(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function As(){for(var e=window,n=zr();n instanceof e.HTMLIFrameElement;){try{var t=typeof n.contentWindow.location.href=="string"}catch{t=!1}if(t)e=n.contentWindow;else break;n=zr(e.document)}return n}function no(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function Ff(e){var n=As(),t=e.focusedElem,r=e.selectionRange;if(n!==t&&t&&t.ownerDocument&&Vs(t.ownerDocument.documentElement,t)){if(r!==null&&no(t)){if(n=r.start,e=r.end,e===void 0&&(e=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(e,t.value.length);else if(e=(n=t.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var l=t.textContent.length,u=Math.min(r.start,l);r=r.end===void 0?u:Math.min(r.end,l),!e.extend&&u>r&&(l=r,r=u,u=l),l=ri(t,u);var o=ri(t,r);l&&o&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(n=n.createRange(),n.setStart(l.node,l.offset),e.removeAllRanges(),u>r?(e.addRange(n),e.extend(o.node,o.offset)):(n.setEnd(o.node,o.offset),e.addRange(n)))}}for(n=[],e=t;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Fn=null,su=null,_t=null,au=!1;function li(e,n,t){var r=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;au||Fn==null||Fn!==zr(r)||(r=Fn,"selectionStart"in r&&no(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),_t&&It(_t,r)||(_t=r,r=Fr(su,"onSelect"),0Un||(e.current=vu[Un],vu[Un]=null,Un--)}function M(e,n){Un++,vu[Un]=e.current,e.current=n}var fn={},re=pn(fn),ce=pn(!1),_n=fn;function Jn(e,n){var t=e.type.contextTypes;if(!t)return fn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===n)return r.__reactInternalMemoizedMaskedChildContext;var l={},u;for(u in t)l[u]=n[u];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=l),l}function fe(e){return e=e.childContextTypes,e!=null}function jr(){F(ce),F(re)}function fi(e,n,t){if(re.current!==fn)throw Error(y(168));M(re,n),M(ce,t)}function Zs(e,n,t){var r=e.stateNode;if(n=n.childContextTypes,typeof r.getChildContext!="function")return t;r=r.getChildContext();for(var l in r)if(!(l in n))throw Error(y(108,Tc(e)||"Unknown",l));return V({},t,r)}function Ur(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||fn,_n=re.current,M(re,e),M(ce,ce.current),!0}function di(e,n,t){var r=e.stateNode;if(!r)throw Error(y(169));t?(e=Zs(e,n,_n),r.__reactInternalMemoizedMergedChildContext=e,F(ce),F(re),M(re,e)):F(ce),M(ce,t)}var $e=null,ll=!1,Dl=!1;function Js(e){$e===null?$e=[e]:$e.push(e)}function Yf(e){ll=!0,Js(e)}function mn(){if(!Dl&&$e!==null){Dl=!0;var e=0,n=O;try{var t=$e;for(O=1;e>=o,l-=o,Ve=1<<32-Le(n)+l|t<P?(B=x,x=null):B=x.sibling;var L=p(f,x,d[P],h);if(L===null){x===null&&(x=B);break}e&&x&&L.alternate===null&&n(f,x),a=u(L,a,P),_===null?E=L:_.sibling=L,_=L,x=B}if(P===d.length)return t(f,x),j&&yn(f,P),E;if(x===null){for(;PP?(B=x,x=null):B=x.sibling;var xe=p(f,x,L.value,h);if(xe===null){x===null&&(x=B);break}e&&x&&xe.alternate===null&&n(f,x),a=u(xe,a,P),_===null?E=xe:_.sibling=xe,_=xe,x=B}if(L.done)return t(f,x),j&&yn(f,P),E;if(x===null){for(;!L.done;P++,L=d.next())L=m(f,L.value,h),L!==null&&(a=u(L,a,P),_===null?E=L:_.sibling=L,_=L);return j&&yn(f,P),E}for(x=r(f,x);!L.done;P++,L=d.next())L=g(x,f,P,L.value,h),L!==null&&(e&&L.alternate!==null&&x.delete(L.key===null?P:L.key),a=u(L,a,P),_===null?E=L:_.sibling=L,_=L);return e&&x.forEach(function(ot){return n(f,ot)}),j&&yn(f,P),E}function I(f,a,d,h){if(typeof d=="object"&&d!==null&&d.type===Mn&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case er:e:{for(var E=d.key,_=a;_!==null;){if(_.key===E){if(E=d.type,E===Mn){if(_.tag===7){t(f,_.sibling),a=l(_,d.props.children),a.return=f,f=a;break e}}else if(_.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Ge&&wi(E)===_.type){t(f,_.sibling),a=l(_,d.props),a.ref=pt(f,_,d),a.return=f,f=a;break e}t(f,_);break}else n(f,_);_=_.sibling}d.type===Mn?(a=Cn(d.props.children,f.mode,h,d.key),a.return=f,f=a):(h=Nr(d.type,d.key,d.props,null,f.mode,h),h.ref=pt(f,a,d),h.return=f,f=h)}return o(f);case On:e:{for(_=d.key;a!==null;){if(a.key===_)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){t(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{t(f,a);break}else n(f,a);a=a.sibling}a=Bl(d,f.mode,h),a.return=f,f=a}return o(f);case Ge:return _=d._init,I(f,a,_(d._payload),h)}if(yt(d))return w(f,a,d,h);if(st(d))return k(f,a,d,h);fr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(t(f,a.sibling),a=l(a,d),a.return=f,f=a):(t(f,a),a=Al(d,f.mode,h),a.return=f,f=a),o(f)):t(f,a)}return I}var bn=ua(!0),oa=ua(!1),Zt={},je=pn(Zt),Vt=pn(Zt),At=pn(Zt);function Sn(e){if(e===Zt)throw Error(y(174));return e}function co(e,n){switch(M(At,n),M(Vt,e),M(je,Zt),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:ql(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=ql(n,e)}F(je),M(je,n)}function et(){F(je),F(Vt),F(At)}function ia(e){Sn(At.current);var n=Sn(je.current),t=ql(n,e.type);n!==t&&(M(Vt,e),M(je,t))}function fo(e){Vt.current===e&&(F(je),F(Vt))}var U=pn(0);function Wr(e){for(var n=e;n!==null;){if(n.tag===13){var t=n.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if(n.flags&128)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Fl=[];function po(){for(var e=0;et?t:4,e(!0);var r=Il.transition;Il.transition={};try{e(!1),n()}finally{O=t,Il.transition=r}}function Ca(){return _e().memoizedState}function Jf(e,n,t){var r=sn(e);if(t={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null},_a(e))xa(n,t);else if(t=na(e,n,t,r),t!==null){var l=ue();Re(t,e,r,l),Pa(t,n,r)}}function qf(e,n,t){var r=sn(e),l={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null};if(_a(e))xa(n,l);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=n.lastRenderedReducer,u!==null))try{var o=n.lastRenderedState,i=u(o,t);if(l.hasEagerState=!0,l.eagerState=i,Oe(i,o)){var s=n.interleaved;s===null?(l.next=l,so(n)):(l.next=s.next,s.next=l),n.interleaved=l;return}}catch{}finally{}t=na(e,n,l,r),t!==null&&(l=ue(),Re(t,e,r,l),Pa(t,n,r))}}function _a(e){var n=e.alternate;return e===$||n!==null&&n===$}function xa(e,n){xt=Qr=!0;var t=e.pending;t===null?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function Pa(e,n,t){if(t&4194240){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,Xu(e,t)}}var Kr={readContext:Ce,useCallback:ee,useContext:ee,useEffect:ee,useImperativeHandle:ee,useInsertionEffect:ee,useLayoutEffect:ee,useMemo:ee,useReducer:ee,useRef:ee,useState:ee,useDebugValue:ee,useDeferredValue:ee,useTransition:ee,useMutableSource:ee,useSyncExternalStore:ee,useId:ee,unstable_isNewReconciler:!1},bf={readContext:Ce,useCallback:function(e,n){return De().memoizedState=[e,n===void 0?null:n],e},useContext:Ce,useEffect:Si,useImperativeHandle:function(e,n,t){return t=t!=null?t.concat([e]):null,Cr(4194308,4,ga.bind(null,n,e),t)},useLayoutEffect:function(e,n){return Cr(4194308,4,e,n)},useInsertionEffect:function(e,n){return Cr(4,2,e,n)},useMemo:function(e,n){var t=De();return n=n===void 0?null:n,e=e(),t.memoizedState=[e,n],e},useReducer:function(e,n,t){var r=De();return n=t!==void 0?t(n):n,r.memoizedState=r.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},r.queue=e,e=e.dispatch=Jf.bind(null,$,e),[r.memoizedState,e]},useRef:function(e){var n=De();return e={current:e},n.memoizedState=e},useState:ki,useDebugValue:go,useDeferredValue:function(e){return De().memoizedState=e},useTransition:function(){var e=ki(!1),n=e[0];return e=Zf.bind(null,e[1]),De().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,t){var r=$,l=De();if(j){if(t===void 0)throw Error(y(407));t=t()}else{if(t=n(),Z===null)throw Error(y(349));Pn&30||ca(r,n,t)}l.memoizedState=t;var u={value:t,getSnapshot:n};return l.queue=u,Si(da.bind(null,r,u,e),[e]),r.flags|=2048,Wt(9,fa.bind(null,r,u,t,n),void 0,null),t},useId:function(){var e=De(),n=Z.identifierPrefix;if(j){var t=Ae,r=Ve;t=(r&~(1<<32-Le(r)-1)).toString(32)+t,n=":"+n+"R"+t,t=Bt++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(t,{is:r.is}):(e=o.createElement(t),t==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,t),e[Fe]=n,e[$t]=r,Fa(e,n,!1,!1),n.stateNode=e;e:{switch(o=eu(t,r),t){case"dialog":D("cancel",e),D("close",e),l=r;break;case"iframe":case"object":case"embed":D("load",e),l=r;break;case"video":case"audio":for(l=0;ltt&&(n.flags|=128,r=!0,mt(u,!1),n.lanes=4194304)}else{if(!r)if(e=Wr(o),e!==null){if(n.flags|=128,r=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),mt(u,!0),u.tail===null&&u.tailMode==="hidden"&&!o.alternate&&!j)return ne(n),null}else 2*W()-u.renderingStartTime>tt&&t!==1073741824&&(n.flags|=128,r=!0,mt(u,!1),n.lanes=4194304);u.isBackwards?(o.sibling=n.child,n.child=o):(t=u.last,t!==null?t.sibling=o:n.child=o,u.last=o)}return u.tail!==null?(n=u.tail,u.rendering=n,u.tail=n.sibling,u.renderingStartTime=W(),n.sibling=null,t=U.current,M(U,r?t&1|2:t&1),n):(ne(n),null);case 22:case 23:return _o(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&n.mode&1?pe&1073741824&&(ne(n),n.subtreeFlags&6&&(n.flags|=8192)):ne(n),null;case 24:return null;case 25:return null}throw Error(y(156,n.tag))}function id(e,n){switch(ro(n),n.tag){case 1:return fe(n.type)&&jr(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return et(),F(ce),F(re),po(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return fo(n),null;case 13:if(F(U),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(y(340));qn()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return F(U),null;case 4:return et(),null;case 10:return io(n.type._context),null;case 22:case 23:return _o(),null;case 24:return null;default:return null}}var pr=!1,te=!1,sd=typeof WeakSet=="function"?WeakSet:Set,S=null;function Bn(e,n){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){A(e,n,r)}else t.current=null}function Nu(e,n,t){try{t()}catch(r){A(e,n,r)}}var Li=!1;function ad(e,n){if(cu=Mr,e=As(),no(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var r=t.getSelection&&t.getSelection();if(r&&r.rangeCount!==0){t=r.anchorNode;var l=r.anchorOffset,u=r.focusNode;r=r.focusOffset;try{t.nodeType,u.nodeType}catch{t=null;break e}var o=0,i=-1,s=-1,c=0,v=0,m=e,p=null;n:for(;;){for(var g;m!==t||l!==0&&m.nodeType!==3||(i=o+l),m!==u||r!==0&&m.nodeType!==3||(s=o+r),m.nodeType===3&&(o+=m.nodeValue.length),(g=m.firstChild)!==null;)p=m,m=g;for(;;){if(m===e)break n;if(p===t&&++c===l&&(i=o),p===u&&++v===r&&(s=o),(g=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=g}t=i===-1||s===-1?null:{start:i,end:s}}else t=null}t=t||{start:0,end:0}}else t=null;for(fu={focusedElem:e,selectionRange:t},Mr=!1,S=n;S!==null;)if(n=S,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,S=e;else for(;S!==null;){n=S;try{var w=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var k=w.memoizedProps,I=w.memoizedState,f=n.stateNode,a=f.getSnapshotBeforeUpdate(n.elementType===n.type?k:Ne(n.type,k),I);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=n.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(y(163))}}catch(h){A(n,n.return,h)}if(e=n.sibling,e!==null){e.return=n.return,S=e;break}S=n.return}return w=Li,Li=!1,w}function Pt(e,n,t){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var u=l.destroy;l.destroy=void 0,u!==void 0&&Nu(n,t,u)}l=l.next}while(l!==r)}}function il(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create;t.destroy=r()}t=t.next}while(t!==n)}}function zu(e){var n=e.ref;if(n!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof n=="function"?n(e):n.current=e}}function Ua(e){var n=e.alternate;n!==null&&(e.alternate=null,Ua(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Fe],delete n[$t],delete n[mu],delete n[Qf],delete n[Kf])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function $a(e){return e.tag===5||e.tag===3||e.tag===4}function Ri(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||$a(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Tu(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!=null||n.onclick!==null||(n.onclick=Ir));else if(r!==4&&(e=e.child,e!==null))for(Tu(e,n,t),e=e.sibling;e!==null;)Tu(e,n,t),e=e.sibling}function Lu(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Lu(e,n,t),e=e.sibling;e!==null;)Lu(e,n,t),e=e.sibling}var J=null,ze=!1;function Xe(e,n,t){for(t=t.child;t!==null;)Va(e,n,t),t=t.sibling}function Va(e,n,t){if(Ie&&typeof Ie.onCommitFiberUnmount=="function")try{Ie.onCommitFiberUnmount(br,t)}catch{}switch(t.tag){case 5:te||Bn(t,n);case 6:var r=J,l=ze;J=null,Xe(e,n,t),J=r,ze=l,J!==null&&(ze?(e=J,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):J.removeChild(t.stateNode));break;case 18:J!==null&&(ze?(e=J,t=t.stateNode,e.nodeType===8?Ml(e.parentNode,t):e.nodeType===1&&Ml(e,t),Dt(e)):Ml(J,t.stateNode));break;case 4:r=J,l=ze,J=t.stateNode.containerInfo,ze=!0,Xe(e,n,t),J=r,ze=l;break;case 0:case 11:case 14:case 15:if(!te&&(r=t.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var u=l,o=u.destroy;u=u.tag,o!==void 0&&(u&2||u&4)&&Nu(t,n,o),l=l.next}while(l!==r)}Xe(e,n,t);break;case 1:if(!te&&(Bn(t,n),r=t.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(i){A(t,n,i)}Xe(e,n,t);break;case 21:Xe(e,n,t);break;case 22:t.mode&1?(te=(r=te)||t.memoizedState!==null,Xe(e,n,t),te=r):Xe(e,n,t);break;default:Xe(e,n,t)}}function Oi(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new sd),n.forEach(function(r){var l=gd.bind(null,e,r);t.has(r)||(t.add(r),r.then(l,l))})}}function Pe(e,n){var t=n.deletions;if(t!==null)for(var r=0;rl&&(l=o),r&=~u}if(r=l,r=W()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*fd(r/1960))-r,10e?16:e,en===null)var r=!1;else{if(e=en,en=null,Gr=0,R&6)throw Error(y(331));var l=R;for(R|=4,S=e.current;S!==null;){var u=S,o=u.child;if(S.flags&16){var i=u.deletions;if(i!==null){for(var s=0;sW()-Eo?En(e,0):So|=t),de(e,n)}function Xa(e,n){n===0&&(e.mode&1?(n=lr,lr<<=1,!(lr&130023424)&&(lr=4194304)):n=1);var t=ue();e=Qe(e,n),e!==null&&(Yt(e,n,t),de(e,t))}function yd(e){var n=e.memoizedState,t=0;n!==null&&(t=n.retryLane),Xa(e,t)}function gd(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(t=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(y(314))}r!==null&&r.delete(n),Xa(e,t)}var Ga;Ga=function(e,n,t){if(e!==null)if(e.memoizedProps!==n.pendingProps||ce.current)ae=!0;else{if(!(e.lanes&t)&&!(n.flags&128))return ae=!1,ud(e,n,t);ae=!!(e.flags&131072)}else ae=!1,j&&n.flags&1048576&&qs(n,Vr,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;_r(e,n),e=n.pendingProps;var l=Jn(n,re.current);Xn(n,t),l=vo(null,n,r,e,l,t);var u=ho();return n.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,fe(r)?(u=!0,Ur(n)):u=!1,n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,ao(n),l.updater=ul,n.stateNode=l,l._reactInternals=n,ku(n,r,e,t),n=Cu(null,n,r,!0,u,t)):(n.tag=0,j&&u&&to(n),le(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(_r(e,n),e=n.pendingProps,l=r._init,r=l(r._payload),n.type=r,l=n.tag=kd(r),e=Ne(r,e),l){case 0:n=Eu(null,n,r,e,t);break e;case 1:n=Ni(null,n,r,e,t);break e;case 11:n=xi(null,n,r,e,t);break e;case 14:n=Pi(null,n,r,Ne(r.type,e),t);break e}throw Error(y(306,r,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ne(r,l),Eu(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ne(r,l),Ni(e,n,r,l,t);case 3:e:{if(Oa(n),e===null)throw Error(y(387));r=n.pendingProps,u=n.memoizedState,l=u.element,ta(e,n),Hr(n,r,null,t);var o=n.memoizedState;if(r=o.element,u.isDehydrated)if(u={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},n.updateQueue.baseState=u,n.memoizedState=u,n.flags&256){l=nt(Error(y(423)),n),n=zi(e,n,r,t,l);break e}else if(r!==l){l=nt(Error(y(424)),n),n=zi(e,n,r,t,l);break e}else for(me=ln(n.stateNode.containerInfo.firstChild),ve=n,j=!0,Te=null,t=oa(n,null,r,t),n.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(qn(),r===l){n=Ke(e,n,t);break e}le(e,n,r,t)}n=n.child}return n;case 5:return ia(n),e===null&&yu(n),r=n.type,l=n.pendingProps,u=e!==null?e.memoizedProps:null,o=l.children,du(r,l)?o=null:u!==null&&du(r,u)&&(n.flags|=32),Ra(e,n),le(e,n,o,t),n.child;case 6:return e===null&&yu(n),null;case 13:return Ma(e,n,t);case 4:return co(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=bn(n,null,r,t):le(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ne(r,l),xi(e,n,r,l,t);case 7:return le(e,n,n.pendingProps,t),n.child;case 8:return le(e,n,n.pendingProps.children,t),n.child;case 12:return le(e,n,n.pendingProps.children,t),n.child;case 10:e:{if(r=n.type._context,l=n.pendingProps,u=n.memoizedProps,o=l.value,M(Ar,r._currentValue),r._currentValue=o,u!==null)if(Oe(u.value,o)){if(u.children===l.children&&!ce.current){n=Ke(e,n,t);break e}}else for(u=n.child,u!==null&&(u.return=n);u!==null;){var i=u.dependencies;if(i!==null){o=u.child;for(var s=i.firstContext;s!==null;){if(s.context===r){if(u.tag===1){s=Be(-1,t&-t),s.tag=2;var c=u.updateQueue;if(c!==null){c=c.shared;var v=c.pending;v===null?s.next=s:(s.next=v.next,v.next=s),c.pending=s}}u.lanes|=t,s=u.alternate,s!==null&&(s.lanes|=t),gu(u.return,t,n),i.lanes|=t;break}s=s.next}}else if(u.tag===10)o=u.type===n.type?null:u.child;else if(u.tag===18){if(o=u.return,o===null)throw Error(y(341));o.lanes|=t,i=o.alternate,i!==null&&(i.lanes|=t),gu(o,t,n),o=u.sibling}else o=u.child;if(o!==null)o.return=u;else for(o=u;o!==null;){if(o===n){o=null;break}if(u=o.sibling,u!==null){u.return=o.return,o=u;break}o=o.return}u=o}le(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,Xn(n,t),l=Ce(l),r=r(l),n.flags|=1,le(e,n,r,t),n.child;case 14:return r=n.type,l=Ne(r,n.pendingProps),l=Ne(r.type,l),Pi(e,n,r,l,t);case 15:return Ta(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Ne(r,l),_r(e,n),n.tag=1,fe(r)?(e=!0,Ur(n)):e=!1,Xn(n,t),la(n,r,l),ku(n,r,l,t),Cu(null,n,r,!0,e,t);case 19:return Da(e,n,t);case 22:return La(e,n,t)}throw Error(y(156,n.tag))};function Za(e,n){return Es(e,n)}function wd(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Se(e,n,t,r){return new wd(e,n,t,r)}function Po(e){return e=e.prototype,!(!e||!e.isReactComponent)}function kd(e){if(typeof e=="function")return Po(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Wu)return 11;if(e===Qu)return 14}return 2}function an(e,n){var t=e.alternate;return t===null?(t=Se(e.tag,n,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function Nr(e,n,t,r,l,u){var o=2;if(r=e,typeof e=="function")Po(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case Mn:return Cn(t.children,l,u,n);case Hu:o=8,l|=8;break;case Wl:return e=Se(12,t,n,l|2),e.elementType=Wl,e.lanes=u,e;case Ql:return e=Se(13,t,n,l),e.elementType=Ql,e.lanes=u,e;case Kl:return e=Se(19,t,n,l),e.elementType=Kl,e.lanes=u,e;case us:return al(t,l,u,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case rs:o=10;break e;case ls:o=9;break e;case Wu:o=11;break e;case Qu:o=14;break e;case Ge:o=16,r=null;break e}throw Error(y(130,e==null?e:typeof e,""))}return n=Se(o,t,n,l),n.elementType=e,n.type=r,n.lanes=u,n}function Cn(e,n,t,r){return e=Se(7,e,r,n),e.lanes=t,e}function al(e,n,t,r){return e=Se(22,e,r,n),e.elementType=us,e.lanes=t,e.stateNode={isHidden:!1},e}function Al(e,n,t){return e=Se(6,e,null,n),e.lanes=t,e}function Bl(e,n,t){return n=Se(4,e.children!==null?e.children:[],e.key,n),n.lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Sd(e,n,t,r,l){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=El(0),this.expirationTimes=El(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=El(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function No(e,n,t,r,l,u,o,i,s){return e=new Sd(e,n,t,i,s),n===1?(n=1,u===!0&&(n|=8)):n=0,u=Se(3,null,null,n),e.current=u,u.stateNode=e,u.memoizedState={element:r,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},ao(u),e}function Ed(e,n,t){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ec)}catch(e){console.error(e)}}ec(),qi.exports=ye;var Nd=qi.exports,zd,Vi=Nd;zd=Vi.createRoot,Vi.hydrateRoot;export{Td as F,Rd as a,Zi as b,zd as c,Ld as j,Nd as r}; +//# sourceMappingURL=index-b95677c8.js.map diff --git a/assets/index-b95677c8.js.gz b/assets/index-b95677c8.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..689233f9a5606a6cd713ef2341e12f1fee5dcca7 GIT binary patch literal 45373 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 literal 0 HcmV?d00001 diff --git a/assets/index-b95677c8.js.map b/assets/index-b95677c8.js.map new file mode 100644 index 00000000..ccceab44 --- /dev/null +++ b/assets/index-b95677c8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-b95677c8.js","sources":["../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/scheduler/index.js","../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/react-dom/index.js","../../../node_modules/react-dom/client.js"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3QEvrd$K{)r^a}O9@vC~B%p}7j~O0wTqH(G)yN=MQVSB!I^3X=Nxqzwmy4dbG= zZQwIRDa&uLa0>*Gob<-pvdJ_q{NOd))N(c4Fao$(YR!adyO89*vV>HJD?JBN8*lH z8jr+_AA*sjx*@+_aI{NKFIk>ZT{|fhEWBA(bW}*lh@y1Hejv-TAl6LIIdXhFq?~Vu zm7LTF>dKRj=(q2)go)gVJq0E$^wiEp=@)AU0##GY6T?HrxiZ zB+|@|p_#26PqlMeHJvWs2iFm$70?Nj6$xfn7v;iMlD&~!!j1l_trPj1-{HNfJPimQ zrA&%KVd3Cx`>EWoz*hVQ61^BW5A?9`o0}fBFoIJbWiZ`7=P|CNzggPB)>AY}kL;yD zQN>(|b0K9D{>CjDEuD_AEEdjs8~10uyYAN^?74$T|MD5S@2t~CfbF+l4XY|JeRI$3 z);Hm?EjoCi7vxAz$^N*%M-q!OD*#_0^VrSGMe%R_ent-pcNv5#!3ftU>4w7w!>k8b Qp>zNA2MqmC#=Qps0AKMJIRF3v literal 0 HcmV?d00001 diff --git a/assets/index-e491dcfc.css b/assets/index-e491dcfc.css new file mode 100644 index 00000000..409f8194 --- /dev/null +++ b/assets/index-e491dcfc.css @@ -0,0 +1 @@ +#painter{width:100%;height:100%;padding:.5rem;background-color:#0652dd}#painter #artboard-wrapper{position:relative;z-index:1;box-sizing:border-box;width:100%;height:100%;border-radius:.25rem;overflow:hidden}#painter #artboard-wrapper #artboard-background{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;background-color:#fff}#painter #artboard-wrapper #artboard-background canvas{position:absolute;left:50%;transform:translate(-50%)}#painter #artboard-wrapper #artboard-container{position:absolute;z-index:2;top:0;right:0;bottom:0;left:0}#painter #artboard-wrapper #artboard-container .artboard{position:relative;z-index:4;width:100%;height:100%}#painter #artboard-wrapper #artboard-container .artboard-background{position:absolute;top:0;right:0;bottom:0;left:0}#painter #artboard-wrapper #artboard-interactor{position:absolute;z-index:10;top:0;right:0;bottom:0;left:0}#painter #artboard-wrapper #artboard-interactor .artboard-sprite-wrapper{position:absolute}#painter #artboard-wrapper #artboard-interactor .artboard-sprite-wrapper .artboard-sprite{opacity:.75}#painter #artboard-wrapper #artboard-interactor .artboard-sprite-wrapper .artboard-sprite .path-fill.path-fill-default{fill:#1b9cfc}#painter #artboard-wrapper #artboard-interactor .artboard-sprite-wrapper .artboard-sprite .path-stroke.path-stroke-default{stroke:#1b1464}#painter #artboard-wrapper #artboard-interactor .artboard-sprite-wrapper .artboard-sprite .path-fill-stroke.path-fill-stroke-default{fill:#1b1464;stroke:#1b1464}#painter #artboard-wrapper #artboard-interactor .artboard-sprite-wrapper:after{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;content:" ";width:.25rem;height:.25rem;border:1px solid #192a56;border-radius:50%;background-color:#fff;opacity:.5} diff --git a/assets/index-e491dcfc.css.gz b/assets/index-e491dcfc.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2c14d83d791252bd8fff80bd53823e49ceb0485b GIT binary patch literal 441 zcmV;q0Y?5GiwFP!000021HF}RZ<{a>#^3K#prT5fG!R4~Q|(W4U^`fKe3pIr(?7q^zBiy}Pq5Kfk*(52*ufN&4en3u;+e6!*N9dfn0~b|8edYnE4DZg>sNp5*LcW+e(nTn z^g{Y9uJ8{~h7%ry-UgO0dLrCOuMF;4tA&tu24u8yF5^rGbwIPFF&&{}1@}Ec5#@<+ z69XevpHF(Bl=`ZE(tzDTxPZ~CRIzOGV1q)xVSN;PD8FZM51jP zs@tg~xdUo5rHwg9nUD&$hK^mr(z1SNRC9BNKpr3EIDY3ir5#DRTrK}gH-5tzElhgT z5%C)VGEj8UL%QeQ+0Su3STZQ~u literal 0 HcmV?d00001 diff --git a/assets/index-e642236f.js b/assets/index-e642236f.js new file mode 100644 index 00000000..3baafa03 --- /dev/null +++ b/assets/index-e642236f.js @@ -0,0 +1,2 @@ +import{b as s,a as i,j as a}from"./index-b95677c8.js";const p="/musicblocks-v4/assets/pin-8515e01d.svg",x="/musicblocks-v4/assets/unpin-427cfcc6.svg";function f(){const l=s.useRef(null),n=s.useRef(null);return s.useEffect(()=>{l.current,n.current;const d=(t,e)=>{fetch(e).then(o=>o.text()).then(o=>t.innerHTML=o)};d(l.current,p),d(n.current,x)},[]),i("div",{id:"toolbar-wrapper",children:[i("section",{id:"toolbar",children:[a("div",{className:"toolbar-cluster",id:"toolbar-cluster-a"}),a("div",{className:"toolbar-cluster",id:"toolbar-cluster-b"})]}),i("section",{className:"toolbar-extended toolbar-extended-hidden",id:"toolbar-float",children:[i("div",{className:"toolbar-extended-head",id:"toolbar-float-head",children:[a("h3",{className:"toolbar-extended-head-title",id:"toolbar-float-title",children:"Header"}),a("button",{className:"toolbar-extended-head-btn",id:"toolbar-float-btn-pin",ref:l,children:"Pin"})]}),a("div",{className:"toolbar-extended-content",id:"toolbar-float-content"})]}),i("section",{className:"toolbar-extended toolbar-extended-hidden",id:"toolbar-pinned",children:[i("div",{className:"toolbar-extended-head",id:"toolbar-pinned-head",children:[a("h3",{className:"toolbar-extended-head-title",id:"toolbar-pinned-title",children:"Header"}),a("button",{className:"toolbar-extended-head-btn",id:"toolbar-pinned-btn-unpin",ref:n,children:"Unpin"})]}),a("div",{className:"toolbar-extended-content",id:"toolbar-pinned-content"})]})]})}function N(l,n,d){const t=document.getElementById("toolbar-float"),e=document.getElementById("toolbar-pinned"),o=t.children[0].children[1],c=o.cloneNode(!0);o.parentNode.replaceChild(c,o);const r=e.children[0].children[1],b=r.cloneNode(!0);r.parentNode.replaceChild(b,r),t.classList.remove("toolbar-extended-hidden"),e.classList.remove("toolbar-extended-hidden"),n==="float"?(e.classList.add("toolbar-extended-hidden"),t.classList.remove("toolbar-extended-hidden")):(t.classList.add("toolbar-extended-hidden"),e.classList.remove("toolbar-extended-hidden")),c.addEventListener("click",()=>{t.classList.add("toolbar-extended-hidden"),e.classList.remove("toolbar-extended-hidden"),d.pin()}),b.addEventListener("click",()=>{e.classList.add("toolbar-extended-hidden"),t.classList.remove("toolbar-extended-hidden"),d.unpin()});const h=n==="float"?t:e,u=h.children[0].children[0];return u.innerHTML=l,h.children[1]}function v(){const l=document.getElementById("toolbar-float"),n=document.getElementById("toolbar-pinned"),d=l.children[0].children[1],t=d.cloneNode(!0);d.parentNode.replaceChild(t,d);const e=n.children[0].children[1],o=e.cloneNode(!0);e.parentNode.replaceChild(o,e),l.classList.add("toolbar-extended-hidden"),n.classList.add("toolbar-extended-hidden")}export{f as T,N as s,v as u}; +//# sourceMappingURL=index-e642236f.js.map diff --git a/assets/index-e642236f.js.gz b/assets/index-e642236f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..9100edd8d35837fb465f4e49ab57594005e08afb GIT binary patch literal 791 zcmV+y1L*u8iwFP!000021GQG)Yuhjoe(ztAc`p(uPWmhD64b#)p@TMz(ms_u*wVRn zt4Kzcvy9;XeUj}oPKeiJYrtS}I(>Kd-JNvFG*#Lx!cLHNG7`97LSEc2C?c(rL}4VWCj$HS5mKdO?dqel~md z$h=iImrncanH+d z5W@6oA$*o=4bl*~T-5<^iVOj#6MX@BvSNB`3B|&;g!VriIkvk9`0_b!o`TA z6>y3PM{nq4jtlZM!6ZQ*Pi7ujBz))@r9>F$?k^prDQJ(dI1$|H51*`F24%qOx=o#6 ziN%B^ZX8Tu1<6F783)<4QwzI+S77qbr$c*sQk0>rT-*X;$pTv^yt66j#tG*j*U=-P z0<*zDtA8sb2>2G9TE0eAe7XZx*Ca;3HpF`44br=@>XxF4$uKwOJsv6pq1hI=6L)RV zdqhJt6b&;!t+3)d*o6>V#dc-3nOJTeB73Q81pWc(tAIWLR65?JHA43-yHl|$LE z^jM1jH;c8MwKUqVc)Jz!lvHpz_LovIliudRk{ {\n btnPinRef.current!;\n btnUnpinRef.current!;\n\n const loadSVG = (element: HTMLButtonElement, svgSrc: string) => {\n fetch(svgSrc)\n .then((res) => res.text())\n .then((svg) => (element.innerHTML = svg));\n };\n\n loadSVG(btnPinRef.current!, pinSVG);\n loadSVG(btnUnpinRef.current!, unpinSVG);\n }, []);\n\n return (\n
\n
\n
\n
\n
\n
\n
\n

\n Header\n

\n \n
\n
\n
\n
\n
\n

\n Header\n

\n \n Unpin\n \n
\n
\n
\n
\n );\n}\n\n/**\n * Mounts Extended Toolbar subcomponent.\n * @param title title of the Extended Toolbar\n * @param type `float` or `pinned` Extended Toolbar\n * @param hooks external callbacks to hook on to component's actions\n * @returns DOM element of the Extended Toolbar's content container\n */\nexport function setToolbarExtended(\n title: string,\n type: 'float' | 'pinned',\n hooks: {\n pin: CallableFunction;\n unpin: CallableFunction;\n },\n): HTMLDivElement {\n const float = document.getElementById('toolbar-float')!;\n const pinned = document.getElementById('toolbar-pinned')!;\n\n const _btnFloatPin = float.children[0].children[1] as HTMLButtonElement;\n const btnFloatPin = _btnFloatPin.cloneNode(true);\n _btnFloatPin.parentNode!.replaceChild(btnFloatPin, _btnFloatPin);\n\n const _btnPinnedUnpin = pinned.children[0].children[1] as HTMLButtonElement;\n const btnPinnedUnpin = _btnPinnedUnpin.cloneNode(true);\n _btnPinnedUnpin.parentNode!.replaceChild(btnPinnedUnpin, _btnPinnedUnpin);\n\n float.classList.remove('toolbar-extended-hidden');\n pinned.classList.remove('toolbar-extended-hidden');\n\n if (type === 'float') {\n pinned.classList.add('toolbar-extended-hidden');\n float.classList.remove('toolbar-extended-hidden');\n } else {\n float.classList.add('toolbar-extended-hidden');\n pinned.classList.remove('toolbar-extended-hidden');\n }\n\n btnFloatPin.addEventListener('click', () => {\n float.classList.add('toolbar-extended-hidden');\n pinned.classList.remove('toolbar-extended-hidden');\n\n hooks.pin();\n });\n btnPinnedUnpin.addEventListener('click', () => {\n pinned.classList.add('toolbar-extended-hidden');\n float.classList.remove('toolbar-extended-hidden');\n\n hooks.unpin();\n });\n\n const toolbar = type === 'float' ? float : pinned;\n\n const headTitle = toolbar.children[0].children[0] as HTMLHeadingElement;\n headTitle.innerHTML = title;\n\n return toolbar.children[1] as HTMLDivElement;\n}\n\nexport function unsetToolbarExtended(): void {\n const float = document.getElementById('toolbar-float')!;\n const pinned = document.getElementById('toolbar-pinned')!;\n\n const _btnFloatPin = float.children[0].children[1] as HTMLButtonElement;\n const btnFloatPin = _btnFloatPin.cloneNode(true);\n _btnFloatPin.parentNode!.replaceChild(btnFloatPin, _btnFloatPin);\n\n const _btnPinnedUnpin = pinned.children[0].children[1] as HTMLButtonElement;\n const btnPinnedUnpin = _btnPinnedUnpin.cloneNode(true);\n _btnPinnedUnpin.parentNode!.replaceChild(btnPinnedUnpin, _btnPinnedUnpin);\n\n float.classList.add('toolbar-extended-hidden');\n pinned.classList.add('toolbar-extended-hidden');\n}\n"],"names":["pinSVG","unpinSVG","Toolbar","btnPinRef","useRef","btnUnpinRef","useEffect","loadSVG","element","svgSrc","res","svg","jsxs","jsx","setToolbarExtended","title","type","hooks","float","pinned","_btnFloatPin","btnFloatPin","_btnPinnedUnpin","btnPinnedUnpin","toolbar","headTitle","unsetToolbarExtended"],"mappings":"sDAAA,MAAeA,EAAA,0CCAAC,EAAA,4CCkByB,SAAAC,GAAA,CAChC,MAAAC,EAAYC,SAAO,IAAI,EACvBC,EAAcD,SAAO,IAAI,EAE/BE,OAAAA,EAAAA,UAAU,IAAM,CACJH,EAAA,QACEE,EAAA,QAEN,MAAAE,EAAU,CAACC,EAA4BC,IAAmB,CAC9D,MAAMA,CAAM,EACT,KAAMC,GAAQA,EAAI,KAAM,CAAA,EACxB,KAAMC,GAASH,EAAQ,UAAYG,CAAI,CAAA,EAGpCJ,EAAAJ,EAAU,QAAUH,CAAM,EAC1BO,EAAAF,EAAY,QAAUJ,CAAQ,CACxC,EAAG,CAAE,CAAA,EAGHW,EAAC,MAAI,CAAA,GAAG,kBACN,SAAA,CAACA,EAAA,UAAA,CAAQ,GAAG,UACV,SAAA,CAAAC,EAAC,MAAI,CAAA,UAAU,kBAAkB,GAAG,oBAAoB,EACvDA,EAAA,MAAA,CAAI,UAAU,kBAAkB,GAAG,oBAAoB,CAAA,EAC1D,EACCD,EAAA,UAAA,CAAQ,UAAU,2CAA2C,GAAG,gBAC/D,SAAA,CAAAA,EAAC,MAAI,CAAA,UAAU,wBAAwB,GAAG,qBACxC,SAAA,CAAAC,EAAC,KAAG,CAAA,UAAU,8BAA8B,GAAG,sBAAsB,SAErE,SAAA,EACAA,EAAC,UAAO,UAAU,4BAA4B,GAAG,wBAAwB,IAAKV,EAAW,SAEzF,KAAA,CAAA,CAAA,EACF,EACCU,EAAA,MAAA,CAAI,UAAU,2BAA2B,GAAG,wBAAwB,CAAA,EACvE,EACCD,EAAA,UAAA,CAAQ,UAAU,2CAA2C,GAAG,iBAC/D,SAAA,CAAAA,EAAC,MAAI,CAAA,UAAU,wBAAwB,GAAG,sBACxC,SAAA,CAAAC,EAAC,KAAG,CAAA,UAAU,8BAA8B,GAAG,uBAAuB,SAEtE,SAAA,EACAA,EAAC,SAAA,CACC,UAAU,4BACV,GAAG,2BACH,IAAKR,EACN,SAAA,OAAA,CAED,CAAA,EACF,EACCQ,EAAA,MAAA,CAAI,UAAU,2BAA2B,GAAG,yBAAyB,CAAA,EACxE,CACF,CAAA,CAAA,CAEJ,CASgB,SAAAC,EACdC,EACAC,EACAC,EAIgB,CACV,MAAAC,EAAQ,SAAS,eAAe,eAAe,EAC/CC,EAAS,SAAS,eAAe,gBAAgB,EAEjDC,EAAeF,EAAM,SAAS,CAAC,EAAE,SAAS,CAAC,EAC3CG,EAAcD,EAAa,UAAU,EAAI,EAClCA,EAAA,WAAY,aAAaC,EAAaD,CAAY,EAE/D,MAAME,EAAkBH,EAAO,SAAS,CAAC,EAAE,SAAS,CAAC,EAC/CI,EAAiBD,EAAgB,UAAU,EAAI,EACrCA,EAAA,WAAY,aAAaC,EAAgBD,CAAe,EAElEJ,EAAA,UAAU,OAAO,yBAAyB,EACzCC,EAAA,UAAU,OAAO,yBAAyB,EAE7CH,IAAS,SACJG,EAAA,UAAU,IAAI,yBAAyB,EACxCD,EAAA,UAAU,OAAO,yBAAyB,IAE1CA,EAAA,UAAU,IAAI,yBAAyB,EACtCC,EAAA,UAAU,OAAO,yBAAyB,GAGvCE,EAAA,iBAAiB,QAAS,IAAM,CACpCH,EAAA,UAAU,IAAI,yBAAyB,EACtCC,EAAA,UAAU,OAAO,yBAAyB,EAEjDF,EAAM,IAAI,CAAA,CACX,EACcM,EAAA,iBAAiB,QAAS,IAAM,CACtCJ,EAAA,UAAU,IAAI,yBAAyB,EACxCD,EAAA,UAAU,OAAO,yBAAyB,EAEhDD,EAAM,MAAM,CAAA,CACb,EAEK,MAAAO,EAAUR,IAAS,QAAUE,EAAQC,EAErCM,EAAYD,EAAQ,SAAS,CAAC,EAAE,SAAS,CAAC,EAChD,OAAAC,EAAU,UAAYV,EAEfS,EAAQ,SAAS,CAAC,CAC3B,CAEO,SAASE,GAA6B,CACrC,MAAAR,EAAQ,SAAS,eAAe,eAAe,EAC/CC,EAAS,SAAS,eAAe,gBAAgB,EAEjDC,EAAeF,EAAM,SAAS,CAAC,EAAE,SAAS,CAAC,EAC3CG,EAAcD,EAAa,UAAU,EAAI,EAClCA,EAAA,WAAY,aAAaC,EAAaD,CAAY,EAE/D,MAAME,EAAkBH,EAAO,SAAS,CAAC,EAAE,SAAS,CAAC,EAC/CI,EAAiBD,EAAgB,UAAU,EAAI,EACrCA,EAAA,WAAY,aAAaC,EAAgBD,CAAe,EAElEJ,EAAA,UAAU,IAAI,yBAAyB,EACtCC,EAAA,UAAU,IAAI,yBAAyB,CAChD"} \ No newline at end of file diff --git a/assets/index-e95da2f1.js b/assets/index-e95da2f1.js new file mode 100644 index 00000000..ded8bb40 --- /dev/null +++ b/assets/index-e95da2f1.js @@ -0,0 +1,2 @@ +import{c,r as m,j as t,a as l,F as u}from"./index-b95677c8.js";import{T as d}from"./index-e642236f.js";function v(e){return l(u,{children:[e.activeOverlay&&t("div",{id:"root-overlay",children:t("div",{id:"root-overlay-body"})}),t("main",{id:"root-main"})]})}function f(){return l(u,{children:[t(d,{}),t("div",{id:"workspace"})]})}const s={activeOverlay:!1};let a,i;async function y(){return a===void 0&&(a=c(document.getElementById("mb-root"))),new Promise(e=>m.flushSync(()=>{a.render(t(v,{activeOverlay:s.activeOverlay})),requestAnimationFrame(()=>e())}))}function O(e,o){return new Promise(r=>{const n=document.getElementById("root-main");i===void 0&&(i=c(n)),m.flushSync(()=>{i.render(e==="embed"?o:t(f,{})),requestAnimationFrame(()=>r())})})}async function b(e){s.activeOverlay=!0,await y(),await e(document.getElementById("root-overlay-body"))}async function h(){return new Promise(e=>{const o=+"1000"||500,r=+"50"||50,n=document.getElementById("root-overlay");n.style.transition=`top ${o/1e3}s ease`,n.style.top="calc(-100% - 50px)",setTimeout(()=>{s.activeOverlay=!1,y().then(()=>e())},o+r)})}export{y as i,b as m,O as s,h as u}; +//# sourceMappingURL=index-e95da2f1.js.map diff --git a/assets/index-e95da2f1.js.gz b/assets/index-e95da2f1.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..b6b16dbb253f6abd70e793b2ea0d9ce7025f8b24 GIT binary patch literal 589 zcmV-T0wzKrYWp2sLZrULz=XSX=6{*B;5Fh znk9B-JB29Zzt3);3(M!+eR$Yn^#zG+Gd#tp#6OjS5n;Hk+$L zTF@syAQ1txfb#{|LNtScCs?WlX04JZ*c#)9ra!`Lb?aHoaAstKJK9keFr`p>6SUlS z^k+CqCG8;w(m{Q6#+@LSPbLD^lKP{8IsNMWq zC_)J3r>#f=eF>I$vS5#Rxox+*kj}#I8k~QpRVgCDGb>71W&%QkksDr}6JTb=ev^j{ zb$cr`e^$i02Xv}7rK=!a2P#jbs0S$!;26poNc`4>_UExP|Ke_!+{5?C{aJj8k6hrp zDHAtB`PiHL6_9_+*m`gDNtrqMt4*-7$?!cqPSX_M-A&Sz*|44T8}>g3AAScq)rs>> z0g1OlI~5D_OK&RlvNfYI9CQwWaB#_1I8$+)i6SGzQ2P}cqDflaQp_Cq3sr)teee4d zgT^dallVF4^~+#p&qjygb~z22I1Ln=^%Lbh2FK?8D4FhzMlX;vwawtOs4AtezJLA1 b??=Y*M2h`<97aY`ifZQ%j9cYlodf^?L`xi% literal 0 HcmV?d00001 diff --git a/assets/index-e95da2f1.js.map b/assets/index-e95da2f1.js.map new file mode 100644 index 00000000..a0f7201b --- /dev/null +++ b/assets/index-e95da2f1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-e95da2f1.js","sources":["../../../lib/view/src/components/index.tsx"],"sourcesContent":["import type { Root } from 'react-dom/client';\n\nimport { flushSync } from 'react-dom';\nimport { createRoot } from 'react-dom/client';\n\n// -- ui items -------------------------------------------------------------------------------------\n\nimport Toolbar from './toolbar';\n\nimport './index.scss';\n\n// -- component definitions ------------------------------------------------------------------------\n\n/**\n * React component definition of the root application wrapper.\n */\nfunction App(props: {\n /** Whether or not to mount overlay. */\n activeOverlay: boolean;\n}): JSX.Element {\n return (\n <>\n {props.activeOverlay && (\n
\n
\n
\n )}\n
\n \n );\n}\n\n/**\n * React component definition of the main application wrapper\n * @returns\n */\nfunction AppMain(): JSX.Element {\n return (\n <>\n \n
\n \n );\n}\n\n// -- private variables ----------------------------------------------------------------------------\n\n/** Root view states. */\nconst _state = {\n /** Whether or not to mount overlay. */\n activeOverlay: false,\n};\n\n// -- private variables ----------------------------------------------------------------------------\n\n/** React root for root application view. */\nlet _rootContainer: Root;\n/** React root for main application view. */\nlet _rootMainContainer: Root;\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Initializes the root application view.\n * @description This is the first thing that must be called before doing anything else in the view.\n */\nexport async function initView(): Promise {\n if (_rootContainer === undefined)\n _rootContainer = createRoot(document.getElementById('mb-root') as HTMLElement);\n\n return new Promise((resolve) =>\n flushSync(() => {\n _rootContainer.render();\n requestAnimationFrame(() => resolve());\n }),\n );\n}\n\n/**\n * Sets the main application view.\n */\nexport function setView(method: 'main'): Promise;\n/**\n * Embeds a React component in the viewport.\n * @param component React functional component\n */\nexport function setView(method: 'embed', component: JSX.Element): Promise;\n//\nexport function setView(\n method: 'main' | 'embed',\n arg?: JSX.Element | ((container: HTMLElement) => Promise),\n): Promise {\n //\n return new Promise((resolve) => {\n const rootElem = document.getElementById('root-main')!;\n\n if (_rootMainContainer === undefined) _rootMainContainer = createRoot(rootElem);\n flushSync(() => {\n _rootMainContainer.render(method === 'embed' ? (arg as JSX.Element) : );\n requestAnimationFrame(() => resolve());\n });\n });\n}\n\n/**\n * Mounts the application overlay view.\n * @param setup setup callback for the component to place in the overlay\n */\nexport async function mountViewOverlay(setup: (container: HTMLElement) => Promise) {\n _state.activeOverlay = true;\n await initView();\n await setup(document.getElementById('root-overlay-body')!);\n}\n\n/**\n * Unmounts the application overlay view.\n */\nexport async function unmountViewOverlay(): Promise {\n return new Promise((resolve) => {\n const timeTransition = Number(import.meta.env.VITE_APP_VIEW_OVERLAY_TRANSITION) || 500;\n const timeTransitionBuffer =\n Number(import.meta.env.VITE_APP_VIEW_OVERLAY_TRANSITION_BUFFER) || 50;\n\n const overlay = document.getElementById('root-overlay') as HTMLElement;\n overlay.style.transition = `top ${timeTransition / 1000}s ease`;\n overlay.style.top = 'calc(-100% - 50px)';\n\n setTimeout(() => {\n _state.activeOverlay = false;\n initView().then(() => resolve());\n }, timeTransition + timeTransitionBuffer);\n });\n}\n"],"names":["App","props","jsxs","Fragment","jsx","AppMain","Toolbar","_state","_rootContainer","_rootMainContainer","initView","createRoot","resolve","flushSync","setView","method","arg","rootElem","mountViewOverlay","setup","unmountViewOverlay","timeTransition","timeTransitionBuffer","overlay"],"mappings":"uGAgBA,SAASA,EAAIC,EAGG,CACd,OAEKC,EAAAC,EAAA,CAAA,SAAA,CAAMF,EAAA,iBACJ,MAAI,CAAA,GAAG,eACN,SAACG,EAAA,MAAA,CAAI,GAAG,mBAAA,CAAoB,CAC9B,CAAA,EAEFA,EAAC,OAAK,CAAA,GAAG,WAAY,CAAA,CACvB,CAAA,CAAA,CAEJ,CAMA,SAASC,GAAuB,CAC9B,OAEIH,EAAAC,EAAA,CAAA,SAAA,CAAAC,EAACE,EAAQ,EAAA,EACTF,EAAC,MAAI,CAAA,GAAG,WAAY,CAAA,CACtB,CAAA,CAAA,CAEJ,CAKA,MAAMG,EAAS,CAEb,cAAe,EACjB,EAKA,IAAIC,EAEAC,EAQJ,eAAsBC,GAA0B,CAC9C,OAAIF,IAAmB,SACrBA,EAAiBG,EAAW,SAAS,eAAe,SAAS,CAAgB,GAExE,IAAI,QAASC,GAClBC,EAAAA,UAAU,IAAM,CACdL,EAAe,OAAQJ,EAAAJ,EAAA,CAAI,cAAeO,EAAO,aAAe,CAAA,CAAM,EAChD,sBAAA,IAAMK,GAAS,CAAA,CACtC,CAAA,CAEL,CAYgB,SAAAE,EACdC,EACAC,EACe,CAER,OAAA,IAAI,QAASJ,GAAY,CACxB,MAAAK,EAAW,SAAS,eAAe,WAAW,EAEhDR,IAAuB,SAAWA,EAAqBE,EAAWM,CAAQ,GAC9EJ,EAAAA,UAAU,IAAM,CACdJ,EAAmB,OAAOM,IAAW,QAAWC,EAAsBZ,EAACC,GAAQ,CAAA,CAAU,EACnE,sBAAA,IAAMO,GAAS,CAAA,CACtC,CAAA,CACF,CACH,CAMA,eAAsBM,EAAiBC,EAAkD,CACvFZ,EAAO,cAAgB,GACvB,MAAMG,EAAS,EACf,MAAMS,EAAM,SAAS,eAAe,mBAAmB,CAAE,CAC3D,CAKA,eAAsBC,GAAoC,CACjD,OAAA,IAAI,QAASR,GAAY,CAC9B,MAAMS,EAAiB,CAAO,QAAqD,IAC7EC,EACJ,CAAO,MAA4D,GAE/DC,EAAU,SAAS,eAAe,cAAc,EAC9CA,EAAA,MAAM,WAAa,OAAOF,EAAiB,YACnDE,EAAQ,MAAM,IAAM,qBAEpB,WAAW,IAAM,CACfhB,EAAO,cAAgB,GACvBG,IAAW,KAAK,IAAME,EAAS,CAAA,CAAA,EAC9BS,EAAiBC,CAAoB,CAAA,CACzC,CACH"} \ No newline at end of file diff --git a/assets/lang.en-a09fe94b.js b/assets/lang.en-a09fe94b.js new file mode 100644 index 00000000..e08b8966 --- /dev/null +++ b/assets/lang.en-a09fe94b.js @@ -0,0 +1,2 @@ +const e={"editor.build":"build","editor.help":"help","menu.reset":"reset","menu.run":"run","menu.stop":"stop"};export{e as default}; +//# sourceMappingURL=lang.en-a09fe94b.js.map diff --git a/assets/lang.en-a09fe94b.js.map b/assets/lang.en-a09fe94b.js.map new file mode 100644 index 00000000..c8184227 --- /dev/null +++ b/assets/lang.en-a09fe94b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang.en-a09fe94b.js","sources":["../../../lib/i18n/lang/en.ts"],"sourcesContent":["import type { TI18nFile } from '#/@types/i18n';\n\nconst strings: TI18nFile = {\n 'editor.build': 'build',\n 'editor.help': 'help',\n\n 'menu.reset': 'reset',\n 'menu.run': 'run',\n 'menu.stop': 'stop',\n};\n\nexport default strings;\n"],"names":["strings"],"mappings":"AAEA,MAAMA,EAAqB,CACvB,eAAgB,QAChB,cAAe,OAEf,aAAc,QACd,WAAY,MACZ,YAAa,MACjB"} \ No newline at end of file diff --git a/assets/lang.es-5dc320b5.js b/assets/lang.es-5dc320b5.js new file mode 100644 index 00000000..452f775e --- /dev/null +++ b/assets/lang.es-5dc320b5.js @@ -0,0 +1,2 @@ +const e={"editor.build":"construir","editor.help":"ayuda","menu.reset":"reiniciar","menu.run":"tocar","menu.stop":"detener"};export{e as default}; +//# sourceMappingURL=lang.es-5dc320b5.js.map diff --git a/assets/lang.es-5dc320b5.js.map b/assets/lang.es-5dc320b5.js.map new file mode 100644 index 00000000..f3beeab4 --- /dev/null +++ b/assets/lang.es-5dc320b5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lang.es-5dc320b5.js","sources":["../../../lib/i18n/lang/es.ts"],"sourcesContent":["import type { TI18nFile } from '#/@types/i18n';\n\nconst strings: TI18nFile = {\n 'editor.build': 'construir',\n 'editor.help': 'ayuda',\n\n 'menu.reset': 'reiniciar',\n 'menu.run': 'tocar',\n 'menu.stop': 'detener',\n};\n\nexport default strings;\n"],"names":["strings"],"mappings":"AAEA,MAAMA,EAAqB,CACvB,eAAgB,YAChB,cAAe,QAEf,aAAc,YACd,WAAY,QACZ,YAAa,SACjB"} \ No newline at end of file diff --git a/assets/lib.assets-d64954a0.js b/assets/lib.assets-d64954a0.js new file mode 100644 index 00000000..2fdb6d96 --- /dev/null +++ b/assets/lib.assets-d64954a0.js @@ -0,0 +1,2 @@ +const i={"image/svg+xml":async e=>fetch(e.data).then(s=>s.text()).then(s=>({...e,data:s}))},m={};async function r(e,s){m[e]=s.type in i?await i[s.type].call(null,s):s}function l(e){return m[e]}function E(e){return Object.fromEntries(e.map(s=>[s,l(s)]))}async function p(e,s){let{path:a,meta:t}=s;a=a.replace(new RegExp("/musicblocks-v4/"),"");const n=await fetch(a).then(c=>c.blob()).then(c=>new Promise((g,u)=>{try{const o=new FileReader;o.onload=()=>g(o.result),o.readAsDataURL(c)}catch(o){u(o)}}));await r(e,{type:n.match(/data:(.+);base64/)[1],data:n,meta:t!==void 0?t:{}})}async function N(e,s){await Promise.all(e.map(({identifier:a,manifest:t})=>p(a,t).then(()=>{s!==void 0&&s(a)})))}const v="/musicblocks-v4/assets/logo-3080f493.png",d="/musicblocks-v4/assets/build-53e87ed8.svg",b="/musicblocks-v4/assets/help-a0383ce2.svg",h="/musicblocks-v4/assets/pin-8515e01d.svg",f="/musicblocks-v4/assets/unpin-427cfcc6.svg",k="/musicblocks-v4/assets/run-123f2282.svg",I="/musicblocks-v4/assets/stop-aa193098.svg",w="/musicblocks-v4/assets/reset-a8de2102.svg",y="/musicblocks-v4/assets/saveProjectHTML-e442bff6.svg",R="/musicblocks-v4/assets/exportDrawing-aee43b5d.svg",P="/musicblocks-v4/assets/startRecording-5dec9e0d.svg",j="/musicblocks-v4/assets/stopRecording-48f9a011.svg",x="/musicblocks-v4/assets/uploadFile-52fcbca5.svg",A="/musicblocks-v4/assets/loadProject-f9e0b620.svg",L="/musicblocks-v4/assets/close-444dc9a6.svg",S="/musicblocks-v4/assets/code-74870b2e.svg",D="/musicblocks-v4/assets/mouse-46cf41ce.svg",F="/musicblocks-v4/assets/guitar-ef193250.wav",H="/musicblocks-v4/assets/piano-9b2c5e87.wav",M="/musicblocks-v4/assets/snare-7903412c.wav",T={"image.logo":{path:v},"image.icon.build":{path:d},"image.icon.help":{path:b},"image.icon.pin":{path:h},"image.icon.unpin":{path:f},"image.icon.run":{path:k},"image.icon.stop":{path:I},"image.icon.reset":{path:w},"image.icon.saveProjectHTML":{path:y},"image.icon.exportDrawing":{path:R},"image.icon.startRecording":{path:P},"image.icon.stopRecording":{path:j},"image.icon.uploadFile":{path:x},"image.icon.loadProject":{path:A},"image.icon.close":{path:L},"image.icon.code":{path:S},"image.icon.mouse":{path:D},"audio.guitar":{path:F,meta:{name:"guitar",category:"strings",tonal:!0,centerNote:"c4",defaultVolume:50}},"audio.piano":{path:H,meta:{name:"piano",category:"percussion",tonal:!0,centerNote:"c4",defaultVolume:100}},"audio.snare":{path:M,meta:{name:"snare",category:"percussion",tonal:!1,centerNote:"c3",defaultVolume:50}}};export{T as default,l as getAsset,E as getAssets,p as importAsset,N as importAssets}; +//# sourceMappingURL=lib.assets-d64954a0.js.map diff --git a/assets/lib.assets-d64954a0.js.gz b/assets/lib.assets-d64954a0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..af67eb99e98c45b70f56d6d05ce4fbd5b483d7de GIT binary patch literal 1085 zcmV-D1j73tiwFP!000021C3T&Z=*OAexF~FVWkmhfB+$FE~2AKZPk(5Zk6foOVtNs z4#XW|BW!XJ%6}g_hBl;2wJ%BV_nq5!&cVTqaxoxLZIBhpV93|m_w6b-W{B@79zb-F zg1}1?+yn_^xnc>_$+eo+KlflYj3ZjdOz2G(u!h17#)-**xagD z&+rmSAG-nugbv6Lv_VAX@vP5YT#WMEq*b0vwsiMqpPOLSC5Wn|1Lfo$xjsVvj$Z)_ zH!a!fnu?MDmj$d)q4Ip@c5ZU(MP_)CTcLByLDU5j%Nep)Ad3Pmj>WoPC(E7gixsXe1o8^swOnrFJ-t$B<%oP|T{*?-Y3rHvS0qiD@YGVp$g zSuMStiuj;K)FGORT-8k70JA0uP(e}xr4krXk^&b}WLZdIB3m??sKRRg7VXz*_Hrw#*kN#vQ;g3v`*$z9tf=D$qcjL6O%^|Uxm+-r zGV-S*Z`#zi>30nB%R!R_0^e&~@A_S%HOLODRl9wjc&jC*(?F)Je-_+aR8cp)k|Kn zO1VD6Y3SpIebdX%Dk9}|AeD0xj6HXQ)`ori$!H_WoM{~3v0NO@zVB}VMWsx9>WxA_ zz?%Kk-Z-vWS7WB%xa+;$oD#X^?qNAwEa_ru6u zG7cl#Vs|H)9MBf})rAh@*kV@_LsdeUtLLsgztMM0P0 Promise>> = {\n 'image/svg+xml': async (asset: TAsset) => {\n return fetch(asset.data)\n .then((res) => res.text())\n .then((res) => ({ ...asset, data: res }));\n },\n};\n\nexport default loaders;\n","import { TAsset, TAssetManifest, TAssetType } from '#/@types/assets';\n\nimport loaders from './loaders';\n\n// -- private variables ----------------------------------------------------------------------------\n\n/** Stores the asset map. */\nconst _assets: { [identifier: string]: TAsset } = {};\n\n// -- private functions ----------------------------------------------------------------------------\n\n/**\n * Stores an asset into the asset map (after transforming using the loader if present).\n * @param identifier string to uniquely identify the asset\n * @param asset asset item\n */\nasync function _loadAsset(identifier: string, asset: TAsset): Promise {\n _assets[identifier] =\n asset.type in loaders ? await loaders[asset.type]!.call(null, asset) : asset;\n}\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Returns an asset entry.\n * @param identifier asset identifier\n */\nexport function getAsset(identifier: string): TAsset | undefined {\n return _assets[identifier];\n}\n\n/**\n * Returns map of asset entries corresponding to asset identifiers.\n * @param identifiers list of asset identifiers\n */\nexport function getAssets(identifiers: string[]): { [identifier: string]: TAsset | undefined } {\n return Object.fromEntries(identifiers.map((identifier) => [identifier, getAsset(identifier)]));\n}\n\n/**\n * Fetches an asset file and loads them into the repository.\n * @param identifier string to uniquely identify the asset\n * @param manifest asset details\n */\nexport async function importAsset(identifier: string, manifest: TAssetManifest): Promise {\n let { path, meta } = manifest;\n path = import.meta.env.PROD\n ? path.replace(new RegExp(`${import.meta.env.BASE_URL}`), '')\n : path;\n\n const data = await fetch(path)\n .then((response) => response.blob())\n .then((blob) => {\n return new Promise((resolve, reject) => {\n try {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as string);\n reader.readAsDataURL(blob);\n } catch (e) {\n reject(e);\n }\n });\n });\n\n await _loadAsset(identifier, {\n type: data.match(/data:(.+);base64/)![1] as TAssetType,\n data,\n meta: meta !== undefined ? meta : {},\n });\n}\n\n/**\n * Fetches a list of asset files and loads them into the repository.\n * @param items asset items\n * @param callback callback function to call after each asset item is imported\n */\nexport async function importAssets(\n items: {\n /** String to uniquely identify the asset. */\n identifier: string;\n /** Asset details. */\n manifest: TAssetManifest;\n }[],\n callback?: (assetId: string) => unknown,\n): Promise {\n await Promise.all(\n items.map(({ identifier, manifest }) =>\n importAsset(identifier, manifest).then(() => {\n if (callback !== undefined) callback(identifier);\n }),\n ),\n );\n}\n","export default \"__VITE_ASSET__ab211233__\"","export default \"__VITE_ASSET__984a0d8b__\"","export default \"__VITE_ASSET__c219f887__\"","export default \"__VITE_ASSET__b7b71533__\"","export default \"__VITE_ASSET__69bdbfe7__\"","export default \"__VITE_ASSET__0559111d__\"","export default \"__VITE_ASSET__8b943b8f__\"","export default \"__VITE_ASSET__2844bff6__\"","export default \"__VITE_ASSET__c672c8aa__\"","export default \"__VITE_ASSET__85d84927__\"","export default \"__VITE_ASSET__4879d0ec__\"","export default \"__VITE_ASSET__0ef7a880__\"","export default \"__VITE_ASSET__defaf452__\"","export default \"__VITE_ASSET__658a16d4__\"","export default \"__VITE_ASSET__aaabd9ba__\"","export default \"__VITE_ASSET__3b1513cf__\"","export default \"__VITE_ASSET__18428cff__\"","export default \"__VITE_ASSET__955a07d2__\"","export default \"__VITE_ASSET__b110e953__\"","export default \"__VITE_ASSET__7021ec5f__\"","import { TAssetManifest } from '#/@types/assets';\n\n// -------------------------------------------------------------------------------------------------\n\n/*\n * please keep related items grouped together for better readability\n */\n\nimport imageLogo from './image/logo.png';\n\nimport imageIconBuild from './image/icon/build.svg';\nimport imageIconHelp from './image/icon/help.svg';\nimport imageIconPin from './image/icon/pin.svg';\nimport imageIconUnpin from './image/icon/unpin.svg';\n\nimport imageIconRun from './image/icon/run.svg';\nimport imageIconStop from './image/icon/stop.svg';\nimport imageIconReset from './image/icon/reset.svg';\nimport imageIconSaveProjectHTML from './image/icon/saveProjectHTML.svg';\nimport imageIconExportDrawing from './image/icon/exportDrawing.svg';\nimport imageIconStartRecording from './image/icon/startRecording.svg';\nimport imageIconStopRecording from './image/icon/stopRecording.svg';\nimport imageIconUploadFile from './image/icon/uploadFile.svg';\nimport imageIconLoadProject from './image/icon/loadProject.svg';\n\nimport imageIconClose from './image/icon/close.svg';\nimport imageIconCode from './image/icon/code.svg';\n\nimport imageIconMouse from './image/icon/mouse.svg';\n\nimport audioGuitar from './audio/guitar.wav';\nimport audioPiano from './audio/piano.wav';\nimport audioSnare from './audio/snare.wav';\n\n// -------------------------------------------------------------------------------------------------\n\nconst manifest: {\n [identifier: string]: TAssetManifest;\n} = {\n /*\n * please follow same import grouping as above\n */\n\n 'image.logo': {\n path: imageLogo,\n },\n\n 'image.icon.build': {\n path: imageIconBuild,\n },\n 'image.icon.help': {\n path: imageIconHelp,\n },\n 'image.icon.pin': {\n path: imageIconPin,\n },\n 'image.icon.unpin': {\n path: imageIconUnpin,\n },\n\n 'image.icon.run': {\n path: imageIconRun,\n },\n 'image.icon.stop': {\n path: imageIconStop,\n },\n 'image.icon.reset': {\n path: imageIconReset,\n },\n 'image.icon.saveProjectHTML': {\n path: imageIconSaveProjectHTML,\n },\n 'image.icon.exportDrawing': {\n path: imageIconExportDrawing,\n },\n 'image.icon.startRecording': {\n path: imageIconStartRecording,\n },\n 'image.icon.stopRecording': {\n path: imageIconStopRecording,\n },\n 'image.icon.uploadFile': {\n path: imageIconUploadFile,\n },\n 'image.icon.loadProject': {\n path: imageIconLoadProject,\n },\n\n 'image.icon.close': {\n path: imageIconClose,\n },\n 'image.icon.code': {\n path: imageIconCode,\n },\n\n 'image.icon.mouse': {\n path: imageIconMouse,\n },\n\n 'audio.guitar': {\n path: audioGuitar,\n meta: {\n name: 'guitar',\n category: 'strings',\n tonal: true,\n centerNote: 'c4',\n defaultVolume: 50,\n },\n },\n 'audio.piano': {\n path: audioPiano,\n meta: {\n name: 'piano',\n category: 'percussion',\n tonal: true,\n centerNote: 'c4',\n defaultVolume: 100,\n },\n },\n 'audio.snare': {\n path: audioSnare,\n meta: {\n name: 'snare',\n category: 'percussion',\n tonal: false,\n centerNote: 'c3',\n defaultVolume: 50,\n },\n },\n};\n\nexport default manifest;\n"],"names":["loaders","asset","res","_assets","_loadAsset","identifier","getAsset","getAssets","identifiers","importAsset","manifest","path","meta","data","response","blob","resolve","reject","reader","e","importAssets","items","callback","imageLogo","imageIconBuild","imageIconHelp","imageIconPin","imageIconUnpin","imageIconRun","imageIconStop","imageIconReset","imageIconSaveProjectHTML","imageIconExportDrawing","imageIconStartRecording","imageIconStopRecording","imageIconUploadFile","imageIconLoadProject","imageIconClose","imageIconCode","imageIconMouse","audioGuitar","audioPiano","audioSnare"],"mappings":"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"} \ No newline at end of file diff --git a/assets/lib.config-257eb5b5.js b/assets/lib.config-257eb5b5.js new file mode 100644 index 00000000..82afe090 --- /dev/null +++ b/assets/lib.config-257eb5b5.js @@ -0,0 +1,2 @@ +import{m as l}from"./index-4245e63e.js";const a={};async function d(n){await a[n].mount()}async function h(n){await a[n].setup()}function g(n){return n in a?a[n]:null}async function w(n,e){return a[n]=await e(),a[n]}async function v(n,e,r){return Object.fromEntries(await Promise.all(n.map(t=>[t,e[t].importFunc]).map(([t,u])=>w(t,u).then(m=>(r!==void 0&&r(t),[t,m]))))),a}async function C(n,e){return new Promise(r=>{const t=n.entries();async function u(m){if(m.done)return;const[s,i]=m.value;return await d(i),e!==void 0&&e(i),u(t.next())}u(t.next()).then(()=>requestAnimationFrame(()=>r()))})}async function A(n,e){return new Promise(r=>{const t=n.entries();async function u(m){if(m.done)return;const[s,i]=m.value;return await h(i),e!==void 0&&e(i),u(t.next())}u(t.next()).then(()=>requestAnimationFrame(()=>r()))})}function E(n){l.registerElementSpecificationEntries(l.librarySpecification),n.filter(({filter:e})=>e!==void 0).map(({id:e,filter:r})=>r===!0?{id:e,specification:a[e].elements}:{id:e,specification:Object.fromEntries(Object.entries(a[e].elements).filter(([t])=>r==null?void 0:r.includes(t)))}).map(({specification:e})=>e).filter(e=>e!==void 0).forEach(e=>l.registerElementSpecificationEntries(e))}function _(n){const e=n.length,t=(()=>{const s=new Array(e);for(let i=0;i{let s=[],i=[],f=n.map((o,c)=>c);for(;f.length>0;){for(let o=0;op===o),1))}if(i.length===0)throw Error("Invalid Config: dependency resolution results in a cyclic graph");for(const o of i){s.push(o);for(let c=0;cn[s].id)}export{g as getComponent,w as importComponent,v as importComponents,C as mountComponents,E as registerElements,_ as serializeComponentDependencies,A as setupComponents}; +//# sourceMappingURL=lib.config-257eb5b5.js.map diff --git a/assets/lib.config-257eb5b5.js.gz b/assets/lib.config-257eb5b5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f2bbe0fb6efc640959476744c12133326efe6d00 GIT binary patch literal 912 zcmV;B18@8viwFP!000021I1NMkJ~m7z2{fRTfiU@hU-nUEnt;iEVd31phb%oJqbb} zQzM(HM5-jUUdPaX?@+YmkM5zDqB;oF%<%Eeo1sQEt+9UJB!x@rzOtsd;kQbc@bd1% z`w#c<-M7HMxSLcO?R-**eV-O?r)5%gT6$%4QW8z~#kNrB&UDTj(`ip=e-*a53UlDQ z7Q@DXbqKI%wK~y>(n;|U0_VD`>uazr(G14u5GEot5X!>m^@iuLf!T4(FRL#gJrDUV zwYLf!i2%Q%MLFO_T@%flq9tA|GS49MIah;N9}zUCgO8x6%c)pw2`(u28_=W?3t}fi zJR4Oev+2|lPZ6q~WE}KqF8r zS>~9^MZ=$qx`Xs6*pO;T6lHKm6oR26o@;o)3ex^;9aAHis)fHgaQ;!NrU<8hv_%8a zgK@O~N97;?pY%5WReB?@W$4(NTUaaS!7giPFo)k;kg8I0*nMoSn%8P&3%k4UQl@#O zYTQf6J}&0a<54Hthd$e@at`beVnc`(LQG~4(c#Wf=S2oNhsehD^VdRN>HmZ2ScMA^ zI?}{z5DyR6@*#4ZTduUMyArqgL8Ald%QItUBNSYwSsA-5 zE7hRae#5*N3U_cg5qj^@+G2;BQ#_E=;1eZgsrms@_4e%%q7ph&dFt?Wv4;gq;9rx; z-3h@Ufm{S>Wa6W+u)j2+_klmKq{0*m!HD$Agx%mh=lGttP`TE13xs*sNYz#O_tUo zlbcT(Z!b2%lhKu0&y!KIU1GtRx*IBt%dYlr7z~NrNjx!G+oIjvL;<4iCNWi_=-wUK zjmb((R${Uell7U5vfuSV(hKDWZJk)?%;ljNH`gv zUokrN6s*HwJToqX@v74u`y8wetU^t`!WjPJSs$^-7=r`!1lOl;Zg0OyoawBDpNqCt mdi}?5KMDNra5*UZ?*0Auu)1H}<3JBtzWEygv`jht2LJ#EC&efL literal 0 HcmV?d00001 diff --git a/assets/lib.config-257eb5b5.js.map b/assets/lib.config-257eb5b5.js.map new file mode 100644 index 00000000..b2ca52d6 --- /dev/null +++ b/assets/lib.config-257eb5b5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lib.config-257eb5b5.js","sources":["../../../lib/config/src/index.ts","../../../lib/config/src/utils.ts"],"sourcesContent":["import type { IComponent, TComponentId, TComponentManifest } from '#/@types/components';\nimport type { IElementSpecification } from '@sugarlabs/musicblocks-v4-lib';\n\nimport {\n registerElementSpecificationEntries,\n librarySpecification,\n} from '@sugarlabs/musicblocks-v4-lib';\n\n// -- private variables ----------------------------------------------------------------------------\n\n/** Stores key-value pairs of component identifier and component module. */\nconst _components: Partial> = {};\n\n// -- private functions ----------------------------------------------------------------------------\n\n/**\n * Mounts a component module.\n * @param componentId component identifier\n */\nasync function _mountComponent(componentId: TComponentId): Promise {\n const component = _components[componentId]!;\n await component.mount();\n}\n\n/**\n * Initializes a component module.\n * @param componentId component identifier\n */\nasync function _setupComponent(componentId: TComponentId): Promise {\n const component = _components[componentId]!;\n await component.setup();\n}\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Returns a component module by it's identifier.\n * @param componentId component identifier\n * @returns component module if valid identifier else `null`\n */\nexport function getComponent(componentId: TComponentId): IComponent | null {\n return componentId in _components ? _components[componentId]! : null;\n}\n\n/**\n * Imports a component module.\n * @param componentId component identifier\n * @param path path to the module relative to `src/components`\n * @returns a Promise to the component's module\n */\nexport async function importComponent(\n componentId: TComponentId,\n importFunc: () => Promise,\n): Promise {\n _components[componentId] = await importFunc();\n return _components[componentId]!;\n}\n\n/**\n * Imports a list of component modules asynchronously.\n * @param componentIds list of component identifiers\n * @param callback callback function to call after succesful import of each component's module\n * @returns a Promise to the component module map\n */\nexport async function importComponents(\n componentIds: TComponentId[],\n componentManifest: TComponentManifest,\n callback?: (componentId: TComponentId) => unknown,\n): Promise>> {\n Object.fromEntries(\n await Promise.all(\n componentIds\n .map(\n (id) =>\n [id, componentManifest[id].importFunc] as [\n TComponentId,\n () => Promise,\n ],\n )\n .map(([id, importFunc]) =>\n importComponent(id, importFunc).then((component) => {\n if (callback !== undefined) callback(id);\n return [id, component];\n }),\n ),\n ),\n );\n\n return _components;\n}\n\n/**\n * Mounts a list of component modules synchronously.\n * @param entries list of tuples of component identifiers and feature flags\n * @param callback callback function to call after succesful mounting of each component\n */\nexport async function mountComponents(\n componentIds: TComponentId[],\n callback?: (componentId: TComponentId) => unknown,\n): Promise {\n return new Promise((resolve) => {\n const iterator = componentIds.entries();\n\n async function _mountHelper(\n iteratorResult: IteratorResult<[number, TComponentId], unknown>,\n ): Promise {\n if (iteratorResult.done) return;\n\n const [_, componentId] = iteratorResult.value;\n await _mountComponent(componentId);\n if (callback !== undefined) callback(componentId);\n\n return _mountHelper(iterator.next());\n }\n\n _mountHelper(iterator.next()).then(() => requestAnimationFrame(() => resolve()));\n });\n}\n\n/**\n * Initializes a list of component modules synchronously.\n * @param componentIds list of component identifiers\n * @param callback callback function to call after succesful initialization of each component\n */\nexport async function setupComponents(\n componentIds: TComponentId[],\n callback?: (componentId: TComponentId) => unknown,\n): Promise {\n return new Promise((resolve) => {\n const iterator = componentIds.entries();\n\n async function _setupHelper(\n iteratorResult: IteratorResult<[number, TComponentId], unknown>,\n ): Promise {\n if (iteratorResult.done) return;\n\n const [_, componentId] = iteratorResult.value;\n await _setupComponent(componentId);\n if (callback !== undefined) callback(componentId);\n\n return _setupHelper(iterator.next());\n }\n\n _setupHelper(iterator.next()).then(() => requestAnimationFrame(() => resolve()));\n });\n}\n\n/**\n * Registers syntax elements in the programming engine.\n * @param entries list of objects of component identifiers and corresponding syntax element filters\n */\nexport function registerElements(\n entries: {\n /** Component identifier. */\n id: TComponentId;\n /** List of syntax elements to register, or register all if `true`. */\n filter: string[] | true | undefined;\n }[],\n) {\n registerElementSpecificationEntries(librarySpecification);\n\n entries\n .filter(({ filter }) => filter !== undefined)\n .map(({ id, filter }) => {\n if (filter === true) {\n return { id, specification: _components[id]!.elements };\n }\n\n return {\n id,\n specification: Object.fromEntries(\n Object.entries(_components[id]!.elements!).filter(([elementName]) =>\n filter?.includes(elementName),\n ),\n ),\n };\n })\n .map(\n ({ specification }) =>\n specification as { [elementName: string]: IElementSpecification } | undefined,\n )\n .filter((specification) => specification !== undefined)\n .forEach((specification) => registerElementSpecificationEntries(specification!));\n}\n","import type { TComponentId } from '#/@types/components';\n\n// -------------------------------------------------------------------------------------------------\n\n/**\n * Serializes components by dependency ordering using Topological Sorting.\n * @param components list of objects of component identifier and dependent component identifiers\n * @returns component identifiers in serialized order\n */\nexport function serializeComponentDependencies(\n components: { id: TComponentId; dependencies: TComponentId[] }[],\n): TComponentId[] {\n const length = components.length;\n\n /**\n * Generates a Directed Acyclic Graph (DAG) of the component indices.\n * @returns a `nxn` matrix representing the DAG in adjacent list form\n *\n * @description\n * Consider there are five components (`a`, `b`, `c`, `d`, `e`). `b` is child of `a`, `c` is\n * child of `b`, `e` is child of `b` and `d`.\n * The DAG will be:\n * a <-- b <-- c\n * ^\n * |\n * d <-- e\n * The DAG matrix returned will be:\n * ____a_____b_____c_____d_____e____\n * a | false false false false false |\n * b | true false false false false |\n * c | false true false false false |\n * d | false false false false false |\n * e | false true false true false |\n * ---------------------------------\n * A cell (`row`, `col`) represents if component with index `row` is a child of component with\n * index `col`.\n */\n const createDAG = () => {\n const DAG = new Array(length);\n\n for (let i = 0; i < length; i++) {\n const rowComponent = components[i];\n DAG[i] = new Array(length);\n DAG[i].fill(false);\n\n for (let j = 0; j < length; j++) {\n const colComponent = components[j];\n\n if (rowComponent.dependencies.includes(colComponent.id)) {\n DAG[i][j] = true;\n }\n }\n }\n\n return DAG;\n };\n\n const DAG = createDAG();\n\n /**\n * Serializes the generated DAG using Topological Sorting such that child component indices\n * appear after their parent component indices in the ordering\n * @returns a list of serialized indices of the DAG\n *\n * @description\n * For the example above (function `createDAG` description), the result will be\n * `[0, 3, 1, 2, 4]` representing component order [`a`, `d`, `b`, `c`, `e`].\n */\n const serializeDAG = () => {\n let visited: number[] = [];\n let visiting: number[] = [];\n let unvisited: number[] = components.map((_, i) => i);\n\n while (unvisited.length > 0) {\n // find nodes with no parents\n for (let i = 0; i < length; i++) {\n let hasParents = false;\n\n for (let j = 0; j < length; j++) {\n if (DAG[i][j] === true) {\n hasParents = true;\n break;\n }\n }\n\n // if node has no parents and node wasn't visited\n if (!hasParents && !visited.includes(i)) {\n // add node to visitng list\n visiting.push(i);\n // remove node from unvisited list\n unvisited.splice(\n unvisited.findIndex((index) => index === i),\n 1,\n );\n }\n }\n\n // edge case for cyclic graph (or subgraph)\n if (visiting.length === 0) {\n throw Error('Invalid Config: dependency resolution results in a cyclic graph');\n }\n\n // for visiting nodes in order\n for (const index of visiting) {\n // add node to visited list\n visited.push(index);\n\n // remove all edges (in DAG) to node\n for (let j = 0; j < length; j++) {\n DAG[j][index] = false;\n }\n }\n\n // clear visiting list\n visiting = [];\n }\n\n return visited;\n };\n\n const serializedIndices = serializeDAG();\n\n return serializedIndices.map((i) => components[i].id);\n}\n\n// -------------------------------------------------------------------------------------------------\n\n/*\n * dummy config to debug valid topological sorting\n * a <-- b <-- c\n * ^\n * |\n * d <-- e\n */\n\n// serializeComponentDependencies([\n// // @ts-ignore\n// { id: 'a', dependencies: [] },\n// // @ts-ignore\n// { id: 'b', dependencies: ['a'] },\n// // @ts-ignore\n// { id: 'c', dependencies: ['b'] },\n// // @ts-ignore\n// { id: 'd', dependencies: [] },\n// // @ts-ignore\n// { id: 'e', dependencies: ['b', 'd'] },\n// ]).forEach((componentId) => console.log(componentId));\n\n/*\n * dummy config to debug invalid (cycle in `b`, `c`, `e`) topological sorting\n * a <-- b <-- c\n * | ^\n * v |\n * d <-- e ----\n */\n\n// serializeComponentDependencies([\n// // @ts-ignore\n// { id: 'a', dependencies: [] },\n// // @ts-ignore\n// { id: 'b', dependencies: ['e'] },\n// // @ts-ignore\n// { id: 'c', dependencies: ['b'] },\n// // @ts-ignore\n// { id: 'd', dependencies: [] },\n// // @ts-ignore\n// { id: 'e', dependencies: ['d', 'd'] },\n// ]).forEach((componentId) => console.log(componentId));\n"],"names":["_components","_mountComponent","componentId","_setupComponent","getComponent","importComponent","importFunc","importComponents","componentIds","componentManifest","callback","id","component","mountComponents","resolve","iterator","_mountHelper","iteratorResult","_","setupComponents","_setupHelper","registerElements","entries","registerElementSpecificationEntries","librarySpecification","filter","elementName","specification","serializeComponentDependencies","components","length","DAG","rowComponent","j","colComponent","visited","visiting","unvisited","i","hasParents","index"],"mappings":"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"} \ No newline at end of file diff --git a/assets/lib.i18n-3137bee4.js b/assets/lib.i18n-3137bee4.js new file mode 100644 index 00000000..c9c91e56 --- /dev/null +++ b/assets/lib.i18n-3137bee4.js @@ -0,0 +1,2 @@ +import{_,a}from"./dynamic-import-helper-e113e409.js";let n={},r={};async function s(i="en"){r=(await _(()=>import("./lang.en-a09fe94b.js"),[])).default,n=i==="en"?{...r}:(await a(Object.assign({"../lang/en.ts":()=>_(()=>import("./lang.en-a09fe94b.js"),[]),"../lang/es.ts":()=>_(()=>import("./lang.es-5dc320b5.js"),[])}),`../lang/${i}.ts`)).default}function o(i){return Object.fromEntries(i.map(t=>[t,t in n?n[t]:t in r?r[t]:t]))}export{o as getStrings,s as importStrings}; +//# sourceMappingURL=lib.i18n-3137bee4.js.map diff --git a/assets/lib.i18n-3137bee4.js.map b/assets/lib.i18n-3137bee4.js.map new file mode 100644 index 00000000..716972bc --- /dev/null +++ b/assets/lib.i18n-3137bee4.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"qDAIA,IAAIA,EAAsB,GACtBC,EAAwB,GAQN,eAAAC,EAAcC,EAAkB,KAAM,CAC1CF,GAAA,MAAAG,EAAA,IAAM,OAAO,uBAAY,OAAG,QAEtCJ,EAAAG,IAAS,KACH,CAAE,GAAGF,CACH,SAAMI,mKAA8B,OACpD,CAMO,SAASC,EAAWC,EAA2C,CAClE,OAAO,OAAO,YACVA,EAAK,IAAKC,GAAQ,CACdA,EACAA,KAAOR,EAAWA,EAASQ,CAAG,EAAIA,KAAOP,EAAaA,EAAWO,CAAG,EAAIA,CAAA,CAC3E,EAET","names":["_strings","_stringsEN","importStrings","lang","__vitePreload","__variableDynamicImportRuntimeHelper","getStrings","keys","key"],"sources":["../../../lib/i18n/src/index.ts"],"sourcesContent":["import type { TI18nFile, TI18nLang } from '#/@types/i18n';\n\n// -- private variables ----------------------------------------------------------------------------\n\nlet _strings: TI18nFile = {};\nlet _stringsEN: TI18nFile = {};\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Loads dynamically the string file of requested language.\n * @param lang - requested language\n */\nexport async function importStrings(lang: TI18nLang = 'en') {\n _stringsEN = (await import('../lang/en')).default as TI18nFile;\n _strings =\n lang === 'en'\n ? { ..._stringsEN }\n : ((await import(`../lang/${lang}.ts`)).default as TI18nFile);\n}\n\n/**\n * Returns i18n string map corresponding to string keys\n * @param keys list of string keys\n */\nexport function getStrings(keys: string[]): { [key: string]: string } {\n return Object.fromEntries(\n keys.map((key) => [\n key,\n key in _strings ? _strings[key] : key in _stringsEN ? _stringsEN[key] : key,\n ]),\n );\n}\n"],"file":"assets/lib.i18n-3137bee4.js"} \ No newline at end of file diff --git a/assets/lib.view-f4687c7b.js b/assets/lib.view-f4687c7b.js new file mode 100644 index 00000000..0219fb97 --- /dev/null +++ b/assets/lib.view-f4687c7b.js @@ -0,0 +1,2 @@ +import{c as a}from"./index-35b52911.js";import{i as s,m as i,s as m,u as n}from"./index-e95da2f1.js";import{s as x,u as d}from"./index-e642236f.js";import"./index-b95677c8.js";export{a as createItem,s as initView,i as mountViewOverlay,x as setToolbarExtended,m as setView,n as unmountViewOverlay,d as unsetToolbarExtended}; +//# sourceMappingURL=lib.view-f4687c7b.js.map diff --git a/assets/lib.view-f4687c7b.js.map b/assets/lib.view-f4687c7b.js.map new file mode 100644 index 00000000..7a35ffee --- /dev/null +++ b/assets/lib.view-f4687c7b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lib.view-f4687c7b.js","sources":[],"sourcesContent":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/assets/loadProject-f9e0b620.svg b/assets/loadProject-f9e0b620.svg new file mode 100644 index 00000000..37dc4c36 --- /dev/null +++ b/assets/loadProject-f9e0b620.svg @@ -0,0 +1,16 @@ + +Created with Fabric.js 3.5.0 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/logo-3080f493.png b/assets/logo-3080f493.png new file mode 100644 index 0000000000000000000000000000000000000000..5c1024e4debc27acb275adb8b289a9fa500ce983 GIT binary patch literal 46593 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

@dr9}sIFD7hAbQY%s_(#X2NRr;QNuK=!NryMa7 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 literal 0 HcmV?d00001 diff --git a/assets/misc-ecacff45.js b/assets/misc-ecacff45.js new file mode 100644 index 00000000..0f216455 --- /dev/null +++ b/assets/misc-ecacff45.js @@ -0,0 +1,2 @@ +import{_ as a}from"./dynamic-import-helper-e113e409.js";function s(i){i&&i instanceof Function&&a(()=>import("./web-vitals-60d3425a.js"),[]).then(({getCLS:e,getFID:o,getFCP:t,getLCP:c,getTTFB:r})=>{e(i),o(i),t(i),c(i),r(i)})}function l(){const i="/musicblocks-v4/";"serviceWorker"in navigator&&window.addEventListener("load",()=>{navigator.serviceWorker.register(`${i}sw.js`).then(o=>{console.log("SW registered: ",o)}).catch(o=>{console.log("SW registration failed: ",o)})})}function d(i){return window.location.origin+window.location.pathname+i}export{d as constructWasmUrl,l as loadServiceWorker,s as reportWebVitals}; +//# sourceMappingURL=misc-ecacff45.js.map diff --git a/assets/misc-ecacff45.js.map b/assets/misc-ecacff45.js.map new file mode 100644 index 00000000..0eccfc5a --- /dev/null +++ b/assets/misc-ecacff45.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"wDAOO,SAASA,EAAgBC,EAAmC,CAC3DA,GAAeA,aAAuB,UAC/BC,EAAA,qCAAY,MAAE,KAAK,CAAC,CAAE,OAAAC,EAAQ,OAAAC,EAAQ,OAAAC,EAAQ,OAAAC,EAAQ,QAAAC,KAAc,CACvEJ,EAAOF,CAAW,EAClBG,EAAOH,CAAW,EAClBI,EAAOJ,CAAW,EAClBK,EAAOL,CAAW,EAClBM,EAAQN,CAAW,EACtB,CAET,CAKO,SAASO,GAAoB,CAChC,MAAMC,EAAW,mBAGb,kBAAmB,WACZ,wBAAiB,OAAQ,IAAM,CAClC,UAAU,cACL,SAAS,GAAGA,QAAe,EAC3B,KAAMC,GAAiB,CACZ,YAAI,kBAAmBA,CAAY,EAC9C,EACA,MAAOC,GAAsB,CAClB,YAAI,2BAA4BA,CAAiB,EAC5D,EACR,CAET,CAYO,SAASC,EAAiBC,EAA4B,CAErD,OAAO,OAAO,SAAS,OAAS,OAAO,SAAS,SAAWA,CAInE","names":["reportWebVitals","onPerfEntry","__vitePreload","getCLS","getFID","getFCP","getLCP","getTTFB","loadServiceWorker","BASE_URL","registration","registrationError","constructWasmUrl","importPath"],"sources":["../../src/utils/misc.ts"],"sourcesContent":["import { ReportHandler } from 'web-vitals';\n\n/**\n * If you want to start measuring performance in your app, pass a function to log results\n * (e.g.: reportWebVitals(console.log))\n * @param onPerfEntry\n */\nexport function reportWebVitals(onPerfEntry?: ReportHandler): void {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n}\n\n/**\n * Used to load service worker in production only.\n */\nexport function loadServiceWorker() {\n const BASE_URL = import.meta.env.BASE_URL ?? window?.location?.pathname ?? '/';\n const ENABLE_SW = import.meta.env.DEV ? false : true;\n\n if ('serviceWorker' in navigator && ENABLE_SW) {\n window.addEventListener('load', () => {\n navigator.serviceWorker\n .register(`${BASE_URL}sw.js`)\n .then((registration) => {\n console.log('SW registered: ', registration);\n })\n .catch((registrationError) => {\n console.log('SW registration failed: ', registrationError);\n });\n });\n }\n}\n\n/**\n * Used to construct a string URL to the location of the WASM module which is included as an asset.\n *\n * Usage:\n * import wasmModule from '/path/to/file.wasm';\n * const urlToWasmFile = constructWasmUrl(wasmModule);\n *\n * @param importPath the WASM module import\n * @returns URL to WASM module included as asset\n */\nexport function constructWasmUrl(importPath: string): string {\n if (import.meta.env.PROD) {\n return window.location.origin + window.location.pathname + importPath;\n } else {\n return importPath;\n }\n}\n"],"file":"assets/misc-ecacff45.js"} \ No newline at end of file diff --git a/assets/module.editor-93a6384b.js b/assets/module.editor-93a6384b.js new file mode 100644 index 00000000..09d67d27 --- /dev/null +++ b/assets/module.editor-93a6384b.js @@ -0,0 +1,122 @@ +import{c as Bn,j as T,b as S,a as Z,F as Pn}from"./index-b95677c8.js";import{u as Hn,s as Yn}from"./index-e642236f.js";import{h as Un}from"./index-97cad2bf.js";import{c as Kn}from"./index-35b52911.js";import{c as Ve}from"./_commonjs-dynamic-modules-302442b1.js";import{m as U,a as qn,b as Gn,r as Wn}from"./index-4245e63e.js";var v={},W={},E={};function Je(e){return typeof e>"u"||e===null}function Vn(e){return typeof e=="object"&&e!==null}function Jn(e){return Array.isArray(e)?e:Je(e)?[]:[e]}function Qn(e,n){var r,o,i,t;if(n)for(t=Object.keys(n),r=0,o=t.length;r0&&`\0\r +…\u2028\u2029`.indexOf(this.buffer.charAt(i-1))===-1;)if(i-=1,this.position-i>r/2-1){o=" ... ",i+=5;break}for(t="",l=this.position;lr/2-1){t=" ... ",l-=5;break}return u=this.buffer.slice(i,l),_e.repeat(" ",n)+o+u+t+` +`+_e.repeat(" ",n+this.position-i+o.length)+"^"};ve.prototype.toString=function(n){var r,o="";return this.name&&(o+='in "'+this.name+'" '),o+="at line "+(this.line+1)+", column "+(this.column+1),n||(r=this.getSnippet(),r&&(o+=`: +`+r)),o};var zn=ve,Fe=V,er=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],nr=["scalar","sequence","mapping"];function rr(e){var n={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(o){n[String(o)]=r})}),n}function ir(e,n){if(n=n||{},Object.keys(n).forEach(function(r){if(er.indexOf(r)===-1)throw new Fe('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.tag=e,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(r){return r},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.defaultStyle=n.defaultStyle||null,this.styleAliases=rr(n.styleAliases||null),nr.indexOf(this.kind)===-1)throw new Fe('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var y=ir,Se=E,z=V,or=y;function pe(e,n,r){var o=[];return e.include.forEach(function(i){r=pe(i,n,r)}),e[n].forEach(function(i){r.forEach(function(t,l){t.tag===i.tag&&t.kind===i.kind&&o.push(l)}),r.push(i)}),r.filter(function(i,t){return o.indexOf(t)===-1})}function lr(){var e={scalar:{},sequence:{},mapping:{},fallback:{}},n,r;function o(i){e[i.kind][i.tag]=e.fallback[i.tag]=i}for(n=0,r=arguments.length;n=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Qe=E,Lr=y,Nr=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Rr(e){return!(e===null||!Nr.test(e)||e[e.length-1]==="_")}function Mr(e){var n,r,o,i;return n=e.replace(/_/g,"").toLowerCase(),r=n[0]==="-"?-1:1,i=[],"+-".indexOf(n[0])>=0&&(n=n.slice(1)),n===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:n===".nan"?NaN:n.indexOf(":")>=0?(n.split(":").forEach(function(t){i.unshift(parseFloat(t,10))}),n=0,o=1,i.forEach(function(t){n+=t*o,o*=60}),r*n):r*parseFloat(n,10)}var $r=/^[-+]?[0-9]+e/;function Dr(e,n){var r;if(isNaN(e))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Qe.isNegativeZero(e))return"-0.0";return r=e.toString(10),$r.test(r)?r.replace("e",".e"):r}function jr(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||Qe.isNegativeZero(e))}var Br=new Lr("tag:yaml.org,2002:float",{kind:"scalar",resolve:Rr,construct:Mr,predicate:jr,represent:Dr,defaultStyle:"lowercase"}),Pr=Y,Xe=new Pr({include:[Ae],implicit:[gr,wr,Ir,Br]}),Hr=Y,Ze=new Hr({include:[Xe]}),Yr=y,ze=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),en=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Ur(e){return e===null?!1:ze.exec(e)!==null||en.exec(e)!==null}function Kr(e){var n,r,o,i,t,l,u,c=0,a=null,s,f,d;if(n=ze.exec(e),n===null&&(n=en.exec(e)),n===null)throw new Error("Date resolve error");if(r=+n[1],o=+n[2]-1,i=+n[3],!n[4])return new Date(Date.UTC(r,o,i));if(t=+n[4],l=+n[5],u=+n[6],n[7]){for(c=n[7].slice(0,3);c.length<3;)c+="0";c=+c}return n[9]&&(s=+n[10],f=+(n[11]||0),a=(s*60+f)*6e4,n[9]==="-"&&(a=-a)),d=new Date(Date.UTC(r,o,i,t,l,u,c)),a&&d.setTime(d.getTime()-a),d}function qr(e){return e.toISOString()}var Gr=new Yr("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Ur,construct:Kr,instanceOf:Date,represent:qr}),Wr=y;function Vr(e){return e==="<<"||e===null}var Jr=new Wr("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Vr}),L;try{var Qr=Ve;L=Qr("buffer").Buffer}catch{}var Xr=y,ye=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Zr(e){if(e===null)return!1;var n,r,o=0,i=e.length,t=ye;for(r=0;r64)){if(n<0)return!1;o+=6}return o%8===0}function zr(e){var n,r,o=e.replace(/[\r\n=]/g,""),i=o.length,t=ye,l=0,u=[];for(n=0;n>16&255),u.push(l>>8&255),u.push(l&255)),l=l<<6|t.indexOf(o.charAt(n));return r=i%4*6,r===0?(u.push(l>>16&255),u.push(l>>8&255),u.push(l&255)):r===18?(u.push(l>>10&255),u.push(l>>2&255)):r===12&&u.push(l>>4&255),L?L.from?L.from(u):new L(u):u}function ei(e){var n="",r=0,o,i,t=e.length,l=ye;for(o=0;o>18&63],n+=l[r>>12&63],n+=l[r>>6&63],n+=l[r&63]),r=(r<<8)+e[o];return i=t%3,i===0?(n+=l[r>>18&63],n+=l[r>>12&63],n+=l[r>>6&63],n+=l[r&63]):i===2?(n+=l[r>>10&63],n+=l[r>>4&63],n+=l[r<<2&63],n+=l[64]):i===1&&(n+=l[r>>2&63],n+=l[r<<4&63],n+=l[64],n+=l[64]),n}function ni(e){return L&&L.isBuffer(e)}var ri=new Xr("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Zr,construct:zr,predicate:ni,represent:ei}),ii=y,oi=Object.prototype.hasOwnProperty,li=Object.prototype.toString;function ti(e){if(e===null)return!0;var n=[],r,o,i,t,l,u=e;for(r=0,o=u.length;r"u"}var _i=new yi("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:bi,construct:wi,predicate:Ci,represent:Ei}),Fi=y;function Si(e){if(e===null||e.length===0)return!1;var n=e,r=/\/([gim]*)$/.exec(e),o="";return!(n[0]==="/"&&(r&&(o=r[1]),o.length>3||n[n.length-o.length-1]!=="/"))}function ki(e){var n=e,r=/\/([gim]*)$/.exec(e),o="";return n[0]==="/"&&(r&&(o=r[1]),n=n.slice(1,n.length-o.length-1)),new RegExp(n,o)}function Ti(e){var n="/"+e.source+"/";return e.global&&(n+="g"),e.multiline&&(n+="m"),e.ignoreCase&&(n+="i"),n}function Oi(e){return Object.prototype.toString.call(e)==="[object RegExp]"}var Ii=new Fi("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Si,construct:ki,predicate:Oi,represent:Ti}),re;try{var Li=Ve;re=Li("esprima")}catch{typeof window<"u"&&(re=window.esprima)}var Ni=y;function Ri(e){if(e===null)return!1;try{var n="("+e+")",r=re.parse(n,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function Mi(e){var n="("+e+")",r=re.parse(n,{range:!0}),o=[],i;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(t){o.push(t.name)}),i=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(o,n.slice(i[0]+1,i[1]-1)):new Function(o,"return "+n.slice(i[0],i[1]))}function $i(e){return e.toString()}function Di(e){return Object.prototype.toString.call(e)==="[object Function]"}var ji=new Ni("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Ri,construct:Mi,predicate:Di,represent:$i}),ke=Y,te=ke.DEFAULT=new ke({include:[J],explicit:[_i,Ii,ji]}),F=E,nn=V,Bi=zn,rn=J,Pi=te,I=Object.prototype.hasOwnProperty,ie=1,on=2,ln=3,oe=4,fe=1,Hi=2,Te=3,Yi=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Ui=/[\x85\u2028\u2029]/,Ki=/[,\[\]\{\}]/,tn=/^(?:!|!!|![a-z\-]+!)$/i,un=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Oe(e){return Object.prototype.toString.call(e)}function _(e){return e===10||e===13}function N(e){return e===9||e===32}function w(e){return e===9||e===32||e===10||e===13}function j(e){return e===44||e===91||e===93||e===123||e===125}function qi(e){var n;return 48<=e&&e<=57?e-48:(n=e|32,97<=n&&n<=102?n-97+10:-1)}function Gi(e){return e===120?2:e===117?4:e===85?8:0}function Wi(e){return 48<=e&&e<=57?e-48:-1}function Ie(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?` +`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"…":e===95?" ":e===76?"\u2028":e===80?"\u2029":""}function Vi(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var cn=new Array(256),an=new Array(256);for(var M=0;M<256;M++)cn[M]=Ie(M)?1:0,an[M]=Ie(M);function Ji(e,n){this.input=e,this.filename=n.filename||null,this.schema=n.schema||Pi,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function fn(e,n){return new nn(n,new Bi(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function h(e,n){throw fn(e,n)}function le(e,n){e.onWarning&&e.onWarning.call(null,fn(e,n))}var Le={YAML:function(n,r,o){var i,t,l;n.version!==null&&h(n,"duplication of %YAML directive"),o.length!==1&&h(n,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(o[0]),i===null&&h(n,"ill-formed argument of the YAML directive"),t=parseInt(i[1],10),l=parseInt(i[2],10),t!==1&&h(n,"unacceptable YAML version of the document"),n.version=o[0],n.checkLineBreaks=l<2,l!==1&&l!==2&&le(n,"unsupported YAML version of the document")},TAG:function(n,r,o){var i,t;o.length!==2&&h(n,"TAG directive accepts exactly two arguments"),i=o[0],t=o[1],tn.test(i)||h(n,"ill-formed tag handle (first argument) of the TAG directive"),I.call(n.tagMap,i)&&h(n,'there is a previously declared suffix for "'+i+'" tag handle'),un.test(t)||h(n,"ill-formed tag prefix (second argument) of the TAG directive"),n.tagMap[i]=t}};function O(e,n,r,o){var i,t,l,u;if(n1&&(e.result+=F.repeat(` +`,n-1))}function Qi(e,n,r){var o,i,t,l,u,c,a,s,f=e.kind,d=e.result,p;if(p=e.input.charCodeAt(e.position),w(p)||j(p)||p===35||p===38||p===42||p===33||p===124||p===62||p===39||p===34||p===37||p===64||p===96||(p===63||p===45)&&(i=e.input.charCodeAt(e.position+1),w(i)||r&&j(i)))return!1;for(e.kind="scalar",e.result="",t=l=e.position,u=!1;p!==0;){if(p===58){if(i=e.input.charCodeAt(e.position+1),w(i)||r&&j(i))break}else if(p===35){if(o=e.input.charCodeAt(e.position-1),w(o))break}else{if(e.position===e.lineStart&&ue(e)||r&&j(p))break;if(_(p))if(c=e.line,a=e.lineStart,s=e.lineIndent,A(e,!1,-1),e.lineIndent>=n){u=!0,p=e.input.charCodeAt(e.position);continue}else{e.position=l,e.line=c,e.lineStart=a,e.lineIndent=s;break}}u&&(O(e,t,l,!1),we(e,e.line-c),t=l=e.position,u=!1),N(p)||(l=e.position+1),p=e.input.charCodeAt(++e.position)}return O(e,t,l,!1),e.result?!0:(e.kind=f,e.result=d,!1)}function Xi(e,n){var r,o,i;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,o=i=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(O(e,o,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)o=e.position,e.position++,i=e.position;else return!0;else _(r)?(O(e,o,i,!0),we(e,A(e,!1,n)),o=i=e.position):e.position===e.lineStart&&ue(e)?h(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);h(e,"unexpected end of the stream within a single quoted scalar")}function Zi(e,n){var r,o,i,t,l,u;if(u=e.input.charCodeAt(e.position),u!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=o=e.position;(u=e.input.charCodeAt(e.position))!==0;){if(u===34)return O(e,r,e.position,!0),e.position++,!0;if(u===92){if(O(e,r,e.position,!0),u=e.input.charCodeAt(++e.position),_(u))A(e,!1,n);else if(u<256&&cn[u])e.result+=an[u],e.position++;else if((l=Gi(u))>0){for(i=l,t=0;i>0;i--)u=e.input.charCodeAt(++e.position),(l=qi(u))>=0?t=(t<<4)+l:h(e,"expected hexadecimal character");e.result+=Vi(t),e.position++}else h(e,"unknown escape sequence");r=o=e.position}else _(u)?(O(e,r,o,!0),we(e,A(e,!1,n)),r=o=e.position):e.position===e.lineStart&&ue(e)?h(e,"unexpected end of the document within a double quoted scalar"):(e.position++,o=e.position)}h(e,"unexpected end of the stream within a double quoted scalar")}function zi(e,n){var r=!0,o,i=e.tag,t,l=e.anchor,u,c,a,s,f,d={},p,x,g,m;if(m=e.input.charCodeAt(e.position),m===91)c=93,f=!1,t=[];else if(m===123)c=125,f=!0,t={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=t),m=e.input.charCodeAt(++e.position);m!==0;){if(A(e,!0,n),m=e.input.charCodeAt(e.position),m===c)return e.position++,e.tag=i,e.anchor=l,e.kind=f?"mapping":"sequence",e.result=t,!0;r||h(e,"missed comma between flow collection entries"),x=p=g=null,a=s=!1,m===63&&(u=e.input.charCodeAt(e.position+1),w(u)&&(a=s=!0,e.position++,A(e,!0,n))),o=e.line,P(e,n,ie,!1,!0),x=e.tag,p=e.result,A(e,!0,n),m=e.input.charCodeAt(e.position),(s||e.line===o)&&m===58&&(a=!0,m=e.input.charCodeAt(++e.position),A(e,!0,n),P(e,n,ie,!1,!0),g=e.result),f?B(e,t,d,x,p,g):a?t.push(B(e,null,d,x,p,g)):t.push(p),A(e,!0,n),m=e.input.charCodeAt(e.position),m===44?(r=!0,m=e.input.charCodeAt(++e.position)):r=!1}h(e,"unexpected end of the stream within a flow collection")}function eo(e,n){var r,o,i=fe,t=!1,l=!1,u=n,c=0,a=!1,s,f;if(f=e.input.charCodeAt(e.position),f===124)o=!1;else if(f===62)o=!0;else return!1;for(e.kind="scalar",e.result="";f!==0;)if(f=e.input.charCodeAt(++e.position),f===43||f===45)fe===i?i=f===43?Te:Hi:h(e,"repeat of a chomping mode identifier");else if((s=Wi(f))>=0)s===0?h(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?h(e,"repeat of an indentation width identifier"):(u=n+s-1,l=!0);else break;if(N(f)){do f=e.input.charCodeAt(++e.position);while(N(f));if(f===35)do f=e.input.charCodeAt(++e.position);while(!_(f)&&f!==0)}for(;f!==0;){for(be(e),e.lineIndent=0,f=e.input.charCodeAt(e.position);(!l||e.lineIndentu&&(u=e.lineIndent),_(f)){c++;continue}if(e.lineIndentn)&&c!==0)h(e,"bad indentation of a sequence entry");else if(e.lineIndentn)&&(P(e,n,oe,!0,i)&&(x?d=e.result:p=e.result),x||(B(e,a,s,f,d,p,t,l),f=d=p=null),A(e,!0,-1),m=e.input.charCodeAt(e.position)),e.lineIndent>n&&m!==0)h(e,"bad indentation of a mapping entry");else if(e.lineIndentn?c=1:e.lineIndent===n?c=0:e.lineIndentn?c=1:e.lineIndent===n?c=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),f=0,d=e.implicitTypes.length;f tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result)?(e.result=p.construct(e.result),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):h(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):h(e,"unknown tag !<"+e.tag+">");return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||s}function lo(e){var n=e.position,r,o,i,t=!1,l;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};(l=e.input.charCodeAt(e.position))!==0&&(A(e,!0,-1),l=e.input.charCodeAt(e.position),!(e.lineIndent>0||l!==37));){for(t=!0,l=e.input.charCodeAt(++e.position),r=e.position;l!==0&&!w(l);)l=e.input.charCodeAt(++e.position);for(o=e.input.slice(r,e.position),i=[],o.length<1&&h(e,"directive name must not be less than one character in length");l!==0;){for(;N(l);)l=e.input.charCodeAt(++e.position);if(l===35){do l=e.input.charCodeAt(++e.position);while(l!==0&&!_(l));break}if(_(l))break;for(r=e.position;l!==0&&!w(l);)l=e.input.charCodeAt(++e.position);i.push(e.input.slice(r,e.position))}l!==0&&be(e),I.call(Le,o)?Le[o](e,o,i):le(e,'unknown document directive "'+o+'"')}if(A(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,A(e,!0,-1)):t&&h(e,"directives end mark is expected"),P(e,e.lineIndent-1,oe,!1,!0),A(e,!0,-1),e.checkLineBreaks&&Ui.test(e.input.slice(n,e.position))&&le(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&ue(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,A(e,!0,-1));return}if(e.position"u"&&(r=n,n=null);var o=pn(e,r);if(typeof n!="function")return o;for(var i=0,t=o.length;i"u"&&(r=n,n=null),sn(e,n,F.extend({schema:rn},r))}function uo(e,n){return dn(e,F.extend({schema:rn},n))}W.loadAll=sn;W.load=dn;W.safeLoadAll=to;W.safeLoad=uo;var Ee={},Q=E,X=V,co=te,ao=J,hn=Object.prototype.toString,mn=Object.prototype.hasOwnProperty,fo=9,q=10,po=13,so=32,ho=33,mo=34,xn=35,xo=37,go=38,vo=39,Ao=42,gn=44,yo=45,vn=58,bo=61,wo=62,Eo=63,Co=64,An=91,yn=93,_o=96,bn=123,Fo=124,wn=125,b={};b[0]="\\0";b[7]="\\a";b[8]="\\b";b[9]="\\t";b[10]="\\n";b[11]="\\v";b[12]="\\f";b[13]="\\r";b[27]="\\e";b[34]='\\"';b[92]="\\\\";b[133]="\\N";b[160]="\\_";b[8232]="\\L";b[8233]="\\P";var So=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function ko(e,n){var r,o,i,t,l,u,c;if(n===null)return{};for(r={},o=Object.keys(n),i=0,t=o.length;i0?e.charCodeAt(t-1):null,d=d&&De(l,u)}else{for(t=0;to&&e[f+1]!==" ",f=t);else if(!H(l))return ee;u=t>0?e.charCodeAt(t-1):null,d=d&&De(l,u)}a=a||s&&t-f-1>o&&e[f+1]!==" "}return!c&&!a?d&&!i(e)?Cn:_n:r>9&&En(e)?ee:a?Sn:Fn}function Ro(e,n,r,o){e.dump=function(){if(n.length===0)return"''";if(!e.noCompatMode&&So.indexOf(n)!==-1)return"'"+n+"'";var i=e.indent*Math.max(1,r),t=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-i),l=o||e.flowLevel>-1&&r>=e.flowLevel;function u(c){return Oo(e,c)}switch(No(n,l,e.indent,t,u)){case Cn:return n;case _n:return"'"+n.replace(/'/g,"''")+"'";case Fn:return"|"+je(n,e.indent)+Be($e(n,i));case Sn:return">"+je(n,e.indent)+Be($e(Mo(n,t),i));case ee:return'"'+$o(n)+'"';default:throw new X("impossible error: invalid scalar style")}}()}function je(e,n){var r=En(e)?String(n):"",o=e[e.length-1]===` +`,i=o&&(e[e.length-2]===` +`||e===` +`),t=i?"+":o?"":"-";return r+t+` +`}function Be(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function Mo(e,n){for(var r=/(\n+)([^\n]*)/g,o=function(){var a=e.indexOf(` +`);return a=a!==-1?a:e.length,r.lastIndex=a,Pe(e.slice(0,a),n)}(),i=e[0]===` +`||e[0]===" ",t,l;l=r.exec(e);){var u=l[1],c=l[2];t=c[0]===" ",o+=u+(!i&&!t&&c!==""?` +`:"")+Pe(c,n),i=t}return o}function Pe(e,n){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,o,i=0,t,l=0,u=0,c="";o=r.exec(e);)u=o.index,u-i>n&&(t=l>i?l:u,c+=` +`+e.slice(i,t),i=t+1),l=u;return c+=` +`,e.length-i>n&&l>i?c+=e.slice(i,l)+` +`+e.slice(l+1):c+=e.slice(i),c.slice(1)}function $o(e){for(var n="",r,o,i,t=0;t=55296&&r<=56319&&(o=e.charCodeAt(t+1),o>=56320&&o<=57343)){n+=Me((r-55296)*1024+o-56320+65536),t++;continue}i=b[r],n+=!i&&H(r)?e[t]:i||Me(r)}return n}function Do(e,n,r){var o="",i=e.tag,t,l;for(t=0,l=r.length;t1024&&(s+="? "),s+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),R(e,n,a,!1,!1)&&(s+=e.dump,o+=s));e.tag=i,e.dump="{"+o+"}"}function Po(e,n,r,o){var i="",t=e.tag,l=Object.keys(r),u,c,a,s,f,d;if(e.sortKeys===!0)l.sort();else if(typeof e.sortKeys=="function")l.sort(e.sortKeys);else if(e.sortKeys)throw new X("sortKeys must be a boolean or a function");for(u=0,c=l.length;u1024,f&&(e.dump&&q===e.dump.charCodeAt(0)?d+="?":d+="? "),d+=e.dump,f&&(d+=se(e,n)),R(e,n+1,s,!0,f)&&(e.dump&&q===e.dump.charCodeAt(0)?d+=":":d+=": ",d+=e.dump,i+=d));e.tag=t,e.dump=i||"{}"}function He(e,n,r){var o,i,t,l,u,c;for(i=r?e.explicitTypes:e.implicitTypes,t=0,l=i.length;t tag resolver accepts not "'+c+'" style');e.dump=o}return!0}return!1}function R(e,n,r,o,i,t){e.tag=null,e.dump=r,He(e,r,!1)||He(e,r,!0);var l=hn.call(e.dump);o&&(o=e.flowLevel<0||e.flowLevel>n);var u=l==="[object Object]"||l==="[object Array]",c,a;if(u&&(c=e.duplicates.indexOf(r),a=c!==-1),(e.tag!==null&&e.tag!=="?"||a||e.indent!==2&&n>0)&&(i=!1),a&&e.usedDuplicates[c])e.dump="*ref_"+c;else{if(u&&a&&!e.usedDuplicates[c]&&(e.usedDuplicates[c]=!0),l==="[object Object]")o&&Object.keys(e.dump).length!==0?(Po(e,n,e.dump,i),a&&(e.dump="&ref_"+c+e.dump)):(Bo(e,n,e.dump),a&&(e.dump="&ref_"+c+" "+e.dump));else if(l==="[object Array]"){var s=e.noArrayIndent&&n>0?n-1:n;o&&e.dump.length!==0?(jo(e,s,e.dump,i),a&&(e.dump="&ref_"+c+e.dump)):(Do(e,s,e.dump),a&&(e.dump="&ref_"+c+" "+e.dump))}else if(l==="[object String]")e.tag!=="?"&&Ro(e,e.dump,n,t);else{if(e.skipInvalid)return!1;throw new X("unacceptable kind of an object to dump "+l)}e.tag!==null&&e.tag!=="?"&&(e.dump="!<"+e.tag+"> "+e.dump)}return!0}function Ho(e,n){var r=[],o=[],i,t;for(de(e,r,o),i=0,t=o.length;i[r,{...o,args:null}])),Object.entries(C).forEach(([r,o])=>{const i=qn(r),t=Gn(i).instance;C[r].args=t.argLabels.length===0?null:t.argLabels.map(l=>[l,t.getArgType(l)]),Wn(i)});const e={};Object.entries(C).forEach(([r,o])=>{const i=o.category;i in e||(e[i]=[]),e[i].push([r,o.type,o.args])});const n=[];return Object.entries(e).forEach(([r,o])=>{n.push(`# "${r}" elements +# ------------------------`),o.forEach(([i,t,l])=>{t==="Data"?n.push(`- [instruction]: + [param]: + ${i}: string`):t==="Expression"?l===null||(l.length===1?n.push(`- [instruction]: + ${i}: +${l.map(([u,c])=>` ${u}: ${c.join("|")}`).join(` +`)}`):n.push(`- [instruction]: + [param]: + ${i}: +${l.map(([u,c])=>` ${u}: ${c.join("|")}`).join(` +`)}`)):t==="Statement"?l===null?n.push(`- ${i}`):l.length===1?n.push(`- ${i}: ${l[0][1].join("|")}`):n.push(`- ${i}: +${l.map(([u,c])=>` ${u}: ${c.join("|")}`).join(` +`)}`):t==="Block"&&(l===null?n.push(`- ${i}: + scope: + - [instruction] + - ...`):n.push(`- ${i}: +${l.map(([u,c])=>` ${u}: ${c.join("|")}`).join(` +`)} + scope: + - [instruction] + - ...`))}),n.push(` +`)}),n.join(` +`)}function Go(e){let n;function r(){try{return n=Ko.load(e),n instanceof Array}catch(i){const t=i;return console.log({mark:t.mark,message:t.message,name:t.name,reason:t.reason}),!1}}function o(){function i(a){const s=C[a].args;if(s===null)throw new k(`"${a}" does not take arguments`);if(s.length!==1)throw new k(`"${a}" takes ${s.length} arguments but only 1 argument supplied`);return s[0][0]}function t(a,s){const f=C[a].args;if(f===null)throw new k(`"${a}" does not take arguments`);const d=C[a].type==="Block",p=f.map(([g,m])=>g),x=Object.keys(s);if(d){if(!x.includes("scope"))throw new $(`"${a}" expects a scope`);if(!(s.scope instanceof Array))throw new $(`"${a}" supplied with invalid scope`);p.push("scope")}if(p.length!==x.length)throw new k(`invalid number of arguments supplied for "${a}"`);if(p.filter(g=>!x.includes(g)).length!==0)throw new k(`invalid arguments supplied for "${a}"`)}function l(a,s,f){if(typeof f!="object")return{elementName:typeof f=="boolean"?"value-boolean":typeof f=="number"?"value-number":"value-string",value:f.toString()};if(Object.keys(f).length!==1)throw new k(`invalid argument for parameter "${s}" of "${a}"`);const[d,p]=Object.entries(f)[0];if(s===d)return l(a,s,p);if(!(d in C))throw new $(`"${d}" is not a valid argument for "${d}"`);const x=C[d];if(x.type==="Data"){if(typeof p=="string")return{elementName:d,value:p};throw new k(`invalid argument for 'Data' element "${d}"`)}else if(x.type==="Expression"){const g={elementName:"",argMap:null};if(g.elementName=d,typeof p!="object"||Object.keys(p).length===1){const m=i(d);g.argMap=Object.fromEntries([[m,l(d,m,p)]])}else t(d,p),g.argMap=Object.fromEntries(Object.entries(p).map(([m,jn])=>[m,l(d,m,jn)]));return g}else throw new k(`"${d}" is not a 'Data' or 'Expression' element`)}function u(a){if(typeof a=="string"){if(!(a in C))throw new $(`"${a}" is not a valid instruction`);return{elementName:a,argMap:null}}else{if(Object.keys(a).length!==1)throw new $("wrong instruction format encountered");const[s,f]=Object.entries(a)[0];if(!(s in C))throw new $(`"${a}" is not a valid instruction`);const d={elementName:"",argMap:null};if(d.elementName=s,typeof f!="object"||Object.keys(f).length===1){const p=i(s);d.argMap=Object.fromEntries([[p,l(s,p,f)]])}else t(s,f),d.argMap=Object.fromEntries(Object.entries(f).filter(([p,x])=>p!=="scope").map(([p,x])=>[p,l(s,p,x)])),"scope"in f&&(d.scope=f.scope.map(p=>u(p)));return d}}const c={process:[],routine:[],crumbs:[n.map(a=>u(a))]};U.generateFromSnapshot(c)}return new Promise(i=>{if(r()===!1)i(!1);else{const t=U.generateSnapshot();try{o(),i(!0)}catch(l){console.log(l),U.generateFromSnapshot(t),i(!1)}}})}function Wo(){U.resetSyntaxTree()}let G,he,Ye,me,Ue,Ke,In,Ln;function Vo(){const e=S.useRef(null),n=S.useRef(null),r=S.useRef(null),o=S.useRef(null),i=S.useRef(null),t=S.useRef(null),[l,u]=S.useState(!1);return S.useEffect(()=>{he=e.current,Ye=n.current,me=r.current,Ue=o.current,Ke=i.current,In=t.current,Ln(),G.addEventListener("resetstates",()=>{u(!1)}),[["image.icon.help",Ye],["image.icon.build",Ue],["image.icon.close",Ke]].forEach(([c,a])=>{a.innerHTML=ge.assets[c].data})},[]),Z(Pn,{children:[Z("div",{className:`editor-wrapper ${l?"editor-wrapper-hidden":""}`,children:[T("textarea",{id:"editor-codebox",ref:e,onInput:()=>me.innerHTML=""}),Z("div",{id:"editor-console",children:[T("button",{id:"editor-btn-help",ref:n,onClick:()=>u(!0)}),T("div",{id:"editor-status-wrapper",children:T("p",{id:"editor-status",ref:r})}),T("button",{id:"editor-btn-build",ref:o,onClick:()=>G.dispatchEvent(new CustomEvent("buildprogram",{detail:he.value}))})]})]}),Z("div",{className:`editor-wrapper ${l?"":"editor-wrapper-hidden"}`,children:[T("textarea",{id:"editor-help",ref:t,readOnly:!0}),T("button",{id:"editor-help-close",ref:i,onClick:()=>u(!1)})]})]})}function Jo(e){return new Promise(n=>{G=e,G.id="editor",Bn(e).render(T(Vo,{})),Ln=()=>requestAnimationFrame(()=>n())})}function qe(e){he.value=e}function Nn(e){me.innerHTML=e}function Qo(e){In.innerHTML=e}function Xo(){G.dispatchEvent(new Event("resetstates"))}let Rn,Mn,$n;function Zo(e){e.id="editor-toolbar-btn",Rn=e,Mn=ge.assets["image.icon.code"].data,$n=ge.assets["image.icon.close"].data,Dn("code")}function Dn(e){Rn.innerHTML=e==="code"?Mn:$n}let ne,xe;function zo(){return new Promise(e=>{ne=document.createElement("div"),Jo(ne).then(()=>{ne.addEventListener("buildprogram",function(n){Go(n.detail).then(r=>Nn(r?"Successfully Built":"Invalid Code"))}),e()})})}function el(){return new Promise(e=>{xe=Kn({location:"toolbar",type:"button",position:"cluster-a"}),Zo(xe),requestAnimationFrame(()=>e())})}function nl(){return new Promise(e=>{(async()=>(await zo(),await el(),e()))()})}function Ge(e){return e==="button"?xe:ne}function We(e){Dn(e==="clicked"?"cross":"code")}async function cl(){return new Promise(e=>{(async()=>(await nl(),e()))()})}async function al(){Un("menu.reset",()=>{Nn(""),Wo()}),qe(`- clear + +# ------------- +# first hexagon +# ------------- + +- set-thickness: 4 +- set-color: 5 +- repeat: + times: + operator-math-plus: + operand1: 4 + operand2: 2 + scope: + - move-forward: 100 + - turn-right: 60 + +# -------------- +# second hexagon +# -------------- + +- set-color: 9 +- repeat: + times: 6 + scope: + - move-forward: 100 + - turn-left: 60`),qe(`- box-number: + name: "a" + value: 0 +- box-number: + name: "b" + value: 1 +- box-number: + name: "c" + value: 0 +- set-thickness: + value: + 4 +- repeat: + times: 10 + scope: + - print: + boxidentifier-number: "a" + - set-color: + boxidentifier-number: "b" + - repeat: + times: 6 + scope: + - move-forward: + operator-math-times: + operand1: + boxidentifier-number: "a" + operand2: 8 + - turn-left: 90 + - box-number: + name: "c" + value: + operator-math-plus: + operand1: + boxidentifier-number: "a" + operand2: + boxidentifier-number: "b" + - box-number: + name: "a" + value: + boxidentifier-number: "b" + - box-number: + name: "b" + value: + boxidentifier-number: "c"`),Qo(qo());const e=Ge("button");let n="initial";const r=o=>{if(o==="initial")Hn(),Xo();else{const i=Yn("Editor",o,{pin:()=>r("pinned"),unpin:()=>r("float")}),t=Ge("editor");i.appendChild(t)}n=o};e.addEventListener("click",()=>{n==="initial"?(We("clicked"),r("float")):(We("unclicked"),r("initial"))})}const ge={flags:void 0,i18n:void 0,assets:void 0};export{ge as injected,cl as mount,al as setup}; +//# sourceMappingURL=module.editor-93a6384b.js.map diff --git a/assets/module.editor-93a6384b.js.gz b/assets/module.editor-93a6384b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e39c66843313e8bd418f14b88120d8f7835f147f GIT binary patch literal 16069 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 LQCJ!LIJ*D 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n // base 10 (except 0) or base 60\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // 20:59\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) {\n // Support node 6.+ Buffer API when available\n return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);\n }\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /* eslint-disable no-redeclare */\n /* global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n (ast.body[0].expression.type !== 'ArrowFunctionExpression' &&\n ast.body[0].expression.type !== 'FunctionExpression')) {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n if (ast.body[0].expression.body.type === 'BlockStatement') {\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n }\n // ES6 arrow functions can omit the BlockStatement. In that case, just return\n // the body.\n /*eslint-disable no-new-func*/\n return new Function(params, 'return ' + source.slice(body[0], body[1]));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _pos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n _pos = state.position;\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, iterator, options) {\n if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// [24] b-line-feed ::= #xA /* LF */\n// [25] b-carriage-return ::= #xD /* CR */\n// [3] c-byte-order-mark ::= #xFEFF\nfunction isNsChar(c) {\n return isPrintable(c) && !isWhitespace(c)\n // byte-order-mark\n && c !== 0xFEFF\n // b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c, prev) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n // /* An ns-char preceding */ \"#\"\n && c !== CHAR_COLON\n && ((c !== CHAR_SHARP) || (prev && isNsChar(prev)));\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char, prev_char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n prev_char = i > 0 ? string.charCodeAt(i - 1) : null;\n plain = plain && isPlainSafe(char, prev_char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char, nextChar;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n // Check for surrogate pairs (reference Unicode 3.0 section \"3.7 Surrogates\").\n if (char >= 0xD800 && char <= 0xDBFF/* high surrogate */) {\n nextChar = string.charCodeAt(i + 1);\n if (nextChar >= 0xDC00 && nextChar <= 0xDFFF/* low surrogate */) {\n // Combine the surrogate pair and store it escaped.\n result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000);\n // Advance index one extra since we already used that char here.\n i++; continue;\n }\n }\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (index !== 0) pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n var arrayLevel = (state.noArrayIndent && (level > 0)) ? level - 1 : level;\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, arrayLevel, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, arrayLevel, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","abstract class SyntaxError extends Error {\n private _name: string;\n private _message: string;\n\n constructor(name: string, message: string) {\n super(message);\n this._name = name;\n this._message = message;\n }\n\n public toString(): string {\n return `${this._name}: ${this._message}`;\n }\n\n public get type(): string {\n return this._name;\n }\n}\n\nexport class InvalidInstructionError extends SyntaxError {\n constructor(message: string) {\n super('InvalidInstructionError', message);\n }\n}\n\nexport class InvalidArgumentError extends SyntaxError {\n constructor(message: string) {\n super('InvalidArgumentError', message);\n }\n}\n","import { load as yamlToJson } from 'js-yaml';\n\nimport {\n ITreeSnapshotInput,\n generateFromSnapshot,\n generateSnapshot,\n resetSyntaxTree,\n getSpecificationSnapshot,\n} from '@sugarlabs/musicblocks-v4-lib';\n\n/** @todo these should be exposed */\nimport {\n TElementType,\n IElementSpecificationSnapshot,\n} from '@sugarlabs/musicblocks-v4-lib/@types/specification';\n/** @todo these should be exposed */\nimport {\n ITreeSnapshotDataInput,\n ITreeSnapshotExpressionInput,\n ITreeSnapshotStatementInput,\n ITreeSnapshotBlockInput,\n} from '@sugarlabs/musicblocks-v4-lib/@types/syntaxTree';\n/** @todo these should not be required */\nimport {\n addInstance,\n getInstance,\n removeInstance,\n} from '@sugarlabs/musicblocks-v4-lib/syntax/warehouse/warehouse';\n\nimport { ICodeArgumentObj, ICodeArgument, ICodeInstruction } from '../@types';\n\nimport { InvalidArgumentError, InvalidInstructionError } from './errors';\n\n// -- private variables ----------------------------------------------------------------------------\n\ninterface IElementSpecificationSnapshotWithArgs extends IElementSpecificationSnapshot {\n args: [string, string[]][] | null;\n}\n\n/**\n * Snapshot entry table object with key-value pairs of element name and corresponding element\n * specification snapshot.\n */\nlet _specificationSnapshot: {\n [name: string]: IElementSpecificationSnapshotWithArgs;\n};\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Generates the API for the loaded specification.\n * @returns list of valid instruction signatures\n */\nexport function generateAPI(): string {\n _specificationSnapshot = Object.fromEntries(\n Object.entries(getSpecificationSnapshot()).map(([elementName, specification]) => [\n elementName,\n { ...specification, args: null },\n ]),\n );\n\n /**\n * @todo args should be part of the supplied specification snapshot\n * Add args to the specification.\n */\n\n Object.entries(_specificationSnapshot).forEach(([elementName, _]) => {\n const instanceID = addInstance(elementName);\n const instance = getInstance(instanceID)!.instance;\n\n _specificationSnapshot[elementName]['args'] =\n instance.argLabels.length === 0\n ? null\n : (instance.argLabels.map((arg) => [arg, instance.getArgType(arg)]) as [\n string,\n string[],\n ][]);\n\n removeInstance(instanceID);\n });\n\n /**\n * Group syntax elements by categories.\n */\n\n const items: {\n [key: string]: [string, TElementType, [string, string[]][] | null][];\n } = {};\n\n Object.entries(_specificationSnapshot).forEach(([elementName, specification]) => {\n const category = specification.category;\n\n if (!(category in items)) {\n items[category] = [];\n }\n\n items[category].push([elementName, specification.type, specification.args]);\n });\n\n /**\n * Generate API.\n */\n\n const api: string[] = [];\n\n Object.entries(items).forEach(([category, elements]) => {\n api.push(`# \"${category}\" elements\\n# ------------------------`);\n elements.forEach(([name, type, args]) => {\n if (type === 'Data') {\n api.push(`- [instruction]:\\n [param]:\\n ${name}: string`);\n } else if (type === 'Expression') {\n if (args === null) {\n // not possible\n } else if (args.length === 1) {\n api.push(\n `- [instruction]:\\n ${name}:\\n${args\n .map(([name, types]) => ` ${name}: ${types.join('|')}`)\n .join('\\n')}`,\n );\n } else {\n api.push(\n `- [instruction]:\\n [param]:\\n ${name}:\\n${args\n .map(([name, types]) => ` ${name}: ${types.join('|')}`)\n .join('\\n')}`,\n );\n }\n } else if (type === 'Statement') {\n if (args === null) {\n api.push(`- ${name}`);\n } else if (args.length === 1) {\n api.push(`- ${name}: ${args[0][1].join('|')}`);\n } else {\n api.push(\n `- ${name}:\\n${args\n .map(([name, types]) => ` ${name}: ${types.join('|')}`)\n .join('\\n')}`,\n );\n }\n } else if (type === 'Block') {\n if (args === null) {\n api.push(`- ${name}:\\n scope:\\n - [instruction]\\n - ...`);\n } else {\n api.push(\n `- ${name}:\\n${args\n .map(([name, types]) => ` ${name}: ${types.join('|')}`)\n .join('\\n')}\\n scope:\\n - [instruction]\\n - ...`,\n );\n }\n }\n });\n api.push('\\n');\n });\n\n return api.join('\\n');\n}\n\n/**\n * Validates code, transpiles it, and generates the Syntax Tree in the Programming Engine.\n * @param code editor's code\n * @returns a `Promise` that returns whether the process was successful\n */\nexport function buildProgram(code: string): Promise {\n let instructions: ICodeInstruction[];\n\n function __verifyStructureValidity(): boolean {\n try {\n instructions = yamlToJson(code) as ICodeInstruction[];\n return instructions instanceof Array;\n } catch (e) {\n const _err = e as {\n mark: {\n buffer: string;\n column: number;\n line: number;\n name: string | null;\n position: number;\n };\n message: string;\n name: string;\n reason: string;\n };\n console.log({\n mark: _err.mark,\n message: _err.message,\n name: _err.name,\n reason: _err.reason,\n });\n return false;\n }\n }\n\n function __transpile(): void {\n function __findSingleArgParam(instruction: string): string {\n const args = _specificationSnapshot[instruction].args;\n if (args === null) {\n throw new InvalidArgumentError(`\"${instruction}\" does not take arguments`);\n } else if (args.length !== 1) {\n throw new InvalidArgumentError(\n `\"${instruction}\" takes ${args.length} arguments but only 1 argument supplied`,\n );\n }\n\n return args[0][0];\n }\n\n function __verifyArgParams(instruction: string, argObj: ICodeArgument): void {\n const args = _specificationSnapshot[instruction].args;\n\n if (args === null) {\n throw new InvalidArgumentError(`\"${instruction}\" does not take arguments`);\n }\n\n const isBlock = _specificationSnapshot[instruction].type === 'Block';\n\n const exptParams = args.map(([param, _]) => param);\n const origParams = Object.keys(argObj);\n\n if (isBlock) {\n if (!origParams.includes('scope')) {\n throw new InvalidInstructionError(`\"${instruction}\" expects a scope`);\n }\n\n if (!((argObj as ICodeArgumentObj)['scope'] instanceof Array)) {\n throw new InvalidInstructionError(\n `\"${instruction}\" supplied with invalid scope`,\n );\n }\n\n exptParams.push('scope');\n }\n\n if (exptParams.length !== origParams.length) {\n throw new InvalidArgumentError(\n `invalid number of arguments supplied for \"${instruction}\"`,\n );\n }\n\n if (exptParams.filter((param) => !origParams.includes(param)).length !== 0) {\n throw new InvalidArgumentError(`invalid arguments supplied for \"${instruction}\"`);\n }\n }\n\n function __buildInputSnapshotArgument(\n instruction: string,\n param: string,\n codeArgument: ICodeArgument,\n ): ITreeSnapshotDataInput | ITreeSnapshotExpressionInput {\n // code argument is a literal\n if (typeof codeArgument !== 'object') {\n return {\n elementName:\n typeof codeArgument === 'boolean'\n ? 'value-boolean'\n : typeof codeArgument === 'number'\n ? 'value-number'\n : 'value-string',\n value: codeArgument.toString(),\n };\n }\n\n if (Object.keys(codeArgument).length !== 1) {\n throw new InvalidArgumentError(\n `invalid argument for parameter \"${param}\" of \"${instruction}\"`,\n );\n }\n\n // there's only one arg element\n const [argElem, args] = Object.entries(codeArgument)[0];\n\n // single arg but supplied as key-value pair\n if (param === argElem) {\n return __buildInputSnapshotArgument(instruction, param, args);\n }\n\n if (!(argElem in _specificationSnapshot)) {\n throw new InvalidInstructionError(\n `\"${argElem}\" is not a valid argument for \"${argElem}\"`,\n );\n }\n\n const specification = _specificationSnapshot[argElem];\n if (specification.type === 'Data') {\n if (typeof args === 'string') {\n return {\n elementName: argElem,\n value: args,\n };\n }\n\n throw new InvalidArgumentError(`invalid argument for 'Data' element \"${argElem}\"`);\n } else if (specification.type === 'Expression') {\n const treeSnapshotInputArgument: ITreeSnapshotExpressionInput = {\n elementName: '',\n argMap: null,\n };\n\n treeSnapshotInputArgument.elementName = argElem;\n\n // single arg\n if (typeof args !== 'object' || Object.keys(args).length === 1) {\n // can throw error\n const param = __findSingleArgParam(argElem);\n\n treeSnapshotInputArgument.argMap = Object.fromEntries([\n [param, __buildInputSnapshotArgument(argElem, param, args)],\n ]);\n }\n // multiple args\n else {\n // can throw error\n __verifyArgParams(argElem, args);\n\n treeSnapshotInputArgument.argMap = Object.fromEntries(\n Object.entries(args).map(([param, arg]) => [\n param,\n __buildInputSnapshotArgument(argElem, param, arg),\n ]),\n );\n }\n\n return treeSnapshotInputArgument;\n } else {\n throw new InvalidArgumentError(\n `\"${argElem}\" is not a 'Data' or 'Expression' element`,\n );\n }\n }\n\n function __buildInputSnapshotInstruction(\n codeInstruction: ICodeInstruction,\n ): ITreeSnapshotStatementInput | ITreeSnapshotBlockInput {\n // code instruction is a string\n if (typeof codeInstruction === 'string') {\n if (!(codeInstruction in _specificationSnapshot)) {\n throw new InvalidInstructionError(\n `\"${codeInstruction}\" is not a valid instruction`,\n );\n }\n\n return {\n elementName: codeInstruction,\n argMap: null,\n };\n }\n // code instruction is an object\n else {\n if (Object.keys(codeInstruction).length !== 1) {\n throw new InvalidInstructionError('wrong instruction format encountered');\n }\n\n // there's only one instruction\n const [instruction, args] = Object.entries(codeInstruction)[0];\n\n if (!(instruction in _specificationSnapshot)) {\n throw new InvalidInstructionError(\n `\"${codeInstruction}\" is not a valid instruction`,\n );\n }\n\n const treeSnapshotInputInstruction:\n | ITreeSnapshotStatementInput\n | ITreeSnapshotBlockInput = {\n elementName: '',\n argMap: null,\n };\n\n treeSnapshotInputInstruction.elementName = instruction;\n\n // single arg\n if (typeof args !== 'object' || Object.keys(args).length === 1) {\n // can throw error\n const param = __findSingleArgParam(instruction);\n\n treeSnapshotInputInstruction.argMap = Object.fromEntries([\n [param, __buildInputSnapshotArgument(instruction, param, args)],\n ]);\n }\n // multiple args\n else {\n // can throw error\n __verifyArgParams(instruction, args);\n\n treeSnapshotInputInstruction.argMap = Object.fromEntries(\n Object.entries(args)\n .filter(([param, _]) => param !== 'scope')\n .map(([param, arg]) => [\n param,\n __buildInputSnapshotArgument(instruction, param, arg),\n ]),\n );\n\n if ('scope' in args) {\n (treeSnapshotInputInstruction as ITreeSnapshotBlockInput).scope = (\n args['scope'] as unknown as ICodeInstruction[]\n ).map((item) => __buildInputSnapshotInstruction(item));\n }\n }\n\n return treeSnapshotInputInstruction;\n }\n }\n\n const snapshot: ITreeSnapshotInput = {\n process: [],\n routine: [],\n crumbs: [\n (instructions as ICodeInstruction[]).map((instruction) =>\n __buildInputSnapshotInstruction(instruction),\n ),\n ],\n };\n\n generateFromSnapshot(snapshot);\n }\n\n return new Promise((resolve) => {\n if (__verifyStructureValidity() === false) {\n resolve(false);\n } else {\n const snapshot = generateSnapshot();\n try {\n __transpile();\n resolve(true);\n } catch (e) {\n console.log(e);\n generateFromSnapshot(snapshot);\n resolve(false);\n }\n }\n });\n}\n\n/**\n * Resets the program — generates an empty Syntax Tree.\n */\nexport function resetProgram(): void {\n resetSyntaxTree();\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { injected } from '../..';\n\n// -- stylesheet -----------------------------------------------------------------------------------\n\nimport './index.scss';\n\n// -- private variables ----------------------------------------------------------------------------\n\nlet _editor: HTMLDivElement;\nlet _codeBox: HTMLTextAreaElement;\nlet _btnHelp: HTMLButtonElement;\nlet _status: HTMLParagraphElement;\nlet _btnBuild: HTMLButtonElement;\nlet _btnClose: HTMLButtonElement;\nlet _helpBox: HTMLTextAreaElement;\n\nlet _mountedCallback: CallableFunction;\n\n// -- component definition -------------------------------------------------------------------------\n\n/**\n * Editor component.\n * @returns root JSX element of the Editor component\n */\nfunction Editor(): JSX.Element {\n const codeBoxRef = useRef(null);\n const btnHelpRef = useRef(null);\n const statusRef = useRef(null);\n const btnBuildRef = useRef(null);\n const btnCloseRef = useRef(null);\n const helpBoxRef = useRef(null);\n\n const [showingHelp, setShowingHelp] = useState(false);\n\n useEffect(() => {\n _codeBox = codeBoxRef.current!;\n _btnHelp = btnHelpRef.current!;\n _status = statusRef.current!;\n _btnBuild = btnBuildRef.current!;\n _btnClose = btnCloseRef.current!;\n _helpBox = helpBoxRef.current!;\n\n _mountedCallback();\n\n _editor.addEventListener('resetstates', () => {\n setShowingHelp(false);\n });\n\n (\n [\n ['image.icon.help', _btnHelp],\n ['image.icon.build', _btnBuild],\n ['image.icon.close', _btnClose],\n ] as [string, HTMLButtonElement][]\n ).forEach(([assetId, button]) => {\n // @ts-ignore\n button.innerHTML = injected.assets[assetId].data;\n });\n }, []);\n\n return (\n <>\n

\n (_status.innerHTML = '')}\n >\n
\n setShowingHelp(true)}\n >\n
\n

\n
\n \n _editor.dispatchEvent(\n new CustomEvent('buildprogram', {\n detail: _codeBox.value,\n }),\n )\n }\n >\n
\n
\n
\n \n setShowingHelp(false)}\n >\n
\n \n );\n}\n\n/**\n * Mounts the React component inside the DOM container.\n * @param container DOM container\n * @returns a `Promise` of an object containing the DOM artboard and interactor elements\n */\nexport function setup(container: HTMLElement): Promise {\n return new Promise((resolve) => {\n _editor = container as HTMLDivElement;\n _editor.id = 'editor';\n\n const rootContainer = createRoot(container);\n rootContainer.render();\n\n _mountedCallback = () => requestAnimationFrame(() => resolve());\n });\n}\n\n/**\n * Sets the text code content of the codebox.\n * @param text text code content\n */\nexport function setCode(text: string): void {\n _codeBox.value = text;\n}\n\n/**\n * Sets the text content of the status box.\n * @param text text content\n */\nexport function setStatus(text: string): void {\n _status.innerHTML = text;\n}\n\n/**\n * Sets the text content of the help box.\n * @param text text content\n */\nexport function setHelp(text: string): void {\n _helpBox.innerHTML = text;\n}\n\n/**\n * Resets the component states.\n */\nexport function resetStates(): void {\n _editor.dispatchEvent(new Event('resetstates'));\n}\n","import { injected } from '../../..';\n\n// -- stylesheet -----------------------------------------------------------------------------------\n\nimport './index.scss';\n\n// -- private variables ----------------------------------------------------------------------------\n\nlet _container: HTMLElement;\nlet _svgCode: string;\nlet _svgClose: string;\n\n// -- component definition -------------------------------------------------------------------------\n\n/**\n * Loads the SVG icons for the editor's toolbar button.\n * @param container DOM element of the editor's toolbar button\n */\nexport function setup(container: HTMLElement): void {\n container.id = 'editor-toolbar-btn';\n _container = container;\n\n _svgCode = injected.assets['image.icon.code'].data;\n _svgClose = injected.assets['image.icon.close'].data;\n\n setButtonImg('code');\n}\n\n/**\n * Sets the SVG icon for the editor's toolbar button.\n * @param icon icon name\n */\nexport function setButtonImg(icon: 'code' | 'cross'): void {\n _container.innerHTML = icon === 'code' ? _svgCode : _svgClose;\n}\n","import { createItem } from '@sugarlabs/mb4-view';\nimport { buildProgram } from '../core';\n\nimport { setStatus, setup as setupComponent } from './components';\nimport { setButtonImg, setup as setupButton } from './components/button';\n\n// -- private variables ----------------------------------------------------------------------------\n\nlet _editor: HTMLDivElement;\nlet _editorToolbarBtn: HTMLElement;\n\n// -- private functions ----------------------------------------------------------------------------\n\n/**\n * Creates the DOM of the editor.\n */\nfunction _createEditor(): Promise {\n return new Promise((resolve) => {\n _editor = document.createElement('div');\n\n setupComponent(_editor).then(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n _editor.addEventListener('buildprogram', function (e: CustomEvent) {\n buildProgram(e.detail).then((response) =>\n setStatus(response ? 'Successfully Built' : 'Invalid Code'),\n );\n });\n\n resolve();\n });\n });\n}\n\n/**\n * Creates the DOM of the editor's toolbar button.\n */\nfunction _createToolbarButton(): Promise {\n return new Promise((resolve) => {\n _editorToolbarBtn = createItem({\n location: 'toolbar',\n type: 'button',\n position: 'cluster-a',\n });\n setupButton(_editorToolbarBtn);\n requestAnimationFrame(() => resolve());\n });\n}\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Sets up the DOM elements.\n */\nexport function setup(): Promise {\n return new Promise((resolve) => {\n (async () => {\n await _createEditor();\n await _createToolbarButton();\n resolve();\n })();\n });\n}\n\n/**\n * Returns the individual DOM components.\n * @param element toolbar button or editor\n * @returns queried DOM component\n */\nexport function getElement(element: 'button' | 'editor'): HTMLElement {\n return element === 'button' ? _editorToolbarBtn : _editor;\n}\n\n/**\n * Sets the icon for the editor's toolbar button based on whether it is clicked or not.\n * @param state `clicked` or `unclicked`\n */\nexport function setButtonState(state: 'clicked' | 'unclicked'): void {\n setButtonImg(state === 'clicked' ? 'cross' : 'code');\n}\n\nexport { setCode, setHelp, setStatus, resetStates } from './components';\n","import type { TInjectedEditor } from '#/@types/components/editor';\n\nimport { setToolbarExtended, unsetToolbarExtended } from '@sugarlabs/mb4-view';\nimport { hearEvent } from '@sugarlabs/mb4-events';\n\nimport {\n getElement,\n resetStates,\n setButtonState,\n setCode,\n setHelp,\n setStatus,\n setup as setupView,\n} from './view';\nimport { generateAPI, resetProgram } from './core';\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Mounts the UI components.\n */\nexport async function mount(): Promise {\n return new Promise((resolve) => {\n (async () => {\n await setupView();\n resolve();\n })();\n });\n}\n\n/**\n * Initializes the component.\n */\nexport async function setup(): Promise {\n hearEvent('menu.reset', () => {\n setStatus('');\n resetProgram();\n });\n\n setCode(`- clear\n\n# -------------\n# first hexagon\n# -------------\n\n- set-thickness: 4\n- set-color: 5\n- repeat:\n times:\n operator-math-plus:\n operand1: 4\n operand2: 2\n scope:\n - move-forward: 100\n - turn-right: 60\n\n# --------------\n# second hexagon\n# --------------\n\n- set-color: 9\n- repeat:\n times: 6\n scope:\n - move-forward: 100\n - turn-left: 60`);\n\n setCode(`- box-number:\n name: \"a\"\n value: 0\n- box-number:\n name: \"b\"\n value: 1\n- box-number:\n name: \"c\"\n value: 0\n- set-thickness:\n value:\n 4\n- repeat:\n times: 10\n scope:\n - print:\n boxidentifier-number: \"a\"\n - set-color:\n boxidentifier-number: \"b\"\n - repeat:\n times: 6\n scope:\n - move-forward:\n operator-math-times:\n operand1:\n boxidentifier-number: \"a\"\n operand2: 8\n - turn-left: 90\n - box-number:\n name: \"c\"\n value:\n operator-math-plus:\n operand1:\n boxidentifier-number: \"a\"\n operand2:\n boxidentifier-number: \"b\"\n - box-number:\n name: \"a\"\n value:\n boxidentifier-number: \"b\"\n - box-number:\n name: \"b\"\n value:\n boxidentifier-number: \"c\"`);\n\n setHelp(generateAPI());\n\n const btn = getElement('button');\n\n let state: 'initial' | 'float' | 'pinned' = 'initial';\n\n const setState = (_state: 'initial' | 'float' | 'pinned') => {\n if (_state === 'initial') {\n unsetToolbarExtended();\n resetStates();\n } else {\n const toolbarContent = setToolbarExtended('Editor', _state, {\n pin: () => setState('pinned'),\n unpin: () => setState('float'),\n });\n const editor = getElement('editor');\n toolbarContent.appendChild(editor);\n }\n state = _state;\n };\n\n btn.addEventListener('click', () => {\n if (state === 'initial') {\n setButtonState('clicked');\n setState('float');\n } else {\n setButtonState('unclicked');\n setState('initial');\n }\n });\n}\n\n// -- public variables -----------------------------------------------------------------------------\n\nexport const injected: TInjectedEditor = {\n // @ts-ignore\n flags: undefined,\n // @ts-ignore\n i18n: undefined,\n // @ts-ignore\n assets: undefined,\n};\n"],"names":["isNothing","subject","isObject","toArray","sequence","extend","target","source","index","length","key","sourceKeys","repeat","string","count","result","cycle","isNegativeZero","number","common","YAMLException","reason","mark","compact","exception","require$$0","Mark","name","buffer","position","line","column","indent","maxLength","head","start","tail","end","snippet","where","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","style","alias","Type","tag","options","data","type","require$$1","require$$2","compileList","schema","exclude","includedSchema","currentType","previousType","previousIndex","compileMap","collectType","Schema","definition","schemas","types","str","seq","failsafe","require$$3","resolveYamlNull","max","constructYamlNull","isNull","object","_null","resolveYamlBoolean","constructYamlBoolean","isBoolean","bool","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","hasDigits","ch","constructYamlInteger","value","sign","base","digits","v","d","isInteger","int","obj","YAML_FLOAT_PATTERN","resolveYamlFloat","constructYamlFloat","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","res","isFloat","float","json","require$$4","require$$5","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","constructYamlTimestamp","match","year","month","day","hour","minute","second","fraction","delta","tz_hour","tz_minute","date","representYamlTimestamp","timestamp","resolveYamlMerge","merge","NodeBuffer","_require","require","BASE64_MAP","resolveYamlBinary","code","idx","bitlen","constructYamlBinary","tailbits","input","bits","representYamlBinary","isBinary","binary","_hasOwnProperty","_toString","resolveYamlOmap","objectKeys","pair","pairKey","pairHasKey","constructYamlOmap","omap","resolveYamlPairs","keys","constructYamlPairs","pairs","resolveYamlSet","constructYamlSet","set","default_safe","require$$6","require$$7","resolveJavascriptUndefined","constructJavascriptUndefined","representJavascriptUndefined","isUndefined","_undefined","resolveJavascriptRegExp","regexp","modifiers","constructJavascriptRegExp","representJavascriptRegExp","isRegExp","esprima","resolveJavascriptFunction","ast","constructJavascriptFunction","params","body","param","representJavascriptFunction","isFunction","_function","default_full","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","simpleEscapeCheck","simpleEscapeMap","i","State","generateError","state","message","throwError","throwWarning","directiveHandlers","args","major","minor","handle","prefix","captureSegment","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","readFlowCollection","readNext","_tag","_anchor","terminator","isPair","isExplicitPair","isMapping","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_pos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","tagName","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","typeIndex","typeQuantity","blockIndent","readDocument","documentStart","directiveName","directiveArgs","hasDirectives","loadDocuments","nullpos","loadAll","iterator","documents","load","safeLoadAll","safeLoad","loader","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","compileStyleMap","encodeHex","character","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","isWhitespace","isPrintable","isNsChar","isPlainSafe","prev","isPlainSafeFirst","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","lineWidth","testAmbiguousType","char","prev_char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","lineRe","nextLF","foldLine","prevMoreIndented","moreIndented","breakRe","curr","nextChar","escapeSeq","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKeyList","objectKey","objectValue","pairBuffer","writeBlockMapping","explicitPair","detectType","explicit","typeList","block","objectOrArray","duplicateIndex","duplicate","arrayLevel","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","dump","safeDump","dumper","deprecated","jsYaml","require$$8","require$$9","yaml","SyntaxError","InvalidInstructionError","InvalidArgumentError","_specificationSnapshot","generateAPI","getSpecificationSnapshot","elementName","specification","_","instanceID","addInstance","instance","getInstance","arg","removeInstance","items","category","api","elements","buildProgram","instructions","__verifyStructureValidity","yamlToJson","e","_err","__transpile","__findSingleArgParam","instruction","__verifyArgParams","argObj","isBlock","exptParams","origParams","__buildInputSnapshotArgument","codeArgument","argElem","treeSnapshotInputArgument","__buildInputSnapshotInstruction","codeInstruction","treeSnapshotInputInstruction","item","snapshot","generateFromSnapshot","resolve","generateSnapshot","resetProgram","resetSyntaxTree","_editor","_codeBox","_btnHelp","_status","_btnBuild","_btnClose","_helpBox","_mountedCallback","Editor","codeBoxRef","useRef","btnHelpRef","statusRef","btnBuildRef","btnCloseRef","helpBoxRef","showingHelp","setShowingHelp","useState","useEffect","assetId","button","injected","jsxs","Fragment","jsx","setup","container","createRoot","setCode","text","setStatus","setHelp","resetStates","_container","_svgCode","_svgClose","setButtonImg","icon","_editorToolbarBtn","_createEditor","setupComponent","response","_createToolbarButton","createItem","setupButton","getElement","element","setButtonState","mount","setupView","hearEvent","btn","setState","_state","unsetToolbarExtended","toolbarContent","setToolbarExtended","editor"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]} \ No newline at end of file diff --git a/assets/module.menu-9b2a1c75.js b/assets/module.menu-9b2a1c75.js new file mode 100644 index 00000000..7784f78f --- /dev/null +++ b/assets/module.menu-9b2a1c75.js @@ -0,0 +1,2 @@ +import{m}from"./index-4245e63e.js";import{e as d}from"./index-97cad2bf.js";import{c as g}from"./index-35b52911.js";import{c as N,j as e,a as t,F as b}from"./index-b95677c8.js";import{S as a}from"./index-096c861c.js";function f(n){return t(b,{children:[t(b,{children:[t("label",{className:`menu-btn ${n.injected.flags.uploadFile?"":"menu-btn-hidden"}`,children:[e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.uploadFile"]})}),e("input",{type:"file",className:"menu-btn-input",multiple:!0})]}),t("button",{className:`menu-btn ${n.injected.flags.recording?"":"menu-btn-hidden"}`,children:[e("p",{className:"menu-btn-label",children:e("span",{children:"Start animation Recording"})}),e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.startRecording"]})})]}),t("button",{className:`menu-btn ${n.injected.flags.recording?"":"menu-btn-hidden"}`,children:[e("p",{className:"menu-btn-label",children:e("span",{children:"Stop animation Recording"})}),e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.stopRecording"]})})]}),t("button",{className:`menu-btn ${n.injected.flags.exportDrawing?"":"menu-btn-hidden"}`,children:[e("p",{className:"menu-btn-label",children:e("span",{children:"Save mouse artwork as PNG"})}),e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.exportDrawing"]})})]}),t("label",{className:`menu-btn ${n.injected.flags.loadProject?"":"menu-btn-hidden"}`,children:[e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.loadProject"]})}),e("input",{type:"file",className:"menu-btn-input",accept:"text/html"})]}),t("button",{className:`menu-btn ${n.injected.flags.saveProject?"":"menu-btn-hidden"}`,children:[e("p",{className:"menu-btn-label",children:e("span",{children:"Save Project as HTML"})}),e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.saveProjectHTML"]})})]})]}),t("button",{className:`menu-btn ${n.states.running?"menu-btn-hidden":""}`,onClick:()=>n.handlers.run?n.handlers.run():void 0,children:[e("p",{className:"menu-btn-label",children:e("span",{children:n.injected.i18n["menu.run"]})}),e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.run"]})})]}),t("button",{className:`menu-btn ${n.states.running?"":"menu-btn-hidden"}`,onClick:()=>n.handlers.stop?n.handlers.stop():void 0,children:[e("p",{className:"menu-btn-label",children:e("span",{children:n.injected.i18n["menu.stop"]})}),e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.stop"]})})]}),t("button",{className:"menu-btn",onClick:()=>n.handlers.reset?n.handlers.reset():void 0,children:[e("p",{className:"menu-btn-label",children:e("span",{children:n.injected.i18n["menu.reset"]})}),e("div",{className:"menu-btn-img",children:e(a,{asset:n.injected.assets["image.icon.reset"]})})]})]})}let r;async function o(n,s){return r===void 0&&(r=N(n)),r.render(e(f,{...s})),new Promise(h=>requestAnimationFrame(()=>h()))}let i,c;async function j(){c=g({location:"toolbar",type:"container",position:"cluster-b"}),c.id="menu",i={injected:v,states:{running:!1},handlers:{}},await o(c,{...i})}async function l(n,s){i.states[n]=s,await o(c,{...i})}async function u(n,s){i.handlers[n]=s,await o(c,{...i})}async function P(){await j()}async function S(){await u("run",()=>{m.getCrumbs().length!==0&&m.run(m.getCrumbs()[0].nodeID),l("running",!0),setTimeout(()=>l("running",!1)),d("menu.run")}),await u("stop",()=>{l("running",!1),d("menu.stop")}),await u("reset",()=>{l("running",!1),d("menu.reset")})}const v={flags:void 0,i18n:void 0,assets:void 0};export{v as injected,P as mount,S as setup}; +//# sourceMappingURL=module.menu-9b2a1c75.js.map diff --git a/assets/module.menu-9b2a1c75.js.gz b/assets/module.menu-9b2a1c75.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..080d553f1ddad7723d049449dd0071ce90ade4bf GIT binary patch literal 972 zcmV;-12g;|iwFP!000021J##NZ`(Ey$KU%Y6m}>ifKlwUPGSXWFto@vpbdhidolu) zqRuu`iquHTNg?RFkEATya+@_xlN5WBMc&hu(KbvmaQD-;n+r1oRqy6!4_?6umzH$%1#61i?b&ss? zoQ+2ZhlliN)A_>Lk-ptvd_a#5hSb|lD?tsDBAA9Esuh?@iNJ&zuIZfdT!Ba?U%etu zGT_J#a-#JaDIob&fT(seBZA**5i@ZG)Ic6jIhpCWD!C;2DdTX0P=Y$s-8sv15UBZt z*U=$FIa~B%uN_!1Lu*?I39hXXm}EoJ59kSE1(`w2s1zIe=(35L2wM>*%F0+7^QE*3 zQ#XgdDcRZ;6*sKpkn9Ya$OgfdLRJ|g#oaL|pi<>b%?yoJG%{RRc3OX8Q&4WSD| zlnIEi4E*7K=#){n{Rd~Po#a}_bN(N2lI2rllI6otf*V)iZxy+I5>jLVK_M$`+nX}i zQhj!v<^1fA$3xZIU=P&~wjWpg=SsSQKT6kUTn*?NB}j!x?l zL9WB!PI4uJZcQ_=flsyvo-Eaz*kdN!I(}QX4F?mbW1_zZ8mw-sG89;^?yD+I({}eS zUW6(=vsc*&D;vw+cU1`C6xVSa>&A`>xOVNRU>d@C`dYz16=?H&cLg|Ab{C-|J`ba) z6=#@k%U^|2P19Leb4k6Q?aNZ~j3|WLes1?-2oqojN~u|ELwThQsNKwVKulwnr=AzW zEUh~z$pW|alhn%sN_K_~?oK!i;4={l1umw6#9o;$h2DoQTU*f8VR>ygIQv z`kh-Et&!!jJ$bR3tU}~k33hbrBA$VHqpBj)VH9%^Gc(^wQ+t4g@0`8)$>1^;GKat3 zMwt63jtjy&g9zJn`N#^8mGQ^cn;zN&&%XV z*4QM_CRn7k|L%4L>Z+;x-B!TztvPP5JoUnTDZ7Ng=kCp3y@bL3@0|6h%I5gl-rn;- u%SusrPs-9R\n <>\n \n\n \n\n \n\n \n

\n {'Save mouse artwork as PNG'}\n

\n
\n \n
\n \n\n \n\n \n

\n {'Save Project as HTML'}\n

\n
\n \n
\n \n \n\n {/* -- RUN ----------------------------------------------------------- */}\n (props.handlers.run ? props.handlers.run() : undefined)}\n >\n

\n {props.injected.i18n['menu.run']}\n

\n
\n \n
\n \n\n {/* -- STOP ---------------------------------------------------------- */}\n (props.handlers.stop ? props.handlers.stop() : undefined)}\n >\n

\n {props.injected.i18n['menu.stop']}\n

\n
\n \n
\n \n\n {/* -- RESET --------------------------------------------------------- */}\n (props.handlers.reset ? props.handlers.reset() : undefined)}\n >\n

\n {props.injected.i18n['menu.reset']}\n

\n
\n \n
\n \n \n );\n}\n\n// -- private variables ----------------------------------------------------------------------------\n\nlet _rootContainer: Root;\n\n// -- public functions -----------------------------------------------------------------------------\n\nexport async function renderComponent(container: HTMLElement, props: TPropsMenu): Promise {\n if (_rootContainer === undefined) _rootContainer = createRoot(container);\n _rootContainer.render(
);\n\n return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\n","import type { TPropsMenu } from '#/@types/components/menu';\n\nimport { createItem } from '@sugarlabs/mb4-view';\n\nimport { renderComponent } from './components';\nimport { injected } from '..';\n\n// -- private variables ----------------------------------------------------------------------------\n\nlet _props: TPropsMenu;\nlet _container: HTMLElement;\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Sets up the DOM.\n */\nexport async function mount(): Promise {\n _container = createItem({\n location: 'toolbar',\n type: 'container',\n position: 'cluster-b',\n });\n _container.id = 'menu';\n\n _props = {\n injected,\n states: { running: false },\n handlers: {},\n };\n\n await renderComponent(_container, { ..._props });\n}\n\nexport async function updateState(state: keyof TPropsMenu['states'], value: boolean) {\n _props.states[state] = value;\n await renderComponent(_container, { ..._props });\n}\n\nexport async function updateHandler(\n handler: keyof TPropsMenu['handlers'],\n callback: CallableFunction,\n) {\n _props.handlers[handler] = callback;\n await renderComponent(_container, { ..._props });\n}\n","import type { TInjectedMenu } from '#/@types/components/menu';\n\nimport { getCrumbs, run } from '@sugarlabs/musicblocks-v4-lib';\nimport { emitEvent } from '@sugarlabs/mb4-events';\n\nimport { mount as mountView, updateHandler, updateState } from './view';\n\n// -- public functions -----------------------------------------------------------------------------\n\n/**\n * Mounts the Menu component.\n */\nexport async function mount(): Promise {\n await mountView();\n}\n\n/**\n * Initializes the Menu component.\n */\nexport async function setup(): Promise {\n await updateHandler('run', () => {\n const crumbs = getCrumbs();\n if (crumbs.length !== 0) run(getCrumbs()[0].nodeID);\n updateState('running', true);\n setTimeout(() => updateState('running', false));\n emitEvent('menu.run');\n });\n\n await updateHandler('stop', () => {\n updateState('running', false);\n emitEvent('menu.stop');\n });\n\n await updateHandler('reset', () => {\n updateState('running', false);\n emitEvent('menu.reset');\n });\n}\n\n// -- public variables -----------------------------------------------------------------------------\n\nexport const injected: TInjectedMenu = {\n // @ts-ignore\n flags: undefined,\n // @ts-ignore\n i18n: undefined,\n // @ts-ignore\n assets: undefined,\n};\n"],"names":["Menu","props","jsxs","Fragment","jsx","SImage","_rootContainer","renderComponent","container","createRoot","resolve","_props","_container","mount","createItem","injected","updateState","state","value","updateHandler","handler","callback","mountView","setup","getCrumbs","run","emitEvent"],"mappings":"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"} \ No newline at end of file diff --git a/assets/module.painter-0b477364.js b/assets/module.painter-0b477364.js new file mode 100644 index 00000000..88c222a9 --- /dev/null +++ b/assets/module.painter-0b477364.js @@ -0,0 +1,936 @@ +import{h as or}from"./index-97cad2bf.js";import{m as zt,c as Cr,g as ln}from"./index-4245e63e.js";import{c as un}from"./index-35b52911.js";import{c as cn,j as ur,b as xr,F as dn,a as Co}from"./index-b95677c8.js";import{c as Or}from"./_commonjs-dynamic-modules-302442b1.js";const fn=` {{{Filename}}}

Music Blocks Project - My Project

{{{Project Description}}}


This project was created in Music Blocks (https://musicblocks.sugarlabs.org). Music Blocks is a collection of tools for exploring fundamental musical concepts in a fun way. Music Blocks is a Free/Libre Software application. The source code can be accessed at https://github.com/sugarlabs/musicblocks-v4. For more information, please consult the Music Blocks Guide.

To run this project, open Music Blocks in a web browser and drag and drop this file into the browser window. Alternatively, open the file in Music Blocks using the Load project button.

Project Code

This code stores data about the blocks in a project. Show
{{{Project snapshot}}}
';\n\n/**\n * Exports the project snapshot encapsulated in a .html file\n */\nexport function saveProjectHTML(): void {\n let textToSave = saveProjectTemplate;\n\n let fileName = prompt('Filename:', 'My Project');\n\n if (fileName != null) {\n fileName += '.html';\n\n let projectSnapshot = JSON.stringify(generateSnapshot());\n let projectDescription = prompt('Project Description:', 'Project Description');\n\n if (projectDescription != null) {\n textToSave = textToSave\n .replaceAll('{{{Filename}}}', fileName)\n .replace('{{{Project snapshot}}}', projectSnapshot)\n .replace('{{{Project Description}}}', projectDescription);\n } else {\n textToSave = textToSave\n .replaceAll('{{{Filename}}}', fileName)\n .replace('{{{Project snapshot}}}', projectSnapshot)\n .replace('{{{Project Description}}}', 'No Project Description');\n }\n\n let hiddenElement = document.createElement('a');\n hiddenElement.href = 'data:attachment/text,' + encodeURIComponent(textToSave);\n hiddenElement.target = '_blank';\n hiddenElement.download = fileName;\n hiddenElement.click();\n }\n}\n\n/**\n * Loads the project from .html file\n * @params DOM event (file upload)\n */\nexport function loadProject(event: Event): void {\n const input = event.target;\n if ('files' in input!) {\n readFileContent((input['files'] as Blob[])[0])\n .then((content) => {\n let fileContent = content as string;\n let projectSnapshotStartingIndex = fileContent.indexOf('
') + 18;\n let projectSnapshotEndingIndex = fileContent.indexOf(\n '