├── .gitignore
├── LICENSE
├── README.md
├── app
├── README.md
├── aggregate.sh
├── index.html
├── package-lock.json
├── package.json
├── postcss.config.cjs
├── rom-app-aggregated.txt
├── src
│ ├── App.tsx
│ ├── components
│ │ └── ResearchTimelineApp.tsx
│ ├── index.css
│ └── main.tsx
├── styles.css
├── tailwind.config.cjs
├── tsconfig.json
└── vite.config.ts
├── docs
├── assets
│ ├── index-116e1e88.js
│ └── index-95a7de50.css
└── index.html
├── notebooks
├── DL_ROM_NOAA2D.ipynb
├── DeepONet_Burgers1D.ipynb
├── FNO_Burgers1D.ipynb
├── POD-DL-ROM_Burgers1D.ipynb
└── PODDLROM_Burgers1D.ipynb
└── requirements.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | *.py,cover
50 | .hypothesis/
51 | .pytest_cache/
52 | cover/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | .pybuilder/
76 | target/
77 |
78 | # Jupyter Notebook
79 | .ipynb_checkpoints
80 |
81 | # IPython
82 | profile_default/
83 | ipython_config.py
84 |
85 | # pyenv
86 | # For a library or package, you might want to ignore these files since the code is
87 | # intended to run in multiple environments; otherwise, check them in:
88 | # .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # poetry
98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99 | # This is especially recommended for binary packages to ensure reproducibility, and is more
100 | # commonly ignored for libraries.
101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102 | #poetry.lock
103 |
104 | # pdm
105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106 | #pdm.lock
107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108 | # in version control.
109 | # https://pdm.fming.dev/#use-with-ide
110 | .pdm.toml
111 |
112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113 | __pypackages__/
114 |
115 | # Celery stuff
116 | celerybeat-schedule
117 | celerybeat.pid
118 |
119 | # SageMath parsed files
120 | *.sage.py
121 |
122 | # Environments
123 | .env
124 | .venv
125 | env/
126 | venv/
127 | ENV/
128 | env.bak/
129 | venv.bak/
130 |
131 | # Spyder project settings
132 | .spyderproject
133 | .spyproject
134 |
135 | # Rope project settings
136 | .ropeproject
137 |
138 | # mkdocs documentation
139 | /site
140 |
141 | # mypy
142 | .mypy_cache/
143 | .dmypy.json
144 | dmypy.json
145 |
146 | # Pyre type checker
147 | .pyre/
148 |
149 | # pytype static type analyzer
150 | .pytype/
151 |
152 | # Cython debug symbols
153 | cython_debug/
154 |
155 | # PyCharm
156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158 | # and can be added to the global gitignore or merged into this file. For a more nuclear
159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160 | #.idea/
161 |
162 |
163 | # node modules from all subfolders
164 | /node_modules/
165 | **/node_modules/
166 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 rfarell
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Reduced Order Modeling Tutorials
2 |
3 | ## Background and Objectives
4 |
5 | This repository is a curated collection of tutorials that delve into various reduced-order modeling techniques. Utilizing Jupyter Notebooks as the instructional medium, these tutorials provide an interactive, hands-on approach to understanding complex computational models like DeepONet, FNO, POD-DL-ROM, and DL-ROM. Each notebook is designed to function as a standalone tutorial and includes provisions for automatic data retrieval, facilitating execution on both local machines and Google Colab environments.
6 |
7 | ---
8 |
9 | ## Installation and Requirements
10 |
11 | To execute the tutorials, certain Python packages must be installed. This can be done by executing the following command:
12 |
13 | ```bash
14 | pip install -r requirements.txt
15 | ```
16 |
17 | ---
18 |
19 | ## Current Model Coverage
20 | > Li, Z., Kovachki, N., Azizzadenesheli, K., Liu, B., Bhattacharya, K., Stuart, A., & Anandkumar, A. (2020). Fourier neural operator for parametric partial differential equations. arXiv preprint arXiv:2010.08895. [Paper](https://arxiv.org/abs/2010.08895)
21 |
22 | > Lu, L., Jin, P., & Karniadakis, G. E. (2019). Deeponet: Learning nonlinear operators for identifying differential equations based on the universal approximation theorem of operators. arXiv preprint arXiv:1910.03193. [Paper](https://arxiv.org/abs/1910.03193)
23 |
24 | > Fresca, S., & Manzoni, A. (2022). POD-DL-ROM: Enhancing deep learning-based reduced order models for nonlinear parametrized PDEs by proper orthogonal decomposition. Computer Methods in Applied Mechanics and Engineering, 388, 114181. [Paper](https://www.sciencedirect.com/science/article/pii/S0045782521005120)
25 |
26 | > Pant, P., Doshi, R., Bahl, P., & Barati Farimani, A. (2021). Deep learning for reduced order modelling and efficient temporal evolution of fluid simulations. Physics of Fluids, 33(10). [Paper](https://arxiv.org/abs/2107.04556)
27 |
28 | ---
29 |
30 | ## Notebook Naming Convention
31 |
32 | In order to facilitate ease of navigation and comprehension, a standard naming schema has been adopted for the Jupyter notebooks:
33 |
34 | ```
35 | [Model]_[Equation/Problem+Dimension]_[TAG].ipynb
36 | ```
37 |
38 | - **Model**: Represents the computational model or algorithm under study (e.g., FNO, DLROM).
39 | - **Equation/Problem+Dimension**: Specifies the mathematical problem or equation being solved along with its spatial dimensions (e.g., Burgers1D, NOAA2D).
40 | - **TAG**: An optional identifier providing supplementary context or categorizing the notebook's difficulty level or specific focus (e.g., Intro, Advanced, DataPrep).
41 |
42 | ---
43 |
44 | ## Interactive Colab Notebooks
45 |
46 | For users interested in a more interactive learning experience, Google Colab versions of these tutorials are available. Click the links below to open the Colab notebooks:
47 | - 📔 [FNO_Burgers1D](https://colab.research.google.com/github/rfarell/Reduced-Order-Modeling-Tutorials/blob/main/notebooks/FNO_Burgers1D.ipynb)
48 | - 📔 [DeepONet_Burgers1D](https://colab.research.google.com/github/rfarell/Reduced-Order-Modeling-Tutorials/blob/main/notebooks/DeepONet_Burgers1D.ipynb)
49 | - 📔 [POD-DL-ROM_Burgers1D](https://colab.research.google.com/github/rfarell/Reduced-Order-Modeling-Tutorials/blob/main/notebooks/POD-DL-ROM_Burgers1D.ipynb)
50 |
51 | ---
52 |
53 | ## Data Sources
54 |
55 | The datasets required for the tutorials are automatically fetched during runtime.
56 |
57 | ---
58 |
59 | ## License
60 |
61 | This repository is under the MIT License. Details can be found in the `LICENSE` file.
--------------------------------------------------------------------------------
/app/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rfarell/Reduced-Order-Modeling-Tutorials/f80d2ce33a82dd59833dace0a2e3fe74f5c28d1a/app/README.md
--------------------------------------------------------------------------------
/app/aggregate.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | OUTPUT_FILE="rom-app-aggregated.txt"
4 |
5 | # Remove existing output file (if any)
6 | rm -f "$OUTPUT_FILE"
7 |
8 | # 1) Show a tree of the project, excluding certain directories/files
9 | # -I pattern uses '|' to separate multiple exclusions
10 | echo "===== Tree of the project =====" >> "$OUTPUT_FILE"
11 | tree -I "node_modules|build|.git|aggregate.sh|rom-app-aggregated.txt|package-lock.json|.next|.vercel" >> "$OUTPUT_FILE"
12 | echo -e "\n" >> "$OUTPUT_FILE"
13 |
14 | # 2) Find all files (not directories) excluding node_modules, build, .git, etc.
15 | echo "===== Concatenated Files =====" >> "$OUTPUT_FILE"
16 | FILES=$(find . -type f \
17 | -not -path "*/node_modules/*" \
18 | -not -path "*/build/*" \
19 | -not -path "*/.next/*" \
20 | -not -path "*/.vercel/*" \
21 | -not -path "*/.git/*" \
22 | -not -name "aggregate.sh" \
23 | -not -name "rom-app-aggregated.txt" \
24 | -not -name "package-lock.json")
25 |
26 | for FILE in $FILES; do
27 | echo "===== $FILE =====" >> "$OUTPUT_FILE"
28 | cat "$FILE" >> "$OUTPUT_FILE"
29 | echo -e "\n" >> "$OUTPUT_FILE"
30 | done
31 |
32 | echo "Done! Created '$OUTPUT_FILE' with all relevant files."
33 |
--------------------------------------------------------------------------------
/app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Research Timeline
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-react-tailwind-app",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "my-react-tailwind-app",
9 | "version": "1.0.0",
10 | "dependencies": {
11 | "react": "^18.2.0",
12 | "react-dom": "^18.2.0"
13 | },
14 | "devDependencies": {
15 | "@heroicons/react": "^2.0.13",
16 | "@types/react": "^18.0.28",
17 | "@types/react-dom": "^18.0.11",
18 | "@vitejs/plugin-react": "^4.3.4",
19 | "autoprefixer": "^10.4.14",
20 | "postcss": "^8.4.21",
21 | "tailwindcss": "^3.2.7",
22 | "typescript": "^4.9.5",
23 | "vite": "^4.0.4"
24 | }
25 | },
26 | "node_modules/@alloc/quick-lru": {
27 | "version": "5.2.0",
28 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
29 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
30 | "dev": true,
31 | "license": "MIT",
32 | "engines": {
33 | "node": ">=10"
34 | },
35 | "funding": {
36 | "url": "https://github.com/sponsors/sindresorhus"
37 | }
38 | },
39 | "node_modules/@ampproject/remapping": {
40 | "version": "2.3.0",
41 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
42 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
43 | "dev": true,
44 | "license": "Apache-2.0",
45 | "dependencies": {
46 | "@jridgewell/gen-mapping": "^0.3.5",
47 | "@jridgewell/trace-mapping": "^0.3.24"
48 | },
49 | "engines": {
50 | "node": ">=6.0.0"
51 | }
52 | },
53 | "node_modules/@babel/code-frame": {
54 | "version": "7.26.2",
55 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
56 | "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
57 | "dev": true,
58 | "license": "MIT",
59 | "dependencies": {
60 | "@babel/helper-validator-identifier": "^7.25.9",
61 | "js-tokens": "^4.0.0",
62 | "picocolors": "^1.0.0"
63 | },
64 | "engines": {
65 | "node": ">=6.9.0"
66 | }
67 | },
68 | "node_modules/@babel/compat-data": {
69 | "version": "7.26.5",
70 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz",
71 | "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==",
72 | "dev": true,
73 | "license": "MIT",
74 | "engines": {
75 | "node": ">=6.9.0"
76 | }
77 | },
78 | "node_modules/@babel/core": {
79 | "version": "7.26.0",
80 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
81 | "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
82 | "dev": true,
83 | "license": "MIT",
84 | "dependencies": {
85 | "@ampproject/remapping": "^2.2.0",
86 | "@babel/code-frame": "^7.26.0",
87 | "@babel/generator": "^7.26.0",
88 | "@babel/helper-compilation-targets": "^7.25.9",
89 | "@babel/helper-module-transforms": "^7.26.0",
90 | "@babel/helpers": "^7.26.0",
91 | "@babel/parser": "^7.26.0",
92 | "@babel/template": "^7.25.9",
93 | "@babel/traverse": "^7.25.9",
94 | "@babel/types": "^7.26.0",
95 | "convert-source-map": "^2.0.0",
96 | "debug": "^4.1.0",
97 | "gensync": "^1.0.0-beta.2",
98 | "json5": "^2.2.3",
99 | "semver": "^6.3.1"
100 | },
101 | "engines": {
102 | "node": ">=6.9.0"
103 | },
104 | "funding": {
105 | "type": "opencollective",
106 | "url": "https://opencollective.com/babel"
107 | }
108 | },
109 | "node_modules/@babel/generator": {
110 | "version": "7.26.5",
111 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
112 | "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
113 | "dev": true,
114 | "license": "MIT",
115 | "dependencies": {
116 | "@babel/parser": "^7.26.5",
117 | "@babel/types": "^7.26.5",
118 | "@jridgewell/gen-mapping": "^0.3.5",
119 | "@jridgewell/trace-mapping": "^0.3.25",
120 | "jsesc": "^3.0.2"
121 | },
122 | "engines": {
123 | "node": ">=6.9.0"
124 | }
125 | },
126 | "node_modules/@babel/helper-compilation-targets": {
127 | "version": "7.26.5",
128 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz",
129 | "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==",
130 | "dev": true,
131 | "license": "MIT",
132 | "dependencies": {
133 | "@babel/compat-data": "^7.26.5",
134 | "@babel/helper-validator-option": "^7.25.9",
135 | "browserslist": "^4.24.0",
136 | "lru-cache": "^5.1.1",
137 | "semver": "^6.3.1"
138 | },
139 | "engines": {
140 | "node": ">=6.9.0"
141 | }
142 | },
143 | "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
144 | "version": "5.1.1",
145 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
146 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
147 | "dev": true,
148 | "license": "ISC",
149 | "dependencies": {
150 | "yallist": "^3.0.2"
151 | }
152 | },
153 | "node_modules/@babel/helper-module-imports": {
154 | "version": "7.25.9",
155 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
156 | "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
157 | "dev": true,
158 | "license": "MIT",
159 | "dependencies": {
160 | "@babel/traverse": "^7.25.9",
161 | "@babel/types": "^7.25.9"
162 | },
163 | "engines": {
164 | "node": ">=6.9.0"
165 | }
166 | },
167 | "node_modules/@babel/helper-module-transforms": {
168 | "version": "7.26.0",
169 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
170 | "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
171 | "dev": true,
172 | "license": "MIT",
173 | "dependencies": {
174 | "@babel/helper-module-imports": "^7.25.9",
175 | "@babel/helper-validator-identifier": "^7.25.9",
176 | "@babel/traverse": "^7.25.9"
177 | },
178 | "engines": {
179 | "node": ">=6.9.0"
180 | },
181 | "peerDependencies": {
182 | "@babel/core": "^7.0.0"
183 | }
184 | },
185 | "node_modules/@babel/helper-plugin-utils": {
186 | "version": "7.26.5",
187 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
188 | "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
189 | "dev": true,
190 | "license": "MIT",
191 | "engines": {
192 | "node": ">=6.9.0"
193 | }
194 | },
195 | "node_modules/@babel/helper-string-parser": {
196 | "version": "7.25.9",
197 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
198 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
199 | "dev": true,
200 | "license": "MIT",
201 | "engines": {
202 | "node": ">=6.9.0"
203 | }
204 | },
205 | "node_modules/@babel/helper-validator-identifier": {
206 | "version": "7.25.9",
207 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
208 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
209 | "dev": true,
210 | "license": "MIT",
211 | "engines": {
212 | "node": ">=6.9.0"
213 | }
214 | },
215 | "node_modules/@babel/helper-validator-option": {
216 | "version": "7.25.9",
217 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
218 | "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
219 | "dev": true,
220 | "license": "MIT",
221 | "engines": {
222 | "node": ">=6.9.0"
223 | }
224 | },
225 | "node_modules/@babel/helpers": {
226 | "version": "7.26.0",
227 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
228 | "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
229 | "dev": true,
230 | "license": "MIT",
231 | "dependencies": {
232 | "@babel/template": "^7.25.9",
233 | "@babel/types": "^7.26.0"
234 | },
235 | "engines": {
236 | "node": ">=6.9.0"
237 | }
238 | },
239 | "node_modules/@babel/parser": {
240 | "version": "7.26.5",
241 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz",
242 | "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==",
243 | "dev": true,
244 | "license": "MIT",
245 | "dependencies": {
246 | "@babel/types": "^7.26.5"
247 | },
248 | "bin": {
249 | "parser": "bin/babel-parser.js"
250 | },
251 | "engines": {
252 | "node": ">=6.0.0"
253 | }
254 | },
255 | "node_modules/@babel/plugin-transform-react-jsx-self": {
256 | "version": "7.25.9",
257 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
258 | "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
259 | "dev": true,
260 | "license": "MIT",
261 | "dependencies": {
262 | "@babel/helper-plugin-utils": "^7.25.9"
263 | },
264 | "engines": {
265 | "node": ">=6.9.0"
266 | },
267 | "peerDependencies": {
268 | "@babel/core": "^7.0.0-0"
269 | }
270 | },
271 | "node_modules/@babel/plugin-transform-react-jsx-source": {
272 | "version": "7.25.9",
273 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
274 | "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
275 | "dev": true,
276 | "license": "MIT",
277 | "dependencies": {
278 | "@babel/helper-plugin-utils": "^7.25.9"
279 | },
280 | "engines": {
281 | "node": ">=6.9.0"
282 | },
283 | "peerDependencies": {
284 | "@babel/core": "^7.0.0-0"
285 | }
286 | },
287 | "node_modules/@babel/template": {
288 | "version": "7.25.9",
289 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
290 | "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
291 | "dev": true,
292 | "license": "MIT",
293 | "dependencies": {
294 | "@babel/code-frame": "^7.25.9",
295 | "@babel/parser": "^7.25.9",
296 | "@babel/types": "^7.25.9"
297 | },
298 | "engines": {
299 | "node": ">=6.9.0"
300 | }
301 | },
302 | "node_modules/@babel/traverse": {
303 | "version": "7.26.5",
304 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz",
305 | "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==",
306 | "dev": true,
307 | "license": "MIT",
308 | "dependencies": {
309 | "@babel/code-frame": "^7.26.2",
310 | "@babel/generator": "^7.26.5",
311 | "@babel/parser": "^7.26.5",
312 | "@babel/template": "^7.25.9",
313 | "@babel/types": "^7.26.5",
314 | "debug": "^4.3.1",
315 | "globals": "^11.1.0"
316 | },
317 | "engines": {
318 | "node": ">=6.9.0"
319 | }
320 | },
321 | "node_modules/@babel/types": {
322 | "version": "7.26.5",
323 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz",
324 | "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==",
325 | "dev": true,
326 | "license": "MIT",
327 | "dependencies": {
328 | "@babel/helper-string-parser": "^7.25.9",
329 | "@babel/helper-validator-identifier": "^7.25.9"
330 | },
331 | "engines": {
332 | "node": ">=6.9.0"
333 | }
334 | },
335 | "node_modules/@esbuild/android-arm": {
336 | "version": "0.18.20",
337 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
338 | "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
339 | "cpu": [
340 | "arm"
341 | ],
342 | "dev": true,
343 | "license": "MIT",
344 | "optional": true,
345 | "os": [
346 | "android"
347 | ],
348 | "engines": {
349 | "node": ">=12"
350 | }
351 | },
352 | "node_modules/@esbuild/android-arm64": {
353 | "version": "0.18.20",
354 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
355 | "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
356 | "cpu": [
357 | "arm64"
358 | ],
359 | "dev": true,
360 | "license": "MIT",
361 | "optional": true,
362 | "os": [
363 | "android"
364 | ],
365 | "engines": {
366 | "node": ">=12"
367 | }
368 | },
369 | "node_modules/@esbuild/android-x64": {
370 | "version": "0.18.20",
371 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
372 | "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
373 | "cpu": [
374 | "x64"
375 | ],
376 | "dev": true,
377 | "license": "MIT",
378 | "optional": true,
379 | "os": [
380 | "android"
381 | ],
382 | "engines": {
383 | "node": ">=12"
384 | }
385 | },
386 | "node_modules/@esbuild/darwin-arm64": {
387 | "version": "0.18.20",
388 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
389 | "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
390 | "cpu": [
391 | "arm64"
392 | ],
393 | "dev": true,
394 | "license": "MIT",
395 | "optional": true,
396 | "os": [
397 | "darwin"
398 | ],
399 | "engines": {
400 | "node": ">=12"
401 | }
402 | },
403 | "node_modules/@esbuild/darwin-x64": {
404 | "version": "0.18.20",
405 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
406 | "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
407 | "cpu": [
408 | "x64"
409 | ],
410 | "dev": true,
411 | "license": "MIT",
412 | "optional": true,
413 | "os": [
414 | "darwin"
415 | ],
416 | "engines": {
417 | "node": ">=12"
418 | }
419 | },
420 | "node_modules/@esbuild/freebsd-arm64": {
421 | "version": "0.18.20",
422 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
423 | "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
424 | "cpu": [
425 | "arm64"
426 | ],
427 | "dev": true,
428 | "license": "MIT",
429 | "optional": true,
430 | "os": [
431 | "freebsd"
432 | ],
433 | "engines": {
434 | "node": ">=12"
435 | }
436 | },
437 | "node_modules/@esbuild/freebsd-x64": {
438 | "version": "0.18.20",
439 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
440 | "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
441 | "cpu": [
442 | "x64"
443 | ],
444 | "dev": true,
445 | "license": "MIT",
446 | "optional": true,
447 | "os": [
448 | "freebsd"
449 | ],
450 | "engines": {
451 | "node": ">=12"
452 | }
453 | },
454 | "node_modules/@esbuild/linux-arm": {
455 | "version": "0.18.20",
456 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
457 | "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
458 | "cpu": [
459 | "arm"
460 | ],
461 | "dev": true,
462 | "license": "MIT",
463 | "optional": true,
464 | "os": [
465 | "linux"
466 | ],
467 | "engines": {
468 | "node": ">=12"
469 | }
470 | },
471 | "node_modules/@esbuild/linux-arm64": {
472 | "version": "0.18.20",
473 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
474 | "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
475 | "cpu": [
476 | "arm64"
477 | ],
478 | "dev": true,
479 | "license": "MIT",
480 | "optional": true,
481 | "os": [
482 | "linux"
483 | ],
484 | "engines": {
485 | "node": ">=12"
486 | }
487 | },
488 | "node_modules/@esbuild/linux-ia32": {
489 | "version": "0.18.20",
490 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
491 | "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
492 | "cpu": [
493 | "ia32"
494 | ],
495 | "dev": true,
496 | "license": "MIT",
497 | "optional": true,
498 | "os": [
499 | "linux"
500 | ],
501 | "engines": {
502 | "node": ">=12"
503 | }
504 | },
505 | "node_modules/@esbuild/linux-loong64": {
506 | "version": "0.18.20",
507 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
508 | "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
509 | "cpu": [
510 | "loong64"
511 | ],
512 | "dev": true,
513 | "license": "MIT",
514 | "optional": true,
515 | "os": [
516 | "linux"
517 | ],
518 | "engines": {
519 | "node": ">=12"
520 | }
521 | },
522 | "node_modules/@esbuild/linux-mips64el": {
523 | "version": "0.18.20",
524 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
525 | "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
526 | "cpu": [
527 | "mips64el"
528 | ],
529 | "dev": true,
530 | "license": "MIT",
531 | "optional": true,
532 | "os": [
533 | "linux"
534 | ],
535 | "engines": {
536 | "node": ">=12"
537 | }
538 | },
539 | "node_modules/@esbuild/linux-ppc64": {
540 | "version": "0.18.20",
541 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
542 | "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
543 | "cpu": [
544 | "ppc64"
545 | ],
546 | "dev": true,
547 | "license": "MIT",
548 | "optional": true,
549 | "os": [
550 | "linux"
551 | ],
552 | "engines": {
553 | "node": ">=12"
554 | }
555 | },
556 | "node_modules/@esbuild/linux-riscv64": {
557 | "version": "0.18.20",
558 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
559 | "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
560 | "cpu": [
561 | "riscv64"
562 | ],
563 | "dev": true,
564 | "license": "MIT",
565 | "optional": true,
566 | "os": [
567 | "linux"
568 | ],
569 | "engines": {
570 | "node": ">=12"
571 | }
572 | },
573 | "node_modules/@esbuild/linux-s390x": {
574 | "version": "0.18.20",
575 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
576 | "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
577 | "cpu": [
578 | "s390x"
579 | ],
580 | "dev": true,
581 | "license": "MIT",
582 | "optional": true,
583 | "os": [
584 | "linux"
585 | ],
586 | "engines": {
587 | "node": ">=12"
588 | }
589 | },
590 | "node_modules/@esbuild/linux-x64": {
591 | "version": "0.18.20",
592 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
593 | "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
594 | "cpu": [
595 | "x64"
596 | ],
597 | "dev": true,
598 | "license": "MIT",
599 | "optional": true,
600 | "os": [
601 | "linux"
602 | ],
603 | "engines": {
604 | "node": ">=12"
605 | }
606 | },
607 | "node_modules/@esbuild/netbsd-x64": {
608 | "version": "0.18.20",
609 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
610 | "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
611 | "cpu": [
612 | "x64"
613 | ],
614 | "dev": true,
615 | "license": "MIT",
616 | "optional": true,
617 | "os": [
618 | "netbsd"
619 | ],
620 | "engines": {
621 | "node": ">=12"
622 | }
623 | },
624 | "node_modules/@esbuild/openbsd-x64": {
625 | "version": "0.18.20",
626 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
627 | "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
628 | "cpu": [
629 | "x64"
630 | ],
631 | "dev": true,
632 | "license": "MIT",
633 | "optional": true,
634 | "os": [
635 | "openbsd"
636 | ],
637 | "engines": {
638 | "node": ">=12"
639 | }
640 | },
641 | "node_modules/@esbuild/sunos-x64": {
642 | "version": "0.18.20",
643 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
644 | "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
645 | "cpu": [
646 | "x64"
647 | ],
648 | "dev": true,
649 | "license": "MIT",
650 | "optional": true,
651 | "os": [
652 | "sunos"
653 | ],
654 | "engines": {
655 | "node": ">=12"
656 | }
657 | },
658 | "node_modules/@esbuild/win32-arm64": {
659 | "version": "0.18.20",
660 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
661 | "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
662 | "cpu": [
663 | "arm64"
664 | ],
665 | "dev": true,
666 | "license": "MIT",
667 | "optional": true,
668 | "os": [
669 | "win32"
670 | ],
671 | "engines": {
672 | "node": ">=12"
673 | }
674 | },
675 | "node_modules/@esbuild/win32-ia32": {
676 | "version": "0.18.20",
677 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
678 | "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
679 | "cpu": [
680 | "ia32"
681 | ],
682 | "dev": true,
683 | "license": "MIT",
684 | "optional": true,
685 | "os": [
686 | "win32"
687 | ],
688 | "engines": {
689 | "node": ">=12"
690 | }
691 | },
692 | "node_modules/@esbuild/win32-x64": {
693 | "version": "0.18.20",
694 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
695 | "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
696 | "cpu": [
697 | "x64"
698 | ],
699 | "dev": true,
700 | "license": "MIT",
701 | "optional": true,
702 | "os": [
703 | "win32"
704 | ],
705 | "engines": {
706 | "node": ">=12"
707 | }
708 | },
709 | "node_modules/@heroicons/react": {
710 | "version": "2.2.0",
711 | "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz",
712 | "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==",
713 | "dev": true,
714 | "license": "MIT",
715 | "peerDependencies": {
716 | "react": ">= 16 || ^19.0.0-rc"
717 | }
718 | },
719 | "node_modules/@isaacs/cliui": {
720 | "version": "8.0.2",
721 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
722 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
723 | "dev": true,
724 | "license": "ISC",
725 | "dependencies": {
726 | "string-width": "^5.1.2",
727 | "string-width-cjs": "npm:string-width@^4.2.0",
728 | "strip-ansi": "^7.0.1",
729 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
730 | "wrap-ansi": "^8.1.0",
731 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
732 | },
733 | "engines": {
734 | "node": ">=12"
735 | }
736 | },
737 | "node_modules/@jridgewell/gen-mapping": {
738 | "version": "0.3.8",
739 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
740 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
741 | "dev": true,
742 | "license": "MIT",
743 | "dependencies": {
744 | "@jridgewell/set-array": "^1.2.1",
745 | "@jridgewell/sourcemap-codec": "^1.4.10",
746 | "@jridgewell/trace-mapping": "^0.3.24"
747 | },
748 | "engines": {
749 | "node": ">=6.0.0"
750 | }
751 | },
752 | "node_modules/@jridgewell/resolve-uri": {
753 | "version": "3.1.2",
754 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
755 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
756 | "dev": true,
757 | "license": "MIT",
758 | "engines": {
759 | "node": ">=6.0.0"
760 | }
761 | },
762 | "node_modules/@jridgewell/set-array": {
763 | "version": "1.2.1",
764 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
765 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
766 | "dev": true,
767 | "license": "MIT",
768 | "engines": {
769 | "node": ">=6.0.0"
770 | }
771 | },
772 | "node_modules/@jridgewell/sourcemap-codec": {
773 | "version": "1.5.0",
774 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
775 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
776 | "dev": true,
777 | "license": "MIT"
778 | },
779 | "node_modules/@jridgewell/trace-mapping": {
780 | "version": "0.3.25",
781 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
782 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
783 | "dev": true,
784 | "license": "MIT",
785 | "dependencies": {
786 | "@jridgewell/resolve-uri": "^3.1.0",
787 | "@jridgewell/sourcemap-codec": "^1.4.14"
788 | }
789 | },
790 | "node_modules/@nodelib/fs.scandir": {
791 | "version": "2.1.5",
792 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
793 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
794 | "dev": true,
795 | "license": "MIT",
796 | "dependencies": {
797 | "@nodelib/fs.stat": "2.0.5",
798 | "run-parallel": "^1.1.9"
799 | },
800 | "engines": {
801 | "node": ">= 8"
802 | }
803 | },
804 | "node_modules/@nodelib/fs.stat": {
805 | "version": "2.0.5",
806 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
807 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
808 | "dev": true,
809 | "license": "MIT",
810 | "engines": {
811 | "node": ">= 8"
812 | }
813 | },
814 | "node_modules/@nodelib/fs.walk": {
815 | "version": "1.2.8",
816 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
817 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
818 | "dev": true,
819 | "license": "MIT",
820 | "dependencies": {
821 | "@nodelib/fs.scandir": "2.1.5",
822 | "fastq": "^1.6.0"
823 | },
824 | "engines": {
825 | "node": ">= 8"
826 | }
827 | },
828 | "node_modules/@pkgjs/parseargs": {
829 | "version": "0.11.0",
830 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
831 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
832 | "dev": true,
833 | "license": "MIT",
834 | "optional": true,
835 | "engines": {
836 | "node": ">=14"
837 | }
838 | },
839 | "node_modules/@types/babel__core": {
840 | "version": "7.20.5",
841 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
842 | "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
843 | "dev": true,
844 | "license": "MIT",
845 | "dependencies": {
846 | "@babel/parser": "^7.20.7",
847 | "@babel/types": "^7.20.7",
848 | "@types/babel__generator": "*",
849 | "@types/babel__template": "*",
850 | "@types/babel__traverse": "*"
851 | }
852 | },
853 | "node_modules/@types/babel__generator": {
854 | "version": "7.6.8",
855 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
856 | "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
857 | "dev": true,
858 | "license": "MIT",
859 | "dependencies": {
860 | "@babel/types": "^7.0.0"
861 | }
862 | },
863 | "node_modules/@types/babel__template": {
864 | "version": "7.4.4",
865 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
866 | "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
867 | "dev": true,
868 | "license": "MIT",
869 | "dependencies": {
870 | "@babel/parser": "^7.1.0",
871 | "@babel/types": "^7.0.0"
872 | }
873 | },
874 | "node_modules/@types/babel__traverse": {
875 | "version": "7.20.6",
876 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
877 | "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
878 | "dev": true,
879 | "license": "MIT",
880 | "dependencies": {
881 | "@babel/types": "^7.20.7"
882 | }
883 | },
884 | "node_modules/@types/prop-types": {
885 | "version": "15.7.14",
886 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
887 | "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
888 | "dev": true,
889 | "license": "MIT"
890 | },
891 | "node_modules/@types/react": {
892 | "version": "18.3.18",
893 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
894 | "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
895 | "dev": true,
896 | "license": "MIT",
897 | "dependencies": {
898 | "@types/prop-types": "*",
899 | "csstype": "^3.0.2"
900 | }
901 | },
902 | "node_modules/@types/react-dom": {
903 | "version": "18.3.5",
904 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz",
905 | "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==",
906 | "dev": true,
907 | "license": "MIT",
908 | "peerDependencies": {
909 | "@types/react": "^18.0.0"
910 | }
911 | },
912 | "node_modules/@vitejs/plugin-react": {
913 | "version": "4.3.4",
914 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz",
915 | "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==",
916 | "dev": true,
917 | "license": "MIT",
918 | "dependencies": {
919 | "@babel/core": "^7.26.0",
920 | "@babel/plugin-transform-react-jsx-self": "^7.25.9",
921 | "@babel/plugin-transform-react-jsx-source": "^7.25.9",
922 | "@types/babel__core": "^7.20.5",
923 | "react-refresh": "^0.14.2"
924 | },
925 | "engines": {
926 | "node": "^14.18.0 || >=16.0.0"
927 | },
928 | "peerDependencies": {
929 | "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
930 | }
931 | },
932 | "node_modules/ansi-regex": {
933 | "version": "6.1.0",
934 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
935 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
936 | "dev": true,
937 | "license": "MIT",
938 | "engines": {
939 | "node": ">=12"
940 | },
941 | "funding": {
942 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
943 | }
944 | },
945 | "node_modules/ansi-styles": {
946 | "version": "6.2.1",
947 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
948 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
949 | "dev": true,
950 | "license": "MIT",
951 | "engines": {
952 | "node": ">=12"
953 | },
954 | "funding": {
955 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
956 | }
957 | },
958 | "node_modules/any-promise": {
959 | "version": "1.3.0",
960 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
961 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
962 | "dev": true,
963 | "license": "MIT"
964 | },
965 | "node_modules/anymatch": {
966 | "version": "3.1.3",
967 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
968 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
969 | "dev": true,
970 | "license": "ISC",
971 | "dependencies": {
972 | "normalize-path": "^3.0.0",
973 | "picomatch": "^2.0.4"
974 | },
975 | "engines": {
976 | "node": ">= 8"
977 | }
978 | },
979 | "node_modules/arg": {
980 | "version": "5.0.2",
981 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
982 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
983 | "dev": true,
984 | "license": "MIT"
985 | },
986 | "node_modules/autoprefixer": {
987 | "version": "10.4.20",
988 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
989 | "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
990 | "dev": true,
991 | "funding": [
992 | {
993 | "type": "opencollective",
994 | "url": "https://opencollective.com/postcss/"
995 | },
996 | {
997 | "type": "tidelift",
998 | "url": "https://tidelift.com/funding/github/npm/autoprefixer"
999 | },
1000 | {
1001 | "type": "github",
1002 | "url": "https://github.com/sponsors/ai"
1003 | }
1004 | ],
1005 | "license": "MIT",
1006 | "dependencies": {
1007 | "browserslist": "^4.23.3",
1008 | "caniuse-lite": "^1.0.30001646",
1009 | "fraction.js": "^4.3.7",
1010 | "normalize-range": "^0.1.2",
1011 | "picocolors": "^1.0.1",
1012 | "postcss-value-parser": "^4.2.0"
1013 | },
1014 | "bin": {
1015 | "autoprefixer": "bin/autoprefixer"
1016 | },
1017 | "engines": {
1018 | "node": "^10 || ^12 || >=14"
1019 | },
1020 | "peerDependencies": {
1021 | "postcss": "^8.1.0"
1022 | }
1023 | },
1024 | "node_modules/balanced-match": {
1025 | "version": "1.0.2",
1026 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1027 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1028 | "dev": true,
1029 | "license": "MIT"
1030 | },
1031 | "node_modules/binary-extensions": {
1032 | "version": "2.3.0",
1033 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
1034 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
1035 | "dev": true,
1036 | "license": "MIT",
1037 | "engines": {
1038 | "node": ">=8"
1039 | },
1040 | "funding": {
1041 | "url": "https://github.com/sponsors/sindresorhus"
1042 | }
1043 | },
1044 | "node_modules/brace-expansion": {
1045 | "version": "2.0.1",
1046 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1047 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1048 | "dev": true,
1049 | "license": "MIT",
1050 | "dependencies": {
1051 | "balanced-match": "^1.0.0"
1052 | }
1053 | },
1054 | "node_modules/braces": {
1055 | "version": "3.0.3",
1056 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1057 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1058 | "dev": true,
1059 | "license": "MIT",
1060 | "dependencies": {
1061 | "fill-range": "^7.1.1"
1062 | },
1063 | "engines": {
1064 | "node": ">=8"
1065 | }
1066 | },
1067 | "node_modules/browserslist": {
1068 | "version": "4.24.4",
1069 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
1070 | "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
1071 | "dev": true,
1072 | "funding": [
1073 | {
1074 | "type": "opencollective",
1075 | "url": "https://opencollective.com/browserslist"
1076 | },
1077 | {
1078 | "type": "tidelift",
1079 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1080 | },
1081 | {
1082 | "type": "github",
1083 | "url": "https://github.com/sponsors/ai"
1084 | }
1085 | ],
1086 | "license": "MIT",
1087 | "dependencies": {
1088 | "caniuse-lite": "^1.0.30001688",
1089 | "electron-to-chromium": "^1.5.73",
1090 | "node-releases": "^2.0.19",
1091 | "update-browserslist-db": "^1.1.1"
1092 | },
1093 | "bin": {
1094 | "browserslist": "cli.js"
1095 | },
1096 | "engines": {
1097 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1098 | }
1099 | },
1100 | "node_modules/camelcase-css": {
1101 | "version": "2.0.1",
1102 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1103 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1104 | "dev": true,
1105 | "license": "MIT",
1106 | "engines": {
1107 | "node": ">= 6"
1108 | }
1109 | },
1110 | "node_modules/caniuse-lite": {
1111 | "version": "1.0.30001695",
1112 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz",
1113 | "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==",
1114 | "dev": true,
1115 | "funding": [
1116 | {
1117 | "type": "opencollective",
1118 | "url": "https://opencollective.com/browserslist"
1119 | },
1120 | {
1121 | "type": "tidelift",
1122 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1123 | },
1124 | {
1125 | "type": "github",
1126 | "url": "https://github.com/sponsors/ai"
1127 | }
1128 | ],
1129 | "license": "CC-BY-4.0"
1130 | },
1131 | "node_modules/chokidar": {
1132 | "version": "3.6.0",
1133 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1134 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
1135 | "dev": true,
1136 | "license": "MIT",
1137 | "dependencies": {
1138 | "anymatch": "~3.1.2",
1139 | "braces": "~3.0.2",
1140 | "glob-parent": "~5.1.2",
1141 | "is-binary-path": "~2.1.0",
1142 | "is-glob": "~4.0.1",
1143 | "normalize-path": "~3.0.0",
1144 | "readdirp": "~3.6.0"
1145 | },
1146 | "engines": {
1147 | "node": ">= 8.10.0"
1148 | },
1149 | "funding": {
1150 | "url": "https://paulmillr.com/funding/"
1151 | },
1152 | "optionalDependencies": {
1153 | "fsevents": "~2.3.2"
1154 | }
1155 | },
1156 | "node_modules/chokidar/node_modules/glob-parent": {
1157 | "version": "5.1.2",
1158 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1159 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1160 | "dev": true,
1161 | "license": "ISC",
1162 | "dependencies": {
1163 | "is-glob": "^4.0.1"
1164 | },
1165 | "engines": {
1166 | "node": ">= 6"
1167 | }
1168 | },
1169 | "node_modules/color-convert": {
1170 | "version": "2.0.1",
1171 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1172 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1173 | "dev": true,
1174 | "license": "MIT",
1175 | "dependencies": {
1176 | "color-name": "~1.1.4"
1177 | },
1178 | "engines": {
1179 | "node": ">=7.0.0"
1180 | }
1181 | },
1182 | "node_modules/color-name": {
1183 | "version": "1.1.4",
1184 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1185 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1186 | "dev": true,
1187 | "license": "MIT"
1188 | },
1189 | "node_modules/commander": {
1190 | "version": "4.1.1",
1191 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1192 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1193 | "dev": true,
1194 | "license": "MIT",
1195 | "engines": {
1196 | "node": ">= 6"
1197 | }
1198 | },
1199 | "node_modules/convert-source-map": {
1200 | "version": "2.0.0",
1201 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
1202 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1203 | "dev": true,
1204 | "license": "MIT"
1205 | },
1206 | "node_modules/cross-spawn": {
1207 | "version": "7.0.6",
1208 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1209 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1210 | "dev": true,
1211 | "license": "MIT",
1212 | "dependencies": {
1213 | "path-key": "^3.1.0",
1214 | "shebang-command": "^2.0.0",
1215 | "which": "^2.0.1"
1216 | },
1217 | "engines": {
1218 | "node": ">= 8"
1219 | }
1220 | },
1221 | "node_modules/cssesc": {
1222 | "version": "3.0.0",
1223 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1224 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1225 | "dev": true,
1226 | "license": "MIT",
1227 | "bin": {
1228 | "cssesc": "bin/cssesc"
1229 | },
1230 | "engines": {
1231 | "node": ">=4"
1232 | }
1233 | },
1234 | "node_modules/csstype": {
1235 | "version": "3.1.3",
1236 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
1237 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
1238 | "dev": true,
1239 | "license": "MIT"
1240 | },
1241 | "node_modules/debug": {
1242 | "version": "4.4.0",
1243 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1244 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1245 | "dev": true,
1246 | "license": "MIT",
1247 | "dependencies": {
1248 | "ms": "^2.1.3"
1249 | },
1250 | "engines": {
1251 | "node": ">=6.0"
1252 | },
1253 | "peerDependenciesMeta": {
1254 | "supports-color": {
1255 | "optional": true
1256 | }
1257 | }
1258 | },
1259 | "node_modules/didyoumean": {
1260 | "version": "1.2.2",
1261 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1262 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1263 | "dev": true,
1264 | "license": "Apache-2.0"
1265 | },
1266 | "node_modules/dlv": {
1267 | "version": "1.1.3",
1268 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1269 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1270 | "dev": true,
1271 | "license": "MIT"
1272 | },
1273 | "node_modules/eastasianwidth": {
1274 | "version": "0.2.0",
1275 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1276 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1277 | "dev": true,
1278 | "license": "MIT"
1279 | },
1280 | "node_modules/electron-to-chromium": {
1281 | "version": "1.5.83",
1282 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.83.tgz",
1283 | "integrity": "sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==",
1284 | "dev": true,
1285 | "license": "ISC"
1286 | },
1287 | "node_modules/emoji-regex": {
1288 | "version": "9.2.2",
1289 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1290 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1291 | "dev": true,
1292 | "license": "MIT"
1293 | },
1294 | "node_modules/esbuild": {
1295 | "version": "0.18.20",
1296 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
1297 | "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
1298 | "dev": true,
1299 | "hasInstallScript": true,
1300 | "license": "MIT",
1301 | "bin": {
1302 | "esbuild": "bin/esbuild"
1303 | },
1304 | "engines": {
1305 | "node": ">=12"
1306 | },
1307 | "optionalDependencies": {
1308 | "@esbuild/android-arm": "0.18.20",
1309 | "@esbuild/android-arm64": "0.18.20",
1310 | "@esbuild/android-x64": "0.18.20",
1311 | "@esbuild/darwin-arm64": "0.18.20",
1312 | "@esbuild/darwin-x64": "0.18.20",
1313 | "@esbuild/freebsd-arm64": "0.18.20",
1314 | "@esbuild/freebsd-x64": "0.18.20",
1315 | "@esbuild/linux-arm": "0.18.20",
1316 | "@esbuild/linux-arm64": "0.18.20",
1317 | "@esbuild/linux-ia32": "0.18.20",
1318 | "@esbuild/linux-loong64": "0.18.20",
1319 | "@esbuild/linux-mips64el": "0.18.20",
1320 | "@esbuild/linux-ppc64": "0.18.20",
1321 | "@esbuild/linux-riscv64": "0.18.20",
1322 | "@esbuild/linux-s390x": "0.18.20",
1323 | "@esbuild/linux-x64": "0.18.20",
1324 | "@esbuild/netbsd-x64": "0.18.20",
1325 | "@esbuild/openbsd-x64": "0.18.20",
1326 | "@esbuild/sunos-x64": "0.18.20",
1327 | "@esbuild/win32-arm64": "0.18.20",
1328 | "@esbuild/win32-ia32": "0.18.20",
1329 | "@esbuild/win32-x64": "0.18.20"
1330 | }
1331 | },
1332 | "node_modules/escalade": {
1333 | "version": "3.2.0",
1334 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1335 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1336 | "dev": true,
1337 | "license": "MIT",
1338 | "engines": {
1339 | "node": ">=6"
1340 | }
1341 | },
1342 | "node_modules/fast-glob": {
1343 | "version": "3.3.3",
1344 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
1345 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
1346 | "dev": true,
1347 | "license": "MIT",
1348 | "dependencies": {
1349 | "@nodelib/fs.stat": "^2.0.2",
1350 | "@nodelib/fs.walk": "^1.2.3",
1351 | "glob-parent": "^5.1.2",
1352 | "merge2": "^1.3.0",
1353 | "micromatch": "^4.0.8"
1354 | },
1355 | "engines": {
1356 | "node": ">=8.6.0"
1357 | }
1358 | },
1359 | "node_modules/fast-glob/node_modules/glob-parent": {
1360 | "version": "5.1.2",
1361 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1362 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1363 | "dev": true,
1364 | "license": "ISC",
1365 | "dependencies": {
1366 | "is-glob": "^4.0.1"
1367 | },
1368 | "engines": {
1369 | "node": ">= 6"
1370 | }
1371 | },
1372 | "node_modules/fastq": {
1373 | "version": "1.18.0",
1374 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
1375 | "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
1376 | "dev": true,
1377 | "license": "ISC",
1378 | "dependencies": {
1379 | "reusify": "^1.0.4"
1380 | }
1381 | },
1382 | "node_modules/fill-range": {
1383 | "version": "7.1.1",
1384 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1385 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1386 | "dev": true,
1387 | "license": "MIT",
1388 | "dependencies": {
1389 | "to-regex-range": "^5.0.1"
1390 | },
1391 | "engines": {
1392 | "node": ">=8"
1393 | }
1394 | },
1395 | "node_modules/foreground-child": {
1396 | "version": "3.3.0",
1397 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
1398 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
1399 | "dev": true,
1400 | "license": "ISC",
1401 | "dependencies": {
1402 | "cross-spawn": "^7.0.0",
1403 | "signal-exit": "^4.0.1"
1404 | },
1405 | "engines": {
1406 | "node": ">=14"
1407 | },
1408 | "funding": {
1409 | "url": "https://github.com/sponsors/isaacs"
1410 | }
1411 | },
1412 | "node_modules/fraction.js": {
1413 | "version": "4.3.7",
1414 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
1415 | "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
1416 | "dev": true,
1417 | "license": "MIT",
1418 | "engines": {
1419 | "node": "*"
1420 | },
1421 | "funding": {
1422 | "type": "patreon",
1423 | "url": "https://github.com/sponsors/rawify"
1424 | }
1425 | },
1426 | "node_modules/fsevents": {
1427 | "version": "2.3.3",
1428 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1429 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1430 | "dev": true,
1431 | "hasInstallScript": true,
1432 | "license": "MIT",
1433 | "optional": true,
1434 | "os": [
1435 | "darwin"
1436 | ],
1437 | "engines": {
1438 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1439 | }
1440 | },
1441 | "node_modules/function-bind": {
1442 | "version": "1.1.2",
1443 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1444 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1445 | "dev": true,
1446 | "license": "MIT",
1447 | "funding": {
1448 | "url": "https://github.com/sponsors/ljharb"
1449 | }
1450 | },
1451 | "node_modules/gensync": {
1452 | "version": "1.0.0-beta.2",
1453 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1454 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1455 | "dev": true,
1456 | "license": "MIT",
1457 | "engines": {
1458 | "node": ">=6.9.0"
1459 | }
1460 | },
1461 | "node_modules/glob": {
1462 | "version": "10.4.5",
1463 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
1464 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
1465 | "dev": true,
1466 | "license": "ISC",
1467 | "dependencies": {
1468 | "foreground-child": "^3.1.0",
1469 | "jackspeak": "^3.1.2",
1470 | "minimatch": "^9.0.4",
1471 | "minipass": "^7.1.2",
1472 | "package-json-from-dist": "^1.0.0",
1473 | "path-scurry": "^1.11.1"
1474 | },
1475 | "bin": {
1476 | "glob": "dist/esm/bin.mjs"
1477 | },
1478 | "funding": {
1479 | "url": "https://github.com/sponsors/isaacs"
1480 | }
1481 | },
1482 | "node_modules/glob-parent": {
1483 | "version": "6.0.2",
1484 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1485 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1486 | "dev": true,
1487 | "license": "ISC",
1488 | "dependencies": {
1489 | "is-glob": "^4.0.3"
1490 | },
1491 | "engines": {
1492 | "node": ">=10.13.0"
1493 | }
1494 | },
1495 | "node_modules/globals": {
1496 | "version": "11.12.0",
1497 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1498 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1499 | "dev": true,
1500 | "license": "MIT",
1501 | "engines": {
1502 | "node": ">=4"
1503 | }
1504 | },
1505 | "node_modules/hasown": {
1506 | "version": "2.0.2",
1507 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1508 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1509 | "dev": true,
1510 | "license": "MIT",
1511 | "dependencies": {
1512 | "function-bind": "^1.1.2"
1513 | },
1514 | "engines": {
1515 | "node": ">= 0.4"
1516 | }
1517 | },
1518 | "node_modules/is-binary-path": {
1519 | "version": "2.1.0",
1520 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1521 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1522 | "dev": true,
1523 | "license": "MIT",
1524 | "dependencies": {
1525 | "binary-extensions": "^2.0.0"
1526 | },
1527 | "engines": {
1528 | "node": ">=8"
1529 | }
1530 | },
1531 | "node_modules/is-core-module": {
1532 | "version": "2.16.1",
1533 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
1534 | "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
1535 | "dev": true,
1536 | "license": "MIT",
1537 | "dependencies": {
1538 | "hasown": "^2.0.2"
1539 | },
1540 | "engines": {
1541 | "node": ">= 0.4"
1542 | },
1543 | "funding": {
1544 | "url": "https://github.com/sponsors/ljharb"
1545 | }
1546 | },
1547 | "node_modules/is-extglob": {
1548 | "version": "2.1.1",
1549 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1550 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1551 | "dev": true,
1552 | "license": "MIT",
1553 | "engines": {
1554 | "node": ">=0.10.0"
1555 | }
1556 | },
1557 | "node_modules/is-fullwidth-code-point": {
1558 | "version": "3.0.0",
1559 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1560 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1561 | "dev": true,
1562 | "license": "MIT",
1563 | "engines": {
1564 | "node": ">=8"
1565 | }
1566 | },
1567 | "node_modules/is-glob": {
1568 | "version": "4.0.3",
1569 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1570 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1571 | "dev": true,
1572 | "license": "MIT",
1573 | "dependencies": {
1574 | "is-extglob": "^2.1.1"
1575 | },
1576 | "engines": {
1577 | "node": ">=0.10.0"
1578 | }
1579 | },
1580 | "node_modules/is-number": {
1581 | "version": "7.0.0",
1582 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1583 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1584 | "dev": true,
1585 | "license": "MIT",
1586 | "engines": {
1587 | "node": ">=0.12.0"
1588 | }
1589 | },
1590 | "node_modules/isexe": {
1591 | "version": "2.0.0",
1592 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1593 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1594 | "dev": true,
1595 | "license": "ISC"
1596 | },
1597 | "node_modules/jackspeak": {
1598 | "version": "3.4.3",
1599 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
1600 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
1601 | "dev": true,
1602 | "license": "BlueOak-1.0.0",
1603 | "dependencies": {
1604 | "@isaacs/cliui": "^8.0.2"
1605 | },
1606 | "funding": {
1607 | "url": "https://github.com/sponsors/isaacs"
1608 | },
1609 | "optionalDependencies": {
1610 | "@pkgjs/parseargs": "^0.11.0"
1611 | }
1612 | },
1613 | "node_modules/jiti": {
1614 | "version": "1.21.7",
1615 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
1616 | "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
1617 | "dev": true,
1618 | "license": "MIT",
1619 | "bin": {
1620 | "jiti": "bin/jiti.js"
1621 | }
1622 | },
1623 | "node_modules/js-tokens": {
1624 | "version": "4.0.0",
1625 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1626 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1627 | "license": "MIT"
1628 | },
1629 | "node_modules/jsesc": {
1630 | "version": "3.1.0",
1631 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
1632 | "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
1633 | "dev": true,
1634 | "license": "MIT",
1635 | "bin": {
1636 | "jsesc": "bin/jsesc"
1637 | },
1638 | "engines": {
1639 | "node": ">=6"
1640 | }
1641 | },
1642 | "node_modules/json5": {
1643 | "version": "2.2.3",
1644 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
1645 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1646 | "dev": true,
1647 | "license": "MIT",
1648 | "bin": {
1649 | "json5": "lib/cli.js"
1650 | },
1651 | "engines": {
1652 | "node": ">=6"
1653 | }
1654 | },
1655 | "node_modules/lilconfig": {
1656 | "version": "3.1.3",
1657 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1658 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1659 | "dev": true,
1660 | "license": "MIT",
1661 | "engines": {
1662 | "node": ">=14"
1663 | },
1664 | "funding": {
1665 | "url": "https://github.com/sponsors/antonk52"
1666 | }
1667 | },
1668 | "node_modules/lines-and-columns": {
1669 | "version": "1.2.4",
1670 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1671 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1672 | "dev": true,
1673 | "license": "MIT"
1674 | },
1675 | "node_modules/loose-envify": {
1676 | "version": "1.4.0",
1677 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1678 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1679 | "license": "MIT",
1680 | "dependencies": {
1681 | "js-tokens": "^3.0.0 || ^4.0.0"
1682 | },
1683 | "bin": {
1684 | "loose-envify": "cli.js"
1685 | }
1686 | },
1687 | "node_modules/lru-cache": {
1688 | "version": "10.4.3",
1689 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
1690 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
1691 | "dev": true,
1692 | "license": "ISC"
1693 | },
1694 | "node_modules/merge2": {
1695 | "version": "1.4.1",
1696 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1697 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1698 | "dev": true,
1699 | "license": "MIT",
1700 | "engines": {
1701 | "node": ">= 8"
1702 | }
1703 | },
1704 | "node_modules/micromatch": {
1705 | "version": "4.0.8",
1706 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
1707 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1708 | "dev": true,
1709 | "license": "MIT",
1710 | "dependencies": {
1711 | "braces": "^3.0.3",
1712 | "picomatch": "^2.3.1"
1713 | },
1714 | "engines": {
1715 | "node": ">=8.6"
1716 | }
1717 | },
1718 | "node_modules/minimatch": {
1719 | "version": "9.0.5",
1720 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1721 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1722 | "dev": true,
1723 | "license": "ISC",
1724 | "dependencies": {
1725 | "brace-expansion": "^2.0.1"
1726 | },
1727 | "engines": {
1728 | "node": ">=16 || 14 >=14.17"
1729 | },
1730 | "funding": {
1731 | "url": "https://github.com/sponsors/isaacs"
1732 | }
1733 | },
1734 | "node_modules/minipass": {
1735 | "version": "7.1.2",
1736 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1737 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1738 | "dev": true,
1739 | "license": "ISC",
1740 | "engines": {
1741 | "node": ">=16 || 14 >=14.17"
1742 | }
1743 | },
1744 | "node_modules/ms": {
1745 | "version": "2.1.3",
1746 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1747 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1748 | "dev": true,
1749 | "license": "MIT"
1750 | },
1751 | "node_modules/mz": {
1752 | "version": "2.7.0",
1753 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1754 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1755 | "dev": true,
1756 | "license": "MIT",
1757 | "dependencies": {
1758 | "any-promise": "^1.0.0",
1759 | "object-assign": "^4.0.1",
1760 | "thenify-all": "^1.0.0"
1761 | }
1762 | },
1763 | "node_modules/nanoid": {
1764 | "version": "3.3.8",
1765 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
1766 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
1767 | "dev": true,
1768 | "funding": [
1769 | {
1770 | "type": "github",
1771 | "url": "https://github.com/sponsors/ai"
1772 | }
1773 | ],
1774 | "license": "MIT",
1775 | "bin": {
1776 | "nanoid": "bin/nanoid.cjs"
1777 | },
1778 | "engines": {
1779 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1780 | }
1781 | },
1782 | "node_modules/node-releases": {
1783 | "version": "2.0.19",
1784 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
1785 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
1786 | "dev": true,
1787 | "license": "MIT"
1788 | },
1789 | "node_modules/normalize-path": {
1790 | "version": "3.0.0",
1791 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1792 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1793 | "dev": true,
1794 | "license": "MIT",
1795 | "engines": {
1796 | "node": ">=0.10.0"
1797 | }
1798 | },
1799 | "node_modules/normalize-range": {
1800 | "version": "0.1.2",
1801 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
1802 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
1803 | "dev": true,
1804 | "license": "MIT",
1805 | "engines": {
1806 | "node": ">=0.10.0"
1807 | }
1808 | },
1809 | "node_modules/object-assign": {
1810 | "version": "4.1.1",
1811 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1812 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1813 | "dev": true,
1814 | "license": "MIT",
1815 | "engines": {
1816 | "node": ">=0.10.0"
1817 | }
1818 | },
1819 | "node_modules/object-hash": {
1820 | "version": "3.0.0",
1821 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1822 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1823 | "dev": true,
1824 | "license": "MIT",
1825 | "engines": {
1826 | "node": ">= 6"
1827 | }
1828 | },
1829 | "node_modules/package-json-from-dist": {
1830 | "version": "1.0.1",
1831 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
1832 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
1833 | "dev": true,
1834 | "license": "BlueOak-1.0.0"
1835 | },
1836 | "node_modules/path-key": {
1837 | "version": "3.1.1",
1838 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1839 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1840 | "dev": true,
1841 | "license": "MIT",
1842 | "engines": {
1843 | "node": ">=8"
1844 | }
1845 | },
1846 | "node_modules/path-parse": {
1847 | "version": "1.0.7",
1848 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1849 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1850 | "dev": true,
1851 | "license": "MIT"
1852 | },
1853 | "node_modules/path-scurry": {
1854 | "version": "1.11.1",
1855 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1856 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1857 | "dev": true,
1858 | "license": "BlueOak-1.0.0",
1859 | "dependencies": {
1860 | "lru-cache": "^10.2.0",
1861 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1862 | },
1863 | "engines": {
1864 | "node": ">=16 || 14 >=14.18"
1865 | },
1866 | "funding": {
1867 | "url": "https://github.com/sponsors/isaacs"
1868 | }
1869 | },
1870 | "node_modules/picocolors": {
1871 | "version": "1.1.1",
1872 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1873 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1874 | "dev": true,
1875 | "license": "ISC"
1876 | },
1877 | "node_modules/picomatch": {
1878 | "version": "2.3.1",
1879 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1880 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1881 | "dev": true,
1882 | "license": "MIT",
1883 | "engines": {
1884 | "node": ">=8.6"
1885 | },
1886 | "funding": {
1887 | "url": "https://github.com/sponsors/jonschlinkert"
1888 | }
1889 | },
1890 | "node_modules/pify": {
1891 | "version": "2.3.0",
1892 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1893 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1894 | "dev": true,
1895 | "license": "MIT",
1896 | "engines": {
1897 | "node": ">=0.10.0"
1898 | }
1899 | },
1900 | "node_modules/pirates": {
1901 | "version": "4.0.6",
1902 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
1903 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
1904 | "dev": true,
1905 | "license": "MIT",
1906 | "engines": {
1907 | "node": ">= 6"
1908 | }
1909 | },
1910 | "node_modules/postcss": {
1911 | "version": "8.5.1",
1912 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
1913 | "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
1914 | "dev": true,
1915 | "funding": [
1916 | {
1917 | "type": "opencollective",
1918 | "url": "https://opencollective.com/postcss/"
1919 | },
1920 | {
1921 | "type": "tidelift",
1922 | "url": "https://tidelift.com/funding/github/npm/postcss"
1923 | },
1924 | {
1925 | "type": "github",
1926 | "url": "https://github.com/sponsors/ai"
1927 | }
1928 | ],
1929 | "license": "MIT",
1930 | "dependencies": {
1931 | "nanoid": "^3.3.8",
1932 | "picocolors": "^1.1.1",
1933 | "source-map-js": "^1.2.1"
1934 | },
1935 | "engines": {
1936 | "node": "^10 || ^12 || >=14"
1937 | }
1938 | },
1939 | "node_modules/postcss-import": {
1940 | "version": "15.1.0",
1941 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
1942 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
1943 | "dev": true,
1944 | "license": "MIT",
1945 | "dependencies": {
1946 | "postcss-value-parser": "^4.0.0",
1947 | "read-cache": "^1.0.0",
1948 | "resolve": "^1.1.7"
1949 | },
1950 | "engines": {
1951 | "node": ">=14.0.0"
1952 | },
1953 | "peerDependencies": {
1954 | "postcss": "^8.0.0"
1955 | }
1956 | },
1957 | "node_modules/postcss-js": {
1958 | "version": "4.0.1",
1959 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
1960 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
1961 | "dev": true,
1962 | "license": "MIT",
1963 | "dependencies": {
1964 | "camelcase-css": "^2.0.1"
1965 | },
1966 | "engines": {
1967 | "node": "^12 || ^14 || >= 16"
1968 | },
1969 | "funding": {
1970 | "type": "opencollective",
1971 | "url": "https://opencollective.com/postcss/"
1972 | },
1973 | "peerDependencies": {
1974 | "postcss": "^8.4.21"
1975 | }
1976 | },
1977 | "node_modules/postcss-load-config": {
1978 | "version": "4.0.2",
1979 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
1980 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
1981 | "dev": true,
1982 | "funding": [
1983 | {
1984 | "type": "opencollective",
1985 | "url": "https://opencollective.com/postcss/"
1986 | },
1987 | {
1988 | "type": "github",
1989 | "url": "https://github.com/sponsors/ai"
1990 | }
1991 | ],
1992 | "license": "MIT",
1993 | "dependencies": {
1994 | "lilconfig": "^3.0.0",
1995 | "yaml": "^2.3.4"
1996 | },
1997 | "engines": {
1998 | "node": ">= 14"
1999 | },
2000 | "peerDependencies": {
2001 | "postcss": ">=8.0.9",
2002 | "ts-node": ">=9.0.0"
2003 | },
2004 | "peerDependenciesMeta": {
2005 | "postcss": {
2006 | "optional": true
2007 | },
2008 | "ts-node": {
2009 | "optional": true
2010 | }
2011 | }
2012 | },
2013 | "node_modules/postcss-nested": {
2014 | "version": "6.2.0",
2015 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
2016 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
2017 | "dev": true,
2018 | "funding": [
2019 | {
2020 | "type": "opencollective",
2021 | "url": "https://opencollective.com/postcss/"
2022 | },
2023 | {
2024 | "type": "github",
2025 | "url": "https://github.com/sponsors/ai"
2026 | }
2027 | ],
2028 | "license": "MIT",
2029 | "dependencies": {
2030 | "postcss-selector-parser": "^6.1.1"
2031 | },
2032 | "engines": {
2033 | "node": ">=12.0"
2034 | },
2035 | "peerDependencies": {
2036 | "postcss": "^8.2.14"
2037 | }
2038 | },
2039 | "node_modules/postcss-selector-parser": {
2040 | "version": "6.1.2",
2041 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
2042 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
2043 | "dev": true,
2044 | "license": "MIT",
2045 | "dependencies": {
2046 | "cssesc": "^3.0.0",
2047 | "util-deprecate": "^1.0.2"
2048 | },
2049 | "engines": {
2050 | "node": ">=4"
2051 | }
2052 | },
2053 | "node_modules/postcss-value-parser": {
2054 | "version": "4.2.0",
2055 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2056 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2057 | "dev": true,
2058 | "license": "MIT"
2059 | },
2060 | "node_modules/queue-microtask": {
2061 | "version": "1.2.3",
2062 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2063 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2064 | "dev": true,
2065 | "funding": [
2066 | {
2067 | "type": "github",
2068 | "url": "https://github.com/sponsors/feross"
2069 | },
2070 | {
2071 | "type": "patreon",
2072 | "url": "https://www.patreon.com/feross"
2073 | },
2074 | {
2075 | "type": "consulting",
2076 | "url": "https://feross.org/support"
2077 | }
2078 | ],
2079 | "license": "MIT"
2080 | },
2081 | "node_modules/react": {
2082 | "version": "18.3.1",
2083 | "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
2084 | "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
2085 | "license": "MIT",
2086 | "dependencies": {
2087 | "loose-envify": "^1.1.0"
2088 | },
2089 | "engines": {
2090 | "node": ">=0.10.0"
2091 | }
2092 | },
2093 | "node_modules/react-dom": {
2094 | "version": "18.3.1",
2095 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
2096 | "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
2097 | "license": "MIT",
2098 | "dependencies": {
2099 | "loose-envify": "^1.1.0",
2100 | "scheduler": "^0.23.2"
2101 | },
2102 | "peerDependencies": {
2103 | "react": "^18.3.1"
2104 | }
2105 | },
2106 | "node_modules/react-refresh": {
2107 | "version": "0.14.2",
2108 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
2109 | "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
2110 | "dev": true,
2111 | "license": "MIT",
2112 | "engines": {
2113 | "node": ">=0.10.0"
2114 | }
2115 | },
2116 | "node_modules/read-cache": {
2117 | "version": "1.0.0",
2118 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2119 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2120 | "dev": true,
2121 | "license": "MIT",
2122 | "dependencies": {
2123 | "pify": "^2.3.0"
2124 | }
2125 | },
2126 | "node_modules/readdirp": {
2127 | "version": "3.6.0",
2128 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2129 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2130 | "dev": true,
2131 | "license": "MIT",
2132 | "dependencies": {
2133 | "picomatch": "^2.2.1"
2134 | },
2135 | "engines": {
2136 | "node": ">=8.10.0"
2137 | }
2138 | },
2139 | "node_modules/resolve": {
2140 | "version": "1.22.10",
2141 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
2142 | "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
2143 | "dev": true,
2144 | "license": "MIT",
2145 | "dependencies": {
2146 | "is-core-module": "^2.16.0",
2147 | "path-parse": "^1.0.7",
2148 | "supports-preserve-symlinks-flag": "^1.0.0"
2149 | },
2150 | "bin": {
2151 | "resolve": "bin/resolve"
2152 | },
2153 | "engines": {
2154 | "node": ">= 0.4"
2155 | },
2156 | "funding": {
2157 | "url": "https://github.com/sponsors/ljharb"
2158 | }
2159 | },
2160 | "node_modules/reusify": {
2161 | "version": "1.0.4",
2162 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2163 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2164 | "dev": true,
2165 | "license": "MIT",
2166 | "engines": {
2167 | "iojs": ">=1.0.0",
2168 | "node": ">=0.10.0"
2169 | }
2170 | },
2171 | "node_modules/rollup": {
2172 | "version": "3.29.5",
2173 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
2174 | "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
2175 | "dev": true,
2176 | "license": "MIT",
2177 | "bin": {
2178 | "rollup": "dist/bin/rollup"
2179 | },
2180 | "engines": {
2181 | "node": ">=14.18.0",
2182 | "npm": ">=8.0.0"
2183 | },
2184 | "optionalDependencies": {
2185 | "fsevents": "~2.3.2"
2186 | }
2187 | },
2188 | "node_modules/run-parallel": {
2189 | "version": "1.2.0",
2190 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2191 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2192 | "dev": true,
2193 | "funding": [
2194 | {
2195 | "type": "github",
2196 | "url": "https://github.com/sponsors/feross"
2197 | },
2198 | {
2199 | "type": "patreon",
2200 | "url": "https://www.patreon.com/feross"
2201 | },
2202 | {
2203 | "type": "consulting",
2204 | "url": "https://feross.org/support"
2205 | }
2206 | ],
2207 | "license": "MIT",
2208 | "dependencies": {
2209 | "queue-microtask": "^1.2.2"
2210 | }
2211 | },
2212 | "node_modules/scheduler": {
2213 | "version": "0.23.2",
2214 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
2215 | "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
2216 | "license": "MIT",
2217 | "dependencies": {
2218 | "loose-envify": "^1.1.0"
2219 | }
2220 | },
2221 | "node_modules/semver": {
2222 | "version": "6.3.1",
2223 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
2224 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2225 | "dev": true,
2226 | "license": "ISC",
2227 | "bin": {
2228 | "semver": "bin/semver.js"
2229 | }
2230 | },
2231 | "node_modules/shebang-command": {
2232 | "version": "2.0.0",
2233 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2234 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2235 | "dev": true,
2236 | "license": "MIT",
2237 | "dependencies": {
2238 | "shebang-regex": "^3.0.0"
2239 | },
2240 | "engines": {
2241 | "node": ">=8"
2242 | }
2243 | },
2244 | "node_modules/shebang-regex": {
2245 | "version": "3.0.0",
2246 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2247 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2248 | "dev": true,
2249 | "license": "MIT",
2250 | "engines": {
2251 | "node": ">=8"
2252 | }
2253 | },
2254 | "node_modules/signal-exit": {
2255 | "version": "4.1.0",
2256 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2257 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2258 | "dev": true,
2259 | "license": "ISC",
2260 | "engines": {
2261 | "node": ">=14"
2262 | },
2263 | "funding": {
2264 | "url": "https://github.com/sponsors/isaacs"
2265 | }
2266 | },
2267 | "node_modules/source-map-js": {
2268 | "version": "1.2.1",
2269 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2270 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2271 | "dev": true,
2272 | "license": "BSD-3-Clause",
2273 | "engines": {
2274 | "node": ">=0.10.0"
2275 | }
2276 | },
2277 | "node_modules/string-width": {
2278 | "version": "5.1.2",
2279 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2280 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2281 | "dev": true,
2282 | "license": "MIT",
2283 | "dependencies": {
2284 | "eastasianwidth": "^0.2.0",
2285 | "emoji-regex": "^9.2.2",
2286 | "strip-ansi": "^7.0.1"
2287 | },
2288 | "engines": {
2289 | "node": ">=12"
2290 | },
2291 | "funding": {
2292 | "url": "https://github.com/sponsors/sindresorhus"
2293 | }
2294 | },
2295 | "node_modules/string-width-cjs": {
2296 | "name": "string-width",
2297 | "version": "4.2.3",
2298 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2299 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2300 | "dev": true,
2301 | "license": "MIT",
2302 | "dependencies": {
2303 | "emoji-regex": "^8.0.0",
2304 | "is-fullwidth-code-point": "^3.0.0",
2305 | "strip-ansi": "^6.0.1"
2306 | },
2307 | "engines": {
2308 | "node": ">=8"
2309 | }
2310 | },
2311 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
2312 | "version": "5.0.1",
2313 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2314 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2315 | "dev": true,
2316 | "license": "MIT",
2317 | "engines": {
2318 | "node": ">=8"
2319 | }
2320 | },
2321 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
2322 | "version": "8.0.0",
2323 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2324 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2325 | "dev": true,
2326 | "license": "MIT"
2327 | },
2328 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
2329 | "version": "6.0.1",
2330 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2331 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2332 | "dev": true,
2333 | "license": "MIT",
2334 | "dependencies": {
2335 | "ansi-regex": "^5.0.1"
2336 | },
2337 | "engines": {
2338 | "node": ">=8"
2339 | }
2340 | },
2341 | "node_modules/strip-ansi": {
2342 | "version": "7.1.0",
2343 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
2344 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
2345 | "dev": true,
2346 | "license": "MIT",
2347 | "dependencies": {
2348 | "ansi-regex": "^6.0.1"
2349 | },
2350 | "engines": {
2351 | "node": ">=12"
2352 | },
2353 | "funding": {
2354 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
2355 | }
2356 | },
2357 | "node_modules/strip-ansi-cjs": {
2358 | "name": "strip-ansi",
2359 | "version": "6.0.1",
2360 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2361 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2362 | "dev": true,
2363 | "license": "MIT",
2364 | "dependencies": {
2365 | "ansi-regex": "^5.0.1"
2366 | },
2367 | "engines": {
2368 | "node": ">=8"
2369 | }
2370 | },
2371 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
2372 | "version": "5.0.1",
2373 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2374 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2375 | "dev": true,
2376 | "license": "MIT",
2377 | "engines": {
2378 | "node": ">=8"
2379 | }
2380 | },
2381 | "node_modules/sucrase": {
2382 | "version": "3.35.0",
2383 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
2384 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
2385 | "dev": true,
2386 | "license": "MIT",
2387 | "dependencies": {
2388 | "@jridgewell/gen-mapping": "^0.3.2",
2389 | "commander": "^4.0.0",
2390 | "glob": "^10.3.10",
2391 | "lines-and-columns": "^1.1.6",
2392 | "mz": "^2.7.0",
2393 | "pirates": "^4.0.1",
2394 | "ts-interface-checker": "^0.1.9"
2395 | },
2396 | "bin": {
2397 | "sucrase": "bin/sucrase",
2398 | "sucrase-node": "bin/sucrase-node"
2399 | },
2400 | "engines": {
2401 | "node": ">=16 || 14 >=14.17"
2402 | }
2403 | },
2404 | "node_modules/supports-preserve-symlinks-flag": {
2405 | "version": "1.0.0",
2406 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2407 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2408 | "dev": true,
2409 | "license": "MIT",
2410 | "engines": {
2411 | "node": ">= 0.4"
2412 | },
2413 | "funding": {
2414 | "url": "https://github.com/sponsors/ljharb"
2415 | }
2416 | },
2417 | "node_modules/tailwindcss": {
2418 | "version": "3.4.17",
2419 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
2420 | "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
2421 | "dev": true,
2422 | "license": "MIT",
2423 | "dependencies": {
2424 | "@alloc/quick-lru": "^5.2.0",
2425 | "arg": "^5.0.2",
2426 | "chokidar": "^3.6.0",
2427 | "didyoumean": "^1.2.2",
2428 | "dlv": "^1.1.3",
2429 | "fast-glob": "^3.3.2",
2430 | "glob-parent": "^6.0.2",
2431 | "is-glob": "^4.0.3",
2432 | "jiti": "^1.21.6",
2433 | "lilconfig": "^3.1.3",
2434 | "micromatch": "^4.0.8",
2435 | "normalize-path": "^3.0.0",
2436 | "object-hash": "^3.0.0",
2437 | "picocolors": "^1.1.1",
2438 | "postcss": "^8.4.47",
2439 | "postcss-import": "^15.1.0",
2440 | "postcss-js": "^4.0.1",
2441 | "postcss-load-config": "^4.0.2",
2442 | "postcss-nested": "^6.2.0",
2443 | "postcss-selector-parser": "^6.1.2",
2444 | "resolve": "^1.22.8",
2445 | "sucrase": "^3.35.0"
2446 | },
2447 | "bin": {
2448 | "tailwind": "lib/cli.js",
2449 | "tailwindcss": "lib/cli.js"
2450 | },
2451 | "engines": {
2452 | "node": ">=14.0.0"
2453 | }
2454 | },
2455 | "node_modules/thenify": {
2456 | "version": "3.3.1",
2457 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
2458 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
2459 | "dev": true,
2460 | "license": "MIT",
2461 | "dependencies": {
2462 | "any-promise": "^1.0.0"
2463 | }
2464 | },
2465 | "node_modules/thenify-all": {
2466 | "version": "1.6.0",
2467 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
2468 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
2469 | "dev": true,
2470 | "license": "MIT",
2471 | "dependencies": {
2472 | "thenify": ">= 3.1.0 < 4"
2473 | },
2474 | "engines": {
2475 | "node": ">=0.8"
2476 | }
2477 | },
2478 | "node_modules/to-regex-range": {
2479 | "version": "5.0.1",
2480 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2481 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2482 | "dev": true,
2483 | "license": "MIT",
2484 | "dependencies": {
2485 | "is-number": "^7.0.0"
2486 | },
2487 | "engines": {
2488 | "node": ">=8.0"
2489 | }
2490 | },
2491 | "node_modules/ts-interface-checker": {
2492 | "version": "0.1.13",
2493 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
2494 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
2495 | "dev": true,
2496 | "license": "Apache-2.0"
2497 | },
2498 | "node_modules/typescript": {
2499 | "version": "4.9.5",
2500 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
2501 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
2502 | "dev": true,
2503 | "license": "Apache-2.0",
2504 | "bin": {
2505 | "tsc": "bin/tsc",
2506 | "tsserver": "bin/tsserver"
2507 | },
2508 | "engines": {
2509 | "node": ">=4.2.0"
2510 | }
2511 | },
2512 | "node_modules/update-browserslist-db": {
2513 | "version": "1.1.2",
2514 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz",
2515 | "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==",
2516 | "dev": true,
2517 | "funding": [
2518 | {
2519 | "type": "opencollective",
2520 | "url": "https://opencollective.com/browserslist"
2521 | },
2522 | {
2523 | "type": "tidelift",
2524 | "url": "https://tidelift.com/funding/github/npm/browserslist"
2525 | },
2526 | {
2527 | "type": "github",
2528 | "url": "https://github.com/sponsors/ai"
2529 | }
2530 | ],
2531 | "license": "MIT",
2532 | "dependencies": {
2533 | "escalade": "^3.2.0",
2534 | "picocolors": "^1.1.1"
2535 | },
2536 | "bin": {
2537 | "update-browserslist-db": "cli.js"
2538 | },
2539 | "peerDependencies": {
2540 | "browserslist": ">= 4.21.0"
2541 | }
2542 | },
2543 | "node_modules/util-deprecate": {
2544 | "version": "1.0.2",
2545 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2546 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2547 | "dev": true,
2548 | "license": "MIT"
2549 | },
2550 | "node_modules/vite": {
2551 | "version": "4.5.7",
2552 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.7.tgz",
2553 | "integrity": "sha512-vNeGkxk5lbs2CNXFz5nVSKjivMr1oYSb+xcClCSgH9oe/9FK3xzDgjjKTvO0Udc48eCV2AY4GYT61D6Y3iX9iQ==",
2554 | "dev": true,
2555 | "license": "MIT",
2556 | "dependencies": {
2557 | "esbuild": "^0.18.10",
2558 | "postcss": "^8.4.27",
2559 | "rollup": "^3.27.1"
2560 | },
2561 | "bin": {
2562 | "vite": "bin/vite.js"
2563 | },
2564 | "engines": {
2565 | "node": "^14.18.0 || >=16.0.0"
2566 | },
2567 | "funding": {
2568 | "url": "https://github.com/vitejs/vite?sponsor=1"
2569 | },
2570 | "optionalDependencies": {
2571 | "fsevents": "~2.3.2"
2572 | },
2573 | "peerDependencies": {
2574 | "@types/node": ">= 14",
2575 | "less": "*",
2576 | "lightningcss": "^1.21.0",
2577 | "sass": "*",
2578 | "stylus": "*",
2579 | "sugarss": "*",
2580 | "terser": "^5.4.0"
2581 | },
2582 | "peerDependenciesMeta": {
2583 | "@types/node": {
2584 | "optional": true
2585 | },
2586 | "less": {
2587 | "optional": true
2588 | },
2589 | "lightningcss": {
2590 | "optional": true
2591 | },
2592 | "sass": {
2593 | "optional": true
2594 | },
2595 | "stylus": {
2596 | "optional": true
2597 | },
2598 | "sugarss": {
2599 | "optional": true
2600 | },
2601 | "terser": {
2602 | "optional": true
2603 | }
2604 | }
2605 | },
2606 | "node_modules/which": {
2607 | "version": "2.0.2",
2608 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2609 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2610 | "dev": true,
2611 | "license": "ISC",
2612 | "dependencies": {
2613 | "isexe": "^2.0.0"
2614 | },
2615 | "bin": {
2616 | "node-which": "bin/node-which"
2617 | },
2618 | "engines": {
2619 | "node": ">= 8"
2620 | }
2621 | },
2622 | "node_modules/wrap-ansi": {
2623 | "version": "8.1.0",
2624 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
2625 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
2626 | "dev": true,
2627 | "license": "MIT",
2628 | "dependencies": {
2629 | "ansi-styles": "^6.1.0",
2630 | "string-width": "^5.0.1",
2631 | "strip-ansi": "^7.0.1"
2632 | },
2633 | "engines": {
2634 | "node": ">=12"
2635 | },
2636 | "funding": {
2637 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2638 | }
2639 | },
2640 | "node_modules/wrap-ansi-cjs": {
2641 | "name": "wrap-ansi",
2642 | "version": "7.0.0",
2643 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2644 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2645 | "dev": true,
2646 | "license": "MIT",
2647 | "dependencies": {
2648 | "ansi-styles": "^4.0.0",
2649 | "string-width": "^4.1.0",
2650 | "strip-ansi": "^6.0.0"
2651 | },
2652 | "engines": {
2653 | "node": ">=10"
2654 | },
2655 | "funding": {
2656 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2657 | }
2658 | },
2659 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
2660 | "version": "5.0.1",
2661 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2662 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2663 | "dev": true,
2664 | "license": "MIT",
2665 | "engines": {
2666 | "node": ">=8"
2667 | }
2668 | },
2669 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
2670 | "version": "4.3.0",
2671 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2672 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2673 | "dev": true,
2674 | "license": "MIT",
2675 | "dependencies": {
2676 | "color-convert": "^2.0.1"
2677 | },
2678 | "engines": {
2679 | "node": ">=8"
2680 | },
2681 | "funding": {
2682 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2683 | }
2684 | },
2685 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
2686 | "version": "8.0.0",
2687 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2688 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2689 | "dev": true,
2690 | "license": "MIT"
2691 | },
2692 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
2693 | "version": "4.2.3",
2694 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2695 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2696 | "dev": true,
2697 | "license": "MIT",
2698 | "dependencies": {
2699 | "emoji-regex": "^8.0.0",
2700 | "is-fullwidth-code-point": "^3.0.0",
2701 | "strip-ansi": "^6.0.1"
2702 | },
2703 | "engines": {
2704 | "node": ">=8"
2705 | }
2706 | },
2707 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
2708 | "version": "6.0.1",
2709 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2710 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2711 | "dev": true,
2712 | "license": "MIT",
2713 | "dependencies": {
2714 | "ansi-regex": "^5.0.1"
2715 | },
2716 | "engines": {
2717 | "node": ">=8"
2718 | }
2719 | },
2720 | "node_modules/yallist": {
2721 | "version": "3.1.1",
2722 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2723 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2724 | "dev": true,
2725 | "license": "ISC"
2726 | },
2727 | "node_modules/yaml": {
2728 | "version": "2.7.0",
2729 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
2730 | "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
2731 | "dev": true,
2732 | "license": "ISC",
2733 | "bin": {
2734 | "yaml": "bin.mjs"
2735 | },
2736 | "engines": {
2737 | "node": ">= 14"
2738 | }
2739 | }
2740 | }
2741 | }
2742 |
--------------------------------------------------------------------------------
/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-react-tailwind-app",
3 | "version": "1.0.0",
4 | "description": "A minimal React + Tailwind CSS project configured for GitHub Pages.",
5 | "scripts": {
6 | "dev": "vite",
7 | "build": "vite build",
8 | "serve": "vite preview"
9 | },
10 | "dependencies": {
11 | "react": "^18.2.0",
12 | "react-dom": "^18.2.0"
13 | },
14 | "devDependencies": {
15 | "@heroicons/react": "^2.0.13",
16 | "@types/react": "^18.0.28",
17 | "@types/react-dom": "^18.0.11",
18 | "@vitejs/plugin-react": "^4.3.4",
19 | "autoprefixer": "^10.4.14",
20 | "postcss": "^8.4.21",
21 | "tailwindcss": "^3.2.7",
22 | "typescript": "^4.9.5",
23 | "vite": "^4.0.4"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {}
5 | }
6 | };
7 |
--------------------------------------------------------------------------------
/app/rom-app-aggregated.txt:
--------------------------------------------------------------------------------
1 | ===== Tree of the project =====
2 | .
3 | ├── README.md
4 | ├── index.html
5 | ├── package.json
6 | ├── postcss.config.cjs
7 | ├── src
8 | │ ├── App.tsx
9 | │ ├── components
10 | │ │ └── ResearchTimelineApp.tsx
11 | │ ├── index.css
12 | │ └── main.tsx
13 | ├── styles.css
14 | ├── tailwind.config.cjs
15 | ├── tsconfig.json
16 | └── vite.config.ts
17 |
18 | 3 directories, 12 files
19 |
20 |
21 | ===== Concatenated Files =====
22 | ===== ./index.html =====
23 |
24 |
25 |
26 |
27 | Research Timeline
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | ===== ./styles.css =====
40 | /* Optional global styles to complement Tailwind. */
41 |
42 | /* Basic Reset and Global Styles */
43 | * {
44 | margin: 0;
45 | padding: 0;
46 | box-sizing: border-box;
47 | }
48 |
49 | body {
50 | font-family: "Helvetica Neue", Arial, sans-serif;
51 | background: #fafafa;
52 | color: #333;
53 | line-height: 1.6;
54 | }
55 |
56 | /* Example container layout */
57 | .container {
58 | max-width: 900px;
59 | margin: 0 auto;
60 | padding: 1.5rem;
61 | background-color: #ffffff;
62 | box-shadow: 0 1px 3px rgba(0,0,0,0.1);
63 | border-radius: 5px;
64 | }
65 |
66 | /* Headings */
67 | header h1 {
68 | font-size: 2rem;
69 | margin-bottom: 0.5rem;
70 | color: #2c3e50;
71 | }
72 |
73 | .subtitle {
74 | font-size: 1.1rem;
75 | color: #555;
76 | margin-bottom: 1rem;
77 | }
78 |
79 | section {
80 | margin-bottom: 1rem;
81 | }
82 |
83 | /* Horizontal Rule (section divider) */
84 | hr {
85 | margin: 2rem 0;
86 | border: none;
87 | height: 1px;
88 | background: #ddd;
89 | }
90 |
91 | /* Simple link styling */
92 | a {
93 | color: #3498db;
94 | text-decoration: none;
95 | }
96 | a:hover {
97 | text-decoration: underline;
98 | }
99 |
100 |
101 | ===== ./postcss.config.cjs =====
102 | module.exports = {
103 | plugins: {
104 | tailwindcss: {},
105 | autoprefixer: {}
106 | }
107 | };
108 |
109 |
110 | ===== ./README.md =====
111 |
112 |
113 | ===== ./tailwind.config.cjs =====
114 | /** @type {import('tailwindcss').Config} */
115 | module.exports = {
116 | content: [
117 | './index.html',
118 | './src/**/*.{ts,tsx,js,jsx}'
119 | ],
120 | theme: {
121 | extend: {}
122 | },
123 | plugins: []
124 | };
125 |
126 |
127 | ===== ./package.json =====
128 | {
129 | "name": "my-react-tailwind-app",
130 | "version": "1.0.0",
131 | "description": "A minimal React + Tailwind CSS project configured for GitHub Pages.",
132 | "scripts": {
133 | "dev": "vite",
134 | "build": "vite build",
135 | "serve": "vite preview"
136 | },
137 | "dependencies": {
138 | "react": "^18.2.0",
139 | "react-dom": "^18.2.0"
140 | },
141 | "devDependencies": {
142 | "@heroicons/react": "^2.0.13",
143 | "@types/react": "^18.0.28",
144 | "@types/react-dom": "^18.0.11",
145 | "@vitejs/plugin-react": "^4.3.4",
146 | "autoprefixer": "^10.4.14",
147 | "postcss": "^8.4.21",
148 | "tailwindcss": "^3.2.7",
149 | "typescript": "^4.9.5",
150 | "vite": "^4.0.4"
151 | }
152 | }
153 |
154 |
155 | ===== ./tsconfig.json =====
156 | {
157 | "compilerOptions": {
158 | "target": "ESNext",
159 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
160 | "allowJs": false,
161 | "skipLibCheck": true,
162 | "strict": true,
163 | "module": "ESNext",
164 | "moduleResolution": "Node",
165 | "resolveJsonModule": true,
166 | "isolatedModules": true,
167 | "jsx": "react-jsx",
168 | "noEmit": true,
169 | "baseUrl": ".",
170 | "paths": {
171 | "@/*": ["./src/*"]
172 | }
173 | },
174 | "include": [
175 | "src/**/*.ts",
176 | "src/**/*.tsx"
177 | ],
178 | "exclude": [
179 | "node_modules",
180 | "dist"
181 | ]
182 | }
183 |
184 | ===== ./vite.config.ts =====
185 | // app/vite.config.ts
186 | import { defineConfig } from 'vite';
187 | import react from '@vitejs/plugin-react';
188 |
189 | export default defineConfig({
190 | plugins: [react()],
191 |
192 | build: {
193 | // Output the build files to the top-level `docs/` folder
194 | outDir: '../docs'
195 | },
196 |
197 | // If you plan to serve from a sub-path like username.github.io/my-repo,
198 | // set the base property accordingly, e.g.:
199 | // base: '/my-repo/',
200 | });
201 |
202 |
203 | ===== ./src/App.tsx =====
204 | import React from 'react';
205 | import ResearchTimelineApp from './components/ResearchTimelineApp';
206 |
207 | const App: React.FC = () => {
208 | return ;
209 | };
210 |
211 | export default App;
212 |
213 |
214 | ===== ./src/main.tsx =====
215 | import React from 'react';
216 | import ReactDOM from 'react-dom/client';
217 |
218 | // Tailwind base + utilities
219 | import './index.css';
220 |
221 | // Optional extra user-defined CSS (styles.css in the project root)
222 | import '../styles.css';
223 |
224 | import App from './App';
225 |
226 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
227 |
228 |
229 |
230 | );
231 |
232 |
233 | ===== ./src/index.css =====
234 | @tailwind base;
235 | @tailwind components;
236 | @tailwind utilities;
237 |
238 | /* You can add global overrides or layer directives here if needed. */
239 |
240 |
241 | ===== ./src/components/ResearchTimelineApp.tsx =====
242 | import React, { useState } from 'react';
243 | import {
244 | DocumentTextIcon,
245 | BeakerIcon,
246 | ChartBarIcon
247 | } from '@heroicons/react/24/outline';
248 |
249 | interface TimelineItem {
250 | year: number;
251 | title: string;
252 | description: string;
253 | color: string;
254 | link: string;
255 | }
256 |
257 | const ResearchTimelineApp: React.FC = () => {
258 | // We'll have three main sections in the sidebar:
259 | // 1) coverage -> "Current Model Coverage"
260 | // 2) naming -> "Notebook Naming Convention"
261 | // 3) colab -> "Interactive Colab Notebooks"
262 | const [activeSection, setActiveSection] = useState('coverage');
263 |
264 | // Updated references in the timeline
265 | // You can click each timeline milestone if you want to implement that.
266 | // Right now they are static items displayed on the left panel.
267 | const timelineData: TimelineItem[] = [
268 | {
269 | year: 2020,
270 | title: 'Li et al. (2020)',
271 | description: 'Fourier Neural Operator for parametric PDEs',
272 | color: 'bg-blue-100',
273 | link: 'https://arxiv.org/abs/2010.08895'
274 | },
275 | {
276 | year: 2019,
277 | title: 'Lu et al. (2019)',
278 | description: 'DeepONet: Learning nonlinear operators for PDEs',
279 | color: 'bg-green-100',
280 | link: 'https://arxiv.org/abs/1910.03193'
281 | },
282 | {
283 | year: 2022,
284 | title: 'Fresca & Manzoni (2022)',
285 | description: 'POD-DL-ROM for nonlinear PDEs',
286 | color: 'bg-purple-100',
287 | link: 'https://www.sciencedirect.com/science/article/pii/S0045782521005120'
288 | },
289 | {
290 | year: 2021,
291 | title: 'Pant et al. (2021)',
292 | description: 'Deep learning for reduced-order fluid sims',
293 | color: 'bg-red-100',
294 | link: 'https://arxiv.org/abs/2107.04556'
295 | }
296 | ];
297 |
298 | // Renders main content for whichever section is active.
299 | const renderContent = () => {
300 | switch (activeSection) {
301 | case 'coverage':
302 | // Display the "Current Model Coverage" from your README
303 | return (
304 |
305 |
Current Model Coverage
306 |
307 |
308 | Li, Z., Kovachki, N., Azizzadenesheli, K., Liu, B., Bhattacharya, K.,
309 | Stuart, A., & Anandkumar, A. (2020). Fourier neural operator
310 | for parametric partial differential equations. arXiv preprint
311 |
315 | arXiv:2010.08895
316 |
317 |
318 |
319 | Lu, L., Jin, P., & Karniadakis, G. E. (2019). Deeponet:
320 | Learning nonlinear operators for identifying differential equations
321 | based on the universal approximation theorem of operators.
322 | arXiv preprint
323 |
327 | arXiv:1910.03193
328 |
329 |
330 |
331 | Fresca, S., & Manzoni, A. (2022). POD-DL-ROM: Enhancing
332 | deep learning-based reduced order models for nonlinear parametrized PDEs
333 | by proper orthogonal decomposition. Computer Methods in Applied
334 | Mechanics and Engineering, 388, 114181.
335 |
339 | Paper
340 |
341 |
342 |
343 | Pant, P., Doshi, R., Bahl, P., & Barati Farimani, A. (2021).
344 | Deep learning for reduced order modelling and efficient temporal evolution
345 | of fluid simulations. Physics of Fluids, 33(10).
346 |
350 | Paper
351 |
352 |
353 |
354 |
355 | );
356 |
357 | case 'naming':
358 | // Display the "Notebook Naming Convention" section
359 | return (
360 |
361 |
Notebook Naming Convention
362 |
363 | In order to facilitate ease of navigation and comprehension, a standard
364 | naming schema has been adopted for the Jupyter notebooks:
365 |
366 |
367 | {`[Model]_[Equation/Problem+Dimension]_[TAG].ipynb`}
368 |
369 |
370 |
371 | Model: Represents the computational model or algorithm
372 | under study (e.g., FNO, DLROM).
373 |
374 |
375 | Equation/Problem+Dimension: Specifies the mathematical
376 | problem or equation being solved along with its spatial dimensions
377 | (e.g., Burgers1D, NOAA2D).
378 |
379 |
380 | TAG: An optional identifier providing supplementary
381 | context or categorizing the notebook’s difficulty level or specific
382 | focus (e.g., Intro, Advanced, DataPrep).
383 |
384 |
385 |
386 | );
387 |
388 | case 'colab':
389 | // Display the "Interactive Colab Notebooks" section
390 | return (
391 |
392 |
Interactive Colab Notebooks
393 |
394 | For users interested in a more interactive learning experience, Google
395 | Colab versions of these tutorials are available:
396 |
397 |
432 |
433 | );
434 |
435 | default:
436 | return null;
437 | }
438 | };
439 |
440 | return (
441 |
442 | {/* Sidebar with Timeline */}
443 |
444 |
445 |
Reduced-Order Modeling
446 |
447 |
448 | {/* Navigation Menu */}
449 |
450 | {[
451 | { name: 'coverage', label: 'Current Model Coverage', icon: DocumentTextIcon },
452 | { name: 'naming', label: 'Notebook Naming Convention', icon: BeakerIcon },
453 | { name: 'colab', label: 'Colab Notebooks', icon: ChartBarIcon }
454 | ].map((item) => (
455 | setActiveSection(item.name)}
458 | className={`flex items-center w-full p-3 mb-2 rounded-lg text-left ${
459 | activeSection === item.name
460 | ? 'bg-blue-100 text-blue-700'
461 | : 'hover:bg-gray-100'
462 | }`}
463 | >
464 |
465 | {item.label}
466 |
467 | ))}
468 |
469 |
470 | {/* Timeline Section */}
471 |
472 |
Timeline of Papers
473 |
474 | {timelineData.map((item, index) => (
475 |
476 | {/* Year bubble */}
477 |
480 | {item.year}
481 |
482 | {/* Paper info */}
483 |
497 |
498 | ))}
499 |
500 |
501 |
502 |
503 | {/* Main Content */}
504 |
505 | {renderContent()}
506 |
507 |
508 | );
509 | };
510 |
511 | export default ResearchTimelineApp;
512 |
513 |
514 |
--------------------------------------------------------------------------------
/app/src/App.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ResearchTimelineApp from './components/ResearchTimelineApp';
3 |
4 | const App: React.FC = () => {
5 | return ;
6 | };
7 |
8 | export default App;
9 |
--------------------------------------------------------------------------------
/app/src/components/ResearchTimelineApp.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react';
2 | import {
3 | DocumentTextIcon,
4 | BeakerIcon,
5 | ChartBarIcon
6 | } from '@heroicons/react/24/outline';
7 |
8 | interface TimelineItem {
9 | year: number;
10 | title: string;
11 | description: string;
12 | color: string;
13 | link: string;
14 | }
15 |
16 | const ResearchTimelineApp: React.FC = () => {
17 | // We'll have three main sections in the sidebar:
18 | // 1) coverage -> "Current Model Coverage"
19 | // 2) naming -> "Notebook Naming Convention"
20 | // 3) colab -> "Interactive Colab Notebooks"
21 | const [activeSection, setActiveSection] = useState('coverage');
22 |
23 | // Updated references in the timeline
24 | // You can click each timeline milestone if you want to implement that.
25 | // Right now they are static items displayed on the left panel.
26 | const timelineData: TimelineItem[] = [
27 | {
28 | year: 2020,
29 | title: 'Li et al. (2020)',
30 | description: 'Fourier Neural Operator for parametric PDEs',
31 | color: 'bg-blue-100',
32 | link: 'https://arxiv.org/abs/2010.08895'
33 | },
34 | {
35 | year: 2019,
36 | title: 'Lu et al. (2019)',
37 | description: 'DeepONet: Learning nonlinear operators for PDEs',
38 | color: 'bg-green-100',
39 | link: 'https://arxiv.org/abs/1910.03193'
40 | },
41 | {
42 | year: 2022,
43 | title: 'Fresca & Manzoni (2022)',
44 | description: 'POD-DL-ROM for nonlinear PDEs',
45 | color: 'bg-purple-100',
46 | link: 'https://www.sciencedirect.com/science/article/pii/S0045782521005120'
47 | },
48 | {
49 | year: 2021,
50 | title: 'Pant et al. (2021)',
51 | description: 'Deep learning for reduced-order fluid sims',
52 | color: 'bg-red-100',
53 | link: 'https://arxiv.org/abs/2107.04556'
54 | }
55 | ];
56 |
57 | // Renders main content for whichever section is active.
58 | const renderContent = () => {
59 | switch (activeSection) {
60 | case 'coverage':
61 | // Display the "Current Model Coverage" from your README
62 | return (
63 |
64 |
Current Model Coverage
65 |
66 |
67 | Li, Z., Kovachki, N., Azizzadenesheli, K., Liu, B., Bhattacharya, K.,
68 | Stuart, A., & Anandkumar, A. (2020). Fourier neural operator
69 | for parametric partial differential equations. arXiv preprint
70 |
74 | arXiv:2010.08895
75 |
76 |
77 |
78 | Lu, L., Jin, P., & Karniadakis, G. E. (2019). Deeponet:
79 | Learning nonlinear operators for identifying differential equations
80 | based on the universal approximation theorem of operators.
81 | arXiv preprint
82 |
86 | arXiv:1910.03193
87 |
88 |
89 |
90 | Fresca, S., & Manzoni, A. (2022). POD-DL-ROM: Enhancing
91 | deep learning-based reduced order models for nonlinear parametrized PDEs
92 | by proper orthogonal decomposition. Computer Methods in Applied
93 | Mechanics and Engineering, 388, 114181.
94 |
98 | Paper
99 |
100 |
101 |
102 | Pant, P., Doshi, R., Bahl, P., & Barati Farimani, A. (2021).
103 | Deep learning for reduced order modelling and efficient temporal evolution
104 | of fluid simulations. Physics of Fluids, 33(10).
105 |
109 | Paper
110 |
111 |
112 |
113 |
114 | );
115 |
116 | case 'naming':
117 | // Display the "Notebook Naming Convention" section
118 | return (
119 |
120 |
Notebook Naming Convention
121 |
122 | In order to facilitate ease of navigation and comprehension, a standard
123 | naming schema has been adopted for the Jupyter notebooks:
124 |
125 |
126 | {`[Model]_[Equation/Problem+Dimension]_[TAG].ipynb`}
127 |
128 |
129 |
130 | Model: Represents the computational model or algorithm
131 | under study (e.g., FNO, DLROM).
132 |
133 |
134 | Equation/Problem+Dimension: Specifies the mathematical
135 | problem or equation being solved along with its spatial dimensions
136 | (e.g., Burgers1D, NOAA2D).
137 |
138 |
139 | TAG: An optional identifier providing supplementary
140 | context or categorizing the notebook’s difficulty level or specific
141 | focus (e.g., Intro, Advanced, DataPrep).
142 |
143 |
144 |
145 | );
146 |
147 | case 'colab':
148 | // Display the "Interactive Colab Notebooks" section
149 | return (
150 |
151 |
Interactive Colab Notebooks
152 |
153 | For users interested in a more interactive learning experience, Google
154 | Colab versions of these tutorials are available:
155 |
156 |
191 |
192 | );
193 |
194 | default:
195 | return null;
196 | }
197 | };
198 |
199 | return (
200 |
201 | {/* Sidebar with Timeline */}
202 |
203 |
204 |
Reduced-Order Modeling
205 |
206 |
207 | {/* Navigation Menu */}
208 |
209 | {[
210 | { name: 'coverage', label: 'Current Model Coverage', icon: DocumentTextIcon },
211 | { name: 'naming', label: 'Notebook Naming Convention', icon: BeakerIcon },
212 | { name: 'colab', label: 'Colab Notebooks', icon: ChartBarIcon }
213 | ].map((item) => (
214 | setActiveSection(item.name)}
217 | className={`flex items-center w-full p-3 mb-2 rounded-lg text-left ${
218 | activeSection === item.name
219 | ? 'bg-blue-100 text-blue-700'
220 | : 'hover:bg-gray-100'
221 | }`}
222 | >
223 |
224 | {item.label}
225 |
226 | ))}
227 |
228 |
229 | {/* Timeline Section */}
230 |
231 |
Timeline of Papers
232 |
233 | {timelineData.map((item, index) => (
234 |
235 | {/* Year bubble */}
236 |
239 | {item.year}
240 |
241 | {/* Paper info */}
242 |
256 |
257 | ))}
258 |
259 |
260 |
261 |
262 | {/* Main Content */}
263 |
264 | {renderContent()}
265 |
266 |
267 | );
268 | };
269 |
270 | export default ResearchTimelineApp;
271 |
--------------------------------------------------------------------------------
/app/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | /* You can add global overrides or layer directives here if needed. */
6 |
--------------------------------------------------------------------------------
/app/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom/client';
3 |
4 | // Tailwind base + utilities
5 | import './index.css';
6 |
7 | // Optional extra user-defined CSS (styles.css in the project root)
8 | import '../styles.css';
9 |
10 | import App from './App';
11 |
12 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
13 |
14 |
15 |
16 | );
17 |
--------------------------------------------------------------------------------
/app/styles.css:
--------------------------------------------------------------------------------
1 | /* Optional global styles to complement Tailwind. */
2 |
3 | /* Basic Reset and Global Styles */
4 | * {
5 | margin: 0;
6 | padding: 0;
7 | box-sizing: border-box;
8 | }
9 |
10 | body {
11 | font-family: "Helvetica Neue", Arial, sans-serif;
12 | background: #fafafa;
13 | color: #333;
14 | line-height: 1.6;
15 | }
16 |
17 | /* Example container layout */
18 | .container {
19 | max-width: 900px;
20 | margin: 0 auto;
21 | padding: 1.5rem;
22 | background-color: #ffffff;
23 | box-shadow: 0 1px 3px rgba(0,0,0,0.1);
24 | border-radius: 5px;
25 | }
26 |
27 | /* Headings */
28 | header h1 {
29 | font-size: 2rem;
30 | margin-bottom: 0.5rem;
31 | color: #2c3e50;
32 | }
33 |
34 | .subtitle {
35 | font-size: 1.1rem;
36 | color: #555;
37 | margin-bottom: 1rem;
38 | }
39 |
40 | section {
41 | margin-bottom: 1rem;
42 | }
43 |
44 | /* Horizontal Rule (section divider) */
45 | hr {
46 | margin: 2rem 0;
47 | border: none;
48 | height: 1px;
49 | background: #ddd;
50 | }
51 |
52 | /* Simple link styling */
53 | a {
54 | color: #3498db;
55 | text-decoration: none;
56 | }
57 | a:hover {
58 | text-decoration: underline;
59 | }
60 |
--------------------------------------------------------------------------------
/app/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: [
4 | './index.html',
5 | './src/**/*.{ts,tsx,js,jsx}'
6 | ],
7 | theme: {
8 | extend: {}
9 | },
10 | plugins: []
11 | };
12 |
--------------------------------------------------------------------------------
/app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
5 | "allowJs": false,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "module": "ESNext",
9 | "moduleResolution": "Node",
10 | "resolveJsonModule": true,
11 | "isolatedModules": true,
12 | "jsx": "react-jsx",
13 | "noEmit": true,
14 | "baseUrl": ".",
15 | "paths": {
16 | "@/*": ["./src/*"]
17 | }
18 | },
19 | "include": [
20 | "src/**/*.ts",
21 | "src/**/*.tsx"
22 | ],
23 | "exclude": [
24 | "node_modules",
25 | "dist"
26 | ]
27 | }
--------------------------------------------------------------------------------
/app/vite.config.ts:
--------------------------------------------------------------------------------
1 | // app/vite.config.ts
2 | import { defineConfig } from 'vite';
3 | import react from '@vitejs/plugin-react';
4 |
5 | export default defineConfig({
6 | plugins: [react()],
7 |
8 | // "base" must match your GitHub repo name
9 | base: '/Reduced-Order-Modeling-Tutorials/',
10 |
11 | build: {
12 | // Output the build files to the top-level `docs/` folder
13 | outDir: '../docs'
14 | }
15 | });
16 |
--------------------------------------------------------------------------------
/docs/assets/index-95a7de50.css:
--------------------------------------------------------------------------------
1 | *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.static{position:static}.absolute{position:absolute}.relative{position:relative}.-left-\[26px\]{left:-26px}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-16{margin-left:4rem}.mr-3{margin-right:.75rem}.mt-2{margin-top:.5rem}.inline-block{display:inline-block}.flex{display:flex}.h-12{height:3rem}.h-6{height:1.5rem}.h-screen{height:100vh}.w-12{width:3rem}.w-6{width:1.5rem}.w-80{width:20rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.list-disc{list-style-type:disc}.items-center{align-items:center}.justify-center{justify-content:center}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.text-left{text-align:left}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Helvetica Neue,Arial,sans-serif;background:#fafafa;color:#333;line-height:1.6}.container{max-width:900px;margin:0 auto;padding:1.5rem;background-color:#fff;box-shadow:0 1px 3px #0000001a;border-radius:5px}header h1{font-size:2rem;margin-bottom:.5rem;color:#2c3e50}.subtitle{font-size:1.1rem;color:#555;margin-bottom:1rem}section{margin-bottom:1rem}hr{margin:2rem 0;border:none;height:1px;background:#ddd}a{color:#3498db;text-decoration:none}a:hover{text-decoration:underline}
2 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Research Timeline
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | # PyTorch for deep learning
2 | torch
3 |
4 | # Google Drive download utility
5 | gdown
6 |
7 | # Scientific computing
8 | scipy
9 | numpy
10 | h5py
11 |
12 | # Plotting libraries
13 | matplotlib
14 | plotly
--------------------------------------------------------------------------------