radames commited on
Commit
1b06101
1 Parent(s): 5225288

bump version and use Docker

Browse files
Files changed (50) hide show
  1. .gitignore +2 -1
  2. Dockerfile +32 -0
  3. Makefile +0 -2
  4. README.md +3 -4
  5. app.py +48 -31
  6. client/.eslintrc.cjs +0 -15
  7. client/.gitignore +0 -8
  8. client/.npmrc +0 -1
  9. client/.prettierrc +0 -6
  10. client/README.md +0 -40
  11. client/jsconfig.json +0 -10
  12. client/package-lock.json +0 -0
  13. client/package.json +0 -27
  14. client/src/routes/__layout.svelte +0 -5
  15. client/static/favicon.png +0 -0
  16. client/svelte.config.js +0 -23
  17. frontend/.gitignore +24 -0
  18. frontend/README.md +47 -0
  19. client/src/app.html → frontend/index.html +6 -7
  20. frontend/jsconfig.json +32 -0
  21. frontend/package-lock.json +2520 -0
  22. frontend/package.json +20 -0
  23. client/postcss.config.cjs → frontend/postcss.config.js +1 -1
  24. {client/static → frontend/public}/test.json +0 -0
  25. frontend/public/vite.svg +1 -0
  26. client/src/routes/index.svelte → frontend/src/App.svelte +8 -7
  27. {client → frontend}/src/app.css +1 -1
  28. frontend/src/assets/svelte.svg +1 -0
  29. {client → frontend}/src/components/NewsBlock.svelte +0 -0
  30. frontend/src/lib/Counter.svelte +10 -0
  31. frontend/src/main.js +8 -0
  32. frontend/src/vite-env.d.ts +2 -0
  33. frontend/svelte.config.js +7 -0
  34. client/tailwind.config.cjs → frontend/tailwind.config.js +7 -3
  35. frontend/vite.config.js +12 -0
  36. install-node.sh +0 -10
  37. main.py +0 -3
  38. packages.txt +0 -0
  39. requirements.txt +6 -6
  40. static/_app/assets/pages/__layout.svelte-298a4fd5.css +0 -1
  41. static/_app/chunks/vendor-528a52ee.js +0 -1
  42. static/_app/error.svelte-41f1b9b8.js +0 -1
  43. static/_app/manifest.json +0 -48
  44. static/_app/pages/__layout.svelte-483b60b6.js +0 -1
  45. static/_app/pages/index.svelte-a06f0dfd.js +0 -43
  46. static/_app/start-ad0dbeae.js +0 -1
  47. static/_app/version.json +0 -1
  48. static/favicon.png +0 -0
  49. static/index.html +0 -91
  50. static/test.json +0 -0
.gitignore CHANGED
@@ -24,4 +24,5 @@ htmlcov/
24
  .coverage.*
25
  *,cover
26
  venv
27
- *_cache.json
 
 
24
  .coverage.*
25
  *,cover
26
  venv
