]> git.r.bdr.sh - rbdr/canvas/commitdiff
Save WIP main
authorRuben Beltran del Rio <redacted>
Sun, 21 Jan 2024 13:48:35 +0000 (14:48 +0100)
committerRuben Beltran del Rio <redacted>
Sun, 21 Jan 2024 13:48:35 +0000 (14:48 +0100)
19 files changed:
.eslintrc [new file with mode: 0644]
.eslintrc.js [deleted file]
package-lock.json
package.json
src/app.css
src/lib/animations/blink.js
src/lib/components/background.svelte
src/lib/components/hud.svelte
src/lib/components/minimap.svelte
src/lib/components/minimap_sector.svelte [new file with mode: 0644]
src/lib/components/palette.svelte
src/lib/components/sensor.svelte
src/lib/components/widget.svelte
src/lib/math.js
src/lib/plugins/square.js [new file with mode: 0644]
src/lib/stores/canvas.js
src/lib/stores/widgets.js
src/routes/+layout.svelte
src/routes/+page.svelte

diff --git a/.eslintrc b/.eslintrc
new file mode 100644 (file)
index 0000000..4372886
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,15 @@
+{
+       "root": true,
+       "extends": ["eslint:recommended", "prettier"],
+       "plugins": ["svelte3"],
+       "overrides": [{ "files": ["*.svelte"], "processor": "svelte3/svelte3" }],
+       "parserOptions": {
+               "sourceType": "module",
+               "ecmaVersion": 2020
+       },
+       "env": {
+               "browser": true,
+               "es2017": true,
+               "node": true
+       }
+}
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644 (file)
index 0ca10df..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-export default {
-       root: true,
-       extends: ['eslint:recommended', 'prettier'],
-       plugins: ['svelte3'],
-       overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
-       parserOptions: {
-               sourceType: 'module',
-               ecmaVersion: 2020
-       },
-       env: {
-               browser: true,
-               es2017: true,
-               node: true
-       }
-};
index a38ee305c83786b7fd4f472abd5e5168587ccfb5..e5d4dcb0d90be4519f10861d0f12c821eb3d4e6c 100644 (file)
@@ -9,7 +9,7 @@
                        "version": "0.0.1",
                        "devDependencies": {
                                "@supabase/supabase-js": "^2.4.1",
                        "version": "0.0.1",
                        "devDependencies": {
                                "@supabase/supabase-js": "^2.4.1",
-                               "@sveltejs/adapter-auto": "^1.0.2",
+                               "@sveltejs/adapter-auto": "^2.0.0",
                                "@sveltejs/kit": "^1.2.5",
                                "eslint": "^8.28.0",
                                "eslint-config-prettier": "^8.5.0",
                                "@sveltejs/kit": "^1.2.5",
                                "eslint": "^8.28.0",
                                "eslint-config-prettier": "^8.5.0",
                                "prettier-plugin-svelte": "^2.8.1",
                                "svelte": "^3.54.0",
                                "svelte-check": "^3.0.2",
                                "prettier-plugin-svelte": "^2.8.1",
                                "svelte": "^3.54.0",
                                "svelte-check": "^3.0.2",
-                               "typescript": "^4.9.3",
                                "vite": "^4.0.0"
                        }
                },
                                "vite": "^4.0.0"
                        }
                },
+               "node_modules/@aashutoshrathi/word-wrap": {
+                       "version": "1.2.6",
+                       "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+                       "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+                       "dev": true,
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
                "node_modules/@esbuild/android-arm": {
                "node_modules/@esbuild/android-arm": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
-                       "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz",
+                       "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==",
                        "cpu": [
                                "arm"
                        ],
                        "cpu": [
                                "arm"
                        ],
@@ -39,9 +47,9 @@
                        }
                },
                "node_modules/@esbuild/android-arm64": {
                        }
                },
                "node_modules/@esbuild/android-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
-                       "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz",
+                       "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==",
                        "cpu": [
                                "arm64"
                        ],
                        "cpu": [
                                "arm64"
                        ],
@@ -55,9 +63,9 @@
                        }
                },
                "node_modules/@esbuild/android-x64": {
                        }
                },
                "node_modules/@esbuild/android-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
-                       "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz",
+                       "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
@@ -71,9 +79,9 @@
                        }
                },
                "node_modules/@esbuild/darwin-arm64": {
                        }
                },
                "node_modules/@esbuild/darwin-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
-                       "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz",
+                       "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==",
                        "cpu": [
                                "arm64"
                        ],
                        "cpu": [
                                "arm64"
                        ],
@@ -87,9 +95,9 @@
                        }
                },
                "node_modules/@esbuild/darwin-x64": {
                        }
                },
                "node_modules/@esbuild/darwin-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
-                       "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz",
+                       "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
                        }
                },
                "node_modules/@esbuild/freebsd-arm64": {
                        }
                },
                "node_modules/@esbuild/freebsd-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
-                       "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz",
+                       "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==",
                        "cpu": [
                                "arm64"
                        ],
                        "cpu": [
                                "arm64"
                        ],
                        }
                },
                "node_modules/@esbuild/freebsd-x64": {
                        }
                },
                "node_modules/@esbuild/freebsd-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
-                       "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz",
+                       "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-arm": {
                        }
                },
                "node_modules/@esbuild/linux-arm": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
-                       "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz",
+                       "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==",
                        "cpu": [
                                "arm"
                        ],
                        "cpu": [
                                "arm"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-arm64": {
                        }
                },
                "node_modules/@esbuild/linux-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
-                       "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz",
+                       "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==",
                        "cpu": [
                                "arm64"
                        ],
                        "cpu": [
                                "arm64"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-ia32": {
                        }
                },
                "node_modules/@esbuild/linux-ia32": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
-                       "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz",
+                       "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==",
                        "cpu": [
                                "ia32"
                        ],
                        "cpu": [
                                "ia32"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-loong64": {
                        }
                },
                "node_modules/@esbuild/linux-loong64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
-                       "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz",
+                       "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==",
                        "cpu": [
                                "loong64"
                        ],
                        "cpu": [
                                "loong64"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-mips64el": {
                        }
                },
                "node_modules/@esbuild/linux-mips64el": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
-                       "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz",
+                       "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==",
                        "cpu": [
                                "mips64el"
                        ],
                        "cpu": [
                                "mips64el"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-ppc64": {
                        }
                },
                "node_modules/@esbuild/linux-ppc64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
-                       "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz",
+                       "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==",
                        "cpu": [
                                "ppc64"
                        ],
                        "cpu": [
                                "ppc64"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-riscv64": {
                        }
                },
                "node_modules/@esbuild/linux-riscv64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
-                       "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz",
+                       "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==",
                        "cpu": [
                                "riscv64"
                        ],
                        "cpu": [
                                "riscv64"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-s390x": {
                        }
                },
                "node_modules/@esbuild/linux-s390x": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
-                       "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz",
+                       "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==",
                        "cpu": [
                                "s390x"
                        ],
                        "cpu": [
                                "s390x"
                        ],
                        }
                },
                "node_modules/@esbuild/linux-x64": {
                        }
                },
                "node_modules/@esbuild/linux-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
-                       "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz",
+                       "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
                        }
                },
                "node_modules/@esbuild/netbsd-x64": {
                        }
                },
                "node_modules/@esbuild/netbsd-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
-                       "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz",
+                       "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
                        }
                },
                "node_modules/@esbuild/openbsd-x64": {
                        }
                },
                "node_modules/@esbuild/openbsd-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
-                       "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz",
+                       "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
                        }
                },
                "node_modules/@esbuild/sunos-x64": {
                        }
                },
                "node_modules/@esbuild/sunos-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
-                       "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz",
+                       "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
                        }
                },
                "node_modules/@esbuild/win32-arm64": {
                        }
                },
                "node_modules/@esbuild/win32-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
-                       "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz",
+                       "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==",
                        "cpu": [
                                "arm64"
                        ],
                        "cpu": [
                                "arm64"
                        ],
                        }
                },
                "node_modules/@esbuild/win32-ia32": {
                        }
                },
                "node_modules/@esbuild/win32-ia32": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
-                       "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz",
+                       "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==",
                        "cpu": [
                                "ia32"
                        ],
                        "cpu": [
                                "ia32"
                        ],
                        }
                },
                "node_modules/@esbuild/win32-x64": {
                        }
                },
                "node_modules/@esbuild/win32-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
-                       "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz",
+                       "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==",
                        "cpu": [
                                "x64"
                        ],
                        "cpu": [
                                "x64"
                        ],
                                "node": ">=12"
                        }
                },
                                "node": ">=12"
                        }
                },
+               "node_modules/@eslint-community/eslint-utils": {
+                       "version": "4.4.0",
+                       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+                       "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+                       "dev": true,
+                       "dependencies": {
+                               "eslint-visitor-keys": "^3.3.0"
+                       },
+                       "engines": {
+                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+                       },
+                       "peerDependencies": {
+                               "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+                       }
+               },
+               "node_modules/@eslint-community/regexpp": {
+                       "version": "4.5.1",
+                       "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+                       "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+                       "dev": true,
+                       "engines": {
+                               "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+                       }
+               },
                "node_modules/@eslint/eslintrc": {
                "node_modules/@eslint/eslintrc": {
-                       "version": "1.4.1",
-                       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
-                       "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz",
+                       "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==",
                        "dev": true,
                        "dependencies": {
                                "ajv": "^6.12.4",
                                "debug": "^4.3.2",
                        "dev": true,
                        "dependencies": {
                                "ajv": "^6.12.4",
                                "debug": "^4.3.2",
-                               "espree": "^9.4.0",
+                               "espree": "^9.6.0",
                                "globals": "^13.19.0",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.2.1",
                                "globals": "^13.19.0",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.2.1",
                                "url": "https://opencollective.com/eslint"
                        }
                },
                                "url": "https://opencollective.com/eslint"
                        }
                },
+               "node_modules/@eslint/js": {
+                       "version": "8.44.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz",
+                       "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
+                       "dev": true,
+                       "engines": {
+                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+                       }
+               },
                "node_modules/@humanwhocodes/config-array": {
                "node_modules/@humanwhocodes/config-array": {
-                       "version": "0.11.8",
-                       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
-                       "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
+                       "version": "0.11.10",
+                       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+                       "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
                        "dev": true,
                        "dependencies": {
                                "@humanwhocodes/object-schema": "^1.2.1",
                        "dev": true,
                        "dependencies": {
                                "@humanwhocodes/object-schema": "^1.2.1",
                        }
                },
                "node_modules/@jridgewell/sourcemap-codec": {
                        }
                },
                "node_modules/@jridgewell/sourcemap-codec": {
-                       "version": "1.4.14",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-                       "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+                       "version": "1.4.15",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+                       "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
                        "dev": true
                },
                "node_modules/@jridgewell/trace-mapping": {
                        "dev": true
                },
                "node_modules/@jridgewell/trace-mapping": {
-                       "version": "0.3.17",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-                       "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+                       "version": "0.3.18",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+                       "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
                        "dev": true,
                        "dependencies": {
                                "@jridgewell/resolve-uri": "3.1.0",
                                "@jridgewell/sourcemap-codec": "1.4.14"
                        }
                },
                        "dev": true,
                        "dependencies": {
                                "@jridgewell/resolve-uri": "3.1.0",
                                "@jridgewell/sourcemap-codec": "1.4.14"
                        }
                },
+               "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+                       "version": "1.4.14",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+                       "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+                       "dev": true
+               },
                "node_modules/@nodelib/fs.scandir": {
                        "version": "2.1.5",
                        "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
                "node_modules/@nodelib/fs.scandir": {
                        "version": "2.1.5",
                        "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
                        "dev": true
                },
                "node_modules/@supabase/functions-js": {
                        "dev": true
                },
                "node_modules/@supabase/functions-js": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz",
-                       "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==",
+                       "version": "2.1.2",
+                       "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz",
+                       "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==",
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/gotrue-js": {
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/gotrue-js": {
-                       "version": "2.10.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.10.0.tgz",
-                       "integrity": "sha512-3k9zg+TN4rJFVbAWoX1KnOpKthb21HxYu87mBG8ccCXSl3fxnFBJNs898+pksj4fw5E6aM/dVtHHHAfV3MwVRQ==",
+                       "version": "2.39.1",
+                       "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.39.1.tgz",
+                       "integrity": "sha512-qRz9mBleA/QATGKOdMAUjpn+YcbZJrTHyWQCe2hAFqJo15JIe1XziD1ZeFraRpsXwja+vONslGeynGv7H8ZZeQ==",
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/postgrest-js": {
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/postgrest-js": {
-                       "version": "1.3.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.3.0.tgz",
-                       "integrity": "sha512-XVX0XaWTyT06mtj67gKb0OasP9hUNIYpypgdKnIqBSib5fXD3aRb6U5rt9y9gG1UMi7pCCgv2qulKRIQlHbb9w==",
+                       "version": "1.7.2",
+                       "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz",
+                       "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==",
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/realtime-js": {
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/realtime-js": {
-                       "version": "2.3.1",
-                       "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.3.1.tgz",
-                       "integrity": "sha512-AX4pzZozVPvHAWfPcKl0UWj19pqwogD9TnCEHq1x/6oQjVoqA3n6H+1Ea2of9MheSroajHguaQMen3xLEoWrug==",
+                       "version": "2.7.3",
+                       "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz",
+                       "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==",
                        "dev": true,
                        "dependencies": {
                                "@types/phoenix": "^1.5.4",
                        "dev": true,
                        "dependencies": {
                                "@types/phoenix": "^1.5.4",
+                               "@types/websocket": "^1.0.3",
                                "websocket": "^1.0.34"
                        }
                },
                "node_modules/@supabase/storage-js": {
                                "websocket": "^1.0.34"
                        }
                },
                "node_modules/@supabase/storage-js": {
-                       "version": "2.3.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.3.0.tgz",
-                       "integrity": "sha512-YGWVCEYYYF3+UiyL8O4xC78N9n9paLbT0hHl8dmYAtd3DqyWtu5Eph9JTu0PWm+/29Zhns5TbhUZW4xpWjJfPQ==",
+                       "version": "2.5.1",
+                       "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz",
+                       "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==",
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/supabase-js": {
                        "dev": true,
                        "dependencies": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@supabase/supabase-js": {
-                       "version": "2.4.1",
-                       "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.4.1.tgz",
-                       "integrity": "sha512-nFePO2yKVip3VI+OyfUOxhv0IyMmZDeieFJS39y84evPOM9zuZomEmkhwnmEWrLFI7hSr+o2QvY4P+q3c2MbGQ==",
+                       "version": "2.26.0",
+                       "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.26.0.tgz",
+                       "integrity": "sha512-RXmTPTobaYAwkSobadHZmEVLmzX3SGrtRZIGfLWnLv92VzBRrjuXn0a+bJqKl50GUzsyqPA+j5pod7EwMkcH5A==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
-                               "@supabase/functions-js": "^2.0.0",
-                               "@supabase/gotrue-js": "^2.7.2",
-                               "@supabase/postgrest-js": "^1.1.1",
-                               "@supabase/realtime-js": "^2.3.1",
-                               "@supabase/storage-js": "^2.1.0",
+                               "@supabase/functions-js": "^2.1.0",
+                               "@supabase/gotrue-js": "^2.31.0",
+                               "@supabase/postgrest-js": "^1.7.0",
+                               "@supabase/realtime-js": "^2.7.3",
+                               "@supabase/storage-js": "^2.5.1",
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@sveltejs/adapter-auto": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "node_modules/@sveltejs/adapter-auto": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.2.tgz",
-                       "integrity": "sha512-UXpEO/gutERZnD+Z5Vi4J/ifD3WSRuCI7xwtLJTcKNQvJ6t5Xsj1X3Mw2F8Vv/XTUuxf7xPLYUgThU331r0Y9w==",
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz",
+                       "integrity": "sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
-                               "import-meta-resolve": "^2.2.0"
+                               "import-meta-resolve": "^3.0.0"
                        },
                        "peerDependencies": {
                                "@sveltejs/kit": "^1.0.0"
                        }
                },
                "node_modules/@sveltejs/kit": {
                        },
                        "peerDependencies": {
                                "@sveltejs/kit": "^1.0.0"
                        }
                },
                "node_modules/@sveltejs/kit": {
-                       "version": "1.2.5",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.2.5.tgz",
-                       "integrity": "sha512-etFW9EDYM03orFn0CHcgRMVwTNXjrwRX9TS8rACnJYQQI/BgNpmNmdCya8l2meY82PPfZaRLM4qzbZ56SZbzYQ==",
+                       "version": "1.22.1",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.1.tgz",
+                       "integrity": "sha512-idFhKVEHuCKbTETvuo3V7UShqSYX9JMKVJXP546dOTkh5ZRejo5XtKtsB5TCSwNBa0TH8hIV44/bnylaFhM1Vg==",
                        "dev": true,
                        "hasInstallScript": true,
                        "dependencies": {
                        "dev": true,
                        "hasInstallScript": true,
                        "dependencies": {
-                               "@sveltejs/vite-plugin-svelte": "^2.0.0",
+                               "@sveltejs/vite-plugin-svelte": "^2.4.1",
                                "@types/cookie": "^0.5.1",
                                "cookie": "^0.5.0",
                                "@types/cookie": "^0.5.1",
                                "cookie": "^0.5.0",
-                               "devalue": "^4.2.2",
+                               "devalue": "^4.3.1",
                                "esm-env": "^1.0.0",
                                "kleur": "^4.1.5",
                                "esm-env": "^1.0.0",
                                "kleur": "^4.1.5",
-                               "magic-string": "^0.27.0",
+                               "magic-string": "^0.30.0",
                                "mime": "^3.0.0",
                                "sade": "^1.8.1",
                                "mime": "^3.0.0",
                                "sade": "^1.8.1",
-                               "set-cookie-parser": "^2.5.1",
+                               "set-cookie-parser": "^2.6.0",
                                "sirv": "^2.0.2",
                                "sirv": "^2.0.2",
-                               "tiny-glob": "^0.2.9",
-                               "undici": "5.16.0"
+                               "undici": "~5.22.0"
                        },
                        "bin": {
                                "svelte-kit": "svelte-kit.js"
                        },
                        "bin": {
                                "svelte-kit": "svelte-kit.js"
                                "node": "^16.14 || >=18"
                        },
                        "peerDependencies": {
                                "node": "^16.14 || >=18"
                        },
                        "peerDependencies": {
-                               "svelte": "^3.54.0",
+                               "svelte": "^3.54.0 || ^4.0.0-next.0",
                                "vite": "^4.0.0"
                        }
                },
                "node_modules/@sveltejs/vite-plugin-svelte": {
                                "vite": "^4.0.0"
                        }
                },
                "node_modules/@sveltejs/vite-plugin-svelte": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz",
