zen-temple 0.7.2.dev1__tar.gz → 0.7.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zen_temple-0.7.3/PKG-INFO +126 -0
- zen_temple-0.7.3/README.md +103 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/pyproject.toml +1 -1
- zen_temple-0.7.3/zen_temple/errors.py +2 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/assets/6.DpRBXrkG.css +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/assets/_page.DpRBXrkG.css +1 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/Hpa8B7Rc.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/-3L7ibXM.js +1 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/Bd0-aO2Q.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/5DMf3Tuo.js +1 -1
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/B8ie1dNX.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/BMYyQQSJ.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/BXYWQNn4.js +1 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/DVIxwpxE.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/Bj1_KIDD.js +1 -1
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/CfPWzxx9.js +2 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/DS97ykb2.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/Cq-WyKR3.js +1 -1
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/CvUL_eGA.js +2 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/CyI3pj5p.js +1 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/CINfEwQf.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/DGW-WTaR.js +11 -11
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/se_iUg_v.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/DMR9dXLF.js +1 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/C92D-6Mo.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/DjkreYQD.js +1 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/BxxbHW41.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/Dm-QooKW.js +1 -1
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/Dsl-dlBH.js +1 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/Drxlg-Xn.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/XfyNEFST.js +1 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/CTc1z_v2.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/fAgV3R1g.js +1 -1
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/gMw3n3N4.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/s1BYIP7S.js +22 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/sC7lIlGN.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/chunks/x2iojDpW.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/entry/app.BKwNb_tA.js +2 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/entry/start.Bn_jgDKz.js +1 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/0.B6XItSbU.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/0.aVzefBl1.js +2 -2
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/1.PVBoO7VZ.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/10.C94ZK9Nv.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/11.BB_-PyOP.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/12.BlwWbVjQ.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/2.CsuYZjX1.js +1 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/3.Dw3puJTo.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/3.Bn2dM149.js +1 -1
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/4.CzwGY9Kr.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/5.BSYzov_S.js +1 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/6.D-lGqTcE.js +5 -0
- zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/7.dP10sOYn.js +3 -0
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/8.zCavfpyd.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/8.DQ-Ja4V4.js +1 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/9.C0TrNojy.js → zen_temple-0.7.3/zen_temple/explorer/_app/immutable/nodes/9.BW-j8GyC.js +1 -1
- zen_temple-0.7.3/zen_temple/explorer/_app/version.json +1 -0
- {zen_temple-0.7.2.dev1/zen_temple/explorer/energy_system → zen_temple-0.7.3/zen_temple/explorer/energy_balance/nodal}/index.html +13 -13
- {zen_temple-0.7.2.dev1/zen_temple/explorer/energy_balance/nodal → zen_temple-0.7.3/zen_temple/explorer/energy_balance/storage}/index.html +13 -13
- {zen_temple-0.7.2.dev1/zen_temple/explorer/energy_balance/storage → zen_temple-0.7.3/zen_temple/explorer/energy_system}/index.html +13 -13
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/index.html +13 -13
- zen_temple-0.7.3/zen_temple/explorer/map/index.html +52 -0
- zen_temple-0.7.3/zen_temple/explorer/transition/capacity/index.html +52 -0
- zen_temple-0.7.3/zen_temple/explorer/transition/costs/index.html +52 -0
- zen_temple-0.7.3/zen_temple/explorer/transition/emissions/index.html +52 -0
- zen_temple-0.7.3/zen_temple/explorer/transition/index.html +52 -0
- zen_temple-0.7.3/zen_temple/explorer/transition/production/index.html +52 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/models/solution.py +26 -26
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/repositories/solution_repository.py +28 -5
- zen_temple-0.7.3/zen_temple.egg-info/PKG-INFO +126 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple.egg-info/SOURCES.txt +39 -39
- zen_temple-0.7.2.dev1/PKG-INFO +0 -99
- zen_temple-0.7.2.dev1/README.md +0 -76
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/assets/6.RyvcvckI.css +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/assets/_page.RyvcvckI.css +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/6KI89v4Y.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/BIpecMnu.js +0 -2
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/BNZwnsPw.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/BbB4DTre.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/C6Y5c09E.js +0 -22
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/CmpsC6LN.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/CpZHtke-.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/CxYln1hn.js +0 -2
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/D6s5toP0.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/DL8SZLkd.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/DicWSYyP.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/chunks/iLwl9KAB.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/entry/app.Bp3FD6fc.js +0 -2
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/entry/start.CnZ2Rhut.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/1.DmpENjmB.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/10.BWlUcSUW.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/11.CtdXfl4D.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/12.Mxj6Y4wo.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/2.0g-D28Cy.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/4.XXRRLHyJ.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/5.DAcJ1nQf.js +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/6.CdUDVMzG.js +0 -3
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/immutable/nodes/7.CWlGsJIN.js +0 -3
- zen_temple-0.7.2.dev1/zen_temple/explorer/_app/version.json +0 -1
- zen_temple-0.7.2.dev1/zen_temple/explorer/map/index.html +0 -52
- zen_temple-0.7.2.dev1/zen_temple/explorer/transition/capacity/index.html +0 -52
- zen_temple-0.7.2.dev1/zen_temple/explorer/transition/costs/index.html +0 -52
- zen_temple-0.7.2.dev1/zen_temple/explorer/transition/emissions/index.html +0 -52
- zen_temple-0.7.2.dev1/zen_temple/explorer/transition/index.html +0 -52
- zen_temple-0.7.2.dev1/zen_temple/explorer/transition/production/index.html +0 -52
- zen_temple-0.7.2.dev1/zen_temple.egg-info/PKG-INFO +0 -99
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/LICENSE +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/setup.cfg +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/__init__.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/config.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/env.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/0.D1tPPeLD.css +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/3.BLUK3SDz.css +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/7.B0mkfc-a.css +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/BarPlot.BovkadW7.css +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/_layout.D1tPPeLD.css +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/_page.B0mkfc-a.css +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/_page.BLUK3SDz.css +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/bootstrap-icons.BeopsB42.woff +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/bootstrap-icons.mSm7cUeB.woff2 +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/assets/zen_garden_small.Bbfqs-kl.png +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/43hnhKVC.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/69_IOA4Y.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/B34HR-o6.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/BGj-pI5n.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/BXl3LOEh.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/CpFZsRVk.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/CqS7hfz2.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/DIeogL5L.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/_app/immutable/chunks/DsnmJJEf.js +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/apple-touch-icon.png +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/favicon-96x96.png +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/favicon.ico +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/favicon.svg +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/site.webmanifest +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/web-app-manifest-192x192.png +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/explorer/web-app-manifest-512x512.png +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/main.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/models/__init__.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/py.typed +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/repositories/__init__.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/routers/__init__.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/routers/solutions.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple/utils.py +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple.egg-info/dependency_links.txt +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple.egg-info/requires.txt +0 -0
- {zen_temple-0.7.2.dev1 → zen_temple-0.7.3}/zen_temple.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: zen_temple
|
|
3
|
+
Version: 0.7.3
|
|
4
|
+
Summary: The visualization plattform for ZEN-garden
|
|
5
|
+
Author-email: ZEN-garden developers <zen-garden@ethz.ch>
|
|
6
|
+
Project-URL: Homepage, https://github.com/ZEN-universe/ZEN-temple
|
|
7
|
+
Project-URL: Issues, https://github.com/ZEN-universe/ZEN-temple/issues
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: uvicorn
|
|
15
|
+
Requires-Dist: fastapi[standard]
|
|
16
|
+
Requires-Dist: fastapi-cache2
|
|
17
|
+
Requires-Dist: python-dotenv
|
|
18
|
+
Requires-Dist: zen-garden
|
|
19
|
+
Requires-Dist: mypy>=1.14.1
|
|
20
|
+
Provides-Extra: mypy
|
|
21
|
+
Requires-Dist: pandas-stubs; extra == "mypy"
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# ZEN-temple
|
|
25
|
+
|
|
26
|
+
ZEN-temple is a FastAPI Application that provides a REST API to access results from [ZEN-garden](https://github.com/ZEN-universe/ZEN-garden). It is used as a backend for [ZEN-Explorer](https://github.com/ZEN-universe/ZEN-explorer).
|
|
27
|
+
|
|
28
|
+
[](https://pypi.org/project/zen-temple/)
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
[](https://github.com/ZEN-universe/ZEN-temple/actions/workflows/run-mypy.yml)
|
|
32
|
+
|
|
33
|
+
[](https://github.com/ZEN-universe/ZEN-temple/blob/main/LICENSE)
|
|
34
|
+
|
|
35
|
+
## 🛠️ Requirements
|
|
36
|
+
|
|
37
|
+
- Conda (https://docs.conda.io/en/latest/miniconda.html)
|
|
38
|
+
- Python 3.10 or higher
|
|
39
|
+
|
|
40
|
+
## 📦 Installation
|
|
41
|
+
|
|
42
|
+
Perform the following steps to install ZEN-temple:
|
|
43
|
+
|
|
44
|
+
1. Clone the repository and navigate into the folder:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/ZEN-universe/ZEN-temple.git
|
|
48
|
+
cd ZEN-temple
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
1. Create a new conda environment, activate it, and install all dependencies:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
conda create --name <your-env-name> python==3.12
|
|
55
|
+
conda activate <your-env-name>
|
|
56
|
+
pip install -e .[mypy]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
2. Create a new copy of `.env`.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
cp .env.example .env
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Modify the `SOLUTION_FOLDER` variable to the location of your solutions, e.g. `./outputs`. This is the `outputs` folder generated by ZEN-garden.
|
|
66
|
+
|
|
67
|
+
## ▶️ Usage
|
|
68
|
+
|
|
69
|
+
Open this folder in your terminal. Activate your conda environment for this project and run the application with the following commands:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
conda activate <your-env-name>
|
|
73
|
+
python -m zen_temple.main --reload
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
For information about the available command line arguments run:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python -m zen_temple.main --help
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 📤 Release workflow
|
|
83
|
+
|
|
84
|
+
To create a new release of ZEN-temple follow the following steps. The idea is that for each major release (from `v0.4.x` to `v0.5.0`) we sync the version number of ZEN-explorer and ZEN-temple
|
|
85
|
+
|
|
86
|
+
1. Bump version in ZEN-explorer `bash scripts/bump_version.sh` and update its CHANGELOG.md.
|
|
87
|
+
2. Commit and upload the updated files to GitHub.
|
|
88
|
+
3. Create a new release for ZEN-explorer:
|
|
89
|
+
https://github.com/ZEN-universe/ZEN-explorer/releases/new
|
|
90
|
+
4. Bump version in ZEN-temple `bash scripts/bump_version.sh` and update [CHANGELOG.md](CHANGELOG.md).
|
|
91
|
+
5. Commit and upload the updated files to GitHub.
|
|
92
|
+
6. Create a new release for ZEN-temple, e.g. `<version>`. For a pre-release also add a suffix `.dev1`, i.e. `<version>.dev1`, and mark the release as pre-release:
|
|
93
|
+
https://github.com/ZEN-universe/ZEN-temple/releases/new
|
|
94
|
+
7. (optional) Look at PyPI whether the new release has successfully been created:
|
|
95
|
+
https://pypi.org/project/zen-temple/#history
|
|
96
|
+
|
|
97
|
+
## 🗂️ Folder structure
|
|
98
|
+
|
|
99
|
+
The folder and file structure is the following:
|
|
100
|
+
|
|
101
|
+
### Explorer
|
|
102
|
+
|
|
103
|
+
`explorer` contains the HTML files for the frontend.
|
|
104
|
+
|
|
105
|
+
> [!WARNING]
|
|
106
|
+
> Do not edit the files in this folder. This folder is automatically generated by the frontend repository pipeline.
|
|
107
|
+
|
|
108
|
+
### Models
|
|
109
|
+
|
|
110
|
+
`models` contains the Pydantic-models that are used for the documentation. Some of these models also include generators that create an instance of the model given the path of a solution. See https://fastapi.tiangolo.com/tutorial/body/#create-your-data-model
|
|
111
|
+
|
|
112
|
+
### Repositories
|
|
113
|
+
|
|
114
|
+
`repositories` contains the repositories for the data access. These provide an abstraction layer for the routers such that the data access is separated from the data source. Arguably, the generators defined in the models should be part of the repository in order to separate the instantiation of the models from the way that the solutions are stored. For more information visit https://www.umlboard.com/design-patterns/repository.html
|
|
115
|
+
|
|
116
|
+
### Routers
|
|
117
|
+
|
|
118
|
+
`routers` contains the FastAPI routers which define the different paths of the API server. For more information visit https://fastapi.tiangolo.com/tutorial/bigger-applications/
|
|
119
|
+
|
|
120
|
+
### Config
|
|
121
|
+
|
|
122
|
+
`config.py` contains the config of the application.
|
|
123
|
+
|
|
124
|
+
### Main
|
|
125
|
+
|
|
126
|
+
`main.py` contains the setup of the FastAPI application. For more information visit https://fastapi.tiangolo.com/tutorial/bigger-applications/
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# ZEN-temple
|
|
2
|
+
|
|
3
|
+
ZEN-temple is a FastAPI Application that provides a REST API to access results from [ZEN-garden](https://github.com/ZEN-universe/ZEN-garden). It is used as a backend for [ZEN-Explorer](https://github.com/ZEN-universe/ZEN-explorer).
|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/zen-temple/)
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
[](https://github.com/ZEN-universe/ZEN-temple/actions/workflows/run-mypy.yml)
|
|
9
|
+
|
|
10
|
+
[](https://github.com/ZEN-universe/ZEN-temple/blob/main/LICENSE)
|
|
11
|
+
|
|
12
|
+
## 🛠️ Requirements
|
|
13
|
+
|
|
14
|
+
- Conda (https://docs.conda.io/en/latest/miniconda.html)
|
|
15
|
+
- Python 3.10 or higher
|
|
16
|
+
|
|
17
|
+
## 📦 Installation
|
|
18
|
+
|
|
19
|
+
Perform the following steps to install ZEN-temple:
|
|
20
|
+
|
|
21
|
+
1. Clone the repository and navigate into the folder:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
git clone https://github.com/ZEN-universe/ZEN-temple.git
|
|
25
|
+
cd ZEN-temple
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
1. Create a new conda environment, activate it, and install all dependencies:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
conda create --name <your-env-name> python==3.12
|
|
32
|
+
conda activate <your-env-name>
|
|
33
|
+
pip install -e .[mypy]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. Create a new copy of `.env`.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cp .env.example .env
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Modify the `SOLUTION_FOLDER` variable to the location of your solutions, e.g. `./outputs`. This is the `outputs` folder generated by ZEN-garden.
|
|
43
|
+
|
|
44
|
+
## ▶️ Usage
|
|
45
|
+
|
|
46
|
+
Open this folder in your terminal. Activate your conda environment for this project and run the application with the following commands:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
conda activate <your-env-name>
|
|
50
|
+
python -m zen_temple.main --reload
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For information about the available command line arguments run:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
python -m zen_temple.main --help
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 📤 Release workflow
|
|
60
|
+
|
|
61
|
+
To create a new release of ZEN-temple follow the following steps. The idea is that for each major release (from `v0.4.x` to `v0.5.0`) we sync the version number of ZEN-explorer and ZEN-temple
|
|
62
|
+
|
|
63
|
+
1. Bump version in ZEN-explorer `bash scripts/bump_version.sh` and update its CHANGELOG.md.
|
|
64
|
+
2. Commit and upload the updated files to GitHub.
|
|
65
|
+
3. Create a new release for ZEN-explorer:
|
|
66
|
+
https://github.com/ZEN-universe/ZEN-explorer/releases/new
|
|
67
|
+
4. Bump version in ZEN-temple `bash scripts/bump_version.sh` and update [CHANGELOG.md](CHANGELOG.md).
|
|
68
|
+
5. Commit and upload the updated files to GitHub.
|
|
69
|
+
6. Create a new release for ZEN-temple, e.g. `<version>`. For a pre-release also add a suffix `.dev1`, i.e. `<version>.dev1`, and mark the release as pre-release:
|
|
70
|
+
https://github.com/ZEN-universe/ZEN-temple/releases/new
|
|
71
|
+
7. (optional) Look at PyPI whether the new release has successfully been created:
|
|
72
|
+
https://pypi.org/project/zen-temple/#history
|
|
73
|
+
|
|
74
|
+
## 🗂️ Folder structure
|
|
75
|
+
|
|
76
|
+
The folder and file structure is the following:
|
|
77
|
+
|
|
78
|
+
### Explorer
|
|
79
|
+
|
|
80
|
+
`explorer` contains the HTML files for the frontend.
|
|
81
|
+
|
|
82
|
+
> [!WARNING]
|
|
83
|
+
> Do not edit the files in this folder. This folder is automatically generated by the frontend repository pipeline.
|
|
84
|
+
|
|
85
|
+
### Models
|
|
86
|
+
|
|
87
|
+
`models` contains the Pydantic-models that are used for the documentation. Some of these models also include generators that create an instance of the model given the path of a solution. See https://fastapi.tiangolo.com/tutorial/body/#create-your-data-model
|
|
88
|
+
|
|
89
|
+
### Repositories
|
|
90
|
+
|
|
91
|
+
`repositories` contains the repositories for the data access. These provide an abstraction layer for the routers such that the data access is separated from the data source. Arguably, the generators defined in the models should be part of the repository in order to separate the instantiation of the models from the way that the solutions are stored. For more information visit https://www.umlboard.com/design-patterns/repository.html
|
|
92
|
+
|
|
93
|
+
### Routers
|
|
94
|
+
|
|
95
|
+
`routers` contains the FastAPI routers which define the different paths of the API server. For more information visit https://fastapi.tiangolo.com/tutorial/bigger-applications/
|
|
96
|
+
|
|
97
|
+
### Config
|
|
98
|
+
|
|
99
|
+
`config.py` contains the config of the application.
|
|
100
|
+
|
|
101
|
+
### Main
|
|
102
|
+
|
|
103
|
+
`main.py` contains the setup of the FastAPI application. For more information visit https://fastapi.tiangolo.com/tutorial/bigger-applications/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
svg.svelte-1wzhsk8{font:9px sans-serif}.node.svelte-1wzhsk8{cursor:row-resize}.node.svelte-1wzhsk8 rect:where(.svelte-1wzhsk8){stroke:#000;stroke-width:2px}.link.svelte-1wzhsk8{fill:none;stroke:#000;stroke-opacity:.3}.link.svelte-1wzhsk8:hover{stroke-opacity:.5}.cycle-link.svelte-1wzhsk8{opacity:.3;stroke:none;stroke-linejoin:round}.cycle-link.svelte-1wzhsk8:hover{opacity:.5}.fs-7.svelte-1wzhsk8{font-size:.875rem}.fs-8.svelte-1wzhsk8{font-size:.75rem}.text-no-break.svelte-1wzhsk8{white-space:nowrap}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
svg.svelte-1wzhsk8{font:9px sans-serif}.node.svelte-1wzhsk8{cursor:row-resize}.node.svelte-1wzhsk8 rect:where(.svelte-1wzhsk8){stroke:#000;stroke-width:2px}.link.svelte-1wzhsk8{fill:none;stroke:#000;stroke-opacity:.3}.link.svelte-1wzhsk8:hover{stroke-opacity:.5}.cycle-link.svelte-1wzhsk8{opacity:.3;stroke:none;stroke-linejoin:round}.cycle-link.svelte-1wzhsk8:hover{opacity:.5}.fs-7.svelte-1wzhsk8{font-size:.875rem}.fs-8.svelte-1wzhsk8{font-size:.75rem}.text-no-break.svelte-1wzhsk8{white-space:nowrap}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as c,q as f,E as _,F as d,G as l,B as u,H as h,I as m,n as v,J as y,K as o,L as g}from"./
|
|
1
|
+
import{D as c,q as f,E as _,F as d,G as l,B as u,H as h,I as m,n as v,J as y,K as o,L as g}from"./XfyNEFST.js";function b(r,n,...s){var t=r,e=v,a;c(()=>{e!==(e=n())&&(a&&(y(a),a=null),a=m(()=>e(t,...s)))},h),f&&(t=o)}function F(r){return(n,...s)=>{var t=r(...s),e;if(f)e=o,_();else{var a=t.render().trim(),p=d(a);e=g(p),n.before(e)}const i=t.setup?.(e);l(e,e),typeof i=="function"&&u(i)}}export{F as c,b as s};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as b}from"./
|
|
1
|
+
import{t as b}from"./CvUL_eGA.js";import{q as g}from"./XfyNEFST.js";function A(i,h,t,N,f,r){var o=i.__className;if(g||o!==t||o===void 0){var a=b(t,N,r);(!g||a!==i.getAttribute("class"))&&(a==null?i.removeAttribute("class"):i.className=a),i.__className=t}else if(r&&f!==r)for(var l in r){var u=!!r[l];(f==null||u!==!!f[l])&&i.classList.toggle(l,u)}return r}export{A as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{M as L,N as p,O as v,P as M,Q as S,R as k,B,C as O,S as T}from"./XfyNEFST.js";const q=new Set,x=new Set;function N(r,a,i,n={}){function e(t){if(n.capture||P.call(a,t),!t.cancelBubble)return T(()=>i?.call(this,t))}return r.startsWith("pointer")||r.startsWith("touch")||r==="wheel"?O(()=>{a.addEventListener(r,e,n)}):a.addEventListener(r,e,n),e}function C(r,a,i,n,e){var t={capture:n,passive:e},l=N(r,a,i,t);(a===document.body||a===window||a===document||a instanceof HTMLMediaElement)&&B(()=>{a.removeEventListener(r,l,t)})}function D(r){for(var a=0;a<r.length;a++)q.add(r[a]);for(var i of x)i(r)}let g=null;function P(r){var a=this,i=a.ownerDocument,n=r.type,e=r.composedPath?.()||[],t=e[0]||r.target;g=r;var l=0,_=g===r&&r.__root;if(_){var u=e.indexOf(_);if(u!==-1&&(a===document||a===window)){r.__root=a;return}var d=e.indexOf(a);if(d===-1)return;u<=d&&(l=u)}if(t=e[l]||r.target,t!==a){L(r,"currentTarget",{configurable:!0,get(){return t||i}});var w=S,b=k;p(null),v(null);try{for(var c,h=[];t!==null;){var f=t.assignedSlot||t.parentNode||t.host||null;try{var o=t["__"+n];if(o!=null&&(!t.disabled||r.target===t))if(M(o)){var[y,...E]=o;y.apply(t,[r,...E])}else o.call(t,r)}catch(s){c?h.push(s):c=s}if(r.cancelBubble||f===a||f===null)break;t=f}if(c){for(let s of h)queueMicrotask(()=>{throw s});throw c}}finally{r.__root=a,delete r.currentTarget,p(w),v(b)}}}export{q as a,D as d,C as e,P as h,x as r};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const s=globalThis.__sveltekit_7784xp?.base??"",a=globalThis.__sveltekit_7784xp?.assets??s;export{a,s as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{P as y,_ as le,ar as oe,a8 as j,D as ce,a6 as V,q as x,L as de,E as ve,g as L,aj as _e,a3 as he,a4 as me,a5 as W,a7 as Y,K as P,as as pe,at as Ee,I as K,ab as we,a9 as Ae,au as Z,av as Re,aw as $,ax as ee,ay as q,ac as re,ad as Te,az as B,aA as Ce,aB as z,J as ae,aC as Ie,aD as Ne,aE as Se,aF as ge,R as xe,C as Le,aG as ne,aH as Me,s as De,b as Pe,d as Ue}from"./XfyNEFST.js";import{r as be}from"./Bj1_KIDD.js";import{p as k}from"./Dm-QooKW.js";const He=[];function Oe(e,a=!1){return O(e,new Map,"",He)}function O(e,a,r,f,l=null){if(typeof e=="object"&&e!==null){var o=a.get(e);if(o!==void 0)return o;if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);if(y(e)){var t=Array(e.length);a.set(e,t),l!==null&&a.set(l,t);for(var c=0;c<e.length;c+=1){var w=e[c];c in e&&(t[c]=O(w,a,r,f))}return t}if(le(e)===oe){t={},a.set(e,t),l!==null&&a.set(l,t);for(var h in e)t[h]=O(e[h],a,r,f);return t}if(e instanceof Date)return structuredClone(e);if(typeof e.toJSON=="function")return O(e.toJSON(),a,r,f,e)}if(e instanceof EventTarget)return e;try{return structuredClone(e)}catch{return e}}function Ye(e,a){return a}function qe(e,a,r){for(var f=e.items,l=[],o=a.length,t=0;t<o;t++)Ne(a[t].e,l,!0);var c=o>0&&l.length===0&&r!==null;if(c){var w=r.parentNode;Se(w),w.append(r),f.clear(),C(e,a[0].prev,a[o-1].next)}ge(l,()=>{for(var h=0;h<o;h++){var v=a[h];c||(f.delete(v.k),C(e,v.prev,v.next)),ae(v.e,!c)}})}function ze(e,a,r,f,l,o=null){var t=e,c={flags:a,items:new Map,first:null},w=(a&ne)!==0;if(w){var h=e;t=x?V(de(h)):h.appendChild(j())}x&&ve();var v=null,N=!1,A=new Map,S=_e(()=>{var _=r();return y(_)?_:_==null?[]:ee(_)}),s,d;function u(){Be(d,s,c,A,t,l,a,f,r),o!==null&&(s.length===0?v?re(v):v=K(()=>o(t)):v!==null&&Te(v,()=>{v=null}))}ce(()=>{d??=xe,s=L(S);var _=s.length;if(N&&_===0)return;N=_===0;let E=!1;if(x){var R=he(t)===me;R!==(_===0)&&(t=W(),V(t),Y(!1),E=!0)}if(x){for(var I=null,m,n=0;n<_;n++){if(P.nodeType===pe&&P.data===Ee){t=P,E=!0,Y(!1);break}var i=s[n],p=f(i,n);m=X(P,c,I,null,i,p,n,l,a,r),c.items.set(p,m),I=m}_>0&&V(W())}if(x)_===0&&o&&(v=K(()=>o(t)));else if(we()){var M=new Set,b=Ae;for(n=0;n<_;n+=1){i=s[n],p=f(i,n);var g=c.items.get(p)??A.get(p);g?(a&(B|q))!==0&&te(g,i,n,a):(m=X(null,c,null,null,i,p,n,l,a,r,!0),A.set(p,m)),M.add(p)}for(const[T,H]of c.items)M.has(T)||b.skipped_effects.add(H.e);b.add_callback(u)}else u();E&&Y(!0),L(S)}),x&&(t=P)}function Be(e,a,r,f,l,o,t,c,w){var h=(t&Me)!==0,v=(t&(B|q))!==0,N=a.length,A=r.items,S=r.first,s=S,d,u=null,_,E=[],R=[],I,m,n,i;if(h)for(i=0;i<N;i+=1)I=a[i],m=c(I,i),n=A.get(m),n!==void 0&&(n.a?.measure(),(_??=new Set).add(n));for(i=0;i<N;i+=1){if(I=a[i],m=c(I,i),n=A.get(m),n===void 0){var p=f.get(m);if(p!==void 0){f.delete(m),A.set(m,p);var M=u?u.next:s;C(r,u,p),C(r,p,M),G(p,M,l),u=p}else{var b=s?s.e.nodes_start:l;u=X(b,r,u,u===null?r.first:u.next,I,m,i,o,t,w)}A.set(m,u),E=[],R=[],s=u.next;continue}if(v&&te(n,I,i,t),(n.e.f&z)!==0&&(re(n.e),h&&(n.a?.unfix(),(_??=new Set).delete(n))),n!==s){if(d!==void 0&&d.has(n)){if(E.length<R.length){var g=R[0],T;u=g.prev;var H=E[0],J=E[E.length-1];for(T=0;T<E.length;T+=1)G(E[T],g,l);for(T=0;T<R.length;T+=1)d.delete(R[T]);C(r,H.prev,J.next),C(r,u,H),C(r,J,g),s=g,u=J,i-=1,E=[],R=[]}else d.delete(n),G(n,s,l),C(r,n.prev,n.next),C(r,n,u===null?r.first:u.next),C(r,u,n),u=n;continue}for(E=[],R=[];s!==null&&s.k!==m;)(s.e.f&z)===0&&(d??=new Set).add(s),R.push(s),s=s.next;if(s===null)continue;n=s}E.push(n),u=n,s=n.next}if(s!==null||d!==void 0){for(var D=d===void 0?[]:ee(d);s!==null;)(s.e.f&z)===0&&D.push(s),s=s.next;var F=D.length;if(F>0){var ie=(t&ne)!==0&&N===0?l:null;if(h){for(i=0;i<F;i+=1)D[i].a?.measure();for(i=0;i<F;i+=1)D[i].a?.fix()}qe(r,D,ie)}}h&&Le(()=>{if(_!==void 0)for(n of _)n.a?.apply()}),e.first=r.first&&r.first.e,e.last=u&&u.e;for(var ue of f.values())ae(ue.e);f.clear()}function te(e,a,r,f){(f&B)!==0&&Z(e.v,a),(f&q)!==0?Z(e.i,r):e.i=r}function X(e,a,r,f,l,o,t,c,w,h,v){var N=(w&B)!==0,A=(w&Ce)===0,S=N?A?Re(l,!1,!1):$(l):l,s=(w&q)===0?t:$(t),d={i:s,v:S,k:o,a:null,e:null,prev:r,next:f};try{if(e===null){var u=document.createDocumentFragment();u.append(e=j())}return d.e=K(()=>c(e,S,s,h),x),d.e.prev=r&&r.e,d.e.next=f&&f.e,r===null?v||(a.first=d):(r.next=d,r.e.next=d.e),f!==null&&(f.prev=d,f.e.prev=d.e),d}finally{}}function G(e,a,r){for(var f=e.next?e.next.e.nodes_start:r,l=a?a.e.nodes_start:r,o=e.e.nodes_start;o!==null&&o!==f;){var t=Ie(o);l.before(o),o=t}}function C(e,a,r){a===null?e.first=r:(a.next=r,a.e.next=r&&r.e),r!==null&&(r.prev=a,r.e.prev=a&&a.e)}const Ge=globalThis.__sveltekit_7784xp.env;let U=De(Pe({}));function se(e){const a=k.state,r=k.url.searchParams;return a[e]??r.get(e)}function Q(e){const a=se(e);return a?decodeURIComponent(a):null}function Ke(e){const a=se(e);return a===null?null:a.split("~").map(r=>parseInt(r)).filter(r=>!isNaN(r))}function Xe(e,a){const r=Q(e);return r===null?a:r==="1"||r==="true"}function fe(e,a){a||(a=window.location.href);const r=new URL(a,window.location.origin);for(const f in e)e[f]!==null?r.searchParams.set(f,e[f]):r.searchParams.delete(f);return r}function Qe(e){return fe({solution:L(U).solution||Q("solution")||"",scenario:L(U).scenario||Q("scenario")||""},e).href}function We(e){Ue(U,{...L(U),...e},!0),be(fe(e),Oe(L(U)))}export{Xe as a,Ke as b,Ge as c,Qe as d,ze as e,Q as g,Ye as i,Oe as s,We as u};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{o as Fe,d as bt}from"./CxYln1hn.js";import{n as ye,b7 as kt,s as T,g as x,j as P,d as St,t as Ve}from"./Drxlg-Xn.js";import{a as At,b as U}from"./DL8SZLkd.js";const B=[];function Ie(e,t=ye){let n=null;const r=new Set;function a(o){if(kt(e,o)&&(e=o,n)){const c=!B.length;for(const l of r)l[1](),B.push(l,e);if(c){for(let l=0;l<B.length;l+=2)B[l][0](B[l+1]);B.length=0}}}function s(o){a(o(e))}function i(o,c=ye){const l=[o,c];return r.add(l),r.size===1&&(n=t(a,s)||ye),o(e),()=>{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:a,update:s,subscribe:i}}class le{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ue{constructor(t,n){this.status=t,this.location=n}}class Le extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Et(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Rt(e){return e.split("%25").map(decodeURI).join("%25")}function It(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function we({href:e}){return e.split("#")[0]}function Ut(e,t,n,r=!1){const a=new URL(e);Object.defineProperty(a,"searchParams",{value:new Proxy(a.searchParams,{get(i,o){if(o==="get"||o==="getAll"||o==="has")return l=>(n(l),i[o](l));t();const c=Reflect.get(i,o);return typeof c=="function"?c.bind(i):c}}),enumerable:!0,configurable:!0});const s=["href","pathname","search","toString","toJSON"];r&&s.push("hash");for(const i of s)Object.defineProperty(a,i,{get(){return t(),e[i]},enumerable:!0,configurable:!0});return a}function Lt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const Tt=new TextDecoder;function xt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const Pt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&K.delete(Te(e)),Pt(e,t));const K=new Map;function Ct(e,t){const n=Te(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const i=r.getAttribute("data-ttl");return i&&K.set(n,{body:a,init:s,ttl:1e3*Number(i)}),r.getAttribute("data-b64")!==null&&(a=xt(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function Ot(e,t,n){if(K.size>0){const r=Te(e,n),a=K.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);K.delete(r)}}return window.fetch(t,n)}function Te(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${Lt(...a)}"]`}return r}const Nt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function jt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Dt(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const i=r.split(/\[(.+?)\](?!\])/);return"/"+i.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return ve(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return ve(String.fromCharCode(...c.slice(2).split("-").map(w=>parseInt(w,16))));const d=Nt.exec(c),[,h,u,f,p]=d;return t.push({name:f,matcher:p,optional:!!h,rest:!!u,chained:u?l===1&&i[0]==="":!1}),u?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return ve(c)}).join("")}).join("")}/?$`),params:t}}function $t(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Dt(e){return e.slice(1).split("/").filter($t)}function qt(e,t,n){const r={},a=e.slice(1),s=a.filter(o=>o!==void 0);let i=0;for(let o=0;o<t.length;o+=1){const c=t[o];let l=a[o-i];if(c.chained&&c.rest&&i&&(l=a.slice(o-i,o+1).filter(d=>d).join("/"),i=0),l===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){r[c.name]=l;const d=t[o+1],h=a[o+1];d&&!d.rest&&d.optional&&h&&c.chained&&(i=0),!d&&!h&&Object.keys(r).length===s.length&&(i=0);continue}if(c.optional&&c.chained){i++;continue}return}if(!i)return r}function ve(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Bt({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([o,[c,l,d]])=>{const{pattern:h,params:u}=jt(o),f={id:o,exec:p=>{const w=h.exec(p);if(w)return qt(w,u,r)},errors:[1,...d||[]].map(p=>e[p]),layouts:[0,...l||[]].map(i),leaf:s(c)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function s(o){const c=o<0;return c&&(o=~o),[c,e[o]]}function i(o){return o===void 0?o:[a.has(o),e[o]]}}function Qe(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Me(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const Ft="1758544678949",et="sveltekit:snapshot",tt="sveltekit:scroll",xe="sveltekit:states",nt="sveltekit:pageurl",D="sveltekit:history",M="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},fe=location.origin;function Pe(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function ue(){return{x:pageXOffset,y:pageYOffset}}function F(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ge={...j,"":j.hover};function rt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function at(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=rt(e)}}function Se(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||de(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),i=r?.origin===fe&&e.hasAttribute("download");return{url:r,external:s,target:a,download:i}}function te(e){let t=null,n=null,r=null,a=null,s=null,i=null,o=e;for(;o&&o!==document.documentElement;)r===null&&(r=F(o,"preload-code")),a===null&&(a=F(o,"preload-data")),t===null&&(t=F(o,"keepfocus")),n===null&&(n=F(o,"noscroll")),s===null&&(s=F(o,"reload")),i===null&&(i=F(o,"replacestate")),o=rt(o);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ge[r??"off"],preload_data:Ge[a??"off"],keepfocus:c(t),noscroll:c(n),reload:c(s),replace_state:c(i)}}function He(e){const t=Ie(e);let n=!0;function r(){n=!0,t.update(i=>i)}function a(i){n=!1,t.set(i)}function s(i){let o;return t.subscribe(c=>{(o===void 0||n&&c!==o)&&i(o=c)})}return{notify:r,set:a,subscribe:s}}const ot={v:()=>{}};function Vt(){const{set:e,subscribe:t}=Ie(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${At}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const i=(await a.json()).version!==Ft;return i&&(e(!0),ot.v(),clearTimeout(n)),i}catch{return!1}}return{subscribe:t,check:r}}function de(e,t,n){return e.origin!==fe||!e.pathname.startsWith(t)?!0:n?!(e.pathname===t+"/"||e.pathname===t+"/index.html"||e.protocol==="file:"&&e.pathname.replace(/\/[^/]+\.html?$/,"")===t):!1}function Ln(e){}function Ke(e){const t=Gt(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,t.charCodeAt(a));return n}const Mt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Gt(e){e.length%4===0&&(e=e.replace(/==?$/,""));let t="",n=0,r=0;for(let a=0;a<e.length;a++)n<<=6,n|=Mt.indexOf(e[a]),r+=6,r===24&&(t+=String.fromCharCode((n&16711680)>>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const Ht=-1,Kt=-2,Wt=-3,Yt=-4,zt=-5,Jt=-6;function Xt(e,t){if(typeof e=="number")return a(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function a(s,i=!1){if(s===Ht)return;if(s===Wt)return NaN;if(s===Yt)return 1/0;if(s===zt)return-1/0;if(s===Jt)return-0;if(i)throw new Error("Invalid input");if(s in r)return r[s];const o=n[s];if(!o||typeof o!="object")r[s]=o;else if(Array.isArray(o))if(typeof o[0]=="string"){const c=o[0],l=t?.[c];if(l)return r[s]=l(a(o[1]));switch(c){case"Date":r[s]=new Date(o[1]);break;case"Set":const d=new Set;r[s]=d;for(let f=1;f<o.length;f+=1)d.add(a(o[f]));break;case"Map":const h=new Map;r[s]=h;for(let f=1;f<o.length;f+=2)h.set(a(o[f]),a(o[f+1]));break;case"RegExp":r[s]=new RegExp(o[1],o[2]);break;case"Object":r[s]=Object(o[1]);break;case"BigInt":r[s]=BigInt(o[1]);break;case"null":const u=Object.create(null);r[s]=u;for(let f=1;f<o.length;f+=2)u[o[f]]=a(o[f+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const f=globalThis[c],p=o[1],w=Ke(p),_=new f(w);r[s]=_;break}case"ArrayBuffer":{const f=o[1],p=Ke(f);r[s]=p;break}default:throw new Error(`Unknown type ${c}`)}}else{const c=new Array(o.length);r[s]=c;for(let l=0;l<o.length;l+=1){const d=o[l];d!==Kt&&(c[l]=a(d))}}else{const c={};r[s]=c;for(const l in o){const d=o[l];c[l]=a(d)}}return r[s]}return a(0)}const st=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...st];const Zt=new Set([...st]);[...Zt];function Qt(e){return e.filter(t=>t!=null)}const en="x-sveltekit-invalidated",tn="x-sveltekit-trailing-slash";function ne(e){return e instanceof le||e instanceof Le?e.status:500}function nn(e){return e instanceof Le?e.text:"Internal Error"}let S,J,be;const rn=Fe.toString().includes("$$")||/function \w+\(\) \{\}/.test(Fe.toString());rn?(S={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},J={current:null},be={current:!1}):(S=new class{#e=T({});get data(){return x(this.#e)}set data(t){P(this.#e,t)}#t=T(null);get form(){return x(this.#t)}set form(t){P(this.#t,t)}#n=T(null);get error(){return x(this.#n)}set error(t){P(this.#n,t)}#r=T({});get params(){return x(this.#r)}set params(t){P(this.#r,t)}#a=T({id:null});get route(){return x(this.#a)}set route(t){P(this.#a,t)}#o=T({});get state(){return x(this.#o)}set state(t){P(this.#o,t)}#s=T(-1);get status(){return x(this.#s)}set status(t){P(this.#s,t)}#i=T(new URL("https://example.com"));get url(){return x(this.#i)}set url(t){P(this.#i,t)}},J=new class{#e=T(null);get current(){return x(this.#e)}set current(t){P(this.#e,t)}},be=new class{#e=T(!1);get current(){return x(this.#e)}set current(t){P(this.#e,t)}},ot.v=()=>be.current=!0);function an(e){Object.assign(S,e)}const on="/__data.json",sn=".html__data.json";function cn(e){return e.endsWith(".html")?e.replace(/\.html$/,sn):e.replace(/\/$/,"")+on}const{tick:ln}=bt,fn=St??(e=>e()),un=new Set(["icon","shortcut icon","apple-touch-icon"]),q=Qe(tt)??{},X=Qe(et)??{},N={url:He({}),page:He({}),navigating:Ie(null),updated:Vt()};function Ce(e){q[e]=ue()}function dn(e,t){let n=e+1;for(;q[n];)delete q[n],n+=1;for(n=t+1;X[n];)delete X[n],n+=1}function G(e){return location.href=e.href,new Promise(()=>{})}async function it(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}function We(){}let Oe,Ae,re,C,Ee,v;globalThis.__sveltekit_2og3g6.data;const ae=[],oe=[];let O=null;const ee=new Map,ct=new Set,hn=new Set,W=new Set;let y={branch:[],error:null,url:null},Ne=!1,se=!1,Ye=!0,Z=!1,H=!1,lt=!1,je=!1,$e,k,E,$;const Y=new Set,ze=new Map;async function Cn(e,t,n){document.URL!==location.href&&(location.href=location.href),v=e,await e.hooks.init?.(),Oe=Bt(e),C=document.documentElement,Ee=t,Ae=e.nodes[0],re=e.nodes[1],Ae(),re(),k=history.state?.[D],E=history.state?.[M],k||(k=E=Date.now(),history.replaceState({...history.state,[D]:k,[M]:E},""));const r=q[k];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await Sn(Ee,n)):(await z({type:"enter",url:Pe(v.hash?En(new URL(location.href)):location.href),replace_state:!0}),a()),kn()}function pn(){ae.length=0,je=!1}function ft(e){oe.some(t=>t?.snapshot)&&(X[e]=oe.map(t=>t?.snapshot?.capture()))}function ut(e){X[e]?.forEach((t,n)=>{oe[n]?.snapshot?.restore(t)})}function Je(){Ce(k),Me(tt,q),ft(E),Me(et,X)}async function dt(e,t,n,r){let a;const s=await z({type:"goto",url:Pe(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(je=!0,a=[...ze.keys()]),t.invalidate&&t.invalidate.forEach(bn)}});return t.invalidateAll&&Ve().then(Ve).then(()=>{ze.forEach(({resource:i},o)=>{a?.includes(o)&&i.refresh?.()})}),s}async function gn(e){if(e.id!==O?.id){const t={};Y.add(t),O={id:e.id,token:t,promise:gt({...e,preload:t}).then(n=>(Y.delete(t),n.type==="loaded"&&n.state.error&&(O=null),n))}}return O.promise}async function ke(e){const t=(await pe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}function ht(e,t,n){y=e.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(S,e.props.page),$e=new v.root({target:t,props:{...e.props,stores:N,components:oe},hydrate:n,sync:!1}),ut(E),n){const a={from:null,to:{params:y.params,route:{id:y.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};W.forEach(s=>s(a))}se=!0}function ie({url:e,params:t,branch:n,status:r,error:a,route:s,form:i}){let o="never";if(U&&(e.pathname===U||e.pathname===U+"/"))o="always";else for(const f of n)f?.slash!==void 0&&(o=f.slash);e.pathname=Et(e.pathname,o),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:a,route:s},props:{constructors:Qt(n).map(f=>f.node.component),page:ge(S)}};i!==void 0&&(c.props.form=i);let l={},d=!S,h=0;for(let f=0;f<Math.max(n.length,y.branch.length);f+=1){const p=n[f],w=y.branch[f];p?.data!==w?.data&&(d=!0),p&&(l={...l,...p.data},d&&(c.props[`data_${h}`]=l),h+=1)}return(!y.url||e.href!==y.url.href||y.error!==a||i!==void 0&&i!==S.form||d)&&(c.props.page={error:a,params:t,route:{id:s?.id??null},state:{},status:r,url:new URL(e),form:i??null,data:d?l:S.data}),c}async function De({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let i=null,o=!0;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){let d=function(...u){for(const f of u){const{href:p}=new URL(f,n);c.dependencies.add(p)}};const h={route:new Proxy(a,{get:(u,f)=>(o&&(c.route=!0),u[f])}),params:new Proxy(r,{get:(u,f)=>(o&&c.params.add(f),u[f])}),data:s?.data??null,url:Ut(n,()=>{o&&(c.url=!0)},u=>{o&&c.search_params.add(u)},v.hash),async fetch(u,f){u instanceof Request&&(f={body:u.method==="GET"||u.method==="HEAD"?void 0:await u.blob(),cache:u.cache,credentials:u.credentials,headers:[...u.headers].length>0?u?.headers:void 0,integrity:u.integrity,keepalive:u.keepalive,method:u.method,mode:u.mode,redirect:u.redirect,referrer:u.referrer,referrerPolicy:u.referrerPolicy,signal:u.signal,...f});const{resolved:p,promise:w}=pt(u,f,n);return o&&d(p.href),w},setHeaders:()=>{},depends:d,parent(){return o&&(c.parent=!0),t()},untrack(u){o=!1;try{return u()}finally{o=!0}}};i=await l.universal.load.call(null,h)??null}return{node:l,loader:e,server:s,universal:l.universal?.load?{type:"data",data:i,uses:c}:null,data:i??s?.data??null,slash:l.universal?.trailingSlash??s?.slash}}function pt(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=se?Ot(r,a.href,t):Ct(r,t);return{resolved:a,promise:s}}function Xe(e,t,n,r,a,s){if(je)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const i of a.search_params)if(r.has(i))return!0;for(const i of a.params)if(s[i]!==y.params[i])return!0;for(const i of a.dependencies)if(ae.some(o=>o(new URL(i))))return!0;return!1}function qe(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function _n(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(i=>s.includes(i))&&s.every(i=>a.includes(i))&&n.delete(r)}return n}function Ze({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:ge(S),constructors:[]}}}async function gt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(O?.id===e)return Y.delete(O.token),O.promise;const{errors:i,layouts:o,leaf:c}=a,l=[...o,c];i.forEach(g=>g?.().catch(()=>{})),l.forEach(g=>g?.[1]().catch(()=>{}));let d=null;const h=y.url?e!==ce(y.url):!1,u=y.route?a.id!==y.route.id:!1,f=_n(y.url,n);let p=!1;const w=l.map((g,m)=>{const b=y.branch[m],A=!!g?.[0]&&(b?.loader!==g[1]||Xe(p,u,h,f,b.server?.uses,r));return A&&(p=!0),A});if(w.some(Boolean)){try{d=await yt(n,w)}catch(g){const m=await V(g,{url:n,params:r,route:{id:e}});return Y.has(s)?Ze({error:m,url:n,params:r,route:a}):he({status:ne(g),error:m,url:n,route:a})}if(d.type==="redirect")return d}const _=d?.nodes;let R=!1;const L=l.map(async(g,m)=>{if(!g)return;const b=y.branch[m],A=_?.[m];if((!A||A.type==="skip")&&g[1]===b?.loader&&!Xe(R,u,h,f,b.universal?.uses,r))return b;if(R=!0,A?.type==="error")throw A;return De({loader:g[1],url:n,params:r,route:a,parent:async()=>{const _e={};for(let me=0;me<m;me+=1)Object.assign(_e,(await L[me])?.data);return _e},server_data_node:qe(A===void 0&&g[0]?{type:"skip"}:A??null,g[0]?b?.server:void 0)})});for(const g of L)g.catch(()=>{});const I=[];for(let g=0;g<l.length;g+=1)if(l[g])try{I.push(await L[g])}catch(m){if(m instanceof Ue)return{type:"redirect",location:m.location};if(Y.has(s))return Ze({error:await V(m,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let b=ne(m),A;if(_?.includes(m))b=m.status??b,A=m.error;else if(m instanceof le)A=m.body;else{if(await N.updated.check())return await it(),await G(n);A=await V(m,{params:r,url:n,route:{id:a.id}})}const Q=await mn(g,I,i);return Q?ie({url:n,params:r,branch:I.slice(0,Q.idx).concat(Q.node),status:b,error:A,route:a}):await mt(n,{id:a.id},A,b)}else I.push(void 0);return ie({url:n,params:r,branch:I,status:200,error:null,route:a,form:t?void 0:null})}async function mn(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function he({status:e,error:t,url:n,route:r}){const a={};let s=null;if(v.server_loads[0]===0)try{const o=await yt(n,[!0]);if(o.type!=="data"||o.nodes[0]&&o.nodes[0].type!=="data")throw 0;s=o.nodes[0]??null}catch{(n.origin!==fe||n.pathname!==location.pathname||Ne)&&await G(n)}try{const o=await De({loader:Ae,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:qe(s)}),c={node:await re(),loader:re,universal:null,server:null,data:null};return ie({url:n,params:a,branch:[o,c],status:e,error:t,route:null})}catch(o){if(o instanceof Ue)return dt(new URL(o.location,location.href),{},0);throw o}}async function yn(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await v.hooks.reroute({url:new URL(e),fetch:async(s,i)=>pt(s,i,e).promise})??e;if(typeof a=="string"){const s=new URL(e);v.hash?s.hash=a:s.pathname=a,a=s}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function pe(e,t){if(e&&!de(e,U,v.hash)){const n=await yn(e);if(!n)return;const r=wn(n);for(const a of Oe){const s=a.exec(r);if(s)return{id:ce(e),invalidating:t,route:a,params:It(s),url:e}}}}function wn(e){return Rt(v.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function ce(e){return(v.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function _t({url:e,type:t,intent:n,delta:r}){let a=!1;const s=Be(y,n,e,t);r!==void 0&&(s.navigation.delta=r);const i={...s.navigation,cancel:()=>{a=!0,s.reject(new Error("navigation cancelled"))}};return Z||ct.forEach(o=>o(i)),a?null:s}async function z({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:i={},redirect_count:o=0,nav_token:c={},accept:l=We,block:d=We}){const h=$;$=c;const u=await pe(t,!1),f=e==="enter"?Be(y,u,t,e):_t({url:t,type:e,delta:n?.delta,intent:u});if(!f){d(),$===c&&($=h);return}const p=k,w=E;l(),Z=!0,se&&f.navigation.type!=="enter"&&N.navigating.set(J.current=f.navigation);let _=u&&await gt(u);if(!_){if(de(t,U,v.hash))return await G(t);_=await mt(t,{id:null},await V(new Le(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404)}if(t=u?.url||t,$!==c)return f.reject(new Error("navigation aborted")),!1;if(_.type==="redirect")if(o>=20)_=await he({status:500,error:await V(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}});else return await dt(new URL(_.location,t).href,{},o+1,c),!1;else _.props.page.status>=400&&await N.updated.check()&&(await it(),await G(t));if(pn(),Ce(p),ft(w),_.props.page.url.pathname!==t.pathname&&(t.pathname=_.props.page.url.pathname),i=n?n.state:i,!n){const g=s?0:1,m={[D]:k+=g,[M]:E+=g,[xe]:i};(s?history.replaceState:history.pushState).call(history,m,"",t),s||dn(k,E)}if(O=null,_.props.page.state=i,se){const g=(await Promise.all(Array.from(hn,m=>m(f.navigation)))).filter(m=>typeof m=="function");if(g.length>0){let m=function(){g.forEach(b=>{W.delete(b)})};g.push(m),g.forEach(b=>{W.add(b)})}y=_.state,_.props.page&&(_.props.page.url=t),$e.$set(_.props),an(_.props.page),lt=!0}else ht(_,Ee,!1);const{activeElement:R}=document;await ln();const L=n?n.scroll:a?ue():null;if(Ye){const g=t.hash&&document.getElementById(vt(t));L?scrollTo(L.x,L.y):g?g.scrollIntoView():scrollTo(0,0)}const I=document.activeElement!==R&&document.activeElement!==document.body;!r&&!I&&An(t),Ye=!0,_.props.page&&Object.assign(S,_.props.page),Z=!1,e==="popstate"&&ut(E),f.fulfil(void 0),W.forEach(g=>g(f.navigation)),N.navigating.set(J.current=null)}async function mt(e,t,n,r){return e.origin===fe&&e.pathname===location.pathname&&!Ne?await he({status:r,error:n,url:e,route:t}):await G(e)}function vn(){let e,t,n;C.addEventListener("mousemove",o=>{const c=o.target;clearTimeout(e),e=setTimeout(()=>{s(c,j.hover)},20)});function r(o){o.defaultPrevented||s(o.composedPath()[0],j.tap)}C.addEventListener("mousedown",r),C.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(o=>{for(const c of o)c.isIntersecting&&(ke(new URL(c.target.href)),a.unobserve(c.target))},{threshold:0});async function s(o,c){const l=at(o,C),d=l===t&&c>=n;if(!l||d)return;const{url:h,external:u,download:f}=Se(l,U,v.hash);if(u||f)return;const p=te(l),w=h&&ce(y.url)===ce(h);if(!(p.reload||w))if(c<=p.preload_data){t=l,n=j.tap;const _=await pe(h,!1);if(!_)return;gn(_)}else c<=p.preload_code&&(t=l,n=c,ke(h))}function i(){a.disconnect();for(const o of C.querySelectorAll("a")){const{url:c,external:l,download:d}=Se(o,U,v.hash);if(l||d)continue;const h=te(o);h.reload||(h.preload_code===j.viewport&&a.observe(o),h.preload_code===j.eager&&ke(c))}}W.add(i),i()}function V(e,t){if(e instanceof le)return e.body;const n=ne(e),r=nn(e);return v.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function bn(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function On(e,t){const n={[D]:k,[M]:E,[nt]:S.url.href,[xe]:t};history.replaceState(n,"",Pe(e)),S.state=t,$e.$set({page:fn(()=>ge(S))})}function kn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(Je(),!Z){const r=Be(y,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};ct.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Je()}),navigator.connection?.saveData||vn(),C.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=at(t.composedPath()[0],C);if(!n)return;const{url:r,external:a,target:s,download:i}=Se(n,U,v.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const o=te(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||i)return;const[l,d]=(v.hash?r.hash.replace(/^#/,""):r.href).split("#"),h=l===we(location);if(a||o.reload&&(!h||!d)){_t({url:r,type:"link"})?Z=!0:t.preventDefault();return}if(d!==void 0&&h){const[,u]=y.url.href.split("#");if(u===d){if(t.preventDefault(),d===""||d==="top"&&n.ownerDocument.getElementById("top")===null)window.scrollTo({top:0});else{const f=n.ownerDocument.getElementById(decodeURIComponent(d));f&&(f.scrollIntoView(),f.focus())}return}if(H=!0,Ce(k),e(r),!o.replace_state)return;H=!1}t.preventDefault(),await new Promise(u=>{requestAnimationFrame(()=>{setTimeout(u,0)}),setTimeout(u,100)}),await z({type:"link",url:r,keepfocus:o.keepfocus,noscroll:o.noscroll,replace_state:o.replace_state??r.href===location.href})}),C.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const i=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(de(i,U,!1))return;const o=t.target,c=te(o);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(o),d=r?.getAttribute("name");d&&l.append(d,r?.getAttribute("value")??""),i.search=new URLSearchParams(l).toString(),z({type:"form",url:i,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??i.href===location.href})}),addEventListener("popstate",async t=>{if(!Re){if(t.state?.[D]){const n=t.state[D];if($={},n===k)return;const r=q[n],a=t.state[xe]??{},s=new URL(t.state[nt]??location.href),i=t.state[M],o=y.url?we(location)===we(y.url):!1;if(i===E&&(lt||o)){a!==S.state&&(S.state=a),e(s),q[k]=ue(),r&&scrollTo(r.x,r.y),k=n;return}const l=n-k;await z({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{k=n,E=i},block:()=>{history.go(-l)},nav_token:$})}else if(!H){const n=new URL(location.href);e(n),v.hash&&location.reload()}}}),addEventListener("hashchange",()=>{H&&(H=!1,history.replaceState({...history.state,[D]:++k,[M]:E},"",location.href))});for(const t of document.querySelectorAll("link"))un.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&N.navigating.set(J.current=null)});function e(t){y.url=S.url=t,N.page.set(ge(S)),N.page.notify()}}async function Sn(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:i,data:o,form:c}){Ne=!0;const l=new URL(location.href);let d;({params:a={},route:s={id:null}}=await pe(l,!1)||{}),d=Oe.find(({id:f})=>f===s.id);let h,u=!0;try{const f=r.map(async(w,_)=>{const R=o[_];return R?.uses&&(R.uses=wt(R.uses)),De({loader:v.nodes[w],url:l,params:a,route:s,parent:async()=>{const L={};for(let I=0;I<_;I+=1)Object.assign(L,(await f[I]).data);return L},server_data_node:qe(R)})}),p=await Promise.all(f);if(d){const w=d.layouts;for(let _=0;_<w.length;_++)w[_]||p.splice(_,0,void 0)}h=ie({url:l,params:a,branch:p,status:t,error:n,form:c,route:d??null})}catch(f){if(f instanceof Ue){await G(new URL(f.location,location.href));return}h=await he({status:ne(f),error:await V(f,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",u=!1}h.props.page&&(h.props.page.state={}),ht(h,e,u)}async function yt(e,t){const n=new URL(e);n.pathname=cn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(tn,"1"),n.searchParams.append(en,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new le(a.status,s)}return new Promise(async s=>{const i=new Map,o=a.body.getReader();function c(d){return Xt(d,{...v.decoders,Promise:h=>new Promise((u,f)=>{i.set(h,{fulfil:u,reject:f})})})}let l="";for(;;){const{done:d,value:h}=await o.read();if(d&&!l)break;for(l+=!h&&l?`
|
|
1
|
+
import{o as Fe,d as bt}from"./CfPWzxx9.js";import{n as ye,b7 as kt,s as T,g as x,d as P,e as St,t as Ve}from"./XfyNEFST.js";import{a as At,b as U}from"./BMYyQQSJ.js";const B=[];function Ie(e,t=ye){let n=null;const r=new Set;function a(o){if(kt(e,o)&&(e=o,n)){const c=!B.length;for(const l of r)l[1](),B.push(l,e);if(c){for(let l=0;l<B.length;l+=2)B[l][0](B[l+1]);B.length=0}}}function s(o){a(o(e))}function i(o,c=ye){const l=[o,c];return r.add(l),r.size===1&&(n=t(a,s)||ye),o(e),()=>{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:a,update:s,subscribe:i}}class le{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ue{constructor(t,n){this.status=t,this.location=n}}class Le extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Et(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function Rt(e){return e.split("%25").map(decodeURI).join("%25")}function It(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function we({href:e}){return e.split("#")[0]}function Ut(e,t,n,r=!1){const a=new URL(e);Object.defineProperty(a,"searchParams",{value:new Proxy(a.searchParams,{get(i,o){if(o==="get"||o==="getAll"||o==="has")return l=>(n(l),i[o](l));t();const c=Reflect.get(i,o);return typeof c=="function"?c.bind(i):c}}),enumerable:!0,configurable:!0});const s=["href","pathname","search","toString","toJSON"];r&&s.push("hash");for(const i of s)Object.defineProperty(a,i,{get(){return t(),e[i]},enumerable:!0,configurable:!0});return a}function Lt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const Tt=new TextDecoder;function xt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const Pt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&K.delete(Te(e)),Pt(e,t));const K=new Map;function Ct(e,t){const n=Te(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const i=r.getAttribute("data-ttl");return i&&K.set(n,{body:a,init:s,ttl:1e3*Number(i)}),r.getAttribute("data-b64")!==null&&(a=xt(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function Ot(e,t,n){if(K.size>0){const r=Te(e,n),a=K.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);K.delete(r)}}return window.fetch(t,n)}function Te(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${Lt(...a)}"]`}return r}const Nt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function $t(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Dt(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const i=r.split(/\[(.+?)\](?!\])/);return"/"+i.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return ve(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return ve(String.fromCharCode(...c.slice(2).split("-").map(w=>parseInt(w,16))));const d=Nt.exec(c),[,h,u,f,p]=d;return t.push({name:f,matcher:p,optional:!!h,rest:!!u,chained:u?l===1&&i[0]==="":!1}),u?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return ve(c)}).join("")}).join("")}/?$`),params:t}}function jt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Dt(e){return e.slice(1).split("/").filter(jt)}function qt(e,t,n){const r={},a=e.slice(1),s=a.filter(o=>o!==void 0);let i=0;for(let o=0;o<t.length;o+=1){const c=t[o];let l=a[o-i];if(c.chained&&c.rest&&i&&(l=a.slice(o-i,o+1).filter(d=>d).join("/"),i=0),l===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){r[c.name]=l;const d=t[o+1],h=a[o+1];d&&!d.rest&&d.optional&&h&&c.chained&&(i=0),!d&&!h&&Object.keys(r).length===s.length&&(i=0);continue}if(c.optional&&c.chained){i++;continue}return}if(!i)return r}function ve(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Bt({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([o,[c,l,d]])=>{const{pattern:h,params:u}=$t(o),f={id:o,exec:p=>{const w=h.exec(p);if(w)return qt(w,u,r)},errors:[1,...d||[]].map(p=>e[p]),layouts:[0,...l||[]].map(i),leaf:s(c)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function s(o){const c=o<0;return c&&(o=~o),[c,e[o]]}function i(o){return o===void 0?o:[a.has(o),e[o]]}}function Qe(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Me(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const Ft="1760100955365",et="sveltekit:snapshot",tt="sveltekit:scroll",xe="sveltekit:states",nt="sveltekit:pageurl",D="sveltekit:history",M="sveltekit:navigation",$={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},fe=location.origin;function Pe(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function ue(){return{x:pageXOffset,y:pageYOffset}}function F(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ge={...$,"":$.hover};function rt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function at(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=rt(e)}}function Se(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||de(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),i=r?.origin===fe&&e.hasAttribute("download");return{url:r,external:s,target:a,download:i}}function te(e){let t=null,n=null,r=null,a=null,s=null,i=null,o=e;for(;o&&o!==document.documentElement;)r===null&&(r=F(o,"preload-code")),a===null&&(a=F(o,"preload-data")),t===null&&(t=F(o,"keepfocus")),n===null&&(n=F(o,"noscroll")),s===null&&(s=F(o,"reload")),i===null&&(i=F(o,"replacestate")),o=rt(o);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ge[r??"off"],preload_data:Ge[a??"off"],keepfocus:c(t),noscroll:c(n),reload:c(s),replace_state:c(i)}}function He(e){const t=Ie(e);let n=!0;function r(){n=!0,t.update(i=>i)}function a(i){n=!1,t.set(i)}function s(i){let o;return t.subscribe(c=>{(o===void 0||n&&c!==o)&&i(o=c)})}return{notify:r,set:a,subscribe:s}}const ot={v:()=>{}};function Vt(){const{set:e,subscribe:t}=Ie(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${At}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const i=(await a.json()).version!==Ft;return i&&(e(!0),ot.v(),clearTimeout(n)),i}catch{return!1}}return{subscribe:t,check:r}}function de(e,t,n){return e.origin!==fe||!e.pathname.startsWith(t)?!0:n?!(e.pathname===t+"/"||e.pathname===t+"/index.html"||e.protocol==="file:"&&e.pathname.replace(/\/[^/]+\.html?$/,"")===t):!1}function Ln(e){}function Ke(e){const t=Gt(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,t.charCodeAt(a));return n}const Mt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Gt(e){e.length%4===0&&(e=e.replace(/==?$/,""));let t="",n=0,r=0;for(let a=0;a<e.length;a++)n<<=6,n|=Mt.indexOf(e[a]),r+=6,r===24&&(t+=String.fromCharCode((n&16711680)>>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const Ht=-1,Kt=-2,Wt=-3,Yt=-4,zt=-5,Jt=-6;function Xt(e,t){if(typeof e=="number")return a(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function a(s,i=!1){if(s===Ht)return;if(s===Wt)return NaN;if(s===Yt)return 1/0;if(s===zt)return-1/0;if(s===Jt)return-0;if(i)throw new Error("Invalid input");if(s in r)return r[s];const o=n[s];if(!o||typeof o!="object")r[s]=o;else if(Array.isArray(o))if(typeof o[0]=="string"){const c=o[0],l=t?.[c];if(l)return r[s]=l(a(o[1]));switch(c){case"Date":r[s]=new Date(o[1]);break;case"Set":const d=new Set;r[s]=d;for(let f=1;f<o.length;f+=1)d.add(a(o[f]));break;case"Map":const h=new Map;r[s]=h;for(let f=1;f<o.length;f+=2)h.set(a(o[f]),a(o[f+1]));break;case"RegExp":r[s]=new RegExp(o[1],o[2]);break;case"Object":r[s]=Object(o[1]);break;case"BigInt":r[s]=BigInt(o[1]);break;case"null":const u=Object.create(null);r[s]=u;for(let f=1;f<o.length;f+=2)u[o[f]]=a(o[f+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const f=globalThis[c],p=o[1],w=Ke(p),_=new f(w);r[s]=_;break}case"ArrayBuffer":{const f=o[1],p=Ke(f);r[s]=p;break}default:throw new Error(`Unknown type ${c}`)}}else{const c=new Array(o.length);r[s]=c;for(let l=0;l<o.length;l+=1){const d=o[l];d!==Kt&&(c[l]=a(d))}}else{const c={};r[s]=c;for(const l in o){const d=o[l];c[l]=a(d)}}return r[s]}return a(0)}const st=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...st];const Zt=new Set([...st]);[...Zt];function Qt(e){return e.filter(t=>t!=null)}const en="x-sveltekit-invalidated",tn="x-sveltekit-trailing-slash";function ne(e){return e instanceof le||e instanceof Le?e.status:500}function nn(e){return e instanceof Le?e.text:"Internal Error"}let S,J,be;const rn=Fe.toString().includes("$$")||/function \w+\(\) \{\}/.test(Fe.toString());rn?(S={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},J={current:null},be={current:!1}):(S=new class{#e=T({});get data(){return x(this.#e)}set data(t){P(this.#e,t)}#t=T(null);get form(){return x(this.#t)}set form(t){P(this.#t,t)}#n=T(null);get error(){return x(this.#n)}set error(t){P(this.#n,t)}#r=T({});get params(){return x(this.#r)}set params(t){P(this.#r,t)}#a=T({id:null});get route(){return x(this.#a)}set route(t){P(this.#a,t)}#o=T({});get state(){return x(this.#o)}set state(t){P(this.#o,t)}#s=T(-1);get status(){return x(this.#s)}set status(t){P(this.#s,t)}#i=T(new URL("https://example.com"));get url(){return x(this.#i)}set url(t){P(this.#i,t)}},J=new class{#e=T(null);get current(){return x(this.#e)}set current(t){P(this.#e,t)}},be=new class{#e=T(!1);get current(){return x(this.#e)}set current(t){P(this.#e,t)}},ot.v=()=>be.current=!0);function an(e){Object.assign(S,e)}const on="/__data.json",sn=".html__data.json";function cn(e){return e.endsWith(".html")?e.replace(/\.html$/,sn):e.replace(/\/$/,"")+on}const{tick:ln}=bt,fn=St??(e=>e()),un=new Set(["icon","shortcut icon","apple-touch-icon"]),q=Qe(tt)??{},X=Qe(et)??{},N={url:He({}),page:He({}),navigating:Ie(null),updated:Vt()};function Ce(e){q[e]=ue()}function dn(e,t){let n=e+1;for(;q[n];)delete q[n],n+=1;for(n=t+1;X[n];)delete X[n],n+=1}function G(e){return location.href=e.href,new Promise(()=>{})}async function it(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}function We(){}let Oe,Ae,re,C,Ee,v;globalThis.__sveltekit_7784xp.data;const ae=[],oe=[];let O=null;const ee=new Map,ct=new Set,hn=new Set,W=new Set;let y={branch:[],error:null,url:null},Ne=!1,se=!1,Ye=!0,Z=!1,H=!1,lt=!1,$e=!1,je,k,E,j;const Y=new Set,ze=new Map;async function Cn(e,t,n){document.URL!==location.href&&(location.href=location.href),v=e,await e.hooks.init?.(),Oe=Bt(e),C=document.documentElement,Ee=t,Ae=e.nodes[0],re=e.nodes[1],Ae(),re(),k=history.state?.[D],E=history.state?.[M],k||(k=E=Date.now(),history.replaceState({...history.state,[D]:k,[M]:E},""));const r=q[k];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await Sn(Ee,n)):(await z({type:"enter",url:Pe(v.hash?En(new URL(location.href)):location.href),replace_state:!0}),a()),kn()}function pn(){ae.length=0,$e=!1}function ft(e){oe.some(t=>t?.snapshot)&&(X[e]=oe.map(t=>t?.snapshot?.capture()))}function ut(e){X[e]?.forEach((t,n)=>{oe[n]?.snapshot?.restore(t)})}function Je(){Ce(k),Me(tt,q),ft(E),Me(et,X)}async function dt(e,t,n,r){let a;const s=await z({type:"goto",url:Pe(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&($e=!0,a=[...ze.keys()]),t.invalidate&&t.invalidate.forEach(bn)}});return t.invalidateAll&&Ve().then(Ve).then(()=>{ze.forEach(({resource:i},o)=>{a?.includes(o)&&i.refresh?.()})}),s}async function gn(e){if(e.id!==O?.id){const t={};Y.add(t),O={id:e.id,token:t,promise:gt({...e,preload:t}).then(n=>(Y.delete(t),n.type==="loaded"&&n.state.error&&(O=null),n))}}return O.promise}async function ke(e){const t=(await pe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}function ht(e,t,n){y=e.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(S,e.props.page),je=new v.root({target:t,props:{...e.props,stores:N,components:oe},hydrate:n,sync:!1}),ut(E),n){const a={from:null,to:{params:y.params,route:{id:y.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};W.forEach(s=>s(a))}se=!0}function ie({url:e,params:t,branch:n,status:r,error:a,route:s,form:i}){let o="never";if(U&&(e.pathname===U||e.pathname===U+"/"))o="always";else for(const f of n)f?.slash!==void 0&&(o=f.slash);e.pathname=Et(e.pathname,o),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:a,route:s},props:{constructors:Qt(n).map(f=>f.node.component),page:ge(S)}};i!==void 0&&(c.props.form=i);let l={},d=!S,h=0;for(let f=0;f<Math.max(n.length,y.branch.length);f+=1){const p=n[f],w=y.branch[f];p?.data!==w?.data&&(d=!0),p&&(l={...l,...p.data},d&&(c.props[`data_${h}`]=l),h+=1)}return(!y.url||e.href!==y.url.href||y.error!==a||i!==void 0&&i!==S.form||d)&&(c.props.page={error:a,params:t,route:{id:s?.id??null},state:{},status:r,url:new URL(e),form:i??null,data:d?l:S.data}),c}async function De({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let i=null,o=!0;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){let d=function(...u){for(const f of u){const{href:p}=new URL(f,n);c.dependencies.add(p)}};const h={route:new Proxy(a,{get:(u,f)=>(o&&(c.route=!0),u[f])}),params:new Proxy(r,{get:(u,f)=>(o&&c.params.add(f),u[f])}),data:s?.data??null,url:Ut(n,()=>{o&&(c.url=!0)},u=>{o&&c.search_params.add(u)},v.hash),async fetch(u,f){u instanceof Request&&(f={body:u.method==="GET"||u.method==="HEAD"?void 0:await u.blob(),cache:u.cache,credentials:u.credentials,headers:[...u.headers].length>0?u?.headers:void 0,integrity:u.integrity,keepalive:u.keepalive,method:u.method,mode:u.mode,redirect:u.redirect,referrer:u.referrer,referrerPolicy:u.referrerPolicy,signal:u.signal,...f});const{resolved:p,promise:w}=pt(u,f,n);return o&&d(p.href),w},setHeaders:()=>{},depends:d,parent(){return o&&(c.parent=!0),t()},untrack(u){o=!1;try{return u()}finally{o=!0}}};i=await l.universal.load.call(null,h)??null}return{node:l,loader:e,server:s,universal:l.universal?.load?{type:"data",data:i,uses:c}:null,data:i??s?.data??null,slash:l.universal?.trailingSlash??s?.slash}}function pt(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=se?Ot(r,a.href,t):Ct(r,t);return{resolved:a,promise:s}}function Xe(e,t,n,r,a,s){if($e)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const i of a.search_params)if(r.has(i))return!0;for(const i of a.params)if(s[i]!==y.params[i])return!0;for(const i of a.dependencies)if(ae.some(o=>o(new URL(i))))return!0;return!1}function qe(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function _n(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(i=>s.includes(i))&&s.every(i=>a.includes(i))&&n.delete(r)}return n}function Ze({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:ge(S),constructors:[]}}}async function gt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(O?.id===e)return Y.delete(O.token),O.promise;const{errors:i,layouts:o,leaf:c}=a,l=[...o,c];i.forEach(g=>g?.().catch(()=>{})),l.forEach(g=>g?.[1]().catch(()=>{}));let d=null;const h=y.url?e!==ce(y.url):!1,u=y.route?a.id!==y.route.id:!1,f=_n(y.url,n);let p=!1;const w=l.map((g,m)=>{const b=y.branch[m],A=!!g?.[0]&&(b?.loader!==g[1]||Xe(p,u,h,f,b.server?.uses,r));return A&&(p=!0),A});if(w.some(Boolean)){try{d=await yt(n,w)}catch(g){const m=await V(g,{url:n,params:r,route:{id:e}});return Y.has(s)?Ze({error:m,url:n,params:r,route:a}):he({status:ne(g),error:m,url:n,route:a})}if(d.type==="redirect")return d}const _=d?.nodes;let R=!1;const L=l.map(async(g,m)=>{if(!g)return;const b=y.branch[m],A=_?.[m];if((!A||A.type==="skip")&&g[1]===b?.loader&&!Xe(R,u,h,f,b.universal?.uses,r))return b;if(R=!0,A?.type==="error")throw A;return De({loader:g[1],url:n,params:r,route:a,parent:async()=>{const _e={};for(let me=0;me<m;me+=1)Object.assign(_e,(await L[me])?.data);return _e},server_data_node:qe(A===void 0&&g[0]?{type:"skip"}:A??null,g[0]?b?.server:void 0)})});for(const g of L)g.catch(()=>{});const I=[];for(let g=0;g<l.length;g+=1)if(l[g])try{I.push(await L[g])}catch(m){if(m instanceof Ue)return{type:"redirect",location:m.location};if(Y.has(s))return Ze({error:await V(m,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let b=ne(m),A;if(_?.includes(m))b=m.status??b,A=m.error;else if(m instanceof le)A=m.body;else{if(await N.updated.check())return await it(),await G(n);A=await V(m,{params:r,url:n,route:{id:a.id}})}const Q=await mn(g,I,i);return Q?ie({url:n,params:r,branch:I.slice(0,Q.idx).concat(Q.node),status:b,error:A,route:a}):await mt(n,{id:a.id},A,b)}else I.push(void 0);return ie({url:n,params:r,branch:I,status:200,error:null,route:a,form:t?void 0:null})}async function mn(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function he({status:e,error:t,url:n,route:r}){const a={};let s=null;if(v.server_loads[0]===0)try{const o=await yt(n,[!0]);if(o.type!=="data"||o.nodes[0]&&o.nodes[0].type!=="data")throw 0;s=o.nodes[0]??null}catch{(n.origin!==fe||n.pathname!==location.pathname||Ne)&&await G(n)}try{const o=await De({loader:Ae,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:qe(s)}),c={node:await re(),loader:re,universal:null,server:null,data:null};return ie({url:n,params:a,branch:[o,c],status:e,error:t,route:null})}catch(o){if(o instanceof Ue)return dt(new URL(o.location,location.href),{},0);throw o}}async function yn(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await v.hooks.reroute({url:new URL(e),fetch:async(s,i)=>pt(s,i,e).promise})??e;if(typeof a=="string"){const s=new URL(e);v.hash?s.hash=a:s.pathname=a,a=s}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function pe(e,t){if(e&&!de(e,U,v.hash)){const n=await yn(e);if(!n)return;const r=wn(n);for(const a of Oe){const s=a.exec(r);if(s)return{id:ce(e),invalidating:t,route:a,params:It(s),url:e}}}}function wn(e){return Rt(v.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function ce(e){return(v.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function _t({url:e,type:t,intent:n,delta:r}){let a=!1;const s=Be(y,n,e,t);r!==void 0&&(s.navigation.delta=r);const i={...s.navigation,cancel:()=>{a=!0,s.reject(new Error("navigation cancelled"))}};return Z||ct.forEach(o=>o(i)),a?null:s}async function z({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:i={},redirect_count:o=0,nav_token:c={},accept:l=We,block:d=We}){const h=j;j=c;const u=await pe(t,!1),f=e==="enter"?Be(y,u,t,e):_t({url:t,type:e,delta:n?.delta,intent:u});if(!f){d(),j===c&&(j=h);return}const p=k,w=E;l(),Z=!0,se&&f.navigation.type!=="enter"&&N.navigating.set(J.current=f.navigation);let _=u&&await gt(u);if(!_){if(de(t,U,v.hash))return await G(t);_=await mt(t,{id:null},await V(new Le(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404)}if(t=u?.url||t,j!==c)return f.reject(new Error("navigation aborted")),!1;if(_.type==="redirect")if(o>=20)_=await he({status:500,error:await V(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}});else return await dt(new URL(_.location,t).href,{},o+1,c),!1;else _.props.page.status>=400&&await N.updated.check()&&(await it(),await G(t));if(pn(),Ce(p),ft(w),_.props.page.url.pathname!==t.pathname&&(t.pathname=_.props.page.url.pathname),i=n?n.state:i,!n){const g=s?0:1,m={[D]:k+=g,[M]:E+=g,[xe]:i};(s?history.replaceState:history.pushState).call(history,m,"",t),s||dn(k,E)}if(O=null,_.props.page.state=i,se){const g=(await Promise.all(Array.from(hn,m=>m(f.navigation)))).filter(m=>typeof m=="function");if(g.length>0){let m=function(){g.forEach(b=>{W.delete(b)})};g.push(m),g.forEach(b=>{W.add(b)})}y=_.state,_.props.page&&(_.props.page.url=t),je.$set(_.props),an(_.props.page),lt=!0}else ht(_,Ee,!1);const{activeElement:R}=document;await ln();const L=n?n.scroll:a?ue():null;if(Ye){const g=t.hash&&document.getElementById(vt(t));L?scrollTo(L.x,L.y):g?g.scrollIntoView():scrollTo(0,0)}const I=document.activeElement!==R&&document.activeElement!==document.body;!r&&!I&&An(t),Ye=!0,_.props.page&&Object.assign(S,_.props.page),Z=!1,e==="popstate"&&ut(E),f.fulfil(void 0),W.forEach(g=>g(f.navigation)),N.navigating.set(J.current=null)}async function mt(e,t,n,r){return e.origin===fe&&e.pathname===location.pathname&&!Ne?await he({status:r,error:n,url:e,route:t}):await G(e)}function vn(){let e,t,n;C.addEventListener("mousemove",o=>{const c=o.target;clearTimeout(e),e=setTimeout(()=>{s(c,$.hover)},20)});function r(o){o.defaultPrevented||s(o.composedPath()[0],$.tap)}C.addEventListener("mousedown",r),C.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(o=>{for(const c of o)c.isIntersecting&&(ke(new URL(c.target.href)),a.unobserve(c.target))},{threshold:0});async function s(o,c){const l=at(o,C),d=l===t&&c>=n;if(!l||d)return;const{url:h,external:u,download:f}=Se(l,U,v.hash);if(u||f)return;const p=te(l),w=h&&ce(y.url)===ce(h);if(!(p.reload||w))if(c<=p.preload_data){t=l,n=$.tap;const _=await pe(h,!1);if(!_)return;gn(_)}else c<=p.preload_code&&(t=l,n=c,ke(h))}function i(){a.disconnect();for(const o of C.querySelectorAll("a")){const{url:c,external:l,download:d}=Se(o,U,v.hash);if(l||d)continue;const h=te(o);h.reload||(h.preload_code===$.viewport&&a.observe(o),h.preload_code===$.eager&&ke(c))}}W.add(i),i()}function V(e,t){if(e instanceof le)return e.body;const n=ne(e),r=nn(e);return v.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function bn(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function On(e,t){const n={[D]:k,[M]:E,[nt]:S.url.href,[xe]:t};history.replaceState(n,"",Pe(e)),S.state=t,je.$set({page:fn(()=>ge(S))})}function kn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(Je(),!Z){const r=Be(y,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};ct.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Je()}),navigator.connection?.saveData||vn(),C.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=at(t.composedPath()[0],C);if(!n)return;const{url:r,external:a,target:s,download:i}=Se(n,U,v.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const o=te(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||i)return;const[l,d]=(v.hash?r.hash.replace(/^#/,""):r.href).split("#"),h=l===we(location);if(a||o.reload&&(!h||!d)){_t({url:r,type:"link"})?Z=!0:t.preventDefault();return}if(d!==void 0&&h){const[,u]=y.url.href.split("#");if(u===d){if(t.preventDefault(),d===""||d==="top"&&n.ownerDocument.getElementById("top")===null)window.scrollTo({top:0});else{const f=n.ownerDocument.getElementById(decodeURIComponent(d));f&&(f.scrollIntoView(),f.focus())}return}if(H=!0,Ce(k),e(r),!o.replace_state)return;H=!1}t.preventDefault(),await new Promise(u=>{requestAnimationFrame(()=>{setTimeout(u,0)}),setTimeout(u,100)}),await z({type:"link",url:r,keepfocus:o.keepfocus,noscroll:o.noscroll,replace_state:o.replace_state??r.href===location.href})}),C.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const i=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(de(i,U,!1))return;const o=t.target,c=te(o);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(o),d=r?.getAttribute("name");d&&l.append(d,r?.getAttribute("value")??""),i.search=new URLSearchParams(l).toString(),z({type:"form",url:i,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??i.href===location.href})}),addEventListener("popstate",async t=>{if(!Re){if(t.state?.[D]){const n=t.state[D];if(j={},n===k)return;const r=q[n],a=t.state[xe]??{},s=new URL(t.state[nt]??location.href),i=t.state[M],o=y.url?we(location)===we(y.url):!1;if(i===E&&(lt||o)){a!==S.state&&(S.state=a),e(s),q[k]=ue(),r&&scrollTo(r.x,r.y),k=n;return}const l=n-k;await z({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{k=n,E=i},block:()=>{history.go(-l)},nav_token:j})}else if(!H){const n=new URL(location.href);e(n),v.hash&&location.reload()}}}),addEventListener("hashchange",()=>{H&&(H=!1,history.replaceState({...history.state,[D]:++k,[M]:E},"",location.href))});for(const t of document.querySelectorAll("link"))un.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&N.navigating.set(J.current=null)});function e(t){y.url=S.url=t,N.page.set(ge(S)),N.page.notify()}}async function Sn(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:i,data:o,form:c}){Ne=!0;const l=new URL(location.href);let d;({params:a={},route:s={id:null}}=await pe(l,!1)||{}),d=Oe.find(({id:f})=>f===s.id);let h,u=!0;try{const f=r.map(async(w,_)=>{const R=o[_];return R?.uses&&(R.uses=wt(R.uses)),De({loader:v.nodes[w],url:l,params:a,route:s,parent:async()=>{const L={};for(let I=0;I<_;I+=1)Object.assign(L,(await f[I]).data);return L},server_data_node:qe(R)})}),p=await Promise.all(f);if(d){const w=d.layouts;for(let _=0;_<w.length;_++)w[_]||p.splice(_,0,void 0)}h=ie({url:l,params:a,branch:p,status:t,error:n,form:c,route:d??null})}catch(f){if(f instanceof Ue){await G(new URL(f.location,location.href));return}h=await he({status:ne(f),error:await V(f,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",u=!1}h.props.page&&(h.props.page.state={}),ht(h,e,u)}async function yt(e,t){const n=new URL(e);n.pathname=cn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(tn,"1"),n.searchParams.append(en,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new le(a.status,s)}return new Promise(async s=>{const i=new Map,o=a.body.getReader();function c(d){return Xt(d,{...v.decoders,Promise:h=>new Promise((u,f)=>{i.set(h,{fulfil:u,reject:f})})})}let l="";for(;;){const{done:d,value:h}=await o.read();if(d&&!l)break;for(l+=!h&&l?`
|
|
2
2
|
`:Tt.decode(h,{stream:!0});;){const u=l.indexOf(`
|
|
3
3
|
`);if(u===-1)break;const f=JSON.parse(l.slice(0,u));if(l=l.slice(u+1),f.type==="redirect")return s(f);if(f.type==="data")f.nodes?.forEach(p=>{p?.type==="data"&&(p.uses=wt(p.uses),p.data=c(p.data))}),s(f);else if(f.type==="chunk"){const{id:p,data:w,error:_}=f,R=i.get(p);i.delete(p),_?R.reject(c(_)):R.fulfil(c(w))}}}})}function wt(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??[])}}let Re=!1;function An(e){const t=document.querySelector("[autofocus]");if(t)t.focus();else{const n=vt(e);if(n&&document.getElementById(n)){const{x:a,y:s}=ue();setTimeout(()=>{const i=history.state;Re=!0,location.replace(`#${n}`),v.hash&&location.replace(e.hash),history.replaceState(i,"",e.hash),scrollTo(a,s),Re=!1})}else{const a=document.body,s=a.getAttribute("tabindex");a.tabIndex=-1,a.focus({preventScroll:!0,focusVisible:!1}),s!==null?a.setAttribute("tabindex",s):a.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const a=[];for(let s=0;s<r.rangeCount;s+=1)a.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===a.length){for(let s=0;s<r.rangeCount;s+=1){const i=a[s],o=r.getRangeAt(s);if(i.commonAncestorContainer!==o.commonAncestorContainer||i.startContainer!==o.startContainer||i.endContainer!==o.endContainer||i.startOffset!==o.startOffset||i.endOffset!==o.endOffset)return}r.removeAllRanges()}})}}}function Be(e,t,n,r){let a,s;const i=new Promise((c,l)=>{a=c,s=l});return i.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n},willUnload:!t,type:r,complete:i},fulfil:a,reject:s}}function ge(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 En(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function vt(e){let t;if(v.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Cn as a,Ln as l,S as p,On as r,N as s};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a8 as I,D as U,aI as W,q as v,as as T,aJ as L,aC as C,a7 as p,a6 as m,K as _,L as P,aK as S,aL as w,E as Y,at as K,aM as Q,aN as q,aE as z,ax as G,aO as J,I as X,p as B,T as o,G as Z,R as ee,j as te,aP as y,u as ae,Q as O,aQ as ne,P as se,aR as V,e as x,aS as re,aT as oe,aU as ie,aV as le,aW as ue,aX as fe,t as ce}from"./XfyNEFST.js";import{l as de}from"./DIeogL5L.js";import{a as _e,r as M,h as g}from"./B8ie1dNX.js";import{c as he}from"./-3L7ibXM.js";const pe=["touchstart","touchmove"];function ve(e){return pe.includes(e)}let r;function ye(){r=void 0}function Ne(e){let t=null,a=v;var i;if(v){for(t=_,r===void 0&&(r=P(document.head));r!==null&&(r.nodeType!==T||r.data!==L);)r=C(r);r===null?p(!1):r=m(C(r))}v||(i=document.head.appendChild(I()));try{U(()=>e(i),W)}finally{a&&(p(!0),r=_,m(t))}}let k=!0;function Oe(e,t){var a=t==null?"":typeof t=="object"?t+"":t;a!==(e.__t??=e.nodeValue)&&(e.__t=a,e.nodeValue=a+"")}function j(e,t){return H(e,t)}function ge(e,t){S(),t.intro=t.intro??!1;const a=t.target,i=v,f=_;try{for(var n=P(a);n&&(n.nodeType!==T||n.data!==L);)n=C(n);if(!n)throw w;p(!0),m(n),Y();const s=H(e,{...t,anchor:n});if(_===null||_.nodeType!==T||_.data!==K)throw Q(),w;return p(!1),s}catch(s){if(s instanceof Error&&s.message.split(`
|
|
2
|
+
`).some(d=>d.startsWith("https://svelte.dev/e/")))throw s;return s!==w&&console.warn("Failed to hydrate: ",s),t.recover===!1&&q(),S(),z(a),p(!1),j(e,t)}finally{p(i),m(f),ye()}}const h=new Map;function H(e,{target:t,anchor:a,props:i={},events:f,context:n,intro:s=!0}){S();var d=new Set,E=c=>{for(var l=0;l<c.length;l++){var u=c[l];if(!d.has(u)){d.add(u);var D=ve(u);t.addEventListener(u,g,{passive:D});var N=h.get(u);N===void 0?(document.addEventListener(u,g,{passive:D}),h.set(u,1)):h.set(u,N+1)}}};E(G(_e)),M.add(E);var b=void 0,F=J(()=>{var c=a??t.appendChild(I());return X(()=>{if(n){B({});var l=o;l.c=n}f&&(i.$$events=f),v&&Z(c,null),k=s,b=e(c,i)||{},k=!0,v&&(ee.nodes_end=_),n&&te()}),()=>{for(var l of d){t.removeEventListener(l,g);var u=h.get(l);--u===0?(document.removeEventListener(l,g),h.delete(l)):h.set(l,u)}M.delete(E),c!==a&&c.parentNode?.removeChild(c)}});return R.set(b,F),b}let R=new WeakMap;function me(e,t){const a=R.get(e);return a?(R.delete(e),a(t)):Promise.resolve()}function Ee(){return O===null&&ne(),(O.ac??=new AbortController).signal}function $(e){o===null&&y(),de&&o.l!==null?A(o).m.push(e):ae(()=>{const t=x(e);if(typeof t=="function")return t})}function be(e){o===null&&y(),$(()=>()=>x(e))}function we(e,t,{bubbles:a=!1,cancelable:i=!1}={}){return new CustomEvent(e,{detail:t,bubbles:a,cancelable:i})}function Te(){const e=o;return e===null&&y(),(t,a,i)=>{const f=e.s.$$events?.[t];if(f){const n=se(f)?f.slice():[f],s=we(t,a,i);for(const d of n)d.call(e.x,s);return!s.defaultPrevented}return!0}}function Ce(e){o===null&&y(),o.l===null&&V(),A(o).b.push(e)}function Se(e){o===null&&y(),o.l===null&&V(),A(o).a.push(e)}function A(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}const Me=Object.freeze(Object.defineProperty({__proto__:null,afterUpdate:Se,beforeUpdate:Ce,createEventDispatcher:Te,createRawSnippet:he,flushSync:re,getAbortSignal:Ee,getAllContexts:oe,getContext:ie,hasContext:le,hydrate:ge,mount:j,onDestroy:be,onMount:$,setContext:ue,settled:fe,tick:ce,unmount:me,untrack:x},Symbol.toStringTag,{value:"Module"}));export{Ne as a,be as b,k as c,Me as d,ge as h,j as m,$ as o,Oe as s,me as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{y as k,q as i,
|
|
1
|
+
import{y as k,q as i,e as m,z as t,A as g,B as y,C as s}from"./XfyNEFST.js";const o=new Set;function C(c,f,e,r,l=r){var h=e.getAttribute("type")==="checkbox",d=c;let n=!1;if(f!==null)for(var u of f)d=d[u]??=[];d.push(e),k(e,"change",()=>{var a=e.__value;h&&(a=v(d,a,e.checked)),l(a)},()=>l(h?[]:null)),t(()=>{var a=r();if(i&&e.defaultChecked!==e.checked){n=!0;return}h?(a=a||[],e.checked=a.includes(e.__value)):e.checked=g(e.__value,a)}),y(()=>{var a=d.indexOf(e);a!==-1&&d.splice(a,1)}),o.has(d)||(o.add(d),s(()=>{d.sort((a,_)=>a.compareDocumentPosition(_)===4?-1:1),o.delete(d)})),s(()=>{if(n){var a;if(h)a=v(d,a,e.checked);else{var _=d.find(b=>b.checked);a=_?.__value}l(a)}})}function w(c,f,e=f){k(c,"change",r=>{var l=r?c.defaultChecked:c.checked;e(l)}),(i&&c.defaultChecked!==c.checked||m(f)==null)&&e(c.checked),t(()=>{var r=f();c.checked=!!r})}function v(c,f,e){for(var r=new Set,l=0;l<c.length;l+=1)c[l].checked&&r.add(c[l].__value);return e||r.delete(f),Array.from(r)}export{w as a,C as b};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Z as g,_ as l,q as _,$ as h,a0 as p,a1 as A,a2 as m}from"./XfyNEFST.js";function v(r){var s,n,f="";if(typeof r=="string"||typeof r=="number")f+=r;else if(typeof r=="object")if(Array.isArray(r)){var e=r.length;for(s=0;s<e;s++)r[s]&&(n=v(r[s]))&&(f&&(f+=" "),f+=n)}else for(n in r)r[n]&&(f&&(f+=" "),f+=n);return f}function N(){for(var r,s,n=0,f="",e=arguments.length;n<e;n++)(r=arguments[n])&&(s=v(r))&&(f&&(f+=" "),f+=s);return f}function I(r){return typeof r=="object"?N(r):r??""}const a=[...`
|
|
2
|
+
\r\f \v\uFEFF`];function x(r,s,n){var f=r==null?"":""+r;if(s&&(f=f?f+" "+s:s),n){for(var e in n)if(n[e])f=f?f+" "+e:e;else if(f.length)for(var i=e.length,o=0;(o=f.indexOf(e,o))>=0;){var t=o+i;(o===0||a.includes(f[o-1]))&&(t===f.length||a.includes(f[t]))?f=(o===0?"":f.substring(0,o))+f.substring(t+1):o=t}}return f===""?null:f}function c(r,s=!1){var n=s?" !important;":";",f="";for(var e in r){var i=r[e];i!=null&&i!==""&&(f+=" "+e+": "+i+n)}return f}function O(r,s){if(s){var n="",f,e;return Array.isArray(s)?(f=s[0],e=s[1]):f=s,f&&(n+=c(f)),e&&(n+=c(e,!0)),n=n.trim(),n===""?null:n}return String(r)}const S=Symbol("is custom element"),M=Symbol("is html");function b(r){if(_){var s=!1,n=()=>{if(!s){if(s=!0,r.hasAttribute("value")){var f=r.value;u(r,"value",null),r.value=f}if(r.hasAttribute("checked")){var e=r.checked;u(r,"checked",null),r.checked=e}}};r.__on_r=n,p(n),A()}}function u(r,s,n,f){var e=E(r);_&&(e[s]=r.getAttribute(s),s==="src"||s==="srcset"||s==="href"&&r.nodeName==="LINK")||e[s]!==(e[s]=n)&&(s==="loading"&&(r[m]=n),n==null?r.removeAttribute(s):typeof n!="string"&&L(r).includes(s)?r[s]=n:r.setAttribute(s,n))}function E(r){return r.__attributes??={[S]:r.nodeName.includes("-"),[M]:r.namespaceURI===g}}var d=new Map;function L(r){var s=d.get(r.nodeName);if(s)return s;d.set(r.nodeName,s=[]);for(var n,f=r,e=Element.prototype;e!==f;){n=h(f);for(var i in n)n[i].set&&s.push(i);f=l(f)}return s}export{O as a,I as c,b as r,u as s,x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{D as N,q as T,E as Y,H as q,a3 as x,a4 as B,a5 as C,a6 as U,a7 as m,a8 as F,I as D,a9 as M,aa as k,ab as p,ac as z,ad as H,K as Z,ae as $,z as j,e as y,C as w,af as L,ag as G,ah as K,ai as J,g as A,Y as Q,aj as V,b as W,d as X,ak as aa,R as ea,al as ra,am as ia,an as ta,ao as na,ap as sa,aq as fa}from"./XfyNEFST.js";import{l as ua}from"./DIeogL5L.js";function ca(a,r,u=!1){T&&Y();var s=a,t=null,e=null,d=k,c=u?q:0,o=!1;const b=(_,n=!0)=>{o=!0,v(n,_)};var f=null;function I(){f!==null&&(f.lastChild.remove(),s.before(f),f=null);var _=d?t:e,n=d?e:t;_&&z(_),n&&H(n,()=>{d?e=null:t=null})}const v=(_,n)=>{if(d===(d=_))return;let E=!1;if(T){const P=x(s)===B;!!d===P&&(s=C(),U(s),m(!1),E=!0)}var g=p(),l=s;if(g&&(f=document.createDocumentFragment(),f.append(l=F())),d?t??=n&&D(()=>n(l)):e??=n&&D(()=>n(l)),g){var S=M,i=d?t:e,h=d?e:t;i&&S.skipped_effects.delete(i),h&&S.skipped_effects.add(h),S.add_callback(I)}else I();E&&m(!0)};N(()=>{o=!1,r(b),o||v(null,null)},c),T&&(s=Z)}function O(a,r){return a===r||a?.[L]===r}function va(a={},r,u,s){return $(()=>{var t,e;return j(()=>{t=e,e=[],y(()=>{a!==u(...e)&&(r(a,...e),t&&O(u(...t),a)&&r(null,...t))})}),()=>{w(()=>{e&&O(u(...e),a)&&r(null,...e)})}}),a}let R=!1;function da(a){var r=R;try{return R=!1,[a(),R]}finally{R=r}}function oa(a,r,u,s){var t=!ua||(u&ta)!==0,e=(u&ia)!==0,d=(u&sa)!==0,c=s,o=!0,b=()=>(o&&(o=!1,c=d?y(s):s),c),f;if(e){var I=L in a||fa in a;f=G(a,r)?.set??(I&&r in a?i=>a[r]=i:void 0)}var v,_=!1;e?[v,_]=da(()=>a[r]):v=a[r],v===void 0&&s!==void 0&&(v=b(),f&&(t&&K(),f(v)));var n;if(t?n=()=>{var i=a[r];return i===void 0?b():(o=!0,i)}:n=()=>{var i=a[r];return i!==void 0&&(c=void 0),i===void 0?c:i},t&&(u&J)===0)return n;if(f){var E=a.$$legacy;return(function(i,h){return arguments.length>0?((!t||!h||E||_)&&f(h?n():i),i):n()})}var g=!1,l=((u&na)!==0?Q:V)(()=>(g=!1,n()));e&&A(l);var S=ea;return(function(i,h){if(arguments.length>0){const P=h?A(l):t&&e?W(i):i;return X(l,P),g=!0,c!==void 0&&(c=P),i}return aa&&g||(S.f&ra)!==0?l.v:A(l)})}export{va as b,ca as i,oa as p};
|