27
+ *_cache.json
28
+ dist/
Dockerfile ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:20-slim as builder
2
+
3
+ RUN apt-get update && apt-get install -y \
4
+ && rm -rf /var/lib/apt/lists/*
5
+
6
+ WORKDIR /code
7
+ COPY ./frontend /code/frontend
8
+ WORKDIR /code/frontend
9
+ RUN npm ci
10
+ RUN npm run build
11
+
12
+ FROM python:3.11
13
+
14
+ WORKDIR /code
15
+
16
+ COPY ./requirements.txt /code/requirements.txt
17
+
18
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
19
+
20
+ RUN useradd -m -u 1000 user
21
+ USER user
22
+ ENV HOME=/home/user \
23
+ PATH=/home/user/.local/bin:$PATH \
24
+ PYTHONPATH=$HOME/app \
25
+ PYTHONUNBUFFERED=1
26
+
27
+ WORKDIR $HOME/app
28
+
29
+ COPY --chown=user . $HOME/app
30
+ COPY --chown=user --from=builder /code/frontend/dist $HOME/app/dist
31
+
32
+ CMD ["python", "app.py"]
Makefile CHANGED
@@ -1,5 +1,3 @@
1
- install-node:
2
- ./install-node.sh
3
  build-client:
4
  cd client && npm install && npm run build && pwd && rm -r ../static && cp -r dist/ ../static/
5
  build-client-dev:
 
 
 
1
  build-client:
2
  cd client && npm install && npm run build && pwd && rm -r ../static && cp -r dist/ ../static/
3
  build-client-dev:
README.md CHANGED
@@ -1,10 +1,10 @@
1
  ---
2
- title: NYTimes Homepage Sentiment Analysis
3
  emoji: 📰
4
  colorFrom: red
5
  colorTo: green
6
- sdk: gradio
7
- app_file: main.py
8
  pinned: false
9
  ---
10
 
@@ -25,4 +25,3 @@ Because the Spaces run a python application, see [`app_file`](https://huggingfa
25
  #### SvelteKit Node Adapter?
26
 
27
  SvelteKit eventually can be used as our primary web application with [`@sveltejs/adapter-node`](https://github.com/sveltejs/kit/tree/master/packages/adapter-node) adaptor and Flask the API application with your ML project. However, there is an unsolved issue to enable [dynamic basepath](https://github.com/sveltejs/kit/issues/595), which blocks the possibility to embedded deployment or using a relative path.
28
-
 
1
  ---
2
+ title: NYTimes Homepage Sentiment Analysis
3
  emoji: 📰
4
  colorFrom: red
5
  colorTo: green
6
+ sdk: docker
7
+ app_port: 7860
8
  pinned: false
9
  ---
10
 
 
25
  #### SvelteKit Node Adapter?
26
 
27
  SvelteKit eventually can be used as our primary web application with [`@sveltejs/adapter-node`](https://github.com/sveltejs/kit/tree/master/packages/adapter-node) adaptor and Flask the API application with your ML project. However, there is an unsolved issue to enable [dynamic basepath](https://github.com/sveltejs/kit/issues/595), which blocks the possibility to embedded deployment or using a relative path.
 
app.py CHANGED
@@ -7,23 +7,25 @@ import feedparser
7
  import json
8
  from dateutil import parser
9
  import re
 
10
  load_dotenv()
11
  # Load Setiment Classifier
12
  sentiment_analysis = pipeline(
13
- "sentiment-analysis", model="siebert/sentiment-roberta-large-english")
14
- app = Flask(__name__, static_url_path='/static')
 
15
 
16
  CORS(app)
17
 
18
 
19
- @app.route('/')
20
  def index():
21
- return app.send_static_file('index.html')
22
 
23
 
24
- @app.route('/news')
25
  def get_news():
26
- feed_url = request.args.get('feed_url')
27
  # check if string is a valid
28
 
29
  # file name for cache
@@ -32,30 +34,39 @@ def get_news():
32
  feed_entries = get_feed(feed_url)
33
  # filter only titles for sentiment analysis
34
  try:
35
- with open(f'{file_name}_cache.json') as file:
36
  cache = json.load(file)
37
  except:
38
  cache = {}
39
 
40
  # if new homepage is newer than cache, update cache and return
41
- print("new date", feed_entries['last_update'])
42
- print("old date", cache['last_update']
43
- if 'last_update' in cache else "None")
44
- if not cache or parser.parse(feed_entries['last_update']) > parser.parse(cache['last_update']):
 
45
  print("Updating cache with new preditions")
46
- titles = [entry['title'] for entry in feed_entries['entries']]
47
  # run sentiment analysis on titles
48
  predictions = [sentiment_analysis(sentence) for sentence in titles]
49
  # parse Negative and Positive, normalize to -1 to 1
50
- predictions = [-prediction[0]['score'] if prediction[0]['label'] ==
51
- 'NEGATIVE' else prediction[0]['score'] for prediction in predictions]
 
 
 
 
52
  # merge rss data with predictions
53
- entries_predicitons = [{**entry, 'sentiment': prediction}
54
- for entry, prediction in zip(feed_entries['entries'], predictions)]
55
- output = {'entries': entries_predicitons,
56
- 'last_update': feed_entries['last_update']}
 
 
 
 
57
  # update last precitions cache
58
- with open(f'{file_name}_cache.json', 'w') as file:
59
  json.dump(output, file)
60
  # send back json
61
  return jsonify(output)
@@ -64,32 +75,38 @@ def get_news():
64
  return jsonify(cache)
65
 
66
 
67
- @ app.route('/predict', methods=['POST'])
68
  def predict():
69
  # get data from POST
70
- if request.method == 'POST':
71
  # get current news
72
  # get post body data
73
  data = request.get_json()
74
- if data.get('sentences') is None:
75
- return jsonify({'error': 'No text provided'})
76
  # get post expeceted to be under {'sentences': ['text': '...']}
77
- sentences = data.get('sentences')
78
  # prencit sentiments
79
  predictions = [sentiment_analysis(sentence) for sentence in sentences]
80
  # parse Negative and Positive, normalize to -1 to 1
81
- predictions = [-prediction[0]['score'] if prediction[0]['label'] ==
82
- 'NEGATIVE' else prediction[0]['score'] for prediction in predictions]
83
- output = [dict(sentence=sentence, sentiment=prediction)
84
- for sentence, prediction in zip(sentences, predictions)]
 
 
 
 
 
 
85
  # send back json
86
  return jsonify(output)
87
 
88
 
89
  def get_feed(feed_url):
90
  feed = feedparser.parse(feed_url)
91
- return {'entries': feed['entries'], 'last_update': feed["feed"]['updated']}
92
 
93
 
94
- if __name__ == '__main__':
95
- app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))
 
7
  import json
8
  from dateutil import parser
9
  import re
10
+
11
  load_dotenv()
12
  # Load Setiment Classifier
13
  sentiment_analysis = pipeline(
14
+ "sentiment-analysis", model="siebert/sentiment-roberta-large-english"
15
+ )
16
+ app = Flask(__name__, static_url_path="", static_folder="dist")
17
 
18
  CORS(app)
19
 
20
 
21
+ @app.route("/")
22
  def index():
23
+ return app.send_static_file("index.html")
24
 
25
 
26
+ @app.route("/api/news")
27
  def get_news():
28
+ feed_url = request.args.get("feed_url")
29
  # check if string is a valid
30
 
31
  # file name for cache
 
34
  feed_entries = get_feed(feed_url)
35
  # filter only titles for sentiment analysis
36
  try:
37
+ with open(f"{file_name}_cache.json") as file:
38
  cache = json.load(file)
39
  except:
40
  cache = {}
41
 
42
  # if new homepage is newer than cache, update cache and return
43
+ print("new date", feed_entries["last_update"])
44
+ print("old date", cache["last_update"] if "last_update" in cache else "None")
45
+ if not cache or parser.parse(feed_entries["last_update"]) > parser.parse(
46
+ cache["last_update"]
47
+ ):
48
  print("Updating cache with new preditions")
49
+ titles = [entry["title"] for entry in feed_entries["entries"]]
50
  # run sentiment analysis on titles
51
  predictions = [sentiment_analysis(sentence) for sentence in titles]
52
  # parse Negative and Positive, normalize to -1 to 1
53
+ predictions = [
54
+ -prediction[0]["score"]
55
+ if prediction[0]["label"] == "NEGATIVE"
56
+ else prediction[0]["score"]
57
+ for prediction in predictions
58
+ ]
59
  # merge rss data with predictions
60
+ entries_predicitons = [
61
+ {**entry, "sentiment": prediction}
62
+ for entry, prediction in zip(feed_entries["entries"], predictions)
63
+ ]
64
+ output = {
65
+ "entries": entries_predicitons,
66
+ "last_update": feed_entries["last_update"],
67
+ }
68
  # update last precitions cache
69
+ with open(f"{file_name}_cache.json", "w") as file:
70
  json.dump(output, file)
71
  # send back json
72
  return jsonify(output)
 
75
  return jsonify(cache)
76
 
77
 
78
+ @app.route("/api/predict", methods=["POST"])
79
  def predict():
80
  # get data from POST
81
+ if request.method == "POST":
82
  # get current news
83
  # get post body data
84
  data = request.get_json()
85
+ if data.get("sentences") is None:
86
+ return jsonify({"error": "No text provided"})
87
  # get post expeceted to be under {'sentences': ['text': '...']}
88
+ sentences = data.get("sentences")
89
  # prencit sentiments
90
  predictions = [sentiment_analysis(sentence) for sentence in sentences]
91
  # parse Negative and Positive, normalize to -1 to 1
92
+ predictions = [
93
+ -prediction[0]["score"]
94
+ if prediction[0]["label"] == "NEGATIVE"
95
+ else prediction[0]["score"]
96
+ for prediction in predictions
97
+ ]
98
+ output = [
99
+ dict(sentence=sentence, sentiment=prediction)
100
+ for sentence, prediction in zip(sentences, predictions)
101
+ ]
102
  # send back json
103
  return jsonify(output)
104
 
105
 
106
  def get_feed(feed_url):
107
  feed = feedparser.parse(feed_url)
108
+ return {"entries": feed["entries"], "last_update": feed["feed"]["updated"]}
109
 
110
 
111
+ if __name__ == "__main__":
112
+ app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 7860)))
client/.eslintrc.cjs DELETED
@@ -1,15 +0,0 @@
1
- module.exports = {
2
- root: true,
3
- extends: ['eslint:recommended', 'prettier'],
4
- plugins: ['svelte3'],
5
- overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
6
- parserOptions: {
7
- sourceType: 'module',
8
- ecmaVersion: 2020
9
- },
10
- env: {
11
- browser: true,
12
- es2017: true,
13
- node: true
14
- }
15
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
client/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- .DS_Store
2
- node_modules
3
- /build
4
- /.svelte-kit
5
- /package
6
- .env
7
- .env.*
8
- !.env.example
 
 
 
 
 
 
 
 
 
client/.npmrc DELETED
@@ -1 +0,0 @@
1
- engine-strict=true
 
 
client/.prettierrc DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "useTabs": true,
3
- "singleQuote": true,
4
- "trailingComma": "none",
5
- "printWidth": 100
6
- }
 
 
 
 
 
 
 
client/README.md DELETED
@@ -1,40 +0,0 @@
1
- # create-svelte
2
-
3
- Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).
4
-
5
- ## Creating a project
6
-
7
- If you're seeing this, you've probably already done this step. Congrats!
8
-
9
- ```bash
10
- # create a new project in the current directory
11
- npm init svelte@next
12
-
13
- # create a new project in my-app
14
- npm init svelte@next my-app
15
- ```
16
-
17
- > Note: the `@next` is temporary
18
-
19
- ## Developing
20
-
21
- Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
22
-
23
- ```bash
24
- npm run dev
25
-
26
- # or start the server and open the app in a new browser tab
27
- npm run dev -- --open
28
- ```
29
-
30
- ## Building
31
-
32
- To create a production version of your app:
33
-
34
- ```bash
35
- npm run build
36
- ```
37
-
38
- You can preview the production build with `npm run preview`.
39
-
40
- > To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
client/jsconfig.json DELETED
@@ -1,10 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "baseUrl": ".",
4
- "paths": {
5
- "$lib": ["src/lib"],
6
- "$lib/*": ["src/lib/*"]
7
- }
8
- },
9
- "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
10
- }
 
 
 
 
 
 
 
 
 
 
 
client/package-lock.json DELETED
The diff for this file is too large to render. See raw diff
 
client/package.json DELETED
@@ -1,27 +0,0 @@
1
- {
2
- "name": "client",
3
- "version": "0.0.1",
4
- "scripts": {
5
- "dev": "svelte-kit dev",
6
- "build": "svelte-kit build",
7
- "package": "svelte-kit package",
8
- "preview": "svelte-kit preview",
9
- "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .",
10
- "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. ."
11
- },
12
- "devDependencies": {
13
- "@sveltejs/adapter-static": "^1.0.0-next.28",
14
- "@sveltejs/kit": "next",
15
- "@tailwindcss/typography": "^0.5.2",
16
- "autoprefixer": "^10.4.2",
17
- "eslint": "^7.32.0",
18
- "eslint-config-prettier": "^8.3.0",
19
- "eslint-plugin-svelte3": "^3.2.1",
20
- "postcss": "^8.4.6",
21
- "prettier": "^2.4.1",
22
- "prettier-plugin-svelte": "^2.4.0",
23
- "svelte": "^3.44.0",
24
- "tailwindcss": "^3.0.22"
25
- },
26
- "type": "module"
27
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
client/src/routes/__layout.svelte DELETED
@@ -1,5 +0,0 @@
1
- <script>
2
- import "../app.css";
3
- </script>
4
-
5
- <slot />
 
 
 
 
 
 
client/static/favicon.png DELETED
Binary file (1.57 kB)
 
client/svelte.config.js DELETED
@@ -1,23 +0,0 @@
1
- import adapter from '@sveltejs/adapter-static'
2
- const dev = process.env.NODE_ENV === 'development';
3
-
4
- /** @type {import('@sveltejs/kit').Config} */
5
- const config = {
6
- kit: {
7
- vite: {
8
- server: { fs: "allow" },
9
- },
10
- paths: {
11
- base: '/static'
12
- },
13
- appDir: '_app',
14
- adapter: adapter({
15
- pages: 'dist',
16
- assets: 'dist',
17
- fallback: null,
18
- precompress: false
19
- })
20
- }
21
- };
22
-
23
- export default config;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
frontend/.gitignore ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+
15
+ # Editor directories and files
16
+ .vscode/*
17
+ !.vscode/extensions.json
18
+ .idea
19
+ .DS_Store
20
+ *.suo
21
+ *.ntvs*
22
+ *.njsproj
23
+ *.sln
24
+ *.sw?
frontend/README.md ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Svelte + Vite
2
+
3
+ This template should help get you started developing with Svelte in Vite.
4
+
5
+ ## Recommended IDE Setup
6
+
7
+ [VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).
8
+
9
+ ## Need an official Svelte framework?
10
+
11
+ Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.
12
+
13
+ ## Technical considerations
14
+
15
+ **Why use this over SvelteKit?**
16
+
17
+ - It brings its own routing solution which might not be preferable for some users.
18
+ - It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
19
+
20
+ This template contains as little as possible to get started with Vite + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
21
+
22
+ Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.
23
+
24
+ **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**
25
+
26
+ Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information.
27
+
28
+ **Why include `.vscode/extensions.json`?**
29
+
30
+ Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.
31
+
32
+ **Why enable `checkJs` in the JS template?**
33
+
34
+ It is likely that most cases of changing variable types in runtime are likely to be accidental, rather than deliberate. This provides advanced typechecking out of the box. Should you like to take advantage of the dynamically-typed nature of JavaScript, it is trivial to change the configuration.
35
+
36
+ **Why is HMR not preserving my local component state?**
37
+
38
+ HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/sveltejs/svelte-hmr/tree/master/packages/svelte-hmr#preservation-of-local-state).
39
+
40
+ If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.
41
+
42
+ ```js
43
+ // store.js
44
+ // An extremely simple external store
45
+ import { writable } from 'svelte/store'
46
+ export default writable(0)
47
+ ```
client/src/app.html → frontend/index.html RENAMED
@@ -1,15 +1,14 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
- <base href="" />
5
- <meta charset="utf-8" />
6
- <meta name="description" content="" />
7
- <link rel="icon" href="%svelte.assets%/favicon.png" />
8
- <meta name="viewport" content="width=device-width, initial-scale=1" />
9
- %svelte.head%
10
  <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.1/iframeResizer.contentWindow.min.js"></script>
 
11
  </head>
12
  <body>
13
- <div>%svelte.body%</div>
 
14
  </body>
15
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 
 
 
7
  <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.1/iframeResizer.contentWindow.min.js"></script>
8
+ <title>New York Times Sentiment Analysis</title>
9
  </head>
10
  <body>
11
+ <div id="app"></div>
12
+ <script type="module" src="/src/main.js"></script>
13
  </body>
14
  </html>
frontend/jsconfig.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "moduleResolution": "bundler",
4
+ "target": "ESNext",
5
+ "module": "ESNext",
6
+ /**
7
+ * svelte-preprocess cannot figure out whether you have
8
+ * a value or a type, so tell TypeScript to enforce using
9
+ * `import type` instead of `import` for Types.
10
+ */
11
+ "verbatimModuleSyntax": true,
12
+ "isolatedModules": true,
13
+ "resolveJsonModule": true,
14
+ /**
15
+ * To have warnings / errors of the Svelte compiler at the
16
+ * correct position, enable source maps by default.
17
+ */
18
+ "sourceMap": true,
19
+ "esModuleInterop": true,
20
+ "skipLibCheck": true,
21
+ /**
22
+ * Typecheck JS in `.svelte` and `.js` files by default.
23
+ * Disable this if you'd like to use dynamic types.
24
+ */
25
+ "checkJs": true
26
+ },
27
+ /**
28
+ * Use global.d.ts instead of compilerOptions.types
29
+ * to avoid limiting type declarations.
30
+ */
31
+ "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
32
+ }
frontend/package-lock.json ADDED
@@ -0,0 +1,2520 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "frontend",
3
+ "version": "0.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "frontend",
9
+ "version": "0.0.0",
10
+ "devDependencies": {
11
+ "@sveltejs/vite-plugin-svelte": "^3.0.2",
12
+ "@tailwindcss/typography": "^0.5.10",
13
+ "autoprefixer": "^10.4.17",
14
+ "postcss": "^8.4.35",
15
+ "svelte": "^4.2.10",
16
+ "tailwindcss": "^3.4.1",
17
+ "vite": "^5.1.0"
18
+ }
19
+ },
20
+ "node_modules/@alloc/quick-lru": {
21
+ "version": "5.2.0",
22
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
23
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
24
+ "dev": true,
25
+ "engines": {
26
+ "node": ">=10"
27
+ },
28
+ "funding": {
29
+ "url": "https://github.com/sponsors/sindresorhus"
30
+ }
31
+ },
32
+ "node_modules/@ampproject/remapping": {
33
+ "version": "2.2.1",
34
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
35
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
36
+ "dev": true,
37
+ "dependencies": {
38
+ "@jridgewell/gen-mapping": "^0.3.0",
39
+ "@jridgewell/trace-mapping": "^0.3.9"
40
+ },
41
+ "engines": {
42
+ "node": ">=6.0.0"
43
+ }
44
+ },
45
+ "node_modules/@esbuild/aix-ppc64": {
46
+ "version": "0.19.12",
47
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
48
+ "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
49
+ "cpu": [
50
+ "ppc64"
51
+ ],
52
+ "dev": true,
53
+ "optional": true,
54
+ "os": [
55
+ "aix"
56
+ ],
57
+ "engines": {
58
+ "node": ">=12"
59
+ }
60
+ },
61
+ "node_modules/@esbuild/android-arm": {
62
+ "version": "0.19.12",
63
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
64
+ "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
65
+ "cpu": [
66
+ "arm"
67
+ ],
68
+ "dev": true,
69
+ "optional": true,
70
+ "os": [
71
+ "android"
72
+ ],
73
+ "engines": {
74
+ "node": ">=12"
75
+ }
76
+ },
77
+ "node_modules/@esbuild/android-arm64": {
78
+ "version": "0.19.12",
79
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
80
+ "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
81
+ "cpu": [
82
+ "arm64"
83
+ ],
84
+ "dev": true,
85
+ "optional": true,
86
+ "os": [
87
+ "android"
88
+ ],
89
+ "engines": {
90
+ "node": ">=12"
91
+ }
92
+ },
93
+ "node_modules/@esbuild/android-x64": {
94
+ "version": "0.19.12",
95
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
96
+ "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
97
+ "cpu": [
98
+ "x64"
99
+ ],
100
+ "dev": true,
101
+ "optional": true,
102
+ "os": [
103
+ "android"
104
+ ],
105
+ "engines": {
106
+ "node": ">=12"
107
+ }
108
+ },
109
+ "node_modules/@esbuild/darwin-arm64": {
110
+ "version": "0.19.12",
111
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
112
+ "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
113
+ "cpu": [
114
+ "arm64"
115
+ ],
116
+ "dev": true,
117
+ "optional": true,
118
+ "os": [
119
+ "darwin"
120
+ ],
121
+ "engines": {
122
+ "node": ">=12"
123
+ }
124
+ },
125
+ "node_modules/@esbuild/darwin-x64": {
126
+ "version": "0.19.12",
127
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
128
+ "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
129
+ "cpu": [
130
+ "x64"
131
+ ],
132
+ "dev": true,
133
+ "optional": true,
134
+ "os": [
135
+ "darwin"
136
+ ],
137
+ "engines": {
138
+ "node": ">=12"
139
+ }
140
+ },
141
+ "node_modules/@esbuild/freebsd-arm64": {
142
+ "version": "0.19.12",
143
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
144
+ "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
145
+ "cpu": [
146
+ "arm64"
147
+ ],
148
+ "dev": true,
149
+ "optional": true,
150
+ "os": [
151
+ "freebsd"
152
+ ],
153
+ "engines": {
154
+ "node": ">=12"
155
+ }
156
+ },
157
+ "node_modules/@esbuild/freebsd-x64": {
158
+ "version": "0.19.12",
159
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
160
+ "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
161
+ "cpu": [
162
+ "x64"
163
+ ],
164
+ "dev": true,
165
+ "optional": true,
166
+ "os": [
167
+ "freebsd"
168
+ ],
169
+ "engines": {
170
+ "node": ">=12"
171
+ }
172
+ },
173
+ "node_modules/@esbuild/linux-arm": {
174
+ "version": "0.19.12",
175
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
176
+ "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
177
+ "cpu": [
178
+ "arm"
179
+ ],
180
+ "dev": true,
181
+ "optional": true,
182
+ "os": [
183
+ "linux"
184
+ ],
185
+ "engines": {
186
+ "node": ">=12"
187
+ }
188
+ },
189
+ "node_modules/@esbuild/linux-arm64": {
190
+ "version": "0.19.12",
191
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
192
+ "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
193
+ "cpu": [
194
+ "arm64"
195
+ ],
196
+ "dev": true,
197
+ "optional": true,
198
+ "os": [
199
+ "linux"
200
+ ],
201
+ "engines": {
202
+ "node": ">=12"
203
+ }
204
+ },
205
+ "node_modules/@esbuild/linux-ia32": {
206
+ "version": "0.19.12",
207
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
208
+ "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
209
+ "cpu": [
210
+ "ia32"
211
+ ],
212
+ "dev": true,
213
+ "optional": true,
214
+ "os": [
215
+ "linux"
216
+ ],
217
+ "engines": {
218
+ "node": ">=12"
219
+ }
220
+ },
221
+ "node_modules/@esbuild/linux-loong64": {
222
+ "version": "0.19.12",
223
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
224
+ "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
225
+ "cpu": [
226
+ "loong64"
227
+ ],
228
+ "dev": true,
229
+ "optional": true,
230
+ "os": [
231
+ "linux"
232
+ ],
233
+ "engines": {
234
+ "node": ">=12"
235
+ }
236
+ },
237
+ "node_modules/@esbuild/linux-mips64el": {
238
+ "version": "0.19.12",
239
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
240
+ "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
241
+ "cpu": [
242
+ "mips64el"
243
+ ],
244
+ "dev": true,
245
+ "optional": true,
246
+ "os": [
247
+ "linux"
248
+ ],
249
+ "engines": {
250
+ "node": ">=12"
251
+ }
252
+ },
253
+ "node_modules/@esbuild/linux-ppc64": {
254
+ "version": "0.19.12",
255
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
256
+ "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
257
+ "cpu": [
258
+ "ppc64"
259
+ ],
260
+ "dev": true,
261
+ "optional": true,
262
+ "os": [
263
+ "linux"
264
+ ],
265
+ "engines": {
266
+ "node": ">=12"
267
+ }
268
+ },
269
+ "node_modules/@esbuild/linux-riscv64": {
270
+ "version": "0.19.12",
271
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
272
+ "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
273
+ "cpu": [
274
+ "riscv64"
275
+ ],
276
+ "dev": true,
277
+ "optional": true,
278
+ "os": [
279
+ "linux"
280
+ ],
281
+ "engines": {
282
+ "node": ">=12"
283
+ }
284
+ },
285
+ "node_modules/@esbuild/linux-s390x": {
286
+ "version": "0.19.12",
287
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
288
+ "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
289
+ "cpu": [
290
+ "s390x"
291
+ ],
292
+ "dev": true,
293
+ "optional": true,
294
+ "os": [
295
+ "linux"
296
+ ],
297
+ "engines": {
298
+ "node": ">=12"
299
+ }
300
+ },
301
+ "node_modules/@esbuild/linux-x64": {
302
+ "version": "0.19.12",
303
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
304
+ "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
305
+ "cpu": [
306
+ "x64"
307
+ ],
308
+ "dev": true,
309
+ "optional": true,
310
+ "os": [
311
+ "linux"
312
+ ],
313
+ "engines": {
314
+ "node": ">=12"
315
+ }
316
+ },
317
+ "node_modules/@esbuild/netbsd-x64": {
318
+ "version": "0.19.12",
319
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
320
+ "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
321
+ "cpu": [
322
+ "x64"
323
+ ],
324
+ "dev": true,
325
+ "optional": true,
326
+ "os": [
327
+ "netbsd"
328
+ ],
329
+ "engines": {
330
+ "node": ">=12"
331
+ }
332
+ },
333
+ "node_modules/@esbuild/openbsd-x64": {
334
+ "version": "0.19.12",
335
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
336
+ "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
337
+ "cpu": [
338
+ "x64"
339
+ ],
340
+ "dev": true,
341
+ "optional": true,
342
+ "os": [
343
+ "openbsd"
344
+ ],
345
+ "engines": {
346
+ "node": ">=12"
347
+ }
348
+ },
349
+ "node_modules/@esbuild/sunos-x64": {
350
+ "version": "0.19.12",
351
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
352
+ "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
353
+ "cpu": [
354
+ "x64"
355
+ ],
356
+ "dev": true,
357
+ "optional": true,
358
+ "os": [
359
+ "sunos"
360
+ ],
361
+ "engines": {
362
+ "node": ">=12"
363
+ }
364
+ },
365
+ "node_modules/@esbuild/win32-arm64": {
366
+ "version": "0.19.12",
367
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
368
+ "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
369
+ "cpu": [
370
+ "arm64"
371
+ ],
372
+ "dev": true,
373
+ "optional": true,
374
+ "os": [
375
+ "win32"
376
+ ],
377
+ "engines": {
378
+ "node": ">=12"
379
+ }
380
+ },
381
+ "node_modules/@esbuild/win32-ia32": {
382
+ "version": "0.19.12",
383
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
384
+ "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
385
+ "cpu": [
386
+ "ia32"
387
+ ],
388
+ "dev": true,
389
+ "optional": true,
390
+ "os": [
391
+ "win32"
392
+ ],
393
+ "engines": {
394
+ "node": ">=12"
395
+ }
396
+ },
397
+ "node_modules/@esbuild/win32-x64": {
398
+ "version": "0.19.12",
399
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
400
+ "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
401
+ "cpu": [
402
+ "x64"
403
+ ],
404
+ "dev": true,
405
+ "optional": true,
406
+ "os": [
407
+ "win32"
408
+ ],
409
+ "engines": {
410
+ "node": ">=12"
411
+ }
412
+ },
413
+ "node_modules/@isaacs/cliui": {
414
+ "version": "8.0.2",
415
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
416
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
417
+ "dev": true,
418
+ "dependencies": {
419
+ "string-width": "^5.1.2",
420
+ "string-width-cjs": "npm:string-width@^4.2.0",
421
+ "strip-ansi": "^7.0.1",
422
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
423
+ "wrap-ansi": "^8.1.0",
424
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
425
+ },
426
+ "engines": {
427
+ "node": ">=12"
428
+ }
429
+ },
430
+ "node_modules/@jridgewell/gen-mapping": {
431
+ "version": "0.3.3",
432
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
433
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
434
+ "dev": true,
435
+ "dependencies": {
436
+ "@jridgewell/set-array": "^1.0.1",
437
+ "@jridgewell/sourcemap-codec": "^1.4.10",
438
+ "@jridgewell/trace-mapping": "^0.3.9"
439
+ },
440
+ "engines": {
441
+ "node": ">=6.0.0"
442
+ }
443
+ },
444
+ "node_modules/@jridgewell/resolve-uri": {
445
+ "version": "3.1.2",
446
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
447
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
448
+ "dev": true,
449
+ "engines": {
450
+ "node": ">=6.0.0"
451
+ }
452
+ },
453
+ "node_modules/@jridgewell/set-array": {
454
+ "version": "1.1.2",
455
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
456
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
457
+ "dev": true,
458
+ "engines": {
459
+ "node": ">=6.0.0"
460
+ }
461
+ },
462
+ "node_modules/@jridgewell/sourcemap-codec": {
463
+ "version": "1.4.15",
464
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
465
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
466
+ "dev": true
467
+ },
468
+ "node_modules/@jridgewell/trace-mapping": {
469
+ "version": "0.3.22",
470
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
471
+ "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
472
+ "dev": true,
473
+ "dependencies": {
474
+ "@jridgewell/resolve-uri": "^3.1.0",
475
+ "@jridgewell/sourcemap-codec": "^1.4.14"
476
+ }
477
+ },
478
+ "node_modules/@nodelib/fs.scandir": {
479
+ "version": "2.1.5",
480
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
481
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
482
+ "dev": true,
483
+ "dependencies": {
484
+ "@nodelib/fs.stat": "2.0.5",
485
+ "run-parallel": "^1.1.9"
486
+ },
487
+ "engines": {
488
+ "node": ">= 8"
489
+ }
490
+ },
491
+ "node_modules/@nodelib/fs.stat": {
492
+ "version": "2.0.5",
493
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
494
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
495
+ "dev": true,
496
+ "engines": {
497
+ "node": ">= 8"
498
+ }
499
+ },
500
+ "node_modules/@nodelib/fs.walk": {
501
+ "version": "1.2.8",
502
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
503
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
504
+ "dev": true,
505
+ "dependencies": {
506
+ "@nodelib/fs.scandir": "2.1.5",
507
+ "fastq": "^1.6.0"
508
+ },
509
+ "engines": {
510
+ "node": ">= 8"
511
+ }
512
+ },
513
+ "node_modules/@pkgjs/parseargs": {
514
+ "version": "0.11.0",
515
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
516
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
517
+ "dev": true,
518
+ "optional": true,
519
+ "engines": {
520
+ "node": ">=14"
521
+ }
522
+ },
523
+ "node_modules/@rollup/rollup-android-arm-eabi": {
524
+ "version": "4.12.0",
525
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz",
526
+ "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==",
527
+ "cpu": [
528
+ "arm"
529
+ ],
530
+ "dev": true,
531
+ "optional": true,
532
+ "os": [
533
+ "android"
534
+ ]
535
+ },
536
+ "node_modules/@rollup/rollup-android-arm64": {
537
+ "version": "4.12.0",
538
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz",
539
+ "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==",
540
+ "cpu": [
541
+ "arm64"
542
+ ],
543
+ "dev": true,
544
+ "optional": true,
545
+ "os": [
546
+ "android"
547
+ ]
548
+ },
549
+ "node_modules/@rollup/rollup-darwin-arm64": {
550
+ "version": "4.12.0",
551
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz",
552
+ "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==",
553
+ "cpu": [
554
+ "arm64"
555
+ ],
556
+ "dev": true,
557
+ "optional": true,
558
+ "os": [
559
+ "darwin"
560
+ ]
561
+ },
562
+ "node_modules/@rollup/rollup-darwin-x64": {
563
+ "version": "4.12.0",
564
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz",
565
+ "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==",
566
+ "cpu": [
567
+ "x64"
568
+ ],
569
+ "dev": true,
570
+ "optional": true,
571
+ "os": [
572
+ "darwin"
573
+ ]
574
+ },
575
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
576
+ "version": "4.12.0",
577
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz",
578
+ "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==",
579
+ "cpu": [
580
+ "arm"
581
+ ],
582
+ "dev": true,
583
+ "optional": true,
584
+ "os": [
585
+ "linux"
586
+ ]
587
+ },
588
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
589
+ "version": "4.12.0",
590
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz",
591
+ "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==",
592
+ "cpu": [
593
+ "arm64"
594
+ ],
595
+ "dev": true,
596
+ "optional": true,
597
+ "os": [
598
+ "linux"
599
+ ]
600
+ },
601
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
602
+ "version": "4.12.0",
603
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz",
604
+ "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==",
605
+ "cpu": [
606
+ "arm64"
607
+ ],
608
+ "dev": true,
609
+ "optional": true,
610
+ "os": [
611
+ "linux"
612
+ ]
613
+ },
614
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
615
+ "version": "4.12.0",
616
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz",
617
+ "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==",
618
+ "cpu": [
619
+ "riscv64"
620
+ ],
621
+ "dev": true,
622
+ "optional": true,
623
+ "os": [
624
+ "linux"
625
+ ]
626
+ },
627
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
628
+ "version": "4.12.0",
629
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz",
630
+ "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==",
631
+ "cpu": [
632
+ "x64"
633
+ ],
634
+ "dev": true,
635
+ "optional": true,
636
+ "os": [
637
+ "linux"
638
+ ]
639
+ },
640
+ "node_modules/@rollup/rollup-linux-x64-musl": {
641
+ "version": "4.12.0",
642
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz",
643
+ "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==",
644
+ "cpu": [
645
+ "x64"
646
+ ],
647
+ "dev": true,
648
+ "optional": true,
649
+ "os": [
650
+ "linux"
651
+ ]
652
+ },
653
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
654
+ "version": "4.12.0",
655
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz",
656
+ "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==",
657
+ "cpu": [
658
+ "arm64"
659
+ ],
660
+ "dev": true,
661
+ "optional": true,
662
+ "os": [
663
+ "win32"
664
+ ]
665
+ },
666
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
667
+ "version": "4.12.0",
668
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz",
669
+ "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==",
670
+ "cpu": [
671
+ "ia32"
672
+ ],
673
+ "dev": true,
674
+ "optional": true,
675
+ "os": [
676
+ "win32"
677
+ ]
678
+ },
679
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
680
+ "version": "4.12.0",
681
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz",
682
+ "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==",
683
+ "cpu": [
684
+ "x64"
685
+ ],
686
+ "dev": true,
687
+ "optional": true,
688
+ "os": [
689
+ "win32"
690
+ ]
691
+ },
692
+ "node_modules/@sveltejs/vite-plugin-svelte": {
693
+ "version": "3.0.2",
694
+ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.2.tgz",
695
+ "integrity": "sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==",
696
+ "dev": true,
697
+ "dependencies": {
698
+ "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0",
699
+ "debug": "^4.3.4",
700
+ "deepmerge": "^4.3.1",
701
+ "kleur": "^4.1.5",
702
+ "magic-string": "^0.30.5",
703
+ "svelte-hmr": "^0.15.3",
704
+ "vitefu": "^0.2.5"
705
+ },
706
+ "engines": {
707
+ "node": "^18.0.0 || >=20"
708
+ },
709
+ "peerDependencies": {
710
+ "svelte": "^4.0.0 || ^5.0.0-next.0",
711
+ "vite": "^5.0.0"
712
+ }
713
+ },
714
+ "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
715
+ "version": "2.0.0",
716
+ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz",
717
+ "integrity": "sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==",
718
+ "dev": true,
719
+ "dependencies": {
720
+ "debug": "^4.3.4"
721
+ },
722
+ "engines": {
723
+ "node": "^18.0.0 || >=20"
724
+ },
725
+ "peerDependencies": {
726
+ "@sveltejs/vite-plugin-svelte": "^3.0.0",
727
+ "svelte": "^4.0.0 || ^5.0.0-next.0",
728
+ "vite": "^5.0.0"
729
+ }
730
+ },
731
+ "node_modules/@tailwindcss/typography": {
732
+ "version": "0.5.10",
733
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
734
+ "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
735
+ "dev": true,
736
+ "dependencies": {
737
+ "lodash.castarray": "^4.4.0",
738
+ "lodash.isplainobject": "^4.0.6",
739
+ "lodash.merge": "^4.6.2",
740
+ "postcss-selector-parser": "6.0.10"
741
+ },
742
+ "peerDependencies": {
743
+ "tailwindcss": ">=3.0.0 || insiders"
744
+ }
745
+ },
746
+ "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
747
+ "version": "6.0.10",
748
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
749
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
750
+ "dev": true,
751
+ "dependencies": {
752
+ "cssesc": "^3.0.0",
753
+ "util-deprecate": "^1.0.2"
754
+ },
755
+ "engines": {
756
+ "node": ">=4"
757
+ }
758
+ },
759
+ "node_modules/@types/estree": {
760
+ "version": "1.0.5",
761
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
762
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
763
+ "dev": true
764
+ },
765
+ "node_modules/acorn": {
766
+ "version": "8.11.3",
767
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
768
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
769
+ "dev": true,
770
+ "bin": {
771
+ "acorn": "bin/acorn"
772
+ },
773
+ "engines": {
774
+ "node": ">=0.4.0"
775
+ }
776
+ },
777
+ "node_modules/ansi-regex": {
778
+ "version": "6.0.1",
779
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
780
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
781
+ "dev": true,
782
+ "engines": {
783
+ "node": ">=12"
784
+ },
785
+ "funding": {
786
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
787
+ }
788
+ },
789
+ "node_modules/ansi-styles": {
790
+ "version": "6.2.1",
791
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
792
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
793
+ "dev": true,
794
+ "engines": {
795
+ "node": ">=12"
796
+ },
797
+ "funding": {
798
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
799
+ }
800
+ },
801
+ "node_modules/any-promise": {
802
+ "version": "1.3.0",
803
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
804
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
805
+ "dev": true
806
+ },
807
+ "node_modules/anymatch": {
808
+ "version": "3.1.3",
809
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
810
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
811
+ "dev": true,
812
+ "dependencies": {
813
+ "normalize-path": "^3.0.0",
814
+ "picomatch": "^2.0.4"
815
+ },
816
+ "engines": {
817
+ "node": ">= 8"
818
+ }
819
+ },
820
+ "node_modules/arg": {
821
+ "version": "5.0.2",
822
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
823
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
824
+ "dev": true
825
+ },
826
+ "node_modules/aria-query": {
827
+ "version": "5.3.0",
828
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
829
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
830
+ "dev": true,
831
+ "dependencies": {
832
+ "dequal": "^2.0.3"
833
+ }
834
+ },
835
+ "node_modules/autoprefixer": {
836
+ "version": "10.4.17",
837
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz",
838
+ "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==",
839
+ "dev": true,
840
+ "funding": [
841
+ {
842
+ "type": "opencollective",
843
+ "url": "https://opencollective.com/postcss/"
844
+ },
845
+ {
846
+ "type": "tidelift",
847
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
848
+ },
849
+ {
850
+ "type": "github",
851
+ "url": "https://github.com/sponsors/ai"
852
+ }
853
+ ],
854
+ "dependencies": {
855
+ "browserslist": "^4.22.2",
856
+ "caniuse-lite": "^1.0.30001578",
857
+ "fraction.js": "^4.3.7",
858
+ "normalize-range": "^0.1.2",
859
+ "picocolors": "^1.0.0",
860
+ "postcss-value-parser": "^4.2.0"
861
+ },
862
+ "bin": {
863
+ "autoprefixer": "bin/autoprefixer"
864
+ },
865
+ "engines": {
866
+ "node": "^10 || ^12 || >=14"
867
+ },
868
+ "peerDependencies": {
869
+ "postcss": "^8.1.0"
870
+ }
871
+ },
872
+ "node_modules/axobject-query": {
873
+ "version": "4.0.0",
874
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
875
+ "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
876
+ "dev": true,
877
+ "dependencies": {
878
+ "dequal": "^2.0.3"
879
+ }
880
+ },
881
+ "node_modules/balanced-match": {
882
+ "version": "1.0.2",
883
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
884
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
885
+ "dev": true
886
+ },
887
+ "node_modules/binary-extensions": {
888
+ "version": "2.2.0",
889
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
890
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
891
+ "dev": true,
892
+ "engines": {
893
+ "node": ">=8"
894
+ }
895
+ },
896
+ "node_modules/brace-expansion": {
897
+ "version": "2.0.1",
898
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
899
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
900
+ "dev": true,
901
+ "dependencies": {
902
+ "balanced-match": "^1.0.0"
903
+ }
904
+ },
905
+ "node_modules/braces": {
906
+ "version": "3.0.2",
907
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
908
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
909
+ "dev": true,
910
+ "dependencies": {
911
+ "fill-range": "^7.0.1"
912
+ },
913
+ "engines": {
914
+ "node": ">=8"
915
+ }
916
+ },
917
+ "node_modules/browserslist": {
918
+ "version": "4.23.0",
919
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
920
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
921
+ "dev": true,
922
+ "funding": [
923
+ {
924
+ "type": "opencollective",
925
+ "url": "https://opencollective.com/browserslist"
926
+ },
927
+ {
928
+ "type": "tidelift",
929
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
930
+ },
931
+ {
932
+ "type": "github",
933
+ "url": "https://github.com/sponsors/ai"
934
+ }
935
+ ],
936
+ "dependencies": {
937
+ "caniuse-lite": "^1.0.30001587",
938
+ "electron-to-chromium": "^1.4.668",
939
+ "node-releases": "^2.0.14",
940
+ "update-browserslist-db": "^1.0.13"
941
+ },
942
+ "bin": {
943
+ "browserslist": "cli.js"
944
+ },
945
+ "engines": {
946
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
947
+ }
948
+ },
949
+ "node_modules/camelcase-css": {
950
+ "version": "2.0.1",
951
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
952
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
953
+ "dev": true,
954
+ "engines": {
955
+ "node": ">= 6"
956
+ }
957
+ },
958
+ "node_modules/caniuse-lite": {
959
+ "version": "1.0.30001588",
960
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz",
961
+ "integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==",
962
+ "dev": true,
963
+ "funding": [
964
+ {
965
+ "type": "opencollective",
966
+ "url": "https://opencollective.com/browserslist"
967
+ },
968
+ {
969
+ "type": "tidelift",
970
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
971
+ },
972
+ {
973
+ "type": "github",
974
+ "url": "https://github.com/sponsors/ai"
975
+ }
976
+ ]
977
+ },
978
+ "node_modules/chokidar": {
979
+ "version": "3.6.0",
980
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
981
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
982
+ "dev": true,
983
+ "dependencies": {
984
+ "anymatch": "~3.1.2",
985
+ "braces": "~3.0.2",
986
+ "glob-parent": "~5.1.2",
987
+ "is-binary-path": "~2.1.0",
988
+ "is-glob": "~4.0.1",
989
+ "normalize-path": "~3.0.0",
990
+ "readdirp": "~3.6.0"
991
+ },
992
+ "engines": {
993
+ "node": ">= 8.10.0"
994
+ },
995
+ "funding": {
996
+ "url": "https://paulmillr.com/funding/"
997
+ },
998
+ "optionalDependencies": {
999
+ "fsevents": "~2.3.2"
1000
+ }
1001
+ },
1002
+ "node_modules/chokidar/node_modules/glob-parent": {
1003
+ "version": "5.1.2",
1004
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1005
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1006
+ "dev": true,
1007
+ "dependencies": {
1008
+ "is-glob": "^4.0.1"
1009
+ },
1010
+ "engines": {
1011
+ "node": ">= 6"
1012
+ }
1013
+ },
1014
+ "node_modules/code-red": {
1015
+ "version": "1.0.4",
1016
+ "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
1017
+ "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
1018
+ "dev": true,
1019
+ "dependencies": {
1020
+ "@jridgewell/sourcemap-codec": "^1.4.15",
1021
+ "@types/estree": "^1.0.1",
1022
+ "acorn": "^8.10.0",
1023
+ "estree-walker": "^3.0.3",
1024
+ "periscopic": "^3.1.0"
1025
+ }
1026
+ },
1027
+ "node_modules/color-convert": {
1028
+ "version": "2.0.1",
1029
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1030
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1031
+ "dev": true,
1032
+ "dependencies": {
1033
+ "color-name": "~1.1.4"
1034
+ },
1035
+ "engines": {
1036
+ "node": ">=7.0.0"
1037
+ }
1038
+ },
1039
+ "node_modules/color-name": {
1040
+ "version": "1.1.4",
1041
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1042
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1043
+ "dev": true
1044
+ },
1045
+ "node_modules/commander": {
1046
+ "version": "4.1.1",
1047
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1048
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1049
+ "dev": true,
1050
+ "engines": {
1051
+ "node": ">= 6"
1052
+ }
1053
+ },
1054
+ "node_modules/cross-spawn": {
1055
+ "version": "7.0.3",
1056
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1057
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1058
+ "dev": true,
1059
+ "dependencies": {
1060
+ "path-key": "^3.1.0",
1061
+ "shebang-command": "^2.0.0",
1062
+ "which": "^2.0.1"
1063
+ },
1064
+ "engines": {
1065
+ "node": ">= 8"
1066
+ }
1067
+ },
1068
+ "node_modules/css-tree": {
1069
+ "version": "2.3.1",
1070
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
1071
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
1072
+ "dev": true,
1073
+ "dependencies": {
1074
+ "mdn-data": "2.0.30",
1075
+ "source-map-js": "^1.0.1"
1076
+ },
1077
+ "engines": {
1078
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
1079
+ }
1080
+ },
1081
+ "node_modules/cssesc": {
1082
+ "version": "3.0.0",
1083
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1084
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1085
+ "dev": true,
1086
+ "bin": {
1087
+ "cssesc": "bin/cssesc"
1088
+ },
1089
+ "engines": {
1090
+ "node": ">=4"
1091
+ }
1092
+ },
1093
+ "node_modules/debug": {
1094
+ "version": "4.3.4",
1095
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1096
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1097
+ "dev": true,
1098
+ "dependencies": {
1099
+ "ms": "2.1.2"
1100
+ },
1101
+ "engines": {
1102
+ "node": ">=6.0"
1103
+ },
1104
+ "peerDependenciesMeta": {
1105
+ "supports-color": {
1106
+ "optional": true
1107
+ }
1108
+ }
1109
+ },
1110
+ "node_modules/deepmerge": {
1111
+ "version": "4.3.1",
1112
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
1113
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
1114
+ "dev": true,
1115
+ "engines": {
1116
+ "node": ">=0.10.0"
1117
+ }
1118
+ },
1119
+ "node_modules/dequal": {
1120
+ "version": "2.0.3",
1121
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
1122
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
1123
+ "dev": true,
1124
+ "engines": {
1125
+ "node": ">=6"
1126
+ }
1127
+ },
1128
+ "node_modules/didyoumean": {
1129
+ "version": "1.2.2",
1130
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1131
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1132
+ "dev": true
1133
+ },
1134
+ "node_modules/dlv": {
1135
+ "version": "1.1.3",
1136
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1137
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1138
+ "dev": true
1139
+ },
1140
+ "node_modules/eastasianwidth": {
1141
+ "version": "0.2.0",
1142
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1143
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1144
+ "dev": true
1145
+ },
1146
+ "node_modules/electron-to-chromium": {
1147
+ "version": "1.4.675",
1148
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.675.tgz",
1149
+ "integrity": "sha512-+1u3F/XPNIdUwv8i1lDxHAxCvNNU0QIqgb1Ycn+Jnng8ITzWSvUqixRSM7NOazJuwhf65IV17f/VbKj8DmL26A==",
1150
+ "dev": true
1151
+ },
1152
+ "node_modules/emoji-regex": {
1153
+ "version": "9.2.2",
1154
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1155
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1156
+ "dev": true
1157
+ },
1158
+ "node_modules/esbuild": {
1159
+ "version": "0.19.12",
1160
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
1161
+ "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
1162
+ "dev": true,
1163
+ "hasInstallScript": true,
1164
+ "bin": {
1165
+ "esbuild": "bin/esbuild"
1166
+ },
1167
+ "engines": {
1168
+ "node": ">=12"
1169
+ },
1170
+ "optionalDependencies": {
1171
+ "@esbuild/aix-ppc64": "0.19.12",
1172
+ "@esbuild/android-arm": "0.19.12",
1173
+ "@esbuild/android-arm64": "0.19.12",
1174
+ "@esbuild/android-x64": "0.19.12",
1175
+ "@esbuild/darwin-arm64": "0.19.12",
1176
+ "@esbuild/darwin-x64": "0.19.12",
1177
+ "@esbuild/freebsd-arm64": "0.19.12",
1178
+ "@esbuild/freebsd-x64": "0.19.12",
1179
+ "@esbuild/linux-arm": "0.19.12",
1180
+ "@esbuild/linux-arm64": "0.19.12",
1181
+ "@esbuild/linux-ia32": "0.19.12",
1182
+ "@esbuild/linux-loong64": "0.19.12",
1183
+ "@esbuild/linux-mips64el": "0.19.12",
1184
+ "@esbuild/linux-ppc64": "0.19.12",
1185
+ "@esbuild/linux-riscv64": "0.19.12",
1186
+ "@esbuild/linux-s390x": "0.19.12",
1187
+ "@esbuild/linux-x64": "0.19.12",
1188
+ "@esbuild/netbsd-x64": "0.19.12",
1189
+ "@esbuild/openbsd-x64": "0.19.12",
1190
+ "@esbuild/sunos-x64": "0.19.12",
1191
+ "@esbuild/win32-arm64": "0.19.12",
1192
+ "@esbuild/win32-ia32": "0.19.12",
1193
+ "@esbuild/win32-x64": "0.19.12"
1194
+ }
1195
+ },
1196
+ "node_modules/escalade": {
1197
+ "version": "3.1.2",
1198
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
1199
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
1200
+ "dev": true,
1201
+ "engines": {
1202
+ "node": ">=6"
1203
+ }
1204
+ },
1205
+ "node_modules/estree-walker": {
1206
+ "version": "3.0.3",
1207
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
1208
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
1209
+ "dev": true,
1210
+ "dependencies": {
1211
+ "@types/estree": "^1.0.0"
1212
+ }
1213
+ },
1214
+ "node_modules/fast-glob": {
1215
+ "version": "3.3.2",
1216
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
1217
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
1218
+ "dev": true,
1219
+ "dependencies": {
1220
+ "@nodelib/fs.stat": "^2.0.2",
1221
+ "@nodelib/fs.walk": "^1.2.3",
1222
+ "glob-parent": "^5.1.2",
1223
+ "merge2": "^1.3.0",
1224
+ "micromatch": "^4.0.4"
1225
+ },
1226
+ "engines": {
1227
+ "node": ">=8.6.0"
1228
+ }
1229
+ },
1230
+ "node_modules/fast-glob/node_modules/glob-parent": {
1231
+ "version": "5.1.2",
1232
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1233
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1234
+ "dev": true,
1235
+ "dependencies": {
1236
+ "is-glob": "^4.0.1"
1237
+ },
1238
+ "engines": {
1239
+ "node": ">= 6"
1240
+ }
1241
+ },
1242
+ "node_modules/fastq": {
1243
+ "version": "1.17.1",
1244
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
1245
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
1246
+ "dev": true,
1247
+ "dependencies": {
1248
+ "reusify": "^1.0.4"
1249
+ }
1250
+ },
1251
+ "node_modules/fill-range": {
1252
+ "version": "7.0.1",
1253
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1254
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1255
+ "dev": true,
1256
+ "dependencies": {
1257
+ "to-regex-range": "^5.0.1"
1258
+ },
1259
+ "engines": {
1260
+ "node": ">=8"
1261
+ }
1262
+ },
1263
+ "node_modules/foreground-child": {
1264
+ "version": "3.1.1",
1265
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
1266
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
1267
+ "dev": true,
1268
+ "dependencies": {
1269
+ "cross-spawn": "^7.0.0",
1270
+ "signal-exit": "^4.0.1"
1271
+ },
1272
+ "engines": {
1273
+ "node": ">=14"
1274
+ },
1275
+ "funding": {
1276
+ "url": "https://github.com/sponsors/isaacs"
1277
+ }
1278
+ },
1279
+ "node_modules/fraction.js": {
1280
+ "version": "4.3.7",
1281
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
1282
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
1283
+ "dev": true,
1284
+ "engines": {
1285
+ "node": "*"
1286
+ },
1287
+ "funding": {
1288
+ "type": "patreon",
1289
+ "url": "https://github.com/sponsors/rawify"
1290
+ }
1291
+ },
1292
+ "node_modules/fsevents": {
1293
+ "version": "2.3.3",
1294
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1295
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1296
+ "dev": true,
1297
+ "hasInstallScript": true,
1298
+ "optional": true,
1299
+ "os": [
1300
+ "darwin"
1301
+ ],
1302
+ "engines": {
1303
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1304
+ }
1305
+ },
1306
+ "node_modules/function-bind": {
1307
+ "version": "1.1.2",
1308
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1309
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1310
+ "dev": true,
1311
+ "funding": {
1312
+ "url": "https://github.com/sponsors/ljharb"
1313
+ }
1314
+ },
1315
+ "node_modules/glob": {
1316
+ "version": "10.3.10",
1317
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
1318
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
1319
+ "dev": true,
1320
+ "dependencies": {
1321
+ "foreground-child": "^3.1.0",
1322
+ "jackspeak": "^2.3.5",
1323
+ "minimatch": "^9.0.1",
1324
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
1325
+ "path-scurry": "^1.10.1"
1326
+ },
1327
+ "bin": {
1328
+ "glob": "dist/esm/bin.mjs"
1329
+ },
1330
+ "engines": {
1331
+ "node": ">=16 || 14 >=14.17"
1332
+ },
1333
+ "funding": {
1334
+ "url": "https://github.com/sponsors/isaacs"
1335
+ }
1336
+ },
1337
+ "node_modules/glob-parent": {
1338
+ "version": "6.0.2",
1339
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1340
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1341
+ "dev": true,
1342
+ "dependencies": {
1343
+ "is-glob": "^4.0.3"
1344
+ },
1345
+ "engines": {
1346
+ "node": ">=10.13.0"
1347
+ }
1348
+ },
1349
+ "node_modules/hasown": {
1350
+ "version": "2.0.1",
1351
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
1352
+ "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
1353
+ "dev": true,
1354
+ "dependencies": {
1355
+ "function-bind": "^1.1.2"
1356
+ },
1357
+ "engines": {
1358
+ "node": ">= 0.4"
1359
+ }
1360
+ },
1361
+ "node_modules/is-binary-path": {
1362
+ "version": "2.1.0",
1363
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1364
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1365
+ "dev": true,
1366
+ "dependencies": {
1367
+ "binary-extensions": "^2.0.0"
1368
+ },
1369
+ "engines": {
1370
+ "node": ">=8"
1371
+ }
1372
+ },
1373
+ "node_modules/is-core-module": {
1374
+ "version": "2.13.1",
1375
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
1376
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
1377
+ "dev": true,
1378
+ "dependencies": {
1379
+ "hasown": "^2.0.0"
1380
+ },
1381
+ "funding": {
1382
+ "url": "https://github.com/sponsors/ljharb"
1383
+ }
1384
+ },
1385
+ "node_modules/is-extglob": {
1386
+ "version": "2.1.1",
1387
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1388
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1389
+ "dev": true,
1390
+ "engines": {
1391
+ "node": ">=0.10.0"
1392
+ }
1393
+ },
1394
+ "node_modules/is-fullwidth-code-point": {
1395
+ "version": "3.0.0",
1396
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1397
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1398
+ "dev": true,
1399
+ "engines": {
1400
+ "node": ">=8"
1401
+ }
1402
+ },
1403
+ "node_modules/is-glob": {
1404
+ "version": "4.0.3",
1405
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1406
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1407
+ "dev": true,
1408
+ "dependencies": {
1409
+ "is-extglob": "^2.1.1"
1410
+ },
1411
+ "engines": {
1412
+ "node": ">=0.10.0"
1413
+ }
1414
+ },
1415
+ "node_modules/is-number": {
1416
+ "version": "7.0.0",
1417
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1418
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1419
+ "dev": true,
1420
+ "engines": {
1421
+ "node": ">=0.12.0"
1422
+ }
1423
+ },
1424
+ "node_modules/is-reference": {
1425
+ "version": "3.0.2",
1426
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
1427
+ "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
1428
+ "dev": true,
1429
+ "dependencies": {
1430
+ "@types/estree": "*"
1431
+ }
1432
+ },
1433
+ "node_modules/isexe": {
1434
+ "version": "2.0.0",
1435
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1436
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1437
+ "dev": true
1438
+ },
1439
+ "node_modules/jackspeak": {
1440
+ "version": "2.3.6",
1441
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
1442
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
1443
+ "dev": true,
1444
+ "dependencies": {
1445
+ "@isaacs/cliui": "^8.0.2"
1446
+ },
1447
+ "engines": {
1448
+ "node": ">=14"
1449
+ },
1450
+ "funding": {
1451
+ "url": "https://github.com/sponsors/isaacs"
1452
+ },
1453
+ "optionalDependencies": {
1454
+ "@pkgjs/parseargs": "^0.11.0"
1455
+ }
1456
+ },
1457
+ "node_modules/jiti": {
1458
+ "version": "1.21.0",
1459
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
1460
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
1461
+ "dev": true,
1462
+ "bin": {
1463
+ "jiti": "bin/jiti.js"
1464
+ }
1465
+ },
1466
+ "node_modules/kleur": {
1467
+ "version": "4.1.5",
1468
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
1469
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
1470
+ "dev": true,
1471
+ "engines": {
1472
+ "node": ">=6"
1473
+ }
1474
+ },
1475
+ "node_modules/lilconfig": {
1476
+ "version": "2.1.0",
1477
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
1478
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
1479
+ "dev": true,
1480
+ "engines": {
1481
+ "node": ">=10"
1482
+ }
1483
+ },
1484
+ "node_modules/lines-and-columns": {
1485
+ "version": "1.2.4",
1486
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1487
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1488
+ "dev": true
1489
+ },
1490
+ "node_modules/locate-character": {
1491
+ "version": "3.0.0",
1492
+ "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
1493
+ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
1494
+ "dev": true
1495
+ },
1496
+ "node_modules/lodash.castarray": {
1497
+ "version": "4.4.0",
1498
+ "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
1499
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
1500
+ "dev": true
1501
+ },
1502
+ "node_modules/lodash.isplainobject": {
1503
+ "version": "4.0.6",
1504
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
1505
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
1506
+ "dev": true
1507
+ },
1508
+ "node_modules/lodash.merge": {
1509
+ "version": "4.6.2",
1510
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1511
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1512
+ "dev": true
1513
+ },
1514
+ "node_modules/lru-cache": {
1515
+ "version": "10.2.0",
1516
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
1517
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
1518
+ "dev": true,
1519
+ "engines": {
1520
+ "node": "14 || >=16.14"
1521
+ }
1522
+ },
1523
+ "node_modules/magic-string": {
1524
+ "version": "0.30.7",
1525
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
1526
+ "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
1527
+ "dev": true,
1528
+ "dependencies": {
1529
+ "@jridgewell/sourcemap-codec": "^1.4.15"
1530
+ },
1531
+ "engines": {
1532
+ "node": ">=12"
1533
+ }
1534
+ },
1535
+ "node_modules/mdn-data": {
1536
+ "version": "2.0.30",
1537
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
1538
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
1539
+ "dev": true
1540
+ },
1541
+ "node_modules/merge2": {
1542
+ "version": "1.4.1",
1543
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1544
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1545
+ "dev": true,
1546
+ "engines": {
1547
+ "node": ">= 8"
1548
+ }
1549
+ },
1550
+ "node_modules/micromatch": {
1551
+ "version": "4.0.5",
1552
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
1553
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
1554
+ "dev": true,
1555
+ "dependencies": {
1556
+ "braces": "^3.0.2",
1557
+ "picomatch": "^2.3.1"
1558
+ },
1559
+ "engines": {
1560
+ "node": ">=8.6"
1561
+ }
1562
+ },
1563
+ "node_modules/minimatch": {
1564
+ "version": "9.0.3",
1565
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
1566
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
1567
+ "dev": true,
1568
+ "dependencies": {
1569
+ "brace-expansion": "^2.0.1"
1570
+ },
1571
+ "engines": {
1572
+ "node": ">=16 || 14 >=14.17"
1573
+ },
1574
+ "funding": {
1575
+ "url": "https://github.com/sponsors/isaacs"
1576
+ }
1577
+ },
1578
+ "node_modules/minipass": {
1579
+ "version": "7.0.4",
1580
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
1581
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
1582
+ "dev": true,
1583
+ "engines": {
1584
+ "node": ">=16 || 14 >=14.17"
1585
+ }
1586
+ },
1587
+ "node_modules/ms": {
1588
+ "version": "2.1.2",
1589
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1590
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1591
+ "dev": true
1592
+ },
1593
+ "node_modules/mz": {
1594
+ "version": "2.7.0",
1595
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1596
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1597
+ "dev": true,
1598
+ "dependencies": {
1599
+ "any-promise": "^1.0.0",
1600
+ "object-assign": "^4.0.1",
1601
+ "thenify-all": "^1.0.0"
1602
+ }
1603
+ },
1604
+ "node_modules/nanoid": {
1605
+ "version": "3.3.7",
1606
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
1607
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
1608
+ "dev": true,
1609
+ "funding": [
1610
+ {
1611
+ "type": "github",
1612
+ "url": "https://github.com/sponsors/ai"
1613
+ }
1614
+ ],
1615
+ "bin": {
1616
+ "nanoid": "bin/nanoid.cjs"
1617
+ },
1618
+ "engines": {
1619
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1620
+ }
1621
+ },
1622
+ "node_modules/node-releases": {
1623
+ "version": "2.0.14",
1624
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
1625
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
1626
+ "dev": true
1627
+ },
1628
+ "node_modules/normalize-path": {
1629
+ "version": "3.0.0",
1630
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1631
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1632
+ "dev": true,
1633
+ "engines": {
1634
+ "node": ">=0.10.0"
1635
+ }
1636
+ },
1637
+ "node_modules/normalize-range": {
1638
+ "version": "0.1.2",
1639
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
1640
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
1641
+ "dev": true,
1642
+ "engines": {
1643
+ "node": ">=0.10.0"
1644
+ }
1645
+ },
1646
+ "node_modules/object-assign": {
1647
+ "version": "4.1.1",
1648
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1649
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1650
+ "dev": true,
1651
+ "engines": {
1652
+ "node": ">=0.10.0"
1653
+ }
1654
+ },
1655
+ "node_modules/object-hash": {
1656
+ "version": "3.0.0",
1657
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1658
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1659
+ "dev": true,
1660
+ "engines": {
1661
+ "node": ">= 6"
1662
+ }
1663
+ },
1664
+ "node_modules/path-key": {
1665
+ "version": "3.1.1",
1666
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1667
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1668
+ "dev": true,
1669
+ "engines": {
1670
+ "node": ">=8"
1671
+ }
1672
+ },
1673
+ "node_modules/path-parse": {
1674
+ "version": "1.0.7",
1675
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1676
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1677
+ "dev": true
1678
+ },
1679
+ "node_modules/path-scurry": {
1680
+ "version": "1.10.1",
1681
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
1682
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
1683
+ "dev": true,
1684
+ "dependencies": {
1685
+ "lru-cache": "^9.1.1 || ^10.0.0",
1686
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1687
+ },
1688
+ "engines": {
1689
+ "node": ">=16 || 14 >=14.17"
1690
+ },
1691
+ "funding": {
1692
+ "url": "https://github.com/sponsors/isaacs"
1693
+ }
1694
+ },
1695
+ "node_modules/periscopic": {
1696
+ "version": "3.1.0",
1697
+ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
1698
+ "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
1699
+ "dev": true,
1700
+ "dependencies": {
1701
+ "@types/estree": "^1.0.0",
1702
+ "estree-walker": "^3.0.0",
1703
+ "is-reference": "^3.0.0"
1704
+ }
1705
+ },
1706
+ "node_modules/picocolors": {
1707
+ "version": "1.0.0",
1708
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1709
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1710
+ "dev": true
1711
+ },
1712
+ "node_modules/picomatch": {
1713
+ "version": "2.3.1",
1714
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1715
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1716
+ "dev": true,
1717
+ "engines": {
1718
+ "node": ">=8.6"
1719
+ },
1720
+ "funding": {
1721
+ "url": "https://github.com/sponsors/jonschlinkert"
1722
+ }
1723
+ },
1724
+ "node_modules/pify": {
1725
+ "version": "2.3.0",
1726
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1727
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1728
+ "dev": true,
1729
+ "engines": {
1730
+ "node": ">=0.10.0"
1731
+ }
1732
+ },
1733
+ "node_modules/pirates": {
1734
+ "version": "4.0.6",
1735
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
1736
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
1737
+ "dev": true,
1738
+ "engines": {
1739
+ "node": ">= 6"
1740
+ }
1741
+ },
1742
+ "node_modules/postcss": {
1743
+ "version": "8.4.35",
1744
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
1745
+ "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
1746
+ "dev": true,
1747
+ "funding": [
1748
+ {
1749
+ "type": "opencollective",
1750
+ "url": "https://opencollective.com/postcss/"
1751
+ },
1752
+ {
1753
+ "type": "tidelift",
1754
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1755
+ },
1756
+ {
1757
+ "type": "github",
1758
+ "url": "https://github.com/sponsors/ai"
1759
+ }
1760
+ ],
1761
+ "dependencies": {
1762
+ "nanoid": "^3.3.7",
1763
+ "picocolors": "^1.0.0",
1764
+ "source-map-js": "^1.0.2"
1765
+ },
1766
+ "engines": {
1767
+ "node": "^10 || ^12 || >=14"
1768
+ }
1769
+ },
1770
+ "node_modules/postcss-import": {
1771
+ "version": "15.1.0",
1772
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
1773
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
1774
+ "dev": true,
1775
+ "dependencies": {
1776
+ "postcss-value-parser": "^4.0.0",
1777
+ "read-cache": "^1.0.0",
1778
+ "resolve": "^1.1.7"
1779
+ },
1780
+ "engines": {
1781
+ "node": ">=14.0.0"
1782
+ },
1783
+ "peerDependencies": {
1784
+ "postcss": "^8.0.0"
1785
+ }
1786
+ },
1787
+ "node_modules/postcss-js": {
1788
+ "version": "4.0.1",
1789
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
1790
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
1791
+ "dev": true,
1792
+ "dependencies": {
1793
+ "camelcase-css": "^2.0.1"
1794
+ },
1795
+ "engines": {
1796
+ "node": "^12 || ^14 || >= 16"
1797
+ },
1798
+ "funding": {
1799
+ "type": "opencollective",
1800
+ "url": "https://opencollective.com/postcss/"
1801
+ },
1802
+ "peerDependencies": {
1803
+ "postcss": "^8.4.21"
1804
+ }
1805
+ },
1806
+ "node_modules/postcss-load-config": {
1807
+ "version": "4.0.2",
1808
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
1809
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
1810
+ "dev": true,
1811
+ "funding": [
1812
+ {
1813
+ "type": "opencollective",
1814
+ "url": "https://opencollective.com/postcss/"
1815
+ },
1816
+ {
1817
+ "type": "github",
1818
+ "url": "https://github.com/sponsors/ai"
1819
+ }
1820
+ ],
1821
+ "dependencies": {
1822
+ "lilconfig": "^3.0.0",
1823
+ "yaml": "^2.3.4"
1824
+ },
1825
+ "engines": {
1826
+ "node": ">= 14"
1827
+ },
1828
+ "peerDependencies": {
1829
+ "postcss": ">=8.0.9",
1830
+ "ts-node": ">=9.0.0"
1831
+ },
1832
+ "peerDependenciesMeta": {
1833
+ "postcss": {
1834
+ "optional": true
1835
+ },
1836
+ "ts-node": {
1837
+ "optional": true
1838
+ }
1839
+ }
1840
+ },
1841
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
1842
+ "version": "3.1.1",
1843
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",
1844
+ "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==",
1845
+ "dev": true,
1846
+ "engines": {
1847
+ "node": ">=14"
1848
+ },
1849
+ "funding": {
1850
+ "url": "https://github.com/sponsors/antonk52"
1851
+ }
1852
+ },
1853
+ "node_modules/postcss-nested": {
1854
+ "version": "6.0.1",
1855
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
1856
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
1857
+ "dev": true,
1858
+ "dependencies": {
1859
+ "postcss-selector-parser": "^6.0.11"
1860
+ },
1861
+ "engines": {
1862
+ "node": ">=12.0"
1863
+ },
1864
+ "funding": {
1865
+ "type": "opencollective",
1866
+ "url": "https://opencollective.com/postcss/"
1867
+ },
1868
+ "peerDependencies": {
1869
+ "postcss": "^8.2.14"
1870
+ }
1871
+ },
1872
+ "node_modules/postcss-selector-parser": {
1873
+ "version": "6.0.15",
1874
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
1875
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
1876
+ "dev": true,
1877
+ "dependencies": {
1878
+ "cssesc": "^3.0.0",
1879
+ "util-deprecate": "^1.0.2"
1880
+ },
1881
+ "engines": {
1882
+ "node": ">=4"
1883
+ }
1884
+ },
1885
+ "node_modules/postcss-value-parser": {
1886
+ "version": "4.2.0",
1887
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
1888
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
1889
+ "dev": true
1890
+ },
1891
+ "node_modules/queue-microtask": {
1892
+ "version": "1.2.3",
1893
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1894
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1895
+ "dev": true,
1896
+ "funding": [
1897
+ {
1898
+ "type": "github",
1899
+ "url": "https://github.com/sponsors/feross"
1900
+ },
1901
+ {
1902
+ "type": "patreon",
1903
+ "url": "https://www.patreon.com/feross"
1904
+ },
1905
+ {
1906
+ "type": "consulting",
1907
+ "url": "https://feross.org/support"
1908
+ }
1909
+ ]
1910
+ },
1911
+ "node_modules/read-cache": {
1912
+ "version": "1.0.0",
1913
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
1914
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
1915
+ "dev": true,
1916
+ "dependencies": {
1917
+ "pify": "^2.3.0"
1918
+ }
1919
+ },
1920
+ "node_modules/readdirp": {
1921
+ "version": "3.6.0",
1922
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1923
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1924
+ "dev": true,
1925
+ "dependencies": {
1926
+ "picomatch": "^2.2.1"
1927
+ },
1928
+ "engines": {
1929
+ "node": ">=8.10.0"
1930
+ }
1931
+ },
1932
+ "node_modules/resolve": {
1933
+ "version": "1.22.8",
1934
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
1935
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
1936
+ "dev": true,
1937
+ "dependencies": {
1938
+ "is-core-module": "^2.13.0",
1939
+ "path-parse": "^1.0.7",
1940
+ "supports-preserve-symlinks-flag": "^1.0.0"
1941
+ },
1942
+ "bin": {
1943
+ "resolve": "bin/resolve"
1944
+ },
1945
+ "funding": {
1946
+ "url": "https://github.com/sponsors/ljharb"
1947
+ }
1948
+ },
1949
+ "node_modules/reusify": {
1950
+ "version": "1.0.4",
1951
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1952
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1953
+ "dev": true,
1954
+ "engines": {
1955
+ "iojs": ">=1.0.0",
1956
+ "node": ">=0.10.0"
1957
+ }
1958
+ },
1959
+ "node_modules/rollup": {
1960
+ "version": "4.12.0",
1961
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz",
1962
+ "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==",
1963
+ "dev": true,
1964
+ "dependencies": {
1965
+ "@types/estree": "1.0.5"
1966
+ },
1967
+ "bin": {
1968
+ "rollup": "dist/bin/rollup"
1969
+ },
1970
+ "engines": {
1971
+ "node": ">=18.0.0",
1972
+ "npm": ">=8.0.0"
1973
+ },
1974
+ "optionalDependencies": {
1975
+ "@rollup/rollup-android-arm-eabi": "4.12.0",
1976
+ "@rollup/rollup-android-arm64": "4.12.0",
1977
+ "@rollup/rollup-darwin-arm64": "4.12.0",
1978
+ "@rollup/rollup-darwin-x64": "4.12.0",
1979
+ "@rollup/rollup-linux-arm-gnueabihf": "4.12.0",
1980
+ "@rollup/rollup-linux-arm64-gnu": "4.12.0",
1981
+ "@rollup/rollup-linux-arm64-musl": "4.12.0",
1982
+ "@rollup/rollup-linux-riscv64-gnu": "4.12.0",
1983
+ "@rollup/rollup-linux-x64-gnu": "4.12.0",
1984
+ "@rollup/rollup-linux-x64-musl": "4.12.0",
1985
+ "@rollup/rollup-win32-arm64-msvc": "4.12.0",
1986
+ "@rollup/rollup-win32-ia32-msvc": "4.12.0",
1987
+ "@rollup/rollup-win32-x64-msvc": "4.12.0",
1988
+ "fsevents": "~2.3.2"
1989
+ }
1990
+ },
1991
+ "node_modules/run-parallel": {
1992
+ "version": "1.2.0",
1993
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1994
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1995
+ "dev": true,
1996
+ "funding": [
1997
+ {
1998
+ "type": "github",
1999
+ "url": "https://github.com/sponsors/feross"
2000
+ },
2001
+ {
2002
+ "type": "patreon",
2003
+ "url": "https://www.patreon.com/feross"
2004
+ },
2005
+ {
2006
+ "type": "consulting",
2007
+ "url": "https://feross.org/support"
2008
+ }
2009
+ ],
2010
+ "dependencies": {
2011
+ "queue-microtask": "^1.2.2"
2012
+ }
2013
+ },
2014
+ "node_modules/shebang-command": {
2015
+ "version": "2.0.0",
2016
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2017
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2018
+ "dev": true,
2019
+ "dependencies": {
2020
+ "shebang-regex": "^3.0.0"
2021
+ },
2022
+ "engines": {
2023
+ "node": ">=8"
2024
+ }
2025
+ },
2026
+ "node_modules/shebang-regex": {
2027
+ "version": "3.0.0",
2028
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2029
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2030
+ "dev": true,
2031
+ "engines": {
2032
+ "node": ">=8"
2033
+ }
2034
+ },
2035
+ "node_modules/signal-exit": {
2036
+ "version": "4.1.0",
2037
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2038
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2039
+ "dev": true,
2040
+ "engines": {
2041
+ "node": ">=14"
2042
+ },
2043
+ "funding": {
2044
+ "url": "https://github.com/sponsors/isaacs"
2045
+ }
2046
+ },
2047
+ "node_modules/source-map-js": {
2048
+ "version": "1.0.2",
2049
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
2050
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
2051
+ "dev": true,
2052
+ "engines": {
2053
+ "node": ">=0.10.0"
2054
+ }
2055
+ },
2056
+ "node_modules/string-width": {
2057
+ "version": "5.1.2",
2058
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2059
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2060
+ "dev": true,
2061
+ "dependencies": {
2062
+ "eastasianwidth": "^0.2.0",
2063
+ "emoji-regex": "^9.2.2",
2064
+ "strip-ansi": "^7.0.1"
2065
+ },
2066
+ "engines": {
2067
+ "node": ">=12"
2068
+ },
2069
+ "funding": {
2070
+ "url": "https://github.com/sponsors/sindresorhus"
2071
+ }
2072
+ },
2073
+ "node_modules/string-width-cjs": {
2074
+ "name": "string-width",
2075
+ "version": "4.2.3",
2076
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2077
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2078
+ "dev": true,
2079
+ "dependencies": {
2080
+ "emoji-regex": "^8.0.0",
2081
+ "is-fullwidth-code-point": "^3.0.0",
2082
+ "strip-ansi": "^6.0.1"
2083
+ },
2084
+ "engines": {
2085
+ "node": ">=8"
2086
+ }
2087
+ },
2088
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
2089
+ "version": "5.0.1",
2090
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2091
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2092
+ "dev": true,
2093
+ "engines": {
2094
+ "node": ">=8"
2095
+ }
2096
+ },
2097
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
2098
+ "version": "8.0.0",
2099
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2100
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2101
+ "dev": true
2102
+ },
2103
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
2104
+ "version": "6.0.1",
2105
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2106
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2107
+ "dev": true,
2108
+ "dependencies": {
2109
+ "ansi-regex": "^5.0.1"
2110
+ },
2111
+ "engines": {
2112
+ "node": ">=8"
2113
+ }
2114
+ },
2115
+ "node_modules/strip-ansi": {
2116
+ "version": "7.1.0",
2117
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
2118
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
2119
+ "dev": true,
2120
+ "dependencies": {
2121
+ "ansi-regex": "^6.0.1"
2122
+ },
2123
+ "engines": {
2124
+ "node": ">=12"
2125
+ },
2126
+ "funding": {
2127
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
2128
+ }
2129
+ },
2130
+ "node_modules/strip-ansi-cjs": {
2131
+ "name": "strip-ansi",
2132
+ "version": "6.0.1",
2133
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2134
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2135
+ "dev": true,
2136
+ "dependencies": {
2137
+ "ansi-regex": "^5.0.1"
2138
+ },
2139
+ "engines": {
2140
+ "node": ">=8"
2141
+ }
2142
+ },
2143
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
2144
+ "version": "5.0.1",
2145
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2146
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2147
+ "dev": true,
2148
+ "engines": {
2149
+ "node": ">=8"
2150
+ }
2151
+ },
2152
+ "node_modules/sucrase": {
2153
+ "version": "3.35.0",
2154
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
2155
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
2156
+ "dev": true,
2157
+ "dependencies": {
2158
+ "@jridgewell/gen-mapping": "^0.3.2",
2159
+ "commander": "^4.0.0",
2160
+ "glob": "^10.3.10",
2161
+ "lines-and-columns": "^1.1.6",
2162
+ "mz": "^2.7.0",
2163
+ "pirates": "^4.0.1",
2164
+ "ts-interface-checker": "^0.1.9"
2165
+ },
2166
+ "bin": {
2167
+ "sucrase": "bin/sucrase",
2168
+ "sucrase-node": "bin/sucrase-node"
2169
+ },
2170
+ "engines": {
2171
+ "node": ">=16 || 14 >=14.17"
2172
+ }
2173
+ },
2174
+ "node_modules/supports-preserve-symlinks-flag": {
2175
+ "version": "1.0.0",
2176
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2177
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2178
+ "dev": true,
2179
+ "engines": {
2180
+ "node": ">= 0.4"
2181
+ },
2182
+ "funding": {
2183
+ "url": "https://github.com/sponsors/ljharb"
2184
+ }
2185
+ },
2186
+ "node_modules/svelte": {
2187
+ "version": "4.2.11",
2188
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.11.tgz",
2189
+ "integrity": "sha512-YIQk3J4X89wOLhjsqIW8tqY3JHPuBdtdOIkASP2PZeAMcSW9RsIjQzMesCrxOF3gdWYC0mKknlKF7OqmLM+Zqg==",
2190
+ "dev": true,
2191
+ "dependencies": {
2192
+ "@ampproject/remapping": "^2.2.1",
2193
+ "@jridgewell/sourcemap-codec": "^1.4.15",
2194
+ "@jridgewell/trace-mapping": "^0.3.18",
2195
+ "@types/estree": "^1.0.1",
2196
+ "acorn": "^8.9.0",
2197
+ "aria-query": "^5.3.0",
2198
+ "axobject-query": "^4.0.0",
2199
+ "code-red": "^1.0.3",
2200
+ "css-tree": "^2.3.1",
2201
+ "estree-walker": "^3.0.3",
2202
+ "is-reference": "^3.0.1",
2203
+ "locate-character": "^3.0.0",
2204
+ "magic-string": "^0.30.4",
2205
+ "periscopic": "^3.1.0"
2206
+ },
2207
+ "engines": {
2208
+ "node": ">=16"
2209
+ }
2210
+ },
2211
+ "node_modules/svelte-hmr": {
2212
+ "version": "0.15.3",
2213
+ "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz",
2214
+ "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==",
2215
+ "dev": true,
2216
+ "engines": {
2217
+ "node": "^12.20 || ^14.13.1 || >= 16"
2218
+ },
2219
+ "peerDependencies": {
2220
+ "svelte": "^3.19.0 || ^4.0.0"
2221
+ }
2222
+ },
2223
+ "node_modules/tailwindcss": {
2224
+ "version": "3.4.1",
2225
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
2226
+ "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
2227
+ "dev": true,
2228
+ "dependencies": {
2229
+ "@alloc/quick-lru": "^5.2.0",
2230
+ "arg": "^5.0.2",
2231
+ "chokidar": "^3.5.3",
2232
+ "didyoumean": "^1.2.2",
2233
+ "dlv": "^1.1.3",
2234
+ "fast-glob": "^3.3.0",
2235
+ "glob-parent": "^6.0.2",
2236
+ "is-glob": "^4.0.3",
2237
+ "jiti": "^1.19.1",
2238
+ "lilconfig": "^2.1.0",
2239
+ "micromatch": "^4.0.5",
2240
+ "normalize-path": "^3.0.0",
2241
+ "object-hash": "^3.0.0",
2242
+ "picocolors": "^1.0.0",
2243
+ "postcss": "^8.4.23",
2244
+ "postcss-import": "^15.1.0",
2245
+ "postcss-js": "^4.0.1",
2246
+ "postcss-load-config": "^4.0.1",
2247
+ "postcss-nested": "^6.0.1",
2248
+ "postcss-selector-parser": "^6.0.11",
2249
+ "resolve": "^1.22.2",
2250
+ "sucrase": "^3.32.0"
2251
+ },
2252
+ "bin": {
2253
+ "tailwind": "lib/cli.js",
2254
+ "tailwindcss": "lib/cli.js"
2255
+ },
2256
+ "engines": {
2257
+ "node": ">=14.0.0"
2258
+ }
2259
+ },
2260
+ "node_modules/thenify": {
2261
+ "version": "3.3.1",
2262
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
2263
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
2264
+ "dev": true,
2265
+ "dependencies": {
2266
+ "any-promise": "^1.0.0"
2267
+ }
2268
+ },
2269
+ "node_modules/thenify-all": {
2270
+ "version": "1.6.0",
2271
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
2272
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
2273
+ "dev": true,
2274
+ "dependencies": {
2275
+ "thenify": ">= 3.1.0 < 4"
2276
+ },
2277
+ "engines": {
2278
+ "node": ">=0.8"
2279
+ }
2280
+ },
2281
+ "node_modules/to-regex-range": {
2282
+ "version": "5.0.1",
2283
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2284
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2285
+ "dev": true,
2286
+ "dependencies": {
2287
+ "is-number": "^7.0.0"
2288
+ },
2289
+ "engines": {
2290
+ "node": ">=8.0"
2291
+ }
2292
+ },
2293
+ "node_modules/ts-interface-checker": {
2294
+ "version": "0.1.13",
2295
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
2296
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
2297
+ "dev": true
2298
+ },
2299
+ "node_modules/update-browserslist-db": {
2300
+ "version": "1.0.13",
2301
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
2302
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
2303
+ "dev": true,
2304
+ "funding": [
2305
+ {
2306
+ "type": "opencollective",
2307
+ "url": "https://opencollective.com/browserslist"
2308
+ },
2309
+ {
2310
+ "type": "tidelift",
2311
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
2312
+ },
2313
+ {
2314
+ "type": "github",
2315
+ "url": "https://github.com/sponsors/ai"
2316
+ }
2317
+ ],
2318
+ "dependencies": {
2319
+ "escalade": "^3.1.1",
2320
+ "picocolors": "^1.0.0"
2321
+ },
2322
+ "bin": {
2323
+ "update-browserslist-db": "cli.js"
2324
+ },
2325
+ "peerDependencies": {
2326
+ "browserslist": ">= 4.21.0"
2327
+ }
2328
+ },
2329
+ "node_modules/util-deprecate": {
2330
+ "version": "1.0.2",
2331
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2332
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2333
+ "dev": true
2334
+ },
2335
+ "node_modules/vite": {
2336
+ "version": "5.1.3",
2337
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.3.tgz",
2338
+ "integrity": "sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==",
2339
+ "dev": true,
2340
+ "dependencies": {
2341
+ "esbuild": "^0.19.3",
2342
+ "postcss": "^8.4.35",
2343
+ "rollup": "^4.2.0"
2344
+ },
2345
+ "bin": {
2346
+ "vite": "bin/vite.js"
2347
+ },
2348
+ "engines": {
2349
+ "node": "^18.0.0 || >=20.0.0"
2350
+ },
2351
+ "funding": {
2352
+ "url": "https://github.com/vitejs/vite?sponsor=1"
2353
+ },
2354
+ "optionalDependencies": {
2355
+ "fsevents": "~2.3.3"
2356
+ },
2357
+ "peerDependencies": {
2358
+ "@types/node": "^18.0.0 || >=20.0.0",
2359
+ "less": "*",
2360
+ "lightningcss": "^1.21.0",
2361
+ "sass": "*",
2362
+ "stylus": "*",
2363
+ "sugarss": "*",
2364
+ "terser": "^5.4.0"
2365
+ },
2366
+ "peerDependenciesMeta": {
2367
+ "@types/node": {
2368
+ "optional": true
2369
+ },
2370
+ "less": {
2371
+ "optional": true
2372
+ },
2373
+ "lightningcss": {
2374
+ "optional": true
2375
+ },
2376
+ "sass": {
2377
+ "optional": true
2378
+ },
2379
+ "stylus": {
2380
+ "optional": true
2381
+ },
2382
+ "sugarss": {
2383
+ "optional": true
2384
+ },
2385
+ "terser": {
2386
+ "optional": true
2387
+ }
2388
+ }
2389
+ },
2390
+ "node_modules/vitefu": {
2391
+ "version": "0.2.5",
2392
+ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
2393
+ "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==",
2394
+ "dev": true,
2395
+ "peerDependencies": {
2396
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
2397
+ },
2398
+ "peerDependenciesMeta": {
2399
+ "vite": {
2400
+ "optional": true
2401
+ }
2402
+ }
2403
+ },
2404
+ "node_modules/which": {
2405
+ "version": "2.0.2",
2406
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2407
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2408
+ "dev": true,
2409
+ "dependencies": {
2410
+ "isexe": "^2.0.0"
2411
+ },
2412
+ "bin": {
2413
+ "node-which": "bin/node-which"
2414
+ },
2415
+ "engines": {
2416
+ "node": ">= 8"
2417
+ }
2418
+ },
2419
+ "node_modules/wrap-ansi": {
2420
+ "version": "8.1.0",
2421
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
2422
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
2423
+ "dev": true,
2424
+ "dependencies": {
2425
+ "ansi-styles": "^6.1.0",
2426
+ "string-width": "^5.0.1",
2427
+ "strip-ansi": "^7.0.1"
2428
+ },
2429
+ "engines": {
2430
+ "node": ">=12"
2431
+ },
2432
+ "funding": {
2433
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2434
+ }
2435
+ },
2436
+ "node_modules/wrap-ansi-cjs": {
2437
+ "name": "wrap-ansi",
2438
+ "version": "7.0.0",
2439
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2440
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2441
+ "dev": true,
2442
+ "dependencies": {
2443
+ "ansi-styles": "^4.0.0",
2444
+ "string-width": "^4.1.0",
2445
+ "strip-ansi": "^6.0.0"
2446
+ },
2447
+ "engines": {
2448
+ "node": ">=10"
2449
+ },
2450
+ "funding": {
2451
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2452
+ }
2453
+ },
2454
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
2455
+ "version": "5.0.1",
2456
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2457
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2458
+ "dev": true,
2459
+ "engines": {
2460
+ "node": ">=8"
2461
+ }
2462
+ },
2463
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
2464
+ "version": "4.3.0",
2465
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2466
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2467
+ "dev": true,
2468
+ "dependencies": {
2469
+ "color-convert": "^2.0.1"
2470
+ },
2471
+ "engines": {
2472
+ "node": ">=8"
2473
+ },
2474
+ "funding": {
2475
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2476
+ }
2477
+ },
2478
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
2479
+ "version": "8.0.0",
2480
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2481
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2482
+ "dev": true
2483
+ },
2484
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
2485
+ "version": "4.2.3",
2486
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2487
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2488
+ "dev": true,
2489
+ "dependencies": {
2490
+ "emoji-regex": "^8.0.0",
2491
+ "is-fullwidth-code-point": "^3.0.0",
2492
+ "strip-ansi": "^6.0.1"
2493
+ },
2494
+ "engines": {
2495
+ "node": ">=8"
2496
+ }
2497
+ },
2498
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
2499
+ "version": "6.0.1",
2500
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2501
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2502
+ "dev": true,
2503
+ "dependencies": {
2504
+ "ansi-regex": "^5.0.1"
2505
+ },
2506
+ "engines": {
2507
+ "node": ">=8"
2508
+ }
2509
+ },
2510
+ "node_modules/yaml": {
2511
+ "version": "2.3.4",
2512
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
2513
+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
2514
+ "dev": true,
2515
+ "engines": {
2516
+ "node": ">= 14"
2517
+ }
2518
+ }
2519
+ }
2520
+ }
frontend/package.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "frontend",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "devDependencies": {
12
+ "@sveltejs/vite-plugin-svelte": "^3.0.2",
13
+ "@tailwindcss/typography": "^0.5.10",
14
+ "autoprefixer": "^10.4.17",
15
+ "postcss": "^8.4.35",
16
+ "svelte": "^4.2.10",
17
+ "tailwindcss": "^3.4.1",
18
+ "vite": "^5.1.0"
19
+ }
20
+ }
client/postcss.config.cjs → frontend/postcss.config.js RENAMED
@@ -1,4 +1,4 @@
1
- module.exports = {
2
  plugins: {
3
  tailwindcss: {},
4
  autoprefixer: {},
 
1
+ export default {
2
  plugins: {
3
  tailwindcss: {},
4
  autoprefixer: {},
{client/static → frontend/public}/test.json RENAMED
File without changes
frontend/public/vite.svg ADDED
client/src/routes/index.svelte → frontend/src/App.svelte RENAMED
@@ -1,5 +1,5 @@
1
  <script>
2
- import NewsBlock from '../components/NewsBlock.svelte';
3
  let feeds = [
4
  {
5
  label: 'NYTimes',
@@ -37,10 +37,10 @@
37
  async function fecthPredictions(feedUrl) {
38
  console.log(feedUrl);
39
  try {
40
- predictions = await fetch(`news?feed_url=${feedUrl}`).then((d) => d.json());
41
  } catch (e) {
42
  // hack to develop locally without having to run the server
43
- predictions = await fetch('static/test.json').then((d) => d.json());
44
  }
45
  lastUpdate = new Date(predictions.last_update);
46
  predictions = predictions.entries.sort((a, b) => b.sentiment - a.sentiment);
@@ -108,8 +108,8 @@
108
  >Node script</a
109
  >
110
 
111
- install node LTS and create symbolic links to <code>/home/user/.local/bin/</code> as it seems like
112
- we don't have permission to update <code>$PATH</code> env
113
  </p>
114
  <h4>main.py</h4>
115
  <p class="max-w-prose leading-normal">
@@ -141,8 +141,9 @@
141
  href="https://github.com/sveltejs/kit/tree/master/packages/adapter-node"
142
  >
143
  <code>@sveltejs/adapter-node</code></a
144
- > adaptor and Flask the API application with your ML project. However, there is an unsolved
145
- issue to enable
 
146
  <a
147
  href="https://github.com/sveltejs/kit/issues/595"
148
  class="text-blue-500 underline hover:no-underline"
 
1
  <script>
2
+ import NewsBlock from './components/NewsBlock.svelte';
3
  let feeds = [
4
  {
5
  label: 'NYTimes',
 
37
  async function fecthPredictions(feedUrl) {
38
  console.log(feedUrl);
39
  try {
40
+ predictions = await fetch(`/api/news?feed_url=${feedUrl}`).then((d) => d.json());
41
  } catch (e) {
42
  // hack to develop locally without having to run the server
43
+ predictions = await fetch('test.json').then((d) => d.json());
44
  }
45
  lastUpdate = new Date(predictions.last_update);
46
  predictions = predictions.entries.sort((a, b) => b.sentiment - a.sentiment);
 
108
  >Node script</a
109
  >
110
 
111
+ install node LTS and create symbolic links to <code>/home/user/.local/bin/</code> as it seems
112
+ like we don't have permission to update <code>$PATH</code> env
113
  </p>
114
  <h4>main.py</h4>
115
  <p class="max-w-prose leading-normal">
 
141
  href="https://github.com/sveltejs/kit/tree/master/packages/adapter-node"
142
  >
143
  <code>@sveltejs/adapter-node</code></a
144
+ >
145
+ adaptor and Flask the API application with your ML project. However, there is an unsolved issue
146
+ to enable
147
  <a
148
  href="https://github.com/sveltejs/kit/issues/595"
149
  class="text-blue-500 underline hover:no-underline"
{client → frontend}/src/app.css RENAMED
@@ -1,3 +1,3 @@
1
  @tailwind base;
2
  @tailwind components;
3
- @tailwind utilities;
 
1
  @tailwind base;
2
  @tailwind components;
3
+ @tailwind utilities;
frontend/src/assets/svelte.svg ADDED
{client → frontend}/src/components/NewsBlock.svelte RENAMED
File without changes
frontend/src/lib/Counter.svelte ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <script>
2
+ let count = 0
3
+ const increment = () => {
4
+ count += 1
5
+ }
6
+ </script>
7
+
8
+ <button on:click={increment}>
9
+ count is {count}
10
+ </button>
frontend/src/main.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ import './app.css'
2
+ import App from './App.svelte'
3
+
4
+ const app = new App({
5
+ target: document.getElementById('app'),
6
+ })
7
+
8
+ export default app
frontend/src/vite-env.d.ts ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /// <reference types="svelte" />
2
+ /// <reference types="vite/client" />
frontend/svelte.config.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
2
+
3
+ export default {
4
+ // Consult https://svelte.dev/docs#compile-time-svelte-preprocess
5
+ // for more information about preprocessors
6
+ preprocess: vitePreprocess(),
7
+ }
client/tailwind.config.cjs → frontend/tailwind.config.js RENAMED
@@ -1,5 +1,9 @@
1
- module.exports = {
2
- content: ['./src/**/*.{html,js,svelte,ts}'],
 
 
 
 
3
  theme: {
4
  extend: {
5
  typography: {
@@ -17,4 +21,4 @@ module.exports = {
17
  },
18
  },
19
  plugins: [require('@tailwindcss/typography')]
20
- };
 
1
+ /** @type {import('tailwindcss').Config} */
2
+ export default {
3
+ content: [
4
+ "./index.html",
5
+ "./src/**/*.{svelte,js,ts,jsx,tsx}",
6
+ ],
7
  theme: {
8
  extend: {
9
  typography: {
 
21
  },
22
  },
23
  plugins: [require('@tailwindcss/typography')]
24
+ }
frontend/vite.config.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from 'vite'
2
+ import { svelte } from '@sveltejs/vite-plugin-svelte'
3
+
4
+ // https://vitejs.dev/config/
5
+ export default defineConfig({
6
+ plugins: [svelte()],
7
+ server: {
8
+ proxy: {
9
+ '/api': 'http://127.0.0.1:7860',
10
+ }
11
+ }
12
+ })
install-node.sh DELETED
@@ -1,10 +0,0 @@
1
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
2
- export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
3
- [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
4
- nvm install --lts
5
- node --version
6
- npm --version
7
- which node
8
- which npm
9
- command ln -s "$NVM_BIN/node" /home/user/.local/bin/node
10
- command ln -s "$NVM_BIN/npm" /home/user/.local/bin/npm
 
 
 
 
 
 
 
 
 
 
 
main.py DELETED
@@ -1,3 +0,0 @@
1
- import subprocess
2
-
3
- subprocess.run(["make", "build-all"], shell=False)
 
 
 
 
packages.txt DELETED
File without changes
requirements.txt CHANGED
@@ -1,7 +1,7 @@
1
- feedparser==6.0.8
2
- Flask==2.0.3
3
- flask_cors==3.0.10
4
- python-dotenv==0.19.2
5
  python_dateutil==2.8.2
6
- transformers==4.16.2
7
- torch
 
1
+ feedparser==6.0.11
2
+ Flask==3.0.2
3
+ flask_cors==4.0.0
4
+ python-dotenv==1.0.1
5
  python_dateutil==2.8.2
6
+ transformers==4.37.2
7
+ torch==2.2.0
static/_app/assets/pages/__layout.svelte-298a4fd5.css DELETED
@@ -1 +0,0 @@
1
- *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{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,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}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-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-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[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}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-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]{display:none}*,:before,:after{--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-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: }.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~="not-prose"] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(ol):not(:where([class~="not-prose"] *)){list-style-type:decimal;padding-left:1.625em}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~="not-prose"] *)){list-style-type:disc;padding-left:1.625em}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~="not-prose"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\201c""\201d""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *)):after{content:close-quote}.prose :where(h1):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~="not-prose"] *)){font-weight:900}.prose :where(h2):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~="not-prose"] *)){font-weight:800}.prose :where(h3):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~="not-prose"] *)){font-weight:700}.prose :where(h4):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~="not-prose"] *)){font-weight:700}.prose :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~="not-prose"] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose :where(code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~="not-prose"] *)):before{content:""}.prose :where(code):not(:where([class~="not-prose"] *)):after{content:""}.prose :where(a code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-links)}.prose :where(pre):not(:where([class~="not-prose"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~="not-prose"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~="not-prose"] *)):before{content:none}.prose :where(pre code):not(:where([class~="not-prose"] *)):after{content:none}.prose :where(table):not(:where([class~="not-prose"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~="not-prose"] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~="not-prose"] *)){vertical-align:baseline;padding:.5714286em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(h2 code):not(:where([class~="not-prose"] *)){font-size:.875em}.prose :where(h3 code):not(:where([class~="not-prose"] *)){font-size:.9em}.prose :where(li):not(:where([class~="not-prose"] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:.375em}.prose>:where(ul > li p):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose>:where(ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose>:where(ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose>:where(ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose>:where(ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~="not-prose"] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(tbody td:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(tbody td:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose>:where(:first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose>:where(:last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.prose-gray{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151}.invisible{visibility:hidden}.relative{position:relative}.col-span-2{grid-column:span 2 / span 2}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mb-0{margin-bottom:0}.mt-0{margin-top:0}.inline-block{display:inline-block}.grid{display:grid}.aspect-\[4\/3\]{aspect-ratio:4 / 3}.h-full{height:100%}.w-full{width:100%}.max-w-\[15rem\]{max-width:15rem}.max-w-prose{max-width:65ch}.max-w-4xl{max-width:56rem}@-webkit-keyframes spin{to{transform:rotate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rounded{border-radius:.25rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-top{-o-object-position:top;object-position:top}.p-0{padding:0}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-0{padding-left:0;padding-right:0}.py-0{padding-top:0;padding-bottom:0}.py-4{padding-top:1rem;padding-bottom:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.leading-tight{line-height:1.25}.leading-normal{line-height:1.5}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.hover\:bg-zinc-300:hover{--tw-bg-opacity: 1;background-color:rgb(212 212 216 / var(--tw-bg-opacity))}.hover\:no-underline:hover{-webkit-text-decoration-line:none;text-decoration-line:none}.hover\:opacity-60:hover{opacity:.6}.hover\:opacity-50:hover{opacity:.5}.focus\:border-gray-500:focus{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:pl-4{padding-left:1rem}}@media (min-width: 768px){.md\:max-w-md{max-width:28rem}}
 
 
static/_app/chunks/vendor-528a52ee.js DELETED
@@ -1 +0,0 @@
1
- function k(){}function tt(t,e){for(const n in e)t[n]=e[n];return t}function et(t){return t&&typeof t=="object"&&typeof t.then=="function"}function R(t){return t()}function J(){return Object.create(null)}function v(t){t.forEach(R)}function nt(t){return typeof t=="function"}function ct(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let j;function $t(t,e){return j||(j=document.createElement("a")),j.href=e,t===j.href}function it(t){return Object.keys(t).length===0}function vt(t,e,n,c){if(t){const i=U(t,e,n,c);return t[0](i)}}function U(t,e,n,c){return t[1]&&c?tt(n.ctx.slice(),t[1](c(e))):n.ctx}function Et(t,e,n,c){if(t[2]&&c){const i=t[2](c(n));if(e.dirty===void 0)return i;if(typeof i=="object"){const u=[],l=Math.max(e.dirty.length,i.length);for(let o=0;o<l;o+=1)u[o]=e.dirty[o]|i[o];return u}return e.dirty|i}return e.dirty}function St(t,e,n,c,i,u){if(i){const l=U(e,n,c,u);t.p(l,i)}}function jt(t){if(t.ctx.length>32){const e=[],n=t.ctx.length/32;for(let c=0;c<n;c++)e[c]=-1;return e}return-1}let C=!1;function rt(){C=!0}function lt(){C=!1}function st(t,e,n,c){for(;t<e;){const i=t+(e-t>>1);n(i)<=c?t=i+1:e=i}return t}function ot(t){if(t.hydrate_init)return;t.hydrate_init=!0;let e=t.childNodes;if(t.nodeName==="HEAD"){const r=[];for(let s=0;s<e.length;s++){const d=e[s];d.claim_order!==void 0&&r.push(d)}e=r}const n=new Int32Array(e.length+1),c=new Int32Array(e.length);n[0]=-1;let i=0;for(let r=0;r<e.length;r++){const s=e[r].claim_order,d=(i>0&&e[n[i]].claim_order<=s?i+1:st(1,i,a=>e[n[a]].claim_order,s))-1;c[r]=n[d]+1;const _=d+1;n[_]=r,i=Math.max(_,i)}const u=[],l=[];let o=e.length-1;for(let r=n[i]+1;r!=0;r=c[r-1]){for(u.push(e[r-1]);o>=r;o--)l.push(e[o]);o--}for(;o>=0;o--)l.push(e[o]);u.reverse(),l.sort((r,s)=>r.claim_order-s.claim_order);for(let r=0,s=0;r<l.length;r++){for(;s<u.length&&l[r].claim_order>=u[s].claim_order;)s++;const d=s<u.length?u[s]:null;t.insertBefore(l[r],d)}}function ut(t,e){if(C){for(ot(t),(t.actual_end_child===void 0||t.actual_end_child!==null&&t.actual_end_child.parentElement!==t)&&(t.actual_end_child=t.firstChild);t.actual_end_child!==null&&t.actual_end_child.claim_order===void 0;)t.actual_end_child=t.actual_end_child.nextSibling;e!==t.actual_end_child?(e.claim_order!==void 0||e.parentNode!==t)&&t.insertBefore(e,t.actual_end_child):t.actual_end_child=e.nextSibling}else(e.parentNode!==t||e.nextSibling!==null)&&t.appendChild(e)}function Nt(t,e,n){C&&!n?ut(t,e):(e.parentNode!==t||e.nextSibling!=n)&&t.insertBefore(e,n||null)}function at(t){t.parentNode.removeChild(t)}function At(t,e){for(let n=0;n<t.length;n+=1)t[n]&&t[n].d(e)}function ft(t){return document.createElement(t)}function dt(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function D(t){return document.createTextNode(t)}function Mt(){return D(" ")}function Ct(){return D("")}function qt(t,e,n,c){return t.addEventListener(e,n,c),()=>t.removeEventListener(e,n,c)}function Tt(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}function _t(t){return Array.from(t.childNodes)}function ht(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function V(t,e,n,c,i=!1){ht(t);const u=(()=>{for(let l=t.claim_info.last_index;l<t.length;l++){const o=t[l];if(e(o)){const r=n(o);return r===void 0?t.splice(l,1):t[l]=r,i||(t.claim_info.last_index=l),o}}for(let l=t.claim_info.last_index-1;l>=0;l--){const o=t[l];if(e(o)){const r=n(o);return r===void 0?t.splice(l,1):t[l]=r,i?r===void 0&&t.claim_info.last_index--:t.claim_info.last_index=l,o}}return c()})();return u.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,u}function X(t,e,n,c){return V(t,i=>i.nodeName===e,i=>{const u=[];for(let l=0;l<i.attributes.length;l++){const o=i.attributes[l];n[o.name]||u.push(o.name)}u.forEach(l=>i.removeAttribute(l))},()=>c(e))}function zt(t,e,n){return X(t,e,n,ft)}function Bt(t,e,n){return X(t,e,n,dt)}function mt(t,e){return V(t,n=>n.nodeType===3,n=>{const c=""+e;if(n.data.startsWith(c)){if(n.data.length!==c.length)return n.splitText(c.length)}else n.data=c},()=>D(e),!0)}function Lt(t){return mt(t," ")}function Ot(t,e){e=""+e,t.wholeText!==e&&(t.data=e)}function Pt(t,e,n,c){n===null?t.style.removeProperty(e):t.style.setProperty(e,n,c?"important":"")}function It(t,e){for(let n=0;n<t.options.length;n+=1){const c=t.options[n];if(c.__value===e){c.selected=!0;return}}t.selectedIndex=-1}function Dt(t){const e=t.querySelector(":checked")||t.options[0];return e&&e.__value}let $;function g(t){$=t}function q(){if(!$)throw new Error("Function called outside component initialization");return $}function Ft(t){q().$$.on_mount.push(t)}function Ht(t){q().$$.after_update.push(t)}function Wt(t,e){q().$$.context.set(t,e)}const w=[],K=[],A=[],Q=[],Y=Promise.resolve();let P=!1;function Z(){P||(P=!0,Y.then(F))}function Gt(){return Z(),Y}function I(t){A.push(t)}const O=new Set;let N=0;function F(){const t=$;do{for(;N<w.length;){const e=w[N];N++,g(e),pt(e.$$)}for(g(null),w.length=0,N=0;K.length;)K.pop()();for(let e=0;e<A.length;e+=1){const n=A[e];O.has(n)||(O.add(n),n())}A.length=0}while(w.length);for(;Q.length;)Q.pop()();P=!1,O.clear(),g(t)}function pt(t){if(t.fragment!==null){t.update(),v(t.before_update);const e=t.dirty;t.dirty=[-1],t.fragment&&t.fragment.p(t.ctx,e),t.after_update.forEach(I)}}const M=new Set;let b;function yt(){b={r:0,c:[],p:b}}function gt(){b.r||v(b.c),b=b.p}function H(t,e){t&&t.i&&(M.delete(t),t.i(e))}function bt(t,e,n,c){if(t&&t.o){if(M.has(t))return;M.add(t),b.c.push(()=>{M.delete(t),c&&(n&&t.d(1),c())}),t.o(e)}}function Jt(t,e){const n=e.token={};function c(i,u,l,o){if(e.token!==n)return;e.resolved=o;let r=e.ctx;l!==void 0&&(r=r.slice(),r[l]=o);const s=i&&(e.current=i)(r);let d=!1;e.block&&(e.blocks?e.blocks.forEach((_,a)=>{a!==u&&_&&(yt(),bt(_,1,1,()=>{e.blocks[a]===_&&(e.blocks[a]=null)}),gt())}):e.block.d(1),s.c(),H(s,1),s.m(e.mount(),e.anchor),d=!0),e.block=s,e.blocks&&(e.blocks[u]=s),d&&F()}if(et(t)){const i=q();if(t.then(u=>{g(i),c(e.then,1,e.value,u),g(null)},u=>{if(g(i),c(e.catch,2,e.error,u),g(null),!e.hasCatch)throw u}),e.current!==e.pending)return c(e.pending,0),!0}else{if(e.current!==e.then)return c(e.then,1,e.value,t),!0;e.resolved=t}}function Kt(t,e,n){const c=e.slice(),{resolved:i}=t;t.current===t.then&&(c[t.value]=i),t.current===t.catch&&(c[t.error]=i),t.block.p(c,n)}function Qt(t,e){t.d(1),e.delete(t.key)}function Rt(t,e,n,c,i,u,l,o,r,s,d,_){let a=t.length,m=u.length,h=a;const T={};for(;h--;)T[t[h].key]=h;const E=[],z=new Map,B=new Map;for(h=m;h--;){const f=_(i,u,h),p=n(f);let y=l.get(p);y?c&&y.p(f,e):(y=s(p,f),y.c()),z.set(p,E[h]=y),p in T&&B.set(p,Math.abs(h-T[p]))}const W=new Set,G=new Set;function L(f){H(f,1),f.m(o,d),l.set(f.key,f),d=f.first,m--}for(;a&&m;){const f=E[m-1],p=t[a-1],y=f.key,S=p.key;f===p?(d=f.first,a--,m--):z.has(S)?!l.has(y)||W.has(y)?L(f):G.has(S)?a--:B.get(y)>B.get(S)?(G.add(y),L(f)):(W.add(S),a--):(r(p,l),a--)}for(;a--;){const f=t[a];z.has(f.key)||r(f,l)}for(;m;)L(E[m-1]);return E}function Ut(t,e){const n={},c={},i={$$scope:1};let u=t.length;for(;u--;){const l=t[u],o=e[u];if(o){for(const r in l)r in o||(c[r]=1);for(const r in o)i[r]||(n[r]=o[r],i[r]=1);t[u]=o}else for(const r in l)i[r]=1}for(const l in c)l in n||(n[l]=void 0);return n}function Vt(t){return typeof t=="object"&&t!==null?t:{}}function Xt(t){t&&t.c()}function Yt(t,e){t&&t.l(e)}function xt(t,e,n,c){const{fragment:i,on_mount:u,on_destroy:l,after_update:o}=t.$$;i&&i.m(e,n),c||I(()=>{const r=u.map(R).filter(nt);l?l.push(...r):v(r),t.$$.on_mount=[]}),o.forEach(I)}function wt(t,e){const n=t.$$;n.fragment!==null&&(v(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function kt(t,e){t.$$.dirty[0]===-1&&(w.push(t),Z(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function Zt(t,e,n,c,i,u,l,o=[-1]){const r=$;g(t);const s=t.$$={fragment:null,ctx:null,props:u,update:k,not_equal:i,bound:J(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(r?r.$$.context:[])),callbacks:J(),dirty:o,skip_bound:!1,root:e.target||r.$$.root};l&&l(s.root);let d=!1;if(s.ctx=n?n(t,e.props||{},(_,a,...m)=>{const h=m.length?m[0]:a;return s.ctx&&i(s.ctx[_],s.ctx[_]=h)&&(!s.skip_bound&&s.bound[_]&&s.bound[_](h),d&&kt(t,_)),a}):[],s.update(),d=!0,v(s.before_update),s.fragment=c?c(s.ctx):!1,e.target){if(e.hydrate){rt();const _=_t(e.target);s.fragment&&s.fragment.l(_),_.forEach(at)}else s.fragment&&s.fragment.c();e.intro&&H(t.$$.fragment),xt(t,e.target,e.anchor,e.customElement),lt(),F()}g(r)}class te{$destroy(){wt(this,1),this.$destroy=k}$on(e,n){const c=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return c.push(n),()=>{const i=c.indexOf(n);i!==-1&&c.splice(i,1)}}$set(e){this.$$set&&!it(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const x=[];function ee(t,e=k){let n;const c=new Set;function i(o){if(ct(t,o)&&(t=o,n)){const r=!x.length;for(const s of c)s[1](),x.push(s,t);if(r){for(let s=0;s<x.length;s+=2)x[s][0](x[s+1]);x.length=0}}}function u(o){i(o(t))}function l(o,r=k){const s=[o,r];return c.add(s),c.size===1&&(n=e(i)||k),o(t),()=>{c.delete(s),c.size===0&&(n(),n=null)}}return{set:i,update:u,subscribe:l}}export{Vt as A,wt as B,tt as C,ee as D,Gt as E,vt as F,St as G,jt as H,Et as I,ut as J,k as K,$t as L,Jt as M,I as N,It as O,qt as P,Rt as Q,Kt as R,te as S,v as T,Qt as U,Dt as V,At as W,dt as X,Bt as Y,_t as a,Tt as b,zt as c,at as d,ft as e,Pt as f,Nt as g,mt as h,Zt as i,Ot as j,Mt as k,Ct as l,Lt as m,yt as n,bt as o,gt as p,H as q,Wt as r,ct as s,D as t,Ht as u,Ft as v,Xt as w,Yt as x,xt as y,Ut as z};
 
 
static/_app/error.svelte-41f1b9b8.js DELETED
@@ -1 +0,0 @@
1
- import{S as h,i as w,s as y,e as E,t as v,c as d,a as b,h as P,d as o,g as u,J as R,j as N,k as S,l as C,m as j,K as H}from"./chunks/vendor-528a52ee.js";function J(r){let l,t=r[1].frame+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){u(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].frame+"")&&N(a,t)},d(f){f&&o(l)}}}function K(r){let l,t=r[1].stack+"",a;return{c(){l=E("pre"),a=v(t)},l(f){l=d(f,"PRE",{});var s=b(l);a=P(s,t),s.forEach(o)},m(f,s){u(f,l,s),R(l,a)},p(f,s){s&2&&t!==(t=f[1].stack+"")&&N(a,t)},d(f){f&&o(l)}}}function z(r){let l,t,a,f,s=r[1].message+"",c,k,n,p,i=r[1].frame&&J(r),_=r[1].stack&&K(r);return{c(){l=E("h1"),t=v(r[0]),a=S(),f=E("pre"),c=v(s),k=S(),i&&i.c(),n=S(),_&&_.c(),p=C()},l(e){l=d(e,"H1",{});var m=b(l);t=P(m,r[0]),m.forEach(o),a=j(e),f=d(e,"PRE",{});var q=b(f);c=P(q,s),q.forEach(o),k=j(e),i&&i.l(e),n=j(e),_&&_.l(e),p=C()},m(e,m){u(e,l,m),R(l,t),u(e,a,m),u(e,f,m),R(f,c),u(e,k,m),i&&i.m(e,m),u(e,n,m),_&&_.m(e,m),u(e,p,m)},p(e,[m]){m&1&&N(t,e[0]),m&2&&s!==(s=e[1].message+"")&&N(c,s),e[1].frame?i?i.p(e,m):(i=J(e),i.c(),i.m(n.parentNode,n)):i&&(i.d(1),i=null),e[1].stack?_?_.p(e,m):(_=K(e),_.c(),_.m(p.parentNode,p)):_&&(_.d(1),_=null)},i:H,o:H,d(e){e&&o(l),e&&o(a),e&&o(f),e&&o(k),i&&i.d(e),e&&o(n),_&&_.d(e),e&&o(p)}}}function D({error:r,status:l}){return{props:{error:r,status:l}}}function A(r,l,t){let{status:a}=l,{error:f}=l;return r.$$set=s=>{"status"in s&&t(0,a=s.status),"error"in s&&t(1,f=s.error)},[a,f]}class F extends h{constructor(l){super();w(this,l,A,z,y,{status:0,error:1})}}export{F as default,D as load};
 
 
static/_app/manifest.json DELETED
@@ -1,48 +0,0 @@
1
- {
2
- ".svelte-kit/runtime/client/start.js": {
3
- "file": "start-ad0dbeae.js",
4
- "src": ".svelte-kit/runtime/client/start.js",
5
- "isEntry": true,
6
- "imports": [
7
- "_vendor-528a52ee.js"
8
- ],
9
- "dynamicImports": [
10
- "src/routes/__layout.svelte",
11
- ".svelte-kit/runtime/components/error.svelte",
12
- "src/routes/index.svelte"
13
- ]
14
- },
15
- "src/routes/__layout.svelte": {
16
- "file": "pages/__layout.svelte-483b60b6.js",
17
- "src": "src/routes/__layout.svelte",
18
- "isEntry": true,
19
- "isDynamicEntry": true,
20
- "imports": [
21
- "_vendor-528a52ee.js"
22
- ],
23
- "css": [
24
- "assets/pages/__layout.svelte-298a4fd5.css"
25
- ]
26
- },
27
- ".svelte-kit/runtime/components/error.svelte": {
28
- "file": "error.svelte-41f1b9b8.js",
29
- "src": ".svelte-kit/runtime/components/error.svelte",
30
- "isEntry": true,
31
- "isDynamicEntry": true,
32
- "imports": [
33
- "_vendor-528a52ee.js"
34
- ]
35
- },
36
- "src/routes/index.svelte": {
37
- "file": "pages/index.svelte-a06f0dfd.js",
38
- "src": "src/routes/index.svelte",
39
- "isEntry": true,
40
- "isDynamicEntry": true,
41
- "imports": [
42
- "_vendor-528a52ee.js"
43
- ]
44
- },
45
- "_vendor-528a52ee.js": {
46
- "file": "chunks/vendor-528a52ee.js"
47
- }
48
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static/_app/pages/__layout.svelte-483b60b6.js DELETED
@@ -1 +0,0 @@
1
- import{S as o,i,s as r,F as u,G as f,H as _,I as c,q as p,o as d}from"../chunks/vendor-528a52ee.js";function m(l){let s;const n=l[1].default,e=u(n,l,l[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,a){e&&e.m(t,a),s=!0},p(t,[a]){e&&e.p&&(!s||a&1)&&f(e,n,t,t[0],s?c(n,t[0],a,null):_(t[0]),null)},i(t){s||(p(e,t),s=!0)},o(t){d(e,t),s=!1},d(t){e&&e.d(t)}}}function $(l,s,n){let{$$slots:e={},$$scope:t}=s;return l.$$set=a=>{"$$scope"in a&&n(0,t=a.$$scope)},[t,e]}class h extends o{constructor(s){super();i(this,s,$,m,r,{})}}export{h as default};
 
 
static/_app/pages/index.svelte-a06f0dfd.js DELETED
@@ -1,43 +0,0 @@
1
- import{S as Zt,i as ea,s as ta,e as d,k as E,t as p,c as f,a as u,d as i,m as S,h as m,b as l,g as Q,J as e,j as ge,K as ce,L as Kt,M as Rt,N as aa,O as Ut,P as qt,Q as la,R as sa,q as Pe,o as Ce,T as ra,U as na,V as oa,w as ia,x as ca,y as ha,B as ua,n as da,p as fa,W as pa,X as Wt,Y as Gt}from"../chunks/vendor-528a52ee.js";function ma(n){let t,a,c;return{c(){t=d("a"),a=d("div"),this.h()},l(s){t=f(s,"A",{target:!0,href:!0});var h=u(t);a=f(h,"DIV",{class:!0}),u(a).forEach(i),h.forEach(i),this.h()},h(){l(a,"class","hover:opacity-60 bg-gray-200 h-full w-full max-w-[15rem] md:max-w-md object-cover object-top aspect-[4/3]"),l(t,"target","_blank"),l(t,"href",c=n[0].link)},m(s,h){Q(s,t,h),e(t,a)},p(s,h){h&1&&c!==(c=s[0].link)&&l(t,"href",c)},d(s){s&&i(t)}}}function _a(n){let t,a,c,s,h;return{c(){t=d("a"),a=d("img"),this.h()},l(r){t=f(r,"A",{target:!0,href:!0});var o=u(t);a=f(o,"IMG",{class:!0,src:!0,alt:!0,loading:!0}),o.forEach(i),this.h()},h(){l(a,"class","hover:opacity-60 m-0 w-full max-w-[15rem] md:max-w-md object-cover object-top aspect-[4/3]"),Kt(a.src,c=n[0].media_content[0].url)||l(a,"src",c),l(a,"alt",s=n[0].title),l(a,"loading","lazy"),l(t,"target","_blank"),l(t,"href",h=n[0].link)},m(r,o){Q(r,t,o),e(t,a)},p(r,o){o&1&&!Kt(a.src,c=r[0].media_content[0].url)&&l(a,"src",c),o&1&&s!==(s=r[0].title)&&l(a,"alt",s),o&1&&h!==(h=r[0].link)&&l(t,"href",h)},d(r){r&&i(t)}}}function ga(n){let t,a,c,s,h,r,o,_=n[0].sentiment.toFixed(4)+"",A,C,j,w,b,q=n[0].title+"",L,he,Y,W,K=n[0].author+"",X,B,ue,x,D=n[0].summary+"",Z;function pe(k,v){return k[0].media_content?_a:ma}let H=pe(n),T=H(n);return{c(){t=d("div"),a=d("div"),T.c(),c=E(),s=d("div"),h=d("div"),r=p(`Score:
2
- `),o=d("span"),A=p(_),j=E(),w=d("a"),b=d("h2"),L=p(q),he=E(),Y=d("h5"),W=p("By "),X=p(K),ue=E(),x=d("p"),this.h()},l(k){t=f(k,"DIV",{class:!0});var v=u(t);a=f(v,"DIV",{});var G=u(a);T.l(G),G.forEach(i),c=S(v),s=f(v,"DIV",{class:!0});var ee=u(s);h=f(ee,"DIV",{class:!0});var de=u(h);r=m(de,`Score:
3
- `),o=f(de,"SPAN",{class:!0});var te=u(o);A=m(te,_),te.forEach(i),de.forEach(i),j=S(ee),w=f(ee,"A",{target:!0,class:!0,href:!0});var R=u(w);b=f(R,"H2",{class:!0});var me=u(b);L=m(me,q),me.forEach(i),he=S(R),Y=f(R,"H5",{class:!0});var N=u(Y);W=m(N,"By "),X=m(N,K),N.forEach(i),ue=S(R),x=f(R,"P",{class:!0});var ve=u(x);ve.forEach(i),R.forEach(i),ee.forEach(i),v.forEach(i),this.h()},h(){l(o,"class",C="font-bold "+(n[0].sentiment>0?"text-emerald-600":"text-red-600")),l(h,"class","text-sm"),l(b,"class","m-0 font-serif leading-tight hover:opacity-50"),l(Y,"class",B="mt-1 leading-tight "+(n[0].author?"visibile":"invisible")),l(x,"class","prose max-w-prose leading-normal prose-gray"),l(w,"target","_blank"),l(w,"class","no-underline"),l(w,"href",Z=n[0].link),l(s,"class","col-span-2 sm:pl-4"),l(t,"class","group grid grid-cols-1 sm:grid-cols-3")},m(k,v){Q(k,t,v),e(t,a),T.m(a,null),e(t,c),e(t,s),e(s,h),e(h,r),e(h,o),e(o,A),e(s,j),e(s,w),e(w,b),e(b,L),e(w,he),e(w,Y),e(Y,W),e(Y,X),e(w,ue),e(w,x),x.innerHTML=D},p(k,[v]){H===(H=pe(k))&&T?T.p(k,v):(T.d(1),T=H(k),T&&(T.c(),T.m(a,null))),v&1&&_!==(_=k[0].sentiment.toFixed(4)+"")&&ge(A,_),v&1&&C!==(C="font-bold "+(k[0].sentiment>0?"text-emerald-600":"text-red-600"))&&l(o,"class",C),v&1&&q!==(q=k[0].title+"")&&ge(L,q),v&1&&K!==(K=k[0].author+"")&&ge(X,K),v&1&&B!==(B="mt-1 leading-tight "+(k[0].author?"visibile":"invisible"))&&l(Y,"class",B),v&1&&D!==(D=k[0].summary+"")&&(x.innerHTML=D),v&1&&Z!==(Z=k[0].link)&&l(w,"href",Z)},i:ce,o:ce,d(k){k&&i(t),T.d()}}}function va(n,t,a){let{feedEntry:c}=t;return n.$$set=s=>{"feedEntry"in s&&a(0,c=s.feedEntry)},[c]}class ba extends Zt{constructor(t){super();ea(this,t,va,ga,ta,{feedEntry:0})}}function Jt(n,t,a){const c=n.slice();return c[9]=t[a],c[11]=a,c}function $t(n,t,a){const c=n.slice();return c[13]=t[a],c}function Qt(n,t){let a,c=t[13].label+"",s,h;return{key:n,first:null,c(){a=d("option"),s=p(c),this.h()},l(r){a=f(r,"OPTION",{});var o=u(a);s=m(o,c),o.forEach(i),this.h()},h(){a.__value=h=t[13].value,a.value=a.__value,this.first=a},m(r,o){Q(r,a,o),e(a,s)},p(r,o){t=r},d(r){r&&i(a)}}}function wa(n){let t,a;return{c(){t=d("p"),a=p("An error occurred!")},l(c){t=f(c,"P",{});var s=u(t);a=m(s,"An error occurred!"),s.forEach(i)},m(c,s){Q(c,t,s),e(t,a)},p:ce,i:ce,o:ce,d(c){c&&i(t)}}}function ka(n){let t,a,c=n[1],s=[];for(let r=0;r<c.length;r+=1)s[r]=Xt(Jt(n,c,r));const h=r=>Ce(s[r],1,1,()=>{s[r]=null});return{c(){t=d("ul");for(let r=0;r<s.length;r+=1)s[r].c();this.h()},l(r){t=f(r,"UL",{class:!0});var o=u(t);for(let _=0;_<s.length;_+=1)s[_].l(o);o.forEach(i),this.h()},h(){l(t,"class","m-0 p-0")},m(r,o){Q(r,t,o);for(let _=0;_<s.length;_+=1)s[_].m(t,null);a=!0},p(r,o){if(o&2){c=r[1];let _;for(_=0;_<c.length;_+=1){const A=Jt(r,c,_);s[_]?(s[_].p(A,o),Pe(s[_],1)):(s[_]=Xt(A),s[_].c(),Pe(s[_],1),s[_].m(t,null))}for(da(),_=c.length;_<s.length;_+=1)h(_);fa()}},i(r){if(!a){for(let o=0;o<c.length;o+=1)Pe(s[o]);a=!0}},o(r){s=s.filter(Boolean);for(let o=0;o<s.length;o+=1)Ce(s[o]);a=!1},d(r){r&&i(t),pa(s,r)}}}function Xt(n){let t,a,c,s,h,r;return a=new ba({props:{feedEntry:n[9]}}),{c(){t=d("li"),ia(a.$$.fragment),c=E(),s=d("div"),h=E(),this.h()},l(o){t=f(o,"LI",{class:!0});var _=u(t);ca(a.$$.fragment,_),c=S(_),s=f(_,"DIV",{class:!0}),u(s).forEach(i),h=S(_),_.forEach(i),this.h()},h(){l(s,"class","border-b border-gray-200 py-2"),l(t,"class","py-5")},m(o,_){Q(o,t,_),ha(a,t,null),e(t,c),e(t,s),e(t,h),r=!0},p(o,_){const A={};_&2&&(A.feedEntry=o[9]),a.$set(A)},i(o){r||(Pe(a.$$.fragment,o),r=!0)},o(o){Ce(a.$$.fragment,o),r=!1},d(o){o&&i(t),ua(a)}}}function ya(n){let t,a,c,s;return{c(){t=d("div"),a=Wt("svg"),c=Wt("path"),s=p(`
4
- Loading feed and running sentiment analysis on headlines...`),this.h()},l(h){t=f(h,"DIV",{class:!0});var r=u(t);a=Gt(r,"svg",{class:!0,width:!0,height:!0,viewBox:!0});var o=u(a);c=Gt(o,"path",{d:!0,fill:!0}),u(c).forEach(i),o.forEach(i),s=m(r,`
5
- Loading feed and running sentiment analysis on headlines...`),r.forEach(i),this.h()},h(){l(c,"d","M0,50 a1,1 0 0,0 100,0"),l(c,"fill","lightgrey"),l(a,"class","animate-spin inline-block"),l(a,"width","25"),l(a,"height","25"),l(a,"viewBox","0 0 100 100"),l(t,"class","py-4")},m(h,r){Q(h,t,r),e(t,a),e(a,c),e(t,s)},p:ce,i:ce,o:ce,d(h){h&&i(t)}}}function Ea(n){let t,a,c,s,h,r,o,_,A=(n[2]?n[2].toLocaleString():"")+"",C,j,w,b,q,L,he,Y,W=n[3]?"good and bad news":"bad and good news",K,X,B,ue,x,D,Z,pe,H,T,k,v,G,ee,de,te,R,me,N,ve,ae,xe,Oe,be,Ve,Fe,we,ze,Ke,Re,ke,Ue,qe,M,We,le,ye,Ge,Je,Ee,$e,Qe,Se,Xe,Ze,se,Ae,et,tt,Ne,at,lt,U,st,re,Te,rt,nt,fe,ot,it,ct,ne,ht,O,V=[],gt=new Map,ut,dt,Ie,ft,oe,je=n[3]?"Sorted by positive scores":"Sorted by negative scores",Le,Be,pt,De,J,mt,vt,He=n[4];const bt=y=>y[13].value;for(let y=0;y<He.length;y+=1){let g=$t(n,He,y),F=bt(g);gt.set(F,V[y]=Qt(F,g))}let I={ctx:n,current:null,token:null,hasCatch:!0,pending:ya,then:ka,catch:wa,value:8,error:12,blocks:[,,,]};return Rt(De=n[5](n[0]),I),{c(){t=d("article"),a=d("h1"),c=p("The New York Times Sentiment Analysis"),s=E(),h=d("h5"),r=d("b"),o=p("Last Updated:"),_=E(),C=p(A),w=E(),b=d("p"),q=p(`This project is an experiment running sentiment analysis on the current
6
- `),L=d("a"),he=p("New York Times"),Y=p(`
7
- homepage headlines RSS. It also provides a sorting button to toggle between `),K=p(W),X=p(` first\u{1F61B} . It's built with a
8
- `),B=d("a"),ue=p("custom SvelveKit front-end"),x=p(`
9
- , served by a
10
- `),D=d("a"),Z=p("Flask application"),pe=p(`
11
- and using
12
- `),H=d("a"),T=p("transformers pipeline for the sentiment analysis."),k=E(),v=d("details"),G=d("summary"),ee=p("Notes"),de=E(),te=d("h4"),R=p("Install Node with NVM"),me=E(),N=d("p"),ve=p("This "),ae=d("a"),xe=p("Node script"),Oe=p(`
13
-
14
- install node LTS and create symbolic links to `),be=d("code"),Ve=p("/home/user/.local/bin/"),Fe=p(` as it seems like
15
- we don't have permission to update `),we=d("code"),ze=p("$PATH"),Ke=p(" env"),Re=E(),ke=d("h4"),Ue=p("main.py"),qe=E(),M=d("p"),We=p(`Because the Spaces run a python application, see
16
- `),le=d("a"),ye=d("code"),Ge=p("app_file"),Je=p(`
17
- on docs. `),Ee=d("b"),$e=p("main.py"),Qe=p(` is just a simple python subprocess to run
18
- `),Se=d("code"),Xe=p("make build-all"),Ze=p(`
19
- See
20
- `),se=d("a"),Ae=d("code"),et=p("Makefile"),tt=E(),Ne=d("h4"),at=p("SvelteKit Node Adapter?"),lt=E(),U=d("p"),st=p(`SvelteKit eventually can be used as our primary web application with
21
- `),re=d("a"),Te=d("code"),rt=p("@sveltejs/adapter-node"),nt=p(` adaptor and Flask the API application with your ML project. However, there is an unsolved
22
- issue to enable
23
- `),fe=d("a"),ot=p("dynamic basepath"),it=p(", which blocks the possibility to embedded deployment or using a relative path."),ct=E(),ne=d("p"),ht=p("You can try other news feeds "),O=d("select");for(let y=0;y<V.length;y+=1)V[y].c();ut=p(`; however the NYTimes feed comes with more information than the other feeds, such as
24
- the thumbnail image, author, and more.`),dt=E(),Ie=d("div"),ft=E(),oe=d("button"),Le=p(je),pt=E(),I.block.c(),this.h()},l(y){t=f(y,"ARTICLE",{class:!0});var g=u(t);a=f(g,"H1",{class:!0});var F=u(a);c=m(F,"The New York Times Sentiment Analysis"),F.forEach(i),s=S(g),h=f(g,"H5",{class:!0});var Me=u(h);r=f(Me,"B",{});var wt=u(r);o=m(wt,"Last Updated:"),wt.forEach(i),_=S(Me),C=m(Me,A),Me.forEach(i),w=S(g),b=f(g,"P",{class:!0});var z=u(b);q=m(z,`This project is an experiment running sentiment analysis on the current
25
- `),L=f(z,"A",{class:!0,target:!0,href:!0});var kt=u(L);he=m(kt,"New York Times"),kt.forEach(i),Y=m(z,`
26
- homepage headlines RSS. It also provides a sorting button to toggle between `),K=m(z,W),X=m(z,` first\u{1F61B} . It's built with a
27
- `),B=f(z,"A",{class:!0,target:!0,href:!0});var yt=u(B);ue=m(yt,"custom SvelveKit front-end"),yt.forEach(i),x=m(z,`
28
- , served by a
29
- `),D=f(z,"A",{class:!0,target:!0,href:!0});var Et=u(D);Z=m(Et,"Flask application"),Et.forEach(i),pe=m(z,`
30
- and using
31
- `),H=f(z,"A",{class:!0,target:!0,href:!0});var St=u(H);T=m(St,"transformers pipeline for the sentiment analysis."),St.forEach(i),z.forEach(i),k=S(g),v=f(g,"DETAILS",{});var P=u(v);G=f(P,"SUMMARY",{class:!0});var At=u(G);ee=m(At,"Notes"),At.forEach(i),de=S(P),te=f(P,"H4",{});var Nt=u(te);R=m(Nt,"Install Node with NVM"),Nt.forEach(i),me=S(P),N=f(P,"P",{class:!0});var ie=u(N);ve=m(ie,"This "),ae=f(ie,"A",{class:!0,target:!0,href:!0});var Tt=u(ae);xe=m(Tt,"Node script"),Tt.forEach(i),Oe=m(ie,`
32
-
33
- install node LTS and create symbolic links to `),be=f(ie,"CODE",{});var It=u(be);Ve=m(It,"/home/user/.local/bin/"),It.forEach(i),Fe=m(ie,` as it seems like
34
- we don't have permission to update `),we=f(ie,"CODE",{});var jt=u(we);ze=m(jt,"$PATH"),jt.forEach(i),Ke=m(ie," env"),ie.forEach(i),Re=S(P),ke=f(P,"H4",{});var Pt=u(ke);Ue=m(Pt,"main.py"),Pt.forEach(i),qe=S(P),M=f(P,"P",{class:!0});var $=u(M);We=m($,`Because the Spaces run a python application, see
35
- `),le=f($,"A",{class:!0,target:!0,href:!0});var Lt=u(le);ye=f(Lt,"CODE",{});var Bt=u(ye);Ge=m(Bt,"app_file"),Bt.forEach(i),Lt.forEach(i),Je=m($,`
36
- on docs. `),Ee=f($,"B",{});var Dt=u(Ee);$e=m(Dt,"main.py"),Dt.forEach(i),Qe=m($,` is just a simple python subprocess to run
37
- `),Se=f($,"CODE",{});var Ht=u(Se);Xe=m(Ht,"make build-all"),Ht.forEach(i),Ze=m($,`
38
- See
39
- `),se=f($,"A",{class:!0,target:!0,href:!0});var Mt=u(se);Ae=f(Mt,"CODE",{});var Yt=u(Ae);et=m(Yt,"Makefile"),Yt.forEach(i),Mt.forEach(i),$.forEach(i),tt=S(P),Ne=f(P,"H4",{});var Ct=u(Ne);at=m(Ct,"SvelteKit Node Adapter?"),Ct.forEach(i),lt=S(P),U=f(P,"P",{class:!0});var _e=u(U);st=m(_e,`SvelteKit eventually can be used as our primary web application with
40
- `),re=f(_e,"A",{class:!0,target:!0,href:!0});var xt=u(re);Te=f(xt,"CODE",{});var Ot=u(Te);rt=m(Ot,"@sveltejs/adapter-node"),Ot.forEach(i),xt.forEach(i),nt=m(_e,` adaptor and Flask the API application with your ML project. However, there is an unsolved
41
- issue to enable
42
- `),fe=f(_e,"A",{href:!0,class:!0});var Vt=u(fe);ot=m(Vt,"dynamic basepath"),Vt.forEach(i),it=m(_e,", which blocks the possibility to embedded deployment or using a relative path."),_e.forEach(i),P.forEach(i),ct=S(g),ne=f(g,"P",{class:!0});var Ye=u(ne);ht=m(Ye,"You can try other news feeds "),O=f(Ye,"SELECT",{class:!0});var Ft=u(O);for(let _t=0;_t<V.length;_t+=1)V[_t].l(Ft);Ft.forEach(i),ut=m(Ye,`; however the NYTimes feed comes with more information than the other feeds, such as
43
- the thumbnail image, author, and more.`),Ye.forEach(i),dt=S(g),Ie=f(g,"DIV",{class:!0}),u(Ie).forEach(i),ft=S(g),oe=f(g,"BUTTON",{class:!0});var zt=u(oe);Le=m(zt,je),zt.forEach(i),pt=S(g),I.block.l(g),g.forEach(i),this.h()},h(){l(a,"class","font-serif mb-0"),l(h,"class",j="mt-0 "+(n[2]?"visibile":"invisible")),l(L,"class","text-blue-500 underline hover:no-underline"),l(L,"target","_blank"),l(L,"href","https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"),l(B,"class","text-blue-500 underline hover:no-underline"),l(B,"target","_blank"),l(B,"href","https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/tree/main/client"),l(D,"class","text-blue-500 underline hover:no-underline"),l(D,"target","_blank"),l(D,"href","https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/blob/main/app.py"),l(H,"class","text-blue-500 underline hover:no-underline"),l(H,"target","_blank"),l(H,"href","https://huggingface.co/siebert/sentiment-roberta-large-english"),l(b,"class","py-3 max-w-prose leading-normal"),l(G,"class","cursor-pointer"),l(ae,"class","text-blue-500 underline hover:no-underline"),l(ae,"target","_blank"),l(ae,"href","https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/blob/main/install-node.sh"),l(N,"class","max-w-prose leading-normal"),l(le,"class","text-blue-500 underline hover:no-underline"),l(le,"target","_blank"),l(le,"href","https://huggingface.co/docs/hub/spaces#:~:text=0.88.0%2C%200.89.0%2C%201.0.0.-,app_file,-%3A%20string%0APath%20to"),l(se,"class","text-blue-500 underline hover:no-underline"),l(se,"target","_blank"),l(se,"href","https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/blob/main/Makefile"),l(M,"class","max-w-prose leading-normal"),l(re,"class","text-blue-500 underline hover:no-underline"),l(re,"target","_blank"),l(re,"href","https://github.com/sveltejs/kit/tree/master/packages/adapter-node"),l(fe,"href","https://github.com/sveltejs/kit/issues/595"),l(fe,"class","text-blue-500 underline hover:no-underline"),l(U,"class","max-w-prose leading-normal"),l(O,"class","inline-block text-xs bg-gray-200 border border-gray-200 text-gray-700 px-0 py-0 rounded leading-tight focus:outline-none focus:bg-white focus:border-gray-500"),n[0]===void 0&&aa(()=>n[7].call(O)),l(ne,"class","max-w-prose leading-normal"),l(Ie,"class","py-4"),l(oe,"class",Be=(n[3]?"bg-emerald-600":"bg-red-600")+" hover:bg-zinc-300 text-white font-bold py-2 px-4 rounded"),l(t,"class","prose px-6 py-3 max-w-4xl mx-auto")},m(y,g){Q(y,t,g),e(t,a),e(a,c),e(t,s),e(t,h),e(h,r),e(r,o),e(h,_),e(h,C),e(t,w),e(t,b),e(b,q),e(b,L),e(L,he),e(b,Y),e(b,K),e(b,X),e(b,B),e(B,ue),e(b,x),e(b,D),e(D,Z),e(b,pe),e(b,H),e(H,T),e(t,k),e(t,v),e(v,G),e(G,ee),e(v,de),e(v,te),e(te,R),e(v,me),e(v,N),e(N,ve),e(N,ae),e(ae,xe),e(N,Oe),e(N,be),e(be,Ve),e(N,Fe),e(N,we),e(we,ze),e(N,Ke),e(v,Re),e(v,ke),e(ke,Ue),e(v,qe),e(v,M),e(M,We),e(M,le),e(le,ye),e(ye,Ge),e(M,Je),e(M,Ee),e(Ee,$e),e(M,Qe),e(M,Se),e(Se,Xe),e(M,Ze),e(M,se),e(se,Ae),e(Ae,et),e(v,tt),e(v,Ne),e(Ne,at),e(v,lt),e(v,U),e(U,st),e(U,re),e(re,Te),e(Te,rt),e(U,nt),e(U,fe),e(fe,ot),e(U,it),e(t,ct),e(t,ne),e(ne,ht),e(ne,O);for(let F=0;F<V.length;F+=1)V[F].m(O,null);Ut(O,n[0]),e(ne,ut),e(t,dt),e(t,Ie),e(t,ft),e(t,oe),e(oe,Le),e(t,pt),I.block.m(t,I.anchor=null),I.mount=()=>t,I.anchor=null,J=!0,mt||(vt=[qt(O,"change",n[7]),qt(oe,"click",n[6])],mt=!0)},p(y,[g]){n=y,(!J||g&4)&&A!==(A=(n[2]?n[2].toLocaleString():"")+"")&&ge(C,A),(!J||g&4&&j!==(j="mt-0 "+(n[2]?"visibile":"invisible")))&&l(h,"class",j),(!J||g&8)&&W!==(W=n[3]?"good and bad news":"bad and good news")&&ge(K,W),g&16&&(He=n[4],V=la(V,g,bt,1,n,He,gt,O,na,Qt,null,$t)),g&17&&Ut(O,n[0]),(!J||g&8)&&je!==(je=n[3]?"Sorted by positive scores":"Sorted by negative scores")&&ge(Le,je),(!J||g&8&&Be!==(Be=(n[3]?"bg-emerald-600":"bg-red-600")+" hover:bg-zinc-300 text-white font-bold py-2 px-4 rounded"))&&l(oe,"class",Be),I.ctx=n,g&1&&De!==(De=n[5](n[0]))&&Rt(De,I)||sa(I,n,g)},i(y){J||(Pe(I.block),J=!0)},o(y){for(let g=0;g<3;g+=1){const F=I.blocks[g];Ce(F)}J=!1},d(y){y&&i(t);for(let g=0;g<V.length;g+=1)V[g].d();I.block.d(),I.token=null,I=null,mt=!1,ra(vt)}}}function Sa(n,t,a){let c=[{label:"NYTimes",value:"https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"},{label:"SF Gate Bay Area",value:"https://www.sfgate.com/bayarea/feed/Bay-Area-News-429.php"},{label:"BBC News",value:"https://feeds.bbci.co.uk/news/rss.xml"},{label:"Buzz Feed World",value:"https://www.buzzfeed.com/world.xml"},{label:"Al Jazeera",value:"https://aljazeera.com/xml/rss/all.xml"},{label:"Hacker News Front Page",value:"https://hnrss.org/frontpage"},{label:"Reddit World News",value:"https://www.reddit.com/r/worldnews/.rss"}],s=c[0].value,h,r,o=!0;async function _(j){console.log(j);try{a(1,h=await fetch(`news?feed_url=${j}`).then(w=>w.json()))}catch{a(1,h=await fetch("static/test.json").then(b=>b.json()))}a(2,r=new Date(h.last_update)),a(1,h=h.entries.sort((w,b)=>b.sentiment-w.sentiment)),a(3,o=!0),console.log(r,h)}function A(){a(3,o=!o),a(1,h=h.slice().sort((j,w)=>o?w.sentiment-j.sentiment:j.sentiment-w.sentiment))}function C(){s=oa(this),a(0,s),a(4,c)}return[s,h,r,o,c,_,A,C]}class Na extends Zt{constructor(t){super();ea(this,t,Sa,Ea,ta,{})}}export{Na as default};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static/_app/start-ad0dbeae.js DELETED
@@ -1 +0,0 @@
1
- var fe=Object.defineProperty,ue=Object.defineProperties;var he=Object.getOwnPropertyDescriptors;var B=Object.getOwnPropertySymbols;var Q=Object.prototype.hasOwnProperty,Z=Object.prototype.propertyIsEnumerable;var H=(o,e,t)=>e in o?fe(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,y=(o,e)=>{for(var t in e||(e={}))Q.call(e,t)&&H(o,t,e[t]);if(B)for(var t of B(e))Z.call(e,t)&&H(o,t,e[t]);return o},K=(o,e)=>ue(o,he(e));var ee=(o,e)=>{var t={};for(var r in o)Q.call(o,r)&&e.indexOf(r)<0&&(t[r]=o[r]);if(o!=null&&B)for(var r of B(o))e.indexOf(r)<0&&Z.call(o,r)&&(t[r]=o[r]);return t};import{S as de,i as _e,s as pe,e as ge,c as me,a as we,d as $,b as z,f as N,g as S,t as be,h as ve,j as ye,k as ke,l as w,m as $e,n as P,o as b,p as x,q as v,r as Ee,u as Re,v as Y,w as L,x as j,y as U,z as V,A as I,B as A,C as D,D as J,E as te}from"./chunks/vendor-528a52ee.js";function Se(o){let e,t,r;const l=[o[1]||{}];var i=o[0][0];function a(s){let n={};for(let c=0;c<l.length;c+=1)n=D(n,l[c]);return{props:n}}return i&&(e=new i(a())),{c(){e&&L(e.$$.fragment),t=w()},l(s){e&&j(e.$$.fragment,s),t=w()},m(s,n){e&&U(e,s,n),S(s,t,n),r=!0},p(s,n){const c=n&2?V(l,[I(s[1]||{})]):{};if(i!==(i=s[0][0])){if(e){P();const f=e;b(f.$$.fragment,1,0,()=>{A(f,1)}),x()}i?(e=new i(a()),L(e.$$.fragment),v(e.$$.fragment,1),U(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&v(e.$$.fragment,s),r=!0)},o(s){e&&b(e.$$.fragment,s),r=!1},d(s){s&&$(t),e&&A(e,s)}}}function Le(o){let e,t,r;const l=[o[1]||{}];var i=o[0][0];function a(s){let n={$$slots:{default:[Te]},$$scope:{ctx:s}};for(let c=0;c<l.length;c+=1)n=D(n,l[c]);return{props:n}}return i&&(e=new i(a(o))),{c(){e&&L(e.$$.fragment),t=w()},l(s){e&&j(e.$$.fragment,s),t=w()},m(s,n){e&&U(e,s,n),S(s,t,n),r=!0},p(s,n){const c=n&2?V(l,[I(s[1]||{})]):{};if(n&525&&(c.$$scope={dirty:n,ctx:s}),i!==(i=s[0][0])){if(e){P();const f=e;b(f.$$.fragment,1,0,()=>{A(f,1)}),x()}i?(e=new i(a(s)),L(e.$$.fragment),v(e.$$.fragment,1),U(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&v(e.$$.fragment,s),r=!0)},o(s){e&&b(e.$$.fragment,s),r=!1},d(s){s&&$(t),e&&A(e,s)}}}function Ue(o){let e,t,r;const l=[o[2]||{}];var i=o[0][1];function a(s){let n={};for(let c=0;c<l.length;c+=1)n=D(n,l[c]);return{props:n}}return i&&(e=new i(a())),{c(){e&&L(e.$$.fragment),t=w()},l(s){e&&j(e.$$.fragment,s),t=w()},m(s,n){e&&U(e,s,n),S(s,t,n),r=!0},p(s,n){const c=n&4?V(l,[I(s[2]||{})]):{};if(i!==(i=s[0][1])){if(e){P();const f=e;b(f.$$.fragment,1,0,()=>{A(f,1)}),x()}i?(e=new i(a()),L(e.$$.fragment),v(e.$$.fragment,1),U(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&v(e.$$.fragment,s),r=!0)},o(s){e&&b(e.$$.fragment,s),r=!1},d(s){s&&$(t),e&&A(e,s)}}}function Ae(o){let e,t,r;const l=[o[2]||{}];var i=o[0][1];function a(s){let n={$$slots:{default:[Ne]},$$scope:{ctx:s}};for(let c=0;c<l.length;c+=1)n=D(n,l[c]);return{props:n}}return i&&(e=new i(a(o))),{c(){e&&L(e.$$.fragment),t=w()},l(s){e&&j(e.$$.fragment,s),t=w()},m(s,n){e&&U(e,s,n),S(s,t,n),r=!0},p(s,n){const c=n&4?V(l,[I(s[2]||{})]):{};if(n&521&&(c.$$scope={dirty:n,ctx:s}),i!==(i=s[0][1])){if(e){P();const f=e;b(f.$$.fragment,1,0,()=>{A(f,1)}),x()}i?(e=new i(a(s)),L(e.$$.fragment),v(e.$$.fragment,1),U(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&v(e.$$.fragment,s),r=!0)},o(s){e&&b(e.$$.fragment,s),r=!1},d(s){s&&$(t),e&&A(e,s)}}}function Ne(o){let e,t,r;const l=[o[3]||{}];var i=o[0][2];function a(s){let n={};for(let c=0;c<l.length;c+=1)n=D(n,l[c]);return{props:n}}return i&&(e=new i(a())),{c(){e&&L(e.$$.fragment),t=w()},l(s){e&&j(e.$$.fragment,s),t=w()},m(s,n){e&&U(e,s,n),S(s,t,n),r=!0},p(s,n){const c=n&8?V(l,[I(s[3]||{})]):{};if(i!==(i=s[0][2])){if(e){P();const f=e;b(f.$$.fragment,1,0,()=>{A(f,1)}),x()}i?(e=new i(a()),L(e.$$.fragment),v(e.$$.fragment,1),U(e,t.parentNode,t)):e=null}else i&&e.$set(c)},i(s){r||(e&&v(e.$$.fragment,s),r=!0)},o(s){e&&b(e.$$.fragment,s),r=!1},d(s){s&&$(t),e&&A(e,s)}}}function Te(o){let e,t,r,l;const i=[Ae,Ue],a=[];function s(n,c){return n[0][2]?0:1}return e=s(o),t=a[e]=i[e](o),{c(){t.c(),r=w()},l(n){t.l(n),r=w()},m(n,c){a[e].m(n,c),S(n,r,c),l=!0},p(n,c){let f=e;e=s(n),e===f?a[e].p(n,c):(P(),b(a[f],1,1,()=>{a[f]=null}),x(),t=a[e],t?t.p(n,c):(t=a[e]=i[e](n),t.c()),v(t,1),t.m(r.parentNode,r))},i(n){l||(v(t),l=!0)},o(n){b(t),l=!1},d(n){a[e].d(n),n&&$(r)}}}function se(o){let e,t=o[5]&&re(o);return{c(){e=ge("div"),t&&t.c(),this.h()},l(r){e=me(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var l=we(e);t&&t.l(l),l.forEach($),this.h()},h(){z(e,"id","svelte-announcer"),z(e,"aria-live","assertive"),z(e,"aria-atomic","true"),N(e,"position","absolute"),N(e,"left","0"),N(e,"top","0"),N(e,"clip","rect(0 0 0 0)"),N(e,"clip-path","inset(50%)"),N(e,"overflow","hidden"),N(e,"white-space","nowrap"),N(e,"width","1px"),N(e,"height","1px")},m(r,l){S(r,e,l),t&&t.m(e,null)},p(r,l){r[5]?t?t.p(r,l):(t=re(r),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(r){r&&$(e),t&&t.d()}}}function re(o){let e;return{c(){e=be(o[6])},l(t){e=ve(t,o[6])},m(t,r){S(t,e,r)},p(t,r){r&64&&ye(e,t[6])},d(t){t&&$(e)}}}function Oe(o){let e,t,r,l,i;const a=[Le,Se],s=[];function n(f,h){return f[0][1]?0:1}e=n(o),t=s[e]=a[e](o);let c=o[4]&&se(o);return{c(){t.c(),r=ke(),c&&c.c(),l=w()},l(f){t.l(f),r=$e(f),c&&c.l(f),l=w()},m(f,h){s[e].m(f,h),S(f,r,h),c&&c.m(f,h),S(f,l,h),i=!0},p(f,[h]){let u=e;e=n(f),e===u?s[e].p(f,h):(P(),b(s[u],1,1,()=>{s[u]=null}),x(),t=s[e],t?t.p(f,h):(t=s[e]=a[e](f),t.c()),v(t,1),t.m(r.parentNode,r)),f[4]?c?c.p(f,h):(c=se(f),c.c(),c.m(l.parentNode,l)):c&&(c.d(1),c=null)},i(f){i||(v(t),i=!0)},o(f){b(t),i=!1},d(f){s[e].d(f),f&&$(r),c&&c.d(f),f&&$(l)}}}function Pe(o,e,t){let{stores:r}=e,{page:l}=e,{components:i}=e,{props_0:a=null}=e,{props_1:s=null}=e,{props_2:n=null}=e;Ee("__svelte__",r),Re(r.page.notify);let c=!1,f=!1,h=null;return Y(()=>{const u=r.page.subscribe(()=>{c&&(t(5,f=!0),t(6,h=document.title||"untitled page"))});return t(4,c=!0),u}),o.$$set=u=>{"stores"in u&&t(7,r=u.stores),"page"in u&&t(8,l=u.page),"components"in u&&t(0,i=u.components),"props_0"in u&&t(1,a=u.props_0),"props_1"in u&&t(2,s=u.props_1),"props_2"in u&&t(3,n=u.props_2)},o.$$.update=()=>{o.$$.dirty&384&&r.page.set(l)},[i,a,s,n,c,f,h,r,l]}class xe extends de{constructor(e){super();_e(this,e,Pe,Oe,pe,{stores:7,page:8,components:0,props_0:1,props_1:2,props_2:3})}}const Ce="modulepreload",ie={},je="/static/_app/",G=function(e,t){return!t||t.length===0?e():Promise.all(t.map(r=>{if(r=`${je}${r}`,r in ie)return;ie[r]=!0;const l=r.endsWith(".css"),i=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${i}`))return;const a=document.createElement("link");if(a.rel=l?"stylesheet":Ce,l||(a.as="script",a.crossOrigin=""),a.href=r,document.head.appendChild(a),l)return new Promise((s,n)=>{a.addEventListener("load",s),a.addEventListener("error",n)})})).then(()=>e())},C=[()=>G(()=>import("./pages/__layout.svelte-483b60b6.js"),["pages/__layout.svelte-483b60b6.js","assets/pages/__layout.svelte-298a4fd5.css","chunks/vendor-528a52ee.js"]),()=>G(()=>import("./error.svelte-41f1b9b8.js"),["error.svelte-41f1b9b8.js","chunks/vendor-528a52ee.js"]),()=>G(()=>import("./pages/index.svelte-a06f0dfd.js"),["pages/index.svelte-a06f0dfd.js","chunks/vendor-528a52ee.js"])],Ve=[[/^\/$/,[C[0],C[2]],[C[1]]]],Ie=[C[0](),C[1]()];function De(o){let e=o.baseURI;if(!e){const t=o.getElementsByTagName("base");e=t.length?t[0].href:o.URL}return e}let F="";function qe(o){F=o.base,o.assets}function M(){return{x:pageXOffset,y:pageYOffset}}function ne(o){return o.composedPath().find(t=>t instanceof Node&&t.nodeName.toUpperCase()==="A")}function ae(o){return o instanceof SVGAElement?new URL(o.href.baseVal,document.baseURI):new URL(o.href)}class We{constructor({base:e,routes:t,trailing_slash:r,renderer:l}){var i,a;this.base=e,this.routes=t,this.trailing_slash=r,this.navigating=0,this.renderer=l,l.router=this,this.enabled=!0,document.body.setAttribute("tabindex","-1"),this.current_history_index=(a=(i=history.state)==null?void 0:i["sveltekit:index"])!=null?a:0,this.current_history_index===0&&history.replaceState(K(y({},history.state),{"sveltekit:index":0}),"",location.href),this.callbacks={before_navigate:[],after_navigate:[]}}init_listeners(){"scrollRestoration"in history&&(history.scrollRestoration="manual"),addEventListener("beforeunload",i=>{let a=!1;const s={from:this.renderer.current.url,to:null,cancel:()=>a=!0};this.callbacks.before_navigate.forEach(n=>n(s)),a?(i.preventDefault(),i.returnValue=""):history.scrollRestoration="auto"}),addEventListener("load",()=>{history.scrollRestoration="manual"});let e;addEventListener("scroll",()=>{clearTimeout(e),e=setTimeout(()=>{const i=K(y({},history.state||{}),{"sveltekit:scroll":M()});history.replaceState(i,document.title,window.location.href)},200)});const t=i=>{const a=ne(i);a&&a.href&&a.hasAttribute("sveltekit:prefetch")&&this.prefetch(ae(a))};let r;const l=i=>{clearTimeout(r),r=setTimeout(()=>{var a;(a=i.target)==null||a.dispatchEvent(new CustomEvent("sveltekit:trigger_prefetch",{bubbles:!0}))},20)};addEventListener("touchstart",t),addEventListener("mousemove",l),addEventListener("sveltekit:trigger_prefetch",t),addEventListener("click",i=>{if(!this.enabled||i.button||i.which!==1||i.metaKey||i.ctrlKey||i.shiftKey||i.altKey||i.defaultPrevented)return;const a=ne(i);if(!a||!a.href)return;const s=ae(a);if(s.toString()===location.href){location.hash||i.preventDefault();return}const c=(a.getAttribute("rel")||"").split(/\s+/);if(a.hasAttribute("download")||c&&c.includes("external")||(a instanceof SVGAElement?a.target.baseVal:a.target))return;const[f,h]=s.href.split("#");if(h!==void 0&&f===location.href.split("#")[0]){setTimeout(()=>history.pushState({},"",s.href));const u=this.parse(s);return u?this.renderer.update(u,[],!1):void 0}this._navigate({url:s,scroll:a.hasAttribute("sveltekit:noscroll")?M():null,keepfocus:!1,chain:[],details:{state:{},replaceState:!1},accepted:()=>i.preventDefault(),blocked:()=>i.preventDefault()})}),addEventListener("popstate",i=>{if(i.state&&this.enabled){if(i.state["sveltekit:index"]===this.current_history_index)return;this._navigate({url:new URL(location.href),scroll:i.state["sveltekit:scroll"],keepfocus:!1,chain:[],details:null,accepted:()=>{this.current_history_index=i.state["sveltekit:index"]},blocked:()=>{const a=this.current_history_index-i.state["sveltekit:index"];history.go(a)}})}})}owns(e){return e.origin===location.origin&&e.pathname.startsWith(this.base)}parse(e){if(this.owns(e)){const t=decodeURI(e.pathname.slice(this.base.length)||"/");return{id:e.pathname+e.search,routes:this.routes.filter(([r])=>r.test(t)),url:e,path:t}}}async goto(e,{noscroll:t=!1,replaceState:r=!1,keepfocus:l=!1,state:i={}}={},a){const s=new URL(e,De(document));return this.enabled?this._navigate({url:s,scroll:t?M():null,keepfocus:l,chain:a,details:{state:i,replaceState:r},accepted:()=>{},blocked:()=>{}}):(location.href=s.href,new Promise(()=>{}))}enable(){this.enabled=!0}disable(){this.enabled=!1}async prefetch(e){const t=this.parse(e);if(!t)throw new Error("Attempted to prefetch a URL that does not belong to this app");return this.renderer.load(t)}after_navigate(e){Y(()=>(this.callbacks.after_navigate.push(e),()=>{const t=this.callbacks.after_navigate.indexOf(e);this.callbacks.after_navigate.splice(t,1)}))}before_navigate(e){Y(()=>(this.callbacks.before_navigate.push(e),()=>{const t=this.callbacks.before_navigate.indexOf(e);this.callbacks.before_navigate.splice(t,1)}))}async _navigate({url:e,scroll:t,keepfocus:r,chain:l,details:i,accepted:a,blocked:s}){const n=this.renderer.current.url;let c=!1;const f={from:n,to:e,cancel:()=>c=!0};if(this.callbacks.before_navigate.forEach(d=>d(f)),c){s();return}const h=this.parse(e);if(!h)return location.href=e.href,new Promise(()=>{});a(),this.navigating||dispatchEvent(new CustomEvent("sveltekit:navigation-start")),this.navigating++;let{pathname:u}=e;if(this.trailing_slash==="never"?u!=="/"&&u.endsWith("/")&&(u=u.slice(0,-1)):this.trailing_slash==="always"&&!e.pathname.split("/").pop().includes(".")&&!u.endsWith("/")&&(u+="/"),h.url=new URL(e.origin+u+e.search+e.hash),i){const d=i.replaceState?0:1;i.state["sveltekit:index"]=this.current_history_index+=d,history[i.replaceState?"replaceState":"pushState"](i.state,"",h.url)}if(await this.renderer.handle_navigation(h,l,!1,{scroll:t,keepfocus:r}),this.navigating--,!this.navigating){dispatchEvent(new CustomEvent("sveltekit:navigation-end"));const d={from:n,to:e};this.callbacks.after_navigate.forEach(_=>_(d))}}}function oe(o){return o instanceof Error||o&&o.name&&o.message?o:new Error(JSON.stringify(o))}function Be(o){let e=5381,t=o.length;if(typeof o=="string")for(;t;)e=e*33^o.charCodeAt(--t);else for(;t;)e=e*33^o[--t];return(e>>>0).toString(36)}function le(o){const e=o.status&&o.status>=400&&o.status<=599&&!o.redirect;if(o.error||e){const t=o.status;if(!o.error&&e)return{status:t||500,error:new Error};const r=typeof o.error=="string"?new Error(o.error):o.error;return r instanceof Error?!t||t<400||t>599?(console.warn('"error" returned from load() without a valid status code \u2014 defaulting to 500'),{status:500,error:r}):{status:t,error:r}:{status:500,error:new Error(`"error" property returned from load() must be a string or instance of Error, received type "${typeof r}"`)}}if(o.redirect){if(!o.status||Math.floor(o.status/100)!==3)return{status:500,error:new Error('"redirect" property returned from load() must be accompanied by a 3xx status code')};if(typeof o.redirect!="string")return{status:500,error:new Error('"redirect" property returned from load() must be a string')}}if(o.context)throw new Error('You are returning "context" from a load function. "context" was renamed to "stuff", please adjust your code accordingly.');return o}function ce(o){const e=J(o);let t=!0;function r(){t=!0,e.update(a=>a)}function l(a){t=!1,e.set(a)}function i(a){let s;return e.subscribe(n=>{(s===void 0||t&&n!==s)&&a(s=n)})}return{notify:r,set:l,subscribe:i}}function Je(){const{set:o,subscribe:e}=J(!1),t="1666722492919";let r;async function l(){clearTimeout(r);const a=await fetch(`${F}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(a.ok){const{version:s}=await a.json(),n=s!==t;return n&&(o(!0),clearTimeout(r)),n}else throw new Error(`Version check failed: ${a.status}`)}return{subscribe:e,check:l}}function Ke(o,e){const t=typeof o=="string"?o:o.url;let r=`script[data-type="svelte-data"][data-url=${JSON.stringify(t)}]`;e&&typeof e.body=="string"&&(r+=`[data-body="${Be(e.body)}"]`);const l=document.querySelector(r);if(l&&l.textContent){const i=JSON.parse(l.textContent),{body:a}=i,s=ee(i,["body"]);return Promise.resolve(new Response(a,s))}return fetch(o,e)}class ze{constructor({Root:e,fallback:t,target:r,session:l}){this.Root=e,this.fallback=t,this.router,this.target=r,this.started=!1,this.session_id=1,this.invalid=new Set,this.invalidating=null,this.autoscroll=!0,this.updating=!1,this.current={url:null,session_id:0,branch:[]},this.cache=new Map,this.loading={id:null,promise:null},this.stores={url:ce({}),page:ce({}),navigating:J(null),session:J(l),updated:Je()},this.$session=null,this.root=null;let i=!1;this.stores.session.subscribe(async a=>{if(this.$session=a,!i||!this.router)return;this.session_id+=1;const s=this.router.parse(new URL(location.href));s&&this.update(s,[],!0)}),i=!0}disable_scroll_handling(){(this.updating||!this.started)&&(this.autoscroll=!1)}async start({status:e,error:t,nodes:r,url:l,params:i}){const a=[];let s={},n,c;l.hash=window.location.hash;try{for(let f=0;f<r.length;f+=1){const h=f===r.length-1;let u;if(h){const _=document.querySelector('[data-type="svelte-props"]');_&&(u=JSON.parse(_.textContent))}const d=await this._load_node({module:await r[f],url:l,params:i,stuff:s,status:h?e:void 0,error:h?t:void 0,props:u});if(u&&d.uses.dependencies.add(l.href),a.push(d),d&&d.loaded)if(d.loaded.error){if(t)throw d.loaded.error;c={status:d.loaded.status,error:d.loaded.error,url:l}}else d.loaded.stuff&&(s=y(y({},s),d.loaded.stuff))}n=c?await this._load_error(c):await this._get_navigation_result_from_branch({url:l,params:i,stuff:s,branch:a,status:e,error:t})}catch(f){if(t)throw f;n=await this._load_error({status:500,error:oe(f),url:l})}if(n.redirect){location.href=new URL(n.redirect,location.href).href;return}this._init(n)}async handle_navigation(e,t,r,l){this.started&&this.stores.navigating.set({from:this.current.url,to:e.url}),await this.update(e,t,r,l)}async update(e,t,r,l){var n,c,f;const i=this.token={};let a=await this._get_navigation_result(e,r);if(i!==this.token)return;if(this.invalid.clear(),a.redirect)if(t.length>10||t.includes(e.url.pathname))a=await this._load_error({status:500,error:new Error("Redirect loop"),url:e.url});else{this.router?this.router.goto(new URL(a.redirect,e.url).href,{replaceState:!0},[...t,e.url.pathname]):location.href=new URL(a.redirect,location.href).href;return}else if(((c=(n=a.props)==null?void 0:n.page)==null?void 0:c.status)>=400&&await this.stores.updated.check()){location.href=e.url.href;return}if(this.updating=!0,this.started?(this.current=a.state,this.root.$set(a.props),this.stores.navigating.set(null)):this._init(a),l){const{scroll:h,keepfocus:u}=l;if(u||((f=getSelection())==null||f.removeAllRanges(),document.body.focus()),await te(),this.autoscroll){const d=e.url.hash&&document.getElementById(e.url.hash.slice(1));h?scrollTo(h.x,h.y):d?d.scrollIntoView():scrollTo(0,0)}}else await te();if(this.loading.promise=null,this.loading.id=null,this.autoscroll=!0,this.updating=!1,!this.router)return;const s=a.state.branch[a.state.branch.length-1];s&&s.module.router===!1?this.router.disable():this.router.enable()}load(e){return this.loading.promise=this._get_navigation_result(e,!1),this.loading.id=e.id,this.loading.promise}invalidate(e){return this.invalid.add(e),this.invalidating||(this.invalidating=Promise.resolve().then(async()=>{const t=this.router&&this.router.parse(new URL(location.href));t&&await this.update(t,[],!0),this.invalidating=null})),this.invalidating}_init(e){this.current=e.state;const t=document.querySelector("style[data-svelte]");if(t&&t.remove(),this.root=new this.Root({target:this.target,props:y({stores:this.stores},e.props),hydrate:!0}),this.started=!0,this.router){const r={from:null,to:new URL(location.href)};this.router.callbacks.after_navigate.forEach(l=>l(r))}}async _get_navigation_result(e,t){if(this.loading.id===e.id&&this.loading.promise)return this.loading.promise;for(let r=0;r<e.routes.length;r+=1){const l=e.routes[r];let i=r+1;for(;i<e.routes.length;){const s=e.routes[i];if(s[0].toString()===l[0].toString())s[1].forEach(n=>n()),i+=1;else break}const a=await this._load({route:l,info:e},t);if(a)return a}return await this._load_error({status:404,error:new Error(`Not found: ${e.url.pathname}`),url:e.url})}async _get_navigation_result_from_branch({url:e,params:t,stuff:r,branch:l,status:i,error:a}){const s=l.filter(Boolean),n=s.find(u=>u.loaded&&u.loaded.redirect),c={redirect:n&&n.loaded?n.loaded.redirect:void 0,state:{url:e,params:t,branch:l,session_id:this.session_id},props:{components:s.map(u=>u.module.default)}};for(let u=0;u<s.length;u+=1){const d=s[u].loaded;c.props[`props_${u}`]=d?await d.props:null}if(!this.current.url||e.href!==this.current.url.href){c.props.page={url:e,params:t,status:i,error:a,stuff:r};const u=(d,_)=>{Object.defineProperty(c.props.page,d,{get:()=>{throw new Error(`$page.${d} has been replaced by $page.url.${_}`)}})};u("origin","origin"),u("path","pathname"),u("query","searchParams")}const f=s[s.length-1],h=f.loaded&&f.loaded.maxage;if(h){const u=e.pathname+e.search;let d=!1;const _=()=>{this.cache.get(u)===c&&this.cache.delete(u),E(),clearTimeout(T)},T=setTimeout(_,h*1e3),E=this.stores.session.subscribe(()=>{d&&_()});d=!0,this.cache.set(u,c)}return c}async _load_node({status:e,error:t,module:r,url:l,params:i,stuff:a,props:s}){const n={module:r,uses:{params:new Set,url:!1,session:!1,stuff:!1,dependencies:new Set},loaded:null,stuff:a};s&&n.uses.dependencies.add(l.href);const c={};for(const h in i)Object.defineProperty(c,h,{get(){return n.uses.params.add(h),i[h]},enumerable:!0});const f=this.$session;if(r.load){const{started:h}=this,u={params:c,props:s||{},get url(){return n.uses.url=!0,l},get session(){return n.uses.session=!0,f},get stuff(){return n.uses.stuff=!0,y({},a)},fetch(_,T){const E=typeof _=="string"?_:_.url,{href:R}=new URL(E,l);return n.uses.dependencies.add(R),h?fetch(_,T):Ke(_,T)}};t&&(u.status=e,u.error=t);const d=await r.load.call(null,u);if(!d)throw new Error("load function must return a value");n.loaded=le(d),n.loaded.stuff&&(n.stuff=n.loaded.stuff)}else s&&(n.loaded=le({props:s}));return n}async _load({route:e,info:{url:t,path:r}},l){const i=t.pathname+t.search;if(!l){const p=this.cache.get(i);if(p)return p}const[a,s,n,c,f]=e,h=c?c(a.exec(r)):{},u=this.current.url&&{url:i!==this.current.url.pathname+this.current.url.search,params:Object.keys(h).filter(p=>this.current.params[p]!==h[p]),session:this.session_id!==this.current.session_id};let d=[],_={},T=!1,E=200,R;s.forEach(p=>p());e:for(let p=0;p<s.length;p+=1){let g;try{if(!s[p])continue;const m=await s[p](),k=this.current.branch[p];if(!k||m!==k.module||u.url&&k.uses.url||u.params.some(O=>k.uses.params.has(O))||u.session&&k.uses.session||Array.from(k.uses.dependencies).some(O=>this.invalid.has(O))||T&&k.uses.stuff){let O={};if(f&&p===s.length-1){const W=await fetch(`${t.pathname}${t.pathname.endsWith("/")?"":"/"}__data.json`,{headers:{"x-sveltekit-noredirect":"true"}});if(W.ok){const X=W.headers.get("x-sveltekit-location");if(X)return{redirect:X,props:{},state:this.current};O=await W.json()}else E=W.status,R=new Error("Failed to load data")}if(R||(g=await this._load_node({module:m,url:t,params:h,props:O,stuff:_})),g&&g.loaded){if(g.loaded.fallthrough)return;if(g.loaded.error&&(E=g.loaded.status,R=g.loaded.error),g.loaded.redirect)return{redirect:g.loaded.redirect,props:{},state:this.current};g.loaded.stuff&&(T=!0)}}else g=k}catch(m){E=500,R=oe(m)}if(R){for(;p--;)if(n[p]){let m,k,q=p;for(;!(k=d[q]);)q-=1;try{if(m=await this._load_node({status:E,error:R,module:await n[p](),url:t,params:h,stuff:k.stuff}),m&&m.loaded&&m.loaded.error)continue;m&&m.loaded&&m.loaded.stuff&&(_=y(y({},_),m.loaded.stuff)),d=d.slice(0,q+1).concat(m);break e}catch{continue}}return await this._load_error({status:E,error:R,url:t})}else g&&g.loaded&&g.loaded.stuff&&(_=y(y({},_),g.loaded.stuff)),d.push(g)}return await this._get_navigation_result_from_branch({url:t,params:h,stuff:_,branch:d,status:E,error:R})}async _load_error({status:e,error:t,url:r}){var c,f;const l={},i=await this._load_node({module:await this.fallback[0],url:r,params:l,stuff:{}}),a=await this._load_node({status:e,error:t,module:await this.fallback[1],url:r,params:l,stuff:i&&i.loaded&&i.loaded.stuff||{}}),s=[i,a],n=y(y({},(c=i==null?void 0:i.loaded)==null?void 0:c.stuff),(f=a==null?void 0:a.loaded)==null?void 0:f.stuff);return await this._get_navigation_result_from_branch({url:r,params:l,stuff:n,branch:s,status:e,error:t})}}async function Ye({paths:o,target:e,session:t,route:r,spa:l,trailing_slash:i,hydrate:a}){const s=new ze({Root:xe,fallback:Ie,target:e,session:t}),n=r?new We({base:o.base,routes:Ve,trailing_slash:i,renderer:s}):null;qe(o),a&&await s.start(a),n&&(l&&n.goto(location.href,{replaceState:!0},[]),n.init_listeners()),dispatchEvent(new CustomEvent("sveltekit:start"))}export{Ye as start};
 
 
static/_app/version.json DELETED
@@ -1 +0,0 @@
1
- {"version":"1666722492919"}
 
 
static/favicon.png DELETED
Binary file (1.57 kB)
 
static/index.html DELETED
@@ -1,91 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <base href="" />
5
- <meta charset="utf-8" />
6
- <meta name="description" content="" />
7
- <link rel="icon" href="/static/favicon.png" />
8
- <meta name="viewport" content="width=device-width, initial-scale=1" />
9
- <meta http-equiv="content-security-policy" content="">
10
- <link rel="stylesheet" href="/static/_app/assets/pages/__layout.svelte-298a4fd5.css">
11
- <link rel="modulepreload" href="/static/_app/start-ad0dbeae.js">
12
- <link rel="modulepreload" href="/static/_app/chunks/vendor-528a52ee.js">
13
- <link rel="modulepreload" href="/static/_app/pages/__layout.svelte-483b60b6.js">
14
- <link rel="modulepreload" href="/static/_app/pages/index.svelte-a06f0dfd.js">
15
- <script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.1/iframeResizer.contentWindow.min.js"></script>
16
- </head>
17
- <body>
18
- <div>
19
-
20
-
21
- <article class="prose px-6 py-3 max-w-4xl mx-auto"><h1 class="font-serif mb-0">The New York Times Sentiment Analysis</h1>
22
- <h5 class="mt-0 invisible"><b>Last Updated:</b>
23
- </h5>
24
-
25
- <p class="py-3 max-w-prose leading-normal">This project is an experiment running sentiment analysis on the current
26
- <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml">New York Times</a>
27
- homepage headlines RSS. It also provides a sorting button to toggle between good and bad news first😛 . It&#39;s built with a
28
- <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/tree/main/client">custom SvelveKit front-end
29
- </a>
30
- , served by a
31
- <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/blob/main/app.py">Flask application
32
- </a>
33
- and using
34
- <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://huggingface.co/siebert/sentiment-roberta-large-english">transformers pipeline for the sentiment analysis.
35
- </a></p>
36
- <details><summary class="cursor-pointer">Notes</summary>
37
- <h4>Install Node with NVM</h4>
38
- <p class="max-w-prose leading-normal">This <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/blob/main/install-node.sh">Node script</a>
39
-
40
- install node LTS and create symbolic links to <code>/home/user/.local/bin/</code> as it seems like
41
- we don&#39;t have permission to update <code>$PATH</code> env
42
- </p>
43
- <h4>main.py</h4>
44
- <p class="max-w-prose leading-normal">Because the Spaces run a python application, see
45
- <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://huggingface.co/docs/hub/spaces#:~:text=0.88.0%2C%200.89.0%2C%201.0.0.-,app_file,-%3A%20string%0APath%20to"><code>app_file </code></a>
46
- on docs. <b>main.py</b> is just a simple python subprocess to run
47
- <code>make build-all </code>
48
- See
49
- <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://huggingface.co/spaces/radames/NYTimes-homepage-rearranged/blob/main/Makefile"><code>Makefile</code></a></p>
50
- <h4>SvelteKit Node Adapter?</h4>
51
- <p class="max-w-prose leading-normal">SvelteKit eventually can be used as our primary web application with
52
- <a class="text-blue-500 underline hover:no-underline" target="_blank" href="https://github.com/sveltejs/kit/tree/master/packages/adapter-node"><code>@sveltejs/adapter-node</code></a> adaptor and Flask the API application with your ML project. However, there is an unsolved
53
- issue to enable
54
- <a href="https://github.com/sveltejs/kit/issues/595" class="text-blue-500 underline hover:no-underline">dynamic basepath</a>, which blocks the possibility to embedded deployment or using a relative path.
55
- </p></details>
56
-
57
- <p class="max-w-prose leading-normal">You can try other news feeds <select class="inline-block text-xs bg-gray-200 border border-gray-200 text-gray-700 px-0 py-0 rounded leading-tight focus:outline-none focus:bg-white focus:border-gray-500"><option value="https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml">NYTimes</option><option value="https://www.sfgate.com/bayarea/feed/Bay-Area-News-429.php">SF Gate Bay Area</option><option value="https://feeds.bbci.co.uk/news/rss.xml">BBC News</option><option value="https://www.buzzfeed.com/world.xml">Buzz Feed World</option><option value="https://aljazeera.com/xml/rss/all.xml">Al Jazeera</option><option value="https://hnrss.org/frontpage">Hacker News Front Page</option><option value="https://www.reddit.com/r/worldnews/.rss">Reddit World News</option></select>; however the NYTimes feed comes with more information than the other feeds, such as
58
- the thumbnail image, author, and more.
59
- </p>
60
- <div class="py-4"></div>
61
- <button class="bg-emerald-600 hover:bg-zinc-300 text-white font-bold py-2 px-4 rounded">Sorted by positive scores</button>
62
-
63
- <div class="py-4"><svg class="animate-spin inline-block" width="25" height="25" viewBox="0 0 100 100"><path d="M0,50 a1,1 0 0,0 100,0" fill="lightgrey"></path></svg>
64
- Loading feed and running sentiment analysis on headlines...
65
- </div>
66
- </article>
67
-
68
-
69
- <script type="module" data-hydrate="15446j3">
70
- import { start } from "/static/_app/start-ad0dbeae.js";
71
- start({
72
- target: document.querySelector('[data-hydrate="15446j3"]').parentNode,
73
- paths: {"base":"/static","assets":"/static"},
74
- session: {},
75
- route: true,
76
- spa: false,
77
- trailing_slash: "never",
78
- hydrate: {
79
- status: 200,
80
- error: null,
81
- nodes: [
82
- import("/static/_app/pages/__layout.svelte-483b60b6.js"),
83
- import("/static/_app/pages/index.svelte-a06f0dfd.js")
84
- ],
85
- url: new URL("http://sveltekit-prerender/static"),
86
- params: {}
87
- }
88
- });
89
- </script></div>
90
- </body>
91
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static/test.json DELETED
The diff for this file is too large to render. See raw diff