-                       "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==",
+                       "version": "2.4.2",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.2.tgz",
+                       "integrity": "sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
+                               "@sveltejs/vite-plugin-svelte-inspector": "^1.0.3",
                                "debug": "^4.3.4",
                                "debug": "^4.3.4",
-                               "deepmerge": "^4.2.2",
+                               "deepmerge": "^4.3.1",
                                "kleur": "^4.1.5",
                                "kleur": "^4.1.5",
-                               "magic-string": "^0.27.0",
-                               "svelte-hmr": "^0.15.1",
-                               "vitefu": "^0.2.3"
+                               "magic-string": "^0.30.0",
+                               "svelte-hmr": "^0.15.2",
+                               "vitefu": "^0.2.4"
                        },
                        "engines": {
                                "node": "^14.18.0 || >= 16"
                        },
                        "peerDependencies": {
                        },
                        "engines": {
                                "node": "^14.18.0 || >= 16"
                        },
                        "peerDependencies": {
-                               "svelte": "^3.54.0",
+                               "svelte": "^3.54.0 || ^4.0.0",
+                               "vite": "^4.0.0"
+                       }
+               },
+               "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
+                       "version": "1.0.3",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz",
+                       "integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==",
+                       "dev": true,
+                       "dependencies": {
+                               "debug": "^4.3.4"
+                       },
+                       "engines": {
+                               "node": "^14.18.0 || >= 16"
+                       },
+                       "peerDependencies": {
+                               "@sveltejs/vite-plugin-svelte": "^2.2.0",
+                               "svelte": "^3.54.0 || ^4.0.0",
                                "vite": "^4.0.0"
                        }
                },
                                "vite": "^4.0.0"
                        }
                },
                        "dev": true
                },
                "node_modules/@types/node": {
                        "dev": true
                },
                "node_modules/@types/node": {
-                       "version": "18.11.18",
-                       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
-                       "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
+                       "version": "20.4.1",
+                       "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz",
+                       "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==",
                        "dev": true
                },
                "node_modules/@types/phoenix": {
                        "dev": true
                },
                "node_modules/@types/phoenix": {
-                       "version": "1.5.4",
-                       "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz",
-                       "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==",
+                       "version": "1.6.0",
+                       "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz",
+                       "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==",
                        "dev": true
                },
                "node_modules/@types/pug": {
                        "dev": true
                },
                "node_modules/@types/pug": {
                        "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
                        "dev": true
                },
                        "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
                        "dev": true
                },
-               "node_modules/@types/sass": {
-                       "version": "1.43.1",
-                       "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz",
-                       "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==",
+               "node_modules/@types/websocket": {
+                       "version": "1.0.5",
+                       "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
+                       "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
                        "dev": true,
                        "dependencies": {
                                "@types/node": "*"
                        }
                },
                "node_modules/acorn": {
                        "dev": true,
                        "dependencies": {
                                "@types/node": "*"
                        }
                },
                "node_modules/acorn": {
-                       "version": "8.8.2",
-                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
-                       "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+                       "version": "8.10.0",
+                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+                       "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
                        "dev": true,
                        "bin": {
                                "acorn": "bin/acorn"
                        "dev": true,
                        "bin": {
                                "acorn": "bin/acorn"
                        }
                },
                "node_modules/cross-fetch": {
                        }
                },
                "node_modules/cross-fetch": {
-                       "version": "3.1.5",
-                       "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
-                       "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+                       "version": "3.1.8",
+                       "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
+                       "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
-                               "node-fetch": "2.6.7"
+                               "node-fetch": "^2.6.12"
                        }
                },
                "node_modules/cross-spawn": {
                        }
                },
                "node_modules/cross-spawn": {
                        "dev": true
                },
                "node_modules/deepmerge": {
                        "dev": true
                },
                "node_modules/deepmerge": {
-                       "version": "4.2.2",
-                       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-                       "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+                       "version": "4.3.1",
+                       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+                       "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
                        "dev": true,
                        "engines": {
                                "node": ">=0.10.0"
                        "dev": true,
                        "engines": {
                                "node": ">=0.10.0"
                        }
                },
                "node_modules/devalue": {
                        }
                },
                "node_modules/devalue": {
-                       "version": "4.2.2",
-                       "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.2.tgz",
-                       "integrity": "sha512-Pkwd8qrI9O20VJ14fBNHu+on99toTNZFbgWRpZbC0zbDXpnE2WHYcrC1fHhMsF/3Ee+2yaW7vEujAT7fCYgqrA==",
+                       "version": "4.3.2",
+                       "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz",
+                       "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==",
                        "dev": true
                },
                "node_modules/doctrine": {
                        "dev": true
                },
                "node_modules/doctrine": {
                        }
                },
                "node_modules/esbuild": {
                        }
                },
                "node_modules/esbuild": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
-                       "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz",
+                       "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==",
                        "dev": true,
                        "hasInstallScript": true,
                        "bin": {
                        "dev": true,
                        "hasInstallScript": true,
                        "bin": {
                                "node": ">=12"
                        },
                        "optionalDependencies": {
                                "node": ">=12"
                        },
                        "optionalDependencies": {
-                               "@esbuild/android-arm": "0.16.17",
-                               "@esbuild/android-arm64": "0.16.17",
-                               "@esbuild/android-x64": "0.16.17",
-                               "@esbuild/darwin-arm64": "0.16.17",
-                               "@esbuild/darwin-x64": "0.16.17",
-                               "@esbuild/freebsd-arm64": "0.16.17",
-                               "@esbuild/freebsd-x64": "0.16.17",
-                               "@esbuild/linux-arm": "0.16.17",
-                               "@esbuild/linux-arm64": "0.16.17",
-                               "@esbuild/linux-ia32": "0.16.17",
-                               "@esbuild/linux-loong64": "0.16.17",
-                               "@esbuild/linux-mips64el": "0.16.17",
-                               "@esbuild/linux-ppc64": "0.16.17",
-                               "@esbuild/linux-riscv64": "0.16.17",
-                               "@esbuild/linux-s390x": "0.16.17",
-                               "@esbuild/linux-x64": "0.16.17",
-                               "@esbuild/netbsd-x64": "0.16.17",
-                               "@esbuild/openbsd-x64": "0.16.17",
-                               "@esbuild/sunos-x64": "0.16.17",
-                               "@esbuild/win32-arm64": "0.16.17",
-                               "@esbuild/win32-ia32": "0.16.17",
-                               "@esbuild/win32-x64": "0.16.17"
+                               "@esbuild/android-arm": "0.18.11",
+                               "@esbuild/android-arm64": "0.18.11",
+                               "@esbuild/android-x64": "0.18.11",
+                               "@esbuild/darwin-arm64": "0.18.11",
+                               "@esbuild/darwin-x64": "0.18.11",
+                               "@esbuild/freebsd-arm64": "0.18.11",
+                               "@esbuild/freebsd-x64": "0.18.11",
+                               "@esbuild/linux-arm": "0.18.11",
+                               "@esbuild/linux-arm64": "0.18.11",
+                               "@esbuild/linux-ia32": "0.18.11",
+                               "@esbuild/linux-loong64": "0.18.11",
+                               "@esbuild/linux-mips64el": "0.18.11",
+                               "@esbuild/linux-ppc64": "0.18.11",
+                               "@esbuild/linux-riscv64": "0.18.11",
+                               "@esbuild/linux-s390x": "0.18.11",
+                               "@esbuild/linux-x64": "0.18.11",
+                               "@esbuild/netbsd-x64": "0.18.11",
+                               "@esbuild/openbsd-x64": "0.18.11",
+                               "@esbuild/sunos-x64": "0.18.11",
+                               "@esbuild/win32-arm64": "0.18.11",
+                               "@esbuild/win32-ia32": "0.18.11",
+                               "@esbuild/win32-x64": "0.18.11"
                        }
                },
                "node_modules/escape-string-regexp": {
                        }
                },
                "node_modules/escape-string-regexp": {
                        }
                },
                "node_modules/eslint": {
                        }
                },
                "node_modules/eslint": {
-                       "version": "8.32.0",
-                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz",
-                       "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==",
+                       "version": "8.44.0",
+                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz",
+                       "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
-                               "@eslint/eslintrc": "^1.4.1",
-                               "@humanwhocodes/config-array": "^0.11.8",
+                               "@eslint-community/eslint-utils": "^4.2.0",
+                               "@eslint-community/regexpp": "^4.4.0",
+                               "@eslint/eslintrc": "^2.1.0",
+                               "@eslint/js": "8.44.0",
+                               "@humanwhocodes/config-array": "^0.11.10",
                                "@humanwhocodes/module-importer": "^1.0.1",
                                "@nodelib/fs.walk": "^1.2.8",
                                "ajv": "^6.10.0",
                                "@humanwhocodes/module-importer": "^1.0.1",
                                "@nodelib/fs.walk": "^1.2.8",
                                "ajv": "^6.10.0",
                                "debug": "^4.3.2",
                                "doctrine": "^3.0.0",
                                "escape-string-regexp": "^4.0.0",
                                "debug": "^4.3.2",
                                "doctrine": "^3.0.0",
                                "escape-string-regexp": "^4.0.0",
-                               "eslint-scope": "^7.1.1",
-                               "eslint-utils": "^3.0.0",
-                               "eslint-visitor-keys": "^3.3.0",
-                               "espree": "^9.4.0",
-                               "esquery": "^1.4.0",
+                               "eslint-scope": "^7.2.0",
+                               "eslint-visitor-keys": "^3.4.1",
+                               "espree": "^9.6.0",
+                               "esquery": "^1.4.2",
                                "esutils": "^2.0.2",
                                "fast-deep-equal": "^3.1.3",
                                "file-entry-cache": "^6.0.1",
                                "find-up": "^5.0.0",
                                "glob-parent": "^6.0.2",
                                "globals": "^13.19.0",
                                "esutils": "^2.0.2",
                                "fast-deep-equal": "^3.1.3",
                                "file-entry-cache": "^6.0.1",
                                "find-up": "^5.0.0",
                                "glob-parent": "^6.0.2",
                                "globals": "^13.19.0",
-                               "grapheme-splitter": "^1.0.4",
+                               "graphemer": "^1.4.0",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.0.0",
                                "imurmurhash": "^0.1.4",
                                "is-glob": "^4.0.0",
                                "is-path-inside": "^3.0.3",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.0.0",
                                "imurmurhash": "^0.1.4",
                                "is-glob": "^4.0.0",
                                "is-path-inside": "^3.0.3",
-                               "js-sdsl": "^4.1.4",
                                "js-yaml": "^4.1.0",
                                "json-stable-stringify-without-jsonify": "^1.0.1",
                                "levn": "^0.4.1",
                                "lodash.merge": "^4.6.2",
                                "minimatch": "^3.1.2",
                                "natural-compare": "^1.4.0",
                                "js-yaml": "^4.1.0",
                                "json-stable-stringify-without-jsonify": "^1.0.1",
                                "levn": "^0.4.1",
                                "lodash.merge": "^4.6.2",
                                "minimatch": "^3.1.2",
                                "natural-compare": "^1.4.0",
-                               "optionator": "^0.9.1",
-                               "regexpp": "^3.2.0",
+                               "optionator": "^0.9.3",
                                "strip-ansi": "^6.0.1",
                                "strip-json-comments": "^3.1.0",
                                "text-table": "^0.2.0"
                                "strip-ansi": "^6.0.1",
                                "strip-json-comments": "^3.1.0",
                                "text-table": "^0.2.0"
                        }
                },
                "node_modules/eslint-config-prettier": {
                        }
                },
                "node_modules/eslint-config-prettier": {
-                       "version": "8.6.0",
-                       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz",
-                       "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==",
+                       "version": "8.8.0",
+                       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
+                       "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
                        "dev": true,
                        "bin": {
                                "eslint-config-prettier": "bin/cli.js"
                        "dev": true,
                        "bin": {
                                "eslint-config-prettier": "bin/cli.js"
                        }
                },
                "node_modules/eslint-scope": {
                        }
                },
                "node_modules/eslint-scope": {
-                       "version": "7.1.1",
-                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
-                       "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+                       "version": "7.2.0",
+                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
+                       "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
                        "dev": true,
                        "dependencies": {
                                "esrecurse": "^4.3.0",
                        "dev": true,
                        "dependencies": {
                                "esrecurse": "^4.3.0",
                        },
                        "engines": {
                                "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
                        },
                        "engines": {
                                "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-                       }
-               },
-               "node_modules/eslint-utils": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
-                       "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
-                       "dev": true,
-                       "dependencies": {
-                               "eslint-visitor-keys": "^2.0.0"
-                       },
-                       "engines": {
-                               "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
                        },
                        "funding": {
                        },
                        "funding": {
-                               "url": "https://github.com/sponsors/mysticatea"
-                       },
-                       "peerDependencies": {
-                               "eslint": ">=5"
-                       }
-               },
-               "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-                       "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
-                       "dev": true,
-                       "engines": {
-                               "node": ">=10"
+                               "url": "https://opencollective.com/eslint"
                        }
                },
                "node_modules/eslint-visitor-keys": {
                        }
                },
                "node_modules/eslint-visitor-keys": {
-                       "version": "3.3.0",
-                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
-                       "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+                       "version": "3.4.1",
+                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+                       "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
                        "dev": true,
                        "engines": {
                                "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
                        "dev": true,
                        "engines": {
                                "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+                       },
+                       "funding": {
+                               "url": "https://opencollective.com/eslint"
                        }
                },
                "node_modules/esm-env": {
                        }
                },
                "node_modules/esm-env": {
                        "dev": true
                },
                "node_modules/espree": {
                        "dev": true
                },
                "node_modules/espree": {
-                       "version": "9.4.1",
-                       "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
-                       "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
+                       "version": "9.6.0",
+                       "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz",
+                       "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
-                               "acorn": "^8.8.0",
+                               "acorn": "^8.9.0",
                                "acorn-jsx": "^5.3.2",
                                "acorn-jsx": "^5.3.2",
-                               "eslint-visitor-keys": "^3.3.0"
+                               "eslint-visitor-keys": "^3.4.1"
                        },
                        "engines": {
                                "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
                        },
                        "engines": {
                                "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
                        }
                },
                "node_modules/esquery": {
                        }
                },
                "node_modules/esquery": {
-                       "version": "1.4.0",
-                       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-                       "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+                       "version": "1.5.0",
+                       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+                       "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
                        "dev": true,
                        "dependencies": {
                                "estraverse": "^5.1.0"
                        "dev": true,
                        "dependencies": {
                                "estraverse": "^5.1.0"
                        "dev": true
                },
                "node_modules/fast-glob": {
                        "dev": true
                },
                "node_modules/fast-glob": {
-                       "version": "3.2.12",
-                       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-                       "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+                       "version": "3.3.0",
+                       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
+                       "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
                        "dev": true,
                        "dependencies": {
                                "@nodelib/fs.stat": "^2.0.2",
                        "dev": true,
                        "dependencies": {
                                "@nodelib/fs.stat": "^2.0.2",
                                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
                        }
                },
                                "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
                        }
                },
-               "node_modules/function-bind": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-                       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-                       "dev": true
-               },
                "node_modules/glob": {
                        "version": "7.2.3",
                        "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
                "node_modules/glob": {
                        "version": "7.2.3",
                        "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
                        }
                },
                "node_modules/globals": {
                        }
                },
                "node_modules/globals": {
-                       "version": "13.19.0",
-                       "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
-                       "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
+                       "version": "13.20.0",
+                       "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+                       "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
                        "dev": true,
                        "dependencies": {
                                "type-fest": "^0.20.2"
                        "dev": true,
                        "dependencies": {
                                "type-fest": "^0.20.2"
                                "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
                                "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
-               "node_modules/globalyzer": {
-                       "version": "0.1.0",
-                       "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
-                       "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
-                       "dev": true
-               },
-               "node_modules/globrex": {
-                       "version": "0.1.2",
-                       "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
-                       "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
-                       "dev": true
-               },
                "node_modules/graceful-fs": {
                "node_modules/graceful-fs": {
-                       "version": "4.2.10",
-                       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-                       "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+                       "version": "4.2.11",
+                       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+                       "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
                        "dev": true
                },
                        "dev": true
                },
-               "node_modules/grapheme-splitter": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-                       "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+               "node_modules/graphemer": {
+                       "version": "1.4.0",
+                       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+                       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
                        "dev": true
                },
                        "dev": true
                },
-               "node_modules/has": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-                       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-                       "dev": true,
-                       "dependencies": {
-                               "function-bind": "^1.1.1"
-                       },
-                       "engines": {
-                               "node": ">= 0.4.0"
-                       }
-               },
                "node_modules/has-flag": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
                "node_modules/has-flag": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
                        }
                },
                "node_modules/import-meta-resolve": {
                        }
                },
                "node_modules/import-meta-resolve": {
-                       "version": "2.2.1",
-                       "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.1.tgz",
-                       "integrity": "sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==",
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz",
+                       "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==",
                        "dev": true,
                        "funding": {
                                "type": "github",
                        "dev": true,
                        "funding": {
                                "type": "github",
                                "node": ">=8"
                        }
                },
                                "node": ">=8"
                        }
                },
