Spaces:
Sleeping
Sleeping
github-actions[bot] commited on
Commit ·
e0552b0
0
Parent(s):
Sync from GitHub 33c12db74322f3d28409b5dc0a8c441914c9178b
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .python-version +1 -0
- Dockerfile +40 -0
- README.md +9 -0
- frontend/client/_app/immutable/assets/0.DpcAwFkV.css +2 -0
- frontend/client/_app/immutable/assets/0.DpcAwFkV.css.br +0 -0
- frontend/client/_app/immutable/assets/0.DpcAwFkV.css.gz +0 -0
- frontend/client/_app/immutable/assets/2.BIbYdWBv.css +1 -0
- frontend/client/_app/immutable/assets/2.BIbYdWBv.css.br +0 -0
- frontend/client/_app/immutable/assets/2.BIbYdWBv.css.gz +0 -0
- frontend/client/_app/immutable/assets/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2 +0 -0
- frontend/client/_app/immutable/assets/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2 +0 -0
- frontend/client/_app/immutable/assets/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2 +0 -0
- frontend/client/_app/immutable/assets/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2 +0 -0
- frontend/client/_app/immutable/assets/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2 +0 -0
- frontend/client/_app/immutable/assets/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2 +0 -0
- frontend/client/_app/immutable/chunks/Bw-0QipA.js +3 -0
- frontend/client/_app/immutable/chunks/Bw-0QipA.js.br +0 -0
- frontend/client/_app/immutable/chunks/Bw-0QipA.js.gz +0 -0
- frontend/client/_app/immutable/chunks/H_O4PGe5.js +1 -0
- frontend/client/_app/immutable/chunks/H_O4PGe5.js.br +0 -0
- frontend/client/_app/immutable/chunks/H_O4PGe5.js.gz +0 -0
- frontend/client/_app/immutable/chunks/kNaey6uv.js +1 -0
- frontend/client/_app/immutable/chunks/kNaey6uv.js.br +0 -0
- frontend/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
- frontend/client/_app/immutable/chunks/xihTtKlq.js +1 -0
- frontend/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
- frontend/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- frontend/client/_app/immutable/entry/app.BHLFJpHZ.js +2 -0
- frontend/client/_app/immutable/entry/app.BHLFJpHZ.js.br +0 -0
- frontend/client/_app/immutable/entry/app.BHLFJpHZ.js.gz +0 -0
- frontend/client/_app/immutable/entry/start.Bbjycs44.js +1 -0
- frontend/client/_app/immutable/entry/start.Bbjycs44.js.br +1 -0
- frontend/client/_app/immutable/entry/start.Bbjycs44.js.gz +0 -0
- frontend/client/_app/immutable/nodes/0.Df0rgt8-.js +1 -0
- frontend/client/_app/immutable/nodes/0.Df0rgt8-.js.br +0 -0
- frontend/client/_app/immutable/nodes/0.Df0rgt8-.js.gz +0 -0
- frontend/client/_app/immutable/nodes/1.Cp2o0XAs.js +1 -0
- frontend/client/_app/immutable/nodes/1.Cp2o0XAs.js.br +0 -0
- frontend/client/_app/immutable/nodes/1.Cp2o0XAs.js.gz +0 -0
- frontend/client/_app/immutable/nodes/2.BTNl2Bsv.js +0 -0
- frontend/client/_app/immutable/nodes/2.BTNl2Bsv.js.br +0 -0
- frontend/client/_app/immutable/nodes/2.BTNl2Bsv.js.gz +0 -0
- frontend/client/_app/version.json +1 -0
- frontend/client/_app/version.json.br +0 -0
- frontend/client/_app/version.json.gz +0 -0
- frontend/client/robots.txt +2 -0
- frontend/client/robots.txt.br +3 -0
- frontend/client/robots.txt.gz +0 -0
- frontend/env.js +94 -0
- frontend/handler.js +1494 -0
.python-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
3.13
|
Dockerfile
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM node:22-bookworm-slim
|
| 2 |
+
|
| 3 |
+
WORKDIR /app
|
| 4 |
+
|
| 5 |
+
ENV PYTHONUNBUFFERED=1 \
|
| 6 |
+
UV_PYTHON=3.13 \
|
| 7 |
+
UV_LINK_MODE=copy
|
| 8 |
+
|
| 9 |
+
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
|
| 10 |
+
|
| 11 |
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 12 |
+
bash \
|
| 13 |
+
ca-certificates \
|
| 14 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 15 |
+
|
| 16 |
+
RUN uv python install 3.13
|
| 17 |
+
|
| 18 |
+
COPY .python-version pyproject.toml uv.lock ./
|
| 19 |
+
|
| 20 |
+
COPY koja_diffuser ./koja_diffuser
|
| 21 |
+
|
| 22 |
+
RUN uv sync --locked
|
| 23 |
+
|
| 24 |
+
COPY frontend ./frontend
|
| 25 |
+
|
| 26 |
+
EXPOSE 7860
|
| 27 |
+
|
| 28 |
+
CMD ["bash", "-lc", "\
|
| 29 |
+
set -euo pipefail; \
|
| 30 |
+
node frontend/server.js & \
|
| 31 |
+
node_pid=$!; \
|
| 32 |
+
uv run uvicorn koja_diffuser.runtime.api:app --host 127.0.0.1 --port 8000 & \
|
| 33 |
+
api_pid=$!; \
|
| 34 |
+
trap 'kill $node_pid $api_pid 2>/dev/null || true' INT TERM EXIT; \
|
| 35 |
+
wait -n $node_pid $api_pid; \
|
| 36 |
+
status=$?; \
|
| 37 |
+
kill $node_pid $api_pid 2>/dev/null || true; \
|
| 38 |
+
wait 2>/dev/null || true; \
|
| 39 |
+
exit $status \
|
| 40 |
+
"]
|
README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: KoJaDiffuser
|
| 3 |
+
emoji: 🔥
|
| 4 |
+
colorFrom: yellow
|
| 5 |
+
colorTo: yellow
|
| 6 |
+
sdk: docker
|
| 7 |
+
app_port: 7860
|
| 8 |
+
pinned: false
|
| 9 |
+
---
|
frontend/client/_app/immutable/assets/0.DpcAwFkV.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
| 2 |
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-zinc-900:oklch(21% .006 285.885);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-4xl:calc(var(--radius) * 2.6);--ease-out:cubic-bezier(0, 0, .2, 1);--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"IBM Plex Sans Variable", sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:IBM Plex Sans Variable,sans-serif}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.relative{position:relative}.top-6{top:calc(var(--spacing) * 6)}.right-7{right:calc(var(--spacing) * 7)}.bottom-6{bottom:calc(var(--spacing) * 6)}.left-7{left:calc(var(--spacing) * 7)}.z-1{z-index:1}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.ms-auto{margin-inline-start:auto}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.h-2{height:calc(var(--spacing) * 2)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.min-h-16{min-height:calc(var(--spacing) * 16)}.w-11\/12{width:91.6667%}.w-80{width:calc(var(--spacing) * 80)}.w-\[min\(620px\,100\%\)\]{width:min(620px,100%)}.w-\[min\(780px\,calc\(100vw-360px\)\)\]{width:min(780px,100vw - 360px)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-\[min\(560px\,100\%\)\]{max-width:min(560px,100%)}.max-w-\[min\(640px\,92\%\)\]{max-width:min(640px,92%)}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-13{min-width:calc(var(--spacing) * 13)}.min-w-28{min-width:calc(var(--spacing) * 28)}.min-w-70{min-width:calc(var(--spacing) * 70)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-\[42vh\]{flex-basis:42vh}.origin-center{transform-origin:50%}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.96\]{scale:.96}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize-none{resize:none}.scrollbar-none{scrollbar-width:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-\[min\(var\(--radius-4xl\)\,24px\)\]{border-radius:min(var(--radius-4xl), 24px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-t-\[min\(var\(--radius-4xl\)\,24px\)\]{border-top-left-radius:min(var(--radius-4xl), 24px);border-top-right-radius:min(var(--radius-4xl), 24px)}.rounded-b-\[min\(var\(--radius-4xl\)\,24px\)\]{border-bottom-right-radius:min(var(--radius-4xl), 24px);border-bottom-left-radius:min(var(--radius-4xl), 24px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-\[\#afcbff\]{border-color:#afcbff}.border-\[\#e8a7b8\]{border-color:#e8a7b8}.border-border{border-color:var(--border)}.border-transparent{border-color:#0000}.border-transparent\!{border-color:#0000!important}.border-zinc-900\/10{border-color:#18181b1a}@supports (color:color-mix(in lab, red, red)){.border-zinc-900\/10{border-color:color-mix(in oklab, var(--color-zinc-900) 10%, transparent)}}.bg-background,.bg-background\/75{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/75{background-color:color-mix(in oklab, var(--background) 75%, transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-input\/50{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.bg-input\/50{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-zinc-900\/90{background-color:#18181be6}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\/90{background-color:color-mix(in oklab, var(--color-zinc-900) 90%, transparent)}}.bg-clip-padding{background-clip:padding-box}.p-0{padding:calc(var(--spacing) * 0)}.p-\[3px\]{padding:3px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-right{text-align:right}.font-heading{font-family:IBM Plex Sans Variable,sans-serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[clamp\(10px\,1\.45vw\,17px\)\]{font-size:clamp(10px,1.45vw,17px)}.text-\[clamp\(30px\,6vw\,70px\)\]{font-size:clamp(30px,6vw,70px)}.text-\[clamp\(42px\,8vw\,96px\)\]{font-size:clamp(42px,8vw,96px)}.leading-\[1\.02\]{--tw-leading:1.02;line-height:1.02}.leading-\[1\.05\]{--tw-leading:1.05;line-height:1.05}.leading-\[1\.45\]{--tw-leading:1.45;line-height:1.45}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.accent-\[\#afcbff\]{accent-color:#afcbff}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-\[0_8px_20px_rgba\(0\,0\,0\,0\.16\)\]{--tw-shadow:0 8px 20px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_12px_32px_rgba\(24\,24\,27\,0\.05\)\]{--tw-shadow:0 12px 32px var(--tw-shadow-color,#18181b0d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-black\/10{--tw-ring-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.ring-black\/10{--tw-ring-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.ring-foreground\/5{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/5{--tw-ring-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.saturate-100{--tw-saturate:saturate(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.saturate-\[0\.88\]{--tw-saturate:saturate(.88);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\,filter\]{transition-property:opacity,transform,filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[image-rendering\:pixelated\]{image-rendering:pixelated}.not-dark\:bg-clip-padding:not(:is(.dark *)){background-clip:padding-box}.group-has-\[\>input\]\/input-group\:pt-2:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2)}.group-has-\[\>input\]\/input-group\:pb-2:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[orientation\=vertical\]\/tabs\:h-fit:is(:where(.group\/tabs)[data-orientation=vertical] *){height:fit-content}.group-data-\[orientation\=vertical\]\/tabs\:w-full:is(:where(.group\/tabs)[data-orientation=vertical] *){width:100%}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:justify-start:is(:where(.group\/tabs)[data-orientation=vertical] *){justify-content:flex-start}.group-data-\[size\=sm\]\/card\:px-4:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 4)}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:p-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *){padding:calc(var(--spacing) * 1)}.group-data-vertical\/tabs\:px-3:is(:where(.group\/tabs):where([data-orientation=vertical]) *){padding-inline:calc(var(--spacing) * 3)}.group-data-vertical\/tabs\:py-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *){padding-block:calc(var(--spacing) * .5)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-\[orientation\=horizontal\]\/tabs\:after\:inset-x-0:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-\[orientation\=horizontal\]\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);bottom:-5px}.group-data-\[orientation\=horizontal\]\/tabs\:after\:h-0\.5:is(:where(.group\/tabs)[data-orientation=horizontal] *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-\[orientation\=vertical\]\/tabs\:after\:inset-y-0:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-\[orientation\=vertical\]\/tabs\:after\:-right-1:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-\[orientation\=vertical\]\/tabs\:after\:w-0\.5:is(:where(.group\/tabs)[data-orientation=vertical] *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media (hover:hover){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:ring-ring\/30:hover{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.hover\:ring-ring\/30:hover{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/30:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-end\]\:pr-2\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2.5)}.has-data-\[icon\=inline-end\]\:pr-3:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 3)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-2\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2.5)}.has-data-\[icon\=inline-start\]\:pl-3:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 3)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-3:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/30:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/30:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 30%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-3:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:mr-\[-0\.3rem\]:has(>button){margin-right:-.3rem}.has-\[\>button\]\:ml-\[-0\.3rem\]:has(>button){margin-left:-.3rem}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:calc(var(--spacing) * 0)}.has-\[\>kbd\]\:mr-\[-0\.15rem\]:has(>kbd){margin-right:-.15rem}.has-\[\>kbd\]\:ml-\[-0\.15rem\]:has(>kbd){margin-left:-.15rem}.has-\[\>svg\]\:p-0:has(>svg){padding:calc(var(--spacing) * 0)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-bounded\:text-foreground[data-bounded]{color:var(--foreground)}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[size\=sm\]\:gap-4[data-size=sm]{gap:calc(var(--spacing) * 4)}.data-\[size\=sm\]\:py-4[data-size=sm]{padding-block:calc(var(--spacing) * 4)}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-2xl *)[data-slot=kbd]{border-radius:calc(var(--radius) * 1.8)}:is(.\*\*\:data-\[slot\=kbd\]\:bg-muted-foreground\/10 *)[data-slot=kbd]{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){:is(.\*\*\:data-\[slot\=kbd\]\:bg-muted-foreground\/10 *)[data-slot=kbd]{background-color:color-mix(in oklab, var(--muted-foreground) 10%, transparent)}}:is(.\*\*\:data-\[slot\=kbd\]\:px-1\.5 *)[data-slot=kbd]{padding-inline:calc(var(--spacing) * 1.5)}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@media not all and (width>=48rem){.max-md\:top-4{top:calc(var(--spacing) * 4)}.max-md\:right-4{right:calc(var(--spacing) * 4)}.max-md\:bottom-4{bottom:calc(var(--spacing) * 4)}.max-md\:left-4{left:calc(var(--spacing) * 4)}.max-md\:w-\[min\(100\%-32px\,560px\)\]{width:min(100% - 32px,560px)}}@media (width>=48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:bg-background\/20:is(.dark *){background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-background\/20:is(.dark *){background-color:color-mix(in oklab, var(--background) 20%, transparent)}}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:ring-foreground\/10:is(.dark *){--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.dark\:ring-foreground\/10:is(.dark *){--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:hover\:bg-input\/30:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-active\:bg-background:where([data-state=active]),.data-active\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.data-active\:text-foreground:where([data-state=active]),.data-active\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-state=active]),.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]),.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.data-horizontal\:h-1:where([data-orientation=horizontal]){height:calc(var(--spacing) * 1)}.data-horizontal\:h-full:where([data-orientation=horizontal]){height:100%}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:min-h-40:where([data-orientation=vertical]){min-height:calc(var(--spacing) * 40)}.data-vertical\:w-1:where([data-orientation=vertical]){width:calc(var(--spacing) * 1)}.data-vertical\:w-auto:where([data-orientation=vertical]){width:auto}.data-vertical\:w-full:where([data-orientation=vertical]){width:100%}.data-vertical\:flex-col:where([data-orientation=vertical]){flex-direction:column}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-2.border-b{padding-bottom:calc(var(--spacing) * 2)}.\[\.border-b\]\:pb-5.border-b{padding-bottom:calc(var(--spacing) * 5)}.group-data-\[size\=sm\]\/card\:\[\.border-b\]\:pb-4:is(:where(.group\/card)[data-size=sm] *).border-b{padding-bottom:calc(var(--spacing) * 4)}.\[\.border-t\]\:pt-2.border-t{padding-top:calc(var(--spacing) * 2)}.\[\.border-t\]\:pt-5.border-t{padding-top:calc(var(--spacing) * 5)}.group-data-\[size\=sm\]\/card\:\[\.border-t\]\:pt-4:is(:where(.group\/card)[data-size=sm] *).border-t{padding-top:calc(var(--spacing) * 4)}:is(.\*\:\[img\:first-child\]\:rounded-t-\[min\(var\(--radius-4xl\)\,24px\)\]>*):is(img:first-child){border-top-left-radius:min(var(--radius-4xl), 24px);border-top-right-radius:min(var(--radius-4xl), 24px)}:is(.\*\:\[img\:last-child\]\:rounded-b-\[min\(var\(--radius-4xl\)\,24px\)\]>*):is(img:last-child){border-bottom-right-radius:min(var(--radius-4xl), 24px);border-bottom-left-radius:min(var(--radius-4xl), 24px)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--background:oklch(100% 0 0);--foreground:oklch(14.8% .004 228.8);--card:oklch(100% 0 0);--card-foreground:oklch(14.8% .004 228.8);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.8% .004 228.8);--primary:oklch(21.8% .008 223.9);--primary-foreground:oklch(98.7% .002 197.1);--secondary:oklch(96.3% .002 197.1);--secondary-foreground:oklch(21.8% .008 223.9);--muted:oklch(96.3% .002 197.1);--muted-foreground:oklch(56% .021 213.5);--accent:oklch(96.3% .002 197.1);--accent-foreground:oklch(21.8% .008 223.9);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.5% .005 214.3);--input:oklch(92.5% .005 214.3);--ring:oklch(72.3% .014 214.4);--chart-1:oklch(87% 0 0);--chart-2:oklch(55.6% 0 0);--chart-3:oklch(43.9% 0 0);--chart-4:oklch(37.1% 0 0);--chart-5:oklch(26.9% 0 0);--radius:.45rem;--sidebar:oklch(98.7% .002 197.1);--sidebar-foreground:oklch(14.8% .004 228.8);--sidebar-primary:oklch(21.8% .008 223.9);--sidebar-primary-foreground:oklch(98.7% .002 197.1);--sidebar-accent:oklch(96.3% .002 197.1);--sidebar-accent-foreground:oklch(21.8% .008 223.9);--sidebar-border:oklch(92.5% .005 214.3);--sidebar-ring:oklch(72.3% .014 214.4)}.dark{--background:oklch(14.8% .004 228.8);--foreground:oklch(98.7% .002 197.1);--card:oklch(21.8% .008 223.9);--card-foreground:oklch(98.7% .002 197.1);--popover:oklch(21.8% .008 223.9);--popover-foreground:oklch(98.7% .002 197.1);--primary:oklch(92.5% .005 214.3);--primary-foreground:oklch(21.8% .008 223.9);--secondary:oklch(27.5% .011 216.9);--secondary-foreground:oklch(98.7% .002 197.1);--muted:oklch(27.5% .011 216.9);--muted-foreground:oklch(72.3% .014 214.4);--accent:oklch(27.5% .011 216.9);--accent-foreground:oklch(98.7% .002 197.1);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(56% .021 213.5);--chart-1:oklch(87% 0 0);--chart-2:oklch(55.6% 0 0);--chart-3:oklch(43.9% 0 0);--chart-4:oklch(37.1% 0 0);--chart-5:oklch(26.9% 0 0);--sidebar:oklch(21.8% .008 223.9);--sidebar-foreground:oklch(98.7% .002 197.1);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.7% .002 197.1);--sidebar-accent:oklch(27.5% .011 216.9);--sidebar-accent-foreground:oklch(98.7% .002 197.1);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(56% .021 213.5)}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}
|
frontend/client/_app/immutable/assets/0.DpcAwFkV.css.br
ADDED
|
Binary file (8.01 kB). View file
|
|
|
frontend/client/_app/immutable/assets/0.DpcAwFkV.css.gz
ADDED
|
Binary file (9.14 kB). View file
|
|
|
frontend/client/_app/immutable/assets/2.BIbYdWBv.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
.step-column.svelte-1szbnx{scrollbar-width:none}.step-column.svelte-1szbnx::-webkit-scrollbar{display:none}
|
frontend/client/_app/immutable/assets/2.BIbYdWBv.css.br
ADDED
|
Binary file (68 Bytes). View file
|
|
|
frontend/client/_app/immutable/assets/2.BIbYdWBv.css.gz
ADDED
|
Binary file (94 Bytes). View file
|
|
|
frontend/client/_app/immutable/assets/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2
ADDED
|
Binary file (23.6 kB). View file
|
|
|
frontend/client/_app/immutable/assets/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2
ADDED
|
Binary file (29.5 kB). View file
|
|
|
frontend/client/_app/immutable/assets/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2
ADDED
|
Binary file (19.5 kB). View file
|
|
|
frontend/client/_app/immutable/assets/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2
ADDED
|
Binary file (31 kB). View file
|
|
|
frontend/client/_app/immutable/assets/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2
ADDED
|
Binary file (45.7 kB). View file
|
|
|
frontend/client/_app/immutable/assets/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2
ADDED
|
Binary file (13.2 kB). View file
|
|
|
frontend/client/_app/immutable/chunks/Bw-0QipA.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},n=Array.isArray,r=Array.prototype.indexOf,i=Array.prototype.includes,a=Array.from,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyDescriptors,l=Object.prototype,u=Array.prototype,d=Object.getPrototypeOf,f=Object.isExtensible;function p(e){return typeof e==`function`}var m=()=>{};function h(e){for(var t=0;t<e.length;t++)e[t]()}function g(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var v=1<<24,y=1024,b=2048,x=4096,S=8192,ee=16384,te=32768,ne=1<<25,re=65536,ie=1<<18,ae=1<<19,oe=1<<20,se=1<<25,ce=65536,le=1<<21,ue=1<<22,de=1<<23,fe=Symbol(`$state`),pe=Symbol(`legacy props`),me=Symbol(``),he=Symbol(`proxy path`),ge=Symbol(`attributes`),_e=Symbol(`class`),ve=Symbol(`style`),ye=Symbol(`text`),be=Symbol(`form reset`),xe=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},Se=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function Ce(e){throw Error(`https://svelte.dev/e/experimental_async_required`)}function we(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function Te(){throw Error(`https://svelte.dev/e/missing_context`)}function Ee(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function De(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Oe(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function ke(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ae(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function je(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Me(){throw Error(`https://svelte.dev/e/fork_discarded`)}function Ne(){throw Error(`https://svelte.dev/e/fork_timing`)}function Pe(){throw Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`)}function Fe(){throw Error(`https://svelte.dev/e/hydration_failed`)}function Ie(e){throw Error(`https://svelte.dev/e/lifecycle_legacy_only`)}function Le(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Re(){throw Error(`https://svelte.dev/e/set_context_after_init`)}function ze(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Be(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Ve(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function He(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ue={},C=Symbol(`uninitialized`),We=`http://www.w3.org/1999/xhtml`,Ge=`http://www.w3.org/2000/svg`,Ke=`@attach`;function qe(){console.warn(`https://svelte.dev/e/derived_inert`)}function Je(e){console.warn(`https://svelte.dev/e/hydratable_missing_but_expected`)}function Ye(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Xe(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Ze(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var w=!1;function T(e){w=e}var E;function D(e){if(e===null)throw Ye(),Ue;return E=e}function Qe(){return D(z(E))}function $e(e){if(w){if(z(E)!==null)throw Ye(),Ue;E=e}}function et(e=1){if(w){for(var t=e,n=E;t--;)n=z(n);E=n}}function tt(e=!0){for(var t=0,n=E;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=z(n);e&&n.remove(),n=i}}function nt(e){if(!e||e.nodeType!==8)throw Ye(),Ue;return e.data}function rt(e){return e===this.v}function it(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function at(e){return!it(e,this.v)}var O=!1,ot=!1;function st(e,t){return e.label=t,ct(e.v,t),e}function ct(e,t){return e?.[he]?.(t),e}function lt(e){return typeof e==`symbol`?`Symbol(${e.description})`:typeof e==`function`?`<function>`:typeof e==`object`&&e?`<object>`:String(e)}var k=null;function ut(e){k=e}function dt(){let e={};return[()=>(mt(e)||Te(),ft(e)),t=>pt(e,t)]}function ft(e){return yt(`getContext`).get(e)}function pt(e,t){let n=yt(`setContext`);if(O){var r=K.f;!U&&r&32&&!k.i||Re()}return n.set(e,t),t}function mt(e){return yt(`hasContext`).has(e)}function ht(){return yt(`getAllContexts`)}function gt(e,t=!1,n){k={p:k,i:!1,c:null,e:null,s:e,x:null,r:K,l:ot&&!t?{s:null,u:null,$:[]}:null}}function _t(e){var t=k,n=t.e;if(n!==null){t.e=null;for(var r of n)nr(r)}return e!==void 0&&(t.x=e),t.i=!0,k=t.p,e??{}}function vt(){return!ot||k!==null&&k.l===null}function yt(e){return k===null&&we(e),k.c??=new Map(bt(k)||void 0)}function bt(e){let t=e.p;for(;t!==null;){let e=t.c;if(e!==null)return e;t=t.p}return null}var xt=[];function St(){var e=xt;xt=[],h(e)}function A(e){if(xt.length===0&&!zt){var t=xt;queueMicrotask(()=>{t===xt&&St()})}xt.push(e)}function Ct(){for(;xt.length>0;)St()}function wt(e){var t=K;if(t===null)return U.f|=de,e;if(!(t.f&32768)&&!(t.f&4))throw e;Tt(e,t)}function Tt(e,t){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}var Et=~(b|x|y);function j(e,t){e.f=e.f&Et|t}function Dt(e){e.f&512||e.deps===null?j(e,y):j(e,x)}function Ot(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=ce,Ot(t.deps))}function kt(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Ot(e.deps),j(e,y)}var At=[];function jt(e,t=m){let n=null,r=new Set;function i(t){if(it(e,t)&&(e=t,n)){let t=!At.length;for(let t of r)t[1](),At.push(t,e);if(t){for(let e=0;e<At.length;e+=2)At[e][0](At[e+1]);At.length=0}}}function a(t){i(t(e))}function o(o,s=m){let c=[o,s];return r.add(c),r.size===1&&(n=t(i,a)||m),o(e),()=>{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:i,update:a,subscribe:o}}var Mt=!1,Nt=!1;function Pt(e){var t=Nt;try{return Nt=!1,[e(),Nt]}finally{Nt=t}}var Ft=null,It=null,M=null,Lt=null,N=null,Rt=null,zt=!1,Bt=!1,Vt=null,Ht=null,Ut=0,Wt=1,Gt=class e{id=Wt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;unblocked=new Set;#r=new Set;#i=new Set;#a=new Set;#o=0;#s=new Map;#c=null;#l=[];#u=[];#d=new Set;#f=new Set;#p=new Map;#m=new Set;is_fork=!1;#h=!1;#g(){if(this.is_fork)return!0;for(let n of this.#s.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#p.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#p.has(e)||this.#p.set(e,{d:[],m:[]}),this.#m.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#p.get(e);if(n){this.#p.delete(e);for(var r of n.d)j(r,b),t(r);for(r of n.m)j(r,x),t(r)}this.#m.add(e)}#_(){if(this.#e=!0,Ut++>1e3&&(this.#w(),qt()),!this.#g()){for(let e of this.#d)this.#f.delete(e),j(e,b),this.schedule(e);for(let e of this.#f)j(e,x),this.schedule(e)}let t=this.#l;this.#l=[],this.apply();var n=Vt=[],r=[],i=Ht=[];for(let e of t)try{this.#v(e,n,r)}catch(t){throw en(e),t}if(M=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Vt=null,Ht=null,this.#g()){this.#x(r),this.#x(n);for(let[e,t]of this.#p)$t(e,t);i.length>0&&M.#_();return}let o=this.#y();if(o){o.#b(this);return}this.#d.clear(),this.#f.clear();for(let e of this.#r)e(this);this.#r.clear(),Lt=this,Jt(r),Jt(n),Lt=null,this.#c?.resolve();var s=M;if(this.linked&&this.#o===0&&this.#w(),O&&!this.linked&&(this.#S(),M=s),this.#l.length>0){s===null&&(s=this,this.#C());let e=s;e.#l.push(...this.#l.filter(t=>!e.#l.includes(t)))}s!==null&&s.#_()}#v(e,t,n){e.f^=y;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#p.has(r))&&r.fn!==null){a?r.f^=y:i&4?t.push(r):O&&i&16777224?n.push(r):Nr(r)&&(i&16&&this.#f.add(r),Rr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#b(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve)}let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#f.delete(i),j(i,b),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#w(),M=this,this.#_()}#x(e){for(var t=0;t<e.length;t+=1)kt(e[t],this.#d,this.#f)}capture(e,t,n=!1){e.v!==C&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),N?.set(e,t)),this.is_fork||(e.v=t)}activate(){M=this}deactivate(){M=null,N=null}flush(){try{Bt=!0,M=this,this.#_()}finally{Ut=0,Rt=null,Vt=null,Ht=null,Bt=!1,M=null,N=null,Sn.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear(),this.#a.clear(),this.#w()}register_created_effect(e){this.#u.push(e)}#S(){this.#w();for(let l=Ft;l!==null;l=l.#n){var e=l.id<this.id,t=[];for(let[r,[i,a]]of this.current){if(l.current.has(r)){var n=l.current.get(r)[0];if(e&&i!==n)l.current.set(r,[i,a]);else continue}t.push(r)}if(e)for(let[e,t]of this.async_deriveds){let n=l.async_deriveds.get(e);n&&t.promise.then(n.resolve)}if(l.#e){var r=[...l.current.keys()].filter(e=>!this.current.has(e));if(r.length===0)e&&l.discard();else if(t.length>0){if(e)for(let e of this.#m)l.unskip_effect(e,e=>{e.f&4194320?l.schedule(e):l.#x([e])});l.activate();var i=new Set,a=new Map;for(var o of t)Yt(o,r,i,a);a=new Map;var s=[...l.current.keys()].filter(e=>this.current.has(e)?this.current.get(e)[0]!==e.v:!0);if(s.length>0)for(let e of this.#u)!(e.f&155648)&&Zt(e,s,a)&&(e.f&4194320?(j(e,b),l.schedule(e)):l.#d.add(e));if(l.#l.length>0&&!l.#h){l.apply();for(var c of l.#l)l.#v(c,[],[]);l.#l=[]}l.deactivate()}}}}increment(e,t){if(this.#o+=1,e){let e=this.#s.get(t)??0;this.#s.set(t,e+1)}}decrement(e,t){if(--this.#o,e){let e=this.#s.get(t)??0;e===1?this.#s.delete(t):this.#s.set(t,e-1)}this.#h||(this.#h=!0,A(()=>{this.#h=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#d.add(t);for(let e of t)this.#f.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}on_fork_commit(e){this.#a.add(e)}run_fork_commit_callbacks(){for(let e of this.#a)e(this);this.#a.clear()}settled(){return(this.#c??=g()).promise}static ensure(){if(M===null){let t=M=new e;t.#C(),!Bt&&!zt&&A(()=>{t.#e||t.flush()})}return M}apply(){if(!O||!this.is_fork&&this.#t===null&&this.#n===null){N=null;return}N=new Map;for(let[e,[t]]of this.current)N.set(e,t);for(let t=Ft;t!==null;t=t.#n)if(!(t===this||t.is_fork)){var e=!1;if(t.id<this.id){for(let[n,[,r]]of t.current)if(!r&&this.current.has(n)){e=!0;break}}if(!e)for(let[e,n]of t.previous)N.has(e)||N.set(e,n)}}schedule(e){if(Rt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Vt!==null&&t===K&&(O||(U===null||!(U.f&2))&&!Mt))return;if(n&96){if(!(n&1024))return;t.f^=y}}this.#l.push(t)}#C(){It===null?Ft=It=this:(It.#n=this,this.#t=It),It=this}#w(){var e=this.#t,t=this.#n;e===null?Ft=t:e.#n=t,t===null?It=e:t.#t=e,this.linked=!1}};function Kt(e){var t=zt;zt=!0;try{var n;for(e&&(M!==null&&!M.is_fork&&M.flush(),n=e());;){if(Ct(),M===null)return n;M.flush()}}finally{zt=t}}function qt(){try{je()}catch(e){Tt(e,Rt)}}var P=null;function Jt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&Nr(r)&&(P=new Set,Rr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&gr(r),P?.size>0)){Sn.clear();for(let e of P){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)P.has(n)&&(P.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Rr(n)}}P.clear()}}P=null}}function Yt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Yt(i,t,n,r):e&4194320&&!(e&2048)&&Zt(i,t,r)&&(j(i,b),Qt(i))}}function Xt(e,t){if(e.reactions!==null)for(let n of e.reactions){let e=n.f;e&2?Xt(n,t):e&131072&&(j(n,b),t.add(n))}}function Zt(e,t,n){let r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(let r of e.deps){if(i.call(t,r))return!0;if(r.f&2&&Zt(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function Qt(e){M.schedule(e)}function $t(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),j(e,y);for(var n=e.first;n!==null;)$t(n,t),n=n.next}}function en(e){j(e,y);for(var t=e.first;t!==null;)en(t),t=t.next}function tn(e){O||Ce(`fork`),M!==null&&Ne();var t=Gt.ensure();t.is_fork=!0,N=new Map;var n=!1,r=t.settled();return Kt(e),{commit:async()=>{if(n){await r;return}t.linked||Me(),n=!0,t.is_fork=!1;for(var[e,[i]]of t.current)e.v=i,e.wv=Mr();t.activate(),t.run_fork_commit_callbacks(),t.deactivate(),Kt(()=>{var e=new Set;for(var n of t.current.keys())Xt(n,e);Cn(e),On()}),t.flush(),await r},discard:()=>{for(var e of t.current.keys())e.wv=Mr();!n&&t.linked&&t.discard()}}}function nn(e){let t=0,n=Tn(0),r;return()=>{$n()&&(Q(n),cr(()=>(t===0&&(r=Ur(()=>e(()=>kn(n)))),t+=1,()=>{A(()=>{--t,t===0&&(r?.(),r=void 0,kn(n))})})))}}var rn=re|ae;function an(e,t,n,r){new on(e,t,n,r)}var on=class{parent;is_pending=!1;transform_error;#e;#t=w?E:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=nn(()=>(this.#m=Tn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=K;t.b=this,t.f|=128,n(e)},this.parent=K.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=ur(()=>{if(w){let e=this.#t;Qe();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},rn),w&&(this.#e=E)}#g(){try{this.#a=V(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=V(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=V(()=>e(this.#e)),A(()=>{var e=this.#c=document.createDocumentFragment(),t=L();e.append(t),this.#a=this.#x(()=>V(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,_r(this.#o,()=>{this.#o=null}),this.#b(M))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=V(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();xr(this.#a,e);let t=this.#n.pending;this.#o=V(()=>t(this.#e))}else this.#b(M)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){kt(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=K,n=U,r=k;q(this.#i),G(this.#i),ut(this.#i.ctx);try{return Gt.ensure(),e()}catch(e){return wt(e),null}finally{q(t),G(n),ut(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&_r(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,A(()=>{this.#d=!1,this.#m&&Dn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),Q(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;M?.is_fork?(this.#a&&M.skip_effect(this.#a),this.#o&&M.skip_effect(this.#o),this.#s&&M.skip_effect(this.#s),M.on_fork_commit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(H(this.#a),null),this.#o&&=(H(this.#o),null),this.#s&&=(H(this.#s),null),w&&(D(this.#t),et(),D(tt()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Ze();return}r=!0,i&&He(),this.#s!==null&&_r(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){Tt(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return V(()=>{var t=K;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return Tt(e,this.#i.parent),null}}))};A(()=>{var t;try{t=this.transform_error(e)}catch(e){Tt(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Tt(e,this.#i&&this.#i.parent)):o(t)})}};function sn(e,t,n,r){let i=vt()?dn:hn;var a=e.filter(e=>!e.settled);if(n.length===0&&a.length===0){r(t.map(i));return}var o=K,s=cn(),c=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function l(e){if(!(o.f&16384)){s();try{r(e)}catch(e){Tt(e,o)}ln()}}var u=un();if(n.length===0){c.then(()=>l(t.map(i))).finally(u);return}function d(){Promise.all(n.map(e=>pn(e))).then(e=>l([...t.map(i),...e])).catch(e=>Tt(e,o)).finally(u)}c?c.then(()=>{s(),d(),ln()}):d()}function cn(){var e=K,t=U,n=k,r=M;return function(i=!0){q(e),G(t),ut(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function ln(e=!0){q(null),G(null),ut(null),e&&M?.deactivate()}function un(){var e=K,t=e.b,n=M,r=t.is_rendered();return t.update_pending_count(1,n),n.increment(r,e),()=>{t.update_pending_count(-1,n),n.decrement(r,e)}}function dn(e){var t=2|b;return K!==null&&(K.f|=ae),{ctx:k,deps:null,effects:null,equals:rt,f:t,fn:e,reactions:null,rv:0,v:C,wv:0,parent:K,ac:null}}var fn=Symbol(`obsolete`);function pn(e,t,n){let r=K;r===null&&Ee();var i=void 0,a=Tn(C),o=!U,s=new Set;return sr(()=>{var t=K,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==xe&&n.reject(e)}).finally(ln)}catch(e){n.reject(e),ln()}var c=M;if(o){if(t.f&32768)var l=un();if(r.b.is_rendered())c.async_deriveds.get(t)?.reject(fn);else for(let e of s.values())e.reject(fn);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==fn&&(c.activate(),t?(a.f|=de,Dn(a,t)):(a.f&8388608&&(a.f^=de),Dn(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),er(()=>{for(let e of s)e.reject(fn)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function mn(e){let t=dn(e);return O||Er(t),t}function hn(e){let t=dn(e);return t.equals=at,t}function gn(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)H(t[n])}}function _n(e){var t,n=K,r=e.parent;if(!wr&&r!==null&&e.v!==C&&r.f&24576)return qe(),e.v;q(r);try{e.f&=~ce,gn(e),t=Fr(e)}finally{q(n)}return t}function vn(e){var t=_n(e);if(!e.equals(t)&&(e.wv=Mr(),(!M?.is_fork||e.deps===null)&&(M===null?e.v=t:(M.capture(e,t,!0),Lt?.capture(e,t,!0)),e.deps===null))){j(e,y);return}wr||(N===null?Dt(e):($n()||M?.is_fork)&&N.set(e,t))}function yn(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(xe),t.fn!==null&&(t.teardown=m),t.ac=null,Lr(t,0),pr(t))}function bn(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Rr(t)}var xn=new Set,Sn=new Map;function Cn(e){xn=e}var wn=!1;function Tn(e,t){return{f:0,v:e,reactions:null,equals:rt,rv:0,wv:0}}function F(e,t){let n=Tn(e,t);return Er(n),n}function En(e,t=!1,n=!0){let r=Tn(e);return t||(r.equals=at),ot&&n&&k!==null&&k.l!==null&&(k.l.s??=[]).push(r),r}function I(e,t,n=!1){return U!==null&&(!W||U.f&131072)&&vt()&&U.f&4325394&&(J===null||!i.call(J,e))&&Ve(),Dn(e,n?jn(t):t,Ht)}function Dn(e,t,n=null){if(!e.equals(t)){Sn.set(e,wr?t:e.v);var r=Gt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&_n(t),N===null&&Dt(t)}e.wv=Mr(),An(e,b,n),vt()&&K!==null&&K.f&1024&&!(K.f&96)&&(Z===null?Dr([e]):Z.push(e)),!r.is_fork&&xn.size>0&&!wn&&On()}return t}function On(){wn=!1;for(let e of xn){e.f&1024&&j(e,x);let t;try{t=Nr(e)}catch{t=!0}t&&Rr(e)}xn.clear()}function kn(e){I(e,e.v+1)}function An(e,t,n){var r=e.reactions;if(r!==null)for(var i=vt(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===K)){var l=(c&b)===0;if(l&&j(s,t),c&131072)xn.add(s);else if(c&2){var u=s;N?.delete(u),c&65536||(c&512&&(K===null||!(K.f&2097152))&&(s.f|=ce),An(u,x,n))}else if(l){var d=s;c&16&&P!==null&&P.add(d),n===null?Qt(d):n.push(d)}}}}function jn(e){if(typeof e!=`object`||!e||fe in e)return e;let t=d(e);if(t!==l&&t!==u)return e;var r=new Map,i=n(e),a=F(0),o=null,c=Ar,f=e=>{if(Ar===c)return e();var t=U,n=Ar;G(null),jr(c);var r=e();return G(t),jr(n),r};return i&&r.set(`length`,F(e.length,o)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&ze();var i=r.get(t);return i===void 0?f(()=>{var e=F(n.value,o);return r.set(t,e),e}):I(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>F(C,o));r.set(t,e),kn(a)}}else I(n,C),kn(a);return!0},get(t,n,i){if(n===fe)return e;var a=r.get(n),c=n in t;if(a===void 0&&(!c||s(t,n)?.writable)&&(a=f(()=>F(jn(c?t[n]:C),o)),r.set(n,a)),a!==void 0){var l=Q(a);return l===C?void 0:l}return Reflect.get(t,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=Q(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==C)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===fe)return!0;var n=r.get(t),i=n!==void 0&&n.v!==C||Reflect.has(e,t);return(n!==void 0||K!==null&&(!i||s(e,t)?.writable))&&(n===void 0&&(n=f(()=>F(i?jn(e[t]):C,o)),r.set(t,n)),Q(n)===C)?!1:i},set(e,t,n,c){var l=r.get(t),u=t in e;if(i&&t===`length`)for(var d=n;d<l.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>F(C,o)),r.set(d+``,p)):I(p,C)}if(l===void 0)(!u||s(e,t)?.writable)&&(l=f(()=>F(void 0,o)),I(l,jn(n)),r.set(t,l));else{u=l.v!==C;var m=f(()=>jn(n));I(l,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(c,n),!u){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&I(g,_+1)}kn(a)}return!0},ownKeys(e){Q(a);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==C});for(var[n,i]of r)i.v!==C&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Be()}})}function Mn(e){try{if(typeof e==`object`&&e&&fe in e)return e[fe]}catch{}return e}function Nn(e,t){return Object.is(Mn(e),Mn(t))}new Set([`copyWithin`,`fill`,`pop`,`push`,`reverse`,`shift`,`sort`,`splice`,`unshift`]);var Pn,Fn,In,Ln;function Rn(){if(Pn===void 0){Pn=window,Fn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;In=s(t,`firstChild`).get,Ln=s(t,`nextSibling`).get,f(e)&&(e[_e]=void 0,e[ge]=null,e[ve]=void 0,e.__e=void 0),f(n)&&(n[ye]=void 0)}}function L(e=``){return document.createTextNode(e)}function R(e){return In.call(e)}function z(e){return Ln.call(e)}function zn(e,t){if(!w)return R(e);var n=R(E);if(n===null)n=E.appendChild(L());else if(t&&n.nodeType!==3){var r=L();return n?.before(r),D(r),r}return t&&Gn(n),D(n),n}function Bn(e,t=!1){if(!w){var n=R(e);return n instanceof Comment&&n.data===``?z(n):n}if(t){if(E?.nodeType!==3){var r=L();return E?.before(r),D(r),r}Gn(E)}return E}function Vn(e,t=1,n=!1){let r=w?E:e;for(var i;t--;)i=r,r=z(r);if(!w)return r;if(n){if(r?.nodeType!==3){var a=L();return r===null?i?.after(a):r.before(a),D(a),a}Gn(r)}return D(r),r}function Hn(e){e.textContent=``}function Un(){return!O||P!==null?!1:(K.f&te)!==0}function Wn(e,t,n){let r=n?{is:n}:void 0;return document.createElementNS(t??`http://www.w3.org/1999/xhtml`,e,r)}function Gn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function Kn(e,t){if(t){let t=document.body;e.autofocus=!0,A(()=>{document.activeElement===t&&e.focus()})}}var qn=!1;function Jn(){qn||(qn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[be]?.()})},{capture:!0}))}function Yn(e){var t=U,n=K;G(null),q(null);try{return e()}finally{G(t),q(n)}}function Xn(e,t,n,r=n){e.addEventListener(t,()=>Yn(n));let i=e[be];i?e[be]=()=>{i(),r(!0)}:e[be]=()=>r(!0),Jn()}function Zn(e){K===null&&(U===null&&Ae(e),ke()),wr&&Oe(e)}function Qn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function B(e,t){var n=K;n!==null&&n.f&8192&&(e|=S);var r={ctx:k,deps:null,nodes:null,f:e|b|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};M?.register_created_effect(r);var i=r;if(e&4)Vt===null?Gt.ensure().schedule(r):Vt.push(r);else if(t!==null){try{Rr(r)}catch(e){throw H(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=re))}if(i!==null&&(i.parent=n,n!==null&&Qn(i,n),U!==null&&U.f&2&&!(e&64))){var a=U;(a.effects??=[]).push(i)}return r}function $n(){return U!==null&&!W}function er(e){let t=B(8,null);return j(t,y),t.teardown=e,t}function tr(e){Zn(`$effect`);var t=K.f;if(!U&&t&32&&!(t&32768)){var n=k;(n.e??=[]).push(e)}else return nr(e)}function nr(e){return B(4|oe,e)}function rr(e){return Zn(`$effect.pre`),B(8|oe,e)}function ir(e){Gt.ensure();let t=B(64|ae,e);return()=>{H(t)}}function ar(e){Gt.ensure();let t=B(64|ae,e);return(e={})=>new Promise(n=>{e.outro?_r(t,()=>{H(t),n(void 0)}):(H(t),n(void 0))})}function or(e){return B(4,e)}function sr(e){return B(ue|ae,e)}function cr(e,t=0){return B(8|t,e)}function lr(e,t=[],n=[],r=[]){sn(r,t,n,t=>{B(8,()=>e(...t.map(Q)))})}function ur(e,t=0){return B(16|t,e)}function dr(e,t=0){return B(v|t,e)}function V(e){return B(32|ae,e)}function fr(e){var t=e.teardown;if(t!==null){let e=wr,n=U;Tr(!0),G(null);try{t.call(null)}finally{Tr(e),G(n)}}}function pr(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&Yn(()=>{e.abort(xe)});var r=n.next;n.f&64?n.parent=null:H(n,t),n=r}}function mr(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||H(t),t=n}}function H(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(hr(e.nodes.start,e.nodes.end),n=!0),j(e,ne),pr(e,t&&!n),Lr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();fr(e),e.f^=ne,e.f|=ee;var i=e.parent;i!==null&&i.first!==null&&gr(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function hr(e,t){for(;e!==null;){var n=e===t?null:z(e);e.remove(),e=n}}function gr(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function _r(e,t,n=!0){var r=[];vr(e,r,!0);var i=()=>{n&&H(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function vr(e,t,n){if(!(e.f&8192)){e.f^=S;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;vr(i,t,o?n:!1)}i=a}}}function yr(e){br(e,!0)}function br(e,t){if(e.f&8192){e.f^=S,e.f&1024||(j(e,b),Gt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;br(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function xr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:z(n);t.append(n),n=i}}var Sr=null,Cr=!1,wr=!1;function Tr(e){wr=e}var U=null,W=!1;function G(e){U=e}var K=null;function q(e){K=e}var J=null;function Er(e){U!==null&&(!O||U.f&2)&&(J===null?J=[e]:J.push(e))}var Y=null,X=0,Z=null;function Dr(e){Z=e}var Or=1,kr=0,Ar=kr;function jr(e){Ar=e}function Mr(){return++Or}function Nr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~ce),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Nr(a)&&vn(a),a.wv>e.wv)return!0}t&512&&N===null&&j(e,y)}return!1}function Pr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!O&&J!==null&&i.call(J,e)))for(var a=0;a<r.length;a++){var o=r[a];o.f&2?Pr(o,t,!1):t===o&&(n?j(o,b):o.f&1024&&j(o,x),Qt(o))}}function Fr(e){var t=Y,n=X,r=Z,i=U,a=J,o=k,s=W,c=Ar,l=e.f;Y=null,X=0,Z=null,U=l&96?null:e,J=null,ut(e.ctx),W=!1,Ar=++kr,e.ac!==null&&(Yn(()=>{e.ac.abort(xe)}),e.ac=null);try{e.f|=le;var u=e.fn,d=u();e.f|=te;var f=e.deps,p=M?.is_fork;if(Y!==null){var m;if(p||Lr(e,X),f!==null&&X>0)for(f.length=X+Y.length,m=0;m<Y.length;m++)f[X+m]=Y[m];else e.deps=f=Y;if($n()&&e.f&512)for(m=X;m<f.length;m++)(f[m].reactions??=[]).push(e)}else !p&&f!==null&&X<f.length&&(Lr(e,X),f.length=X);if(vt()&&Z!==null&&!W&&f!==null&&!(e.f&6146))for(m=0;m<Z.length;m++)Pr(Z[m],e);if(i!==null&&i!==e){if(kr++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=kr;if(t!==null)for(let e of t)e.rv=kr;Z!==null&&(r===null?r=Z:r.push(...Z))}return e.f&8388608&&(e.f^=de),d}catch(e){return wt(e)}finally{e.f^=le,Y=t,X=n,Z=r,U=i,J=a,ut(o),W=s,Ar=c}}function Ir(e,t){let n=t.reactions;if(n!==null){var a=r.call(n,e);if(a!==-1){var o=n.length-1;o===0?n=t.reactions=null:(n[a]=n[o],n.pop())}}if(n===null&&t.f&2&&(Y===null||!i.call(Y,t))){var s=t;s.f&512&&(s.f^=512,s.f&=~ce),s.v!==C&&Dt(s),yn(s),Lr(s,0)}}function Lr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Ir(e,n[r])}function Rr(e){var t=e.f;if(!(t&16384)){j(e,y);var n=K,r=Cr;K=e,Cr=!0;try{t&16777232?mr(e):pr(e),fr(e);var i=Fr(e);e.teardown=typeof i==`function`?i:null,e.wv=Or}finally{Cr=r,K=n}}}async function zr(){if(O)return new Promise(e=>{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Kt()}function Br(){return Gt.ensure().settled()}function Q(e){var t=(e.f&2)!=0;if(Sr?.add(e),U!==null&&!W&&!(K!==null&&K.f&16384)&&(J===null||!i.call(J,e))){var n=U.deps;if(U.f&2097152)e.rv<kr&&(e.rv=kr,Y===null&&n!==null&&n[X]===e?X++:Y===null?Y=[e]:Y.push(e));else{U.deps??=[],i.call(U.deps,e)||U.deps.push(e);var r=e.reactions;r===null?e.reactions=[U]:i.call(r,U)||r.push(U)}}if(wr&&Sn.has(e))return Sn.get(e);if(t){var a=e;if(wr){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||Hr(a))&&(o=_n(a)),Sn.set(a,o),o}var s=(a.f&512)==0&&!W&&U!==null&&(Cr||(U.f&512)!=0),c=(a.f&te)===0;Nr(a)&&(s&&(a.f|=512),vn(a)),s&&!c&&(bn(a),Vr(a))}if(N?.has(e))return N.get(e);if(e.f&8388608)throw e.v;return e.v}function Vr(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(bn(t),Vr(t))}function Hr(e){if(e.v===C)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Sn.has(t)||t.f&2&&Hr(t))return!0;return!1}function Ur(e){var t=W;try{return W=!0,e()}finally{W=t}}function Wr(){return Symbol(Ke)}function Gr(e){return e.endsWith(`capture`)&&e!==`gotpointercapture`&&e!==`lostpointercapture`}var Kr=[`beforeinput`,`click`,`change`,`dblclick`,`contextmenu`,`focusin`,`focusout`,`input`,`keydown`,`keyup`,`mousedown`,`mousemove`,`mouseout`,`mouseover`,`mouseup`,`pointerdown`,`pointermove`,`pointerout`,`pointerover`,`pointerup`,`touchend`,`touchmove`,`touchstart`];function qr(e){return Kr.includes(e)}var Jr=`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`),Yr={formnovalidate:`formNoValidate`,ismap:`isMap`,nomodule:`noModule`,playsinline:`playsInline`,readonly:`readOnly`,defaultvalue:`defaultValue`,defaultchecked:`defaultChecked`,srcobject:`srcObject`,novalidate:`noValidate`,allowfullscreen:`allowFullscreen`,disablepictureinpicture:`disablePictureInPicture`,disableremoteplayback:`disableRemotePlayback`};function Xr(e){return e=e.toLowerCase(),Yr[e]??e}[...Jr];var Zr=[`touchstart`,`touchmove`];function Qr(e){return Zr.includes(e)}var $r=[`textarea`,`script`,`style`,`title`];function ei(e){return $r.includes(e)}var ti=Symbol(`events`),ni=new Set,ri=new Set;function ii(e,t,n,r={}){function i(e){if(r.capture||ui.call(t,e),!e.cancelBubble)return Yn(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?A(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function ai(e,t,n,r={}){var i=ii(t,e,n,r);return()=>{e.removeEventListener(t,i,r)}}function oi(e,t,n,r,i){var a={capture:r,passive:i},o=ii(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&er(()=>{t.removeEventListener(e,o,a)})}function si(e,t,n){(t[ti]??={})[e]=n}function ci(e){for(var t=0;t<e.length;t++)ni.add(e[t]);for(var n of ri)n(e)}var li=null;function ui(e){var t=this,n=t.ownerDocument,r=e.type,i=e.composedPath?.()||[],a=i[0]||e.target;li=e;var s=0,c=li===e&&e[ti];if(c){var l=i.indexOf(c);if(l!==-1&&(t===document||t===window)){e[ti]=t;return}var u=i.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(a=i[s]||e.target,a!==t){o(e,`currentTarget`,{configurable:!0,get(){return a||n}});var d=U,f=K;G(null),q(null);try{for(var p,m=[];a!==null;){var h=a.assignedSlot||a.parentNode||a.host||null;try{var g=a[ti]?.[r];g!=null&&(!a.disabled||e.target===a)&&g.call(a,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble||h===t||h===null)break;a=h}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[ti]=t,delete e.currentTarget,G(d),q(f)}}}var di=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function fi(e){return di?.createHTML(e)??e}function pi(e){var t=Wn(`template`);return t.innerHTML=fi(e.replaceAll(`<!>`,`<!---->`)),t.content}function $(e,t){var n=K;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function mi(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(w)return $(E,null),E;i===void 0&&(i=pi(a?e:`<!>`+e),n||(i=R(i)));var t=r||Fn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=R(t),s=t.lastChild;$(o,s)}else $(t,t);return t}}function hi(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=(t&1)!=0,a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(w)return $(E,null),E;if(!o){var e=R(pi(a));if(i)for(o=document.createDocumentFragment();R(e);)o.appendChild(R(e));else o=R(e)}var t=o.cloneNode(!0);if(i){var n=R(t),r=t.lastChild;$(n,r)}else $(t,t);return t}}function gi(e,t){return hi(e,t,`svg`)}function _i(e=``){if(!w){var t=L(e+``);return $(t,t),t}var n=E;return n.nodeType===3?Gn(n):(n.before(n=L()),D(n)),$(n,n),n}function vi(){if(w)return $(E,null),E;var e=document.createDocumentFragment(),t=document.createComment(``),n=L();return e.append(t,n),$(t,n),e}function yi(e,t){if(w){var n=K;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=E),Qe();return}e!==null&&e.before(t)}function bi(){if(w&&E&&E.nodeType===8&&E.textContent?.startsWith(`$`)){let e=E.textContent.substring(1);return Qe(),e}return(window.__svelte??={}).uid??=1,`c${window.__svelte.uid++}`}function xi(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ye]??=e.nodeValue)&&(e[ye]=n,e.nodeValue=`${n}`)}function Si(e,t){return Ti(e,t)}function Ci(e,t){Rn(),t.intro=t.intro??!1;let n=t.target,r=w,i=E;try{for(var a=R(n);a&&(a.nodeType!==8||a.data!==`[`);)a=z(a);if(!a)throw Ue;T(!0),D(a);let r=Ti(e,{...t,anchor:a});return T(!1),r}catch(r){if(r instanceof Error&&r.message.split(`
|
| 2 |
+
`).some(e=>e.startsWith(`https://svelte.dev/e/`)))throw r;return r!==Ue&&console.warn(`Failed to hydrate: `,r),t.recover===!1&&Fe(),Rn(),Hn(n),T(!1),Si(e,t)}finally{T(r),D(i)}}var wi=new Map;function Ti(e,{target:t,anchor:n,props:r={},events:i,context:o,intro:s=!0,transformError:c}){Rn();var l=void 0,u=ar(()=>{var s=n??t.appendChild(L());an(s,{pending:()=>{}},t=>{gt({});var n=k;if(o&&(n.c=o),i&&(r.$$events=i),w&&$(t,null),l=e(t,r)||{},w&&(K.nodes.end=E,E===null||E.nodeType!==8||E.data!==`]`))throw Ye(),Ue;_t()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=Qr(r);for(let e of[t,document]){var a=wi.get(e);a===void 0&&(a=new Map,wi.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,ui,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(a(ni)),ri.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=wi.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,ui),r.delete(e),r.size===0&&wi.delete(n)):r.set(e,i)}ri.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Ei.set(l,u),l}var Ei=new WeakMap;function Di(e,t){let n=Ei.get(e);return n?(Ei.delete(e),n(t)):Promise.resolve()}var Oi=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)yr(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(H(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();xr(r,t),t.append(L()),this.#n.set(e,{effect:r,fragment:t})}else H(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),_r(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(H(n.effect),this.#n.delete(e))};ensure(e,t){var n=M,r=Un();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=L();i.append(a),this.#n.set(e,{effect:V(()=>t(a)),fragment:i})}else this.#t.set(e,V(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else w&&(this.anchor=E),this.#a(n)}};function ki(e,t,n=!1){var r;w&&(r=E,Qe());var i=new Oi(e),a=n?re:0;function o(e,t){if(w){var n=nt(r);if(e!==parseInt(n.substring(1))){var a=tt();D(a),i.anchor=a,T(!1),i.ensure(e,t),T(!0);return}}i.ensure(e,t)}ur(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Ai(e,t){return t}function ji(e,t,n){for(var r=[],i=t.length,o,s=t.length,c=0;c<i;c++){let n=t[c];_r(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Mi(e,a(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;Hn(d),d.append(u),e.items.clear()}Mi(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Mi(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=se,xr(a,document.createDocumentFragment())):H(t[i],n)}}var Ni;function Pi(e,t,r,i,o,s=null){var c=e,l=new Map;if(t&4){var u=e;c=w?D(R(u)):u.appendChild(L())}w&&Qe();var d=null,f=hn(()=>{var e=r();return n(e)?e:e==null?[]:a(e)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,Ii(v,p,c,t,i),d!==null&&(p.length===0?d.f&33554432?(d.f^=se,Ri(d,null,c)):yr(d):_r(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:ur(()=>{p=Q(f);var e=p.length;let n=!1;w&&nt(c)===`[!`!=(e===0)&&(c=tt(),D(c),T(!1),n=!0);for(var a=new Set,u=M,v=Un(),y=0;y<e;y+=1){w&&E.nodeType===8&&E.data===`]`&&(c=E,n=!0,T(!1));var b=p[y],x=i(b,y),S=h?null:l.get(x);S?(S.v&&Dn(S.v,b),S.i&&Dn(S.i,y),v&&u.unskip_effect(S.e)):(S=Li(l,h?c:Ni??=L(),b,x,y,o,t,r),h||(S.e.f|=se),l.set(x,S)),a.add(x)}if(e===0&&s&&!d&&(h?d=V(()=>s(c)):(d=V(()=>s(Ni??=L())),d.f|=se)),e>a.size&&De(``,``,``),w&&e>0&&D(tt()),!h)if(m.set(u,a),v){for(let[e,t]of l)a.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);n&&T(!0),Q(f)}),flags:t,items:l,pending:m,outrogroups:null,fallback:d};h=!1,w&&(c=E)}function Fi(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Ii(e,t,n,r,i){var o=(r&8)!=0,s=t.length,c=e.items,l=Fi(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=i(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=i(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(yr(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=se,_===l)Ri(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),zi(e,d,_),zi(e,_,y),Ri(_,y,n),d=_,p=[],m=[],l=Fi(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],ee=p[p.length-1];for(x=0;x<p.length;x+=1)Ri(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);zi(e,S.prev,ee.next),zi(e,d,S),zi(e,ee,b),l=b,d=ee,--v,p=[],m=[]}else u.delete(_),Ri(_,l,n),zi(e,_.prev,_.next),zi(e,_,d===null?e.effect.first:d.next),zi(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Fi(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Fi(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Mi(e,a(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var te=[];if(u!==void 0)for(_ of u)_.f&8192||te.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&te.push(l),l=Fi(l.next);var ne=te.length;if(ne>0){var re=r&4&&s===0?n:null;if(o){for(v=0;v<ne;v+=1)te[v].nodes?.a?.measure();for(v=0;v<ne;v+=1)te[v].nodes?.a?.fix()}ji(e,te,re)}}o&&A(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Li(e,t,n,r,i,a,o,s){var c=o&1?o&16?Tn(n):En(n,!1,!1):null,l=o&2?Tn(i):null;return{v:c,i:l,e:V(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Ri(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=z(r);if(a.before(r),r===i)return;r=o}}function zi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Bi(e,t,...n){var r=new Oi(e);ur(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},re)}function Vi(e){return(t,...n)=>{var r=e(...n),i;w?(i=E,Qe()):(i=R(pi(r.render().trim())),t.before(i));let a=r.setup?.(i);$(i,i),typeof a==`function`&&er(a)}}function Hi(e,t,n){var r;w&&(r=E,Qe());var i=new Oi(e);ur(()=>{var e=t()??null;if(w&&nt(r)===`[`!=(e!==null)){var a=tt();D(a),i.anchor=a,T(!1),i.ensure(e,e&&(t=>n(t,e))),T(!0);return}i.ensure(e,e&&(t=>n(t,e)))},re)}function Ui(e,t,n,r,i,a){let o=w;w&&Qe();var s=null;w&&E.nodeType===1&&(s=E,Qe());var c=w?E:e,l=new Oi(c,!1);ur(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Ge:void 0;if(e===null){l.ensure(null,null);return}return l.ensure(e,t=>{if(e){if(s=w?s:Wn(e,a),$(s,s),r){w&&ei(e)&&s.append(document.createComment(``));var n=w?R(s):s.appendChild(L());w&&(n===null?T(!1):D(n)),r(s,n)}K.nodes.end=s,t.before(s)}w&&D(t)}),()=>{}},re),er(()=>{}),o&&(T(!0),D(c))}function Wi(e,t){let n=null,r=w;var i;if(w){n=E;for(var a=R(document.head);a!==null&&(a.nodeType!==8||a.data!==e);)a=z(a);if(a===null)T(!1);else{var o=z(a);a.remove(),D(o)}}w||(i=document.head.appendChild(L()));try{ur(()=>{var e=V(()=>t(i));e.f|=ie})}finally{r&&(T(!0),D(n))}}function Gi(e,t){var n=void 0,r;dr(()=>{n!==(n=t())&&(r&&=(H(r),null),n&&(r=V(()=>{or(()=>n(e))})))})}function Ki(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Ki(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function qi(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Ki(e))&&(r&&(r+=` `),r+=t);return r}function Ji(e){return typeof e==`object`?qi(e):e??``}var Yi=[...`
|
| 3 |
+
\r\f\xA0\v`];function Xi(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Yi.includes(r[o-1]))&&(s===r.length||Yi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Zi(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Qi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function $i(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Qi)),i&&c.push(...Object.keys(i).map(Qi));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Qi(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=Zi(r)),i&&(n+=Zi(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function ea(e,t,n,r,i,a){var o=e[_e];if(w||o!==n||o===void 0){var s=Xi(n,r,a);(!w||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[_e]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function ta(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function na(e,t,n,r){var i=e[ve];if(w||i!==t){var a=$i(t,r);(!w||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[ve]=t}else r&&(Array.isArray(r)?(ta(e,n?.[0],r[0]),ta(e,n?.[1],r[1],`important`)):ta(e,n,r));return r}function ra(e,t,r=!1){if(e.multiple){if(t==null)return;if(!n(t))return Xe();for(var i of e.options)i.selected=t.includes(aa(i));return}for(i of e.options)if(Nn(aa(i),t)){i.selected=!0;return}(!r||t!==void 0)&&(e.selectedIndex=-1)}function ia(e){var t=new MutationObserver(()=>{ra(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),er(()=>{t.disconnect()})}function aa(e){return`__value`in e?e.__value:e.value}var oa=Symbol(`class`),sa=Symbol(`style`),ca=Symbol(`is custom element`),la=Symbol(`is html`),ua=Se?`link`:`LINK`,da=Se?`input`:`INPUT`,fa=Se?`option`:`OPTION`,pa=Se?`select`:`SELECT`,ma=Se?`progress`:`PROGRESS`;function ha(e){if(w){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;va(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;va(e,`checked`,null),e.checked=r}}};e[be]=n,A(n),Jn()}}function ga(e,t){var n=xa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==ma)||(e.value=t??``)}function _a(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function va(e,t,n,r){var i=xa(e);w&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ua)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[me]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Ca(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function ya(e,t,n,r,i=!1,a=!1){if(w&&i&&e.nodeName===da){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||ha(o)}var s=xa(e),c=s[ca],l=!s[la];let u=w&&c;u&&T(!1);var d=t||{},f=e.nodeName===fa;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ji(n.class):(r||n[oa])&&(n.class=null),n[sa]&&(n.style??=null);var m=Ca(e);for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){ea(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[oa],n[oa]),d[i]=o,d[oa]=n[oa];continue}if(i===`style`){na(e,o,t?.[sa],n[sa]),d[i]=o,d[sa]=n[sa];continue}var h=d[i];if(!(o===h&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var g=i[0]+i[1];if(g!==`$$`)if(g===`on`){let t={},n=`$$`+i,r=i.slice(2);var _=qr(r);if(Gr(r)&&(r=r.slice(0,-7),t.capture=!0),!_&&h){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(_)si(r,e,o),ci([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=ii(r,e,a,t)}}else if(i===`style`)va(e,i,o);else if(i===`autofocus`)Kn(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)_a(e,o);else{var v=i;l||(v=Xr(v));var y=v===`defaultValue`||v===`defaultChecked`;if(o==null&&!c&&!y)if(s[i]=null,v===`value`||v===`checked`){let n=e,r=t===void 0;if(v===`value`){let e=n.defaultValue;n.removeAttribute(v),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(v),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else y||m.includes(v)&&(c||typeof o!=`string`)?(e[v]=o,v in s&&(s[v]=C)):typeof o!=`function`&&va(e,v,o,a)}}}return u&&T(!0),d}function ba(e,t,n=[],r=[],i=[],a,o=!1,s=!1){sn(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===pa,l=!1;if(dr(()=>{var u=t(...n.map(Q)),d=ya(e,r,u,a,o,s);l&&c&&`value`in u&&ra(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||H(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&H(i[t]),i[t]=V(()=>Gi(e,()=>f))),d[t]=f}r=d}),c){var u=e;or(()=>{ra(u,r.value,!0),ia(u)})}l=!0})}function xa(e){return e[ge]??={[ca]:e.nodeName.includes(`-`),[la]:e.namespaceURI===We}}var Sa=new Map;function Ca(e){var t=e.getAttribute(`is`)||e.nodeName,n=Sa.get(t);if(n)return n;Sa.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=c(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=d(i)}return n}function wa(e,t,n=t){var r=new WeakSet;Xn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ta(e)?Ea(a):a,n(a),M!==null&&r.add(M),await zr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(w&&e.defaultValue!==e.value||Ur(t)==null&&e.value)&&(n(Ta(e)?Ea(e.value):e.value),M!==null&&r.add(M)),cr(()=>{var n=t();if(e===document.activeElement){var i=O?Lt:M;if(r.has(i))return}Ta(e)&&n===Ea(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Ta(e){var t=e.type;return t===`number`||t===`range`}function Ea(e){return e===``?null:+e}function Da(e,t,n=t){Xn(e,`change`,()=>{n(e.files)}),w&&e.files&&n(e.files),cr(()=>{e.files=t()})}function Oa(e,t){return e===t||e?.[fe]===t}function ka(e={},t,n,r){var i=k.r,a=K;return or(()=>{var o,s;return cr(()=>{o=s,s=r?.()||[],Ur(()=>{Oa(n(...s),e)||(t(e,...s),o&&Oa(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Oa(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var Aa={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function ja(e,t,n){return new Proxy({props:e,exclude:t},Aa)}var Ma={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];p(i)&&(i=i());let a=s(i,t);if(a&&a.set)return a.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(p(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=s(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===fe||t===pe)return!1;for(let n of e.props)if(p(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(p(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function Na(...e){return new Proxy({props:e},Ma)}function Pa(e,t,n,r){var i=!ot||(n&2)!=0,a=(n&8)!=0,o=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>o&&i?(u??=dn(r),Q(u)):(l&&(l=!1,c=o?Ur(r):r),c);let f;if(a){var p=fe in e||pe in e;f=s(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=Pt(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Le(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?dn:hn)(()=>(v=!1,g()));a&&Q(y);var b=K;return(function(e,t){if(arguments.length>0){let n=t?Q(y):i&&a?jn(e):e;return I(y,n),v=!0,c!==void 0&&(c=n),e}return wr&&v||b.f&16384?y.v:Q(y)})}function Fa(e){return class extends Ia{constructor(t){super({component:e,...t})}}}var Ia=class{#e;#t;constructor(e){var t=new Map,n=(e,n)=>{var r=En(n,!1,!1);return t.set(e,r),r};let r=new Proxy({...e.props||{},$$events:{}},{get(e,r){return Q(t.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===pe?!0:(Q(t.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,i){return I(t.get(r)??n(r,i),i),Reflect.set(e,r,i)}});this.#t=(e.hydrate?Ci:Si)(e.component,{target:e.target,anchor:e.anchor,props:r,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),!O&&(!e?.props?.$$host||e.sync===!1)&&Kt(),this.#e=r.$$events;for(let e of Object.keys(this.#t))e===`$set`||e===`$destroy`||e===`$on`||o(this,e,{get(){return this.#t[e]},set(t){this.#t[e]=t},enumerable:!0});this.#t.$set=e=>{Object.assign(r,e)},this.#t.$destroy=()=>{Di(this.#t)}}$set(e){this.#t.$set(e)}$on(e,t){this.#e[e]=this.#e[e]||[];let n=(...e)=>t.call(this,...e);return this.#e[e].push(n),()=>{this.#e[e]=this.#e[e].filter(e=>e!==n)}}$destroy(){this.#t.$destroy()}};function La(e,t){if(O||Ce(`hydratable`),w){let t=window.__svelte?.h;if(t?.has(e))return t.get(e);Je(e)}return t()}var Ra=t({afterUpdate:()=>Ga,beforeUpdate:()=>Wa,createContext:()=>dt,createEventDispatcher:()=>Ua,createRawSnippet:()=>Vi,flushSync:()=>Kt,fork:()=>tn,getAbortSignal:()=>za,getAllContexts:()=>ht,getContext:()=>ft,hasContext:()=>mt,hydratable:()=>La,hydrate:()=>Ci,mount:()=>Si,onDestroy:()=>Va,onMount:()=>Ba,setContext:()=>pt,settled:()=>Br,tick:()=>zr,unmount:()=>Di,untrack:()=>Ur});function za(){return U===null&&Pe(),(U.ac??=new AbortController).signal}function Ba(e){k===null&&we(`onMount`),ot&&k.l!==null?Ka(k).m.push(e):tr(()=>{let t=Ur(e);if(typeof t==`function`)return t})}function Va(e){k===null&&we(`onDestroy`),Ba(()=>()=>Ur(e))}function Ha(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Ua(){let e=k;return e===null&&we(`createEventDispatcher`),(t,r,i)=>{let a=e.s.$$events?.[t];if(a){let o=n(a)?a.slice():[a],s=Ha(t,r,i);for(let t of o)t.call(e.x,s);return!s.defaultPrevented}return!0}}function Wa(e){k===null&&we(`beforeUpdate`),k.l===null&&Ie(`beforeUpdate`),Ka(k).b.push(e)}function Ga(e){k===null&&we(`afterUpdate`),k.l===null&&Ie(`afterUpdate`),Ka(k).a.push(e)}function Ka(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}export{Tn as $,gi as A,zr as B,Pi as C,yi as D,xi as E,oi as F,tr as G,Ar as H,ai as I,Bn as J,rr as K,Wr as L,_i as M,ci as N,vi as O,si as P,I as Q,Q as R,Bi as S,ki as T,ir as U,Ur as V,lr as W,jn as X,Vn as Y,kn as Z,Ji as _,Pa as a,mt as at,Ui as b,ka as c,pt as ct,ba as d,et as dt,F as et,ha as f,$e as ft,ea as g,na as h,Fa as i,ft as it,bi as j,mi as k,Da as l,lt,ga as m,_ as mt,Va as n,nn as nt,ja as o,_t as ot,va as p,m as pt,zn as q,Ba as r,jt as rt,Na as s,gt as st,Ra as t,mn as tt,wa as u,st as ut,qi as v,Ai as w,Hi as x,Wi as y,Br as z};
|
frontend/client/_app/immutable/chunks/Bw-0QipA.js.br
ADDED
|
Binary file (18.7 kB). View file
|
|
|
frontend/client/_app/immutable/chunks/Bw-0QipA.js.gz
ADDED
|
Binary file (20.6 kB). View file
|
|
|
frontend/client/_app/immutable/chunks/H_O4PGe5.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{B as e,Q as t,R as n,et as r,r as i,rt as a,t as o,z as s}from"./Bw-0QipA.js";var c=class{constructor(e,t){this.status=e,typeof t==`string`?this.body={message:t}:t?this.body=t:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var v=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(x(e)),v(e,t));var y=new Map;function ee(e,t){let n=x(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent),i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),r.getAttribute(`data-b64`)!==null&&(e=_(e)),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function b(e,t,n){if(y.size>0){let t=x(e,n),r=y.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);y.delete(t)}}return window.fetch(t,n)}function x(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${g(...e)}"]`}return n}var te=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,ne=/^\/\((?:[^)]+)\)$/;function re(e){let t=[];return{pattern:e===`/`||ne.test(e)?/^\/$/:RegExp(`^${ae(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ce({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=re(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function le(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ue(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_eb6xtf?.base??``,de=globalThis.__sveltekit_eb6xtf?.assets??S??``,fe=`1780234183272`,pe=`sveltekit:snapshot`,me=`sveltekit:scroll`,he=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ge=location.origin;function _e(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ve={...T,"":T.hover};function ye(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function be(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ye(e)}}function xe(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||k(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ge&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ye(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ve[r??`off`],preload_data:ve[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Se(e){let t=a(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:o}}var Ce={v:h};function we(){let{set:e,subscribe:t}=a(!1);async function n(){clearTimeout(void 0);try{let t=await fetch(`${de}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let n=(await t.json()).version!==fe;return n&&(e(!0),Ce.v(),clearTimeout(void 0)),n}catch{return!1}}return{subscribe:t,check:n}}function k(e,t,n){return e.origin!==ge||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Te(e){}var Ee=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);new Set([...Ee,`entries`]);var De=new Set([...Ee]);new Set([...De,`actions`,`entries`]),new Set([`GET`,`POST`,`PATCH`,`PUT`,`DELETE`,`OPTIONS`,`HEAD`,`fallback`,`prerender`,`trailingSlash`,`config`,`entries`]);function Oe(e){return e.filter(e=>e!=null)}function A(e,t){return e+`/`+t}function ke(e){return e instanceof c||e instanceof u?e.status:500}function Ae(e){return e instanceof u?e.text:`Internal Error`}var j,M,N,je=i.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(i.toString()),Me=`a:`;je?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Me)},M={current:null},N={current:!1}):(j=new class{#e=r({});get data(){return n(this.#e)}set data(e){t(this.#e,e)}#t=r(null);get form(){return n(this.#t)}set form(e){t(this.#t,e)}#n=r(null);get error(){return n(this.#n)}set error(e){t(this.#n,e)}#r=r({});get params(){return n(this.#r)}set params(e){t(this.#r,e)}#i=r({id:null});get route(){return n(this.#i)}set route(e){t(this.#i,e)}#a=r({});get state(){return n(this.#a)}set state(e){t(this.#a,e)}#o=r(-1);get status(){return n(this.#o)}set status(e){t(this.#o,e)}#s=r(new URL(Me));get url(){return n(this.#s)}set url(e){t(this.#s,e)}},M=new class{#e=r(null);get current(){return n(this.#e)}set current(e){t(this.#e,e)}},N=new class{#e=r(!1);get current(){return n(this.#e)}set current(e){t(this.#e,e)}},Ce.v=()=>N.current=!0);function Ne(e){Object.assign(j,e)}var{onMount:Pe,tick:Fe}=o,Ie=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),P=null,F=le(`sveltekit:scroll`)??{},I=le(`sveltekit:snapshot`)??{},L={url:Se({}),page:Se({}),navigating:a(null),updated:we()};function Le(e){F[e]=E()}function Re(e,t){let n=e+1;for(;F[n];)delete F[n],n+=1;for(n=t+1;I[n];)delete I[n],n+=1}function R(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function ze(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var Be,Ve,z,B,He,V,H=[],U=[],W=null;function Ue(){W?.fork?.then(e=>e?.discard()),W=null}var We=new Map,Ge=new Set,Ke=new Set,G=new Set,K={branch:[],error:null,url:null,nav:null},qe=!1,Je=!1,Ye=!0,q=!1,J=!1,Xe=!1,Ze=!1,Qe,Y,X,Z,$e=new Set,et=new Map,tt=new Map;async function nt(e,t,n){globalThis.__sveltekit_eb6xtf&&(globalThis.__sveltekit_eb6xtf.query,globalThis.__sveltekit_eb6xtf.prerender),document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),Be=ce(e),B=document.documentElement,He=t,Ve=e.nodes[0],z=e.nodes[1],Ve(),z(),Y=history.state?.[C],X=history.state?.[w],Y||(Y=X=Date.now(),history.replaceState({...history.state,[C]:Y,[w]:X},``));let r=F[Y];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await At(He,n)):(await Q({type:`enter`,url:_e(V.hash?It(new URL(location.href)):location.href),replace_state:!0}),i()),kt()}function rt(){H.length=0,Ze=!1}function it(e){U.some(e=>e?.snapshot)&&(I[e]=U.map(e=>e?.snapshot?.capture()))}function at(e){I[e]?.forEach((e,t)=>{U[t]?.snapshot?.restore(e)})}function ot(){Le(Y),ue(me,F),it(X),ue(pe,I)}async function st(t,n,r,i){let a,o;n.invalidateAll&&Ue(),await Q({type:`goto`,url:_e(t),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){Ze=!0,a=new Set;for(let[e,t]of et)for(let n of t.keys())a.add(A(e,n));o=new Set;for(let[e,t]of tt)for(let n of t.keys())o.add(A(e,n))}n.invalidate&&n.invalidate.forEach(Ot)}}),n.invalidateAll&&e().then(e).then(()=>{for(let[e,t]of et)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.refresh();for(let[e,t]of tt)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function ct(e){if(e.id!==W?.id){Ue();let t={};$e.add(t),W={id:e.id,token:t,promise:vt({...e,preload:t}).then(e=>($e.delete(t),e.type===`loaded`&&e.state.error&&Ue(),e)),fork:null}}return W.promise}async function lt(e){let t=(await St(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function ut(e,t,n){let r={params:K.params,route:{id:K.route?.id??null},url:new URL(location.href)};if(K={...e.state,nav:r},Ne(e.props.page),Qe=new V.root({target:t,props:{...e.props,stores:L,components:U},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),at(X),n){let e={from:null,to:{...r,scroll:F[Y]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};G.forEach(t=>t(e))}Je=!0}async function dt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Oe(n).map(e=>e.node.component),page:Ft(j)}};s!==void 0&&(l.props.form=s);let u={},f=!j,p=0;for(let e=0;e<Math.max(n.length,K.branch.length);e+=1){let t=n[e],r=K.branch[e];t?.data!==r?.data&&(f=!0),t&&(u={...u,...t.data},f&&(l.props[`data_${p}`]=u),p+=1)}return(!K.url||e.href!==K.url.href||K.error!==a||s!==void 0&&s!==j.form||f)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:f?u:j.data}),l}async function ft({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function pt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:Je?b(r,i.href,t):ee(r,t)}}function mt(e,t,n,r,i,a){if(Ze)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==K.params[e])return!0;for(let e of i.dependencies)if(H.some(t=>t(new URL(e))))return!0;return!1}function ht(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function gt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function _t({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ft(j),constructors:[]}}}async function vt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(W?.id===e)return $e.delete(W.token),W.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=K.url?e!==wt(K.url):!1,p=K.route?i.id!==K.route.id:!1,m=gt(K.url,n),g=!1,_=d.map(async(e,t)=>{if(!e)return;let a=K.branch[t];return e[1]===a?.loader&&!mt(g,p,f,m,a.universal?.uses,r)?a:(g=!0,ft({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await _[n])?.data);return e},server_data_node:ht(e[0]?{type:`skip`}:null,e[0]?a?.server:void 0)}))});for(let e of _)e.catch(h);let v=[];for(let e=0;e<d.length;e+=1)if(d[e])try{v.push(await _[e])}catch(t){if(t instanceof l)return{type:`redirect`,location:t.location};if($e.has(a))return _t({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=ke(t),u;if(t instanceof c)u=t.body;else{if(await L.updated.check())return await ze(),await R(n);u=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await yt(e,v,o);return d?dt({url:n,params:r,branch:v.slice(0,d.idx).concat(d.node),errors:o,status:s,error:u,route:i}):await Et(n,{id:i.id},u,s)}else v.push(void 0);return dt({url:n,params:r,branch:v,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function yt(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function bt({status:e,error:t,url:n,route:r}){let i={};try{return dt({url:n,params:i,branch:[await ft({loader:Ve,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:ht(null)}),{node:await z(),loader:z,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(e){if(e instanceof l)return st(new URL(e.location,location.href),{},0);throw e}}async function xt(e){let t=e.href;if(We.has(t))return We.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>pt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();We.set(t,r),n=await r}catch{We.delete(t);return}return n}async function St(e,t){if(e&&!k(e,S,V.hash)){let n=await xt(e);if(!n)return;let r=Ct(n);for(let n of Be){let i=n.exec(r);if(i)return{id:wt(e),invalidating:t,route:n,params:p(i),url:e}}}}function Ct(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function wt(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Tt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=Pt(K,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return q||Ge.forEach(e=>e(c)),o?null:s}async function Q({type:t,url:n,popped:r,keepfocus:i,noscroll:a,replace_state:o,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let g=Z;Z=d;let _=await St(n,!1),v=t===`enter`?Pt(K,_,n,t):Tt({url:n,type:t,delta:r?.delta,intent:_,scroll:r?.scroll,event:m});if(!v){p(),Z===d&&(Z=g);return}let y=Y,ee=X;f(),q=!0,Je&&v.navigation.type!==`enter`&&L.navigating.set(M.current=v.navigation);let b=_&&await vt(_);if(!b){if(k(n,S,V.hash))return await R(n,o);b=await Et(n,{id:null},await $(new u(404,`Not Found`,`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404,o)}if(n=_?.url||n,Z!==d)return v.reject(Error(`navigation aborted`)),!1;if(b.type===`redirect`){if(l<20){await Q({type:t,url:new URL(b.location,n),popped:r,keepfocus:i,noscroll:a,replace_state:o,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}b=await bt({status:500,error:await $(Error(`Redirect loop`),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}})}else b.props.page.status>=400&&await L.updated.check()&&(await ze(),await R(n,o));if(rt(),Le(y),it(ee),b.props.page.url.pathname!==n.pathname&&(n.pathname=b.props.page.url.pathname),c=r?r.state:c,!r){let e=+!o,t={[C]:Y+=e,[w]:X+=e,[he]:c};(o?history.replaceState:history.pushState).call(history,t,``,n),o||Re(Y,X)}let x=_&&W?.id===_.id?W.fork:null;W?.fork&&!x&&Ue(),W=null,b.props.page.state=c;let te;if(Je){let e=(await Promise.all(Array.from(Ke,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{G.delete(e)})}e.push(t),e.forEach(e=>{G.add(e)})}let t=v.navigation.to;K={...b.state,nav:{params:t.params,route:t.route,url:t.url}},b.props.page&&(b.props.page.url=n);let r=x&&await x;r?te=r.commit():(P=null,Qe.$set(b.props),P&&Object.assign(b.props.page,P),Ne(b.props.page),te=s?.()),Xe=!0}else await ut(b,He,!1);let{activeElement:ne}=document;if(await te,await e(),await e(),Z!==d)return v.reject(Error(`navigation aborted`)),!1;b.props.page&&P&&Object.assign(b.props.page,P);let re=null;if(Ye){let e=r?r.scroll:a?E():null;e?scrollTo(e.x,e.y):(re=n.hash&&document.getElementById(Lt(n)))?re.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==ne&&document.activeElement!==document.body;!i&&!ie&&Nt(n,!re),Ye=!0,q=!1,t===`popstate`&&at(X),v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),G.forEach(e=>e(v.navigation)),L.navigating.set(M.current=null)}async function Et(e,t,n,r,i){return e.origin===ge&&e.pathname===location.pathname&&!qe?await bt({status:r,error:n,url:e,route:t}):await R(e,i)}function Dt(){let e,t={element:void 0,href:void 0},n;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{a(n,T.hover)},20)});function r(e){e.defaultPrevented||a(e.composedPath()[0],T.tap)}B.addEventListener(`mousedown`,r),B.addEventListener(`touchstart`,r,{passive:!0});let i=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(lt(new URL(t.target.href)),i.unobserve(t.target))},{threshold:0});async function a(e,r){let i=be(e,B),a=i===t.element&&i?.href===t.href&&r>=n;if(!i||a)return;let{url:o,external:s,download:c}=xe(i,S,V.hash);if(s||c)return;let l=O(i),u=o&&wt(K.url)===wt(o);if(!(l.reload||u))if(r<=l.preload_data){t={element:i,href:i.href},n=T.tap;let e=await St(o,!1);if(!e)return;ct(e)}else r<=l.preload_code&&(t={element:i,href:i.href},n=r,lt(o))}function o(){i.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:r}=xe(e,S,V.hash);if(n||r)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&i.observe(e),a.preload_code===T.eager&<(t))}}G.add(o),o()}function $(e,t){if(e instanceof c)return e.body;let n=ke(e),r=Ae(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Ot(e){if(typeof e==`function`)H.push(e);else{let{href:t}=new URL(e,location.href);H.push(e=>e.href===t)}}function kt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(ot(),!q){let e=Pt(K,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Ge.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&ot()}),!navigator.connection?.saveData&&!/2g/.test(navigator.connection?.effectiveType)&&Dt(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=be(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=xe(n,S,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol===`https:`||r.protocol===`http:`)||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Tt({url:r,type:`link`,event:t})?q=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=K.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(J=!0,Le(Y),e(r),!s.replace_state)return;J=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Q({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(k(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Q({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Mt)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(Z={},n===Y)return;let r=F[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=K.url?m(location)===m(K.url):!1;if(o===X&&(Xe||s)){i!==j.state&&(j.state=i),e(a),F[Y]=E(),r&&scrollTo(r.x,r.y),Y=n;return}let c=n-Y;await Q({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{Y=n,X=o},block:()=>{history.go(-c)},nav_token:Z,event:t})}else J||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{J&&(J=!1,history.replaceState({...history.state,[C]:++Y,[w]:X},``,location.href))});for(let e of document.querySelectorAll(`link`))Ie.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&L.navigating.set(M.current=null)});function e(e){K.url=j.url=e,L.page.set(Ft(j)),L.page.notify()}}async function At(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){qe=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await St(u,!1)||{}),d=Be.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=jt(r.uses)),ft({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:ht(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await dt({url:u,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof l){await R(new URL(t.location,location.href));return}f=await bt({status:ke(t),error:await $(t,{url:u,params:i,route:a}),url:u,route:a}),e.textContent=``,p=!1}f.props.page&&(f.props.page.state={}),await ut(f,e,p)}function jt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var Mt=!1;function Nt(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=Lt(e);if(n&&document.getElementById(n)){let{x:r,y:i}=E();setTimeout(()=>{let a=history.state;Mt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Mt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function Pt(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Ft(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function It(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function Lt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{N as a,j as i,L as n,Te as o,M as r,nt as t};
|
frontend/client/_app/immutable/chunks/H_O4PGe5.js.br
ADDED
|
Binary file (9.15 kB). View file
|
|
|
frontend/client/_app/immutable/chunks/H_O4PGe5.js.gz
ADDED
|
Binary file (10.1 kB). View file
|
|
|
frontend/client/_app/immutable/chunks/kNaey6uv.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
var e=`modulepreload`,t=function(e,t){return new URL(e,t).href},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};export{r as t};
|
frontend/client/_app/immutable/chunks/kNaey6uv.js.br
ADDED
|
Binary file (570 Bytes). View file
|
|
|
frontend/client/_app/immutable/chunks/kNaey6uv.js.gz
ADDED
|
Binary file (688 Bytes). View file
|
|
|
frontend/client/_app/immutable/chunks/xihTtKlq.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);
|
frontend/client/_app/immutable/chunks/xihTtKlq.js.br
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
�typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);
|
frontend/client/_app/immutable/chunks/xihTtKlq.js.gz
ADDED
|
Binary file (80 Bytes). View file
|
|
|
frontend/client/_app/immutable/entry/app.BHLFJpHZ.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Df0rgt8-.js","../chunks/Bw-0QipA.js","../chunks/xihTtKlq.js","../assets/0.DpcAwFkV.css","../nodes/1.Cp2o0XAs.js","../chunks/H_O4PGe5.js","../nodes/2.BTNl2Bsv.js","../assets/2.BIbYdWBv.css"])))=>i.map(i=>d[i]);
|
| 2 |
+
import{B as e,D as t,E as n,G as r,J as i,K as a,M as o,O as s,Q as c,R as l,T as u,W as d,Y as f,a as p,c as m,et as h,ft as g,i as _,k as v,ot as y,q as b,r as x,st as S,tt as C,x as w}from"../chunks/Bw-0QipA.js";import{t as T}from"../chunks/kNaey6uv.js";import"../chunks/xihTtKlq.js";var E={},D=v(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),O=v(`<!> <!>`,1);function k(_,v){S(v,!0);let T=p(v,`components`,23,()=>[]),E=p(v,`data_0`,3,null),k=p(v,`data_1`,3,null);a(()=>v.stores.page.set(v.page)),r(()=>{v.stores,v.page,v.constructors,T(),v.form,E(),k(),v.stores.page.notify()});let A=h(!1),j=h(!1),M=h(null);x(()=>{let t=v.stores.page.subscribe(()=>{l(A)&&(c(j,!0),e().then(()=>{c(M,document.title||`untitled page`,!0)}))});return c(A,!0),t});let N=C(()=>v.constructors[1]);var P=O(),F=i(P),I=e=>{let n=C(()=>v.constructors[0]);var r=s();w(i(r),()=>l(n),(e,n)=>{m(n(e,{get data(){return E()},get form(){return v.form},get params(){return v.page.params},children:(e,n)=>{var r=s();w(i(r),()=>l(N),(e,t)=>{m(t(e,{get data(){return k()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),t(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,r)},L=e=>{let n=C(()=>v.constructors[0]);var r=s();w(i(r),()=>l(n),(e,t)=>{m(t(e,{get data(){return E()},get form(){return v.form},get params(){return v.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,r)};u(F,e=>{v.constructors[1]?e(I):e(L,-1)});var R=f(F,2),z=e=>{var r=D(),i=b(r),a=e=>{var r=o();d(()=>n(r,l(M))),t(e,r)};u(i,e=>{l(j)&&e(a)}),g(r),t(e,r)};u(R,e=>{l(A)&&e(z)}),t(_,P),y()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.Df0rgt8-.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>T(()=>import(`../nodes/1.Cp2o0XAs.js`),__vite__mapDeps([4,1,5,2]),import.meta.url),()=>T(()=>import(`../nodes/2.BTNl2Bsv.js`),__vite__mapDeps([6,1,2,7]),import.meta.url)],M=[],N={"/":[2]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t);export{R as decode,F as decoders,N as dictionary,I as encoders,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads};
|
frontend/client/_app/immutable/entry/app.BHLFJpHZ.js.br
ADDED
|
Binary file (1.1 kB). View file
|
|
|
frontend/client/_app/immutable/entry/app.BHLFJpHZ.js.gz
ADDED
|
Binary file (1.25 kB). View file
|
|
|
frontend/client/_app/immutable/entry/start.Bbjycs44.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{o as e,t}from"../chunks/H_O4PGe5.js";export{e as load_css,t as start};
|
frontend/client/_app/immutable/entry/start.Bbjycs44.js.br
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
&�import{o as e,t}from"../chunks/H_O4PGe5.js";export{e as load_css,t as start};
|
frontend/client/_app/immutable/entry/start.Bbjycs44.js.gz
ADDED
|
Binary file (89 Bytes). View file
|
|
|
frontend/client/_app/immutable/nodes/0.Df0rgt8-.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{D as e,J as t,O as n,S as r,W as i,k as a,p as o,y as s}from"../chunks/Bw-0QipA.js";import"../chunks/xihTtKlq.js";var c=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='107'%20height='128'%20viewBox='0%200%20107%20128'%3e%3ctitle%3esvelte-logo%3c/title%3e%3cpath%20d='M94.157%2022.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282%2029.608A29.92%2029.92%200%200%200%208.764%2049.65a31.5%2031.5%200%200%200%203.108%2020.231%2030%2030%200%200%200-4.477%2011.183%2031.9%2031.9%200%200%200%205.448%2024.116c10.402%2014.887%2030.942%2019.297%2045.791%209.835l26.083-16.624A29.92%2029.92%200%200%200%2098.235%2078.35a31.53%2031.53%200%200%200-3.105-20.232%2030%2030%200%200%200%204.474-11.182%2031.88%2031.88%200%200%200-5.447-24.116'%20style='fill:%23ff3e00'/%3e%3cpath%20d='M45.817%20106.582a20.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.503%2018%2018%200%200%201%20.624-2.435l.49-1.498%201.337.981a33.6%2033.6%200%200%200%2010.203%205.098l.97.294-.09.968a5.85%205.85%200%200%200%201.052%203.878%206.24%206.24%200%200%200%206.695%202.485%205.8%205.8%200%200%200%201.603-.704L69.27%2076.28a5.43%205.43%200%200%200%202.45-3.631%205.8%205.8%200%200%200-.987-4.371%206.24%206.24%200%200%200-6.698-2.487%205.7%205.7%200%200%200-1.6.704l-9.953%206.345a19%2019%200%200%201-5.296%202.326%2020.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.502%2017.99%2017.99%200%200%201%208.13-12.052l26.081-16.623a19%2019%200%200%201%205.3-2.329%2020.72%2020.72%200%200%201%2022.237%208.243%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-.624%202.435l-.49%201.498-1.337-.98a33.6%2033.6%200%200%200-10.203-5.1l-.97-.294.09-.968a5.86%205.86%200%200%200-1.052-3.878%206.24%206.24%200%200%200-6.696-2.485%205.8%205.8%200%200%200-1.602.704L37.73%2051.72a5.42%205.42%200%200%200-2.449%203.63%205.79%205.79%200%200%200%20.986%204.372%206.24%206.24%200%200%200%206.698%202.486%205.8%205.8%200%200%200%201.602-.704l9.952-6.342a19%2019%200%200%201%205.295-2.328%2020.72%2020.72%200%200%201%2022.237%208.242%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-8.13%2012.053l-26.081%2016.622a19%2019%200%200%201-5.3%202.328'%20style='fill:%23fff'/%3e%3c/svg%3e`,l=a(`<link rel="icon"/>`);function u(a,u){var d=n();s(`12qhfyh`,t=>{var n=l();i(()=>o(n,`href`,c)),e(t,n)}),r(t(d),()=>u.children),e(a,d)}export{u as component};
|
frontend/client/_app/immutable/nodes/0.Df0rgt8-.js.br
ADDED
|
Binary file (856 Bytes). View file
|
|
|
frontend/client/_app/immutable/nodes/0.Df0rgt8-.js.gz
ADDED
|
Binary file (991 Bytes). View file
|
|
|
frontend/client/_app/immutable/nodes/1.Cp2o0XAs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{D as e,E as t,J as n,W as r,Y as i,ft as a,k as o,ot as s,q as c,st as l}from"../chunks/Bw-0QipA.js";import{i as u,n as d,r as f}from"../chunks/H_O4PGe5.js";import"../chunks/xihTtKlq.js";var p={get data(){return u.data},get error(){return u.error},get form(){return u.form},get params(){return u.params},get route(){return u.route},get state(){return u.state},get status(){return u.status},get url(){return u.url}};Object.defineProperty({get from(){return f.current?f.current.from:null},get to(){return f.current?f.current.to:null},get type(){return f.current?f.current.type:null},get willUnload(){return f.current?f.current.willUnload:null},get delta(){return f.current?f.current.delta:null},get complete(){return f.current?f.current.complete:null}},"current",{get(){throw Error(`Replace navigating.current.<prop> with navigating.<prop>`)}}),d.updated.check;var m=p,h=o(`<h1> </h1> <p> </p>`,1);function g(o,u){l(u,!0);var d=h(),f=n(d),p=c(f,!0);a(f);var g=i(f,2),_=c(g,!0);a(g),r(()=>{t(p,m.status),t(_,m.error?.message)}),e(o,d),s()}export{g as component};
|
frontend/client/_app/immutable/nodes/1.Cp2o0XAs.js.br
ADDED
|
Binary file (428 Bytes). View file
|
|
|
frontend/client/_app/immutable/nodes/1.Cp2o0XAs.js.gz
ADDED
|
Binary file (501 Bytes). View file
|
|
|
frontend/client/_app/immutable/nodes/2.BTNl2Bsv.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
frontend/client/_app/immutable/nodes/2.BTNl2Bsv.js.br
ADDED
|
Binary file (33.4 kB). View file
|
|
|
frontend/client/_app/immutable/nodes/2.BTNl2Bsv.js.gz
ADDED
|
Binary file (39.1 kB). View file
|
|
|
frontend/client/_app/version.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"version":"1780234183272"}
|
frontend/client/_app/version.json.br
ADDED
|
Binary file (29 Bytes). View file
|
|
|
frontend/client/_app/version.json.gz
ADDED
|
Binary file (47 Bytes). View file
|
|
|
frontend/client/robots.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
User-agent: *
|
| 2 |
+
Disallow: /
|
frontend/client/robots.txt.br
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
��User-agent: *
|
| 2 |
+
Disallow: /
|
| 3 |
+
|
frontend/client/robots.txt.gz
ADDED
|
Binary file (46 Bytes). View file
|
|
|
frontend/env.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import process from 'node:process';
|
| 2 |
+
|
| 3 |
+
/* global "" */
|
| 4 |
+
|
| 5 |
+
const expected = new Set([
|
| 6 |
+
'SOCKET_PATH',
|
| 7 |
+
'HOST',
|
| 8 |
+
'PORT',
|
| 9 |
+
'ORIGIN',
|
| 10 |
+
'XFF_DEPTH',
|
| 11 |
+
'ADDRESS_HEADER',
|
| 12 |
+
'PROTOCOL_HEADER',
|
| 13 |
+
'HOST_HEADER',
|
| 14 |
+
'PORT_HEADER',
|
| 15 |
+
'BODY_SIZE_LIMIT',
|
| 16 |
+
'SHUTDOWN_TIMEOUT',
|
| 17 |
+
'IDLE_TIMEOUT',
|
| 18 |
+
'KEEP_ALIVE_TIMEOUT',
|
| 19 |
+
'HEADERS_TIMEOUT'
|
| 20 |
+
]);
|
| 21 |
+
|
| 22 |
+
const expected_unprefixed = new Set(['LISTEN_PID', 'LISTEN_FDS']);
|
| 23 |
+
|
| 24 |
+
if ("") {
|
| 25 |
+
for (const name in process.env) {
|
| 26 |
+
if (name.startsWith("")) {
|
| 27 |
+
const unprefixed = name.slice("".length);
|
| 28 |
+
if (!expected.has(unprefixed)) {
|
| 29 |
+
throw new Error(
|
| 30 |
+
`You should change envPrefix (${""}) to avoid conflicts with existing environment variables — unexpectedly saw ${name}`
|
| 31 |
+
);
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
/**
|
| 38 |
+
* @param {string} name
|
| 39 |
+
* @param {any} fallback
|
| 40 |
+
*/
|
| 41 |
+
function env(name, fallback) {
|
| 42 |
+
const prefix = expected_unprefixed.has(name) ? '' : "";
|
| 43 |
+
const prefixed = prefix + name;
|
| 44 |
+
return prefixed in process.env ? process.env[prefixed] : fallback;
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
const integer_regexp = /^\d+$/;
|
| 48 |
+
|
| 49 |
+
/**
|
| 50 |
+
* Throw a consistently-structured parsing error for environment variables.
|
| 51 |
+
* @param {string} name
|
| 52 |
+
* @param {any} value
|
| 53 |
+
* @param {string} description
|
| 54 |
+
* @returns {never}
|
| 55 |
+
*/
|
| 56 |
+
function parsing_error(name, value, description) {
|
| 57 |
+
throw new Error(
|
| 58 |
+
`Invalid value for environment variable ${name}: ${JSON.stringify(value)} (${description})`
|
| 59 |
+
);
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
/**
|
| 63 |
+
* Check the environment for a timeout value (non-negative integer) in seconds.
|
| 64 |
+
* @param {string} name
|
| 65 |
+
* @param {number} [fallback]
|
| 66 |
+
* @returns {number | undefined}
|
| 67 |
+
*/
|
| 68 |
+
function timeout_env(name, fallback) {
|
| 69 |
+
const raw = env(name, fallback);
|
| 70 |
+
if (!raw) {
|
| 71 |
+
return fallback;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
if (!integer_regexp.test(raw)) {
|
| 75 |
+
parsing_error(name, raw, 'should be a non-negative integer');
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
const parsed = Number.parseInt(raw, 10);
|
| 79 |
+
|
| 80 |
+
// We don't technically need to check `Number.isNaN` because the value already passed the regexp test.
|
| 81 |
+
// However, just in case there's some new codepath introduced somewhere down the line, it's probably good
|
| 82 |
+
// to stick this in here.
|
| 83 |
+
if (Number.isNaN(parsed)) {
|
| 84 |
+
parsing_error(name, raw, 'should be a non-negative integer');
|
| 85 |
+
}
|
| 86 |
+
|
| 87 |
+
if (parsed < 0) {
|
| 88 |
+
parsing_error(name, raw, 'should be a non-negative integer');
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
return parsed;
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
export { env, timeout_env };
|
frontend/handler.js
ADDED
|
@@ -0,0 +1,1494 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import './shims.js';
|
| 2 |
+
import * as fs from 'node:fs';
|
| 3 |
+
import fs__default, { readdirSync, statSync, createReadStream } from 'node:fs';
|
| 4 |
+
import path, { resolve, join, sep, normalize } from 'node:path';
|
| 5 |
+
import process from 'node:process';
|
| 6 |
+
import * as qs from 'node:querystring';
|
| 7 |
+
import { fileURLToPath } from 'node:url';
|
| 8 |
+
import { Readable } from 'node:stream';
|
| 9 |
+
import { Server } from './server/index.js';
|
| 10 |
+
import { manifest, prerendered, base } from './server/manifest.js';
|
| 11 |
+
import { env } from './env.js';
|
| 12 |
+
|
| 13 |
+
function totalist(dir, callback, pre='') {
|
| 14 |
+
dir = resolve('.', dir);
|
| 15 |
+
let arr = readdirSync(dir);
|
| 16 |
+
let i=0, abs, stats;
|
| 17 |
+
for (; i < arr.length; i++) {
|
| 18 |
+
abs = join(dir, arr[i]);
|
| 19 |
+
stats = statSync(abs);
|
| 20 |
+
stats.isDirectory()
|
| 21 |
+
? totalist(abs, callback, join(pre, arr[i]))
|
| 22 |
+
: callback(join(pre, arr[i]), abs, stats);
|
| 23 |
+
}
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
/**
|
| 27 |
+
* @typedef ParsedURL
|
| 28 |
+
* @type {import('.').ParsedURL}
|
| 29 |
+
*/
|
| 30 |
+
|
| 31 |
+
/**
|
| 32 |
+
* @typedef Request
|
| 33 |
+
* @property {string} url
|
| 34 |
+
* @property {ParsedURL} _parsedUrl
|
| 35 |
+
*/
|
| 36 |
+
|
| 37 |
+
/**
|
| 38 |
+
* @param {Request} req
|
| 39 |
+
* @returns {ParsedURL|void}
|
| 40 |
+
*/
|
| 41 |
+
function parse(req) {
|
| 42 |
+
let raw = req.url;
|
| 43 |
+
if (raw == null) return;
|
| 44 |
+
|
| 45 |
+
let prev = req._parsedUrl;
|
| 46 |
+
if (prev && prev.raw === raw) return prev;
|
| 47 |
+
|
| 48 |
+
let pathname=raw, search='', query;
|
| 49 |
+
|
| 50 |
+
if (raw.length > 1) {
|
| 51 |
+
let idx = raw.indexOf('?', 1);
|
| 52 |
+
|
| 53 |
+
if (idx !== -1) {
|
| 54 |
+
search = raw.substring(idx);
|
| 55 |
+
pathname = raw.substring(0, idx);
|
| 56 |
+
if (search.length > 1) {
|
| 57 |
+
query = qs.parse(search.substring(1));
|
| 58 |
+
}
|
| 59 |
+
}
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
return req._parsedUrl = { pathname, search, query, raw };
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
const mimes = {
|
| 66 |
+
"3g2": "video/3gpp2",
|
| 67 |
+
"3gp": "video/3gpp",
|
| 68 |
+
"3gpp": "video/3gpp",
|
| 69 |
+
"3mf": "model/3mf",
|
| 70 |
+
"aac": "audio/aac",
|
| 71 |
+
"ac": "application/pkix-attr-cert",
|
| 72 |
+
"adp": "audio/adpcm",
|
| 73 |
+
"adts": "audio/aac",
|
| 74 |
+
"ai": "application/postscript",
|
| 75 |
+
"aml": "application/automationml-aml+xml",
|
| 76 |
+
"amlx": "application/automationml-amlx+zip",
|
| 77 |
+
"amr": "audio/amr",
|
| 78 |
+
"apng": "image/apng",
|
| 79 |
+
"appcache": "text/cache-manifest",
|
| 80 |
+
"appinstaller": "application/appinstaller",
|
| 81 |
+
"appx": "application/appx",
|
| 82 |
+
"appxbundle": "application/appxbundle",
|
| 83 |
+
"asc": "application/pgp-keys",
|
| 84 |
+
"atom": "application/atom+xml",
|
| 85 |
+
"atomcat": "application/atomcat+xml",
|
| 86 |
+
"atomdeleted": "application/atomdeleted+xml",
|
| 87 |
+
"atomsvc": "application/atomsvc+xml",
|
| 88 |
+
"au": "audio/basic",
|
| 89 |
+
"avci": "image/avci",
|
| 90 |
+
"avcs": "image/avcs",
|
| 91 |
+
"avif": "image/avif",
|
| 92 |
+
"aw": "application/applixware",
|
| 93 |
+
"bdoc": "application/bdoc",
|
| 94 |
+
"bin": "application/octet-stream",
|
| 95 |
+
"bmp": "image/bmp",
|
| 96 |
+
"bpk": "application/octet-stream",
|
| 97 |
+
"btf": "image/prs.btif",
|
| 98 |
+
"btif": "image/prs.btif",
|
| 99 |
+
"buffer": "application/octet-stream",
|
| 100 |
+
"ccxml": "application/ccxml+xml",
|
| 101 |
+
"cdfx": "application/cdfx+xml",
|
| 102 |
+
"cdmia": "application/cdmi-capability",
|
| 103 |
+
"cdmic": "application/cdmi-container",
|
| 104 |
+
"cdmid": "application/cdmi-domain",
|
| 105 |
+
"cdmio": "application/cdmi-object",
|
| 106 |
+
"cdmiq": "application/cdmi-queue",
|
| 107 |
+
"cer": "application/pkix-cert",
|
| 108 |
+
"cgm": "image/cgm",
|
| 109 |
+
"cjs": "application/node",
|
| 110 |
+
"class": "application/java-vm",
|
| 111 |
+
"coffee": "text/coffeescript",
|
| 112 |
+
"conf": "text/plain",
|
| 113 |
+
"cpl": "application/cpl+xml",
|
| 114 |
+
"cpt": "application/mac-compactpro",
|
| 115 |
+
"crl": "application/pkix-crl",
|
| 116 |
+
"css": "text/css",
|
| 117 |
+
"csv": "text/csv",
|
| 118 |
+
"cu": "application/cu-seeme",
|
| 119 |
+
"cwl": "application/cwl",
|
| 120 |
+
"cww": "application/prs.cww",
|
| 121 |
+
"davmount": "application/davmount+xml",
|
| 122 |
+
"dbk": "application/docbook+xml",
|
| 123 |
+
"deb": "application/octet-stream",
|
| 124 |
+
"def": "text/plain",
|
| 125 |
+
"deploy": "application/octet-stream",
|
| 126 |
+
"dib": "image/bmp",
|
| 127 |
+
"disposition-notification": "message/disposition-notification",
|
| 128 |
+
"dist": "application/octet-stream",
|
| 129 |
+
"distz": "application/octet-stream",
|
| 130 |
+
"dll": "application/octet-stream",
|
| 131 |
+
"dmg": "application/octet-stream",
|
| 132 |
+
"dms": "application/octet-stream",
|
| 133 |
+
"doc": "application/msword",
|
| 134 |
+
"dot": "application/msword",
|
| 135 |
+
"dpx": "image/dpx",
|
| 136 |
+
"drle": "image/dicom-rle",
|
| 137 |
+
"dsc": "text/prs.lines.tag",
|
| 138 |
+
"dssc": "application/dssc+der",
|
| 139 |
+
"dtd": "application/xml-dtd",
|
| 140 |
+
"dump": "application/octet-stream",
|
| 141 |
+
"dwd": "application/atsc-dwd+xml",
|
| 142 |
+
"ear": "application/java-archive",
|
| 143 |
+
"ecma": "application/ecmascript",
|
| 144 |
+
"elc": "application/octet-stream",
|
| 145 |
+
"emf": "image/emf",
|
| 146 |
+
"eml": "message/rfc822",
|
| 147 |
+
"emma": "application/emma+xml",
|
| 148 |
+
"emotionml": "application/emotionml+xml",
|
| 149 |
+
"eps": "application/postscript",
|
| 150 |
+
"epub": "application/epub+zip",
|
| 151 |
+
"exe": "application/octet-stream",
|
| 152 |
+
"exi": "application/exi",
|
| 153 |
+
"exp": "application/express",
|
| 154 |
+
"exr": "image/aces",
|
| 155 |
+
"ez": "application/andrew-inset",
|
| 156 |
+
"fdf": "application/fdf",
|
| 157 |
+
"fdt": "application/fdt+xml",
|
| 158 |
+
"fits": "image/fits",
|
| 159 |
+
"g3": "image/g3fax",
|
| 160 |
+
"gbr": "application/rpki-ghostbusters",
|
| 161 |
+
"geojson": "application/geo+json",
|
| 162 |
+
"gif": "image/gif",
|
| 163 |
+
"glb": "model/gltf-binary",
|
| 164 |
+
"gltf": "model/gltf+json",
|
| 165 |
+
"gml": "application/gml+xml",
|
| 166 |
+
"gpx": "application/gpx+xml",
|
| 167 |
+
"gram": "application/srgs",
|
| 168 |
+
"grxml": "application/srgs+xml",
|
| 169 |
+
"gxf": "application/gxf",
|
| 170 |
+
"gz": "application/gzip",
|
| 171 |
+
"h261": "video/h261",
|
| 172 |
+
"h263": "video/h263",
|
| 173 |
+
"h264": "video/h264",
|
| 174 |
+
"heic": "image/heic",
|
| 175 |
+
"heics": "image/heic-sequence",
|
| 176 |
+
"heif": "image/heif",
|
| 177 |
+
"heifs": "image/heif-sequence",
|
| 178 |
+
"hej2": "image/hej2k",
|
| 179 |
+
"held": "application/atsc-held+xml",
|
| 180 |
+
"hjson": "application/hjson",
|
| 181 |
+
"hlp": "application/winhlp",
|
| 182 |
+
"hqx": "application/mac-binhex40",
|
| 183 |
+
"hsj2": "image/hsj2",
|
| 184 |
+
"htm": "text/html",
|
| 185 |
+
"html": "text/html",
|
| 186 |
+
"ics": "text/calendar",
|
| 187 |
+
"ief": "image/ief",
|
| 188 |
+
"ifb": "text/calendar",
|
| 189 |
+
"iges": "model/iges",
|
| 190 |
+
"igs": "model/iges",
|
| 191 |
+
"img": "application/octet-stream",
|
| 192 |
+
"in": "text/plain",
|
| 193 |
+
"ini": "text/plain",
|
| 194 |
+
"ink": "application/inkml+xml",
|
| 195 |
+
"inkml": "application/inkml+xml",
|
| 196 |
+
"ipfix": "application/ipfix",
|
| 197 |
+
"iso": "application/octet-stream",
|
| 198 |
+
"its": "application/its+xml",
|
| 199 |
+
"jade": "text/jade",
|
| 200 |
+
"jar": "application/java-archive",
|
| 201 |
+
"jhc": "image/jphc",
|
| 202 |
+
"jls": "image/jls",
|
| 203 |
+
"jp2": "image/jp2",
|
| 204 |
+
"jpe": "image/jpeg",
|
| 205 |
+
"jpeg": "image/jpeg",
|
| 206 |
+
"jpf": "image/jpx",
|
| 207 |
+
"jpg": "image/jpeg",
|
| 208 |
+
"jpg2": "image/jp2",
|
| 209 |
+
"jpgm": "image/jpm",
|
| 210 |
+
"jpgv": "video/jpeg",
|
| 211 |
+
"jph": "image/jph",
|
| 212 |
+
"jpm": "image/jpm",
|
| 213 |
+
"jpx": "image/jpx",
|
| 214 |
+
"js": "text/javascript",
|
| 215 |
+
"json": "application/json",
|
| 216 |
+
"json5": "application/json5",
|
| 217 |
+
"jsonld": "application/ld+json",
|
| 218 |
+
"jsonml": "application/jsonml+json",
|
| 219 |
+
"jsx": "text/jsx",
|
| 220 |
+
"jt": "model/jt",
|
| 221 |
+
"jxr": "image/jxr",
|
| 222 |
+
"jxra": "image/jxra",
|
| 223 |
+
"jxrs": "image/jxrs",
|
| 224 |
+
"jxs": "image/jxs",
|
| 225 |
+
"jxsc": "image/jxsc",
|
| 226 |
+
"jxsi": "image/jxsi",
|
| 227 |
+
"jxss": "image/jxss",
|
| 228 |
+
"kar": "audio/midi",
|
| 229 |
+
"ktx": "image/ktx",
|
| 230 |
+
"ktx2": "image/ktx2",
|
| 231 |
+
"less": "text/less",
|
| 232 |
+
"lgr": "application/lgr+xml",
|
| 233 |
+
"list": "text/plain",
|
| 234 |
+
"litcoffee": "text/coffeescript",
|
| 235 |
+
"log": "text/plain",
|
| 236 |
+
"lostxml": "application/lost+xml",
|
| 237 |
+
"lrf": "application/octet-stream",
|
| 238 |
+
"m1v": "video/mpeg",
|
| 239 |
+
"m21": "application/mp21",
|
| 240 |
+
"m2a": "audio/mpeg",
|
| 241 |
+
"m2v": "video/mpeg",
|
| 242 |
+
"m3a": "audio/mpeg",
|
| 243 |
+
"m4a": "audio/mp4",
|
| 244 |
+
"m4p": "application/mp4",
|
| 245 |
+
"m4s": "video/iso.segment",
|
| 246 |
+
"ma": "application/mathematica",
|
| 247 |
+
"mads": "application/mads+xml",
|
| 248 |
+
"maei": "application/mmt-aei+xml",
|
| 249 |
+
"man": "text/troff",
|
| 250 |
+
"manifest": "text/cache-manifest",
|
| 251 |
+
"map": "application/json",
|
| 252 |
+
"mar": "application/octet-stream",
|
| 253 |
+
"markdown": "text/markdown",
|
| 254 |
+
"mathml": "application/mathml+xml",
|
| 255 |
+
"mb": "application/mathematica",
|
| 256 |
+
"mbox": "application/mbox",
|
| 257 |
+
"md": "text/markdown",
|
| 258 |
+
"mdx": "text/mdx",
|
| 259 |
+
"me": "text/troff",
|
| 260 |
+
"mesh": "model/mesh",
|
| 261 |
+
"meta4": "application/metalink4+xml",
|
| 262 |
+
"metalink": "application/metalink+xml",
|
| 263 |
+
"mets": "application/mets+xml",
|
| 264 |
+
"mft": "application/rpki-manifest",
|
| 265 |
+
"mid": "audio/midi",
|
| 266 |
+
"midi": "audio/midi",
|
| 267 |
+
"mime": "message/rfc822",
|
| 268 |
+
"mj2": "video/mj2",
|
| 269 |
+
"mjp2": "video/mj2",
|
| 270 |
+
"mjs": "text/javascript",
|
| 271 |
+
"mml": "text/mathml",
|
| 272 |
+
"mods": "application/mods+xml",
|
| 273 |
+
"mov": "video/quicktime",
|
| 274 |
+
"mp2": "audio/mpeg",
|
| 275 |
+
"mp21": "application/mp21",
|
| 276 |
+
"mp2a": "audio/mpeg",
|
| 277 |
+
"mp3": "audio/mpeg",
|
| 278 |
+
"mp4": "video/mp4",
|
| 279 |
+
"mp4a": "audio/mp4",
|
| 280 |
+
"mp4s": "application/mp4",
|
| 281 |
+
"mp4v": "video/mp4",
|
| 282 |
+
"mpd": "application/dash+xml",
|
| 283 |
+
"mpe": "video/mpeg",
|
| 284 |
+
"mpeg": "video/mpeg",
|
| 285 |
+
"mpf": "application/media-policy-dataset+xml",
|
| 286 |
+
"mpg": "video/mpeg",
|
| 287 |
+
"mpg4": "video/mp4",
|
| 288 |
+
"mpga": "audio/mpeg",
|
| 289 |
+
"mpp": "application/dash-patch+xml",
|
| 290 |
+
"mrc": "application/marc",
|
| 291 |
+
"mrcx": "application/marcxml+xml",
|
| 292 |
+
"ms": "text/troff",
|
| 293 |
+
"mscml": "application/mediaservercontrol+xml",
|
| 294 |
+
"msh": "model/mesh",
|
| 295 |
+
"msi": "application/octet-stream",
|
| 296 |
+
"msix": "application/msix",
|
| 297 |
+
"msixbundle": "application/msixbundle",
|
| 298 |
+
"msm": "application/octet-stream",
|
| 299 |
+
"msp": "application/octet-stream",
|
| 300 |
+
"mtl": "model/mtl",
|
| 301 |
+
"musd": "application/mmt-usd+xml",
|
| 302 |
+
"mxf": "application/mxf",
|
| 303 |
+
"mxmf": "audio/mobile-xmf",
|
| 304 |
+
"mxml": "application/xv+xml",
|
| 305 |
+
"n3": "text/n3",
|
| 306 |
+
"nb": "application/mathematica",
|
| 307 |
+
"nq": "application/n-quads",
|
| 308 |
+
"nt": "application/n-triples",
|
| 309 |
+
"obj": "model/obj",
|
| 310 |
+
"oda": "application/oda",
|
| 311 |
+
"oga": "audio/ogg",
|
| 312 |
+
"ogg": "audio/ogg",
|
| 313 |
+
"ogv": "video/ogg",
|
| 314 |
+
"ogx": "application/ogg",
|
| 315 |
+
"omdoc": "application/omdoc+xml",
|
| 316 |
+
"onepkg": "application/onenote",
|
| 317 |
+
"onetmp": "application/onenote",
|
| 318 |
+
"onetoc": "application/onenote",
|
| 319 |
+
"onetoc2": "application/onenote",
|
| 320 |
+
"opf": "application/oebps-package+xml",
|
| 321 |
+
"opus": "audio/ogg",
|
| 322 |
+
"otf": "font/otf",
|
| 323 |
+
"owl": "application/rdf+xml",
|
| 324 |
+
"oxps": "application/oxps",
|
| 325 |
+
"p10": "application/pkcs10",
|
| 326 |
+
"p7c": "application/pkcs7-mime",
|
| 327 |
+
"p7m": "application/pkcs7-mime",
|
| 328 |
+
"p7s": "application/pkcs7-signature",
|
| 329 |
+
"p8": "application/pkcs8",
|
| 330 |
+
"pdf": "application/pdf",
|
| 331 |
+
"pfr": "application/font-tdpfr",
|
| 332 |
+
"pgp": "application/pgp-encrypted",
|
| 333 |
+
"pkg": "application/octet-stream",
|
| 334 |
+
"pki": "application/pkixcmp",
|
| 335 |
+
"pkipath": "application/pkix-pkipath",
|
| 336 |
+
"pls": "application/pls+xml",
|
| 337 |
+
"png": "image/png",
|
| 338 |
+
"prc": "model/prc",
|
| 339 |
+
"prf": "application/pics-rules",
|
| 340 |
+
"provx": "application/provenance+xml",
|
| 341 |
+
"ps": "application/postscript",
|
| 342 |
+
"pskcxml": "application/pskc+xml",
|
| 343 |
+
"pti": "image/prs.pti",
|
| 344 |
+
"qt": "video/quicktime",
|
| 345 |
+
"raml": "application/raml+yaml",
|
| 346 |
+
"rapd": "application/route-apd+xml",
|
| 347 |
+
"rdf": "application/rdf+xml",
|
| 348 |
+
"relo": "application/p2p-overlay+xml",
|
| 349 |
+
"rif": "application/reginfo+xml",
|
| 350 |
+
"rl": "application/resource-lists+xml",
|
| 351 |
+
"rld": "application/resource-lists-diff+xml",
|
| 352 |
+
"rmi": "audio/midi",
|
| 353 |
+
"rnc": "application/relax-ng-compact-syntax",
|
| 354 |
+
"rng": "application/xml",
|
| 355 |
+
"roa": "application/rpki-roa",
|
| 356 |
+
"roff": "text/troff",
|
| 357 |
+
"rq": "application/sparql-query",
|
| 358 |
+
"rs": "application/rls-services+xml",
|
| 359 |
+
"rsat": "application/atsc-rsat+xml",
|
| 360 |
+
"rsd": "application/rsd+xml",
|
| 361 |
+
"rsheet": "application/urc-ressheet+xml",
|
| 362 |
+
"rss": "application/rss+xml",
|
| 363 |
+
"rtf": "text/rtf",
|
| 364 |
+
"rtx": "text/richtext",
|
| 365 |
+
"rusd": "application/route-usd+xml",
|
| 366 |
+
"s3m": "audio/s3m",
|
| 367 |
+
"sbml": "application/sbml+xml",
|
| 368 |
+
"scq": "application/scvp-cv-request",
|
| 369 |
+
"scs": "application/scvp-cv-response",
|
| 370 |
+
"sdp": "application/sdp",
|
| 371 |
+
"senmlx": "application/senml+xml",
|
| 372 |
+
"sensmlx": "application/sensml+xml",
|
| 373 |
+
"ser": "application/java-serialized-object",
|
| 374 |
+
"setpay": "application/set-payment-initiation",
|
| 375 |
+
"setreg": "application/set-registration-initiation",
|
| 376 |
+
"sgi": "image/sgi",
|
| 377 |
+
"sgm": "text/sgml",
|
| 378 |
+
"sgml": "text/sgml",
|
| 379 |
+
"shex": "text/shex",
|
| 380 |
+
"shf": "application/shf+xml",
|
| 381 |
+
"shtml": "text/html",
|
| 382 |
+
"sieve": "application/sieve",
|
| 383 |
+
"sig": "application/pgp-signature",
|
| 384 |
+
"sil": "audio/silk",
|
| 385 |
+
"silo": "model/mesh",
|
| 386 |
+
"siv": "application/sieve",
|
| 387 |
+
"slim": "text/slim",
|
| 388 |
+
"slm": "text/slim",
|
| 389 |
+
"sls": "application/route-s-tsid+xml",
|
| 390 |
+
"smi": "application/smil+xml",
|
| 391 |
+
"smil": "application/smil+xml",
|
| 392 |
+
"snd": "audio/basic",
|
| 393 |
+
"so": "application/octet-stream",
|
| 394 |
+
"spdx": "text/spdx",
|
| 395 |
+
"spp": "application/scvp-vp-response",
|
| 396 |
+
"spq": "application/scvp-vp-request",
|
| 397 |
+
"spx": "audio/ogg",
|
| 398 |
+
"sql": "application/sql",
|
| 399 |
+
"sru": "application/sru+xml",
|
| 400 |
+
"srx": "application/sparql-results+xml",
|
| 401 |
+
"ssdl": "application/ssdl+xml",
|
| 402 |
+
"ssml": "application/ssml+xml",
|
| 403 |
+
"stk": "application/hyperstudio",
|
| 404 |
+
"stl": "model/stl",
|
| 405 |
+
"stpx": "model/step+xml",
|
| 406 |
+
"stpxz": "model/step-xml+zip",
|
| 407 |
+
"stpz": "model/step+zip",
|
| 408 |
+
"styl": "text/stylus",
|
| 409 |
+
"stylus": "text/stylus",
|
| 410 |
+
"svg": "image/svg+xml",
|
| 411 |
+
"svgz": "image/svg+xml",
|
| 412 |
+
"swidtag": "application/swid+xml",
|
| 413 |
+
"t": "text/troff",
|
| 414 |
+
"t38": "image/t38",
|
| 415 |
+
"td": "application/urc-targetdesc+xml",
|
| 416 |
+
"tei": "application/tei+xml",
|
| 417 |
+
"teicorpus": "application/tei+xml",
|
| 418 |
+
"text": "text/plain",
|
| 419 |
+
"tfi": "application/thraud+xml",
|
| 420 |
+
"tfx": "image/tiff-fx",
|
| 421 |
+
"tif": "image/tiff",
|
| 422 |
+
"tiff": "image/tiff",
|
| 423 |
+
"toml": "application/toml",
|
| 424 |
+
"tr": "text/troff",
|
| 425 |
+
"trig": "application/trig",
|
| 426 |
+
"ts": "video/mp2t",
|
| 427 |
+
"tsd": "application/timestamped-data",
|
| 428 |
+
"tsv": "text/tab-separated-values",
|
| 429 |
+
"ttc": "font/collection",
|
| 430 |
+
"ttf": "font/ttf",
|
| 431 |
+
"ttl": "text/turtle",
|
| 432 |
+
"ttml": "application/ttml+xml",
|
| 433 |
+
"txt": "text/plain",
|
| 434 |
+
"u3d": "model/u3d",
|
| 435 |
+
"u8dsn": "message/global-delivery-status",
|
| 436 |
+
"u8hdr": "message/global-headers",
|
| 437 |
+
"u8mdn": "message/global-disposition-notification",
|
| 438 |
+
"u8msg": "message/global",
|
| 439 |
+
"ubj": "application/ubjson",
|
| 440 |
+
"uri": "text/uri-list",
|
| 441 |
+
"uris": "text/uri-list",
|
| 442 |
+
"urls": "text/uri-list",
|
| 443 |
+
"vcard": "text/vcard",
|
| 444 |
+
"vrml": "model/vrml",
|
| 445 |
+
"vtt": "text/vtt",
|
| 446 |
+
"vxml": "application/voicexml+xml",
|
| 447 |
+
"war": "application/java-archive",
|
| 448 |
+
"wasm": "application/wasm",
|
| 449 |
+
"wav": "audio/wav",
|
| 450 |
+
"weba": "audio/webm",
|
| 451 |
+
"webm": "video/webm",
|
| 452 |
+
"webmanifest": "application/manifest+json",
|
| 453 |
+
"webp": "image/webp",
|
| 454 |
+
"wgsl": "text/wgsl",
|
| 455 |
+
"wgt": "application/widget",
|
| 456 |
+
"wif": "application/watcherinfo+xml",
|
| 457 |
+
"wmf": "image/wmf",
|
| 458 |
+
"woff": "font/woff",
|
| 459 |
+
"woff2": "font/woff2",
|
| 460 |
+
"wrl": "model/vrml",
|
| 461 |
+
"wsdl": "application/wsdl+xml",
|
| 462 |
+
"wspolicy": "application/wspolicy+xml",
|
| 463 |
+
"x3d": "model/x3d+xml",
|
| 464 |
+
"x3db": "model/x3d+fastinfoset",
|
| 465 |
+
"x3dbz": "model/x3d+binary",
|
| 466 |
+
"x3dv": "model/x3d-vrml",
|
| 467 |
+
"x3dvz": "model/x3d+vrml",
|
| 468 |
+
"x3dz": "model/x3d+xml",
|
| 469 |
+
"xaml": "application/xaml+xml",
|
| 470 |
+
"xav": "application/xcap-att+xml",
|
| 471 |
+
"xca": "application/xcap-caps+xml",
|
| 472 |
+
"xcs": "application/calendar+xml",
|
| 473 |
+
"xdf": "application/xcap-diff+xml",
|
| 474 |
+
"xdssc": "application/dssc+xml",
|
| 475 |
+
"xel": "application/xcap-el+xml",
|
| 476 |
+
"xenc": "application/xenc+xml",
|
| 477 |
+
"xer": "application/patch-ops-error+xml",
|
| 478 |
+
"xfdf": "application/xfdf",
|
| 479 |
+
"xht": "application/xhtml+xml",
|
| 480 |
+
"xhtml": "application/xhtml+xml",
|
| 481 |
+
"xhvml": "application/xv+xml",
|
| 482 |
+
"xlf": "application/xliff+xml",
|
| 483 |
+
"xm": "audio/xm",
|
| 484 |
+
"xml": "text/xml",
|
| 485 |
+
"xns": "application/xcap-ns+xml",
|
| 486 |
+
"xop": "application/xop+xml",
|
| 487 |
+
"xpl": "application/xproc+xml",
|
| 488 |
+
"xsd": "application/xml",
|
| 489 |
+
"xsf": "application/prs.xsf+xml",
|
| 490 |
+
"xsl": "application/xml",
|
| 491 |
+
"xslt": "application/xml",
|
| 492 |
+
"xspf": "application/xspf+xml",
|
| 493 |
+
"xvm": "application/xv+xml",
|
| 494 |
+
"xvml": "application/xv+xml",
|
| 495 |
+
"yaml": "text/yaml",
|
| 496 |
+
"yang": "application/yang",
|
| 497 |
+
"yin": "application/yin+xml",
|
| 498 |
+
"yml": "text/yaml",
|
| 499 |
+
"zip": "application/zip"
|
| 500 |
+
};
|
| 501 |
+
|
| 502 |
+
function lookup(extn) {
|
| 503 |
+
let tmp = ('' + extn).trim().toLowerCase();
|
| 504 |
+
let idx = tmp.lastIndexOf('.');
|
| 505 |
+
return mimes[!~idx ? tmp : tmp.substring(++idx)];
|
| 506 |
+
}
|
| 507 |
+
|
| 508 |
+
const noop = () => {};
|
| 509 |
+
|
| 510 |
+
function isMatch(uri, arr) {
|
| 511 |
+
for (let i=0; i < arr.length; i++) {
|
| 512 |
+
if (arr[i].test(uri)) return true;
|
| 513 |
+
}
|
| 514 |
+
}
|
| 515 |
+
|
| 516 |
+
function toAssume(uri, extns) {
|
| 517 |
+
let i=0, x, len=uri.length - 1;
|
| 518 |
+
if (uri.charCodeAt(len) === 47) {
|
| 519 |
+
uri = uri.substring(0, len);
|
| 520 |
+
}
|
| 521 |
+
|
| 522 |
+
let arr=[], tmp=`${uri}/index`;
|
| 523 |
+
for (; i < extns.length; i++) {
|
| 524 |
+
x = extns[i] ? `.${extns[i]}` : '';
|
| 525 |
+
if (uri) arr.push(uri + x);
|
| 526 |
+
arr.push(tmp + x);
|
| 527 |
+
}
|
| 528 |
+
|
| 529 |
+
return arr;
|
| 530 |
+
}
|
| 531 |
+
|
| 532 |
+
function viaCache(cache, uri, extns) {
|
| 533 |
+
let i=0, data, arr=toAssume(uri, extns);
|
| 534 |
+
for (; i < arr.length; i++) {
|
| 535 |
+
if (data = cache[arr[i]]) return data;
|
| 536 |
+
}
|
| 537 |
+
}
|
| 538 |
+
|
| 539 |
+
function viaLocal(dir, isEtag, uri, extns) {
|
| 540 |
+
let i=0, arr=toAssume(uri, extns);
|
| 541 |
+
let abs, stats, name, headers;
|
| 542 |
+
for (; i < arr.length; i++) {
|
| 543 |
+
abs = normalize(
|
| 544 |
+
join(dir, name=arr[i])
|
| 545 |
+
);
|
| 546 |
+
|
| 547 |
+
if (abs.startsWith(dir) && fs.existsSync(abs)) {
|
| 548 |
+
stats = fs.statSync(abs);
|
| 549 |
+
if (stats.isDirectory()) continue;
|
| 550 |
+
headers = toHeaders(name, stats, isEtag);
|
| 551 |
+
headers['Cache-Control'] = isEtag ? 'no-cache' : 'no-store';
|
| 552 |
+
return { abs, stats, headers };
|
| 553 |
+
}
|
| 554 |
+
}
|
| 555 |
+
}
|
| 556 |
+
|
| 557 |
+
function is404(req, res) {
|
| 558 |
+
return (res.statusCode=404,res.end());
|
| 559 |
+
}
|
| 560 |
+
|
| 561 |
+
function send(req, res, file, stats, headers) {
|
| 562 |
+
let code=200, tmp, opts={};
|
| 563 |
+
headers = { ...headers };
|
| 564 |
+
|
| 565 |
+
for (let key in headers) {
|
| 566 |
+
tmp = res.getHeader(key);
|
| 567 |
+
if (tmp) headers[key] = tmp;
|
| 568 |
+
}
|
| 569 |
+
|
| 570 |
+
if (tmp = res.getHeader('content-type')) {
|
| 571 |
+
headers['Content-Type'] = tmp;
|
| 572 |
+
}
|
| 573 |
+
|
| 574 |
+
if (req.headers.range) {
|
| 575 |
+
code = 206;
|
| 576 |
+
let [x, y] = req.headers.range.replace('bytes=', '').split('-');
|
| 577 |
+
let end = opts.end = parseInt(y, 10) || stats.size - 1;
|
| 578 |
+
let start = opts.start = parseInt(x, 10) || 0;
|
| 579 |
+
|
| 580 |
+
if (end >= stats.size) {
|
| 581 |
+
end = stats.size - 1;
|
| 582 |
+
}
|
| 583 |
+
|
| 584 |
+
if (start >= stats.size) {
|
| 585 |
+
res.setHeader('Content-Range', `bytes */${stats.size}`);
|
| 586 |
+
res.statusCode = 416;
|
| 587 |
+
return res.end();
|
| 588 |
+
}
|
| 589 |
+
|
| 590 |
+
headers['Content-Range'] = `bytes ${start}-${end}/${stats.size}`;
|
| 591 |
+
headers['Content-Length'] = (end - start + 1);
|
| 592 |
+
headers['Accept-Ranges'] = 'bytes';
|
| 593 |
+
}
|
| 594 |
+
|
| 595 |
+
res.writeHead(code, headers);
|
| 596 |
+
fs.createReadStream(file, opts).pipe(res);
|
| 597 |
+
}
|
| 598 |
+
|
| 599 |
+
const ENCODING = {
|
| 600 |
+
'.br': 'br',
|
| 601 |
+
'.gz': 'gzip',
|
| 602 |
+
};
|
| 603 |
+
|
| 604 |
+
function toHeaders(name, stats, isEtag) {
|
| 605 |
+
let enc = ENCODING[name.slice(-3)];
|
| 606 |
+
|
| 607 |
+
let ctype = lookup(name.slice(0, enc && -3)) || '';
|
| 608 |
+
if (ctype === 'text/html') ctype += ';charset=utf-8';
|
| 609 |
+
|
| 610 |
+
let headers = {
|
| 611 |
+
'Content-Length': stats.size,
|
| 612 |
+
'Content-Type': ctype,
|
| 613 |
+
'Last-Modified': stats.mtime.toUTCString(),
|
| 614 |
+
};
|
| 615 |
+
|
| 616 |
+
if (enc) headers['Content-Encoding'] = enc;
|
| 617 |
+
if (isEtag) headers['ETag'] = `W/"${stats.size}-${stats.mtime.getTime()}"`;
|
| 618 |
+
|
| 619 |
+
return headers;
|
| 620 |
+
}
|
| 621 |
+
|
| 622 |
+
function sirv (dir, opts={}) {
|
| 623 |
+
dir = resolve(dir || '.');
|
| 624 |
+
|
| 625 |
+
let isNotFound = opts.onNoMatch || is404;
|
| 626 |
+
let setHeaders = opts.setHeaders || noop;
|
| 627 |
+
|
| 628 |
+
let extensions = opts.extensions || ['html', 'htm'];
|
| 629 |
+
let gzips = opts.gzip && extensions.map(x => `${x}.gz`).concat('gz');
|
| 630 |
+
let brots = opts.brotli && extensions.map(x => `${x}.br`).concat('br');
|
| 631 |
+
|
| 632 |
+
const FILES = {};
|
| 633 |
+
|
| 634 |
+
let fallback = '/';
|
| 635 |
+
let isEtag = !!opts.etag;
|
| 636 |
+
let isSPA = !!opts.single;
|
| 637 |
+
if (typeof opts.single === 'string') {
|
| 638 |
+
let idx = opts.single.lastIndexOf('.');
|
| 639 |
+
fallback += !!~idx ? opts.single.substring(0, idx) : opts.single;
|
| 640 |
+
}
|
| 641 |
+
|
| 642 |
+
let ignores = [];
|
| 643 |
+
if (opts.ignores !== false) {
|
| 644 |
+
ignores.push(/[/]([A-Za-z\s\d~$._-]+\.\w+){1,}$/); // any extn
|
| 645 |
+
if (opts.dotfiles) ignores.push(/\/\.\w/);
|
| 646 |
+
else ignores.push(/\/\.well-known/);
|
| 647 |
+
[].concat(opts.ignores || []).forEach(x => {
|
| 648 |
+
ignores.push(new RegExp(x, 'i'));
|
| 649 |
+
});
|
| 650 |
+
}
|
| 651 |
+
|
| 652 |
+
let cc = opts.maxAge != null && `public,max-age=${opts.maxAge}`;
|
| 653 |
+
if (cc && opts.immutable) cc += ',immutable';
|
| 654 |
+
else if (cc && opts.maxAge === 0) cc += ',must-revalidate';
|
| 655 |
+
|
| 656 |
+
if (!opts.dev) {
|
| 657 |
+
totalist(dir, (name, abs, stats) => {
|
| 658 |
+
if (/\.well-known[\\+\/]/.test(name)) ; // keep
|
| 659 |
+
else if (!opts.dotfiles && /(^\.|[\\+|\/+]\.)/.test(name)) return;
|
| 660 |
+
|
| 661 |
+
let headers = toHeaders(name, stats, isEtag);
|
| 662 |
+
if (cc) headers['Cache-Control'] = cc;
|
| 663 |
+
|
| 664 |
+
FILES['/' + name.normalize().replace(/\\+/g, '/')] = { abs, stats, headers };
|
| 665 |
+
});
|
| 666 |
+
}
|
| 667 |
+
|
| 668 |
+
let lookup = opts.dev ? viaLocal.bind(0, dir + sep, isEtag) : viaCache.bind(0, FILES);
|
| 669 |
+
|
| 670 |
+
return function (req, res, next) {
|
| 671 |
+
let extns = [''];
|
| 672 |
+
let pathname = parse(req).pathname;
|
| 673 |
+
let val = req.headers['accept-encoding'] || '';
|
| 674 |
+
if (gzips && val.includes('gzip')) extns.unshift(...gzips);
|
| 675 |
+
if (brots && /(br|brotli)/i.test(val)) extns.unshift(...brots);
|
| 676 |
+
extns.push(...extensions); // [...br, ...gz, orig, ...exts]
|
| 677 |
+
|
| 678 |
+
if (pathname.indexOf('%') !== -1) {
|
| 679 |
+
try { pathname = decodeURI(pathname); }
|
| 680 |
+
catch (err) { /* malform uri */ }
|
| 681 |
+
}
|
| 682 |
+
|
| 683 |
+
let data = lookup(pathname, extns) || isSPA && !isMatch(pathname, ignores) && lookup(fallback, extns);
|
| 684 |
+
if (!data) return next ? next() : isNotFound(req, res);
|
| 685 |
+
|
| 686 |
+
if (isEtag && req.headers['if-none-match'] === data.headers['ETag']) {
|
| 687 |
+
res.writeHead(304);
|
| 688 |
+
return res.end();
|
| 689 |
+
}
|
| 690 |
+
|
| 691 |
+
if (gzips || brots) {
|
| 692 |
+
res.setHeader('Vary', 'Accept-Encoding');
|
| 693 |
+
}
|
| 694 |
+
|
| 695 |
+
setHeaders(res, pathname, data.stats);
|
| 696 |
+
send(req, res, data.abs, data.stats, data.headers);
|
| 697 |
+
};
|
| 698 |
+
}
|
| 699 |
+
|
| 700 |
+
var defaultParseOptions = {
|
| 701 |
+
decodeValues: true,
|
| 702 |
+
map: false,
|
| 703 |
+
silent: false,
|
| 704 |
+
split: "auto", // auto = split strings but not arrays
|
| 705 |
+
};
|
| 706 |
+
|
| 707 |
+
function isForbiddenKey(key) {
|
| 708 |
+
return typeof key !== "string" || key in {};
|
| 709 |
+
}
|
| 710 |
+
|
| 711 |
+
function createNullObj() {
|
| 712 |
+
return Object.create(null);
|
| 713 |
+
}
|
| 714 |
+
|
| 715 |
+
function isNonEmptyString(str) {
|
| 716 |
+
return typeof str === "string" && !!str.trim();
|
| 717 |
+
}
|
| 718 |
+
|
| 719 |
+
function parseString(setCookieValue, options) {
|
| 720 |
+
var parts = setCookieValue.split(";").filter(isNonEmptyString);
|
| 721 |
+
|
| 722 |
+
var nameValuePairStr = parts.shift();
|
| 723 |
+
var parsed = parseNameValuePair(nameValuePairStr);
|
| 724 |
+
var name = parsed.name;
|
| 725 |
+
var value = parsed.value;
|
| 726 |
+
|
| 727 |
+
options = options
|
| 728 |
+
? Object.assign({}, defaultParseOptions, options)
|
| 729 |
+
: defaultParseOptions;
|
| 730 |
+
|
| 731 |
+
if (isForbiddenKey(name)) {
|
| 732 |
+
return null;
|
| 733 |
+
}
|
| 734 |
+
|
| 735 |
+
try {
|
| 736 |
+
value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value
|
| 737 |
+
} catch (e) {
|
| 738 |
+
console.error(
|
| 739 |
+
"set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.",
|
| 740 |
+
e
|
| 741 |
+
);
|
| 742 |
+
}
|
| 743 |
+
|
| 744 |
+
var cookie = createNullObj();
|
| 745 |
+
cookie.name = name;
|
| 746 |
+
cookie.value = value;
|
| 747 |
+
|
| 748 |
+
parts.forEach(function (part) {
|
| 749 |
+
var sides = part.split("=");
|
| 750 |
+
var key = sides.shift().trimLeft().toLowerCase();
|
| 751 |
+
if (isForbiddenKey(key)) {
|
| 752 |
+
return;
|
| 753 |
+
}
|
| 754 |
+
var value = sides.join("=");
|
| 755 |
+
if (key === "expires") {
|
| 756 |
+
cookie.expires = new Date(value);
|
| 757 |
+
} else if (key === "max-age") {
|
| 758 |
+
var n = parseInt(value, 10);
|
| 759 |
+
if (!Number.isNaN(n)) cookie.maxAge = n;
|
| 760 |
+
} else if (key === "secure") {
|
| 761 |
+
cookie.secure = true;
|
| 762 |
+
} else if (key === "httponly") {
|
| 763 |
+
cookie.httpOnly = true;
|
| 764 |
+
} else if (key === "samesite") {
|
| 765 |
+
cookie.sameSite = value;
|
| 766 |
+
} else if (key === "partitioned") {
|
| 767 |
+
cookie.partitioned = true;
|
| 768 |
+
} else if (key) {
|
| 769 |
+
cookie[key] = value;
|
| 770 |
+
}
|
| 771 |
+
});
|
| 772 |
+
|
| 773 |
+
return cookie;
|
| 774 |
+
}
|
| 775 |
+
|
| 776 |
+
function parseNameValuePair(nameValuePairStr) {
|
| 777 |
+
// Parses name-value-pair according to rfc6265bis draft
|
| 778 |
+
|
| 779 |
+
var name = "";
|
| 780 |
+
var value = "";
|
| 781 |
+
var nameValueArr = nameValuePairStr.split("=");
|
| 782 |
+
if (nameValueArr.length > 1) {
|
| 783 |
+
name = nameValueArr.shift();
|
| 784 |
+
value = nameValueArr.join("="); // everything after the first =, joined by a "=" if there was more than one part
|
| 785 |
+
} else {
|
| 786 |
+
value = nameValuePairStr;
|
| 787 |
+
}
|
| 788 |
+
|
| 789 |
+
return { name: name, value: value };
|
| 790 |
+
}
|
| 791 |
+
|
| 792 |
+
function parseSetCookie(input, options) {
|
| 793 |
+
options = options
|
| 794 |
+
? Object.assign({}, defaultParseOptions, options)
|
| 795 |
+
: defaultParseOptions;
|
| 796 |
+
|
| 797 |
+
if (!input) {
|
| 798 |
+
if (!options.map) {
|
| 799 |
+
return [];
|
| 800 |
+
} else {
|
| 801 |
+
return createNullObj();
|
| 802 |
+
}
|
| 803 |
+
}
|
| 804 |
+
|
| 805 |
+
if (input.headers) {
|
| 806 |
+
if (typeof input.headers.getSetCookie === "function") {
|
| 807 |
+
// for fetch responses - they combine headers of the same type in the headers array,
|
| 808 |
+
// but getSetCookie returns an uncombined array
|
| 809 |
+
input = input.headers.getSetCookie();
|
| 810 |
+
} else if (input.headers["set-cookie"]) {
|
| 811 |
+
// fast-path for node.js (which automatically normalizes header names to lower-case)
|
| 812 |
+
input = input.headers["set-cookie"];
|
| 813 |
+
} else {
|
| 814 |
+
// slow-path for other environments - see #25
|
| 815 |
+
var sch =
|
| 816 |
+
input.headers[
|
| 817 |
+
Object.keys(input.headers).find(function (key) {
|
| 818 |
+
return key.toLowerCase() === "set-cookie";
|
| 819 |
+
})
|
| 820 |
+
];
|
| 821 |
+
// warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36
|
| 822 |
+
if (!sch && input.headers.cookie && !options.silent) {
|
| 823 |
+
console.warn(
|
| 824 |
+
"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."
|
| 825 |
+
);
|
| 826 |
+
}
|
| 827 |
+
input = sch;
|
| 828 |
+
}
|
| 829 |
+
}
|
| 830 |
+
|
| 831 |
+
var split = options.split;
|
| 832 |
+
var isArray = Array.isArray(input);
|
| 833 |
+
|
| 834 |
+
if (split === "auto") {
|
| 835 |
+
split = !isArray;
|
| 836 |
+
}
|
| 837 |
+
|
| 838 |
+
if (!isArray) {
|
| 839 |
+
input = [input];
|
| 840 |
+
}
|
| 841 |
+
|
| 842 |
+
input = input.filter(isNonEmptyString);
|
| 843 |
+
|
| 844 |
+
if (split) {
|
| 845 |
+
input = input.map(splitCookiesString).flat();
|
| 846 |
+
}
|
| 847 |
+
|
| 848 |
+
if (!options.map) {
|
| 849 |
+
return input
|
| 850 |
+
.map(function (str) {
|
| 851 |
+
return parseString(str, options);
|
| 852 |
+
})
|
| 853 |
+
.filter(Boolean);
|
| 854 |
+
} else {
|
| 855 |
+
var cookies = createNullObj();
|
| 856 |
+
return input.reduce(function (cookies, str) {
|
| 857 |
+
var cookie = parseString(str, options);
|
| 858 |
+
if (cookie && !isForbiddenKey(cookie.name)) {
|
| 859 |
+
cookies[cookie.name] = cookie;
|
| 860 |
+
}
|
| 861 |
+
return cookies;
|
| 862 |
+
}, cookies);
|
| 863 |
+
}
|
| 864 |
+
}
|
| 865 |
+
|
| 866 |
+
/*
|
| 867 |
+
Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas
|
| 868 |
+
that are within a single set-cookie field-value, such as in the Expires portion.
|
| 869 |
+
|
| 870 |
+
This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2
|
| 871 |
+
Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128
|
| 872 |
+
React Native's fetch does this for *every* header, including set-cookie.
|
| 873 |
+
|
| 874 |
+
Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25
|
| 875 |
+
Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation
|
| 876 |
+
*/
|
| 877 |
+
function splitCookiesString(cookiesString) {
|
| 878 |
+
if (Array.isArray(cookiesString)) {
|
| 879 |
+
return cookiesString;
|
| 880 |
+
}
|
| 881 |
+
if (typeof cookiesString !== "string") {
|
| 882 |
+
return [];
|
| 883 |
+
}
|
| 884 |
+
|
| 885 |
+
var cookiesStrings = [];
|
| 886 |
+
var pos = 0;
|
| 887 |
+
var start;
|
| 888 |
+
var ch;
|
| 889 |
+
var lastComma;
|
| 890 |
+
var nextStart;
|
| 891 |
+
var cookiesSeparatorFound;
|
| 892 |
+
|
| 893 |
+
function skipWhitespace() {
|
| 894 |
+
while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))) {
|
| 895 |
+
pos += 1;
|
| 896 |
+
}
|
| 897 |
+
return pos < cookiesString.length;
|
| 898 |
+
}
|
| 899 |
+
|
| 900 |
+
function notSpecialChar() {
|
| 901 |
+
ch = cookiesString.charAt(pos);
|
| 902 |
+
|
| 903 |
+
return ch !== "=" && ch !== ";" && ch !== ",";
|
| 904 |
+
}
|
| 905 |
+
|
| 906 |
+
while (pos < cookiesString.length) {
|
| 907 |
+
start = pos;
|
| 908 |
+
cookiesSeparatorFound = false;
|
| 909 |
+
|
| 910 |
+
while (skipWhitespace()) {
|
| 911 |
+
ch = cookiesString.charAt(pos);
|
| 912 |
+
if (ch === ",") {
|
| 913 |
+
// ',' is a cookie separator if we have later first '=', not ';' or ','
|
| 914 |
+
lastComma = pos;
|
| 915 |
+
pos += 1;
|
| 916 |
+
|
| 917 |
+
skipWhitespace();
|
| 918 |
+
nextStart = pos;
|
| 919 |
+
|
| 920 |
+
while (pos < cookiesString.length && notSpecialChar()) {
|
| 921 |
+
pos += 1;
|
| 922 |
+
}
|
| 923 |
+
|
| 924 |
+
// currently special character
|
| 925 |
+
if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") {
|
| 926 |
+
// we found cookies separator
|
| 927 |
+
cookiesSeparatorFound = true;
|
| 928 |
+
// pos is inside the next cookie, so back up and return it.
|
| 929 |
+
pos = nextStart;
|
| 930 |
+
cookiesStrings.push(cookiesString.substring(start, lastComma));
|
| 931 |
+
start = pos;
|
| 932 |
+
} else {
|
| 933 |
+
// in param ',' or param separator ';',
|
| 934 |
+
// we continue from that comma
|
| 935 |
+
pos = lastComma + 1;
|
| 936 |
+
}
|
| 937 |
+
} else {
|
| 938 |
+
pos += 1;
|
| 939 |
+
}
|
| 940 |
+
}
|
| 941 |
+
|
| 942 |
+
if (!cookiesSeparatorFound || pos >= cookiesString.length) {
|
| 943 |
+
cookiesStrings.push(cookiesString.substring(start, cookiesString.length));
|
| 944 |
+
}
|
| 945 |
+
}
|
| 946 |
+
|
| 947 |
+
return cookiesStrings;
|
| 948 |
+
}
|
| 949 |
+
|
| 950 |
+
// named export for CJS
|
| 951 |
+
parseSetCookie.parseSetCookie = parseSetCookie;
|
| 952 |
+
// for backwards compatibility
|
| 953 |
+
parseSetCookie.parse = parseSetCookie;
|
| 954 |
+
parseSetCookie.parseString = parseString;
|
| 955 |
+
parseSetCookie.splitCookiesString = splitCookiesString;
|
| 956 |
+
|
| 957 |
+
/** @import { StandardSchemaV1 } from '@standard-schema/spec' */
|
| 958 |
+
|
| 959 |
+
|
| 960 |
+
/**
|
| 961 |
+
* An error that was thrown from within the SvelteKit runtime that is not fatal and doesn't result in a 500, such as a 404.
|
| 962 |
+
* `SvelteKitError` goes through `handleError`.
|
| 963 |
+
* @extends Error
|
| 964 |
+
*/
|
| 965 |
+
class SvelteKitError extends Error {
|
| 966 |
+
/**
|
| 967 |
+
* @param {number} status
|
| 968 |
+
* @param {string} text
|
| 969 |
+
* @param {string} message
|
| 970 |
+
*/
|
| 971 |
+
constructor(status, text, message) {
|
| 972 |
+
super(message);
|
| 973 |
+
this.status = status;
|
| 974 |
+
this.text = text;
|
| 975 |
+
}
|
| 976 |
+
}
|
| 977 |
+
|
| 978 |
+
/**
|
| 979 |
+
* @param {import('http').IncomingMessage} req
|
| 980 |
+
* @param {number} [body_size_limit]
|
| 981 |
+
*/
|
| 982 |
+
function get_raw_body(req, body_size_limit) {
|
| 983 |
+
const h = req.headers;
|
| 984 |
+
|
| 985 |
+
if (!h['content-type']) {
|
| 986 |
+
return null;
|
| 987 |
+
}
|
| 988 |
+
|
| 989 |
+
const content_length = Number(h['content-length']);
|
| 990 |
+
|
| 991 |
+
// check if no request body
|
| 992 |
+
if (
|
| 993 |
+
(req.httpVersionMajor === 1 && isNaN(content_length) && h['transfer-encoding'] == null) ||
|
| 994 |
+
content_length === 0
|
| 995 |
+
) {
|
| 996 |
+
return null;
|
| 997 |
+
}
|
| 998 |
+
|
| 999 |
+
if (req.destroyed) {
|
| 1000 |
+
const readable = new ReadableStream();
|
| 1001 |
+
void readable.cancel();
|
| 1002 |
+
return readable;
|
| 1003 |
+
}
|
| 1004 |
+
|
| 1005 |
+
let size = 0;
|
| 1006 |
+
let cancelled = false;
|
| 1007 |
+
|
| 1008 |
+
return new ReadableStream({
|
| 1009 |
+
start(controller) {
|
| 1010 |
+
if (body_size_limit !== undefined && content_length > body_size_limit) {
|
| 1011 |
+
let message = `Content-length of ${content_length} exceeds limit of ${body_size_limit} bytes.`;
|
| 1012 |
+
|
| 1013 |
+
if (body_size_limit === 0) {
|
| 1014 |
+
// https://github.com/sveltejs/kit/pull/11589
|
| 1015 |
+
// TODO this exists to aid migration — remove in a future version
|
| 1016 |
+
message += ' To disable body size limits, specify Infinity rather than 0.';
|
| 1017 |
+
}
|
| 1018 |
+
|
| 1019 |
+
const error = new SvelteKitError(413, 'Payload Too Large', message);
|
| 1020 |
+
|
| 1021 |
+
controller.error(error);
|
| 1022 |
+
return;
|
| 1023 |
+
}
|
| 1024 |
+
|
| 1025 |
+
req.on('error', (error) => {
|
| 1026 |
+
cancelled = true;
|
| 1027 |
+
controller.error(error);
|
| 1028 |
+
});
|
| 1029 |
+
|
| 1030 |
+
req.on('end', () => {
|
| 1031 |
+
if (cancelled) return;
|
| 1032 |
+
controller.close();
|
| 1033 |
+
});
|
| 1034 |
+
|
| 1035 |
+
req.on('data', (chunk) => {
|
| 1036 |
+
if (cancelled) return;
|
| 1037 |
+
|
| 1038 |
+
size += chunk.length;
|
| 1039 |
+
if (size > content_length) {
|
| 1040 |
+
cancelled = true;
|
| 1041 |
+
|
| 1042 |
+
const constraint = content_length ? 'content-length' : 'BODY_SIZE_LIMIT';
|
| 1043 |
+
const message = `request body size exceeded ${constraint} of ${content_length}`;
|
| 1044 |
+
|
| 1045 |
+
const error = new SvelteKitError(413, 'Payload Too Large', message);
|
| 1046 |
+
controller.error(error);
|
| 1047 |
+
|
| 1048 |
+
return;
|
| 1049 |
+
}
|
| 1050 |
+
|
| 1051 |
+
controller.enqueue(chunk);
|
| 1052 |
+
|
| 1053 |
+
if (controller.desiredSize === null || controller.desiredSize <= 0) {
|
| 1054 |
+
req.pause();
|
| 1055 |
+
}
|
| 1056 |
+
});
|
| 1057 |
+
},
|
| 1058 |
+
|
| 1059 |
+
pull() {
|
| 1060 |
+
req.resume();
|
| 1061 |
+
},
|
| 1062 |
+
|
| 1063 |
+
cancel(reason) {
|
| 1064 |
+
cancelled = true;
|
| 1065 |
+
req.destroy(reason);
|
| 1066 |
+
}
|
| 1067 |
+
});
|
| 1068 |
+
}
|
| 1069 |
+
|
| 1070 |
+
/**
|
| 1071 |
+
* @param {{
|
| 1072 |
+
* request: import('http').IncomingMessage;
|
| 1073 |
+
* base: string;
|
| 1074 |
+
* bodySizeLimit?: number;
|
| 1075 |
+
* }} options
|
| 1076 |
+
* @returns {Promise<Request>}
|
| 1077 |
+
*/
|
| 1078 |
+
// TODO 3.0 make the signature synchronous?
|
| 1079 |
+
// eslint-disable-next-line @typescript-eslint/require-await
|
| 1080 |
+
async function getRequest({ request, base, bodySizeLimit }) {
|
| 1081 |
+
let headers = /** @type {Record<string, string>} */ (request.headers);
|
| 1082 |
+
if (request.httpVersionMajor >= 2) {
|
| 1083 |
+
// the Request constructor rejects headers with ':' in the name
|
| 1084 |
+
headers = Object.assign({}, headers);
|
| 1085 |
+
// https://www.rfc-editor.org/rfc/rfc9113.html#section-8.3.1-2.3.5
|
| 1086 |
+
if (headers[':authority']) {
|
| 1087 |
+
headers.host = headers[':authority'];
|
| 1088 |
+
}
|
| 1089 |
+
delete headers[':authority'];
|
| 1090 |
+
delete headers[':method'];
|
| 1091 |
+
delete headers[':path'];
|
| 1092 |
+
delete headers[':scheme'];
|
| 1093 |
+
}
|
| 1094 |
+
|
| 1095 |
+
// TODO: Whenever Node >=22 is minimum supported version, we can use `request.readableAborted`
|
| 1096 |
+
// @see https://github.com/nodejs/node/blob/5cf3c3e24c7257a0c6192ed8ef71efec8ddac22b/lib/internal/streams/readable.js#L1443-L1453
|
| 1097 |
+
const controller = new AbortController();
|
| 1098 |
+
let errored = false;
|
| 1099 |
+
let end_emitted = false;
|
| 1100 |
+
request.once('error', () => (errored = true));
|
| 1101 |
+
request.once('end', () => (end_emitted = true));
|
| 1102 |
+
request.once('close', () => {
|
| 1103 |
+
if ((errored || request.destroyed) && !end_emitted) {
|
| 1104 |
+
controller.abort();
|
| 1105 |
+
}
|
| 1106 |
+
});
|
| 1107 |
+
|
| 1108 |
+
return new Request(base + request.url, {
|
| 1109 |
+
// @ts-expect-error
|
| 1110 |
+
duplex: 'half',
|
| 1111 |
+
method: request.method,
|
| 1112 |
+
headers: Object.entries(headers),
|
| 1113 |
+
signal: controller.signal,
|
| 1114 |
+
body:
|
| 1115 |
+
request.method === 'GET' || request.method === 'HEAD'
|
| 1116 |
+
? undefined
|
| 1117 |
+
: get_raw_body(request, bodySizeLimit)
|
| 1118 |
+
});
|
| 1119 |
+
}
|
| 1120 |
+
|
| 1121 |
+
/**
|
| 1122 |
+
* @param {import('http').ServerResponse} res
|
| 1123 |
+
* @param {Response} response
|
| 1124 |
+
* @returns {Promise<void>}
|
| 1125 |
+
*/
|
| 1126 |
+
// TODO 3.0 make the signature synchronous?
|
| 1127 |
+
// eslint-disable-next-line @typescript-eslint/require-await
|
| 1128 |
+
async function setResponse(res, response) {
|
| 1129 |
+
for (const [key, value] of response.headers) {
|
| 1130 |
+
try {
|
| 1131 |
+
res.setHeader(
|
| 1132 |
+
key,
|
| 1133 |
+
key === 'set-cookie'
|
| 1134 |
+
? splitCookiesString(
|
| 1135 |
+
// This is absurd but necessary, TODO: investigate why
|
| 1136 |
+
/** @type {string}*/ (response.headers.get(key))
|
| 1137 |
+
)
|
| 1138 |
+
: value
|
| 1139 |
+
);
|
| 1140 |
+
} catch (error) {
|
| 1141 |
+
res.getHeaderNames().forEach((name) => res.removeHeader(name));
|
| 1142 |
+
res.writeHead(500).end(String(error));
|
| 1143 |
+
return;
|
| 1144 |
+
}
|
| 1145 |
+
}
|
| 1146 |
+
|
| 1147 |
+
res.writeHead(response.status);
|
| 1148 |
+
|
| 1149 |
+
if (!response.body) {
|
| 1150 |
+
res.end();
|
| 1151 |
+
return;
|
| 1152 |
+
}
|
| 1153 |
+
|
| 1154 |
+
if (response.body.locked) {
|
| 1155 |
+
res.end(
|
| 1156 |
+
'Fatal error: Response body is locked. ' +
|
| 1157 |
+
"This can happen when the response was already read (for example through 'response.json()' or 'response.text()')."
|
| 1158 |
+
);
|
| 1159 |
+
return;
|
| 1160 |
+
}
|
| 1161 |
+
|
| 1162 |
+
const reader = response.body.getReader();
|
| 1163 |
+
|
| 1164 |
+
if (res.destroyed) {
|
| 1165 |
+
void reader.cancel();
|
| 1166 |
+
return;
|
| 1167 |
+
}
|
| 1168 |
+
|
| 1169 |
+
const cancel = (/** @type {Error|undefined} */ error) => {
|
| 1170 |
+
res.off('close', cancel);
|
| 1171 |
+
res.off('error', cancel);
|
| 1172 |
+
|
| 1173 |
+
// If the reader has already been interrupted with an error earlier,
|
| 1174 |
+
// then it will appear here, it is useless, but it needs to be catch.
|
| 1175 |
+
reader.cancel(error).catch(() => {});
|
| 1176 |
+
if (error) res.destroy(error);
|
| 1177 |
+
};
|
| 1178 |
+
|
| 1179 |
+
res.on('close', cancel);
|
| 1180 |
+
res.on('error', cancel);
|
| 1181 |
+
|
| 1182 |
+
void next();
|
| 1183 |
+
async function next() {
|
| 1184 |
+
try {
|
| 1185 |
+
for (;;) {
|
| 1186 |
+
const { done, value } = await reader.read();
|
| 1187 |
+
|
| 1188 |
+
if (done) break;
|
| 1189 |
+
|
| 1190 |
+
if (!res.write(value)) {
|
| 1191 |
+
res.once('drain', next);
|
| 1192 |
+
return;
|
| 1193 |
+
}
|
| 1194 |
+
}
|
| 1195 |
+
res.end();
|
| 1196 |
+
} catch (error) {
|
| 1197 |
+
cancel(error instanceof Error ? error : new Error(String(error)));
|
| 1198 |
+
}
|
| 1199 |
+
}
|
| 1200 |
+
}
|
| 1201 |
+
|
| 1202 |
+
/**
|
| 1203 |
+
* Converts a file on disk to a readable stream
|
| 1204 |
+
* @param {string} file
|
| 1205 |
+
* @returns {ReadableStream}
|
| 1206 |
+
* @since 2.4.0
|
| 1207 |
+
*/
|
| 1208 |
+
function createReadableStream(file) {
|
| 1209 |
+
return /** @type {ReadableStream} */ (Readable.toWeb(createReadStream(file)));
|
| 1210 |
+
}
|
| 1211 |
+
|
| 1212 |
+
/**
|
| 1213 |
+
* Parses the given value into number of bytes.
|
| 1214 |
+
*
|
| 1215 |
+
* @param {string} value - Size in bytes. Can also be specified with a unit suffix kilobytes (K), megabytes (M), or gigabytes (G).
|
| 1216 |
+
* @returns {number}
|
| 1217 |
+
*/
|
| 1218 |
+
function parse_as_bytes(value) {
|
| 1219 |
+
const multiplier =
|
| 1220 |
+
{
|
| 1221 |
+
K: 1024,
|
| 1222 |
+
M: 1024 * 1024,
|
| 1223 |
+
G: 1024 * 1024 * 1024
|
| 1224 |
+
}[value[value.length - 1]?.toUpperCase()] ?? 1;
|
| 1225 |
+
return Number(multiplier != 1 ? value.substring(0, value.length - 1) : value) * multiplier;
|
| 1226 |
+
}
|
| 1227 |
+
|
| 1228 |
+
/**
|
| 1229 |
+
* Parses and validates an origin URL.
|
| 1230 |
+
*
|
| 1231 |
+
* @param {string | undefined} value - Origin URL with http:// or https:// protocol
|
| 1232 |
+
* @returns {string | undefined} The validated origin, or undefined if value is undefined
|
| 1233 |
+
* @throws {Error} If value is provided but invalid
|
| 1234 |
+
*/
|
| 1235 |
+
function parse_origin(value) {
|
| 1236 |
+
if (value === undefined) {
|
| 1237 |
+
return undefined;
|
| 1238 |
+
}
|
| 1239 |
+
|
| 1240 |
+
const trimmed = value.trim();
|
| 1241 |
+
|
| 1242 |
+
let url;
|
| 1243 |
+
try {
|
| 1244 |
+
url = new URL(trimmed);
|
| 1245 |
+
} catch (error) {
|
| 1246 |
+
throw new Error(
|
| 1247 |
+
`Invalid ORIGIN: '${trimmed}'. ` +
|
| 1248 |
+
`ORIGIN must be a valid URL with http:// or https:// protocol. ` +
|
| 1249 |
+
`For example: 'http://localhost:3000' or 'https://my.site'`,
|
| 1250 |
+
{ cause: error }
|
| 1251 |
+
);
|
| 1252 |
+
}
|
| 1253 |
+
|
| 1254 |
+
if (url.protocol !== 'http:' && url.protocol !== 'https:') {
|
| 1255 |
+
throw new Error(
|
| 1256 |
+
`Invalid ORIGIN: '${trimmed}'. ` +
|
| 1257 |
+
`Only http:// and https:// protocols are supported. ` +
|
| 1258 |
+
`Received protocol: ${url.protocol}`
|
| 1259 |
+
);
|
| 1260 |
+
}
|
| 1261 |
+
|
| 1262 |
+
return url.origin;
|
| 1263 |
+
}
|
| 1264 |
+
|
| 1265 |
+
/* global "" */
|
| 1266 |
+
/* global true */
|
| 1267 |
+
|
| 1268 |
+
const server = new Server(manifest);
|
| 1269 |
+
|
| 1270 |
+
// parse_origin validates ORIGIN and throws descriptive errors for invalid values
|
| 1271 |
+
const origin = parse_origin(env('ORIGIN', undefined));
|
| 1272 |
+
|
| 1273 |
+
const xff_depth = parseInt(env('XFF_DEPTH', '1'));
|
| 1274 |
+
const address_header = env('ADDRESS_HEADER', '').toLowerCase();
|
| 1275 |
+
const protocol_header = env('PROTOCOL_HEADER', '').toLowerCase();
|
| 1276 |
+
const host_header = env('HOST_HEADER', '').toLowerCase();
|
| 1277 |
+
const port_header = env('PORT_HEADER', '').toLowerCase();
|
| 1278 |
+
|
| 1279 |
+
const body_size_limit = parse_as_bytes(env('BODY_SIZE_LIMIT', '512K'));
|
| 1280 |
+
|
| 1281 |
+
if (isNaN(body_size_limit)) {
|
| 1282 |
+
throw new Error(
|
| 1283 |
+
`Invalid BODY_SIZE_LIMIT: '${env('BODY_SIZE_LIMIT')}'. Please provide a numeric value.`
|
| 1284 |
+
);
|
| 1285 |
+
}
|
| 1286 |
+
|
| 1287 |
+
const dir = path.dirname(fileURLToPath(import.meta.url));
|
| 1288 |
+
|
| 1289 |
+
const asset_dir = `${dir}/client${base}`;
|
| 1290 |
+
|
| 1291 |
+
await server.init({
|
| 1292 |
+
env: /** @type {Record<string, string>} */ (process.env),
|
| 1293 |
+
read: (file) => createReadableStream(`${asset_dir}/${file}`)
|
| 1294 |
+
});
|
| 1295 |
+
|
| 1296 |
+
/**
|
| 1297 |
+
* @param {string} path
|
| 1298 |
+
* @param {boolean} client
|
| 1299 |
+
*/
|
| 1300 |
+
function serve(path, client = false) {
|
| 1301 |
+
return fs__default.existsSync(path)
|
| 1302 |
+
? sirv(path, {
|
| 1303 |
+
etag: true,
|
| 1304 |
+
gzip: true,
|
| 1305 |
+
brotli: true,
|
| 1306 |
+
setHeaders: client
|
| 1307 |
+
? (res, pathname) => {
|
| 1308 |
+
// only apply to build directory, not e.g. version.json
|
| 1309 |
+
if (
|
| 1310 |
+
pathname.startsWith(`/${manifest.appPath}/immutable/`) &&
|
| 1311 |
+
res.statusCode === 200
|
| 1312 |
+
) {
|
| 1313 |
+
res.setHeader('cache-control', 'public,max-age=31536000,immutable');
|
| 1314 |
+
}
|
| 1315 |
+
}
|
| 1316 |
+
: undefined
|
| 1317 |
+
})
|
| 1318 |
+
: undefined;
|
| 1319 |
+
}
|
| 1320 |
+
|
| 1321 |
+
// required because the static file server ignores trailing slashes
|
| 1322 |
+
/** @returns {import('polka').Middleware} */
|
| 1323 |
+
function serve_prerendered() {
|
| 1324 |
+
const handler = serve(path.join(dir, 'prerendered'));
|
| 1325 |
+
|
| 1326 |
+
return (req, res, next) => {
|
| 1327 |
+
let { pathname, search, query } = parse(req);
|
| 1328 |
+
|
| 1329 |
+
try {
|
| 1330 |
+
pathname = decodeURIComponent(pathname);
|
| 1331 |
+
} catch {
|
| 1332 |
+
// ignore invalid URI
|
| 1333 |
+
}
|
| 1334 |
+
|
| 1335 |
+
if (prerendered.has(pathname)) {
|
| 1336 |
+
return handler?.(req, res, next);
|
| 1337 |
+
}
|
| 1338 |
+
|
| 1339 |
+
// remove or add trailing slash as appropriate
|
| 1340 |
+
let location = pathname.at(-1) === '/' ? pathname.slice(0, -1) : pathname + '/';
|
| 1341 |
+
if (prerendered.has(location)) {
|
| 1342 |
+
if (query) location += search;
|
| 1343 |
+
res.writeHead(308, { location }).end();
|
| 1344 |
+
} else {
|
| 1345 |
+
void next();
|
| 1346 |
+
}
|
| 1347 |
+
};
|
| 1348 |
+
}
|
| 1349 |
+
|
| 1350 |
+
/** @type {import('polka').Middleware} */
|
| 1351 |
+
const ssr = async (req, res) => {
|
| 1352 |
+
/** @type {Request} */
|
| 1353 |
+
let request;
|
| 1354 |
+
|
| 1355 |
+
try {
|
| 1356 |
+
request = await getRequest({
|
| 1357 |
+
base: origin || get_origin(req.headers),
|
| 1358 |
+
request: req,
|
| 1359 |
+
bodySizeLimit: body_size_limit
|
| 1360 |
+
});
|
| 1361 |
+
} catch {
|
| 1362 |
+
res.statusCode = 400;
|
| 1363 |
+
res.end('Bad Request');
|
| 1364 |
+
return;
|
| 1365 |
+
}
|
| 1366 |
+
|
| 1367 |
+
await setResponse(
|
| 1368 |
+
res,
|
| 1369 |
+
await server.respond(request, {
|
| 1370 |
+
platform: { req },
|
| 1371 |
+
getClientAddress: () => {
|
| 1372 |
+
if (address_header) {
|
| 1373 |
+
if (!(address_header in req.headers)) {
|
| 1374 |
+
throw new Error(
|
| 1375 |
+
`Address header was specified with ${
|
| 1376 |
+
"" + 'ADDRESS_HEADER'
|
| 1377 |
+
}=${address_header} but is absent from request`
|
| 1378 |
+
);
|
| 1379 |
+
}
|
| 1380 |
+
|
| 1381 |
+
const value = /** @type {string} */ (req.headers[address_header]) || '';
|
| 1382 |
+
|
| 1383 |
+
if (address_header === 'x-forwarded-for') {
|
| 1384 |
+
const addresses = value.split(',');
|
| 1385 |
+
|
| 1386 |
+
if (xff_depth < 1) {
|
| 1387 |
+
throw new Error(`${"" + 'XFF_DEPTH'} must be a positive integer`);
|
| 1388 |
+
}
|
| 1389 |
+
|
| 1390 |
+
if (xff_depth > addresses.length) {
|
| 1391 |
+
throw new Error(
|
| 1392 |
+
`${"" + 'XFF_DEPTH'} is ${xff_depth}, but only found ${
|
| 1393 |
+
addresses.length
|
| 1394 |
+
} addresses`
|
| 1395 |
+
);
|
| 1396 |
+
}
|
| 1397 |
+
return addresses[addresses.length - xff_depth].trim();
|
| 1398 |
+
}
|
| 1399 |
+
|
| 1400 |
+
return value;
|
| 1401 |
+
}
|
| 1402 |
+
|
| 1403 |
+
return (
|
| 1404 |
+
req.connection?.remoteAddress ||
|
| 1405 |
+
// @ts-expect-error
|
| 1406 |
+
req.connection?.socket?.remoteAddress ||
|
| 1407 |
+
req.socket?.remoteAddress ||
|
| 1408 |
+
// @ts-expect-error
|
| 1409 |
+
req.info?.remoteAddress
|
| 1410 |
+
);
|
| 1411 |
+
}
|
| 1412 |
+
})
|
| 1413 |
+
);
|
| 1414 |
+
};
|
| 1415 |
+
|
| 1416 |
+
/** @param {import('polka').Middleware[]} handlers */
|
| 1417 |
+
function sequence(handlers) {
|
| 1418 |
+
/** @type {import('polka').Middleware} */
|
| 1419 |
+
return (req, res, next) => {
|
| 1420 |
+
/**
|
| 1421 |
+
* @param {number} i
|
| 1422 |
+
* @returns {ReturnType<import('polka').Middleware>}
|
| 1423 |
+
*/
|
| 1424 |
+
function handle(i) {
|
| 1425 |
+
if (i < handlers.length) {
|
| 1426 |
+
return handlers[i](req, res, () => handle(i + 1));
|
| 1427 |
+
} else {
|
| 1428 |
+
return next();
|
| 1429 |
+
}
|
| 1430 |
+
}
|
| 1431 |
+
|
| 1432 |
+
return handle(0);
|
| 1433 |
+
};
|
| 1434 |
+
}
|
| 1435 |
+
|
| 1436 |
+
/**
|
| 1437 |
+
* @param {string} name
|
| 1438 |
+
* @param {string | string[] | undefined} value
|
| 1439 |
+
* @returns {string | undefined}
|
| 1440 |
+
*/
|
| 1441 |
+
function normalise_header(name, value) {
|
| 1442 |
+
if (!name) return undefined;
|
| 1443 |
+
if (Array.isArray(value)) {
|
| 1444 |
+
if (value.length === 0) return undefined;
|
| 1445 |
+
if (value.length === 1) return value[0];
|
| 1446 |
+
throw new Error(
|
| 1447 |
+
`Multiple values provided for ${name} header where only one expected: ${value}`
|
| 1448 |
+
);
|
| 1449 |
+
}
|
| 1450 |
+
return value;
|
| 1451 |
+
}
|
| 1452 |
+
|
| 1453 |
+
/**
|
| 1454 |
+
* @param {import('http').IncomingHttpHeaders} headers
|
| 1455 |
+
* @returns {string}
|
| 1456 |
+
*/
|
| 1457 |
+
function get_origin(headers) {
|
| 1458 |
+
const protocol = decodeURIComponent(
|
| 1459 |
+
normalise_header(protocol_header, headers[protocol_header]) || 'https'
|
| 1460 |
+
);
|
| 1461 |
+
|
| 1462 |
+
// this helps us avoid host injections through the protocol header
|
| 1463 |
+
if (protocol.includes(':')) {
|
| 1464 |
+
throw new Error(
|
| 1465 |
+
`The ${protocol_header} header specified ${protocol} which is an invalid because it includes \`:\`. It should only contain the protocol scheme (e.g. \`https\`)`
|
| 1466 |
+
);
|
| 1467 |
+
}
|
| 1468 |
+
|
| 1469 |
+
const host =
|
| 1470 |
+
normalise_header(host_header, headers[host_header]) ||
|
| 1471 |
+
normalise_header('host', headers['host']);
|
| 1472 |
+
if (!host) {
|
| 1473 |
+
const header_names = host_header ? `${host_header} or host headers` : 'host header';
|
| 1474 |
+
throw new Error(
|
| 1475 |
+
`Could not determine host. The request must have a value provided by the ${header_names}`
|
| 1476 |
+
);
|
| 1477 |
+
}
|
| 1478 |
+
|
| 1479 |
+
const port = normalise_header(port_header, headers[port_header]);
|
| 1480 |
+
if (port && isNaN(+port)) {
|
| 1481 |
+
throw new Error(
|
| 1482 |
+
`The ${port_header} header specified ${port} which is an invalid port because it is not a number. The value should only contain the port number (e.g. 443)`
|
| 1483 |
+
);
|
| 1484 |
+
}
|
| 1485 |
+
|
| 1486 |
+
return port ? `${protocol}://${host}:${port}` : `${protocol}://${host}`;
|
| 1487 |
+
}
|
| 1488 |
+
|
| 1489 |
+
const handler = sequence(
|
| 1490 |
+
/** @type {(import('sirv').RequestHandler | import('polka').Middleware)[]} */
|
| 1491 |
+
([serve(path.join(dir, 'client'), true), serve_prerendered(), ssr].filter(Boolean))
|
| 1492 |
+
);
|
| 1493 |
+
|
| 1494 |
+
export { handler };
|