-               "node_modules/is-core-module": {
-                       "version": "2.11.0",
-                       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-                       "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-                       "dev": true,
-                       "dependencies": {
-                               "has": "^1.0.3"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/ljharb"
-                       }
-               },
                "node_modules/is-extglob": {
                        "version": "2.1.1",
                        "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
                "node_modules/is-extglob": {
                        "version": "2.1.1",
                        "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
                        "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
                        "dev": true
                },
                        "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
                        "dev": true
                },
-               "node_modules/js-sdsl": {
-                       "version": "4.3.0",
-                       "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
-                       "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
-                       "dev": true,
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/js-sdsl"
-                       }
-               },
                "node_modules/js-yaml": {
                        "version": "4.1.0",
                        "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
                "node_modules/js-yaml": {
                        "version": "4.1.0",
                        "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
                        "dev": true
                },
                "node_modules/magic-string": {
                        "dev": true
                },
                "node_modules/magic-string": {
-                       "version": "0.27.0",
-                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
-                       "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+                       "version": "0.30.1",
+                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
+                       "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
-                               "@jridgewell/sourcemap-codec": "^1.4.13"
+                               "@jridgewell/sourcemap-codec": "^1.4.15"
                        },
                        "engines": {
                                "node": ">=12"
                        },
                        "engines": {
                                "node": ">=12"
                        }
                },
                "node_modules/minimist": {
                        }
                },
                "node_modules/minimist": {
-                       "version": "1.2.7",
-                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-                       "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+                       "version": "1.2.8",
+                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+                       "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
                        "dev": true,
                        "funding": {
                                "url": "https://github.com/sponsors/ljharb"
                        "dev": true,
                        "funding": {
                                "url": "https://github.com/sponsors/ljharb"
                        "dev": true
                },
                "node_modules/nanoid": {
                        "dev": true
                },
                "node_modules/nanoid": {
-                       "version": "3.3.4",
-                       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
-                       "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+                       "version": "3.3.6",
+                       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+                       "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
                        "dev": true,
                        "dev": true,
+                       "funding": [
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/ai"
+                               }
+                       ],
                        "bin": {
                                "nanoid": "bin/nanoid.cjs"
                        },
                        "bin": {
                                "nanoid": "bin/nanoid.cjs"
                        },
                        "dev": true
                },
                "node_modules/node-fetch": {
                        "dev": true
                },
                "node_modules/node-fetch": {
-                       "version": "2.6.7",
-                       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
-                       "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+                       "version": "2.6.12",
+                       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+                       "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
                        "dev": true,
                        "dependencies": {
                                "whatwg-url": "^5.0.0"
                        "dev": true,
                        "dependencies": {
                                "whatwg-url": "^5.0.0"
                        }
                },
                "node_modules/optionator": {
                        }
                },
                "node_modules/optionator": {
-                       "version": "0.9.1",
-                       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-                       "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+                       "version": "0.9.3",
+                       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+                       "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
+                               "@aashutoshrathi/word-wrap": "^1.2.3",
                                "deep-is": "^0.1.3",
                                "fast-levenshtein": "^2.0.6",
                                "levn": "^0.4.1",
                                "prelude-ls": "^1.2.1",
                                "deep-is": "^0.1.3",
                                "fast-levenshtein": "^2.0.6",
                                "levn": "^0.4.1",
                                "prelude-ls": "^1.2.1",
-                               "type-check": "^0.4.0",
-                               "word-wrap": "^1.2.3"
+                               "type-check": "^0.4.0"
                        },
                        "engines": {
                                "node": ">= 0.8.0"
                        },
                        "engines": {
                                "node": ">= 0.8.0"
                                "node": ">=8"
                        }
                },
                                "node": ">=8"
                        }
                },
-               "node_modules/path-parse": {
-                       "version": "1.0.7",
-                       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-                       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-                       "dev": true
-               },
                "node_modules/picocolors": {
                        "version": "1.0.0",
                        "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
                "node_modules/picocolors": {
                        "version": "1.0.0",
                        "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
                        }
                },
                "node_modules/postcss": {
                        }
                },
                "node_modules/postcss": {
-                       "version": "8.4.21",
-                       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
-                       "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+                       "version": "8.4.25",
+                       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.25.tgz",
+                       "integrity": "sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==",
                        "dev": true,
                        "funding": [
                                {
                        "dev": true,
                        "funding": [
                                {
                                {
                                        "type": "tidelift",
                                        "url": "https://tidelift.com/funding/github/npm/postcss"
                                {
                                        "type": "tidelift",
                                        "url": "https://tidelift.com/funding/github/npm/postcss"
+                               },
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/ai"
                                }
                        ],
                        "dependencies": {
                                }
                        ],
                        "dependencies": {
-                               "nanoid": "^3.3.4",
+                               "nanoid": "^3.3.6",
                                "picocolors": "^1.0.0",
                                "source-map-js": "^1.0.2"
                        },
                                "picocolors": "^1.0.0",
                                "source-map-js": "^1.0.2"
                        },
                        }
                },
                "node_modules/prettier": {
                        }
                },
                "node_modules/prettier": {
-                       "version": "2.8.3",
-                       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz",
-                       "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==",
+                       "version": "2.8.8",
+                       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+                       "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
                        "dev": true,
                        "bin": {
                                "prettier": "bin-prettier.js"
                        "dev": true,
                        "bin": {
                                "prettier": "bin-prettier.js"
                        }
                },
                "node_modules/prettier-plugin-svelte": {
                        }
                },
                "node_modules/prettier-plugin-svelte": {
-                       "version": "2.9.0",
-                       "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.9.0.tgz",
-                       "integrity": "sha512-3doBi5NO4IVgaNPtwewvrgPpqAcvNv0NwJNflr76PIGgi9nf1oguQV1Hpdm9TI2ALIQVn/9iIwLpBO5UcD2Jiw==",
+                       "version": "2.10.1",
+                       "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.10.1.tgz",
+                       "integrity": "sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==",
                        "dev": true,
                        "peerDependencies": {
                                "prettier": "^1.16.4 || ^2.0.0",
                        "dev": true,
                        "peerDependencies": {
                                "prettier": "^1.16.4 || ^2.0.0",
-                               "svelte": "^3.2.0"
+                               "svelte": "^3.2.0 || ^4.0.0-next.0"
                        }
                },
                "node_modules/punycode": {
                        }
                },
                "node_modules/punycode": {
                                "node": ">=8.10.0"
                        }
                },
                                "node": ">=8.10.0"
                        }
                },
-               "node_modules/regexpp": {
-                       "version": "3.2.0",
-                       "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
-                       "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
-                       "dev": true,
-                       "engines": {
-                               "node": ">=8"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/mysticatea"
-                       }
-               },
-               "node_modules/resolve": {
-                       "version": "1.22.1",
-                       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
-                       "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-                       "dev": true,
-                       "dependencies": {
-                               "is-core-module": "^2.9.0",
-                               "path-parse": "^1.0.7",
-                               "supports-preserve-symlinks-flag": "^1.0.0"
-                       },
-                       "bin": {
-                               "resolve": "bin/resolve"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/ljharb"
-                       }
-               },
                "node_modules/resolve-from": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
                "node_modules/resolve-from": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
                        }
                },
                "node_modules/rollup": {
                        }
                },
                "node_modules/rollup": {
-                       "version": "3.10.1",
-                       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.1.tgz",
-                       "integrity": "sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==",
+                       "version": "3.26.2",
+                       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz",
+                       "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==",
                        "dev": true,
                        "bin": {
                                "rollup": "dist/bin/rollup"
                        "dev": true,
                        "bin": {
                                "rollup": "dist/bin/rollup"
                        }
                },
                "node_modules/set-cookie-parser": {
                        }
                },
                "node_modules/set-cookie-parser": {
-                       "version": "2.5.1",
-                       "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz",
-                       "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==",
+                       "version": "2.6.0",
+                       "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
+                       "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
                        "dev": true
                },
                "node_modules/shebang-command": {
                        "dev": true
                },
                "node_modules/shebang-command": {
                        }
                },
                "node_modules/sirv": {
                        }
                },
                "node_modules/sirv": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz",
-                       "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==",
+                       "version": "2.0.3",
+                       "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
+                       "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==",
                        "dev": true,
                        "dependencies": {
                                "@polka/url": "^1.0.0-next.20",
                        "dev": true,
                        "dependencies": {
                                "@polka/url": "^1.0.0-next.20",
                                "node": ">=8"
                        }
                },
                                "node": ">=8"
                        }
                },
-               "node_modules/supports-preserve-symlinks-flag": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-                       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-                       "dev": true,
-                       "engines": {
-                               "node": ">= 0.4"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/ljharb"
-                       }
-               },
                "node_modules/svelte": {
                "node_modules/svelte": {
-                       "version": "3.55.1",
-                       "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz",
-                       "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==",
+                       "version": "3.59.2",
+                       "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz",
+                       "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==",
                        "dev": true,
                        "engines": {
                                "node": ">= 8"
                        }
                },
                "node_modules/svelte-check": {
                        "dev": true,
                        "engines": {
                                "node": ">= 8"
                        }
                },
                "node_modules/svelte-check": {
-                       "version": "3.0.2",
-                       "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.2.tgz",
-                       "integrity": "sha512-DkhKhV0Jt0gh7q9DBB26+J2Vfb9y4/4JWxnbkXBZha7542LOhwvj3edJFjyJ+xjdaXyInZ+YRRYc3V6wytP2ew==",
+                       "version": "3.4.5",
+                       "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.4.5.tgz",
+                       "integrity": "sha512-FsD/CUVdEI0F9sfylh1Fe15kDjvvbyBxzDpACPsdq0EASgaZukBXaMXofpxlgmWsgVET3OynMQlbtUQoWCz9Rw==",
                        "dev": true,
                        "dependencies": {
                                "@jridgewell/trace-mapping": "^0.3.17",
                        "dev": true,
                        "dependencies": {
                                "@jridgewell/trace-mapping": "^0.3.17",
                                "import-fresh": "^3.2.1",
                                "picocolors": "^1.0.0",
                                "sade": "^1.7.4",
                                "import-fresh": "^3.2.1",
                                "picocolors": "^1.0.0",
                                "sade": "^1.7.4",
-                               "svelte-preprocess": "^5.0.0",
-                               "typescript": "^4.9.4"
+                               "svelte-preprocess": "^5.0.3",
+                               "typescript": "^5.0.3"
                        },
                        "bin": {
                                "svelte-check": "bin/svelte-check"
                        },
                        "peerDependencies": {
                        },
                        "bin": {
                                "svelte-check": "bin/svelte-check"
                        },
                        "peerDependencies": {
-                               "svelte": "^3.55.0"
+                               "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0"
                        }
                },
                "node_modules/svelte-hmr": {
                        }
                },
                "node_modules/svelte-hmr": {
-                       "version": "0.15.1",
-                       "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
-                       "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==",
+                       "version": "0.15.2",
+                       "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz",
+                       "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==",
                        "dev": true,
                        "engines": {
                                "node": "^12.20 || ^14.13.1 || >= 16"
                        },
                        "peerDependencies": {
                        "dev": true,
                        "engines": {
                                "node": "^12.20 || ^14.13.1 || >= 16"
                        },
                        "peerDependencies": {
-                               "svelte": ">=3.19.0"
+                               "svelte": "^3.19.0 || ^4.0.0-next.0"
                        }
                },
                "node_modules/svelte-preprocess": {
                        }
                },
                "node_modules/svelte-preprocess": {
-                       "version": "5.0.1",
-                       "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz",
-                       "integrity": "sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ==",
+                       "version": "5.0.4",
+                       "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz",
+                       "integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==",
                        "dev": true,
                        "hasInstallScript": true,
                        "dependencies": {
                                "@types/pug": "^2.0.6",
                        "dev": true,
                        "hasInstallScript": true,
                        "dependencies": {
                                "@types/pug": "^2.0.6",
-                               "@types/sass": "^1.43.1",
                                "detect-indent": "^6.1.0",
                                "magic-string": "^0.27.0",
                                "sorcery": "^0.11.0",
                                "detect-indent": "^6.1.0",
                                "magic-string": "^0.27.0",
                                "sorcery": "^0.11.0",
                                "sass": "^1.26.8",
                                "stylus": "^0.55.0",
                                "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0",
                                "sass": "^1.26.8",
                                "stylus": "^0.55.0",
                                "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0",
-                               "svelte": "^3.23.0",
-                               "typescript": "^3.9.5 || ^4.0.0"
+                               "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0",
+                               "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0"
                        },
                        "peerDependenciesMeta": {
                                "@babel/core": {
                        },
                        "peerDependenciesMeta": {
                                "@babel/core": {
                                }
                        }
                },
                                }
                        }
                },
+               "node_modules/svelte-preprocess/node_modules/magic-string": {
+                       "version": "0.27.0",
+                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
+                       "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+                       "dev": true,
+                       "dependencies": {
+                               "@jridgewell/sourcemap-codec": "^1.4.13"
+                       },
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
                "node_modules/text-table": {
                        "version": "0.2.0",
                        "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
                        "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
                        "dev": true
                },
                "node_modules/text-table": {
                        "version": "0.2.0",
                        "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
                        "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
                        "dev": true
                },
-               "node_modules/tiny-glob": {
-                       "version": "0.2.9",
-                       "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
-                       "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
-                       "dev": true,
-                       "dependencies": {
-                               "globalyzer": "0.1.0",
-                               "globrex": "^0.1.2"
-                       }
-               },
                "node_modules/to-regex-range": {
                        "version": "5.0.1",
                        "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
                "node_modules/to-regex-range": {
                        "version": "5.0.1",
                        "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
                        }
                },
                "node_modules/totalist": {
                        }
                },
                "node_modules/totalist": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz",
-                       "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==",
+                       "version": "3.0.1",
+                       "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+                       "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
                        "dev": true,
                        "engines": {
                                "node": ">=6"
                        "dev": true,
                        "engines": {
                                "node": ">=6"
                        }
                },
                "node_modules/typescript": {
                        }
                },
                "node_modules/typescript": {
-                       "version": "4.9.4",
-                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
-                       "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
+                       "version": "5.1.6",
+                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
+                       "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
                        "dev": true,
                        "bin": {
                                "tsc": "bin/tsc",
                                "tsserver": "bin/tsserver"
                        },
                        "engines": {
                        "dev": true,
                        "bin": {
                                "tsc": "bin/tsc",
                                "tsserver": "bin/tsserver"
                        },
                        "engines": {
-                               "node": ">=4.2.0"
+                               "node": ">=14.17"
                        }
                },
                "node_modules/undici": {
                        }
                },
                "node_modules/undici": {
-                       "version": "5.16.0",
-                       "resolved": "https://registry.npmjs.org/undici/-/undici-5.16.0.tgz",
-                       "integrity": "sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ==",
+                       "version": "5.22.1",
+                       "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz",
+                       "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==",
                        "dev": true,
                        "dependencies": {
                                "busboy": "^1.6.0"
                        },
                        "engines": {
                        "dev": true,
                        "dependencies": {
                                "busboy": "^1.6.0"
                        },
                        "engines": {
-                               "node": ">=12.18"
+                               "node": ">=14.0"
                        }
                },
                "node_modules/uri-js": {
                        }
                },
                "node_modules/uri-js": {
                        }
                },
                "node_modules/vite": {
                        }
                },
                "node_modules/vite": {
-                       "version": "4.0.4",
-                       "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
-                       "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
+                       "version": "4.4.2",
+                       "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.2.tgz",
+                       "integrity": "sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA==",
                        "dev": true,
                        "dependencies": {
                        "dev": true,
                        "dependencies": {
-                               "esbuild": "^0.16.3",
-                               "postcss": "^8.4.20",
-                               "resolve": "^1.22.1",
-                               "rollup": "^3.7.0"
+                               "esbuild": "^0.18.10",
+                               "postcss": "^8.4.24",
+                               "rollup": "^3.25.2"
                        },
                        "bin": {
                                "vite": "bin/vite.js"
                        },
                        "bin": {
                                "vite": "bin/vite.js"
                        "engines": {
                                "node": "^14.18.0 || >=16.0.0"
                        },
                        "engines": {
                                "node": "^14.18.0 || >=16.0.0"
                        },
+                       "funding": {
+                               "url": "https://github.com/vitejs/vite?sponsor=1"
+                       },
                        "optionalDependencies": {
                                "fsevents": "~2.3.2"
                        },
                        "peerDependencies": {
                                "@types/node": ">= 14",
                                "less": "*",
                        "optionalDependencies": {
                                "fsevents": "~2.3.2"
                        },
                        "peerDependencies": {
                                "@types/node": ">= 14",
                                "less": "*",
+                               "lightningcss": "^1.21.0",
                                "sass": "*",
                                "stylus": "*",
                                "sugarss": "*",
                                "sass": "*",
                                "stylus": "*",
                                "sugarss": "*",
                                "less": {
                                        "optional": true
                                },
                                "less": {
                                        "optional": true
                                },
+                               "lightningcss": {
+                                       "optional": true
+                               },
                                "sass": {
                                        "optional": true
                                },
                                "sass": {
                                        "optional": true
                                },
                                "node": ">= 8"
                        }
                },
                                "node": ">= 8"
                        }
                },
-               "node_modules/word-wrap": {
-                       "version": "1.2.3",
-                       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-                       "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-                       "dev": true,
-                       "engines": {
-                               "node": ">=0.10.0"
-                       }
-               },
                "node_modules/wrappy": {
                        "version": "1.0.2",
                        "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
                "node_modules/wrappy": {
                        "version": "1.0.2",
                        "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
                }
        },
        "dependencies": {
                }
        },
        "dependencies": {
+               "@aashutoshrathi/word-wrap": {
+                       "version": "1.2.6",
+                       "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+                       "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+                       "dev": true
+               },
                "@esbuild/android-arm": {
                "@esbuild/android-arm": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
-                       "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.11.tgz",
+                       "integrity": "sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/android-arm64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/android-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
-                       "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz",
+                       "integrity": "sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/android-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/android-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
-                       "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.11.tgz",
+                       "integrity": "sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/darwin-arm64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/darwin-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
-                       "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz",
+                       "integrity": "sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/darwin-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/darwin-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
-                       "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz",
+                       "integrity": "sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/freebsd-arm64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/freebsd-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
-                       "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz",
+                       "integrity": "sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/freebsd-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/freebsd-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
-                       "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz",
+                       "integrity": "sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-arm": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-arm": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
-                       "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz",
+                       "integrity": "sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-arm64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
-                       "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz",
+                       "integrity": "sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-ia32": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-ia32": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
-                       "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz",
+                       "integrity": "sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-loong64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-loong64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
-                       "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz",
+                       "integrity": "sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-mips64el": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-mips64el": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
-                       "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz",
+                       "integrity": "sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-ppc64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-ppc64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
-                       "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz",
+                       "integrity": "sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-riscv64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-riscv64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
-                       "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz",
+                       "integrity": "sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-s390x": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-s390x": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
-                       "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz",
+                       "integrity": "sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/linux-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
-                       "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz",
+                       "integrity": "sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/netbsd-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/netbsd-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
-                       "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz",
+                       "integrity": "sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/openbsd-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/openbsd-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
-                       "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz",
+                       "integrity": "sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/sunos-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/sunos-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
-                       "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz",
+                       "integrity": "sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/win32-arm64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/win32-arm64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
-                       "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz",
+                       "integrity": "sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/win32-ia32": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/win32-ia32": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
-                       "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz",
+                       "integrity": "sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==",
                        "dev": true,
                        "optional": true
                },
                "@esbuild/win32-x64": {
                        "dev": true,
                        "optional": true
                },
                "@esbuild/win32-x64": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
-                       "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz",
+                       "integrity": "sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==",
                        "dev": true,
                        "optional": true
                },
                        "dev": true,
                        "optional": true
                },
+               "@eslint-community/eslint-utils": {
+                       "version": "4.4.0",
+                       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+                       "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+                       "dev": true,
+                       "requires": {
+                               "eslint-visitor-keys": "^3.3.0"
+                       }
+               },
+               "@eslint-community/regexpp": {
+                       "version": "4.5.1",
+                       "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+                       "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+                       "dev": true
+               },
                "@eslint/eslintrc": {
                "@eslint/eslintrc": {
-                       "version": "1.4.1",
-                       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz",
-                       "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==",
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz",
+                       "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==",
                        "dev": true,
                        "requires": {
                                "ajv": "^6.12.4",
                                "debug": "^4.3.2",
                        "dev": true,
                        "requires": {
                                "ajv": "^6.12.4",
                                "debug": "^4.3.2",
-                               "espree": "^9.4.0",
+                               "espree": "^9.6.0",
                                "globals": "^13.19.0",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.2.1",
                                "globals": "^13.19.0",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.2.1",
                                "strip-json-comments": "^3.1.1"
                        }
                },
                                "strip-json-comments": "^3.1.1"
                        }
                },
+               "@eslint/js": {
+                       "version": "8.44.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz",
+                       "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==",
+                       "dev": true
+               },
                "@humanwhocodes/config-array": {
                "@humanwhocodes/config-array": {
-                       "version": "0.11.8",
-                       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
-                       "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
+                       "version": "0.11.10",
+                       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+                       "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
                        "dev": true,
                        "requires": {
                                "@humanwhocodes/object-schema": "^1.2.1",
                        "dev": true,
                        "requires": {
                                "@humanwhocodes/object-schema": "^1.2.1",
                        "dev": true
                },
                "@jridgewell/sourcemap-codec": {
                        "dev": true
                },
                "@jridgewell/sourcemap-codec": {
-                       "version": "1.4.14",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
-                       "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+                       "version": "1.4.15",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+                       "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
                        "dev": true
                },
                "@jridgewell/trace-mapping": {
                        "dev": true
                },
                "@jridgewell/trace-mapping": {
-                       "version": "0.3.17",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
-                       "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
+                       "version": "0.3.18",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+                       "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
                        "dev": true,
                        "requires": {
                                "@jridgewell/resolve-uri": "3.1.0",
                                "@jridgewell/sourcemap-codec": "1.4.14"
                        "dev": true,
                        "requires": {
                                "@jridgewell/resolve-uri": "3.1.0",
                                "@jridgewell/sourcemap-codec": "1.4.14"
+                       },
+                       "dependencies": {
+                               "@jridgewell/sourcemap-codec": {
+                                       "version": "1.4.14",
+                                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+                                       "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+                                       "dev": true
+                               }
                        }
                },
                "@nodelib/fs.scandir": {
                        }
                },
                "@nodelib/fs.scandir": {
                        "dev": true
                },
                "@supabase/functions-js": {
                        "dev": true
                },
                "@supabase/functions-js": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz",
-                       "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==",
+                       "version": "2.1.2",
+                       "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz",
+                       "integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==",
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/gotrue-js": {
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/gotrue-js": {
-                       "version": "2.10.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.10.0.tgz",
-                       "integrity": "sha512-3k9zg+TN4rJFVbAWoX1KnOpKthb21HxYu87mBG8ccCXSl3fxnFBJNs898+pksj4fw5E6aM/dVtHHHAfV3MwVRQ==",
+                       "version": "2.39.1",
+                       "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.39.1.tgz",
+                       "integrity": "sha512-qRz9mBleA/QATGKOdMAUjpn+YcbZJrTHyWQCe2hAFqJo15JIe1XziD1ZeFraRpsXwja+vONslGeynGv7H8ZZeQ==",
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/postgrest-js": {
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/postgrest-js": {
-                       "version": "1.3.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.3.0.tgz",
-                       "integrity": "sha512-XVX0XaWTyT06mtj67gKb0OasP9hUNIYpypgdKnIqBSib5fXD3aRb6U5rt9y9gG1UMi7pCCgv2qulKRIQlHbb9w==",
+                       "version": "1.7.2",
+                       "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.2.tgz",
+                       "integrity": "sha512-GK80JpRq8l6Qll85erICypAfQCied8tdlXfsDN14W844HqXCSOisk8AaE01DAwGJanieaoN5fuqhzA2yKxDvEQ==",
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/realtime-js": {
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/realtime-js": {
-                       "version": "2.3.1",
-                       "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.3.1.tgz",
-                       "integrity": "sha512-AX4pzZozVPvHAWfPcKl0UWj19pqwogD9TnCEHq1x/6oQjVoqA3n6H+1Ea2of9MheSroajHguaQMen3xLEoWrug==",
+                       "version": "2.7.3",
+                       "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz",
+                       "integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==",
                        "dev": true,
                        "requires": {
                                "@types/phoenix": "^1.5.4",
                        "dev": true,
                        "requires": {
                                "@types/phoenix": "^1.5.4",
+                               "@types/websocket": "^1.0.3",
                                "websocket": "^1.0.34"
                        }
                },
                "@supabase/storage-js": {
                                "websocket": "^1.0.34"
                        }
                },
                "@supabase/storage-js": {
-                       "version": "2.3.0",
-                       "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.3.0.tgz",
-                       "integrity": "sha512-YGWVCEYYYF3+UiyL8O4xC78N9n9paLbT0hHl8dmYAtd3DqyWtu5Eph9JTu0PWm+/29Zhns5TbhUZW4xpWjJfPQ==",
+                       "version": "2.5.1",
+                       "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz",
+                       "integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==",
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/supabase-js": {
                        "dev": true,
                        "requires": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@supabase/supabase-js": {
-                       "version": "2.4.1",
-                       "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.4.1.tgz",
-                       "integrity": "sha512-nFePO2yKVip3VI+OyfUOxhv0IyMmZDeieFJS39y84evPOM9zuZomEmkhwnmEWrLFI7hSr+o2QvY4P+q3c2MbGQ==",
+                       "version": "2.26.0",
+                       "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.26.0.tgz",
+                       "integrity": "sha512-RXmTPTobaYAwkSobadHZmEVLmzX3SGrtRZIGfLWnLv92VzBRrjuXn0a+bJqKl50GUzsyqPA+j5pod7EwMkcH5A==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "@supabase/functions-js": "^2.0.0",
-                               "@supabase/gotrue-js": "^2.7.2",
-                               "@supabase/postgrest-js": "^1.1.1",
-                               "@supabase/realtime-js": "^2.3.1",
-                               "@supabase/storage-js": "^2.1.0",
+                               "@supabase/functions-js": "^2.1.0",
+                               "@supabase/gotrue-js": "^2.31.0",
+                               "@supabase/postgrest-js": "^1.7.0",
+                               "@supabase/realtime-js": "^2.7.3",
+                               "@supabase/storage-js": "^2.5.1",
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@sveltejs/adapter-auto": {
                                "cross-fetch": "^3.1.5"
                        }
                },
                "@sveltejs/adapter-auto": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.2.tgz",
-                       "integrity": "sha512-UXpEO/gutERZnD+Z5Vi4J/ifD3WSRuCI7xwtLJTcKNQvJ6t5Xsj1X3Mw2F8Vv/XTUuxf7xPLYUgThU331r0Y9w==",
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz",
+                       "integrity": "sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "import-meta-resolve": "^2.2.0"
+                               "import-meta-resolve": "^3.0.0"
                        }
                },
                "@sveltejs/kit": {
                        }
                },
                "@sveltejs/kit": {
-                       "version": "1.2.5",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.2.5.tgz",
-                       "integrity": "sha512-etFW9EDYM03orFn0CHcgRMVwTNXjrwRX9TS8rACnJYQQI/BgNpmNmdCya8l2meY82PPfZaRLM4qzbZ56SZbzYQ==",
+                       "version": "1.22.1",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.1.tgz",
+                       "integrity": "sha512-idFhKVEHuCKbTETvuo3V7UShqSYX9JMKVJXP546dOTkh5ZRejo5XtKtsB5TCSwNBa0TH8hIV44/bnylaFhM1Vg==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "@sveltejs/vite-plugin-svelte": "^2.0.0",
+                               "@sveltejs/vite-plugin-svelte": "^2.4.1",
                                "@types/cookie": "^0.5.1",
                                "cookie": "^0.5.0",
                                "@types/cookie": "^0.5.1",
                                "cookie": "^0.5.0",
-                               "devalue": "^4.2.2",
+                               "devalue": "^4.3.1",
                                "esm-env": "^1.0.0",
                                "kleur": "^4.1.5",
                                "esm-env": "^1.0.0",
                                "kleur": "^4.1.5",
-                               "magic-string": "^0.27.0",
+                               "magic-string": "^0.30.0",
                                "mime": "^3.0.0",
                                "sade": "^1.8.1",
                                "mime": "^3.0.0",
                                "sade": "^1.8.1",
-                               "set-cookie-parser": "^2.5.1",
+                               "set-cookie-parser": "^2.6.0",
                                "sirv": "^2.0.2",
                                "sirv": "^2.0.2",
-                               "tiny-glob": "^0.2.9",
-                               "undici": "5.16.0"
+                               "undici": "~5.22.0"
                        }
                },
                "@sveltejs/vite-plugin-svelte": {
                        }
                },
                "@sveltejs/vite-plugin-svelte": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz",
-                       "integrity": "sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==",
+                       "version": "2.4.2",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.2.tgz",
+                       "integrity": "sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
+                               "@sveltejs/vite-plugin-svelte-inspector": "^1.0.3",
                                "debug": "^4.3.4",
                                "debug": "^4.3.4",
-                               "deepmerge": "^4.2.2",
+                               "deepmerge": "^4.3.1",
                                "kleur": "^4.1.5",
                                "kleur": "^4.1.5",
-                               "magic-string": "^0.27.0",
-                               "svelte-hmr": "^0.15.1",
-                               "vitefu": "^0.2.3"
+                               "magic-string": "^0.30.0",
+                               "svelte-hmr": "^0.15.2",
+                               "vitefu": "^0.2.4"
+                       }
+               },
+               "@sveltejs/vite-plugin-svelte-inspector": {
+                       "version": "1.0.3",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.3.tgz",
+                       "integrity": "sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==",
+                       "dev": true,
+                       "requires": {
+                               "debug": "^4.3.4"
                        }
                },
                "@types/cookie": {
                        }
                },
                "@types/cookie": {
                        "dev": true
                },
                "@types/node": {
                        "dev": true
                },
                "@types/node": {
-                       "version": "18.11.18",
-                       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
-                       "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
+                       "version": "20.4.1",
+                       "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz",
+                       "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==",
                        "dev": true
                },
                "@types/phoenix": {
                        "dev": true
                },
                "@types/phoenix": {
-                       "version": "1.5.4",
-                       "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz",
-                       "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==",
+                       "version": "1.6.0",
+                       "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz",
+                       "integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g==",
                        "dev": true
                },
                "@types/pug": {
                        "dev": true
                },
                "@types/pug": {
                        "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
                        "dev": true
                },
                        "integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
                        "dev": true
                },
-               "@types/sass": {
-                       "version": "1.43.1",
-                       "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.43.1.tgz",
-                       "integrity": "sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==",
+               "@types/websocket": {
+                       "version": "1.0.5",
+                       "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
+                       "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
                        "dev": true,
                        "requires": {
                                "@types/node": "*"
                        }
                },
                "acorn": {
                        "dev": true,
                        "requires": {
                                "@types/node": "*"
                        }
                },
                "acorn": {
-                       "version": "8.8.2",
-                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
-                       "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
+                       "version": "8.10.0",
+                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+                       "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
                        "dev": true
                },
                "acorn-jsx": {
                        "dev": true
                },
                "acorn-jsx": {
                        "dev": true
                },
                "cross-fetch": {
                        "dev": true
                },
                "cross-fetch": {
-                       "version": "3.1.5",
-                       "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
-                       "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+                       "version": "3.1.8",
+                       "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
+                       "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "node-fetch": "2.6.7"
+                               "node-fetch": "^2.6.12"
                        }
                },
                "cross-spawn": {
                        }
                },
                "cross-spawn": {
                        "dev": true
                },
                "deepmerge": {
                        "dev": true
                },
                "deepmerge": {
-                       "version": "4.2.2",
-                       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
-                       "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+                       "version": "4.3.1",
+                       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+                       "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
                        "dev": true
                },
                "detect-indent": {
                        "dev": true
                },
                "detect-indent": {
                        "dev": true
                },
                "devalue": {
                        "dev": true
                },
                "devalue": {
-                       "version": "4.2.2",
-                       "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.2.2.tgz",
-                       "integrity": "sha512-Pkwd8qrI9O20VJ14fBNHu+on99toTNZFbgWRpZbC0zbDXpnE2WHYcrC1fHhMsF/3Ee+2yaW7vEujAT7fCYgqrA==",
+                       "version": "4.3.2",
+                       "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz",
+                       "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==",
                        "dev": true
                },
                "doctrine": {
                        "dev": true
                },
                "doctrine": {
                        }
                },
                "esbuild": {
                        }
                },
                "esbuild": {
-                       "version": "0.16.17",
-                       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
-                       "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+                       "version": "0.18.11",
+                       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.11.tgz",
+                       "integrity": "sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "@esbuild/android-arm": "0.16.17",
-                               "@esbuild/android-arm64": "0.16.17",
-                               "@esbuild/android-x64": "0.16.17",
-                               "@esbuild/darwin-arm64": "0.16.17",
-                               "@esbuild/darwin-x64": "0.16.17",
-                               "@esbuild/freebsd-arm64": "0.16.17",
-                               "@esbuild/freebsd-x64": "0.16.17",
-                               "@esbuild/linux-arm": "0.16.17",
-                               "@esbuild/linux-arm64": "0.16.17",
-                               "@esbuild/linux-ia32": "0.16.17",
-                               "@esbuild/linux-loong64": "0.16.17",
-                               "@esbuild/linux-mips64el": "0.16.17",
-                               "@esbuild/linux-ppc64": "0.16.17",
-                               "@esbuild/linux-riscv64": "0.16.17",
-                               "@esbuild/linux-s390x": "0.16.17",
-                               "@esbuild/linux-x64": "0.16.17",
-                               "@esbuild/netbsd-x64": "0.16.17",
-                               "@esbuild/openbsd-x64": "0.16.17",
-                               "@esbuild/sunos-x64": "0.16.17",
-                               "@esbuild/win32-arm64": "0.16.17",
-                               "@esbuild/win32-ia32": "0.16.17",
-                               "@esbuild/win32-x64": "0.16.17"
+                               "@esbuild/android-arm": "0.18.11",
+                               "@esbuild/android-arm64": "0.18.11",
+                               "@esbuild/android-x64": "0.18.11",
+                               "@esbuild/darwin-arm64": "0.18.11",
+                               "@esbuild/darwin-x64": "0.18.11",
+                               "@esbuild/freebsd-arm64": "0.18.11",
+                               "@esbuild/freebsd-x64": "0.18.11",
+                               "@esbuild/linux-arm": "0.18.11",
+                               "@esbuild/linux-arm64": "0.18.11",
+                               "@esbuild/linux-ia32": "0.18.11",
+                               "@esbuild/linux-loong64": "0.18.11",
+                               "@esbuild/linux-mips64el": "0.18.11",
+                               "@esbuild/linux-ppc64": "0.18.11",
+                               "@esbuild/linux-riscv64": "0.18.11",
+                               "@esbuild/linux-s390x": "0.18.11",
+                               "@esbuild/linux-x64": "0.18.11",
+                               "@esbuild/netbsd-x64": "0.18.11",
+                               "@esbuild/openbsd-x64": "0.18.11",
+                               "@esbuild/sunos-x64": "0.18.11",
+                               "@esbuild/win32-arm64": "0.18.11",
+                               "@esbuild/win32-ia32": "0.18.11",
+                               "@esbuild/win32-x64": "0.18.11"
                        }
                },
                "escape-string-regexp": {
                        }
                },
                "escape-string-regexp": {
                        "dev": true
                },
                "eslint": {
                        "dev": true
                },
                "eslint": {
-                       "version": "8.32.0",
-                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz",
-                       "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==",
+                       "version": "8.44.0",
+                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz",
+                       "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "@eslint/eslintrc": "^1.4.1",
-                               "@humanwhocodes/config-array": "^0.11.8",
+                               "@eslint-community/eslint-utils": "^4.2.0",
+                               "@eslint-community/regexpp": "^4.4.0",
+                               "@eslint/eslintrc": "^2.1.0",
+                               "@eslint/js": "8.44.0",
+                               "@humanwhocodes/config-array": "^0.11.10",
                                "@humanwhocodes/module-importer": "^1.0.1",
                                "@nodelib/fs.walk": "^1.2.8",
                                "ajv": "^6.10.0",
                                "@humanwhocodes/module-importer": "^1.0.1",
                                "@nodelib/fs.walk": "^1.2.8",
                                "ajv": "^6.10.0",
                                "debug": "^4.3.2",
                                "doctrine": "^3.0.0",
                                "escape-string-regexp": "^4.0.0",
                                "debug": "^4.3.2",
                                "doctrine": "^3.0.0",
                                "escape-string-regexp": "^4.0.0",
-                               "eslint-scope": "^7.1.1",
-                               "eslint-utils": "^3.0.0",
-                               "eslint-visitor-keys": "^3.3.0",
-                               "espree": "^9.4.0",
-                               "esquery": "^1.4.0",
+                               "eslint-scope": "^7.2.0",
+                               "eslint-visitor-keys": "^3.4.1",
+                               "espree": "^9.6.0",
+                               "esquery": "^1.4.2",
                                "esutils": "^2.0.2",
                                "fast-deep-equal": "^3.1.3",
                                "file-entry-cache": "^6.0.1",
                                "find-up": "^5.0.0",
                                "glob-parent": "^6.0.2",
                                "globals": "^13.19.0",
                                "esutils": "^2.0.2",
                                "fast-deep-equal": "^3.1.3",
                                "file-entry-cache": "^6.0.1",
                                "find-up": "^5.0.0",
                                "glob-parent": "^6.0.2",
                                "globals": "^13.19.0",
-                               "grapheme-splitter": "^1.0.4",
+                               "graphemer": "^1.4.0",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.0.0",
                                "imurmurhash": "^0.1.4",
                                "is-glob": "^4.0.0",
                                "is-path-inside": "^3.0.3",
                                "ignore": "^5.2.0",
                                "import-fresh": "^3.0.0",
                                "imurmurhash": "^0.1.4",
                                "is-glob": "^4.0.0",
                                "is-path-inside": "^3.0.3",
-                               "js-sdsl": "^4.1.4",
                                "js-yaml": "^4.1.0",
                                "json-stable-stringify-without-jsonify": "^1.0.1",
                                "levn": "^0.4.1",
                                "lodash.merge": "^4.6.2",
                                "minimatch": "^3.1.2",
                                "natural-compare": "^1.4.0",
                                "js-yaml": "^4.1.0",
                                "json-stable-stringify-without-jsonify": "^1.0.1",
                                "levn": "^0.4.1",
                                "lodash.merge": "^4.6.2",
                                "minimatch": "^3.1.2",
                                "natural-compare": "^1.4.0",
-                               "optionator": "^0.9.1",
-                               "regexpp": "^3.2.0",
+                               "optionator": "^0.9.3",
                                "strip-ansi": "^6.0.1",
                                "strip-json-comments": "^3.1.0",
                                "text-table": "^0.2.0"
                        }
                },
                "eslint-config-prettier": {
                                "strip-ansi": "^6.0.1",
                                "strip-json-comments": "^3.1.0",
                                "text-table": "^0.2.0"
                        }
                },
                "eslint-config-prettier": {
-                       "version": "8.6.0",
-                       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz",
-                       "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==",
+                       "version": "8.8.0",
+                       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
+                       "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
                        "dev": true,
                        "requires": {}
                },
                        "dev": true,
                        "requires": {}
                },
                        "requires": {}
                },
                "eslint-scope": {
                        "requires": {}
                },
                "eslint-scope": {
-                       "version": "7.1.1",
-                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
-                       "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+                       "version": "7.2.0",
+                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
+                       "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
                        "dev": true,
                        "requires": {
                                "esrecurse": "^4.3.0",
                                "estraverse": "^5.2.0"
                        }
                },
                        "dev": true,
                        "requires": {
                                "esrecurse": "^4.3.0",
                                "estraverse": "^5.2.0"
                        }
                },
-               "eslint-utils": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
-                       "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
-                       "dev": true,
-                       "requires": {
-                               "eslint-visitor-keys": "^2.0.0"
-                       },
-                       "dependencies": {
-                               "eslint-visitor-keys": {
-                                       "version": "2.1.0",
-                                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
-                                       "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
-                                       "dev": true
-                               }
-                       }
-               },
                "eslint-visitor-keys": {
                "eslint-visitor-keys": {
-                       "version": "3.3.0",
-                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
-                       "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+                       "version": "3.4.1",
+                       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+                       "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
                        "dev": true
                },
                "esm-env": {
                        "dev": true
                },
                "esm-env": {
                        "dev": true
                },
                "espree": {
                        "dev": true
                },
                "espree": {
-                       "version": "9.4.1",
-                       "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz",
-                       "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==",
+                       "version": "9.6.0",
+                       "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz",
+                       "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "acorn": "^8.8.0",
+                               "acorn": "^8.9.0",
                                "acorn-jsx": "^5.3.2",
                                "acorn-jsx": "^5.3.2",
-                               "eslint-visitor-keys": "^3.3.0"
+                               "eslint-visitor-keys": "^3.4.1"
                        }
                },
                "esquery": {
                        }
                },
                "esquery": {
-                       "version": "1.4.0",
-                       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
-                       "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+                       "version": "1.5.0",
+                       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+                       "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
                        "dev": true,
                        "requires": {
                                "estraverse": "^5.1.0"
                        "dev": true,
                        "requires": {
                                "estraverse": "^5.1.0"
                        "dev": true
                },
                "fast-glob": {
                        "dev": true
                },
                "fast-glob": {
-                       "version": "3.2.12",
-                       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
-                       "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+                       "version": "3.3.0",
+                       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz",
+                       "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==",
                        "dev": true,
                        "requires": {
                                "@nodelib/fs.stat": "^2.0.2",
                        "dev": true,
                        "requires": {
                                "@nodelib/fs.stat": "^2.0.2",
                        "dev": true,
                        "optional": true
                },
                        "dev": true,
                        "optional": true
                },
-               "function-bind": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-                       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-                       "dev": true
-               },
                "glob": {
                        "version": "7.2.3",
                        "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
                "glob": {
                        "version": "7.2.3",
                        "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
                        }
                },
                "globals": {
                        }
                },
                "globals": {
-                       "version": "13.19.0",
-                       "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
-                       "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
+                       "version": "13.20.0",
+                       "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
+                       "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
                        "dev": true,
                        "requires": {
                                "type-fest": "^0.20.2"
                        }
                },
                        "dev": true,
                        "requires": {
                                "type-fest": "^0.20.2"
                        }
                },
-               "globalyzer": {
-                       "version": "0.1.0",
-                       "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
-                       "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
-                       "dev": true
-               },
-               "globrex": {
-                       "version": "0.1.2",
-                       "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
-                       "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
-                       "dev": true
-               },
                "graceful-fs": {
                "graceful-fs": {
-                       "version": "4.2.10",
-                       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
-                       "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+                       "version": "4.2.11",
+                       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+                       "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
                        "dev": true
                },
                        "dev": true
                },
-               "grapheme-splitter": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-                       "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+               "graphemer": {
+                       "version": "1.4.0",
+                       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+                       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
                        "dev": true
                },
                        "dev": true
                },
-               "has": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-                       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-                       "dev": true,
-                       "requires": {
-                               "function-bind": "^1.1.1"
-                       }
-               },
                "has-flag": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
                "has-flag": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
                        }
                },
                "import-meta-resolve": {
                        }
                },
                "import-meta-resolve": {
-                       "version": "2.2.1",
-                       "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.1.tgz",
-                       "integrity": "sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==",
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz",
+                       "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==",
                        "dev": true
                },
                "imurmurhash": {
                        "dev": true
                },
                "imurmurhash": {
                                "binary-extensions": "^2.0.0"
                        }
                },
                                "binary-extensions": "^2.0.0"
                        }
                },
-               "is-core-module": {
-                       "version": "2.11.0",
-                       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
-                       "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-                       "dev": true,
-                       "requires": {
-                               "has": "^1.0.3"
-                       }
-               },
                "is-extglob": {
                        "version": "2.1.1",
                        "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
                "is-extglob": {
                        "version": "2.1.1",
                        "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
                        "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
                        "dev": true
                },
                        "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
                        "dev": true
                },
-               "js-sdsl": {
-                       "version": "4.3.0",
-                       "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
-                       "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
-                       "dev": true
-               },
                "js-yaml": {
                        "version": "4.1.0",
                        "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
                "js-yaml": {
                        "version": "4.1.0",
                        "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
                        "dev": true
                },
                "magic-string": {
                        "dev": true
                },
                "magic-string": {
-                       "version": "0.27.0",
-                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
-                       "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+                       "version": "0.30.1",
+                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
+                       "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "@jridgewell/sourcemap-codec": "^1.4.13"
+                               "@jridgewell/sourcemap-codec": "^1.4.15"
                        }
                },
                "merge2": {
                        }
                },
                "merge2": {
                        }
                },
                "minimist": {
                        }
                },
                "minimist": {
-                       "version": "1.2.7",
-                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-                       "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+                       "version": "1.2.8",
+                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+                       "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
                        "dev": true
                },
                "mkdirp": {
                        "dev": true
                },
                "mkdirp": {
                        "dev": true
                },
                "nanoid": {
                        "dev": true
                },
                "nanoid": {
-                       "version": "3.3.4",
-                       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
-                       "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+                       "version": "3.3.6",
+                       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+                       "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
                        "dev": true
                },
                "natural-compare": {
                        "dev": true
                },
                "natural-compare": {
                        "dev": true
                },
                "node-fetch": {
                        "dev": true
                },
                "node-fetch": {
-                       "version": "2.6.7",
-                       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
-                       "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+                       "version": "2.6.12",
+                       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+                       "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
                        "dev": true,
                        "requires": {
                                "whatwg-url": "^5.0.0"
                        "dev": true,
                        "requires": {
                                "whatwg-url": "^5.0.0"
                        }
                },
                "optionator": {
                        }
                },
                "optionator": {
-                       "version": "0.9.1",
-                       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
-                       "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
+                       "version": "0.9.3",
+                       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+                       "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
+                               "@aashutoshrathi/word-wrap": "^1.2.3",
                                "deep-is": "^0.1.3",
                                "fast-levenshtein": "^2.0.6",
                                "levn": "^0.4.1",
                                "prelude-ls": "^1.2.1",
                                "deep-is": "^0.1.3",
                                "fast-levenshtein": "^2.0.6",
                                "levn": "^0.4.1",
                                "prelude-ls": "^1.2.1",
-                               "type-check": "^0.4.0",
-                               "word-wrap": "^1.2.3"
+                               "type-check": "^0.4.0"
                        }
                },
                "p-limit": {
                        }
                },
                "p-limit": {
                        "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
                        "dev": true
                },
                        "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
                        "dev": true
                },
-               "path-parse": {
-                       "version": "1.0.7",
-                       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-                       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-                       "dev": true
-               },
                "picocolors": {
                        "version": "1.0.0",
                        "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
                "picocolors": {
                        "version": "1.0.0",
                        "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
                        "dev": true
                },
                "postcss": {
                        "dev": true
                },
                "postcss": {
-                       "version": "8.4.21",
-                       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
-                       "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+                       "version": "8.4.25",
+                       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.25.tgz",
+                       "integrity": "sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "nanoid": "^3.3.4",
+                               "nanoid": "^3.3.6",
                                "picocolors": "^1.0.0",
                                "source-map-js": "^1.0.2"
                        }
                                "picocolors": "^1.0.0",
                                "source-map-js": "^1.0.2"
                        }
                        "dev": true
                },
                "prettier": {
                        "dev": true
                },
                "prettier": {
-                       "version": "2.8.3",
-                       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz",
-                       "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==",
+                       "version": "2.8.8",
+                       "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+                       "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
                        "dev": true
                },
                "prettier-plugin-svelte": {
                        "dev": true
                },
                "prettier-plugin-svelte": {
-                       "version": "2.9.0",
-                       "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.9.0.tgz",
-                       "integrity": "sha512-3doBi5NO4IVgaNPtwewvrgPpqAcvNv0NwJNflr76PIGgi9nf1oguQV1Hpdm9TI2ALIQVn/9iIwLpBO5UcD2Jiw==",
+                       "version": "2.10.1",
+                       "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.10.1.tgz",
+                       "integrity": "sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==",
                        "dev": true,
                        "requires": {}
                },
                        "dev": true,
                        "requires": {}
                },
                                "picomatch": "^2.2.1"
                        }
                },
                                "picomatch": "^2.2.1"
                        }
                },
-               "regexpp": {
-                       "version": "3.2.0",
-                       "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
-                       "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
-                       "dev": true
-               },
-               "resolve": {
-                       "version": "1.22.1",
-                       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
-                       "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-                       "dev": true,
-                       "requires": {
-                               "is-core-module": "^2.9.0",
-                               "path-parse": "^1.0.7",
-                               "supports-preserve-symlinks-flag": "^1.0.0"
-                       }
-               },
                "resolve-from": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
                "resolve-from": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
                        }
                },
                "rollup": {
                        }
                },
                "rollup": {
-                       "version": "3.10.1",
-                       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.10.1.tgz",
-                       "integrity": "sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==",
+                       "version": "3.26.2",
+                       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.2.tgz",
+                       "integrity": "sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==",
                        "dev": true,
                        "requires": {
                                "fsevents": "~2.3.2"
                        "dev": true,
                        "requires": {
                                "fsevents": "~2.3.2"
                        }
                },
                "set-cookie-parser": {
                        }
                },
                "set-cookie-parser": {
-                       "version": "2.5.1",
-                       "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz",
-                       "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==",
+                       "version": "2.6.0",
+                       "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
+                       "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
                        "dev": true
                },
                "shebang-command": {
                        "dev": true
                },
                "shebang-command": {
                        "dev": true
                },
                "sirv": {
                        "dev": true
                },
                "sirv": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz",
-                       "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==",
+                       "version": "2.0.3",
+                       "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
+                       "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==",
                        "dev": true,
                        "requires": {
                                "@polka/url": "^1.0.0-next.20",
                        "dev": true,
                        "requires": {
                                "@polka/url": "^1.0.0-next.20",
                                "has-flag": "^4.0.0"
                        }
                },
                                "has-flag": "^4.0.0"
                        }
                },
-               "supports-preserve-symlinks-flag": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-                       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-                       "dev": true
-               },
                "svelte": {
                "svelte": {
-                       "version": "3.55.1",
-                       "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.55.1.tgz",
-                       "integrity": "sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==",
+                       "version": "3.59.2",
+                       "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz",
+                       "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==",
                        "dev": true
                },
                "svelte-check": {
                        "dev": true
                },
                "svelte-check": {
-                       "version": "3.0.2",
-                       "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.0.2.tgz",
-                       "integrity": "sha512-DkhKhV0Jt0gh7q9DBB26+J2Vfb9y4/4JWxnbkXBZha7542LOhwvj3edJFjyJ+xjdaXyInZ+YRRYc3V6wytP2ew==",
+                       "version": "3.4.5",
+                       "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.4.5.tgz",
+                       "integrity": "sha512-FsD/CUVdEI0F9sfylh1Fe15kDjvvbyBxzDpACPsdq0EASgaZukBXaMXofpxlgmWsgVET3OynMQlbtUQoWCz9Rw==",
                        "dev": true,
                        "requires": {
                                "@jridgewell/trace-mapping": "^0.3.17",
                        "dev": true,
                        "requires": {
                                "@jridgewell/trace-mapping": "^0.3.17",
                                "import-fresh": "^3.2.1",
                                "picocolors": "^1.0.0",
                                "sade": "^1.7.4",
                                "import-fresh": "^3.2.1",
                                "picocolors": "^1.0.0",
                                "sade": "^1.7.4",
-                               "svelte-preprocess": "^5.0.0",
-                               "typescript": "^4.9.4"
+                               "svelte-preprocess": "^5.0.3",
+                               "typescript": "^5.0.3"
                        }
                },
                "svelte-hmr": {
                        }
                },
                "svelte-hmr": {
-                       "version": "0.15.1",
-                       "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz",
-                       "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==",
+                       "version": "0.15.2",
+                       "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz",
+                       "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==",
                        "dev": true,
                        "requires": {}
                },
                "svelte-preprocess": {
                        "dev": true,
                        "requires": {}
                },
                "svelte-preprocess": {
-                       "version": "5.0.1",
-                       "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.1.tgz",
-                       "integrity": "sha512-0HXyhCoc9rsW4zGOgtInylC6qj259E1hpFnJMJWTf+aIfeqh4O/QHT31KT2hvPEqQfdjmqBR/kO2JDkkciBLrQ==",
+                       "version": "5.0.4",
+                       "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz",
+                       "integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==",
                        "dev": true,
                        "requires": {
                                "@types/pug": "^2.0.6",
                        "dev": true,
                        "requires": {
                                "@types/pug": "^2.0.6",
-                               "@types/sass": "^1.43.1",
                                "detect-indent": "^6.1.0",
                                "magic-string": "^0.27.0",
                                "sorcery": "^0.11.0",
                                "strip-indent": "^3.0.0"
                                "detect-indent": "^6.1.0",
                                "magic-string": "^0.27.0",
                                "sorcery": "^0.11.0",
                                "strip-indent": "^3.0.0"
+                       },
+                       "dependencies": {
+                               "magic-string": {
+                                       "version": "0.27.0",
+                                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
+                                       "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+                                       "dev": true,
+                                       "requires": {
+                                               "@jridgewell/sourcemap-codec": "^1.4.13"
+                                       }
+                               }
                        }
                },
                "text-table": {
                        }
                },
                "text-table": {
                        "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
                        "dev": true
                },
                        "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
                        "dev": true
                },
-               "tiny-glob": {
-                       "version": "0.2.9",
-                       "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
-                       "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
-                       "dev": true,
-                       "requires": {
-                               "globalyzer": "0.1.0",
-                               "globrex": "^0.1.2"
-                       }
-               },
                "to-regex-range": {
                        "version": "5.0.1",
                        "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
                "to-regex-range": {
                        "version": "5.0.1",
                        "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
                        }
                },
                "totalist": {
                        }
                },
                "totalist": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz",
-                       "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==",
+                       "version": "3.0.1",
+                       "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+                       "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
                        "dev": true
                },
                "tr46": {
                        "dev": true
                },
                "tr46": {
                        }
                },
                "typescript": {
                        }
                },
                "typescript": {
-                       "version": "4.9.4",
-                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
-                       "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
+                       "version": "5.1.6",
+                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
+                       "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
                        "dev": true
                },
                "undici": {
                        "dev": true
                },
                "undici": {
-                       "version": "5.16.0",
-                       "resolved": "https://registry.npmjs.org/undici/-/undici-5.16.0.tgz",
-                       "integrity": "sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ==",
+                       "version": "5.22.1",
+                       "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz",
+                       "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==",
                        "dev": true,
                        "requires": {
                                "busboy": "^1.6.0"
                        "dev": true,
                        "requires": {
                                "busboy": "^1.6.0"
                        }
                },
                "vite": {
                        }
                },
                "vite": {
-                       "version": "4.0.4",
-                       "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
-                       "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
+                       "version": "4.4.2",
+                       "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.2.tgz",
+                       "integrity": "sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA==",
                        "dev": true,
                        "requires": {
                        "dev": true,
                        "requires": {
-                               "esbuild": "^0.16.3",
+                               "esbuild": "^0.18.10",
                                "fsevents": "~2.3.2",
                                "fsevents": "~2.3.2",
-                               "postcss": "^8.4.20",
-                               "resolve": "^1.22.1",
-                               "rollup": "^3.7.0"
+                               "postcss": "^8.4.24",
+                               "rollup": "^3.25.2"
                        }
                },
                "vitefu": {
                        }
                },
                "vitefu": {
                                "isexe": "^2.0.0"
                        }
                },
                                "isexe": "^2.0.0"
                        }
                },
-               "word-wrap": {
-                       "version": "1.2.3",
-                       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-                       "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-                       "dev": true
-               },
                "wrappy": {
                        "version": "1.0.2",
                        "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
                "wrappy": {
                        "version": "1.0.2",
                        "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
index c95657b49e40ce11b02e2a5e9ae96bf42405ecd5..08e94eb3b5bf961fa4650280ca28d353962d69c4 100644 (file)
@@ -12,7 +12,7 @@
        },
        "devDependencies": {
                "@supabase/supabase-js": "^2.4.1",
        },
        "devDependencies": {
                "@supabase/supabase-js": "^2.4.1",
-               "@sveltejs/adapter-auto": "^1.0.2",
+               "@sveltejs/adapter-auto": "^2.0.0",
                "@sveltejs/kit": "^1.2.5",
                "eslint": "^8.28.0",
                "eslint-config-prettier": "^8.5.0",
                "@sveltejs/kit": "^1.2.5",
                "eslint": "^8.28.0",
                "eslint-config-prettier": "^8.5.0",
@@ -21,7 +21,6 @@
                "prettier-plugin-svelte": "^2.8.1",
                "svelte": "^3.54.0",
                "svelte-check": "^3.0.2",
                "prettier-plugin-svelte": "^2.8.1",
                "svelte": "^3.54.0",
                "svelte-check": "^3.0.2",
-               "typescript": "^4.9.3",
                "vite": "^4.0.0"
        },
        "type": "module"
                "vite": "^4.0.0"
        },
        "type": "module"
index a301a08b90036207ccc5d30cb6dad91c471b8ea7..a43c4d1700a825b8c254dfca4b54ac95bcc6c899 100644 (file)
@@ -1,8 +1,7 @@
 * {
 * {
-  font-family: "ヒラギノ明朝 ProN", "Hiragino Mincho ProN", "游明朝",
-      "游明朝体", YuMincho, "Yu Mincho", "MS 明朝", "MS Mincho", 
-      HiraMinProN-W3, "TakaoEx明朝", TakaoExMincho, MotoyaLCedar,
-      "Droid Sans Japanese", serif;
-  margin: 0;
-  padding: 0;
+       font-family: 'ヒラギノ明朝 ProN', 'Hiragino Mincho ProN', '游明朝', '游明朝体', YuMincho,
+               'Yu Mincho', 'MS 明朝', 'MS Mincho', HiraMinProN-W3, 'TakaoEx明朝', TakaoExMincho,
+               MotoyaLCedar, 'Droid Sans Japanese', serif;
+       margin: 0;
+       padding: 0;
 }
 }
index c12e031361361f2e764fb960c7878c4b775bfe59..eca3917a3cfda5124bc04b9c87aa8fda6df21f0e 100644 (file)
@@ -9,14 +9,8 @@ export const blink = function blink(node, params) {
                duration: params.duration || 400,
                easing: params.easing || sineInOut,
                css: (t) => {
                duration: params.duration || 400,
                easing: params.easing || sineInOut,
                css: (t) => {
-                       const halfWidth = originalWidth / 2;
-                       const halfHeight = originalHeight / 2;
                        const width = Math.round(t <= 0.2 ? (originalWidth * t) / 0.2 : originalWidth);
                        const width = Math.round(t <= 0.2 ? (originalWidth * t) / 0.2 : originalWidth);
-                       const marginY = Math.round(t <= 0.2 ? halfHeight * (1 - t / 0.2) : 0);
                        const height = Math.round(t > 0.2 ? ((t - 0.2) / 0.8) * originalHeight : 0);
                        const height = Math.round(t > 0.2 ? ((t - 0.2) / 0.8) * originalHeight : 0);
-                       const marginX = Math.round(t > 0.2 ? (1 - (t - 0.2) / 0.8) * halfWidth : halfWidth);
-
-      console.log(width, height);
 
                        return `width: ${width}px; height: ${height}px;`;
                }
 
                        return `width: ${width}px; height: ${height}px;`;
                }
index 1aa82fa56cff21f6bd60c7a8b638dfed60fb545d..20b9e37980511852d0aea5bce1b2f283c32bd017 100644 (file)
@@ -1,33 +1,39 @@
 <script>
 <script>
-  import { browser } from '$app/environment';
-  import { canvas } from '$lib/stores/canvas';
+       import { browser } from '$app/environment';
+       import { canvas } from '$lib/stores/canvas';
 
 
-  const kDotSize = 32;
+       const kDotSize = 32;
 
 
-  $: {
-    if (browser) {
-      document.documentElement.style.setProperty('--dot-size', kDotSize + 'px');
-      document.documentElement.style.setProperty('--dot-x', kDotSize - $canvas.x % kDotSize + 'px');
-      document.documentElement.style.setProperty('--dot-y', kDotSize - $canvas.y % kDotSize + 'px');
-    }
-  }
+       $: {
+               if (browser) {
+                       document.documentElement.style.setProperty('--dot-size', kDotSize + 'px');
+                       document.documentElement.style.setProperty(
+                               '--dot-x',
+                               kDotSize - ($canvas.x % kDotSize) + 'px'
+                       );
+                       document.documentElement.style.setProperty(
+                               '--dot-y',
+                               kDotSize - ($canvas.y % kDotSize) + 'px'
+                       );
+               }
+       }
 </script>
 
 </script>
 
-<div class="background"></div>
+<div class="background" />
 
 <style>
 
 <style>
-  .background {
-    position: fixed;
-    top: 0;
-    bottom: 0;
-    user-select: none;
-    pointer-events: none;
-    background: radial-gradient(#aaa, #aaa 1px, #fff 1px, #fff var(--dot-size));
-    background-size: var(--dot-size) var(--dot-size);
-    background-position: var(--dot-x) var(--dot-y);
-    padding: 0;
-    margin: 0;
-    width: 100vw;
-    height: 100vh;
-  }
+       .background {
+               position: fixed;
+               top: 0;
+               bottom: 0;
+               user-select: none;
+               pointer-events: none;
+               background: radial-gradient(#aaa, #aaa 1px, #fff 1px, #fff var(--dot-size));
+               background-size: var(--dot-size) var(--dot-size);
+               background-position: var(--dot-x) var(--dot-y);
+               padding: 0;
+               margin: 0;
+               width: 100vw;
+               height: 100vh;
+       }
 </style>
 </style>
index ffea4ded08e86be6db7bd99000f16026dc0c3e14..a115c9184f1a466fba039e6a421bca0edd82c7b9 100644 (file)
@@ -1,29 +1,26 @@
 <script>
 <script>
-  import { coordinateLength } from '$lib/config';
-  import { canvas } from '$lib/stores/canvas';
+       import { coordinateLength } from '$lib/config';
+       import { canvas } from '$lib/stores/canvas';
 
 
-  const kSeparatorRegex = /([0-9a-z]{2})/g;
+       const kSeparatorRegex = /([0-9a-z]{2})/g;
 
 
-  const formatCoordinate = function formatCoordinate(coordinate) {
-    return coordinate
-      .toString(16)
-      .padStart(coordinateLength, 0)
-      .replace(kSeparatorRegex, '$1 ');
-  }
+       const formatCoordinate = function formatCoordinate(coordinate) {
+               return coordinate.toString(16).padStart(coordinateLength, 0).replace(kSeparatorRegex, '$1 ');
+       };
 </script>
 
 <div class="hud">
 </script>
 
 <div class="hud">
-  { formatCoordinate($canvas.x) } × { formatCoordinate($canvas.y) }
+       {formatCoordinate($canvas.x)} × {formatCoordinate($canvas.y)}
 </div>
 
 <style>
 </div>
 
 <style>
-  .hud {
-    background-color: #fff;
-    padding: 4px;
-    position: fixed;
-    bottom: 2px;
-    right: 2px;
-    font-smooth: never;
-    -webkit-font-smoothing : none;
-  }
+       .hud {
+               background-color: #fff;
+               padding: 4px;
+               position: fixed;
+               bottom: 2px;
+               right: 2px;
+               font-smooth: never;
+               -webkit-font-smoothing: none;
+       }
 </style>
 </style>
index cfee68577d4b24de963f6dc50a19cc0e26d59905..0f823f48af91f8b6a9fe1bd4d76dbe01d75c8467 100644 (file)
@@ -1,54 +1,55 @@
 <script>
 <script>
-  import { coordinateLength } from '$lib/config';
-  import { sensor } from '$lib/stores/widgets';
-  import { maxSize } from '$lib/config';
+       import { topLeft, bottomRight } from '$lib/stores/canvas';
+       import { modulo } from '$lib/math';
+       import { maxSize } from '$lib/config';
+       import MinimapSector from '$lib/components/minimap_sector.svelte';
 
 
-  const isActive = function isActive($s, x, y) {
-    const isXActive = $s.left > x * maxSize && $s.left < (x + 1) * maxSize;
-    const isYActive = $s.top > y * maxSize && $s.top < (y + 1) * maxSize;
-    return isXActive || isYActive;
-  }
+       const gridSize = 24;
+       const sectors = Array(gridSize).fill(Array(gridSize).fill());
+       const size = maxSize / gridSize;
+
+       const isActive = function isActive(x, y, $topLeft) {
+               const pCanvas = modulo($topLeft.x, maxSize);
+               const qCanvas = modulo($topLeft.y, maxSize);
+               const pBoundary = pCanvas + Math.abs($topLeft.x - $bottomRight.x);
+               const qBoundary = qCanvas + Math.abs($topLeft.y - $bottomRight.y);
+
+               const sectorLeft = size * x;
+               const sectorTop = size * y;
+               const sectorRight = sectorLeft + size;
+               const sectorBottom = sectorTop + size;
+               return (
+                       sectorRight >= pCanvas &&
+                       pBoundary >= sectorLeft &&
+                       sectorBottom >= qCanvas &&
+                       qBoundary >= sectorTop
+               );
+       };
 </script>
 
 <div class="minimap">
 </script>
 
 <div class="minimap">
-  <table>
-    <tr>
-      <td class="{isActive($sensor, -1,-1) ? 'active' : ''}"></td>
-      <td class="{isActive($sensor, 0,-1) ? 'active' : ''}"></td>
-      <td class="{isActive($sensor, 1,-1) ? 'active' : ''}"></td>
-    </tr>
-    <tr>
-      <td class="{isActive($sensor, -1,0) ? 'active' : ''}"></td>
-      <td class="{isActive($sensor, 0,0) ? 'active' : ''}"></td>
-      <td class="{isActive($sensor, 1,0) ? 'active' : ''}"></td>
-    </tr>
-    <tr>
-      <td class="{isActive($sensor, -1,1) ? 'active' : ''}"></td>
-      <td class="{isActive($sensor, 0,1) ? 'active' : ''}"></td>
-      <td class="{isActive($sensor, 1,1) ? 'active' : ''}"></td>
-    </tr>
-  </table>
+       <table>
+               {#each sectors as _, y}
+                       <tr>
+                               {#each sectors[y] as _, x}
+                                       <MinimapSector x="{x}," y="{y}," {size} isActive={isActive(x, y, $topLeft)} />
+                               {/each}
+                       </tr>
+               {/each}
+       </table>
 </div>
 
 <style>
 </div>
 
 <style>
-  .minimap {
-    background-color: #fff;
-    padding: 4px;
-    position: fixed;
-    top: 2px;
-    right: 2px;
-    font-smooth: never;
-    -webkit-font-smoothing : none;
-  }
-
-  td {
-    width: 10px;
-    height: 10px;
-    border: 1px solid black;
-  }
-
-  td.active {
-    background-color: magenta;
-  }
+       .minimap {
+               background-color: #fff;
+               padding: 4px;
+               position: fixed;
+               top: 2px;
+               right: 2px;
+               font-smooth: never;
+               -webkit-font-smoothing: none;
+       }
+       table {
+               border-collapse: collapse;
+       }
 </style>
 </style>
-
diff --git a/src/lib/components/minimap_sector.svelte b/src/lib/components/minimap_sector.svelte
new file mode 100644 (file)
index 0000000..2e14043
--- /dev/null
@@ -0,0 +1,22 @@
+<script>
+       export let x;
+       export let y;
+       export let size;
+       export let isActive;
+
+       import { countElements } from '$lib/stores/widgets';
+</script>
+
+<td class={isActive ? 'active' : ''} />
+
+<style>
+       td {
+               width: 4px;
+               height: 4px;
+               border: 1px solid black;
+       }
+
+       td.active {
+               border: 2px solid cyan;
+       }
+</style>
index 94ba3db1d27e364dba42392efc7ab170e13d886d..4b7bccaacc4fbd3f41e5fd8aa0f3bc319c9967f3 100644 (file)
@@ -3,23 +3,24 @@
 </script>
 
 <div class="palette" transition:blink>
 </script>
 
 <div class="palette" transition:blink>
-  <p>
-    palette palette palette palette palette palette <br/>
-    palette palette palette palette palette palette <br/>
-    palette palette palette palette palette palette <br/>
-    palette palette palette palette palette palette <br/>
-    palette palette palette palette palette palette <br/>
-    palette palette palette palette palette palette <br/>
-  </p>
+       <p>
+               palette palette palette palette palette palette <br />
+               palette palette palette palette palette palette <br />
+               palette palette palette palette palette palette <br />
+               palette palette palette palette palette palette <br />
+               palette palette palette palette palette palette <br />
+               palette palette palette palette palette palette <br />
+       </p>
 </div>
 
 <style>
 </div>
 
 <style>
-  .palette {
-    position: fixed;
-    top: var(--palette-y);
-    left: var(--palette-x);
-    border: 1px solid black;
-    background-color: #fff;
-    overflow: hidden;
-  }
+       .palette {
+               position: fixed;
+               top: var(--palette-y);
+               left: var(--palette-x);
+               border: 1px solid black;
+               background-color: #fff;
+               overflow: hidden;
+    z-index: 10000;
+       }
 </style>
 </style>
index b6d38d83cfefeecb176a36741f24fc27ddcca0f9..94587058024a4f1b728c42aedd70d2afdd0b158a 100644 (file)
@@ -1,34 +1,33 @@
 <script>
 <script>
-  import { browser } from '$app/environment';
-  import { maxSize } from '$lib/config';
-  import { modulo } from '$lib/math';
-  import { canvas } from '$lib/stores/canvas';
-  import { sensor } from '$lib/stores/widgets';
+       import { browser } from '$app/environment';
+       import { maxSize } from '$lib/config';
+       import { modulo } from '$lib/math';
+       import { canvas } from '$lib/stores/canvas';
+       import { sensor } from '$lib/stores/widgets';
 
 
-  const kSensorSize = 2;
+       const kSensorSize = 2;
 
 
-  let left;
-  let right;
-  let top;
-  let bottom;
+       let left;
+       let right;
+       let top;
+       let bottom;
 
 
-  let timer;
-  const fetchItems = function fetchItems( left, top, right, bottom ) {
-    clearTimeout(timer);
+       let timer;
+       const fetchItems = function fetchItems(left, top, right, bottom) {
+               clearTimeout(timer);
                timer = setTimeout(() => {
                timer = setTimeout(() => {
-      sensor.set({ left, top, right, bottom });
+                       sensor.set({ left, top, right, bottom });
                }, 50);
                }, 50);
-  }
+       };
 
 
-  $: {
-    if (browser) {
-      left = modulo($canvas.x - window.screen.width * kSensorSize, maxSize);
-      top = modulo($canvas.y - window.screen.height * kSensorSize, maxSize);
-      right = left + 2 * window.screen.width * kSensorSize;
-      bottom = top + 2 * window.screen.height * kSensorSize;
-
-      fetchItems(left, top, right, bottom);
-    }
-  }
+       $: {
+               if (browser) {
+                       left = modulo($canvas.x - window.screen.width * kSensorSize, maxSize);
+                       top = modulo($canvas.y - window.screen.height * kSensorSize, maxSize);
+                       right = left + 2 * window.screen.width * kSensorSize;
+                       bottom = top + 2 * window.screen.height * kSensorSize;
 
 
+                       fetchItems(left, top, right, bottom);
+               }
+       }
 </script>
 </script>
index 907a01631d0b9847676d21c1037e3f9dc856a3fa..87a3ee578c7d921146c127727e9e93a6fb71dcc3 100644 (file)
@@ -1,89 +1,66 @@
 <script>
 <script>
-  import { bottomRight, topLeft } from '$lib/stores/canvas';
-  import { modulo } from '$lib/math';
-  import { maxSize } from '$lib/config';
-  export let widget;
-
-  const width = widget.box.right - widget.box.left;
-  const height = widget.box.bottom - widget.box.top;
-
-  // Coordinates in canvas space are (p,q)
-  // Coordinates in screen space are (x,y)
-
-  $: xWidget = 0;
-  $: yWidget = 0;
-
-  $: {
-
-    const pCanvas = modulo($topLeft.x, maxSize);
-    const qCanvas = modulo($topLeft.y, maxSize);
-
-    const pBoundary = pCanvas + Math.abs($topLeft.x - $bottomRight.x);
-    const qBoundary = qCanvas + Math.abs($topLeft.y - $bottomRight.y);
-
-    const pWidget = widget.box.left;
-    const qWidget = widget.box.top;
-
-    xWidget = pWidget - pCanvas;
-    yWidget = qWidget - qCanvas;
-
-    // Case 1: Boundary jump happens inside the box
-    if (pWidget < pCanvas
-        && pBoundary > maxSize
-        && pWidget < pBoundary - maxSize) {
-      xWidget = xWidget + maxSize;
-    }
-    // Case 2: Boundary jump happens to the left of the box
-    else if (pWidget > pCanvas
-        && pBoundary < maxSize
-        && pWidget > pBoundary) {
-      xWidget = xWidget - maxSize;
-    }
-
-    // Case 1: Boundary jump happens inside the box
-    if (qWidget < qCanvas
-        && qBoundary > maxSize
-        && qWidget < qBoundary - maxSize) {
-      yWidget = yWidget + maxSize;
-    }
-    // Case 2: Boundary jump happens above the top of the box
-    else if (qWidget > qCanvas
-        && qBoundary < maxSize
-        && qWidget > qBoundary) {
-      yWidget = yWidget - maxSize;
-    }
-
-
-    console.log('Max', maxSize,
-                'Widget Actual', widget.box.left, widget.box.top,
-                'Canvas WH', Math.abs($topLeft.x - $bottomRight.x), Math.abs($topLeft.y - $bottomRight.y),
-                'Canvas XY', $topLeft.x, $topLeft.y,
-                'Canvas PQ', pCanvas, qCanvas,
-                'Boundary XY', $bottomRight.x, $bottomRight.y,
-                'Boundary PQ', pBoundary, qBoundary,
-                'Widget Rendered', xWidget, yWidget,
-                'Calculated',
-                modulo(pWidget - pCanvas, maxSize),
-                modulo(qWidget - qCanvas, maxSize))
-
-  }
-
+       import { bottomRight, topLeft } from '$lib/stores/canvas';
+       import { modulo } from '$lib/math';
+       import { maxSize } from '$lib/config';
+       export let widget;
+
+       const width = widget.box.right - widget.box.left;
+       const height = widget.box.bottom - widget.box.top;
+
+       // Coordinates in canvas space are (p,q)
+       // Coordinates in screen space are (x,y)
+
+       $: xWidget = 0;
+       $: yWidget = 0;
+
+       $: {
+               const pCanvas = modulo($topLeft.x, maxSize);
+               const qCanvas = modulo($topLeft.y, maxSize);
+
+               const pBoundary = pCanvas + Math.abs($topLeft.x - $bottomRight.x);
+               const qBoundary = qCanvas + Math.abs($topLeft.y - $bottomRight.y);
+
+               const pWidget = widget.box.left;
+               const qWidget = widget.box.top;
+
+               xWidget = pWidget - pCanvas;
+               yWidget = qWidget - qCanvas;
+
+               // Case 1: Boundary jump happens inside the box
+               if (pWidget < pCanvas && pBoundary > maxSize && pWidget < pBoundary - maxSize) {
+                       xWidget = xWidget + maxSize;
+               }
+               // Case 2: Boundary jump happens to the left of the box
+               else if (pWidget > pCanvas && pBoundary < maxSize && pWidget > pBoundary) {
+                       xWidget = xWidget - maxSize;
+               }
+
+               // Case 1: Boundary jump happens inside the box
+               if (qWidget < qCanvas && qBoundary > maxSize && qWidget < qBoundary - maxSize) {
+                       yWidget = yWidget + maxSize;
+               }
+               // Case 2: Boundary jump happens above the top of the box
+               else if (qWidget > qCanvas && qBoundary < maxSize && qWidget > qBoundary) {
+                       yWidget = yWidget - maxSize;
+               }
+       }
 </script>
 
 </script>
 
-<div class="widget"
-  style:width="{width}px"
-  style:height="{height}px"
-  style:left="{xWidget}px"
-  style:top="{yWidget}px"
+<div
+       class="widget"
+       style:width="{width}px"
+       style:height="{height}px"
+       style:left="{xWidget}px"
+       style:top="{yWidget}px"
 >
 >
-  {widget.type}
+       {widget.type}
 </div>
 
 <style>
 </div>
 
 <style>
-  .widget {
-    position: fixed;
-    background-color: #f0f;
-    border: 1px solid black;
-    opacity: 0.5;
-  }
+       .widget {
+               position: fixed;
+               background-color: #f0f;
+               border: 1px solid black;
+               opacity: 0.5;
+       }
 </style>
 </style>
index c745cdc26f2ffdac73f3c58147e036c89ed97cf8..9b45cf0e6886f308061e88424fc3ecdfa3f0e537 100644 (file)
@@ -3,6 +3,6 @@
  * @param {number} dividend the number to divide
  * @param {number} divisor the divisor to calculate the remainder
  */
  * @param {number} dividend the number to divide
  * @param {number} divisor the divisor to calculate the remainder
  */
-export const modulo = function modulo (dividend, divisor) {
-  return ((dividend % divisor) + divisor) % divisor
+export const modulo = function modulo(dividend, divisor) {
+       return ((dividend % divisor) + divisor) % divisor;
 };
 };
diff --git a/src/lib/plugins/square.js b/src/lib/plugins/square.js
new file mode 100644 (file)
index 0000000..e69de29
index 2a5e89c36e118b5929e93abb84156fb4a1db0b70..ed0a5d73f8a95cd5c53e03bdc4c21f5b6c7d18fa 100644 (file)
@@ -1,24 +1,24 @@
 import { browser } from '$app/environment';
 import { derived, writable } from 'svelte/store';
 
 import { browser } from '$app/environment';
 import { derived, writable } from 'svelte/store';
 
-export const canvas = writable({x: 0, y: 0});
+export const canvas = writable({ x: 0, y: 0 });
 
 export const topLeft = derived(canvas, ($canvas) => {
 
 export const topLeft = derived(canvas, ($canvas) => {
-  if (browser) {
-    return {
-      x: $canvas.x - window.screen.width/2,
-      y: $canvas.y - window.screen.height/2
-    };
-  }
-  return {x: 0, y: 0}
+       if (browser) {
+               return {
+                       x: $canvas.x - window.screen.width / 2,
+                       y: $canvas.y - window.screen.height / 2
+               };
+       }
+       return { x: 0, y: 0 };
 });
 
 export const bottomRight = derived(canvas, ($canvas) => {
 });
 
 export const bottomRight = derived(canvas, ($canvas) => {
-  if (browser) {
-    return {
-      x: $canvas.x + window.screen.width/2,
-      y: $canvas.y + window.screen.height/2
-    };
-  }
-  return {x: 0, y: 0}
+       if (browser) {
+               return {
+                       x: $canvas.x + window.screen.width / 2,
+                       y: $canvas.y + window.screen.height / 2
+               };
+       }
+       return { x: 0, y: 0 };
 });
 });
index 9bdb649f8bbae3dbde4722328589e578ae35142f..372cad10c6f1257a3459e9d19ce46a18aa9ffbe5 100644 (file)
@@ -1,55 +1,64 @@
-import { derived, writable } from 'svelte/store';
+import { derived, readable, writable } from 'svelte/store';
 import { createClient } from '@supabase/supabase-js';
 import { supabase } from '$lib/config';
 import { maxSize } from '$lib/config';
 
 import { createClient } from '@supabase/supabase-js';
 import { supabase } from '$lib/config';
 import { maxSize } from '$lib/config';
 
-const boxParser = /\(([0-9]+),([0-9]+)\),\(([0-9]+),([0-9]+)\)/
+const boxParser = /\(([0-9]+),([0-9]+)\),\(([0-9]+),([0-9]+)\)/;
 const client = createClient(supabase.url, supabase.key);
 
 const client = createClient(supabase.url, supabase.key);
 
-export const sensor = writable({left: 0, top: 0, right: 0, bottom: 0});
+export const sensor = writable({ left: 0, top: 0, right: 0, bottom: 0 });
 
 
-const getBoxes = function getBoxes ({left, top, right, bottom}) {
-  const results = [
-    `box.ov."((${left},${top}),(${right},${bottom}))"`,
-    `box.ov."((${left+maxSize},${top+maxSize}),(${right+maxSize},${bottom+maxSize}))"`,
-    `box.ov."((${left+maxSize},${top}),(${right+maxSize},${bottom}))"`,
-    `box.ov."((${left},${top+maxSize}),(${right},${bottom+maxSize}))"`,
-    `box.ov."((${left-maxSize},${top-maxSize}),(${right-maxSize},${bottom-maxSize}))"`,
-    `box.ov."((${left-maxSize},${top}),(${right-maxSize},${bottom}))"`,
-    `box.ov."((${left},${top-maxSize}),(${right},${bottom-maxSize}))"`
-  ];
+const getBoxes = function getBoxes({ left, top, right, bottom }) {
+       const results = [
+               `box.ov."((${left},${top}),(${right},${bottom}))"`,
+               `box.ov."((${left + maxSize},${top + maxSize}),(${right + maxSize},${bottom + maxSize}))"`,
+               `box.ov."((${left + maxSize},${top}),(${right + maxSize},${bottom}))"`,
+               `box.ov."((${left},${top + maxSize}),(${right},${bottom + maxSize}))"`,
+               `box.ov."((${left - maxSize},${top - maxSize}),(${right - maxSize},${bottom - maxSize}))"`,
+               `box.ov."((${left - maxSize},${top}),(${right - maxSize},${bottom}))"`,
+               `box.ov."((${left},${top - maxSize}),(${right},${bottom - maxSize}))"`
+       ];
 
 
-  return results
+       return results;
 };
 
 const serialize = function serialize(widget) {
 };
 
 const serialize = function serialize(widget) {
+       const boxComponents = widget.box.match(boxParser).slice(1, 5).map(Number);
+       const box = {
+               left: Math.min(boxComponents[0], boxComponents[2]),
+               right: Math.max(boxComponents[0], boxComponents[2]),
+               top: Math.min(boxComponents[1], boxComponents[3]),
+               bottom: Math.max(boxComponents[1], boxComponents[3])
+       };
 
 
-  const boxComponents = widget.box
-    .match(boxParser)
-    .slice(1,5)
-    .map(Number);
-  const box = {
-    left: Math.min(boxComponents[0], boxComponents[2]),
-    right: Math.max(boxComponents[0], boxComponents[2]),
-    top: Math.min(boxComponents[1], boxComponents[3]),
-    bottom: Math.max(boxComponents[1], boxComponents[3])
-  };
-
-  return {...widget, box }
+       return { ...widget, box };
 };
 
 let ac = null;
 export const widgets = derived(sensor, async function ($sensor, set) {
 };
 
 let ac = null;
 export const widgets = derived(sensor, async function ($sensor, set) {
-
-  const boxes = getBoxes($sensor);
-  ac && ac.abort()
-  ac = new AbortController();
-  const { data } = await client
-    .from('widgets')
-    .select()
-    .or(boxes.join(','))
-    .abortSignal(ac.signal)
-  if (data) {
-    return set(data.map(serialize));
-  }
+       const boxes = getBoxes($sensor);
+       ac && ac.abort();
+       ac = new AbortController();
+       const { data } = await client.from('widgets').select().or(boxes.join(',')).abortSignal(ac.signal);
+       if (data) {
+               return set(data.map(serialize));
+       }
 });
 });
+
+export const countElements = function countElements(left, top, right, bottom) {
+       let countAc = null;
+       return readable(0, (set) => {
+               (async function () {
+                       countAc && countAc.abort();
+                       countAc = new AbortController();
+                       const { data } = await client
+                               .from('widgets')
+                               .select('*', { head: true, count: 'estimated' })
+                               .or(`box.ov."((${left},${top}),(${right},${bottom}))"`)
+                               .abortSignal(countAc.signal);
+                       if (data) {
+                               return set(data);
+                       }
+               })();
+       });
+};
index e1b87bc984ace5fca331f01dcbeb9d837b3d07a0..2e511e004988ec574f1b3d5406d22bb9d4f558cd 100644 (file)
@@ -1,5 +1,5 @@
 <script>
 <script>
-  import '../app.css'
+       import '../app.css';
 </script>
 
 <slot />
 </script>
 
 <slot />
index 1fd4752135ed657eec51f967f07c4f0a2eda284d..8dd0a162f2c3c914ddc9097aa9b34b67a4e8d341 100644 (file)
@@ -1,88 +1,87 @@
 <script>
 <script>
-  import Sensor from '$lib/components/sensor.svelte';
-  import Background from '$lib/components/background.svelte';
-  import Palette from '$lib/components/palette.svelte';
-  import Hud from '$lib/components/hud.svelte';
-  import Minimap from '$lib/components/minimap.svelte';
-  import Widget from '$lib/components/widget.svelte';
-  import { modulo } from '$lib/math';
-  import { widgets } from '$lib/stores/widgets';
-  import { canvas } from '$lib/stores/canvas';
+       import Sensor from '$lib/components/sensor.svelte';
+       import Background from '$lib/components/background.svelte';
+       import Palette from '$lib/components/palette.svelte';
+       import Hud from '$lib/components/hud.svelte';
+       import Minimap from '$lib/components/minimap.svelte';
+       import Widget from '$lib/components/widget.svelte';
+       import { modulo } from '$lib/math';
+       import { widgets } from '$lib/stores/widgets';
+       import { canvas } from '$lib/stores/canvas';
 
 
-  import { coordinateLength, maxSize } from '$lib/config';
+       import { maxSize } from '$lib/config';
 
 
-  $: shouldShowPalette = false;
+       $: shouldShowPalette = false;
 
 
-  let dragging = false;
+       let dragging = false;
 
 
-  const moveCanvas = function moveCanvas(event) {
+       const moveCanvas = function moveCanvas(event) {
+               if (dragging) {
+                       let deltaX = event.x - dragging.x;
+                       let deltaY = event.y - dragging.y;
+                       let x = modulo($canvas.x - deltaX, maxSize);
+                       let y = modulo($canvas.y - deltaY, maxSize);
+                       dragging.x = event.x;
+                       dragging.y = event.y;
+                       canvas.set({ x, y });
+               }
+       };
 
 
-    if (dragging) {
-      let deltaX = event.x - dragging.x;
-      let deltaY = event.y - dragging.y;
-      let x = modulo($canvas.x - deltaX, maxSize);
-      let y = modulo($canvas.y - deltaY, maxSize);
-      dragging.x = event.x;
-      dragging.y = event.y;
-      canvas.set({ x, y })
-    }
-  }
+       const startDragging = function startDragging(event) {
+               dragging = {
+                       x: event.x,
+                       y: event.y
+               };
+       };
 
 
-  const startDragging = function startDragging(event) {
-    dragging = {
-      x: event.x,
-      y: event.y
-    };
-  }
+       const stopDragging = function startDragging() {
+               dragging = null;
+       };
 
 
-  const stopDragging = function startDragging() {
-    dragging = null;
-  }
+       const showPalette = function showPalette(event) {
+               event.preventDefault();
+               dragging = null;
+               document.documentElement.style.setProperty('--palette-x', event.clientX + 'px');
+               document.documentElement.style.setProperty('--palette-y', event.clientY + 'px');
+               shouldShowPalette = true;
+       };
 
 
-  const showPalette = function showPalette(event) {
-    event.preventDefault();
-    dragging = null;
-    document.documentElement.style.setProperty('--palette-x', event.clientX + 'px');
-    document.documentElement.style.setProperty('--palette-y', event.clientY + 'px');
-    shouldShowPalette = true;
-  }
-
-  const hidePalette = function hidePalette() {
-    event.preventDefault();
-    shouldShowPalette = false;
-  }
+       const hidePalette = function hidePalette() {
+               event.preventDefault();
+               shouldShowPalette = false;
+       };
 </script>
 
 <div
 </script>
 
 <div
-  class="canvas"
-  on:click={hidePalette}
-  on:contextmenu={showPalette}
-  on:mousedown={startDragging}
-  on:mouseup={stopDragging}
-  on:mousemove={moveCanvas}
+       class="canvas"
+       on:click={hidePalette}
+       on:contextmenu={showPalette}
+       on:mousedown={startDragging}
+       on:mouseup={stopDragging}
+       on:mousemove={moveCanvas}
 >
 >
-  <Sensor />
-  <Background />
-  <Hud />
-  <Minimap />
+       <Sensor />
+       <Background />
+       <Hud />
+       <Minimap />
 
 
-  {#if shouldShowPalette }
-    <Palette/>
-  {/if}
+       {#if shouldShowPalette}
+               <Palette />
+       {/if}
 
 
-  {#if $widgets}
-    {#each $widgets as widget}
-      <Widget widget={widget}/>
-    {/each}
-  {/if}
+       {#if $widgets}
+               {#each $widgets as widget}
+                       <Widget {widget} />
+               {/each}
+       {/if}
 </div>
 
 <style>
 </div>
 
 <style>
-  .canvas {
-    user-select: none;
-    padding: 0;
-    margin: 0;
-    width: 100vw;
-    height: 100vh;
-  }
+       .canvas {
+               user-select: none;
+               padding: 0;
+               margin: 0;
+               width: 100vw;
+               height: 100vh;
+       }
 </style>
 </style>